기본 콘텐츠로 건너뛰기

6월, 2012의 게시물 표시

Modern Web Application Tech Stack

모던 웹 어플리케이션 이라니 참 생경한 용어라고 생각했는데 이미 자리 잡았나보다. http://lucumr.pocoo.org/2011/11/15/modern-web-applications-are-here/ http://jtaby.com/2012/04/23/modern-web-development-part-1.html http://www.smashingmagazine.com/smashing-book-1/user-interface-design-in-modern-web-applications/ 등등 많이들 쓰네. 무성의하게 이야기하면 페이스북이나 구글플러스처럼 클라이언트 사이드에서 지지고 볶고 하는 웹으로 만드는 어플리케이션인데. (미안 사실 그건 아니야) 모던 웹 어플리케이션에 대한 정의는 따로 써야할만한 내용이라 일단은 패스. 어느정도는 적당히 맨땅에 헤딩도 해야하지만 간지나는 그분들의 도구들이 뭔지는 알아두자싶어 순서없이 생각날때마다 그때그때 기록해볼련다. .  Trello view-source:https://trello.com/ 해 보니 열심히 Uglify 해 놓았다. 그중  https://d2k1ftgv7pobq7.cloudfront.net/js/2583c1272b9a443e986489d1ed094af4/all.js  의 내용을 보니 http://jquery.com/ http://sizzlejs.com/ http://docs.jquery.com/UI http://docs.jquery.com/UI/Widget http://www.datejs.com/ backbone.js highcharts.js json2.js markdown.js socket.io.js underscore.js node.js HAProxy Redis MongoDB 정도 사용한다. . FourSquare 역시 자바스크립트들을  한방에 뭉쳐놓았다. https://ss1.4sqi.net/scripts/build/ko/fours

Android 4.0.3 ICS Ice Cream sandwich / iOS 5 에서 WebView 를 사용할 때 주의할 점

잘돌던 앱이 갤럭시S2에서 갑자기 안돈다고 한다. 뭔가 해서 봤더니 shouldOverrideUrlLoading 이 제대로 작동하지 않는 것을 발견. 콘솔로 찍어보니까 통신용 커스텀 프로토콜 이름을 nativeCall://doSomething 과 같이 카멜노테이션 식으로 대소문자를 혼용했는데 이것이 실제로 해당 method 안에선 url 이 소문자로 들어가서 생기는 현상이었음. 결론: shouldOverrideUrlLoading 을 사용할땐 소문자만 쓰자. 추가: iOS 5.0 에서도 동일한 현상이 있다는 제보가 있습니다 :)

일기- ubuntu 12.04 시스템 설치

