728x90
애플이 얼마전 끝난 WWDC (World Wide Developer Conference) 에서 새로운 언어인 Swift 를 발표했습니다. Swift 는 기존의 Objective-C 와 마찬가지로 Apple Foundation Framework 에 기반하고 있는 언어입니다. Xcode 6 에서부터 지원이 되며 Objective-C 와 혼용하여 개발이 가능한 스크립트 스타일의 언어라고 보면 될 것 같습니다.

Swift 는 이제 막 발표된 언어이기 때문에 공부를 하기 위한 자료가 많지 않습니다. 이럴때는 공식 자료로 배포되고 있는 것을 찾아보는게 좋은데요, 역시 애플이 아이북스(iBooks)에 공식 튜토리얼을 올려두었습니다. 영문 버전으로만 배포되고 있어서 조금 아쉽지만 일단 가장 기본이 되는 레퍼런스로 쓰면 좋을 것 같습니다.


애플 스위프트(Swift) 공식 문서 다운로드 받기 [바로가기]


영어로 공부하는 것이 가장 좋습니다만 부담되시는 분들은 한글로 번역작업이 진행된 스위트프(Swift) 언어 개발문서 페이지를 참고하시면 좋을 것 같습니다. 아직 자세히 살펴보지는 못했으나 OSX Dev 의 멤버분들이 의기투합하여 공동 프로젝트로 진행한 번역 산출물로 퀄리티가 괜찮을 것 같습니다. 


스위트프 언어 개발문서 한글화 프로젝트 살펴보기 [바로가기]


이제 스위프트에 푹 빠져볼 시간입니다. 첫장을 펼치고 공부를 시작해 볼까요 -_-;; 

- NoPD -

 
728x90
728x90
rsync 를 이용하는 방법은 참 여러가지가 있습니다.
간단하게는 FTP 를 설치하지 않고 원격 서버에 파일을 업로드, 다운로드 하는 경우가 있겠는데요
나이가 들어서인지 자꾸 커맨드가 기억나지 않아 만들어 두고 Ctrl C, V 하고자 합니다
도움이 되실 분들이 있을 것 같아 블로그에 간단하게 남깁니다.

[ 파일 업로드 하기 ]

rsync -avz -e "ssh -i /Users/snoh/.ssh/do_rsa" result2.csv root@nopd-sg:web

 
설명) ssh 파라메터에 지정된 인증서를 이용하여 root 계정으로 nopd-sg 서버에 접근하여 현재 경로의 result2.csv 를 web 폴더에 복사한다

[ 파일 다운로드 하기 ]

rsync -avz -e "ssh -i /Users/snoh/.ssh/do_rsa" root@nopd-sg:web/server.js ~

 
설명) ssh 파라메터에 지정된 인증서를 이용하여 root 계정으로 nopd-sg 서버에 접근하여 /web/server.js 파일을 로컬 사용자 폴더(~)에 복사한다

 
728x90
728x90
요즘 웹 업계가 난리입니다. 사실상 표준처럼 사용되고 있는 오픈소스 라이브러리인 OpenSSL 에서 취약점이 발견되면서 SSL 터널링과 관계 없이 사용자의 민감한 정보가 노출될 수 있는 문제가 확인되었기 때문입니다. OpenSSL 라이브러리에 대한 패치와 기존에 발급된 인증서 갱신도 중요하지만 Heartbleed 가 왜 이리 큰 이슈가 되는지 아는 것도 중요해 보입니다.

워낙 관련된 문서들이 많이 나왔고 테크 블로그나 IT 전문 매체에서도 잘 다루어 준 덕분에 이해하기 어렵지 않지만 누군가에게 이걸 다시 설명하라고 하면 구차하고 잡다한 이야기를 늘어놓게 되지요. 간단하게 정리된 웹 사이트가 있어서 소개해 드리면서 해당 사이트가 그림으로 이해하기 쉽게 그려둔 그림을 공유해 봅니다. 이해가 아주 깔끔하게 되네요!

