본문 바로가기

반응형

Develop

(58)
[UOSTime] iconv를 iconv-lite로 어쩌다보니 node와 npm을 업데이트 하게 되었고, iconv 모듈을 업데이트 해야하게 되었다. 하지만 iconv는 설치 과정에서 다양한 오류를 내었다.. python, visual studio, node-gyp, windows-build-tool 등... (구글링 해보면 관련 글이 정말정말 많다) 결국 몇 시간을 보내다가 iconv-lite를 사용하기로 바꿨다! 저번에도 같은 일로 많은 시간을 쏟았는데, 다음부터는 마음이 편할 것 같다.
UOSTime 업데이트 계획 나는 현재 서울시립대학교 시간표 관리 서비스 UOSTime을 개발/관리 중이다. UOSTime은 08학번 선배님이 만드신 것으로 알고 있다. 그것이 이후 다른 선배님들에 의해 계속해서 개선되어왔고, 나는 2017년 말부터 팀에 합류했다. 내가 합류했을 당시, UOSTime은 완전히 새롭게 개발될 계획이었다(서버 작성 언어도 기존 PHP에서 Node.js로 변경되었다). 나는 프론트엔드를 맡았고, 나를 포함한 총 3명의 학우가 선배들의 도움을 받아 개발을 시작했다. 그렇게 2018년 8월, 새 UOSTime이 출시했다. 같이 UOSTime을 개발했던 두 선배는 이후 자연스레 졸업 및 취직을 했고, 그때부터는 나 혼자 간단한 유지보수 및 업데이트를 진행해오고 있다. 출시 이후로 UOSTime은 많은 것이 변..
C 랜덤 숫자 C에서 일반적으로 랜덤한 숫자(또는 수열)는 아래와 같이 얻는다. #include #include #include int main(void) { srand(time(0)); printf("%d\n", rand()); } 하지만, 이 코드를 짧은 간격으로 계속 실행해보면 출력값이 비슷하다는 것을 알게 된다. 비록 rand()의 두번째 호출부터는 리턴되는 값이 매우 달라지지만, 첫 숫자가 비슷하다는 것만으로도 랜덤의 의미가 다소 사라진다. 이에 대응하는 가장 쉬운 방법은, rand()를 한 번 미리 호출함으로써 첫 숫자를 건너뛰는 것이다. #include #include #include int main(void) { srand(time(0)); rand(); printf("%d\n", rand()); }
Bitnami WAMP Stack 설치 과정 Bitnami 설치 바로가기 WAMP 7.3.8-0 기준 [Next]를 눌러 설치를 시작한다. 선택사항은 자유롭게 설정한다. 모두 체크해제해도 무방하다. 설치경로를 설정한다. 데이터베이스의 root 계정 비밀번호를 설정한다. 알파벳과 숫자로 구성된다. 웹서버 SSL 포트를 설정한다. 기본값으로 진행해도 무방하다. 웹 클라우드 관련사항은 체크해제해도 무방하다. [Next]를 눌러 설치를 진행한다. 설치는 몇 분 정도 소요된다. 방화벽 경고가 나오면 [액세스 허용]을 눌러준다. 방화벽 경고가 나오면 [액세스 허용]을 눌러준다. 설치를 종료한다. [Launch Bitnami WAMP Stack]을 체크해제한 후 끝내면 아래와 같은 페이지(127.0.0.1)가 뜬다.
[Bluebird] Promise.map Node.js에서 bluebird 패키지를 이용하면, ES6의 Promise를 map function과 함께 사용할 수 있다. bluebird의 map 함수는 Iterable한 value와 각 value를 위한 mapper function을 인자로 한다. 좀 더 살펴보자. Promise, Resolve, Reject map 함수는 Promise를 반환하며, 각 mapper function 또한 Promise를 반환한다. 하나 이상의 mapper function이 reject를 반환하면 map 또한 reject를 반환한다. map은 모든 mapper function이 fulfilled일때 fulfilled이다. Order 각 value에 대한 mapper function의 실행은 그 순서가 보장되어있지 않..
Service Worker 지원 브라우저 service worker 및 ES8(일부 제외)을 지원하는 브라우저 버전 Browser support ES8 ES8 Supported Version SW Supported Version Edge 17~ 17~ Firefox 44~ 44 (disabled in 44~52 ESR) Chrome 45~ 40~ Safari 11.1~ 11.1~ Opera 32~ 27~ iOS Safari 11,3~ 11.3~ Chrome for Android 75~ 75~ Firefox for Android 67~ 67~ Samsung Internet 4~ 4~ 개인적인 권장 버전 Browser Version Edge 17~ Firefox 44~ Chrome 49~ Safari 11.1~ Opera 33~ Samsung In..
[Node.js + Express] Redirect HTTP to HTTPS Node.js + Express 환경에서 HTTP 요청을 HTTPS로 redirect하는 미들웨어는 아래와 같이 구현할 수 있다. 이 미들웨어는 request의 method와 무관하게 모든 요청을 다루지만, 특정 method(예: GET)만을 다루고 싶다면 5번째 줄의 .all() 대신 .get() 등을 사용하면 된다. (ES6 기준) const express = require('express'); const app = express(); // redirect HTTP to HTTPS app.all('*', (req, res, next) => { let protocol = req.headers['x-forwarded-proto'] || req.protocol; if (protocol == 'https')..
Javascript Benchmark 자바스크립트 코드의 성능을 비교측정하는 사이트를 알게되었다. http://jsben.ch/index 여담 http://jsben.ch/MgMXU forEach 보다 for-of이 더 좋은 성능을 보이는 것 같다. 이 둘에 대해서는 다음에 자세히 다루겠다.