기존 10.04 Server 에서 한글 문제가 좀 있어서 삽질하려다가 그냥 12.04 Desktop으로 올림. 1.설치 후 사용자 계정 만들기 2.ssh 설치 $ sudo apt-get install ssh 3.phantomjs 설치. phantomjs: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory 실행하니 위와 같은 오류 발생. $ sudo apt-get install libqt4-webkit 해결. 4.node.js 는 package manager 로 설치. 소스컴파일 안할래 5.npm 은 언제나 말썽. 오류를 우장창 내뱉았으나 일단 작동은 함. 6.server 쪽에서 내 osx로 전송하기 위해 클라이언트 ftp 활성화 ( http://appletree.or.kr/forum/viewtopic.php?id=229  참조) FTP 서버쪽도 열어야지 $ sudo apt-get install vsftpd $ sudo vi /etc/vsftpd.conf 에서 3줄 수정 anonymous_enable=NO local_enable=YES write_enable=YES $ sudo /etc/init.d/vsftpd restart 재시작 7.phantom.js 의 rasterize.coffee 실행. 그러고보니 phantom.js example 들은 훌륭한 coffeescript 레퍼런스로군! 8.npm install -g express 9.npm install jsdom 한참 걸리네..... npm WARN optional dep failed, continuing contextify@0.1.3 WARNING 이 하나 있네. npm 설치시 문제때문인가. sudo apt-get install build-essential  C 컴파일러 문제인득. 이걸로 해결 1

Meteor 에서 외부 라이브러리를 사용하는 법

csv 파일을 읽어서 초기데이터 로딩을 하려고 했더니 meteor 에선 그냥 require 를 사용할 수 없다. 다음과 같이 __meteor_bootstrap__ 객체를 이용하여 가져온다. fs = __meteor_bootstrap__ .require('fs');   if !Users.find().count()     console.log ">> Initiate user list"     ((readLine)->       keyList = readLine.shift(0).split(',')       for line in readLine         result = {};         for valueList,k in line.split(',') when valueList           result[keyList[k]]=valueList;         Users.insert result     )(fs.readFileSync("#{process.env.PWD}/server/fixture/user.csv").toString().split('\n'))     console.log "User added" fs 모듈을 이용해서 csv 파일을 읽어 Users 컬렉션에 로드하는 예제 값이 없는 경우는 k,v 를 만들지 않는다. 가령 user.csv 가 userid, password, email spectrum,1234,spectrum@wherever.net acidsound,1234, admin,, 이런식으로 들어가 있으면 user 콜렉션은 [   { user : 'spectrum', password: '1234', email:'spectrum@wherever.net' }   { user : 'acidsound', passwo

node.js 로 만드는 원격 갈무리 도구

jsdom 이 역시 최고. 검진 기관명 목록을 통째로 뽑기 위해 node.js 로 짜보았다. 한글 문제는 iconv 를 설치해서 해결. euc-kr > utf-8으로 변환함. jsdom 과 iconv 가 설치하는데 까칠거려서 애좀 먹었음. http://pastie.org/4078210 결과물은 엑셀에서 뽑기 좋게 993 광양사랑치과의원 광양사랑치과의원 전라남도 광양시 공영로 73, 3층 (중동) (☎ 061-795-2879) 내원 ○ 출장 ○ 994 광양시보건소 광양시보건소 전남 광양시 광양읍 칠성리70 (☎ 061-797-4008) 내원 ○ ○ 출장 995 광양웰치과의원 광양웰치과의원 전라남도 광양시 불로로 87, 3층 (중동) (☎ 061-793-7588) 내원 ○ 출장 996 광양의원 광양의원 제주특별자치도 제주시 서광로 302, 4층 ... (☎ 064-723-8275) 내원 ○ ○ 출장 997 광장수진산부인과의원 광장수진산부인과의원 경기도 부천시 원미구 부일로 202-13, ... (☎ 032-328-9686) 내원 ○ 출장 998 광제산부인과의원 광제산부인과의원 충청남도 천안시 서북구 서부18길 23, (... (☎ 041-575-3200) 내원 ○ ○ ○ 출장 999 광주21세기병원 광주21세기병원 광주광역시 광산구 임방울대로 164,(운남동... (☎ 062-953-7000) 내원 ○ ○ ○ ○ 출장 1000 광주굿모닝병원 광주굿모닝병원 광주광역시 북구 북문대로 182, (운암동) (☎ 062-250-1000) 내원 ○ ○ ○ ○ ○ ○ ○ 출장 이런식으로 대략 나옴. vi에서 복사하기

mysql password() function 을 node.js 에서 사용하려면

기존 mysql 로 다른 사람이 구축한 테이블의 데이터를 mongodb 로 이전하려고 보니 사용자 암호와 주민등록번호 뒷자리가 암호화 되어 있었다. stackoverflow 를 뒤져보니 http://stackoverflow.com/questions/5894193/implementation-of-mysqls-password-function-in-java 이런게 있더라. 단순하게 sha1 으로 두번 암호화하고 대문자화 한담에 맨 앞에 * 붙여주는게 전부인데 이상하게 잘 안되더라. 자바를 한동안 안봐서 그런가 눈알에 힘 빡주고 보니 두번 복호화 하는 과정에서 첫번째 복호화한 값은 byte[] 형이란게 보이더라 http://nodejs.org/api/crypto.html#crypto_hash_update_data_input_encoding node.js 에는 'sha1', 'md5', 'sha256', 'sha512' 와 같은 다양한 형태의 복호화 알고리즘을 지원하는 crypto package가 있다. 그래서 콘솔을 열고 이렇게 쳐 보았다. # node > var crypto = require('crypto'); > var first=crypto.createHash('sha1').update('test').digest(' binary '); > var second=crypto.createHash('sha1').update(first).digest(' hex '); > "*"+second.toUpperCase(); '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' mysql 에서 확인해보았다. > select password('test') *94BDCEBE19083CE2A1F959FD02