자바스크립트를 이용하여 GNOME에서 창을 띄어보기


출처: YES! Gnome JS Bindings Documentation is now available! 

#!/usr/bin/gjs

//The previous line is a hash bang which tells how to run the script.
// Note that the script has to be executable (run in terminal in the right folder: chmod +x scriptname)
// Initialize GTK+
var Gtk = imports.gi.Gtk;
Gtk.init(null, 0);
// Create your window, name it, and connect the “click x to quit” function.
// The word “window” is a JavaScript keyword, so we have to
// call it something different.
var mywindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});
mywindow.title = "Hello World!";
mywindow.connect("destroy", function(){Gtk.main_quit()});
// Add some text to your window
var label = new Gtk.Label({label: "Hello World"});
mywindow.add(label);
// Make the label and the window itself visible to the user
label.show();
mywindow.show();
// Let the user run the app
Gtk.main();


chmod +x helloworld.js

./helloworld.js


Hello World!



Buy me a coffeeBuy me a coffee

Spring Framework Known Vulnerabilities and Issues


Spring Framework

Spring MVC

Spring Security


스프링 프레임워크(Spring Framework)의 알려진 취약점 정리들중 필요한 내용만 찾음.

Buy me a coffeeBuy me a coffee


어거스타 에이다 킹, 러브레이스 백작부인(Augusta Ada King, Countess of Lovelace)의 탄생 197주년. Ada Lovelace는 12월 10일 생일입니다.


저의 생일날 - 12월 10일


12월 10일은 영국 시인의 딸이며, 최초의 프로그래머, 그리고 미국방부에서 사용하는 프로그래밍언어의 이름 Ada를 내놓게 한 어거스타 에이다 킹, 러브레이스 백작부인(Augusta Ada King, Countess of Lovelace)의 탄생 197주년이며 그리고 저의 생일입니다.

그리고 12월 10일은 국제연합(연합국,United Nation)에서 발표한 "세계 인권 선언일" 또는 "국제 인권 기념일"이기도 합니다.


생일날에 구글 두들이 2개씩이나 뜨니 정신 없네요. 하나는 제 생일을 축하하는 두들, 그리고 또 하나는 에이다 러브레이스 탄생 197주년 두들입니다.


에이다 러브레이스에 대한 위키페디아 소개(영어): http://en.wikipedia.org/wiki/Ada_Lovelace 

[컴퓨팅 역사의 이정표] 최초의 프로그래머, 러브레이스 백작부인  http://www.linxus.co.kr/main/view_post.asp?post_seq_no=6863


최초의 프로그래머인 에이다 백작부인을 기념하게 위해서 미국과 영국에서 아래와 같은 일을 했습니다.


에이다 러브에이스 백작 소개와는 상관없지만, 컴퓨터 프로그래머들이 애인이 없는 이유는 "에이다의 저주"때문이라는 우스개글이 있네요. -ㅁ-


그리고 제가 사용하고 있는 Android 4.2.1 Jellybean이 설치된 갤럭시 넥서스 휴대폰에 있는 구글 나우(Google Now)앱이 제 생일날을 어찌 알았는지 생일 축하해주는군요.

구글 나우 앱 한국에서 쓰기 불편하긴하지만, 생일 축하를 해주니 급 괜찮은 앱같아보이네요.




구글님, 제 생일을 축하해주셔서 정말 고맙습니다.



Buy me a coffeeBuy me a coffee


아니 이게 뭐시당께? 이게 뭐꼬? 이게 뭐에유? 이게 뭐야? 這是什麼? 这是什么? 何それ? What is it? 


Psy(싸이)의 "강남스타일(GangNam Style)"에 영감을 얻어 만들어진 자바스크립트 프레임워크 Opa(오빠)가 있습니다

Opa(오빠)와 개발을 해보세요 :)

Opa framework는 이름으로 인기를 노린건가? -_-;;


추가. opa는 2011년도에 이미 있었다는데, 싸이의 강남스타일이 뜨면서 저렇게 변했다는 제보가 있었습니다


ps. 이거 뭐야! 싸이의 강남스타일이 서양인들에게 얼마나 강력하게 다가왔으면, 뇌리에 심하게 박혀있어! 

어튼 서양인들에게 강남스타일이 정말 인기가 있는건 확실함

Buy me a coffeeBuy me a coffee

2012년 10월 5일

