오픈소스와 라이센스 :: OpenSource and Licenses

이 글을 읽고 있는 당신이 소프트웨어 개발자 혹은 기획자라면 오픈소스와 라이센스에 대해 고민을 하신
경험이 이있을것이라 생각합니다.

'쓸만한 소스를 구했는데... MPL라이센스네.. 이거 우리 프로젝트에 써도 되는거야?'
'뭐.. 오픈소스? 그럼 우리 코드도 다 공개해야 하는거 아냐?'

이런 생각을 해 보신적이 있다면 첨부한 문서를 읽어보시길 권합니다.
문서에는 오픈소스에대한 정의와 몇가지 유명한 라이센스에대한 권한과 제한사항을 다루고 있습니다.

opensource11.pdf

오픈소스에대한 정의와 라이센스들

2008/01/08 14:36 2008/01/08 14:36
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

손쉽게 파비콘( favicon.ico )을 만들어 봅시다.

파비콘(favicon)은 웹서핑 중에 자주 보셨을 텐데요.. 아래 이미지와 같이 주소표시줄 앞에 나타나는 작은 아이콘을 지칭합니다.

파비콘 적용된 주소표시줄

파비콘이 적용된 주소표시줄



파비콘은 즐겨찾기와 URL표시줄에 작은(16X16) 사이즈의 아이콘으로 사이트의 로고를 나타내는 기능을 하며
마이크로소프트 Internet Explorer 5.0 부터 추가되어 현재 대부분의 브라우저에서 이 기능을 지원하고 있습니다.

사이트에 파비콘을 넣는 방법은 간단하지만, 아이콘(ico)파일을 만들기가 귀찮아 적용하지 않는 경우도 많을 거라 생각합니다.
오늘 우연히 러시아 사이트 중에 이 파비콘을 웹상에서 만들어 주는 곳을 찾게 되어 소개 하고자 합니다.

http://favicon.ru/en으로 접속하시면 영문으로 구성된 파비콘 제작 페이지를 보실 수 있습니다.
이메일 주소를 이미지로 만들어 주는 사이트와 비슷하다고 생각하시면 되는데요. 이 사이트만의 독특하고 신기한 기능이 있습니다.
만들어진 파비콘을 웹상에서 픽셀단위로 수정하여 다시 다운로드 받을 수 있다는 겁니다.

순서는 여타 이미지 제작 웹페이지와 크게 다르지 않습니다.

  1. 이미지를 업로드 하고,
  2. 제작된 파비콘을 다운로드 받거나,
  3. 수정하여 다운로드 받습니다.

파비콘 제작 사이트

파비콘 만들 이미지를 선택하고 Create favicon.ico! 버튼클릭



파비콘 제작 사이트

그냥 다운로드 버튼을 누르기 전에 Edit favicon을 클릭합니다.



파비콘 제작 사이트

와우~ 웹에서 에디팅까지 됩니다.



[Flash] /blog/attachment/1092160473.swf





아래 사이트에서 파비콘에 대한 더 많은 정보를 얻으실 수 있습니다.
http://www.thesitewizard.com/archive/favicon.shtml

2008/01/08 00:55 2008/01/08 00:55
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 새 파비콘 멋집니다. ^_^

  2. 지인우인님 다녀가 주셔서 고맙습니다.
    제가 찍은 사진으로 만들어서 뿌듯하기까지(^^;;) 합니다.

  3. Blog Icon
    유남쌩

    오~ 이게 파비콘이었구낭^^

    인생 뭐 있나요? ㅎㅎㅎ

    푸켓 잘 다녀오삼~

  4. Blog Icon
    서비

    난 푸켓 못 가삼!!!!
    이모디오닷컴 뒷수습 하고 있으삼!!!!

프로그래머를 위한 스크린 캡처/공유 툴 :: 징 프로젝트 Jing Project

Snag It이란 프로그램을 알고 계신가요?
유명한 스크린 캡처 프로그램인데요.. 이 Snag It을 개발한 Tech Smith라는 회사에서 Jing 이라는 이름의
새로운 프로젝트를 시작했더라고요..

간단하게 말하면 프로그래머가 뭔가를 설명하기 위해 문서가 아닌 동영상을 이용하겠다는 취지로 시작했습니다.
youtube를 위시하여 국내외에서 플래시 플레이어를 기반으로 한 동영상 공유 사이트가 우후죽순으로
생겨나고 있는 가운데 또 하나의 UCC저작툴 혹은 사이트가 나온 건가 라고 생각했는데 Jing Project의 비디오
튜토리얼을 보고나니 그 유용성이 확연해 지더군요..

비디오 투어 보기..



