본문 바로가기

Programming

(18)
TypeScript 4.5의 변경 사항 요약 지난주, TypreScript 4.5가 출시되었습니다. 아래의 글에서는 TypeScript 4.5에 추가된 기능이나 변경사항들을 요약하여 소개합니다. 이 요약사항의 원본 글은 Announcing TypeScript 4.5 입니다. Awaited 유형을 통한 Promise 개선 Promise들을 재귀적으로 언래핑하여 'Promise' 와 같은 타입을 'number'로 바꿔주는 Awaited가 추가 됩니다. 이번 업데이트를 통해 Promise.all과 같은 함수를 사용할 때, 타입이 잘못 추론되는 오류를 해결 할 수 있습니다. 개인적으로 이번 업데이트 중 가장 크게 느껴질 업데이트라 생각합니다. 추가적이 기능들은 깃허브 PR을 참조하세요. 사용하지 않는 import 제거를 끄는 플래그 추가 eval을 사용하..
[리팩토링] 코드 숨기기, 가독성 좋은 코드 짜기 변수 추출(Extract Variable) 어떤 코드가 조금 보기 복잡해 졌다고 가정했을 때, 먼저 시도 해볼만한 것은 코드를 쪼개 변수로 나누는 것이다. 예를 들어 아래와 같이 부모와 자식의 값을 더하는 함수가 있다고 가정한다. 읽기 매우 난해할 것이다. 물론 함수명을 잘 지어도 좋지만, 여기서는 논외로 둔다. 각 값들을 변수로 쪼개면 아래와 같은 코드가 된다. 조금 더 알아보기 쉬운 코드가 됐다. 긴 코드들이 있었지만, 이 함수에서의 핵심 로직은 부모 값과 자식 값을 더한다는 것을 알 수 있게 됐다. 코드의 추상화 제멋대로 붙인말이지만, 뭔가 좀 있어보이게 말하자면, '코드의 추상화'라고도 할 수 있을 것 같다. 실제 데이터의 흐름은 app.store.data.parent.value + app.sto..
API는 인터페이스다 - 프론트 개발과 API API는 인터페이스다. 왜냐하면 API는 Application Programming Interface이기 때문이다. API는 인터페이스입니다. 그것이 Interface이니깐. API가 인터페이스라는 것은 중요하다. 이 글은 프론트 개발에서 이러한 점을 활용하여 작업 대기 시간을 줄이는 것에 이야기 할 것이다. API라는 단어를 여러 의미로 사용하게 될 것 같다. 백엔드와 관련지어 API라는 단어가 나오는 것은, 주로 백엔드 구현체를 말하는 것이고, 그 외에는 대부분 API 명세를 말한다. 일반적으로 프론트 개발 과정에서 백엔드에 의해 작업이 lock되는 경우는 대부분 API의 구현을 기다리는데 쓰는 경우가 많다. 이런 루트를 타는 것이다. "백엔드 API가 나오지 않았다 → 프론트 모델을 짤 수가 없다 ..
mysql에서 pool query 후 release 하기 mysql 모듈에서 pool을 사용한 다음 release를 하지 않아도 된다.이슈(https://github.com/mysqljs/mysql/issues/1202)를 참고하면, yes. pool.query() is shortcut for pool.getConnection() + connection.query() + connection.release() - see https://github.com/felixge/node-mysql/blob/master/lib/Pool.js#L194-L207아래와 같이 답변이 있다.pool.query()는 getConnection()과 query, 커넥션 release가 포함되어있다는 내용이다.
Express.js IP 구하기 Express.js에서 접속자의 IP를 반환하는 함수는 아래와 같다. const getIp = req => (req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress); Express를 사용할 때 아래코드도 덤으로 넣어주어야 한다. "app.set('trust proxy', true);
간단한 express서버 만들기 12345678910111213const express = require('express'); //expressconst path = require('path');const app = express();app.use(express.static('public'));app.get('/',(req,res)=>{ //on GET (route : /) res.sendFile('./main.html');});app.get('/a',(req,res)=>{ //on GET (route : /a) res.sendFile('./a.html');});require('http').createServer(app).listen(7200,()=> { console.log("Server Start!");}); //Create htt..
SHA란? SHA는 미국 NSA(국가안보국)가 제작한 해시 암호알고리즘이다.SHA-0 부터 최신버전인 SHA-3이 존재한다. 그러나 SHA-0과 SHA-1은 보안상 위험하기때문 보안이 중요한 곳에서는 사용해서는 안된다.SHA는 눈덩이 사태를 일으키기 때문에 조금이라도 값이 다르면 전혀 다른값이 튀어나오게된다.알고리즘별 속도"apple"의 해시값을 구해보면 아래와 같다.SHA-1 : D0BE2DC421BE4FCD0172E5AFCEEA3970E2F3D940 SHA-256 : 3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1bSHA-512 : 844D8779103B94C18F4AA4CC0C3B4474058580A991FBA85D3CA698A0BC9E52C5..
[Pycon KR 2017] Python 게임서버 RPC framework (Thirft편) RPC framework라는것을 배웠는데, 참 편리한거 같다. RPC는 Remote procedure call의 약자로 원격으로 프로시저를 호출한다고 할 수 있다. 또한 네트워크나 콜방식에 상관없이 프로그래머가 원격으로 함수를 실행할 수 있게 해준다. 또한 IDL을 사용한다.게임서버에 RPC Framework를 적용한것에 배웠다.먼저 페이스북에서 만든 Thirft다.간단히 Register - Login 서버를 짠다고 치면 아래와 같이 짤 수 있다.먼저 왼쪽에는 유저와 플랫폼 타입을 설정했다. ※Thrift는 Unsigned를 구별하지 않는다.그다음 위쪽 동그라미는 , exception을 통해 에러를 반환할 수 있게한다.그다음 아랫쪽 동그라미는 서비스 부분으로 User Register의 input para..