Aug 282012
 

최근의 대부분 웹페이지는 UTF-8을 사용하고 있습니다.

예전에 만들어진 EUC-KR 페이지를 UTF-8로 변환하는 경우가 많이 있습니다.
이런 경우에 일일이 파일을 converting을 해야 하는데요. 간단한 스크립트를 이용해서 편리합니다.

[smlee@localhost ~]# cat conv.sh
#!/bin/sh
 
set -x
iconv -f uhc -t utf-8 $1 > /tmp/a
RET=$?
 
if [ $RET -eq 0 ]; then
        mv /tmp/a $1
else
        echo "FAIL : $1";
fi

위의 스크립트를 ls -1 > 1.sh 로 만든 다음에 vi에서 1.sh를 치환해서 모든 파일에 대해서 conv.sh를 실행하도록 아래와 같이 설정하면 빠르게 치환이 가능합니다.

[smlee@localhost ~]# cat 1.sh
sh conv.sh index.php
sh conv.sh main.php
Aug 282012
 

웹페이지를 개발할때 간단한 글쓰기에서 HTML이 지원되는 에디터를 사용하기 위해서 찾은 오픈소스입니다.

http://ckeditor.com/

사용법도 아주 간단하며, PHP 모듈도 지원이 되어, 설치 후에 아래와 같이 PHP 코드를 추가해주면 됩니다.

content라는 textarea name으로 된 부분을 HTML 에디터로 변경해줍니다.

    <?php
    include $_SERVER["DOCUMENT_ROOT"]."/ckeditor/ckeditor_php5.php";
 
    $CKEditor = new CKEditor();
    $CKEditor->basePath = '/ckeditor/';
    $CKEditor->replace("content");
    ?>
Aug 282012
 

최근에 워드프레스에 관심이 있어서 소스를 보고 있습니다.
그리고 공개되어 있는 플러그인을 다운받아서 보고 있습니다.

PHP 소스를 보다 재미있는 함수를 하나 발견했습니다.
php를 사용하다 보면 열거형 배열을 사용하는 경우가 많습니다. 이런 경우 해당 열거형 배열의 이름이 긴 경우에는 간단한 변수명을 적는 것만으로도 소스의 양이 길어지게 됩니다.

하지만 php에서는 function 안에서 local 변수가 외부에 영향을 미치지 않으므로 function 안에서 열거형 배열을 extract 함수를 사용하여 변수명을 간결하게 사용하면 프로그램 가독성도 높이고, 간편하게 코딩이 가능해집니다.

<?php
 
/* Suppose that $var_array is an array returned from
   wddx_deserialize */
 
$size = "large";
$var_array = array("color" => "blue",
                   "size"  => "medium",
                   "shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");
 
echo "$color, $size, $shape, $wddx_size\n";
 
?>
Aug 282012
 

모바일전자정부는 최근에 진행했던 프로젝트로 마무리가 되지 않던 부분을 미리 적용하면서 여러가지 경험을 했던 부분입니다.

국가에서 행정망 서비스를 모바일로 하기 위해서는 모바일전자정부 프레임워크를 사용해서 접근을 하도록 하고 있습니다.

그래서 행망과 연계해서 서비스를 할 목적으로 개발할 앱들은 꼭 처리를 해야 합니다.
초기 개발에서는 앱을 우선 만들고 이후에 모바일전자정부 프레임워크를 적용하면 됩니다.

관련해서 개발을 하면서 필요한 몇가지 부분을 메모하고자 합니다.

1. 모바일전자정부 런처 설치 및 모바일 GPKI 인증서 설치
==> 지금은 어떨지 모르겠지만, 설치하기가 쉽지 않습니다. -_-

2. 모바일앱 등록
==> 개발을 하기 위해서는 Hello World 와 같은 초기앱을 하나 올려둬야 합니다.
이를 위해서는 모바일전자정부 런처가 사용하는 동일한 인증서를 받아야 합니다. 그래서 Hello World 앱을 해당 인증서로 서명해서 올려서 앱을 등록해야만 합니다.

3. 앱다운로드 및 설치
==> Hello World 앱을 스마트폰에 넣은 다음, 개발할 소프트웨어를 같은 인증서로 패키지를 한 다음에 스마트폰에 넣어서 설치를 하면 기존 프로그램을 덮어쓰게 됩니다. 그러면 재등록을 하지 않고도 런쳐를 통해서 프로그램을 구동할 수 있습니다.

