카테고리 보관물: Step

MDN 번역 시작

Spring 4 + Esper로 websocket으로 실시간 모니터링 데이터를 보는 프로젝트 조사중에

MDN에 websocket 문서가 누구나 (Github 계정만 있으면) 수정 가능하다는 걸 알았다!

언제나 도움만 받았는데 나도 미흡하게나마 번역을 해봐야겠다 흐흐

Writing WebSocket client applications

태그 지정됨 , , , ,

Scala 시작하기

Inspired

요즘 들어서 Scala를 공부하고 있다. 아직 많이 부족하지만, 지금까지 배운 것들 기록해두고, 또 혹시 조금이라도 도움이 되는 분들이 있을 지 몰라 공유해보고자 한다.

1. 들어가며


뭘 또 배워야 한단 말인가? 이미 C++, Java, Python, Ruby, JavaScript 등 많은 프로그래밍 언어들이 있는데, 왜 자꾸 새로운 언어가 나오고 있냐? 기존 걸로 안되냐?

라는 의문을 가질 수 있다. 나 역시 처음에 그런 생각을 했었다. 하지만, Scala에 대해 공부를 하다 보니, 이제는 그런 의문들이 많이 없어졌다. 어떻게 의문을 해소했었는지, 그럼 조금 자세히 이야기 해보겠다.

2. Scala?


Scala는 다음과 같은 특징이 있다.

2.1 Fuctional language이며 또한 object-oriented language이다.

Ruby나 C#을 쓰다가 Java나 C++ 같은 언어를 쓸 때 조금 답답한 것이, lambda와 같은 functioncal language적인 syntax가 없다는 것이다. 이것을 안 쓸때는 몰랐는데, 일단 손에 익으면 생산성이 매우 높아진다. Scala는 lambda를 비롯하여 여러 functional language의 문법을 지원한다. 동시에, object-oriented적인 요소도 지원하기 때문에, objected-oriented language에 익숙한 프로그래머들이 functional language를 배우고자 할 때 쉽게 다가갈 수 있다.

나는…

원본 글 보기 938단어 남음

Scala + Play Framework 2 Server 성능 향상 시키기

Inspired

주변에서 Play Framework과 Scala에 대한 관심이 많아지고 있는 것 같다. 지난 2년간 이 조합으로 application 서버를 개발하면서 성능이나 개발 생산성에서 아주 만족하고는 있지만, 아직은 reference가 많지 않아서 중간에 어려움을 많이 겪었다. 오늘은 Scala + Play Framework2의 조합에서, thread를 활용해 성능 향상을 할 수 있는 부분에 대해서 공유해보려고 한다.

Scala 및 Play Framework에 대해서는 이전에 작성한 포스팅을 참고.

1. 접근 방향


일반적인 웹서비스는 보통 다음의 flow로 사용자의 request를 처리하는 것 같다.

  1. 사용자 request 발생
  2. DB나 Cache 서버에서 request의 처리에 필요한 값들을 조회
  3. business 로직 처리
  4. DB에 변경된 값 저장
  5. 사용자에게 response를 보내서 처리를 완료

규모가 있거나 좀더 복잡한 서비스의 경우에는 DB서버나 Cache 서버 외에 또 다른 application 서버를 이용하기도 한다. 이때 병목이 되는 부분은, 대개의 경우에는 외부의 서버와 통신하는 부분이다. 즉, DB, Cache, 다른 application 서버에 무언가를 요청하고 결과를 기다리는 작업에서 CPU 연산과는 order가 다른 수준으로 시간이 걸린다. 그래서, 어떻게 외부 서버와 효율적으로 통신을…

원본 글 보기 578단어 남음

채용공고 코딩 퀴즈

여기저기 글들을 읽다가 재밌는 채용공고를 찾았다. (주기적으로 바뀌는거 같으니 링크는 언제 잘릴지 난 모름)
서류전형에서부터 출제된 퀴즈를 풀어서 같이 내는 건데

이 회사 채용 프로세스가 빡세다.

서류전형에서 퀴즈
미션 코딩 시험 한번 더
면접 때 또 다시 코딩 시험