출처 : Forumsys (http://www.forumsys.com/api-security/how-to-fix-openssl-heartbleed-security-flaw/)

 
평상시 사용자들이 브라우저로 TLS/SSL (쉽게 말해 HTTPS 요청이라고 생각하시면 됩니다) 터널링을 맺고 나면 OpenSSL 라이브러리는 생성된 세션이 유효함을 확인하기 위해 5바이트의 HELLO 메세지를 전송하는 Heartbeat (심장박동?) 를 전달하게 됩니다. 클라이언트 (보통 브라우저겠죠) 와 서버는 지속적으로 이 행위(?)를 반복하며 채널을 유지합니다.

출처 : Forumsys (http://www.forumsys.com/api-security/how-to-fix-openssl-heartbleed-security-flaw/)


그런데 이번에 발견된 OpenSSL 의 문제점은 Heartbeat 를 5바이트 이상으로 전송하더라도 이에 대해서 서버가 같은 바이트 크기만큼 메모리의 정보를 읽어서 응답하는 데에 있습니다. 악의적인 사용자가 서버의 메모리에 저장된 특정한 주소의 정보들을 쉽게 추출해낼 수 있는 방법이 생긴 것이지요. 이의 해결을 위해서는 OpenSSL 라이브러리를 갱신하고 발급된 인증서를 재발급 받는 등의 절차가 필요합니다. 보다 자세한 내용은 원문을 참고하시기 바랍니다!





728x90
728x90
자바스크립트는 참 편리한 스크립트 언어이지만 다른 한편으로는 이해하기 힘든 녀석이기도 합니다. 이유인 즉선 너무 유연하게 사용할 수 있다보니 가끔 일반적인 언어, 컴퓨터 상식으로는 "왜 이렇게 동작하지?" 하는 경우들이 있기 때문입니다. 가장 대표적인 것이 조건 비교문을 이용하여 변수나 객체를 비교할때 입니다. 잘 동작할 것으로 생각했던 구문들이 정상적인 동작을 하지 않거나 예상치 못한 반응을 한다면 혹시 아래 표에 나온 경우중 하나가 아닌지 잘 살펴봐야 합니다. 아래 표는 http://dorey.github.io/JavaScript-Equality-Table/ 에서 업어왔습니다

 
Boolean 값인 True 와 1은 같은 값일까요? 그리고 True 와 "1"은 같은 값일까요? 조금 더 나아가 True 와 [1] 을 비교하면 어떻게 될까요? 두개의 이퀄 연산자(==)를 사용하여 자바스크립트에서 값을 비교하는 경우 위의 표에서 초록색으로 표시된 것처럼 결과가 리턴된다고 합니다. "" 와 0 이 같다는 생각을 해보셨나요? 혹은 "" 와 [[]] 가 같은 값으로 식별된다는 상상을 누가 해봤을까요? 

때문에 자바스크립트에서는 각 객체와 객체를 비교했을 때 값을 정확하게 예측하기 힘들다면 이퀄 연산자를 두개 이어쓰는 대신 세개(===)를 쓰는 것이 좋습니다. 세개의 이퀄 연산자를 사용하는 경우 엄격한 규칙에 의거하여 값을 비교하게 되고 이로 인한 조건 비교문의 오동작을 효과적으로 막을 수 있습니다. 세개의 연산자에 대한 부정형은 !== 이니 참고하시면 될 것 같습니다


훨씬 상식(?)에 가까운 결과를 보실 수 있습니다. 같은 형태의 자료형들간에 비교를 했을때 정확한 값이 나오는 것을 볼 수 있습니다. 자바스크립트를 쓰면서 뭔가 이해할 수 없는 동작이 발생하고 있다면 표를 참고하시고 연산자를 바꿔보는 것을 검토해 보세요. 우리의 시간은 소중하니까요. :-)

 

728x90

+ Recent posts