Tech Smith사에는 이미 Camtasia 라는 전문적인 화면 캡처 둘이 있습니다만, 이 징 프로그램은 무료이며 
컴퓨터 바탕화면의 캡처에서 공유까지 일련의 절차에 작업 전환이나 또다른 수정작업의 개입이
없어도 된다는 것과 서버를 보유하고 있다면 그 결과물을 공유사이트에 올리지 않아도 된다는 장점이
있습니다. 

Mac OS X과 .Net Framework 3.0을 구동할 수 있는 Windows XP, 2003, Vista에서 프로그램을 구동 할 수 있습니다.

징 프로젝트 공식 사이트 : http://www.jingproject.com
징 프로그램 설정 방법 : http://blog.jingproject.com/2007/07/getting_started_with_jing.html


아래는 이 징 프로그램으로 캡처하여 제가 호스팅 받고 있는 서버에 올린 결과입니다.
URL은 http://www.yunsobi.com/anyone/12-11-2007%2006_51%20%EC%98%A4%ED%9B%84.swf 이고요.
화면을 캡처하면서 마이크를 통하여 외부소리를 함께 녹음 하는것도 가능하지만 결코 들어줄만한 목소리가
아니니 패스합니다.

[Flash] http://www.yunsobi.com/anyone/12-11-2007%2006_51%20%EC%98%A4%ED%9B%84.swf

2007/12/11 19:56 2007/12/11 19:56
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 2008/01/16 12:33
    최고의 화면캡쳐 프로그램, 오픈캡쳐 (OpenCapture) Tracked from 즐거운 컴퓨터고난기록기
  1. 트랙백 타고 날아왔습니다. :)
    징 프로젝트, 정말 멋집니다! 기존에 있던 기술들을 하나로 엮어 편리하게 잘 만들었네요.
    조만간 시간이 나면 징 프로젝트를 본격 활용해 글을 작성해 보아야겠습니다.
    좋은 정보 감사드리며, RSS 에 등록해놓고 자주 놀러오겠습니다. 유용한 글들이 굉장히 많네요! :)

  2. comlog님 찾아주셔서 감사합니다.
    저 역시 자주 찾아뵙겠습니다. ^^

윈도우 서비스모드로 설치한 톰캣 4의 설정 변경하기

톰캣 5 버전부터는 작업표시줄에서 톰캣을 모니터링 할 수 있는 Apache Tomcat Proterties 라는 유틸리티가 있어
이를 통해 톰캣의 설정을 변경 할 수 있지만 톰캣 4 버전대를 서비스모드로 설치하면 프로퍼티를 수정 할 수 없어
난감할 때가 있습니다.
사용자 삽입 이미지
Tomcat 5 버전의 모니터링 툴

이럴 경우 레지스트리 에디터를 열어
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 아래에서 Apache Tomcat 항목을 찾으시면
프로퍼티를 수정 할 수 있습니다.

사용자 삽입 이미지
Tomcat 4 버전이라면 레지스트리에서 수정하자!!



2007/11/27 15:56 2007/11/27 15:56
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Javascript Framework Prototype

참고해야할 사이트들...

Developer Notes for prototype.js -  Prototype의 개발자 노트

Site design using Prototype - AJAX 이용 가이드~ JSON-PHP라는 것과 이클립스용 AJAX extension을 주목

AJAX Design Patterns - AJAX 디자인 패턴

Learning the JavaScript debugger Venkman
- 자바스크립트 디버거 환경 갖추기


라이브러리

Rico - LiveGrid같은 기능을 하는 Ajax를 찾고 있었는데!

script.aculo.us - Sortable List가 일품!

Moo.fx - 가벼우면서도 센스있는 디자인을 위한 라이브러리. Prototype에는 링크가 안되어있는데 꼭 놓치지 말고 보아야할 곳!

ZK - 디자인이 좀 투박하긴 하지만, 에러 메세지 보여주는 거랑 아쿠아 런처 스타일의 링크가 일품

dhtmlgoodies - 쓸만한 예제가 많다. 특히 Tab view는 감동 감동. Folder tree가 쓸만할 듯 그리고 Color Schemer와 Reg. tool, CSS lookup 등 쓸만한 툴도 일품!

LightBox - 이미지를 이쁘게 보여줄 수 있다.

2007/11/22 03:03 2007/11/22 03:03
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

TortoiseCVS 사용 시 Disk IO 성능 향상


지금까진 소스 버전관리를위한 CVS(Concurrent Versions System) 클라이언트로 WinCVS 나 Netbeans에
내장된 CVS를 사용하고 있었습니다.

이번 프로젝트에선 몇몇 이유로 TortoiseCVS 를 사용하게 되었는데요..
윈도우즈 쉘에 통합되어 마우스 오른쪽 클릭의 컨택스트 메뉴에서 CVS클라이언트 기능을 쉽고 직관적으로
사용 할 수 있어서 편하더군요.
사용자 삽입 이미지

