2. 필요한 파일을 UPLOAD.
TISTORY 관리자 페이지에 로긴해서, [ 스킨 ] / [ HTML/CSS편집 ] / [ 파일 업로드 ] 화면에서
필요한 파일을 모두 올린다.
필요한 파일은 압축푼 파일 중에 styles, scripts 디렉토리 밑에 있는 모든 파일이다.
올려진 파일을들 보면, images 디렉토리 밑으로 올라간 것을 알 수 있다.
3. TISTORY 스킨 파일 편집.
[ 스킨 ] / [ HTML/CSS편집 ] / [ HTML/CSS 편집 ] 화면에서 skin.html 파일에 내용을 편집한다.
밑줄에 아래의 내용을 추가한다.
위 내용 처럼 압축을 풀었을때 경로가 아닌, 파일이 올라간 images로 경로를 바꾸어야 한다.
두번째 "shThemeEmacs.css" 파일은 보여줄 테마를 지정한 것이다.
테마 css 파일을 이것저것 지정해보고 마음에 드는 것으로 결정하면 된다.
(사실 맘에 쏙 드는 것이 없었는데. Emacs 테마가 가장 나은 것 같다.)
동일한 방법으로 skin.html 파일 가장 하단 </body> 위쪽에 아래와 내용을 넣어 준다.
여기서 필요한 코드는 맨 밑줄 함수 실행부 이고, 그외 설정 부분이다.
stripBrs를 true로 설정하면, TISTORY 에서 자동으로 <br> 태그를 붙이는 걸 무시 할 수 있다.
4. TISTORY에서 글쓰기.
글을 쓸때에는 소스 코드가 들어갈때는 html 모드에서 글을 써야한다.
위와 같이 html 체크박스를 체크하면, html 모드에서 글을 입력할 수 있다.
소스 코드를 넣을때 아래와 같은 문법으로 넣는다.
<pre class="brush: sql">
CREATE TABLE CVS_COMMIT
(
SEQ NUMBER(10) NOT NULL,
USERID VARCHAR2(20) NOT NULL,
REG_DATE DATE DEFAULT SYSDATE,
PROJECT VARCHAR2(50) NOT NULL,
FILENAME VARCHAR2(500) NOT NULL
);
</pre>
소스의 내용은 <pre></pre> 태그 사이에 넣어주고, class의 brush 속성에 원하는 문법을 지정한다.
지정 가능한 문법은 아래와 같다.
ActionScript3
as3, actionscript3
shBrushAS3.js
Bash/shell
bash, shell
shBrushBash.js
ColdFusion
cf, coldfusion
shBrushColdFusion.js
C#
c-sharp, csharp
shBrushCSharp.js
C++
cpp, c
shBrushCpp.js
CSS
css
shBrushCss.js
Delphi
delphi, pas, pascal
shBrushDelphi.js
Diff
diff, patch
shBrushDiff.js
Erlang
erl, erlang
shBrushErlang.js
Groovy
groovy
shBrushGroovy.js
JavaScript
js, jscript, javascript
shBrushJScript.js
Java
java
shBrushJava.js
JavaFX
jfx, javafx
shBrushJavaFX.js
Perl
perl, pl
shBrushPerl.js
PHP
php
shBrushPhp.js
Plain Text
plain, text
shBrushPlain.js
PowerShell
ps, powershell
shBrushPowerShell.js
Python
py, python
shBrushPython.js
Ruby
rails, ror, ruby
shBrushRuby.js
Scala
scala
shBrushScala.js
SQL
sql
shBrushSql.js
Visual Basic
vb, vbnet
shBrushVb.js
XML
xml, xhtml, xslt, html, xhtml
shBrushXml.js
첫번째 컬럼이 문법, 두번째 컬럼이 brush에 지정할 속성 상수,
세번째 컬럼이 필요한 Javascript 파일로써 TISTORY에 UPLOAD되어 있어야 한다.
문법 뿐 아니라 추가 속성을 지정할 수 있는데, 아래와 같이 ";" (세미콜론) 로 구분한다.
php, asp, jsp 등과 같이 소스 코드안에 html이 포함되는 경우
html도 하이라이팅하고 싶으면 사용한다
smart-tabs
true
스마트탭 기능의 활성화 여부를 지정한다
(무슨 기능인지 잘 모르겠다)
tab-size
4
TAB 크기를 지정한다.
toolbar
true
툴바를 켜거나 끌 수 있다.
이제 TISTORY에서 깔끔한 코드를 볼 수 있다.
<주의 사항>
-. SyntaxHighlighter 3.0.83 버전에 버그가 하나 있다.
일부 코드에 대해 Line Number가 어긋나 보이는 경우가 있다.
한 Line 에 긴 코드가 포함된 경우 wrapped(자동줄바꿈) 처리를 하면서 잘못 처리하는 것 같다.
소스 코드를 무조건 올리지 말고, 적당히 줄바꿈 처리를 해주고 올리는 것이 좋다.
-. html모드에서 <pre></pre> 태그를 사용할 경우 소스 코드에 포함된 "<", ">"의 파싱을 잘못하는
경우가 발생하는 것 같다.
소스 코드를 올리기 전에 "<"를 "<"로, ">"를 ">"로 변환 해서 올리는 것이 좋다.
적용 패키지 작성을 위해 수정된 파일 목록을 추출 할 방법을 찾아 보기로 했다.
업무 때문에 소스 관리를 CVS 로 하고 있다. CVS의 단점은 개별 파일이력은 확인 할 수 있는데,
수정된 파일 목록을 뽑기가 쉽지 않다는 것이다.
구글링을 해보니 CVS에서 Commit 시점에 뭔가 처리할 수 있다는 것을 알았다.
먼저, CVS 서버에 접속해서 저장소의 CVSROOT 디렉토리를 보자
-rwxrwxr-- 1 cvs cvs 544 4월 22 09:23 checkoutlist
-rwxrwxr-- 1 cvs cvs 694 3월 21 2009 checkoutlist,v
-rwxrwxr-- 1 cvs cvs 882 4월 26 16:03 commitinfo
-rwxrwxr-- 1 cvs cvs 959 3월 21 2009 commitinfo,v
-rwxrwxr-- 1 cvs cvs 993 3월 21 2009 config
-rwxrwxr-- 1 cvs cvs 1192 3월 21 2009 config,v
-rwxrwxr-- 1 cvs cvs 602 2월 8 16:32 cvswrappers
-rwxrwxr-- 1 cvs cvs 801 3월 21 2009 cvswrappers,v
-rwxrwxr-- 1 cvs cvs 1025 3월 21 2009 editinfo
-rwxrwxr-- 1 cvs cvs 1224 3월 21 2009 editinfo,v
-rwxrwxr-- 1 cvs cvs 292081967 4월 29 18:14 history
-rwxrwxr-- 1 cvs cvs 1245 4월 21 11:32 loginfo
-rwxrwxr-- 1 cvs cvs 1367 3월 21 2009 loginfo,v
-rwxrwxr-- 1 cvs cvs 1151 3월 21 2009 modules
-rwxrwxr-- 1 cvs cvs 1350 3월 21 2009 modules,v
-rwxrwxr-- 1 cvs cvs 564 3월 21 2009 notify
-rwxrwxr-- 1 cvs cvs 763 3월 21 2009 notify,v
-rwxrwxr-- 1 cvs cvs 640 4월 25 12:43 passwd
-rwxrwxr-- 1 cvs cvs 649 3월 21 2009 rcsinfo
-rwxrwxr-- 1 cvs cvs 848 3월 21 2009 rcsinfo,v
-rwxrwxr-- 1 cvs cvs 879 3월 21 2009 taginfo
-rwxrwxr-- 1 cvs cvs 1078 3월 21 2009 taginfo,v
-rwxrwxrw- 1 cvs cvs 187 11월 10 17:15 val-tags
-rwxrwxr-- 1 cvs cvs 1026 3월 21 2009 verifymsg
-rwxrwxr-- 1 cvs cvs 1225 3월 21 2009 verifymsg,v
위와 같은 파일들을 볼 수 있는데..
여기서 commitinfo 란 파일이 CVS에서 Commit 하기 바로전에 실행되는 파일이다.
방향은 정해졌다.
작업 구성은 아래와 같은 순서로 하기로 했다.
1. CVS가 Commit 되는 시점에 파일명을 DB에 저장한다.
-> CVSROOT/commitinfo에 등록할 쉘 스크립트를 작성. 2. 저장된 DB를 조회할 간단한 WEB Page 제작
-> 평소 관심을 갖고 있던, jQuery를 이용.
[ 1. CVS가 Commit 되는 시점에 파일명을 DB에 저장한다 ]
commitinfo 파일에 아래와 같이 내용을 추가 한다.
$ vi CVSROOT/commitinfo
ALL /home/cvs/myproject/CVSROOT/cvscommitlog.sh
DB에 테이블을 생성 한다.
CREATE TABLE CVS_COMMIT
(
SEQ NUMBER(10) NOT NULL,
USERID VARCHAR2(20) NOT NULL,
REG_DATE DATE DEFAULT SYSDATE,
PROJECT VARCHAR2(50) NOT NULL,
FILENAME VARCHAR2(500) NOT NULL
);
* index는 REG_DATE, TO_CHAR(reg_date, 'YYYY/MM/DDHH24:MI'), USERID, PROJECT 를 걸었다.
jQuery에 관심이 생기면서, javascript 만으로 RSS 리더기를 만들어 보기로 했다.
jQuery가 워낙에 많은 Plugin들을 지원하고 있어서, rss Parser도 금방 찾을 수 있었다. jFeed 라는 것인데, 소스도 간단하고.. 복잡한 기능이 필요없는 용도로는 적당했다.
그런데, 예상치도 못한 문제가 있었다.
Ajax에서 다른 도메인의 페이지를 읽기 위해 proxy를 구현 해야 하는데..
셈플 소스에 포함된 것이 정상적으로 동작하지 않는 것이다.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
function roundTable(objID) {
var $obj = $("table#" + objID);
var s, r;
var y, x, MAX;
var w, h;
r = parseInt($obj.attr('radius'));
if (r == null || r < 1) r = 1;
else if (r > 6) r = 6;
MAX = r * 2 + 1;
$obj.before("<TABLE id='tmpRoundTbl'></TABLE>")
$("table#tmpRoundTbl")
.attr("cellSpacing", 0)
.attr("cellPadding", 0)
.append("<TBODY></TBODY>");
for (y=0; y < MAX; y++) {
$("table#tmpRoundTbl TBODY").append("<TR></TR");
s = Math.abs(y - parseInt(r));
for (x=0; x < MAX; x++) {
$("table#tmpRoundTbl TBODY TR:eq("+y+")")
.append("<TD></TD>");
w = '1px'; h = '1px';
if (x == 0 || x == MAX - 1) h = null;
else if (y == 0 || y == MAX - 1) w = null;
else if (r > 2) {
if (Math.abs(x - r) == 1) w = '2px';
if (Math.abs(y - r) == 1) h = '2px';
}
if (w != null)
$("table#tmpRoundTbl TBODY TR:eq("+y+") TD:eq("+x+")")
.css("width", w);
if (h != null)
$("table#tmpRoundTbl TBODY TR:eq("+y+") TD:eq("+x+")")
.css("height", h);
if (s == x || s == MAX - x - 1)
$("table#tmpRoundTbl TBODY TR:eq("+y+") TD:eq("+x+")")
.css("backgroundColor", $obj.attr('rborder') );
else if (x > s && s < MAX - x - 1)
$("table#tmpRoundTbl TBODY TR:eq("+y+") TD:eq("+x+")")
.css("backgroundColor", $obj.attr('rbgcolor') );
}
}
$("table#tmpRoundTbl TBODY TR:eq("+s+") TD:eq("+r+")").append( $obj );
}
</script>
<table id="ta" width="300" height="100" border="0"
radius="3" rborder="#999999" rbgcolor="#F8F8F8">
<tbody><tr>
<td valign="top">테스트입니다</td>
</tr>
</tbody></table>
<span>
<script>roundTable("ta");</script>
</span>
달은 하나뿐이다. 항상 익숙하게 보던 그 노랗고 고고한 달이다. 억새 들판 위에 말없이 떠오르고, 온화한 호수면에 희고 둥근 접시가 되어 떠돌고, 조용히 잠든 집의 지붕을 조용히 비추는 그 달이다. 만조의 물결이 한결같이 바닷가 모래사장으로 밀어 보내고, 짐승들의 털은 부드럽게 빛나게 하고, 밤의 여행자를 감싸안아 보호해주는 그 달이다. 때로는 예리한 그믐달이 되어 영혼의 살갗을 깍아내고, 초승달이 되어 어두운 고절(孤絶)의 물방울을 지표면에 소리도 없이 떨구는, 늘 보던 그 달이다.
こんな遠い町にも 夢を與えてくれる
코은나 토오이 마치니모 유메오 아타에테 쿠레루
이런 먼 도시에서도 꿈을 안겨주네
白い粉雪が降って 心に屆くよ winter song
시로이 코나유키가 훗테 코코로니 토도쿠요 winter song
하얀 눈송이가 내려 마음에 닿아요. winter song
廣い空に向かって 兩手高く廣げ
히로이 소라니 무캇테 료-테 타카쿠 히로게
드넓은 하늘을 향해서 양손을 높이 펼쳐.
白い粉雪が優しく 心に屆くよ winter song
시로이 코나유키가 야사시쿠 코코로니 토도쿠요 winter song
하얀 눈송이가 부드럽게 마음에 닿아요. winter song
こんな遠い町にも 夢を與えてくれる
콘나 토오이 마치니모 유메오 아타에테 쿠레루
이런 먼 도시에서도 꿈을 안겨주네
白い粉雪が降って 心に屆くよ winter song
시로이 코나유키가 훗테 코코로니 토도쿠요 winter song
하얀 눈송이가 내려 마음에 닿아요. winter song
廣い空に向かって 兩手高く廣げ
히로이 소라니 무캇테 료-테 타카쿠 히로게
드넓은 하늘을 향해서 양손을 높이 펼쳐.
白い粉雪が優しく 心に屆くよ winter song
시로이 코나유키가 야사시쿠 코코로니 토도쿠요 winter song
하얀 눈송이가 부드럽게 마음에 닿아요. winter song
こんな遠い町にも 夢を與えてくれる
콘나 토오이 마치니모 유메오 아타에테 쿠레루
이런 먼 도시에서도 꿈을 안겨주네
白い粉雪が降って あなたに屆けて winter song
시로이 코나유키가 훗테 아나타니 토도케테 winter song
하얀 눈송이가 내려 당신에게 전해져요. winter song
강한 Visual 팝이 대세였던 '98년 Acoustic한 사운드와 맑은 음색으로
기계적인 음향 효과 하나없이 보컬과 피아노 두가지 만으로 사람들의
마음을 사로잡은 1977년생 여성듀오 Kiroro.
맑고 편안한 아름다운 목소리와 밝은 내용의 가사, 청량감이 느껴지는
피아노 음색으로 데뷔이래 수많은 히트곡을 냈고, 이제 두 멤버가 모두
한 아이의 엄마가 되어 잠시 활동 중단에 들어가며 팬들을 배려해 만든
키로로의 [Kiroro - best: Kiroro의 가장 좋은 노래를 모았습니다] (2006.
04) 앨범입니다. 행복에 가득찬 키로로 두 사람이 그들의 행복을 듣는
이에게 나누어주고 있는 것 같은 느낌을 주는 멋진 노래 선곡합니다
Proc*c를 이용해 Sub Program(Procedure or Function)을 호출 하는 방법에 대해 설명한다.
자료를 되져보면 대부분의 샘플 코드가 Procedure 로만 되어 있다.
여기서는 Function을 호출 해 보기로 한다.
사실 호출 방법은 거의 비슷 하다.
- 컴파일 방법
PL/SQL 구문을 사용하기 때문에 proc 컴파일 옵션을 주어야 한다.
그런데, 컴파일 옵션을 주면 다른 Pro*c 구문에서 컴파일이 안되는 일이 발생을 한다.
따라서, PL/SQL 구문을 사용하는 소스는 별도 .pc 파일로 때어 내어서 별도 컴파일을 해야한다.