프로젝트가 오늘로서 끝이 났기 때문에 마음의 여유가 생겨서 그런가
갑자기 재밌어보여서 나름대로 끄적여 보았다.

끄적인 수준이기 때문에 코드는 더럽…
github

태그 지정됨 , , , , ,

Git Bash 개인키 등록시 에러

Github의 편리한 사용을 위해서 (매번 패스워드를 치다니!!)
Github에 공용키를 등록하고 개인키를 사용해서 인증을 받아 사용하는 방법을 주로 사용한다.

개인키를 등록하는 방법은

  • SSH 개인키를 putty로 ppk 파일을 만들어서 pagent로 등록해서 사용하는 방법
  • Git Bash에 개인키를 등록하는 방법
#ssh-agent를 시작
$ ssh-agent -s
#개인키를 등록
$ ssh-add ~/.ssh/id_rsa

그런데 Git Bash에 개인키를 등록시 아래와 같은 에러가 나는 경우가 있다.

Could not open a connection to your authentication agent

그럴 땐

#ssh-agent를 시작
$ eval $(ssh-agent)
#개인키를 등록
$ ssh-add ~/.ssh/id_rsa

로 등록하면 등록이 성공적으로 된다.

태그 지정됨 , , , ,

Tiles3 Xml 파일 경로에 공백이 있을 경우

DEBUG o.a.t.d.d.BaseLocaleUrlDefinitionDAO - File Resource file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-admin.xml at file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-admin.xml not found, continue 
DEBUG o.a.t.d.d.BaseLocaleUrlDefinitionDAO - File Resource file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-test.xml at file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-test.xml not found, continue 
DEBUG o.a.t.d.d.BaseLocaleUrlDefinitionDAO - File Resource file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-admin_en.xml at file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-admin_en.xml not found, continue 
DEBUG o.a.t.d.d.BaseLocaleUrlDefinitionDAO - File Resource file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-test_en.xml at file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-test_en.xml not found, continue 
DEBUG o.a.t.d.d.BaseLocaleUrlDefinitionDAO - File Resource file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-admin_en_US.xml at file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-admin_en_US.xml not found, continue 
DEBUG o.a.t.d.d.BaseLocaleUrlDefinitionDAO - File Resource file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-test_en_US.xml at file:/D:/Utils/for%20DEV/Apache%20Tomcat/Tomcat/webapps/ekrWeb/WEB-INF/classes/tiles/tiles-test_en_US.xml not found, continue

해결책

  1. Classpath의 기반으로 xml의 파일의 경로를 잡았을 경우 공백이 존재하면 안된다 (폴더를 옮겨??)
  2. 실행 컨텍스트의 상대 경로로 xml 파일의 경로를 지정하면 해결된다고 한다.
  3. http://stackoverflow.com/questions/20095165/apache-tiles-white-spaces-in-folder-path
태그 지정됨 , ,

Hoisting

Hoisting

  • Javascript는 함수 scope 를 갖는다.
  • 모든 선언문은 (ex : var x)  함수 실행 맨 첫번째로 실행된다.
  • 할당(assignment)는 구문 실행시 해석된다.

Example 1.

var x = 5;
var y = 7; 
console.log(x + ” ” + y); 
> 결과 : 5 + 7

Exmple 2.

var x = 5; 
console.log(x + ” ” + y);
var y = 7;
> 결과 : 5 + undefined

위의 코드를 Javascript 엔진이 해석할 때는 아래와 같다.

var x = 5;
var y; 
console.log(x + ” ” + y);
y = 7;

이러한 Hoisting 으로 때문에 개발자는 예상치 못한 오류를 만날 수 있기 때문에
한 함수 안에서 모든 선언문은 명시적으로 함수 맨 처음에 선언해주는 것이 좋다.

태그 지정됨 , , ,

2014 To do list

  1. JavaScript Template Engine 정리
  2. Google BigTable 논문 분석
  3. 영어 공부 (독해부터…)
  4. Cassandra Posting
  5. Spring 공부
  6. WordPress로 2개 이상 만들어보기
  7. 한달에 최소한 책 한권씩 읽기
  8. 연애… ?
  9. 믿음 생활 !

아직 8개월 반남았다 !