파일이 생성되거나 수정될 때 CVS가 관리하는 파일/폴더라면 아이콘으로 상태를 표시해 주는 기능이 있는데
이를 확인하기위해 지속적인 Disk IO를 발생(비록 PC의 성능 저하가 미미하다곤 하지만..) 한다고 하네요..

이를 줄이는 방법이 있는데요..
TortoiseCVS 의 설정 메뉴중 고급탭을 선택하면
사용자 삽입 이미지
사용자 삽입 이미지

위와같이 '차단할 폴더' '포함할 폴더' 를 기술할 수 있는 입력상자가 있습니다.
여기에 TortoiseCVS 가 확인 하지 않아도 되는 폴더와 확인할 폴더를 세미콜론( ; )을 구분자로 죽 적어 주시면 됩니다.
2007/10/30 13:20 2007/10/30 13:20
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

프린터 드라이버 용어 : PCL 3 및 PCL 5/6 기능 및 차이점

    PCL이란?

    PCL(Printer Command Language) 언어는 시스템과 프린터 간에 최고 수준의 통신을 제공합니다. 호스트 시스템, 장치 드라이버, 입/출력 인터페이스 및 네트워크 통신으로부터 독립적으로 기능합니다. 이것은 HP 프린터를 공통으로 제어하기 위한 것입니다. PCL 언어가 제공하는 기능 호환성은 응용 프로그램 및 드라이버 소프트웨어에 들이는 비용을 줄여 주고 새로운 기능 및 기술을 사용하는 방법을 제공합니다.Hewlett-Packard에서 프린터 기능에 대한 액세스를 표준화하기 위해 PCL 프린터 언어를 개발했습니다.

    PS란?

    포스트스크립트(POSTSCRIPT) 언어는 강력한 그래픽 기능을 가진 간단한 해석 프로그래밍 언어입니다. 이 언어는 Adobe 이미지 모델에 따라 텍스트 모양, 그래픽 도형 및 인쇄되거나 표시된 페이지의 견본 이미지를 설명하는 데 주로 사용됩니다. 이 언어의 프로그램은 구성 시스템에서 인쇄 시스템으로 문서 설명을 전달하거나 디스플레이 상의 텍스트 및 그래픽 모양을 제어할 수 있습니다. 설명은 상위 수준이며 장치 독립적입니다.
컴퓨터에서 인쇄 - 일반적인 인쇄 경로

Microsoft PowerPoint와 같은 Windows 응용 프로그램에서 인쇄하는 경우 Windows 응용 프로그램은 인쇄 작업을 EMF 파일로 출력합니다. 아래 그림을 참조하십시오. EMF(Enhanced Meta File) 형식은 Microsoft Windows에 의해 정의된 이미지 설명 형식입니다. 서버의 프린터 드라이버는 EMF 파일을 대상 프린터에 알맞은 원시 데이터 형식으로 변환합니다. Windows 인쇄 시스템에서 원시 데이터는 PCL5/6 또는 PCL3Plus와 같이 프린터가 이해하는 언어로 프린터에 전송된 데이터로 정의됩니다.

언어의 차이는 원시 데이터 파일의 결과에 있습니다. 원시 데이터 '파일'의 크기는 데이터를 프린터에 보내는 데 사용되는 입/출력 대역폭의 크기를 나타내므로 중요합니다. 그림 2를 참조하십시오.

그림1:데이터 흐름

향상된 PCL 버전은 원시 파일의 크기를 줄임으로써 성능을 향상시켜 줍니다. 인쇄 품질 및 성능은 이미징 솔루션에 대한 고객 만족을 이끌어 내는 데 중요합니다. 이 문서는 여러 PCL 버전들을 비교하고, 현재 향상된 PCL 솔루션인 PCL 6 솔루션에 대해 상세히 설명합니다.

PCL 5/6과 PCL 3의 차이점

 

PCL 5/6

PCL 3

1

표준 메모리에서 복잡한 그래픽 이미지를 인쇄합니다.

특정 그래픽 데이터를 인쇄하려면 프린터에는 PCL3GUI 또는 High Performance Architecture와 같이 이미지 처리가 빠른 프린터 언어가 필요합니다.

2

이미지를 설명하는 데 사용되는 개체 기반 언어. 개체 기반 언어는 정사각형, 직사각형, 선, 원호, 원 등의 여러 개체들을 정의할 수 있습니다. 장점: 이러한 개체의 이미지는 PCL3GUI에서 사용된 픽셀 설명보다 적은 데이터를 사용하여 설명할 수 있습니다.

픽셀로 이미지를 설명하는 픽셀 기반 프린터 언어. 정사각형, 직사각형 등의 동일한 개체에 더 많은 데이터가 필요합니다. 비트맵 및 다른 복잡한 그림 형식의 개체는 개체 기반 언어를 사용하지만, 이 개체들은 복잡성 때문에 여전히 픽셀로 설명됩니다.

3

