본문 바로가기

프로그래밍

(7)
[마리아 DB] SYSDATE() 와 NOW() 의 차이점 SYSDATE()와 NOW()는 다르다 마리아 DB 현재 시각을 리턴해주는 함수 SYSDATE()와 NOW() 사이에는 중대한 차이점이 있습니다. 그 차이점을 확인해보고 올바르게 사용하는 방법을 알아보려 합니다. SYSDATE()는 예측 불가능(non-deterministic) 하다 SYSDATE() 함수는 해당 함수가 호출될 때마다 매번 호출 시점의 시각을 재계산하여 리턴합니다. 반면에 NOW() 함수는 포함된 쿼리문이나 루틴이 최초 실행될 때의 시각을 리턴합니다. 이 차이는 쿼리문이나 루틴 내에서 각 함수가 여러 번 쓰이게 될 경우에 큰 차이를 만들어 냅니다. NOW() 함수와 BETWEEN() 함수의 차이는 아래 쿼리로 명확히 알 수 있습니다. SELECT NOW(), SLEEP(2), NOW();..
Node.js 를 이용한 초간단 웹서버 구축 (feat. http-server) 초간단 웹서버 http-server Node.js 기반의 http-server 모듈은 설정이 불필요한 커맨드라인 기반의 심플한 웹서버 입니다. 운영 환경에서도 사용 가능하다고 이야기 하지만 그보다는 로컬에서 웹페이지 개발시에 테스트 목적으로 사용하기에 적격입니다. http-server A simple zero-configuration command-line http server www.npmjs.com http-server 설치 npm을 이용하여 글로벌로 설치합니다. 글로벌로 설치해야 커맨드창에서 손쉽게 http-server 구동이 가능해 집니다. $ npm install --global http-server http-server 실행과 종료 http-server 설치 후 커맨드 창에서 http-serv..
웹사이트 성능 개선을 위한 gzip 압축 적용 : Apache, Tomcat, Weblogic과 Servlet Filter 유닉스 압축 프로그램 gzip gzip 은 유닉스에서 태어난 오픈소스 압축 프로그램 입니다. 알집이나 7zip 에서 사용하는 것과 동일한 Deflate 압축 알고리즘을 사용하지만 하나의 파일만 압축할 수 있기 때문에 주로 tar 프로그램과 함께 사용하곤 합니다. 불편하기 짝이없어 보이는 gzip 압축 프로그램에 주목해야 하는 이유는 gzip 압축이 웹사이트 성능 개선과 밀접한 연관이 있기 때문입니다. gzip을 사용한 텍스트 압축 gzip은 텍스트 파일을 압축하는데 있어서 최상의 성능을 내는 것으로 알려져 있습니다. 우리의 웹사이트는 이미지를 제외한 대부분이 텍스트 콘텐츠로 구성되어 있습니다. 자바스크립트, HTML, CSS, JSON 등 사이트를 구성하는 거의 모든 요소가 텍스트 콘텐츠 입니다. 우리가..
Node.js 와 puppetter를 이용한 네이버 쇼핑 매크로 만들기 #1 네이버 쇼핑 매크로를 만들어 보자. 구글 크롬 브라우저의 헤드리스 버전인 Puppeteer를 이용하여 네이버 쇼핑 매크로를 만드는 과정을 공유해 보려 합니다. 네이버 쇼핑 매크로의 동작은 단순합니다. 네이버에 자동으로 로그인해서 원하는 상품 판매 페이지로 이동하여 재고 확인 후 상품 주문창으로 이동합니다. 결제수단을 선택하고 주문을 완료하는 것 까지가 매크로의 동작입니다. 네이버 로그인 상품 상세페이지 이동 재고확인 후 구매하기 클릭 결제수단 지정 후 결제하기 Puppeteer Puppeteer는 Node.js 환경에서 구동되는 백그라운드 작업용 크롬 브라우저 API입니다. 일반 브라우저와 다른 점은 화면을 제공하지 않고 프로그램 API로 동작을 제어할 수 있다는 점입니다. Puppeteer를 이용하면 ..
ES6에 새롭게 추가된 자바스크립트 문법 톺아보기 #1 ECMAScript, ES6 그리고 Babel ES (ECMAScript) ECMAScript(줄여서 ES)는 ECMA International이라는 정보화 관련 국제 표준화 기구에서 정의한 자바스크립트 언어에 대한 표준화 명세입니다. ECMA International 이 매년 자바스크립트의 신규 문법이나 기능 명세(Spec)를 추가하면 구글, 마이크로소프트, 모질라 등의 브라우저 제조사에서 자사의 자바스크립트 엔진에 새로운 기능을 추가해서 배포합니다. 넷스케이프에서 최초로 자바스크립트를 자사의 브라우저에 탑재한 것이 1996년 이었고 ECMA Internaional 은 이듬해인 1997년 자바스크립트 표준화를 위해 ECMAScript 초판을 발행합니다. 2015년에 6판을 발행한 이후로는 매년 개정된 명세를 꾸준히 발행하고 있습니다. 가장 최근인 ..
인텔리제이(IntelliJ IDEA) 유용한 키보드 단축키 32가지 (PC) IntelliJ IDEA 올해 초 까지만 해도 저는 Eclipse 만 사용했습니다. IntelliJ 가 생산성 향상에 월등하다는 이야기를 주위에서 많이 듣긴 했지만, 익숙한 툴을 바꾸기도 쉽지가 않았고 뭔가 겉멋(?)이 드는 것 같아서 애써 외면해 왔습니다. 그러던 와중에 IntelliJ를 함 익혀보자 해서 몇 달간 사용해 보니... 역시나 과연 신천지 새로운 세상에 눈을 뜬 기분이 들었습니다. 물론 지금도 SI 프로젝트에서는 표준 개발도구로 Eclipse와 VS Code를 주로 사용합니다. 아마도 앞으로도 당분간은 SI 개발환경이 IntelliJ로 가기는 쉽지 않을 것으로 예상합니다. IntelliJ IDEA Community 에디션의 경우는 Apache 2.0 라이선스라서 상업용 개발에도 전혀 문제가..
운영 빌드 시 console.log 제거하기. 덤으로 no-console 에러도 해결 console.log JavaScript 프로그래밍 시 디버깅 목적으로 브라우저의 console.log 메서드를 자주 사용하게 됩니다. 사용하기 간편하고 애플리케이션의 동작에 직접적인 영향을 주지 않기 때문에 개발자 도구의 Debugger 보다 더 자주 사용하게 되는 것 같습니다. if(condition) { //... } else { console.log('이 메시지가 출력되면 절대 안된다!'); console.log('뭔가 잘못 되었다.'); } console.log 는 가장 간편한 디버깅 도구이긴 하지만 운영에 배포되는 어플리케이션에는 포함되지 않는 것이 좋습니다. 불필요한 코드 이기도 하고 보안 이슈가 발생할 가능성도 있습니다. 무엇보다 개발자가 신경을 안 썼다는 티가 나서 좋지 않습니다. no-..