이런 형식으로 개발을 하게 되며, 이렇게 진행이 되다 보니 통합 디버거툴을 사용하기 힘듭니다. Eclipse 기반에서 Android 앱을 개발을 하면서 DDMS의 LogCat을 정말 많이 활용하게 되며, DDMS의 파일 업로드 기능을 정말 잘 활용하게 됩니다. ^^

프로그램에서 주의할 점은 아래와 같습니다.

1. 프로그램 유형
일반적으로 아이콘으로 실행하는 방식이 아니고 다른 프로그램에 의해서 실행이 되는 경우이기 때문에 Manifest 파일이 약간 특이합니다. 자세한 부분은 메뉴얼에 있으며, 안드로이드의 경우에는 특정 퍼미션을 추가해주셔야 합니다. (이 부분이 메뉴얼에 없어서 상당히 고생을 했습니다. -_-)

2. 상당히 많은 메뉴얼이 제공되지만, 실제로 사용하는 것읗 몇개 프로그램만 사용하면 됩니다.
간단하게 1개의 jar 파일을 추가하고, 호출하면 별로 할일이 없습니다.

3. 데이타 연동 부분
중계서버를 통해서 연계를 해야 하며, 런처에 있는 VPN을 통해서 연결이 해야 합니다.
중계서버 연동 방법과 사용법은 메뉴얼이 잘되어 있지만, VPN 사용법이 나와있지 않아서 고생을 했던 부분입니다.

이상입니다.

Aug 282012
 

svn을 사용하면서 파일을 삭제할때 유용한 옵션 2가지를 소개합니다.

1. svn del –keep-local
svn 레파지토리에서만 파일을 제거하고, 해당 파일을 로컬에 남겨두는 기능입니다.

2. svn del –force
rm 명령어를 통해서 파일을 삭제한 경우에 svn 레파지토리에는 삭제가 안되어 있는 경우 위의 명령어를 통해서 로컬 레파지토리에 삭제를 할수 있습니다. 최종 반영은 commit 할때 반영이 됩니다.

[smlee@localhost ~]$ svn help del
delete (del, remove, rm): 파일과 디렉토리를 버전 관리 대상에서 제거합니다.
사용법: 1. delete PATH...
        2. delete URL...

  1. PATH에 있는 모든 파일, 디렉토리들을 다음 커밋에서 제거하도록
     스케쥴합니다. 커밋되지 않은 파일과 디렉토리는 --keep-local 옵션을
     사용하지 않는한 즉시 작업사본에서 제거됩니다.
     PATH가 버전 관리 대상이 아니거나 그러한 파일을 포함하는 디렉토리라면
     --force 옵션을 주어야만 삭제됩니다.

  2. URL로 지정된 아이템들은 저장소에서 즉시 삭제됩니다.


옵션:
  --force                  : 강제로 실행합니다
  -q [--quiet]             : 아무것도 출력하지 않거나, 요약 정보만 출력합니다
  --targets ARG            : ARG로 주어진 파일 내용을 옵션으로 추가합니다
  -m [--message] ARG       : 커밋 로그 메시지를 지정합니다
  -F [--file] ARG          : arg에서 로그 메시지를 읽습니다
  --force-log              : 로그 메시지의 유효성을 확인하지 않습니다
  --editor-cmd ARG         : arg를 외부 편집기로 사용합니다
  --encoding ARG           : 값을 arg에 해당하는 문자코드로 취급합니다
  --with-revprop ARG       : set revision property ARG in new revision
                             using the name[=value] format
  --keep-local             : 작업사본의 경로를 유지합니다

글로벌 옵션:
  --username ARG           : arg를 접속에 필요한 사용자 ID로 사용합니다
  --password ARG           : arg를 접속에 필요한 패스워드로 사용합니다
  --no-auth-cache          : 인증 정보를 캐시에 저장하지 않습니다
  --non-interactive        : 대화식 사용자 입력을 기다리지 않습니다
  --trust-server-cert      : accept unknown SSL server certificates without
                             prompting (but only with '--non-interactive')
  --config-dir ARG         : arg로 지정된 디렉토리에서 사용자 구성화일을 읽습니다
  --config-option ARG      : set user configuration option in the format:
                                 FILE:SECTION:OPTION=[VALUE]
                             For example:
                                 servers:global:http-library=serf
Plugin from the creators of Brindes :: More at Plulz Wordpress Plugins