PCL 5/6은 스케일 가능 글꼴 및 다운로드 가능한 글꼴을 지원합니다. 또한 GL2 드라이버에 비해 이미지 래스터 기능이 더 뛰어납니다.

스케일 가능 글꼴 및 다운로드 가능한 글꼴을 지원하지 않습니다.

4

EMF에서 PCL5/6 개체 데이터로의 변환이 적습니다. 이것은 필요한 CPU 시간을 줄여 줍니다. 사용자들은 인쇄 작업을 시작한 후에 컴퓨터의 모든 리소스를 보다 빠르게 사용할 수 있습니다.

대부분의 EMF 개체 및 이미지는 EMF를 PCL3GUI 픽셀 데이터로 변환하는 데 보다 큰 CPU 대역폭이 필요합니다.

5

PCL5/6 프린터는 컴퓨터 시스템 대신 프린터에서 폰트/이미지를 래스터할 때 더 많은 프린터 메모리가 필요하고, 때때로 더 많은 프린터 하드 디스크가 필요합니다.

일반적으로 PCL3GUI 드라이버는 원시 데이터 파일을 생성할 때 PCL5/6 드라이버보다 컴퓨터에서 더 많은 메모리를 사용합니다. PCL3GUI 프린터는 초기 구매 비용이 PCL5/6 프린터에 비해 적게 드는 경제적인 종합 인쇄 솔루션입니다. 이것은 메모리 RAM과 처리 능력(processing power)을 적게 사용하기 때문입니다.

6

네트워크 환경에서 인쇄 서버는 PCL5/6 프린터를 PCL3GUI 프린터보다 효과적으로 제어할 수 있습니다. 일반적으로, PCL5/6 프린터는 인쇄 속도가 더 빠르므로 네트워크 지원 프린터에 사용됩니다.

클라이언트에서 서버로 인쇄 작업을 보내 서버에 포맷하는 클라이언트/서버 사용 모델을 사용하는 경우, 동일한 서버를 사용하여 네트워크에서 일정 수의 개인용 프린터를 공유하는 사용자가 많아질수록 성능은 더욱 느려집니다.

PCL 6 기능

PCL 6은 Hewlett-Packard PCL 언어 및 관련 기술의 최신 버전입니다. PCL 6의 세 가지 주요 구성 요소는 다음과 같습니다.

  • 첫 번째 구성 요소는 향상된 PCL 6(PCL 6 Enhance)으로서 Microsoft Windows 및 OS/2와 같은 그래픽 사용자 인터페이스(GUI)에서 인쇄하는 데 최적화되었습니다.

  • 두 번째 구성 요소는 PCL 6 표준(PCL 6 Standard)으로서 과거 HP LaserJet 프린터 제품과 완벽하게 호환됩니다.

  • 세 번째 구성 요소는 글꼴 합성(Font Synthesis)으로서 스케일 가능 글꼴을 제공합니다.

PCL6 드라이버는 WYSIWYG(What You See Is What You Get) 기능과 표준 드라이버에 대한 응용 프로그램 지원 성능이 향상되었습니다. PCL XL은 HP가 개발한 새 페이지 설명 언어로서 PCL 6의 일부분으로 GDI에 보다 가까우며, 많은 응용 프로그램에서 사용됩니다. 드라이버에서 언어 해석이 적게 발생하는데, 이것은 WYSIWYG 기능이 증가되고, 향상된 드라이버에 의해 구현된 이스케이프 시퀀스를 지원하는 응용 프로그램의 성능이 향상되었음을 의미합니다.

그래픽 페이지를 설명하는 데 필요한 명령 및 데이터의 수가 감소됩니다. 이로써 사용자가 응용 프로그램에 더 빨리 돌아올 수 있고, 표준 메모리에서 복잡한 그래픽 페이지를 인쇄할 수 있습니다. 프린터의 그래픽 명령을 GUI의 그래픽 인터페이스에 일치시킴으로써 사용자는 모든 페이지에서 진정한 WYSIWYG를 경험할 수 있습니다.

    객체 지향 프린터 언어

    PCL 6의 새 아키텍처는 객체 지향 명령을 사용하여 프린터와 통신합니다. 객체 지향 명령은 프린터가 페이지에 무엇을 인쇄할 것인지 알려 주는 데 사용되는 작고 간결한 데이터 조각들입니다. 코드 시퀀스의 긴 문자열 대신 객체 지향 명령을 사용하면 그래픽 인쇄 성능이 현저히 향상되고 응용 프로그램으로 빨리 돌아갈 수 있으며 네트워크 트래픽이 감소합니다.

    향상된 성능

    PCL 6 명령은 Microsoft Windows GDI(graphical direct interface) 명령과 거의 일치하도록 HP에 의해 설계되었습니다. 그 결과 사용자는 향상된 성능과 더 좋은 인쇄 품질을 얻을 수 있습니다. 예를 들어, PCL 6를 사용하면 프린터 드라이버가 이전보다 빨리 GDI를 PCL 6으로 해석할 수 있기 때문에 사용자가 PC 및 응용 프로그램의 제어권을 더 빨리 되찾을 수 있습니다. PCL 6은 이전 버전보다 더 작고 간결한 명령을 사용하므로 네트워크 작업 처리량이 향상됩니다. PCL 6은 특히 그래픽에 맞게 설계되었기 때문에 복잡한 그래픽이 빠르게 인쇄되고, 회색조 이미지는 객체로 처리되며 매끄럽고 고르게 보이며, 그래픽 및 스캔된 이미지의 인쇄 품질이 우수합니다. 또한 PCL 6과 GDI의 일관된 디자인은 WYSIWYG 인쇄를 더욱 향상시켜 줍니다.

    특정 네트워크 구성에서는 PCL 6가 작은 파일 크기를 생성하지만, 오늘날 호스트 프로세서 및 네트워크 속도 향상으로 작은 파일 크기의 성능상 이점이 상쇄되었습니다.
