유명한 청록파 시인 조지훈 선생은 첫째, 술을 마신 연륜 둘째, 술을 마신 친구 셋째, 술을 마신 기회 넷째, 술을 마신 동기 다섯째, 술 버 릇 로 구분해 주도에 아홉개의 급과 단이 있어 총 18개의 경지가 있다 했습니다.
1) 불주(不酒): 술을 아주 못 먹진 않으나 안 먹는 사람. 2) 외주(畏酒): 술을 마시긴 마시나 술을 겁내는 사람. 3) 민주(憫酒): 마실 줄도 알고 겁내지도 않으나 취하는 것을 민망하게 여기는 사람. 4) 은주(隱酒): 마실 줄도 알고 겁내지 않고 취할 줄도 알지만 돈이 아쉬워서 혼자 숨어 마시는 사람. 5) 상주(商酒): 마실 줄도 알고 좋아도 하면서 무슨 잇속이 있을 때만 술을 내는 사람. 6) 색주(色酒): 성생활을 위하여 술을 마시는 사람. 7) 수주(睡酒): 잠이 안 와서 마시는 사람. 8) 반주(飯酒): 밥맛을 돕기 위해서 마시는 사람. 9) 학주(學酒): 술의 眞境을 배우는 사람(酒卒:주졸) 10) 애주(愛酒): 술의 취미를 맛보는 사람(酒徒:주도) 11) 기주(嗜酒): 술의 진미에 반한 사람(酒客:주객) 12) 탐주(耽酒): 술의 진경을 체득한 사람(酒豪:주호) 13) 폭주(暴酒): 酒道를 수련하는 사람(酒狂:주광) 14) 장주(長酒): 주도 삼매에 든 사람(酒仙:주선) 15) 석주(惜酒): 술을 아끼고 인정을 아끼는 사람(酒賢:주현) 16) 낙주(樂酒): 마셔도 그만, 안 마셔도 그만, 술과 더불어 유유자적하는 사람(酒聖:주성) 17) 관주(關酒): 술을 보고 즐거어 하되 마실 수는 없는 사람(酒宗:주종) 18) 폐주(廢酒): 술로 말미암아 다른 술 세상으로 떠나게 된 사람(涅槃酒:열반주)
부주,외주,민주,은주는 술의 진경,진미를 모르는 사람들이요, 상주,색주,수주,반주는 목적을 위하여 마시는 술이니 술의 진체(眞諦)를 모르는 사람들이다. 학주의 자리에 이르러 비로소 주도 초급을 주고, 주졸(酒卒)이란 칭호를 줄 수 있다. 반주는 2급이요, 차례로 내려가서 부주가 9급이니 그 이하는 척주 (斥酒) 반(反)주당들이다. 애주, 기주, 탐주, 폭주는 술의 진미, 진경을 오달한 사람이요, 장주, 석주, 낙주, 관주는 술의 진미를 체득하고 다시 한번 넘어서 임운목적(任運目適)하는 사람들이다. 애주의 자리에 이르러 비로소 주도의 초단 을 주도 (酒道)란 칭호를 줄 수 있다. 기주가 2단이요, 차례로 올라가서 열반주가 9단으로 명인급이다. 그 이상은 이미 이승 사람이 아니니 단을 매길 수 없다. 그러나 주도의 단은 때와 곳에 따라 , 그 질량의 조건에 따라 비약이 심하고 갈등이 심하다. 다만 이 대강령만은 확고한 것이니 유단의 살력을 얻자면 수업료가 기백만 금이 들것이요, 수행년한이 또한 기십 년이 필요한 것이다. (단 천재는 차한에 부재이다)
KYC의 이름만 빌린 Socket Wrench 세트이다. 24P정도면 충분하고도 남는다. 어차피 차량의 6각 박스 볼트를 풀기 위해 산거니까. 대만산/중국산은 싫고 대한민국이나 일본산/독일산이 좋다고 하는데, 저건 대만산이다. 그래도 KYC 의 이름을 달고 나오는 거니깐 괜찮겠죠. 렌치의 최고로 치는 고겐(KO-KEN)은 너무 비싸다. (최소 10만냥은 줘야 한다) 그래서 선택한게 KYC꺼. 29,900 (왠지 저가형 냄시가 풍기는 가격이다)
복스는 BOX 의 일본식 발음이다.
----
6각 볼트는 강한 힘으로 조여야 하는 곳에 사용하는 볼트이다. 이 볼트를 다루는 공구를 미국에서는 렌치(Wrench)라 하며 영국에서는 스패너(Spanner)라 한다. 여기는 우리나라 기준으로 썼다.
Open End Wrench(오픈 엔드 렌치)
Box End Wrench(박스 엔드 렌치)
Adjustable Wrench(몽키스패너) 나사를 돌려 여러가지 크기의 볼트를 다룰 수 있도록 만든 렌치. 볼트가 쉽게 망가지기 때문에 비추천
Socket Wrench 소켓을 이용해 다양한 크기의 볼트를 조절 할 수 있도록 만든 렌치. 다양한 작업이 가능하다.
필요해서 여기 써 놓는다. 혹시라도 잊어버릴까봐. 참고로 오라클 11 R2 부터는 아래 함수 대신 LISTAGG 를 사용할 수 있다.
create or replace type taggcat as object ( str varchar2(4000), static function ODCIAggregateInitialize(sctx in out taggcat) return number, member function ODCIAggregateIterate (self in out taggcat, value in varchar2) return number, member function ODCIAggregateTerminate (self in taggcat, returnValue out varchar2, flags in number) return number, member function ODCIAggregateMerge (self in out taggcat, ctx2 in taggcat) return number ); / create or replace type body taggcat is static function ODCIAggregateInitialize(sctx in out taggcat) return number is begin sctx := taggcat(null); return ODCIConst.Success; end;
member function ODCIAggregateIterate (self in out taggcat, value in varchar2) return number is begin str := str || ',' || value; return ODCIConst.Success; end;
member function ODCIAggregateTerminate (self in taggcat, returnValue out varchar2, flags in number) return number is begin returnValue := RTRIM(LTRIM(SELF.str, ','), ','); return ODCIConst.Success; end;
member function ODCIAggregateMerge (self in out taggcat, ctx2 in taggcat) return number is begin str := str || ctx2.str; return ODCIConst.Success; end; end; / create or replace function aggcat (input varchar2) return varchar2 parallel_enable aggregate using taggcat; /
실행예)
SQL> select NAME, NICKNAME from example; NAME NICKAME ---------- ---------- JAMES J' WINDY HANA WINDY JEN
SQL> select NAME, aggcat(NICKNAME) NICKNAMES from example group by NAME; NAME NICKAMES ---------- ---------- JAMES J' WINDY HANA,JEN