애플사 홈페이지(http://www.apple.com/)에서 1년전인 2011년 10월 5일 하늘나라로 간 스티브 잡스를 추모하는 동영상과 편지를 올렸습니다.

Remembering Steve. Feb. 24, 1955~Oct. 5, 2011스티브를 기억하며(Remembering Steve) 1955년 2월 24일~2011년 10월 5일.


A message from Tim Cook, Apple's CEO


벌써 1년이나 지났군요.

2011년 10월 6일(한국시각) 오전에 영어학원에 갔다, 회사는 안가고 (이유는 병무청의 전문연구요원 교육으로 인하여 휴가냈었음) 은행업무 보고 집에 잠깐 들를때 스티브 잡스 사망이라는게 나와서 깜짝놀랐던 기억이 납니다. 그때의 시간이 얼마 지나지 않은것 같은데 시간이 너무 빨리 자나갔어요.


Steve Jobs가 죽은 후, 스마트폰 소식쪽은 점점 시시해진것 같아요. 스티브 잡스,  그 만의 특유의 고집과 기획력, 마케팅력은 대단했습니다. 그가 던진 말때문에 세상은 정말 재미있었지만, 그가 죽은후엔 애플은 그저그런 집단이 된 느낌이랄까?

R.I.P. Steve Jobs ▶◀


ps. 포장술의 대가 스티브 잡스는 죽어서도, 일반인들에게 회자되군요. 그러나 스티브 잡스가 사업을 할수 있도록 기반이 되는 UNIX시스템, C언어를 만든 데니스 리치를 기억하는 일반인이 있을까 궁금하군요.(컴퓨터학 공부하는 사람 빼곤 잘 모를듯)

ps2. Steve Jobs 가 죽은 후 Time誌(타임지) 표지를 장식한 스티브 잡스 (2011.10.17일자 표지 사진)


Buy me a coffeeBuy me a coffee

2012.09.26(수요일, 水曜日, 星期三, Wendnesday)

Google Maps(구글 지도)에서 바닷속을 탐험할수 있는 스트리트뷰 기능을 공개하였습니다.


Explore the ocean with Google Maps



구글의 지도 투자는 어마어마한것 같습니다. 전세계에 지도 서비스하려면 지도데이터를 각 나라 마다 구입을 해아하기 때문에 엄청난 돈이 들어가는데다, 스트리트뷰를 만들때엔 직접 돌아다니며 촬영을 해야하기 때문에 투자하는 돈의 액수가 국내 지도업체보다 천문학적인 액수일겁니다 거기에 바다속까지 촬영하여 보여줬다니... 할말을 잃습니다.


Buy me a coffeeBuy me a coffee

한중일의 페이스북 좋아요 버튼 모양

CJK(Chinese-Japanese-Korean)'s Facebook likes button-shaped

영어(English): Like

한국어(Korean): 좋아요

일본어(日本語, Japanese): いいね

번체중문[대만, 홍콩](繁體中文,Traditional Chinese):  

간체중문[중국대륙](简体中文, Simplified Chinese):

Buy me a coffeeBuy me a coffee
Buy me a coffeeBuy me a coffee

JSP에서 성능을 높이기 위한 팁

  1. 문자열 사용을 자제한다.
  2. 정적인 내용은 초기에 생성한다
  3. println()메소드 대신 print()메소드를 사용한다
  4. 출력을 위한 버퍼 크기를 적당한 크기로 조절한다.
  5. 데이터들은 적당한 크기로 중간에 플러시한다.
  6. synchronized를 사용하는 영역을 최소화한다
  7. JSP에서 필요하지 않은 경우에는 세션을 사용하지 않도록 한다.
  8. 정적인 내용을 포함시킬 때는 include 지시어를 사용하고 jsp:include 액션 태그는 사용하지 않는다.
  9. useBean의 스코프를 적절히 지정한다
  10. 적절한 캐쉬 기능을 사용한다
  11. 웹 컨테이너에서 자동적인 리로딩 기능을 제거한다.


Buy me a coffeeBuy me a coffee

이전에 만들어진 스프링 웹 소스를 분석하고 있었다.

소스를 받아서 Tomcat으로 웹 소스를 실행하려니 에러 발생. 아래와 같은 에러가 발생했다.

2012. 7. 9 오후 5:59:38 org.apache.catalina.core.ContainerBase addChildInternal
심각: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/***]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:650)
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1582)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:142)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5274)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 11 more
2012. 7. 9 오후 5:59:38 org.apache.catalina.startup.HostConfig deployDescriptor
심각: Error deploying configuration descriptor C:\***\***.xml
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/***]]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:650)
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1582)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)


위의 문제는 웹 검색을 한 결과 "라이브러리 충돌이 났다"라는 답이 나왔다.


아래의 라이브러리는 M2로서 메이븐 버전입니다. 문제가 있는건 아니지만 아마도 라이브러리 충돌이 나는것 같습니다.  대신 다른 버전의 라이브러리로 사용을 해보시던가 아니면 첨부파일에 있는 예제로 다시 한번 확인 부탁드리겠습니다.


웹 소스에선 org.springframework-3.1.0.M2 를 사용하고 있었고 위의 에러가 주르륵 나왔었고, 위의 글을 보고 나서 최신 버전인 org.springframework-3.1.1.RELEASE 로 변경하였더니 정상적인 코드라고 잘 돌아갔음.


라이브러리 충돌이 왜 났을까? 저장소에 저장된 라이브러리가 최종 소스니, 예전에 문제 없었던것 같은데 왜?

원인을 모르고 문제를 해결한 셈이 되니 정말 찜찜했다.

하루종일 위의 에러때문에 머리 깨지는줄 알았는데 ㅠㅠ


Buy me a coffeeBuy me a coffee

+ Recent posts