2007/10/29 21:26 2007/10/29 21:26
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

터미널서버(Terminal Server)의 포트를 변경하는 방법

기본적으로 터미널 서버와 Windows 2000 / Windows Server 2003 터미널 서비스는 클라이언트 연결에 TCP 포트 3389를 사용합니다.
이 값은 변경하지 않는 것이 좋지만, 이 포트를 변경해야 할 경우에는 다음 방법을 참고하시면 됩니다.


서버쪽 변경부분

1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
2. "PortNumber" 하위 키를 찾아 값이 (3389)의 16진수 값인 00000D3D인지 확인합니다.
   10진수로 포트 번호를 수정하고 새 값을 저장합니다.

만약 터미널서버에서 특정연결을 만들었다면, 특정연결명의 포트번호도 변경하시면 됩니다.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\연결"PortNumber" 하위 키를 찾아
값이 (3389)의 16진수 값인 00000D3D인지 확인합니다. 10진수로 포트 번호를 수정하고 새 값을 저장합니다.


클라이언트 변경부분

1. 원격데스크톱연결 프로그램에서 127.0.0.1:xxxx 와 같이 접속한다.
2. 커넥션파일을 이용할경우 노트패드에서 "Server Port=3389"를 "Server Port=xxxx"로 변경
3. 웹 ActiveX 클라이언트는
     1. 터미널서비스웹디렉토리\TsWeb 폴더의 Default.htm 파일을 찾습니다.
     2. 메모장이나 다른 텍스트 편집기에서 Default.htm을 엽니다.
     3. "MsRdpClient.AdvancedSettings2"로 시작하는 항목을 찾습니다.
     4. 이러한 항목 뒤에 아래의 행을 추가합니다.
         MsRdpClient.AdvancedSettings2.RDPPort = xxxx

2007/10/23 01:24 2007/10/23 01:24
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Windows 2003 서버의 터미널서버 접속 하기


작성:
 불나방


윈도우 2003 서버는 설치될 때 기본으로 터미널 서비스를 어플리케이션 모드로 설치를 하는데 이렇게 되면 접속하는 장치당 최초 접속으로 부터 90일간의 사용기간을 주고 이 기간이 지나면 접속이 안되게 된다. 물론 돈을 주고 라이센스를 사야하는 경우가 발생하는 것이다. 라이센스 비용이 만만치 않으므로 서버 관리자만 서버를 리모트로 접속할 경우라면(대부분 이러한 경우일 것이다.) 터미널 서버 설치 모드를 관리자 모드로 바꾸어야 한다.


제어판>시스템>원격


에 들어가서 이 컴퓨터의 원격지원을 허용함을 체그하면 관리자 모드로 전환되고 2개의 관리자 세션은 라이센스 없이 영구히 사용할 수 있다. 접속할 사용자를 원격 사용자 그룹에 추가하는 것도 잊지 말자.


일단 접속이 안되는 상태로 되면 설정을 바꿀수가 없게 되는데 이럴때 IDC로 달려가지는 말고 서버에 접속한 적이 없는 다른 사람컴퓨터로 접속하면 일단 접속이 되므로 이를 이용하여 설정을 바꾸면 된다.

2007/10/23 01:20 2007/10/23 01:20
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

JavaScript Base64 Encode / Decode

// This code was written by Tyler Akins and has been placed in the
// public domain.  It would be nice if you left this header intact.
// Base64 code from Tyler Akins --
http://rumkin.com

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
  
   return output;
}

function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}
function encode64Han(str) {
  return encode64(escape(str))
}
function decode64Han(str) {
  return unescape(decode64(str))
}

2007/10/12 20:47 2007/10/12 20:47
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

텍스트 큐브 1.5.x 표지( cover ) 글목록 갯수 조절하기.

2007.09.05.추가 - 텍스트큐브 센터의 '표지' 항목에 글 목록 수를 조절하는 옵션이 있군요.. 0.0
                         왜 지금껏 보지 못한거지?

텍스트 큐브 1.5에서 표지 기능을 활성화 하면 기본적으로 10개의 글목록이 보여 진다.
이 갯수를 조절하기위해선 약간의 소스 수정이 있어야 한다.

우선, index.xml 의 <coverpage> 항목을 보면
 <coverpage title="Recent Posts" handler="MT_Cover_getRecentEntries">
      <params>
        <param>
          <title xml:lang="en">Show recent posts per list</title>
          <title xml:lang="ko">출력될 최근 글 수</title>
          <name>entryLength</name>
          <type>int</type>
          <default>10</default>
        </param>
   </params>
 </coverpage>

위와 같이 글목록 출력 갯수를 조절하는 entryLength파라메터에 대해 default로 10개가 정의 되어 있다
그런데 왠일인지 이 값을 수정해도 여전히 글 목록 갯수는 10개만 나온다.

index.php 소스를 보면
18 번째 라인 부근에
 $entryLength = isset($parameters['entryLength'])?$parameters['entryLength']:10;

와 같이 index.xml에 기술된 값이 있으면 그걸 쓰고 아니면 디폴트로 10개 가져오기로 정의되어있는데도 작동
을 안하는것이다. 파라메터 전달 과정 중에 약간의 오류가 있나보다.

그래서 최후의 수단으로 $entryLength 변수를 사용 하는곳에 숫자를 바로 고쳐 보기로 했다.
index.php의 48번째 라인 근처를 보면
$entries = DBQuery::queryAll("SELECT e.blogid, e.id, e.userid, e.title, e.content, e.slogan, e.category, e.published, c.label
  FROM {$database['prefix']}Entries e
  LEFT JOIN {$database['prefix']}Categories c ON e.blogid = c.blogid AND e.category = c.id
  WHERE $multiple e.draft = 0 $visibility AND e.category >= 0
  ORDER BY published DESC LIMIT $entryLength");

과 같이 쿼리가 정의 되어 있을 것이다.

여기서 $entryLength 를 내가 원하는 숫자로 고쳐썼다.  이렇게..
$entries = DBQuery::queryAll("SELECT e.blogid, e.id, e.userid, e.title, e.content, e.slogan, e.category, e.published, c.label
  FROM {$database['prefix']}Entries e
  LEFT JOIN {$database['prefix']}Categories c ON e.blogid = c.blogid AND e.category = c.id
  WHERE $multiple e.draft = 0 $visibility AND e.category >= 0
  ORDER BY published DESC LIMIT 14");

이제 원하는 갯수만큼의 목록이 출력 된다.
이게 플러그인 자체 문제인지 내 쪽 환경 설정에 기인한 문제인지 잘 모르겠다.
2007/09/04 13:21 2007/09/04 13:21
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 2007/09/04 18:50
    Cover 최근 글 수 마음대로 조정하기 Tracked from WWW.BELLBLOG.COM
  1. 켁.. BELLBLOG님 그런 간단한 방법이 있었군요..
    저는 왜 표지를 적용 하면서 그런 옵션을 보지 못했을까요.. T.T 이런 바부팅이..

  2. 허걱.. 소스 수정하면 나중에 업그레이드할 때 어려워질 수 있어서 잘 안하는데...
    그런데 전 메타사이트 때문에 RSS 표시 개수를 100까지 늘렸다는 ㅋㅋ..

  3. Melling님 알고보니 옵션이 있더라구요..
    ( 옵션으로 조절하게 다시 원래대로 돌려 놨습니다. )
    조절 옵션이 플로그인 쪽에 없어서 없는 줄 알았어요..
    rss 100개 라니.. 어떤 성격의 메타사이트인지 궁금해 지네요. ^^

  4. 블로그코리아에요, 여기는 RSS 전체를 불러오더군요,
    그런데 올블은 스팸방지로 최대 17개 까지라 소용없고...

  5. 안녕하세요. 이 문제로 몇주째 고민해서 매일 밤 이렇게 해결책을 찾아 헤메이고 다니다 여기까지 왔습니다.

    혹시 아신다면 조금만 도움을 받고 싶어요~~

    다중블로그를 운영중이구요. TC 1.5.2 를 사용중인데요.
    가장 최근의 업데이트까지 했구요

    커버 페이지를 플러그인 환경설정에서 단일사용자로 지정하면 잘되요...근데 다중사용자로 체크하고 저장하면... 메인페이지가 그냥 하얗게 나와요~ 암말도 없구요... 하얗게~~~~~~~~

    어떤 분은 GD가 작동안해서 그랬었다고 하는데, 제 서버는 작동을 하거든요.... 도대체 이유를 모르겠습니다.

    좀 도와주세요. ㅠ.ㅠ

    감사합니다.~

  6. Justin님 회사 워크샵으로 이제야 글 남기신거 봤습니다.
    블로그 방문 해 보니 이미 해결하신거 같더군요.
    도움 못 드려 죄송해요.

  7. 감사합니다.

    근데요... -..- 해결된게 아녀요...

    위에서 말씀드린것처럼, 메타 플러그인의 설정에서

    단일사용자용으로 놓으면 지금처럼 잘 보입니다.

    근데 이걸 "다중사용자" 용으로 바꾸면

    바로 모든 페이지가 하얗게만 나와요....

    해결이 전혀 안 됐어요.... -..-

    혹시나 어떻게 해야 하는지 아시나요 ??? -..-

    다시 한번 감사하구요,

    어떤 아이디어라도 좀 도와주세요~

    감사합니다.

UTF-8로 설정한 MySQL 4.1 이상 Tomcat 5.0 이상에서 JDBC접속 URL설정

회사의 인턴에 대한 교육을 목적으로 정말 오랜만에  Tomcat , MySQL 조합으로 예제 코드를
작성 하고 있었다.

톰캣이랑 MySQL의 조합을 마지막으로 사용 해 본게 톰캣 3.X 시절의 일이다.

현재의 조합은 톰캣 5.0 + MySQL 4.1.22 에 utf-8 로 캐릭터 셋을 설정 한데다
서블릿 필터와 JDBC 드라이버 버전업으로  예전의 그 악몽같던 JDBC 한글문제는 사라졌을거라 믿었다..

그러나 왠걸.. 코드를 작성하고 돌려보니 java 클래스 단까지는 한글이 잘 전달 되는데
db에 인서트 하는데 아래와 같은 익셉션이  발생...

MysqlDataTruncation 발생..


이때의  connection url은
jdbc:mysql://localhost:3306/subby_test?useUnicode=true&characterEncoding=UTF8

이 문제는 꽤 간단하게 해결 할 수 있었다.
url에 Truncation 옵션을 false 로 주어서 해결 할 수 있었지만 여전히 DB에는 한글이 안들어가고 있다.

생 ㅈㄹ을 다 해 본다. JDBC버전 별로 봐꿔가며 컴파일과 실행.. 그옜날 썼던 new String() 하며
캐릭터셋 바꿔보기..  그래도 안된다..  그만큼 짜증도 밀려오고..

잠시 머리를 식히고 다시 차근차근 생각 해 봤다. 우선 톰캣의 JSP와 MYSQL의 캐릭터 셋은
분명히 utf-8인 상황이다.  그럼 순순히 안 될리가 없지않나?  역시나 JDBC 드라이버 문제인가?
JDBC드라이버를 최신의 안정버전인 5.0.6 으로 선택하고 JDBC 메뉴얼을 살피기 시작했다..

그러다 찾게 된 희망의 한 단락
Using the UTF-8 Character Encoding - Prior to MySQL server version 4.1, the UTF-8 character encoding was not supported by the
server, however the JDBC driver could use it, allowing storage of multiple character sets in latin1 tables on the server.
Starting with MySQL-4.1, this functionality is deprecated. If you have applications that rely on this functionality, and can not upgrade
them to use the official Unicode character support in MySQL server version 4.1 or newer, you should add the following property
to your connection URL:
useOldUTF8Behavior=true

쌍.. 장난하냐? 장난해? 이놈은 뻑하면 옵션을 바꿔...
답은 useOldUTF8Behavior 에 있는 듯했다.. 적용하고 돌려보니 깔끔..
이런 옵션이야 메뉴얼에서 찾는게 정석이긴 하지만, MySQL은 버전이나 서버 설정에 따른 옵션 변화가
너무 많아 난감한 경우가 한두번이 아니다..

아~ 내 3시간은 어딜가서 하소연 하나...

최종적으로 문제를 해결한 utf8 과 MySQL JDBC Driver 5.0 에서의 DB URL은
jdbc:mysql://localhost:3306/subby_test?useUnicode=true&characterEncoding=UTF8&jdbcCompliantTruncation=false&useOldUTF8Behavior=true
2007/07/10 11:49 2007/07/10 11:49
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 2008/05/12 16:56
    애드널의 생각 Tracked from addnull's me2DAY
  2. 2011/06/30 14:53
    Mysql 저장시 한글문제 Tracked from IT 잡동산
  1. Blog Icon
    카우보이

    헐 감사합니다. 저두 이것저것 삽질해보다 저위에 올리신 옵션쓰고나서야 제대로 출력이 되네요

    2시간 삽질

  2. Blog Icon
    Sean

    Wow 덕분에 잘 해결했습니다.

브라우저별 DOM 과 innerHTML 수행 속도 비교

원문은 http://blog.naver.com/ungahah/40032248947
입니다. 블로그 원문에는 이미지가 보이지 않아서 부득이 편집 하게 되었습니다.

Gleb Lebedev 라는 사람이 아주 재미난 실험을 해서 소개 한다.
그는 간단한 페이지를 통해(구글메인같은) 자바스크립트의 성능테스트 를 하고 싶어했다.
그리고 그 결과를 오페라9, 파이어폭스 1.5, 익스플로러 6 에서 비교했다.

테스트는 이렇다.
그는 구글 메인페이지전체(라고해봐야 몇줄 안되지만..)를 innerHTML 속성과 document.createElement를 이용해 생성하는 함수를 짰다.(소스 )
그리고 그걸 1초동안 반복해서 실행한다.
결국 초당 구글 메인페이지를 몇번이나 만들어 낼수 있느냐를 테스트 한거다.

브라우저별 DOM 과 innerHTML 수행 속도 비교

이미지 출처 : http://ajaxian.com/archives/benchmark-dom-vs-innerhtml


결과가 아주 놀랍다.
오페가 9.01 는 innerHTML로 돌리리때 1초에 1320번이라는 경의적인 수치를 보여준다!
요즘 한참 잘나가는 불여우에 비해서도 3배가 넘는 수치다.
자바스크립트처리 성능만 놓고 볼때는 왜 오페라가 3브라우저중 밀리는지 이해불가다.
IE6은 초라하기 그지 없다. 더군다나 32비트, 64비트 버전이 별만 차이가 없다. (IE 7.0이 출시  됬으니 따로 한번 해봐야겠다. ^^)

브라우저별 성능은 이쯤하고..

중요한건 DOM과 innerHTML과의 비교다.
createElementinnerHTML은 모든 브라우저가 가각 3배 가까이 차이가 난다.
왜 이렇게 차이나 나는 것일까?
createElement는 W3C에서 정한 HTML DOM을 다루는 표준방식이며 HTML의 요소를 객체로 접근도록 해서 프로그램을 좀더 프로그램답게 무언가 '짜고 있다는' 느낌이 들게 하는 반면,  innerHTML은 HTML을 몽창 문자열로 넘겨서 무언가를 '쓰고 있다는'느낌들 들게하는데  말이다.
하지만 이건 조금만 생각해보면 당연한 결과다.
위의 소스를 보면 알겠지만, innerHTML은 이 속성을 한번 호출하는 것으로 끝나지만,
createElement는 그렇지 않다. 개별 HTML 요소를 모두 생성하여 해당 style과 property 값을 넣어주어야 하고, 그걸 형태에 맞게 append를 시켜야 한다.
위의 구글 메인을 만들어내는데 createElement는 자그마치 69번이나 호출된다.
느린게 당연한거다.

결국 용도에 맞게 쓰는것이 중요하단 무미건조한 결론을 내릴 수 밖에 없다.
이런 테스트가 별 근거없이 개발자가 자신의 기호에 따라 한쪽에 편향하기 보다, 성능과 객체 컨트롤의 용의함을 잘 저울질 해서 적절히 쓸 수 있었으면 좋겠다.

p.s. Ajaxian 에 가서 Comment를 보면 사람들이 자신의 PC에서 테스트 한 다양한 결과를 볼 수 있다. ^^
2007/07/07 01:32 2007/07/07 01:32
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

애드센스 부정클릭 대비 방안

화니님의 마이센스 ( MySense ) ::
 http://adsensekr.com/
 http://wanny.tistory.com/396
 http://www.soonjin.net/128

애드로거( AdLogger ) ::
 http://www.engagestory.com/tt/217
 http://offree.net/541
 http://blog.iteach4u.net/dikafryo/entry/태터툴즈에-구글-ADSense-광고-플러그인부정클릭방지-AdLogger-v14-버전

2007/06/27 10:29 2007/06/27 10:29
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

로그인을 해야 글을 볼수 있는 곳에 애드센스를 달았다면. :: AdSense의 사이트승인 기능

일반적으로 비밀글/회원제운영 홈페이지에 달린 애드센스 광고는 크롤링을 할 수 없었습니다.
(크롤링을 할 수 없으면 수익 통계를 낼 수 없죠..)
이러한 문제를 해결하기위해 애드센스에 얼마전 새로운 '사이트 인증' 기능이 추가 되었습니다.

아래처럼 보고서에 들어가면 '오늘의 수입' 오른편에 새로운 '사이트 인증' 기능을 공지하고 있습니다.
에드센스 보고서

'애드센스 설정' -> '사이트 인증' 메뉴를 통해서도 똑같이 접근이 가능 합니다.

아래는 '사이트 인증' 메뉴 화면 입니다.
에드센스 사이트인증
이 페이지에서 로그인 정보를 기재 함으로써 공개된 페이지가 아닌 곳에 부착된 애드센스에 대한 크롤링을 수행 할 수있습니다.
2007/06/23 17:54 2007/06/23 17:54
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다