2007년 12월 31일 월요일

각종 serial

============================================================================================
------------------------------------------Appz----------------------------------------------
============================================================================================
* UltraEDIT
s/n : H0ZEH-G4C8G-L8Z6L-S1i3J
* LeapFTP 2.7.2 [592]
Name : MackOi DBC
Serial : 214065-3729758965
Name : Nemesis
Serial : 214065-3210003090
* LeapFTP 2.7.3
Name: JayT [CrackZA]
s/n: 214065-19695529665
* FireBurner v2.1.7we
Name : Double A Ron
Serual : 126782838
* Ahead Nero Burning ROM v5.5.7.2
Serial : 1508-1737-9712-6146-1424-2585
* Ahead Nero Burning Rom v5.5.7.8
Serial : 1507-2729-5087-3370-1857-7001
* Ahead Nero Burning Rom v5.5.8.2
Serial : 1502-1000-0177-0447-5560-3573
1502-0001-0008-0488-4424-9831
* Ahead Nero Burning Rom v5.5.9.0
Serial : 15059-97661-26678-46384-0182
* Winzip 8.1 (c)
Name: iMp@MANTiZ
Serial: 9A1F0EF8
* HyperSnap-DX v4.20.00
Reg. Key:
RGD41P007605:FNqpBFc4RO4esq/MvajyfGWpyNyBLbUjKwz0jo7oLPCI+/PoUuzl+w:
* HyperSnap-DX v4.40.01
SN:
RGD41P011569:GkxKfMkn1zzrnqvs+onUl5WzUDfV+a3r6EC0178t9cz0ev24noHNcw:
* mIRC v6.01 (c)
Name : kakaka
Code : 3358-352886
* RZ Split 2002 v4.01
Serial : 58629918
* ServU v4.0.0.4
Reg. Key:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAA0XVDzwQJwIQCFJlYUxJc1R5BFJlYUw=
* Serv-U.3.0.0.17.Professional.Edition
Reg. Key:
6dYwuCzKYyiSYQm0Hlp0OmDivgW8pyxAM2ZMLSpgg9Ywu+psehNIYwi0Ex4bTweO33ac5V4vRxJZXk8MhblFzGyrF1z1DWbWfzZaVAWW
* Serv-U.v2.5k
Reg. Key:
PwHx1nH5gr6,kakaka,home
* WinISO v5.3.0.125
Name : Wu Chia Hsuan
Serial : B9EDA3326B574719D67268E9339320519E80ACD5ECDFA87F
* Winamp All version
Name : kakaka
Serial : 96181093
* Real.Player.v.8.Plus.Korean.with.DFX.5.303
S/N : 1601-06-0010 , 1356-04-4068 , 0301-83-4661 , 1605-36-8178
* CDSpace4.1 (c)
Name:Bean Inc
Serial:SF5782-9A57-002543
* Virtual Drive v7.0 (02/01/26)
Serial : VDP700020999755
* BlackICE Defender v2.5.cg
WinNT2k license Key [ server ]
4F68D72-RS-C47FE
Win9x license Key [ defender , NT2k, too ]
64063A0-RS-E4596
* Opera 6.01
w-bTYUT-EJbjn-uBCzm-8WJYW-zndFL
w-sWcmF-fcspf-X4eJU-rRfbf-W4TLW
w-Mfjjz-8Uvhj-dPQnQ-Ri8xk-BR4xs
* Padus DiscJuggler v3.50.830
Serial : CDJ3-CD1A-CCCC-A473-FU
* V3Pro.2002.Deluxe_PKOiSO
CDKEY : 35940030-13001029
* Power DVD 3.0
CD-key : DV92050374601533
* NAMO_WebEditor_4.0
Serial :140103-001752
CD-KEY:200280 CTU080 2FBMBW9 ZTHLNC7
* NAMO_WebEditor_5.0-TSZiSO
Serial : sapzilmama
140102-001569
3vxp73 c2p959 2fnxdxg tds90a6
150103-003989
46BHFZ 5TEFKF 6FWXYF0 BXHFG70
* CyberLink.PowerDVD.XP.v4.0.Deluxe-SHOCKiSO
CD-Key: DX5936897N425377
* DVDit! 2.5 Professional Edition (C) SONIC
Serial#BBB6X6VDB2C3WM82Z
* Ulead VideoStudio v6.0
CD-Key: 81102-86000-13939442
* vmware 3.0 for linux
6818X-84WD1-01KDK-3JN9X
* HWP 2002 Serial + Patch later Serial
S/N:15192343-001502454
15194543-001177737
15192541-000000051
15192343-002588501
* 3D Mark 2001
Name : Twice
Serial : L5J4FCSD1NRKJPK1MLM6
* winrar 3.0 final
Name: again_at
Pass: superwarez
* CloneCD V. 3.3.4.1
Name: Omega
Key: 1257259-1-4157999212-1285185615
Username : .: DtG^POLuX :.
Key : 0FFAA1AD7A595EF5E73237AF29509F46587F955
D22CEA61F94CA93A0F87C7B0FB2CDAF0406EB
A53570E9A0A50AA211C224B36D403CF4EFBB44
03DE8ABBB3
* clonecd 4.0.0.1
Name: Randal Dudley Dudley
s/n: 1619103-1-0045531653-3485491080
* CloneCD 4.0.1.3
Name: Victory
s/n: 0F1F7F1827B2237FC431C2852524A0AC31224E375F56453819E3E6ED8014510F0964990F44C6347421DE5F70B924C4819E9737A491607663E6D917D1249D
* CloneCD 4.0.1.3
s/n: 1528916631-2-2225435462-1603894703
* Clone 2000+
Name: registrierte version
s/n : 101F34B3A214D820C2556D4CBB2EEBF67FB3222241F2CB7D795A78DA851DF1BEB10F0DA15B7323E6E44A04CA5F4BC2468077FADB3D6EB4C08E7E4136D1001BBF
* CDrwin all version ?
USERNAME: Oddity Sins
COMPANY/EMAIL: oddity.is.giving.it@fukk.org
UNLOCK KEY: C6588D94-32B5BED4-0E03A2EA-A650B2E7
CHECK KEY: 60083F73-F4ED3340-3CB61C3E-A853100D
* CDspace4
Name:Bean Inc
Serial:SF5782-9A57-002543
* Windows XP HomeEdite
FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8
* ServU 3.17 pro
licence : 6dYwuCzKYyiSYQm0Hlp0OmDivgW8pyxAM2ZMLSpgg9Ywu+psehNIYwi0Ex4bTweO33ac5V4vRxJZXk8MhblFzGyrF1z1DWbWfzZaVAWW
* CloneCD 4.0.1.9
name: Edu x Mar?
Serial : 1818247038-2-4110538150-3216547361
Private user
1067FA8A8E27166D81125759CD45C7697E7C2A4DDAFF132474985763ECAC2ABEB10FF3078BB123E6E44A04CA5F4B011F7FACC2761504B4C0D16A6800D1001BBF
* SyGate Version: 4.2 805
s/n: 443615C0-04FDE87F RegCode: 68DCC598
* SyGate Version: 4.1
s/n: 44102930-03622C77 RegCode: BB0D8F58
* SyGate Version: 4.0 Build 727
Name: (Anything) s/n: 44D46441-3127CFBA Code: BCF3D581
* Sygate Office Network
Version: 4.1 Build 742
s/n: H7400000-2500000D Code: 2RX7DZD1
* V3 2000 Deluxe
Serial : 35730040-18132526
* IYAGI 2000
Serial : 900-2555-12460 800-6081-10285
* CD Space 4.1
Name : Bean Inc
Code : SF5782-9A57-002543
* EditPlus All Copy
Name : kstorm77
Licence Key : 10A24-F71A0
* AbsoluteFTP v1.9.6
User name : kakaka
Company name : home
Serial-Number : 02-19-031643
Issue date : 07-20-2002
Key : 14B55E9E0588EED07FD1EA9BDD41A17A
* AbsoluteFTP v2.0.1 and v2.0.3
Name : Wu Chia Hsuan
Company : [keep it empty]
Serial Number : 02-20-026108
License Key : 6D83 825A C6ED 63D0 5148 0792 18D3 4C3F
Issue Date : 01-23-2002
* Quick Time 6
Name: BodhiSattva
Company : Prajna
Code : NLC8-D8LU-PA6K-CZR8-5678
* Boland Delphi 6.0
CD Key : z9j8-pum4n-c6gzq
Auth Numb : rw2-7jw
* Norton Ghost™ 2002 Korean Edition
BB2566D65E2D
* Patition Magic 7
Serial Number : PM700ENSP1-11111131
* PowerStrip All Version
Name : Asia-Kazan
Reg Code : 472B911047FB6A8838F7B7168547934718E7CA73
* FarStone.Virtual.Drive.v7.0.Personal.Edition Release Data: 01/17/2002 Disks: 2.88M X 10 Supplier: ROR Team
Serial #: VDP700020999755
* Roxio Easy CD Creator v5.02
Serial #: P-7TGQ4-G06CM-N5G1L
* Roxio Easy CD Creator v5.02 Platinum
Serial #: G-332NB-MGJNH-ZFVPB
* CD Space (c)
Name : daippang
S/N : S-TMG-412D36141187
============================================================================================
--------------------------Adobe Systems Inc (c) + Graphic Systems---------------------------
============================================================================================
* Adobe After Effects Pro Bundle v5.5
Serial : EWW470R1001999-030-259
* Adobe Acrobat 5
Serial : AEB100R3498245-291
* Adobe Premiere 6
Serial : MBF500B7205104-998
* Adobe Photoshop 5.5
Serial : PWW400R7110035-487
PWW400R7106337-339
* Adobe photoshop 6.0
PWW600R7105467-948
pww400r7106337-339
EXM100XX399999999-956
* Adobe photoshop 7.0
Serial: 1045-1275-2546-0411-5466-5760
1045-1209-6738-4668-7696-2783
* Adobe.PhotoShop.v7.0.Full.Retail-FooZiSo
Serial Key : 1045-1209-6738-4668-7696-2783
1045-0009-2130-3302-1733-9518
* Adobe Illustrator 9.0
Serial : ABW900R7102722-694
* Adobe Illustrator 10
Serial: 1034-0021-7155-9289-4954-2867
1034-1003-4400-0000-1115-2040 (100%?)
* Adobe LiveMotion v2.0 (c) Adobe Systems Inc.
Serial : 1038-1122-4403-2805-2740-1096
* Adobe GoLive 5
serial : GJW500R4561433-718
GJW500R5781060-948
* Adobe PageMaker 6.5 Plus Key
Serial : 03W650R3483293-397
03W652R3818820-549
* Adobe PageMaker 7.0
Serial : 1039-1121-2998-7586-7388-7545
* AUTOCAD 2002 *RETAIL* (C) AUTODESK CORPORATION *ISO*
Serial : 400-12345678 CD-KEY : T4ED6P
* Corel Painter v7.0 (c)
S/N : PF70CRD-2564458-SZH
* MacroMedia Studio FLASH 5
sn : FLW500-03143-77238-80660
* MacroMedia Studio Flash MX
Serial : WSW600-59791-91721-99978
* Macromedia Dreamweaver MX
DWW600-54622-26755-01760
* Paint_Shop_Pro_7.xx (c) Jasc Software Inc.
KeyGen_Crack - http://milklike.com.ne.kr/Paint_Shop_Pro_7.xx_Keygen_Crack.exe
============================================================================================
---------------------------------------MicroSoft (c)----------------------------------------
============================================================================================
* Visual Studio .Net :
T7KXG-78HXC-JYRF8-72VH2-6DM7M
D64GG-GXY6T-V6FTR-WCPBB-2YDYB
* Visual Source Safe :
111-1111111 Or 335-3353356
* MicroSoft office XP
FM9FY TMF7Q KCKCT V9T29 TBBBG
BBH2G D2VK9 QD4M9 F63XB 43C33
MP4F9 W6C8V HTCCT T7M7R Y7K3Y
DT3FT-BFH4M-GYYH8-PG9C3-8K2FJ
* MicroSoft Windows 98 Retail
K4HVD-Q9TJ9-6CRX9-C9G68-RQ2D3
D8PZY-F7H7D-M8D6M-DY4KC-FD83D
KHHYQ-BFCFC-X99F9-DPR8Y-F93P8
* MicroSoft Windows 98 Second Edition Retail
VD4WG-Y998T-3MGWX-GPW2Q-3QVC8
K362Y-XQZHT-DWKMK-WGR9J-Q7376
J6BMM-4X366-C6C4R-QVGYK-G8J8T
* MicroSoft Windows 95
Key : 11197-oem-0021551-17769
* MicroSoftWindows 95 OSR2
Key : 25598-oem-0036921-66810
* MicroSoft Win2000 Professional - Full Version
TQ4CV-XPJR3-KPG3Q-HGH74-BMYWT
VXKC4-2B3YF-W9MFK-QB3DB-9Y7MB
WFX8X-J8FHX-RY234-RBPPB-QZWBM
F2T26-BMK6H-69QX8-FYV8D-TY4CM
* MicroSoft Windows 2000 Pro ISO CD-KEY
XFD2W-W7VH8-MVC47-KY7DQ-P8Y4J
* MicroSoft Windows 2000 WoW ISO CD-KEY
MW497-8CYYK-BGKXX-CYPQ7-9GQFJ
T78TX-XXMMJ-DTDWX-YBRBW-Y43XJ
F6PGG-4YYDJ-3FF3T-R328P-3BXTG
Professional : DDGDH-CP87H-CCRWF-GGQXM-XGJGJ
Server & Adv.Server : H6TWQ-TQQM8-HXJYG-D69F7-R84VM
* MicroSoft Windows Millennium Edition
RBDC9-VTRC8-D7972-J97JY-PRVMG
* MicroSoft Windows Millennium Edition Pro
CD-Key: 975-4769754
CD-Set: 236-075-240
* Microsoft Visio 2002
Serial : F8BFX-2B8M6-X373J-TBQ8M-K3C76
DY6WQ-D3FYG-V89BY-8KPG9-8YW9M
* Microsoft Visio 2002 Pro
Serial : dy6wq-d3fyg-v89by-8kpg9-8yw9m
* Windows XP
Professional Version OEM-DELL : XJM6Q-BQ8HW-T6DFB-Y934T-YD4YT
Professional Volume License : FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8
Home Edition CDkey : BQJG2-2MJT7-H7F6K-XW98B-4HQRQ
h6twq-tqqm8-hxjyg-d69f7-r84vm
R4CPB-8HX6M-HW29Q-78W3G-84VMB
Professional CDkey : CDWVP-GBJRG-PDJRG-Y6CMB-HCGG3
FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8
Home Edition UpGrade CDkey : YJ3RW-4F36W-HJVPH-6TK4H-JDDBV
* MS Office XP Developer Edition-Korean
CD-Key: FM9FY-TMF7Q-KCKCT-V9T29-TBBBG
============================================================================================
-------------------------------------------Gamez--------------------------------------------
============================================================================================
* Diablo II - Expantionset (install key)
CDkey : 4P4H-EDRZ-GMBH-6C7G
* Diablo II - Original (install key)
CDkey : T6DR-K6JW-GHVR-24VW
H424-4D8T-DZCJ-KCC8
* Sub Command - Sea Wolf
Serial : 0901-1315206-2102812-3248
* 2002 Fifa WorldCup KoreaJapan Ea Sports (c)
Serial : 5501-2376301-3049573-5562
* Throne Of Darkness Korean.Editon
NAB7-LAB6-SYF4-MED6-3984 NAB5-FAB2-PAF8-MED7-7684 NAB3-MAB6-SYF2-LED2-5784
* Return to Castle Wolfenstein (c) Activision
CD-KEY : CLAL-A7WJ-DTSJ-WARP-88
* Zanzarah
Serial : 03IG-4HGQ-O4NO-0ID0-25VT
* StarCraft (formality key)
2965-76293-2679
2965-73204-2966
2965-81234-2205
2965-84224-2421
3407-15018-4758
2965-79201-2776
3000-45096-4424
2965-78246-2532
2965-76236-2977
3105-36071-4953
3000-56069-4273
3105-27084-4302
3105-28014-4229
1713-47070-2229
* WarCraft3 (install key)
CD-Key : 493FMS-HV6A-R88YC1-LURB-0N3OJY
A3A719-714U-QPV6DD-KYHO-W800SV
* Medal Of Honor
Serial : 5000-0000000-0000000-5068
1439-8808778-3837107-8612
* 대물낚시광3
Key : 68577598kkusww
* 대물낚시광2
Key : 039584985218
* C&C Red Alert 2
CD-Key : 030662-996358-284356-5161
* Black & White
CD-Key : 0901-3324366-4702210-2081
* Come on baby
CD-Key : 0491-4776-1596-9666
* Kingdom under fire
CD-Key : F52D-AB3G-O1PD-OGL3
0000-0000-0000-0057
0300-EFG4-MV5J-6CF2
* Nox Korean
CD-Key : 018258-105982-121947-3949
* Nox (c)
CD-Key : 018210-528488-068193-2183 018291-828961-075634-2771
* Delta Force Land Warrior (c) NOVALOGIC
CD-Key : N5E3-YXH2-G983-9WYB-B3ZS
* Dune 3
CD-Key : 036642-256734-246754-5204 038785-895894-757575-9011
* Soldier Of Foutune 1 (c) Crave Entertainment
CD-Key : ben2-bac7-buz6-jad3-9742
* Soldier Of Foutune 2 (c) Crave Entertainment
CD-Key : 3Z4J-J3PP-K848-EWPK-1F
* Heroes of Might and Magic 3 Korean (c) The 3DO
CD-Key : WFCG545234QB
* Might and Masic 8 Korean (c) The 3DO Company
CD-Key : Serial : kghe742255mr
* Half life
CD-Key : 7661-82255-0911
* Half life mission pack
CD-Key : BUX3-DUR9-PYL6-SAM7-3643
* Half life Counter Strike
Key : 5848-13619-9304
* C&C 2 Tiberian Sun
Key : 000722-000722-000722-7575 632743-649243-367637-8372
* Vampire
Key : RAC2-SAL2-GAT3-RAD3-6545
* Dark Reign 2
Key : gad6-teb4-cup9-pap6-5529
* Simcity 3000 Korea
Key : 99BF501390WQ
* Simcity 3000 Unlimited
Key : 2121-0600600-0600600-4731
* Mirror War
CD-Key : all typing ' 1 '
* NBA Live 2001 (c) Ea Sports
CD-Key : 2001-0020601-0010978-6694
GAC7-REB8-TUX6-DAC2-7833
* NFL 2001 (c) Ea Sports
CD-Key : 1500-6610360-164330-0243
* Quake 3 Arena
CD-Key : 7dl12cptba3srhjgw
* Quake 3 Team Arena
CD-Key : TSBH-7CCG-DPWP-B2LT-84
* Swat 3
CD-Key : BAC2 BAB2 BAB2 BAB2 2352
* Shogun
CD-Key : 1600-0052410-0052410-6424
* Ground Control
CD-Key : RAC2-RAL2-CAS3-RAD3-3542
* Sims Original
CD-Key : 104744-387493-404928-3618
100967-451813-321808-7936
* Sims Expantion set [별난세상]
CD-Key : 8663-4966712-3945768-1934
* Sims Expantion set [신나는 파티]
CD-Key : 2500-4395311-5673470-3818
2500-5312965-4737337-0810
* Sims Expantion set [핫 데이트]
CD-Key : 2500-6511277-7317654-5562
* Sims The Vacation
CD-Key : 2500-0820483-0090123-2613
* Sims Cats & dogs
CD-Key : 2500-8095711-7780658-5302
* Homeworld
CD-Key : NUR2-XYX5-TAR9-ZES5-6997
* Homeworld Expantion set
CD-Key : GAF6-CAB4-SEX5-ZYL6-2622
* Jurassic Wars 2
CD-Key : 1500-3202255-2068109-2932
* Operation Flash Point
CD-Key : M3CZ-P5186-XNEYL-CL0T7-513NT or all typing ' 1 '
* Rainbow SiX Take down
CD-Key : 6F4619FN1CBG66FX 2001-0020601-0010978-6694
* Super Bike 2001
CD-Key : 1500-4288423-2982915-3163
* Sacrifice
CD-Key : PRIZ-MNO1-QEK1-NX2T
* Ea Sports - MADDEN2003
CD-Key : G8TA-H5VA-RZHV-T9QN
* Ea Sports - Fifa2003
CD Key : EN4L-B6UQ-7573-H2WH
4QVU-Q4ZR-JUXA-VP7H
* Unreal Tournament 2003
CD-Key : LYR22-RZ743-A9D7T-CNNEN
* MOH Expansion-SpearHead ( medal )
Use 5000-0041793-4850040-4016 for CDKEY.
* SimCity 4, SimCity 4000
CD-Key : DGS4-KX8A-ECRL-HFMT
* Age of Mythology
CD-Key : P3HM4-WDM27-662XW-9BPTV-CFVMQ
* NBA Live 2003 Kor
CD-Key : EAPY-7TKA-RAPA-UCED
CPJN-FYY3-K8J3-HJN5
WMBC-Q7AU-NKBU-YWRV
* Harry Potter and the Chamber of Secrets
CD-Key : 1501-0514490-6731402-3052
* 퇴마전설2
CD-Key : T1-ABB83-28324

2007년 12월 30일 일요일

어? 어떻게 알았어?

저녁을 먹는 중에 익현가 갑자기 "아빠는 맨날 잠만 자~" 라고 하는것이었다.

익현: 아빠는 맨날 잠만 자.
엄마: 애가 하는 얘기 들었지?
아빠: 익현인 맨날 땡깡부려 맨날 울어..
익현: 어? 어떻게 알았어?
ㅋㅋㅋ 아 너무 이쁜 익현이..

2007년 12월 5일 수요일

나의 귀환과 우리 가족들

역시 사람은 가정이 있어야 한다. 중국 위해로 5일간 출장을 다녀왔다 일이 많아서 좀 더 연기 하려고 했지만 가족이 너무 보고 싶었다. 2틀 일정으로 왔다가 길어져 5일을 있었던 지라 예기치 않은 이별에 아기들이 아빠를 너무 기다린다고 해서 못 다한 일은 다름에 또 오는 한이 있어도 집으로 가기로 했다.

위해 공항에서 애기들 줄 초콜릿을 사고 1시간 가량 남은 시간 연금술사(코엘료)를 읽었다 마침 읽은 부분이 주인공이 사막의 오아시스에 도달해 사막의 여자와 운명적 사랑에 빠지는 부분이었다, 자기는 사막의 여자이기 때문에 다른 사막의 여자들 처럼 떠나간 남자를 기다릴 수 있다고 행복하게 우리의 사랑은 사막의 오아시스 처럼 변치 않을 것이라고, 나를 만난게 운명이듯 여행을 계속 하는게 운명이라고, 그렇다 나도 돌아올 약속을 했었고 우리의 가족들은 사막의 오아시스처럼 나를 기다릴 것이다, 이렇게 생각을 했다.

공항에 내려 집에 가는 길이 어찌나 더디고 멀게 느껴 지는지, 아이들 생각에 가슴이 두근거렸다. 역시나 서울은 교통 체증이 장난이 아니었다 중국에서 휑한 도로를 다니다 서울에 오니 깨끗한 거리와 밝은 조명에 왠지 고향에 온 기분 이었다.

집 앞에서 마트에 잠시 들렸는데 집사람과 장모님을 우연히 마주쳤다, 항상 그렇게 느끼지만 동반자란 말이 참 기분이 좋다, 인생이란 여행길에 외롭지 않게 신이 내게 주신 동반자 우린 연인이자 친구이자 멘토라고 할까 여하튼 오래 되었지만 애틋한 사이이다.

드디여 현관을 열고 들어서자 혜승이가 미친듯 춤을 추며 뛰어 든다. 가뿐히 들어 올려 안아 주었다 볼을 부비며 "사랑한다"는 말을 했다, 지도 고개를 끄덕이며 기분 좋은 뽀뽀를 해 주었다. 안타깝게 익현이는 너무 곤히 자고 있었다. 깨워도 일어나지 않을 정도로 간만에 장모님이 주시는 밥을 먹고 간만에 편한 잠자리에서 편히 잤다.

아침에 익현이가 문을 열고 들어오더니 나를 안아 주면 "아빠 같아~" 그러면서 엄마에게 뛰어 갔다 오더니..다시 안아주고 "아빠 맞아~~" 라고 하는것 아닌가..눈물 날 것 같았다.

흠 또 일이 생겼군....여하튼 가족이 있어 너무 행복하다.

2007년 11월 29일 목요일

scp sample

scp class_E300.php pimz8:/home/ezadmin/public_html/3pl/class/
scp class_E300.php pimz8:/home/ezadmin/public_html/3pl/class/

[ ] 의 개수

preg_match_all("|[\[](.*)[\]]|U", $macro, $matches);

        // 매크로 케이스 체크
        if ( count($matches[0]) > 1 )
        {
                $macro_case = 1; // ex) <packs>[product_name][options][qty]
                $arr_macro = $matches[1];
        }

2007년 11월 28일 수요일

재고 상태 정의

접수 상태인 상품의 개수,

실 재고: 배송 기준으로 실제 창고에 있는 상품의 개수
출고대기: 실재고 + 송장 뽑은 건들(출고 예정 수량)
가 재고: 송장 출력 + 미배송 상태의 건들을 모두 포함한 건

2007년 11월 12일 월요일

날짜 연산....관련

두 날짜 사이의 차를 연산
  intval((strtotime("2005-01-10")-strtotime("2005-01-02"))/86400)    =>     8

strtotime 사용...
    strtotime("+3 day")

2007년 11월 2일 금요일

swapClass() 요거 재미남

# css 설정
<style type="text/css">
  .roll {
        background-color: #7f7f7f;
        color: #3366cc;
  }

  .over {
        background-color: #3355cc;
        color: #3366cc;
        cursor: hand;
  }

</style>


# html에서 사용
OnMouseOver="swapClass(this, 'over')"
OnMouseOut="swapClass(this, 'roll')"

# javascript 설정
 function swapClass(obj, cls) {
        obj.className = cls
   }

2007년 10월 31일 수요일

[jquery] input을 위한 parameter만들어 주기

//  사용
 params = build_params( "#mail_menu .search_form", params );

                $.get("xxx.htm",  params,  
                        function(data){    
                              alert ( data )
                        }
                );


  //===================================
  // 전송해야할 form의 내용 만들어 줌
  // date: 2007.10.1
  function build_params( obj , params)
  {
        // params가 없을 경우
        if ( !params )
                var params = {};

        // input 값을 검색해서 입력
        // parameter list
        //
        $( obj )
                .find("input[@type=text],option[@selected],input[@type='hidden']")
                .each( function() {
                        params[this.name || this.parentNode.name || this.id] = this.value
                        
                } )

        return params;
  }

query한 결과를 table에 넣기

예제:
insert into aa ( id )
         select user_name as id from user;

>>-INSERT  INTO--table_name--+-----------------------+---------->
                             |    .-,-----------.    |
                             |    V             |    |
                             '-(----column_name-+--)-'

                .-,-----------.
                V             |
>--+-VALUES--(----+-literal-+-+--)-+---------------------------><
   |              +-NULL----+      |
   |              '-DEFAULT-'      |
   +-select_statement--------------+
   '-DEFAULT VALUES----------------'


table 생성

create table Q1_00_Sales
   (product char(30), month char(5), dollars dec(7,2));


값 입력




insert into Q1_00_Sales (product, month, dollars) select prod_name, month, dollars from sales natural join product natural join period natural join store where qtr = 'Q1_00' and city like 'Los Gatos%'

2007년 10월 30일 화요일

buffer를 사용해 출력하기

ob_start를 call해서 output buffer를 생성한다.
buffer를 종료하는 방법은 2가지가 있다.
ob_end_flush()를 사용하는 방법과 ob_end_clean()을 사용하는 방법이다.
ob_end_flush()를 사용할 경우 그동안의 print결과를 모두 출력한다.

ob_end_clean()을 사용할 경우 결과를 출력하지 않고 buffer의 내용을 삭제 한다.

open된 buffer는 스크립트가 종료될 경우 자동으로 end_flush된다.

<?php
    ob_start
();
    print
"Hello First!\n"
;
   
ob_end_flush
();

   
ob_start
();
    print
"Hello Second!\n"
;
   
ob_end_clean
();

   
ob_start
();
    print
"Hello Third!\n"
;
?>


결과
Hello First!
Hello Third!

2007년 10월 29일 월요일

[pattern] 숫자 리스트 중 마지막의 문자 제거

// 마지막 문자 제거
        $pattern = "/(\D+)$/";
        $replace = "";
        $transno_list = preg_replace( $pattern, $replace, $transno_list );

2007년 10월 27일 토요일

6살 먹은 딸애가 아빠 테테테텔~~하길래 뭔가 했네.

[궁녀] 머리 아프다, 이게 뭔 영환가?

아직도 머릿속엔 풀리지 않은 생각의 실타래가 얼기설기 꼬여 있다.

대체 희빈과 월령이 자매라는 것이 의미하는게 무엇인가?
옥진이는 월령과 한 방을 썻으며 월령이 옥진이 양반으로 부터 받은 연애 편지는 무엇을 의미 하는가?

정렬은 무엇때문에 미쳤는가? -> 월령의 영혼이 귀신이 라는것을 보여 주기 위함인가?

영화 마지막에 궁녀 복장을 하고 있던 월령은 대체 무엇인가?

감찰 상궁은 애초에 모든것을 알고 있었던 것인가?

천상궁과 다투던 희빈은 마룻바닥으로 왜 끌려 들어갔는가?

월령의 시신이 있던 방에 들어왔던 사람은 누구인가?

천령이 방을 뒤지다 누군가에게 얻어 맞는데 누구로 부터 습격을 당한것인가?

대비를 죽인것은 누구인가?

마지막 장면에 천령과 희빈이 왜 손에 상처가 있는것인가?

가끔씩 스쳐 지나는 검은 구름의 정체는 무엇인가?

마지막에 처형되는 궁녀는 누가 바꾼것인가?

아 풀리지 않는다 풀리지 않아....그냥 다 귀신이 그랬어~ 이러고 말 것인가?
아 뭔가 뭔가 뭔가 뭔가?

풀리지 않아...머리속이 복잡해~ 그냥 해결하기 어려운 문제들을 여기저기 널부러 놓고 나한테 다 풀어내라..답은 없다~ 이러고 말 것인가?


베두인 족..

사막의 유목민, 어찌 그 처럼 척박한 땅을 토대로 살아올 수 있었을까? 그들은 모두 인내심이 뛰어나고 조용한 사람들 일 것 같다. 사막에서 욕심을 내 봐야 얼마나 갖을 수 있겠으며, 유목을 하는데 짐이 많아 무엇하리..그들의 영혼은 밝고도 밝을 것이다.

네이버에서 따온 정말 재미없고 딱딱한 정보를 붙여 보면
아라비아 반도를 중심으로 중근동, 북아프리카의 사막·반사막 일대에 사는 아랍계 유목민이다. 바다위의 집합명사 바두 또는 구어복수형 바다윈이라는 아라비아어를 유럽인이 사투리로 발음하여 베두인이 되었다. 대부분 목축을 하고 있으며 겨울 우기에 는 사막지역으로 이동하며 다니다가 여름 건기에는 경작지역으로 되돌아간다. 전통적으로 농경을 위시한 다른 육체 노동을 천시 해 왔으며 정치적·경제적 발달로 제 2차 세계대전 이후에는 대부분이 정착생활을 하게 되었다. 1950년대에 사우디아라비아와 시 리아는 이들의 영토를 국유화했으며 요르단은 염소 목축을 극히 제한했다. 그 후 베두인족 목축민과 정착 농경민 사이에 토지 사용을 중심으로 한 갈등이 심화되었다. 전통적인 베두인족은 그들의 생존기반이 되는 동물의 종에 따라 구별될 수 있다. 가장 위 세가 높은 집단은 낙타 유목민으로서 요르단,시리아,이집트,이라크의 농경지역 주변에 주로 살고 있다. 그 밑의 서열에 속하는 집단은 양,염소,유목민으로서 요르단, 시리아,이라크의 농경지역 주변에 주로 살고 있다. 소유목민은 주로 남아라비아와 수단에 서 볼 수 있는데 여기서는 바카라(또는 바가라)족으로 불린다.

제 1차세계대전 후에 베두인은 그들이 이동하는 지역정부의 통제에 따르게 되었다. 이에 따라 베두인족 내부의 반목과 변경부락 에 대한 습격이 사라지게 되고 평화적인 상업적 관계가 자리잡게 되었다. 특히 제2차 세계대전 이후부터 군대복무와 건설노동 참 여가 점차 일반화되고 있다. 근년에는 상품경제의 물결에 휩쓸려 트럭등이 낙타를 대신해 가고 있어 급변하고 있다. 한편 오늘날 사우디아라비아를 비롯하여 여느 아라비아 제국에서나 베두인 정착화 정책이 취해지고 있다

지리적 위치
아라비아·이라크·시리아·요르단 지역에 살면서 아랍어를 사용하는 유목민족이다. 중동지역 전체 인구에 차지하는 비중이 작은데도 지역적으로는 중동지역 대부분을 차지하고 있다.

정 체 성
종 족 명 : 베두인 (Bedouin)
0주요언어 : 아랍어 (Arabic Hassniya)
주요종교 : 이슬람교
부수종족 : 아랍족(94.12%), 곱트족(5.82%), 기타(0.06%)

사회구조
가족 구조 : 대가족제도
권위/통치/규칙 : 부계혈통, 외혼제, 일부다처제
종 교
토속종교 : 이슬람
종교의식/ 개념 : 전국민은 어떤 형태로든 종교를 가지고있으며 하나님의 존재를 믿지 않는 사람이 없으 며 종교가 국민정서에 크게 영향을 주고있음 이슬람은 평화라 는 의미이며 이 평화는 신에게 절 대 순종함으로서 얻어지는 것으로 믿고있 음. 이 종교는 사회의 정치,종교, 법률, 윤리,일상생활 등 모든 영역을 관할하 는 포괄적인 종교임.

영적감수성 : 우주의 모든 현상을 신의 뜻으로 받아들이는 숙명론적인 경향이 강하여 때로는 심지어 자신의 잘 못을 자기의 탓보다는 신의 의지로 돌리기도 함.

명 절
삼무나심 : 매년 3,4월이 되면 약 50일간 계속되는 캄신이라는 모래바람이 부는데 있는 아파트의 창틈을 잘 닫아도 모래먼지가 집안을 뒤덮는 시기이며 바로 이러한 모래바람이 끝나는 날 음식을 준비하여 야외, 공워, 강가등에 나가서 신선한 공기를 마시며 하루를 보내는 명절임
아스르 사나 히즈라야 : 이슬람력으로 신년 1월1일을 기념하는 날
이둘피뜨르 : 라마단 단식이 끝나고 3일간 계속되는 명절
이둘 아드하 : 메카순례기간 동안 꾸란의 5행중의 하나인 자선을 실천하기 위해 양을 사서 도살 한 후 이웃과 가난한자들에게 나누어 주는 축제기간이며 이슬람의 가장 큰 명절중의 하나임.
라마단 : 이슬람력의 9월에 해당하며 모하멧이 계시를 받은 달임. 라마단은 한달간은 해가떠서 질때까지 일체 먹지도 않고 마시 지 않으며 단식의 금욕생활을 지속하며 해가지면 오후6시, 밤 11-12시경, 새벽 4시경 세차례에 걸쳐 식사를 함

[포르토벨로의 마녀] 사랑이란...

헤런 라이언이란 사람은 아테나를 사랑하고 있다. 그의 사랑은 뭔가 보통 사랑이라고 해야 할까? 아테나는 초월적인 감정? 감각? 무얼까? 어찌해 아테나는 인간 보편적인 능력을 초월하게 되었을까? 여하튼 초월적인 존재인데 라이언은 아직 보통 사람 평범한 사람이다. 그는 그 사랑을로 인해 고통을 겪는다. 그를 보며 느낀다 사랑이 가장 소중하고 중요하다고 하지만 과연 그 사랑이 우리에게 주는것은 무엇인가? 결국 사랑은 아픔만을 주는것이 아닌가? 대체 무엇을 얻기 위해 사랑을 하는것인가? 타인을 소유하고자 하는 욕망이 사랑인가? 여하튼 나와 마찬가지로 헤런 라이언도 보통 사람들 처럼 생각하고 아파한다.

불쾌 했다. 항상 느끼는 것이지만 그녀에게 이용당한다는 생각을 지울 수가 없었다. 그 순간 이렇게 말 하고 싶었다. '가버려. 그리고 다시는 내앞에 나타나지 마. 당신을 알게된 순간부터 모든게 지옥 같았어. 그냥 날 포옹하고 입맞춤하고 내 곁에 머물겠다고 말해줘. 하지만 그런일은 절대 없을것 같군.
이 얼마나 보통 사람의 생각인가..200% 공감했다. 너무 궁금했다 아테나가 무슨 답을 할지..

왜 녹음기를 꺼버린거죠?
짧은 순간 나는 천국과 지옥, 반발과 복종, 차가운 이성과 파괴적 감성사이에 머물렀다.
아직도 모든것은 혼란스럽다.
나는 당신을 사랑해요, 인간으로서 당신이 원하는 방식이 아니라, 신성한 불꽃이 원하는 방식으로 당신을 사랑해요. 어머니는 우리의 행로에 천막 하나를 세워두셨어요. 그곳에 기거하는 우리는 우리가 감정의 노예가 아니라 그 주인이라는것을 이해하죠.

나는 유배된 두 영혼이 사막에서 만나 서로 사랑하듯 당신을 사랑해요. 우리 사이의 육체적 관계는 없겠지만 우리의 열정과 사랑만은 헛되이 버려지지 않을 거예요. '어머니'가 당신의 가슴에 사랑을 일깨워 주셨듯.

[포르토벨로의 마녀] 대장장이의 말

아테나의 스승인 에다가 자신의 스승을 만나서 그 스승에게 들은 이야기의 일부다, 이 부분은 아침에 일어나서 한 번 자기전에 한번 기도문구로 쓰고 싶을만큼 마음에 든다. 하지만 난 기도하는 삶을 살진 않는다. 아직은...

제련되지 않은 철이 대장간에 도착하면 나는 그걸 가지고 자동차 부품이나 농기계, 가재도구를 만듭니다. 지옥같이 뜨거운 불 아래 벌겋게 될 때까지 쇠를 달굽니다. 그런 다음 쇳조각이 원하는 모양이 될 때까지 가장 무거운 망치로 내리 칩니다. 그러고 나서 그걸 찬물에 담그면 쇠가 비명을 질러대고 대장간은 수증기로 자욱하게 됩니다. 물건이 완성될 때까지 이것을 반복하지요.

가끔 손 안에 들오온 쇠 중에 이런 과정을 견디지 못하는 것도 있어요. 고온과 망치질 그리고 찬물 담금질을 과정을 견디지 못 하고 도중에 금이 가는 겁니다. 그런 것들은 절대 좋은 보습이나 축이 될 수 없죠. 그러니 대장간 입구에 쌓인 고철더미에 던져버리지요.

이야기의 끝은 이렇다.

"신이 나를 역경의 불길 속에 밀어넣고 있다는 걸 나는 압니다. 나는 삶이 내리치는 망치질을 견뎌왔어요. 그리고 가끔씩은 쇠를 담금질하는 물처럼 내가 차갑고 감정없는 인간처럼 느껴집니다. 하지만 내가 드릴 수 있는 기도는 이것뿐입니다. '신이여', 내 '어머니'시여 제가 당신이 바라는 모습이 될 때까지 저를 버리지 마옵소서. 당신께서 원하신다면 최선이라고 여기시는 어떤 수단을 쓰셔도 좋습니다. 다만 저를 영혼의 고철더미에만은 두지 마소서..."
저도 견디겠습니다. 절대 포기하지 않겠습니다...신이시여..어머니시여~

2007년 10월 26일 금요일

Dynamic library 설치

1. Module 설치

2. php환경 설정
/usr/local/php/lib/php.ini 를 open함

Module이 설치된 Directory설정
extension_dir = "/usr/local/php/lib/php/extensions"

Module 설정
특정한 디렉터리위치에 대한 정보는 셋팅하지 않는다
extension=json.so

3. apache 설정
/usr/local/apache2/modules 에 extension 파일을 넣어 줬음 원래 이렇게 하는게 아닌것 같지만 그냥 그렇게 했음 귀챦음..ㅋㅋ

apache2의 httpd.conf에 이런놈이 있긴 하네...좋네~
LoadModule php5_module          modules/libphp5.so

글면 단가? 이렇게 간단한데 왜 메뉴얼을 못 찾았을까? 제길...너무 쉬워서 아무도 안 알려 주나?

[php-json] 설치

다운 받았지..
http://aurore.net/projects/php-json/


앞축을 풀어야 함
root계정으로 들어가서 냅다 압축을 풀었음
# tar -jxvf php-json-ext-1.2.1.tar.bz2

쓰여진 대로 설치함
./configure
make
make install


* configure시 php-config가 없다고 하는 경우가 있다.

./configure --with-php-config=/usr/local/php/bin/php-config


extension=json.so 를 php.ini / php.d에 설정해주라고 하는데 어떻게 하는거지?

간단한 예제 작성
<?
$val = array("abc" => 12,
             "foo" => "bar",
             "bool0" => false,
             "bool1" => true,
             "arr" => array(1, 2, 3, null, 5),
             "float" => 1.2345
            );
$output = json_encode($val);
echo $output."\n";

?>
~            

작동 안됨
Unable to load dynamic library './json.so'

json.so 를 /usr/local/lib 로 가져다 넣음
php.ini에
; Directory in which the loadable extensions (modules) reside.
extension_dir = "./"
extension_dir = "/usr/local/php/lib/php/extensions"

extension=json.so 를 셋팅 해 줌

오에~
dk
결과:
php json.php
{"abc":12,"foo":"bar","bool0":false,"bool1":true,"arr":[1,2,3,null,5],"float":1.2345}

unpack 옵션들

TAR, Unpacking Packages


There are packages in many different formats and I thought you would like to know all the different options for unpacking them:


.tar.gz
CODE
$ tar -xvzf package_name.tar.gz

( x= extract v=verbose z=(un)compress f=file )


.tgz
CODE
$ tar -xvzf package_name.tgz



.tar.z
CODE
$ tar -xvzf package_name.tar.z



.tar.bz2
CODE
$ tar -jxvf package_name.tar.bz2

( j=bzip2 )


.gz
CODE
$ gunzip package_name.gz



.bz2
CODE
$ bunzip2 package_name.bz2

[누비라] 이런 샤바 이래서 끽끽 거린건가?

http://www.cbs.co.kr/nocut/show.asp?idx=652132&Reff=naver



누비라랑 레간자가 이렇다네..썅..
내 차도 끾끽 거리던데 이런거 아냐?

[JSON] Javascript Object Notation

// 데이터 공유를 위한 간단한 표현방식 정도라고 얘기 할 수 있다.
var myJSONObject = {"bindings": [
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
    ]
};

// Members can be retrieved using dot or subscript operators.
 myJSONObject.bindings[0].method    // "newURI"
 

// JSON text를 object롤 변경하기 위해서는 eval() function을 사용해야 한다.
// 보통 ajax에서 json으로 return받으면 eval을 사용해 object에 입력해야 함
var myObject = eval('(' + myJSONtext + ')');

[oop] 객체 생성 및 간단한 property와 method예제

<script language="javascript">

 // JavaScript Pet class 
 function Pet(name) {
     this._name = name;
 }
 
// method나 property를 사용하기 위해선 prototype키워드를 사용해야 한다
 Pet.prototype._name;
 
 // method는 return type을 선언하지 않는다.
 // javascript class는 method나 property를 참조 할 경우 항상 this키워드를 써야한다.
 // 이 점은 php나 동일하다.
 Pet.prototype.getName = function() {
     return this._name;
 }
 
 
 var p = new Pet("Max");
 alert(p.getName());
 
</script>

Ajax에서 이것을 어떻게 사용할 수 있을가?
do, undo를 만들고 factory도 만들어 사용할 수 있을까?

2007년 10월 25일 목요일

[Ajax] file을 그냥 call을 하면 한글때문에 절단 난다, reader를 사용해서 파일을 읽어야 함

<?
header("Content-type: text/html; charset=euc-kr");

switch ($type)
{
    case "menu":
        $file = "menu.htm";
        break;

    default :
        $file = $template . ".htm";
        break;
}

$master_code = substr( $template, 0,1 );
$_location = "${master_code}/" . $file;

// is exist check 없넹~~귀챦아~

readfile($_location);
?>

2007년 10월 24일 수요일

[query] 특정 문자 삭제, 특정 문자 추가

# 특정 문자 삭제
update products set name= replace(name, '(K)', '') where  product_id="8B3OJ02SBKZ55";  

# 특정 문자 삽입
update products set name= CONCAT('(K)', name) where  product_id=' 8B26T100GRZXL ;

포르토벨의 마녀 중..

카룰구스타프 융의 말에 의하면, 우리 인류가 모두 같은 샘의 물을 마셨다 한다. 그 샘음 "세상의 영혼" 이라고 불리는 것으로, 우리가 아무리 독립된 개체로 인식하고 행동한다고 해도, 우리 기억의 밑바닥에는 모든 인간이 공유하는 보편적인 것이 자리하고 있다는 것이다. 그래서 모두 아름다움, 춤, 신성함, 음악의 이상적인 형태를 추구한다.

"사회" 는 그러한 이상형들이 어떻게 구체화되어야 하는지 규정하려 한다. 예를 들면 오늘날에는 마른 몸매가 미의 이상형이지만 수천 년 전 여신들의 형상은 풍만했다. 행복도 마찬가지이다, 행복에 대한 규정이 존재하고 있어서 우리가 그 규정을 따르지 못한다고 생각될 때 우리의 의식은 행복하다는 생각을 받아들이기를 거부 한다.

융은 개인의 발달 과정을 네 단계로 분류했다. 첫 단계는 "페르소나"(연극배우가 쓴 마스크, 철학적으로 이성적 본성을 가진 개별적 존재자를 의미하며, 융은 이를 인간이 세상에 드러내는 가면의 얼굴로 해석했다)이다. 이는 우리가 인생이라는 연극에서 매일 쓰는 가면이다. 우리는 세상이 우리의 손에 좌우되어야 하고, 나는 좋은 부모인데 정작 자식들은 이해하지 못한다고 푸념하고, 상사의 지시는 불합리하고, 모든 사람의 꿈은 일하지 않고 평생 여행이나 하면서 사는 것이라고 생각하며 살아간다. 대개의 사람들은 이런 생각에 뭔가 오류가 있음을 감지하지만, 자기 생각을 바꾸는게 두렵기 때문에 그런 느낌을 머릿속에서 재빨리 지워 버린다. 하지만 소수의 사람들은 무엇이 잘못 되었는지 알아내고자 애쓴 끝에 '그림자'를 찾아낸다.

'그림자'라는 것은 우리의 어두운 면이다. 그것은 우리가 어떻게 행동하고 처신해야 할지 명령한다. 우리가 '페르소나'로 부터 자유로워지려고 시도할 때, 우리 안에 빛이 밝혀지면서 우리 안의 소심함과 비열함의 거미줄들이 드러난다. 그림자는 그곳에서 우리의 발전을 가로막으려 하고. 대개의 경우 성공한다. 그러면 우리는 의문을 품기 전의 모습으로 다시 돌아오게 된다. 하지만 몇몇 사람의 자신의 거미줄과의 접전에서 살아 남는다. 그들은 이렇게 말한다. "그래 몇 가지 흠이 있지만 나는 선한 존재이고 더 나아가고 싶어"

그 순간, '그림자'는 사라지고 '영혼'과 마주하게 된다. 융에게 '영혼'은 종교적 의미의 영혼이 아니다. 모든 지식의 원천인 "세계의 영혼"으로 복귀하는 것을 의미한다 본능은 더 예리 해지고, 감정은 원초로 복귀하며, 삶에서 마주치는 표지가 논리보다 더 중요해지고, 현실에 대한 직관이 더욱 유연해 지는 것이다. 우리는 익숙하지 않은 것과 싸우기 시작하며, 예기치 못 했던 방식으로 이에 대응하게 된다.

이와 같이 지속적인 에너지의 흐름을 터주게 될 때, 우리는 그 에너지를 매우 굳건하게 중심에 놓고 관장할 수 있게 된다. 융은 그 굳건한 중심을, 남자의 경우 "노현자"라 일컫고 여자의 경우 "위대한 어머니"라 일컬었다.

2007년 10월 18일 목요일

고슴도치의 우아함

언제 읽은 책인데 아직 표시도 안 해놨는지 모르겠네.
책이 너무 많아서 뭔가를 적기도 전에 다른 책을 손에 잡는 나 ㅋㅋㅋ

데미안 - 헤르만 헤세

내 속에서 솟아 나오려는 것. 바로 그것을 나는 살아 보려 했다. 왜 그것이 그리 어려웠을까?

데미안은 이렇게 시작된다. 처음에 이 문구를 읽고 '이게 무슨소리지?' 하고 생각하게 되었지만 마지막 장을 덥고 나서 이 문구를 다시 봤을땐 엄청난 크기의 무게가 느껴졌다.

한 사람 한 사람의 삶은 자기 자신에게로 이르는 길이다. 그리고 일찍이 그 어떠한 사람도 완전히 자기 자신이 되어본 적은 없었다.

책을 읽으며 우리 혜승이와 익현이 생각을 많이 했다, 그들은 지금 아름답고 질서가 잡혀있는 따뜻한 세상에 존재한다. 하지만 그들도 언젠가는 자신의 삶의 길을 가게 될 것이고, 자신을 지배하는 힘을 외부에 빼앗겨 무기력해 질 지도 모른다. 그때 그들에게는 부모의 울타리는 아무런 힘이 되지 못한다, 다만 어딘가에서 구원이 올지도 모른다. 모든 사람의 인생은 직선으로 움직이며 그들 직선은 어딘가에서 교차하기 마련이다.(이 대목은 참을 수 없는 존재의 가벼움에서 나온 구문이다).

여하튼 주인공인 싱클레어의 경우엔 데미안이란 구원이 나타났다. 그는 싱클레어에게 카인에 대한 이야기를 해 준다, 타인이 두려워 하는 존재, 알을 깨는 존재, 현실에 안주하지 않는 존재, 각성하는 자, 우월한 자, 과연 나는 카인일까? 그냥 휩쓸려 인생을 살아가는 존재일까? 각성한 사람일까? 그렇다면 나는 각성하길 원할까? 아니면 현실에 안주하고 행복을 추구할까?

각성이라 함은 껍질을 깨는 것이고 모든 새가 알을 깨고 나오지 못하든 껍질을 깨는것은 피나는 투쟁이다, 그 길은 험난하고 고단하며 외로울 것이다. 다만 너무나 힘이 들때는 반듯이 어디선가 다른이의 인생이 나의 인생을 너의 인생을 교차할 것이다.

싱클레어에게 데미안은 그런 존재였다, 겁이 많은 소년이 있다, 그 소년은 누군가를 두려워 한다. 그렇다면 그와 그 소년 사이엔 뭔가 불편한 진실이 있다.
그 소년을 컨트롤 하는 목소리는 그 자신의 안에 있지 못하고 그 누군가에게 있다, 모든 괴로움과 두려움의 근원이다.

어떻게 이 두려움을 떨쳐 낼 수 있을까? 빵장수 야곱이란 책에는 두려움을 이렇게 쓰고 있었다. 두려움 이란 고마운 것이다, 왜냐면 두려움이란 니가 정말로 무엇을 두려워 하고 있는지 알 수 있기 때문이다.

데미안은 얘기 한다. "네가 제대로 된 사내녀석이 되려면 그 두려움을 떨쳐버려야만 해" 그래서 항상 올바른 일을 하고자 노력한다, 그 두려움은 나의 잘못된 부끄러운 행동을 파고든다.

소년은 자랄수록 사고도 신장하게 되고 결국 자신의 가야할 길을 스스로 찾아야 한다, 앞으로 나아가는 길은 투쟁의 길이며, 추위와 고독과 어둠의 길일 것이다.

데미안은 이야기 한다. "자유 의지란 없다, 다만 자기 의지를 확고하게 그 무엇인가에 쏟으면 된다, 그러면 자기 목표에 도달 할 수 있다", 간절히 원하는 것은 반듯이 얻을 수 있다는 말은 여러번 들어 본 말이고 아침마다 무엇인가를 갖기 위해 기도한다. 코엘료의 연금술사에서 주인공이 원하는 것을 얻기 위해 꿈을 찾기 위해 먼길을 떠나듯..여하튼 소망이 내  자신의 마음속에 온전히 들어 있을때, 정말로 내 본질이 완전히 그것으로 채워져 있을때에만 원하는 것은 얻어 진다. 나의 의지가 준비되어 있을때 기회는 주어지고 즉시 기회는 포착된다.
내가 지금 간절히 원하는 것은 무엇일까? 매너리즘에 빠져서 살고 있는 것은 아닐까? 생각 해보게 된다.



2007년 10월 17일 수요일

[javascript] type cascade string to int

# 10 진수일 경우
 var page = parseInt( total_page, 10);

[javascript] Left, Right 함수

가끔씩 쓸 일이 있지..흠흠

function Left(str, n){
        if (n <= 0)
                return "";
        else if (n > String(str).length)
                return str;
        else
                return String(str).substring(0,n);
  }

  function Right(str, n){
        if (n <= 0)
             return "";
        else if (n > String(str).length)
             return str;
        else {
             var iLen = String(str).length;
             return String(str).substring(iLen, iLen - n);
        }
  }

[javascript] 소숫점 이하 자리 제거

toFixed()를 사용하면 된다.
toFixed(0)을 사용하면 소숫점 위의 숫자만 출력..좋네~

예제
<script type="text/javascript">

var num = 3.14;

// 그대로 출력
document.write(num, '<br />');
// 출력 결과: 3.14

// 소수점 이하 6자리로 강제로 출력
document.write(num.toFixed(6), '<br />');
// 출력 결과: 3.140000




num = 3.1415926535897932384626433832795;

// 그대로 출력
document.write(num, '<br />');
// 출력 결과: 3.141592653589793

// 소수점 이하 3자리로 출력
document.write(num.toFixed(3), '<br />');
// 출력 결과 (반올림됨): 3.142


</script>

2007년 10월 12일 금요일

[jQuery] timer sample

Usage:

$.timer.start();
// some code
$.timer.mark('optional label');
// some code
$.timer.pause();
// some code to exclude from profiling
$.timer.resume();
// some code
$.timer.mark();
// some code
$.timer.show('optional label'); // displays a list of all marks to this point in an alert pop-up

The code:

// usage: $.debug({x:x, y:y, z:z})
$.debug = function(o) {
    var s = [];
    for (var name in o)
        s.push(name + ': ' + o[name])
    alert(s.join('\n'));
}

$.timer = {
    start: function() {
        this.info = {};
        this.count = 0;
        this.pauseTime = 0;
        this.time = new Date().getTime();
    },
    mark: function(s) {
        var t = ((this.pauseTime == 0) ? new Date().getTime() : this.pauseTime) - this.time;
        this.count++;
        if (s == undefined) s = 'mark ' + this.count;
        this.info[s] = '' + t + ' ms (' + (t/1000) + ' s)';
        this.time = new Date().getTime();
        if (this.pauseTime != 0) this.pauseTime = this.time;
    },
    pause: function() {
        if (this.pauseTime == 0)
            this.pauseTime = new Date().getTime();
    },
    resume: function() {
        if (this.pauseTime != 0)
            this.time += new Date().getTime() - this.pauseTime;
        this.pauseTime = 0;
    },
    show: function(s) {
        this.mark(s);
        $.debug( this.info);
    }
}

2007년 10월 8일 월요일

[pattern] 숫자를 제외한 문자를 제거하기

$string = "aabb1ccdd22adf\n";
$pattern = "/(\D+)/";
$replacement = "";
echo preg_replace($pattern, $replacement, $string);

2007년 10월 5일 금요일

[jQuery] checkbox선택 하기

<html>
<head><title>pimz dashboard</title></head>
<script src="js/jquery-1.1.3.1.js" type="text/javascript"></script>
<script src="js/corners.js" type="text/javascript"></script>
<script src="js/jquery.easydrag.js" type="text/javascript"></script>
<script type="text/JavaScript">

 
  $(document).ready(function(){
 $("a.link1").click ( bind_click2 );
  });

str = "<ul><ul><li>test</li></ul><ul><li>aaa</li></ul></ul>";

  function bind_click2()
  {
 
 a = $("ul", str).get(1);

 $("ul", str).each( function(){
  // alert ( $(this).html() );
  })

 //===========================================
 // checkbox 선택..
 // 항복 체크
 i = 0; // 문제 번호
 j = 1; // 항목 번호
 $("#test ul")
  .eq( i )
  .find("input[@type=checkbox]")
  .eq( j )
  .attr("checked", "true");
 

  }
</script>

<body>
Parameter passing test

<table border="1">
 <tr>
  <td><a href="#" class="link1" key="11111" value="haha">test1</a></td>
 </tr>
 <tr>
  <td><a href="#" class="link1" key="22222" value="hoho">test2</a></td>
 </tr>
</table>
<div id="test">
문 1
<ul>
 <li><input type="checkbox">haha 1</li>
 <li><input type="checkbox">haha 2</li>
 <li><input type="checkbox">haha 3</li>
</ul>
문 2
<ul>
 <li><input type="checkbox">haha 1</li>
 <li><input type="checkbox">haha 2</li>
 <li><input type="checkbox">haha 3</li>
</ul>


</div>
</body>
</html>

2007년 9월 29일 토요일

[jQuery] Submit form

# post에 전송할 params 생성
var params = {};

$(this)
    .find("input[@checked], input[@type='text'], input[@type='hidden'], input[@type='password'], input[@type='submit'], option[@selected], textarea")
    .filter(":enabled")
    .each(
    function()
    {
       params[ this.name || this.id || this.parentNode.name || this.parentNode.id ] = this.value; }
 );

#================================================================
Add a "curWait" class to the body, giving a hourglass symbol
$("body").addClass("curWait");

Post, via AJAX to the current form's action ("dbFormSubmission"), adding a "?call=ajax" to the URL
$.post(this.getAttribute("action") + "?call=ajax", params, function(xml){

[open api] 오예~ 다음 검색

2007년 9월 28일 금요일

[jQuery] 테이블의 홀,짝의 배경색 변경

가독성 있는 테이블을 만들려면, 다른 클래스 이름을 테이블의 모든 짝수 또는 홀수 행에 붙인다. 이를 다른 말로 테이블의 스트라이핑(striping)이라고 한다. jQuery를 사용하면 :odd pseudo-selector 덕택에 쉽게 수행할 수 있다. 아래 예제는 테이블의 모든 홀수 행의 백그라운드를 striped 클래스를 사용하여 변경한다.

$('table.striped > tr:odd').css('background', '#999999');

2007년 9월 27일 목요일

한글의 처리

javascript에서 server로 전송할 경우

encodeURIComponent(form.object.value);


server쪽에서 decode할 경우

UTF-8 로 iconv를 사용해서 convert

$content= iconv("UTF-8", "CP949", $content);


2007년 9월 20일 목요일

query결과 file 저장 샘플

SELECT seq,pack,trans_no,collect_date,trans_date_pos,status,order_cs,trans_who INTO OUTFILE '/tmp/out1.csv'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
FROM orders where trans_date_pos > '2007-9-4 00-00-00' and trans_date_pos<'2007-9-6 23:59:59' ;

2007년 9월 19일 수요일

엄마 다 했어~

익현이가 몸이 안 좋아서 연속 몇일째 이불에 쉬를 하고 있다.
몸이 안 좋으니 짜증이 늘어가는 듯.

이부자리에서 우유를 먹으려고 하고..

급기야 이불에 오줌을 한 가득 싸고는 "엄마 다 했어~~" 쿨~~~~

죽은 여배우 특집인가?

아침에 일어나 습관처럼 tv를 켰다.
super action이랑 ocn인가에서..

주홍글씨와 그놈은 멋있었다를 하고 있었다...
비몽사몽간 뭐냐...자살 여배우 특집이냐?~~를 생각했다.

2007년 9월 17일 월요일

깜빡임이 없는 button

<style type="text/css">
.btn:link, .btn:visited{
        display: block;
        width: 100px;
        height: 30px;
        line-height: 30px;
        text-decoration: none;
        background: url(images/btnTemp1.gif) no-repeat left top;
        text-indent: 20px;
}

.btn:hover {
        background-position: right top;
}      
</style>

<a href="#" class="btn">haha</a>

btnTemp1.gif

사용자 삽입 이미지

[5.0] UNION에 대해서

UNION is used to combine the result from multiple SELECT statements into a single result set

뭘까?

2007년 9월 7일 금요일

검색엔진 마스터? - 세미나 커리큘럼

시  간

주   제

내   용

9월 18일(화)

19:00 ~ 22:00

제 1 강

검색광고의 한계와
검색엔진 최적화 혁명

1. 검색엔진 최적화(SEO)란?
2. SEO가 강력한 7가지 이유
3. 검색 광고의 한계와 극복 방안
3. 검색엔진 조작 vs. 최적화
4. 한국적인 최적화 전략이란?

제 2 강

누구나 접근할 수 있는
10가지 SEO 채널

1. 검색 광고 채널 vs. 최적화 채널
2. SEO 각 채널별 특성과 활용법
   - 홈페이지/ 블로그 채널
   - 디렉토리 채널
   - 지식검색/카페 채널
   - 이미지/동영상 채널
   - 또 다른 채널들
3. 검색광고 타이밍, SEO 타이밍
4. 검색 광고와 SEO의 연계 방안

제 3 강

가장 먼저 검색되는
홈페이지의 기본 원리

1. 검색 순위의 기본 원리
2. 검색엔진 등록 상황 분석
3. SEO를 위한 HTML 태그
4. 상위 랭킹 핵심 전략
5. 검색엔진 스팸과 조작의 위험성
* 실전 연습

9월 19일(수)

19:00 ~ 22:00

제 4 강

가장 먼저 검색되는
키워드 선택과 Title 만들기

1. 키워드와 검색엔진 최적화
2. 형태소 분석의 적용
3. 최적의 키워드 선택 방법
4. 제목과 홍보 문구 (T&D) 작성법
* 실전 연습

제 5 강

가장 먼저 검색되는
홈페이지와 블로그 만들기

1. 검색엔진이 싫어하는 홈페이지
2. 홈페이지를 위한 최적화 전략
3. 쇼핑몰을 위한 최적화 전략
4. 블로그를 위한 최적화 전략
5. 디렉토리 등록 가이드
* 실전 연습

제 6 강

효과적인 최적화를 위한
다양한 도구의 활용

1. SEO 현황 분석 도구 활용
2. SEO 운영 관리 도구 활용
3. 웹마스터 툴과 사이트맵
* 실전 연습

9월 20일(목)

19:00 ~ 22:00

제 7 강

안정적인 최적화를 위한
컨텐츠 관리 시스템 구성

1. SEO를 위한 시스템 구성
2. SEO를 위한 웹디자인
3. 컨텐츠 관리 시스템의 활용
4. SEO를 위한 기본 시스템 구성

제 8 강

네이버 검색 순위와
한국적인 SEO 전략

1. 네이버 검색과 한국적인 SEO
2. 홈페이지와 디렉토리 전략
3. 블로그 전략
4. 지식검색과 카페 전략
5. 이미지와 동영상 전략
6. 또 다른 SEO 채널들

제 9 강

SEO 체크리스트 활용과
SEO 실전 클리닉

1. SEO 체크리스트 점검
2. 총정리 특강
3. 질문과 답변
4. 실전 클리닉
    (참석자 홈페이지 추첨하여 분석)

2007년 9월 4일 화요일

예전 옥션의 이금룡 대표이사가 만든다는 커뮤니티 사이트?

http://www.koglo.com/

뭘까?

jQuery Context

다음에서 E,F,G는 HTML의 태그에 해당합니다. 예) DIV, P, SPAN

* - 모든 태그
E - 모든 E
E:nth-child(n) - E의 n번째 자식
E:first-child  - E의 첫번째 자식
E:last-child - E의 마지막 자식
E:only-child - ?
E:empty - 자식이없는 E
E:enabled - 활성화된 E (예- 활성화된 텍스트에어리어)
E:disabled - 비활성화된 E (예- 비활성화된 인풋박스)
E:checked - 체크된 E(예- 라디오버튼, 체크박스)
E:selected - selected속성 활성화된 E(선택된 OPTION )
E.warning - class속성이 warning인 E
E#myid - id속성이 myid인 E
E:not(s) - s셀렉터와 맞지않는 E
E F - E의 자손인 F
E > F - E의 자식인 F
E + F - E 바로뒤의 F
E ~ F - E가 선행되는 F
E,F,G - 모든 E,F,G,


E[@foo]  - foo속성이 있는 E
E[@foo=bar] - foo속성이 bar인 E
E[@foo^=bar] - foo속성이 bar로 시작하는 E
E[@foo$=bar] - foo속성이 bar로 끝나는 E
E[@foo*=bar] - foo속성에 bar가 포함되는 E

긍정적 동기 유발의 12가지 요소

1.회사에서 내게 무엇을 기대하는지 알고 있다.
    -> 무엇을 기대할까?
2.업무에 필요한 재료와 장비를 갖추고 있다.
    -> 컴퓨터?
3.능력을 충분히 펼칠 기회가 자주 있다.
    -> 능력을 충분히 펼친다?
4.지난 일주일간, 업무성과에 대해 인정과 칭찬을 받았다.
    -> 스스로를 칭찬한다.
5.나를 진심으로 배려하는 누군가가 있다.
    -> 배려? 흠 누가 나를 배려한다? 어떻게 알지?
6.나의 발전을 후원하는 사람이 있다.
    -> 발전을 독려하는 사람이 있지..기분이 좋음
7.내 의견이 비중 있게 반영된다.
    -> 모든 대화와 의견은 타협이 아닐까?
8.회사의 목적이 내 업무의 가치를 높여준다.
    -> 가치라..
9.팀원 모두가 훌륭한 실적을 위해 최선을 다한다.
    -> 최선을 다한다는건 좋은 말이지.
10.회사에 최고의 친구가 있다.
    -> 동수
11.지난 6개월간, 나의 발전에 관심을 보인 사람이 있다.
    -> 나는 끝없이 발전하고 있다.
12.지난 1년간, 배우고 성장할 기회가 많이 있었다.
    -> 일은 안 하고 스터디만 한다.

2007년 8월 29일 수요일

flex 관련 문서

http://flexdocs.kr/docs/flex2/docs/Part5_ProgAS.html

오늘 부터 공부 한 번 해봐야겠다.
필요한게 뭐지?

adobe에 가서 flex builder를 다운 받는 중 - ecllips IDE와 일반버젼이 있음

Compiling shared PECL extensions with phpize

$ cd extname
$ phpize
$ ./configure
$ make
# make install

PECL을 사용한 install을 이렇게 해야 함

// extension이 설치되는 dir확인
$ php-config --extension-dir

2007년 8월 27일 월요일

json사용을 위한 PECL extensions설치

php같은 경우 module을 여러 관리 프로그램으로 install하네..희안하네~

# pecl install json
WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
downloading json-1.2.1.tgz ...
Starting to download json-1.2.1.tgz (17,780 bytes)
......done: 17,780 bytes
11 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20050922
Zend Extension Api No:   220051025

2007년 8월 24일 금요일

pear installer를 사용한 php module설치

php에도 perl의 cpan install manager와 같은 install manager가 있었다 이름하여~~pear 흐흐..

root계정에서 pear의 실행이 가능하도록 설정한 후 간단히 실행하면 된다.

1. HTTP/Request 설치
# pear install Http_Request    
WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
downloading HTTP_Request-1.4.1.tgz ...
Starting to download HTTP_Request-1.4.1.tgz (15,927 bytes)
......done: 15,927 bytes
downloading Net_URL-1.0.15.tgz ...
Starting to download Net_URL-1.0.15.tgz (6,303 bytes)
...done: 6,303 bytes
install ok: channel://pear.php.net/Net_URL-1.0.15
install ok: channel://pear.php.net/HTTP_Request-1.4.1


2. Net/Socket 설치
pear install Net_Socket
WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
downloading Net_Socket-1.0.8.tgz ...
Starting to download Net_Socket-1.0.8.tgz (5,441 bytes)
.....done: 5,441 bytes
install ok: channel://pear.php.net/Net_Socket-1.0.8

2007년 8월 23일 목요일

새로운 adsense를 만들어 봤음 ㅋㅋㅋ

좋구만~~

송장 확인 프로젝트

시나리오

고객은 파일을 등록한다, 파일은 excel로만 등록해야 하며 등록 후 자동으로 파싱되어 화면에 출력된다.

화면에서  송장번호라인을 선택한 후 작업 시작 버튼을 누르면 조회 작업이 시작된다.

어떻게 보여주는게 좋을지..생각 중..

작업완료 되면 결과를 다운 받을 수 있다.

 

프로그램 관련

파일 업로드 처리 ( 완료 )

 => 등록된 파일명을 리턴한다.

탭 처리 부분  (완료)

 

업로드한 엑셀의 파싱 (date: 2007.8.17 ~ )

xls2htm등을 사용해 data를 출력한다. 이때 중요한것은 column마다 같은 class를 가져야 한다는 것임 그래야 header를 선택할 경우 전체의 색이 변경될 수 있음

 

파싱한 데이터의 화면 출력

 

화면 출력한 데이터의 헤더 선택

 

 

 

수익모델 디자인

 

 

 

 

이 글은 스프링노트에서 작성되었습니다.

2007년 8월 22일 수요일

[jQuery] 가져온 xml data의 control이 필요함

date: 2007.8.22

XSLT와 XML을 사용해 사이트 개발 중

XSLT구현에서도 몇 가지 문제점이 있음.
jQuery를 사용해 xsl과 xml을 가져옴 google에서 배포한 ajaxslt를 사용해 특정 div에 결과값을 출력 함
=> 여기까지는 전혀 문제 없음

가져온 xml 데이터를 looping하고 결과를 바꿔주려 함, Client에서 해당 값을 변경함으로써 Server로부터 값을 가져오는데 따른 overhead를 방지 할 수 있음.

2007년 8월 10일 금요일

Representational State Transfer(REST)

SOA를 구현하기 위한 많은 표준이 제시되고 있지만 크게 SOAP, XML-RPC, REST로 진영이 나누어 져있다고 보면 무방할 것이다.

REST란 대규모 네트워크 시스템을 위한 아키텍처로 2000년 Roy Fielding의 박사 학위 논문에서 처음 제안되었다. REST는 원래 웹과 같은 대규모 네트워크 시스템을 위한 원칙들의 모음을 말하는 것이지만, 요즘에는 XML과 HTTP를 사용하는 단순한 웹 기반 인터페이스(즉, REST의 원칙을 따르는 Web Services)를 지칭하기도 한다.

최근엔 많은 Open-Api가 만들어지고 있으며 사용의 편리성때문에 SOAP계열보다는 REST로 무게의 추가 기운 느낌이다.

간단하게 REST계열의 특징을 보면 REST는 HTTP프로토콜을 사용하며 초창기의 WEB과 동일한 룰을 가지고 있다고 보면 된다.

  - 상태를 유지하지 않는 클라이언트/서버 구조를 가진다.

  - 작고 어디에서나 적용되는 인터페이스를 가진다. (e.g., GET, POST, PUT, DELETE)

  - 모든 자원은 URI를 이용하여 유일하게 지칭될 수 있다.

  - 자원들의 표현(Representation)들이 URI을 통해 서로 연결되어 있다.


이와 같은 특징으로 인해 웹 서버와 웹 클라이언트의 종류에 상관없이 URI만 알면 HTTP GET과 같은 인터페이스를 이용하여 간단히 해당 자원에 접근할 수 있다.

 

오늘날 대부분의 웹 어플리케이션들은 사용자 인증 또는 상태 정보를 유지하기 위해 쿠키 또는 HttpSession 등을 사용하고 있는데 이것은 REST의 원칙에 명백히 위배되는 방식이다. 또, 웹 서버상의 데이터를 조회하는 것은 물론이고 변경이나 삭제 심지어는 생성을 위해서도 GET method를 사용하는 경우도 매우 많은 것이 사실이다. (서버 사이드의 변경을 유발하는 요청에 대해서는 POST를 사용하는 것이 바람직하며, ActiveResource 에서는 생성을 위해서는 PUT, 삭제를 위해서는 DELETE를 사용한다.)


보통 PERL이나 PHP로 프로그램을 할때, GET $URL, POST $URL등을 사용하지만 표준엔 DELETE도 있다. 사용해 본적 없는데..지워지면 큰일이게..
 

하지만 현실적으로 여러 사용자에 대한 동적인 정보를 다루는 웹사이트를 쿠키나 세션없이 개발하는 것은 쉬운 일이 아니다. 또 PUT과 DELETE 같은 method는 HTTP 스펙에는 존재하지만 실제 이를 지원하는 브라우저는 많지 않다. (참고로 XMLHttpRequest 에서는 PUT과 DELETE를 지원한다. ? Using REST with Ajax )

 

웹은 수많은 행위자들이 상호작용하는 시스템 중 가장 성공한 예이다. 그러므로 유사한 시스템에서 REST모델은 가치 있는 프레임워크를 제공해 줄 수 있다.REST와 가장 비교되는 모델은 Remote Procedure Call(RPC)모델 이다. RPC모델은 로컬 프로그래밍 모델의 함수 호출 형식을 네트워크 시스템에 적용시킨 것이다. REST의 성공과 DCOM, CORBA, RMI와 같은 기존 RPC모델의 실패는 REST가 큰 스케일의 네트워크 시스템에 적합하다는 것을 의미한다.

 

그러나 모든 웹 application들이 Stateless 와 Uniform Interface 라는 특성을 충분히 따르기에는 현실적인 어려움이 많으므로 당분간은 순수한 REST가 일반적인 웹 개발의 패러다임으로 자리잡지는 못할 것으로 보인다.

  

그런데 최근 관심이 높아지고 있는 분야들인 Open API, Ajax, Rails 와 같은 곳에서 REST라는 용어를 자주 접하게 되는 것은 반가운 현상이다.
REST를 사용하게 되면 어떻게 보면 서버쪽에 요청을 자주 할것 같지만 사실은 어떻게 디자인 하는가의 문제이다. XML로 전체 데이터를 받은 후 CLIENT의 메모리와 프로세서 파워를 사용해 이리저리 조합해 보여주고, DATA는 Ajax를 사용하여 Server와 Sync한다면 훨씬 훌륭한 구조가 될 수 있다.

 

 

Amazone, eBay, Yahoo 와 같은 주요 웹 업체들은 대부분 REST 방식의 OPEN API를 제공하고 있으며 ( Amazone 이 제공하는 SOAP, REST 두 가지 방식의 API 중에서 REST API 의 사용율이 85%라는 정보도 소개 된 바 있다.) 최근에 Google 이 기존의 SOAP 방식 API의 지원을 중단 하면서 Ajax를 이용한 API를 새로 제공하기 시작한 것도 눈여겨 볼만한 대목이다



2007년 7월 24일 화요일

2007년 7월 6일 금요일

[visual basic] Excel 객체를 사용한 ExportToExcel Module

Public Function ExportToExcel(rs As Recordset, Optional FileName As String = "resultset.xls") As Boolean
    Dim ExcelSheet As Object
    Dim X As Excel.Worksheet
    'Dim cl As rdoColumn
    Dim col As Integer, row As Integer: col = 1: row = 1
    Dim I As Integer

    On Error GoTo Export_Err
    Screen.MousePointer = vbHourglass
    Set ExcelSheet = CreateObject("Excel.Sheet")
    Set X = ExcelSheet.Application.ActiveSheet
       
    X.cells(1, 1).Value = "just test 한글문제 해결되나?" ' cell의 내용 설정
    X.Name = "배송확인"  ' sheet의 이름 설정
   
    X.SaveAs App.Path & "\" & FileName
    X.Application.Quit
   
    Set ExcelSheet = Nothing
    Set X = Nothing
    Screen.MousePointer = vbDefault
    ExportToExcel = True
    Exit Function


Export_Err:


    ' code to display error or handle it
    Screen.MousePointer = vbDefault
    ExportToExcel = False
    Exit Function


End Function


[apache] virtual directory설정 샘플

Alias /examplesite "/Users/lgrillo/Desktop/examplesite_folder/examplesite"
<Directory "/Users/lgrillo/Desktop/examplesite_folder/examplesite">
       Options Indexes FollowSymLinks MultiViews ExecCGI
       AllowOverride All
       Order allow,deny
       Allow from all
</Directory>

무지 쉽구만...역시 아파치다..

2007년 7월 4일 수요일

jdbc 설정

  • JDBC 드라이버 다운로드

    JDBC 드라이버는 자바에서 데이터베이스를 연동하기 위한 드라이버입니다.
    MySQL 연동을 위해 MySQL에서 제공하는 JDBC 드라이버를 다운로드해야 합니다.

    MySQL JDBC 드라이버는 Connector/J라는 이름으로 제공됩니다.
    처음부터 MySQL에서 JDBC 드라이버를 제공한 것은 아닙니다. 예전에는 몇몇 공개된 JDBC 드라이버가 있었는데, 그 중 가장 유명했던 것이 Mark Matthews가 만든 MM.MySQL JDBC 드라이버였습니다. 현재의 Connector/J는 이 MM.MySQL 드라이버를 MySQL AB사에서 공식적으로 받아들여 보완한 것입니다. 따라서 Mark Matthews의 MM.MySQL은 더이상 업그레이드되지 않고 MySQL AB사에서 Connector/J라는 이름으로 업그레이드하고 있습니다.
    이 글을 쓰고 있는 현재 기준으로 Connector/J는 3.1이 개발중입니다. 3.0이 안정 버전이고, 2.0이 구버전으로 되어 있습니다.

    1. 아래 MySQL Connector/J 다운로드 페이지에 접속합니다.

      MySQL Connector/J 다운로드 페이지 바로 가기

    2. Downloads, Licensing, and Support라는 제목 아래에 보면 Connector/J의 몇 가지 버전이 표시되어 있습니다.
      이 중에서 MySQL Connector/J 3.0 를 클릭합니다.

    3. Source and Binaries (zip)의 Download를 클릭하여 파일을 다운로드합니다.


  • JDBC 드라이버 설정

    1. 압축 파일을 적당한 위치에 풉니다.(예를 들어 c:\jdbc)

    2. 중요
      jdbc의 하위 폴더인 mysql-connector-java-3.0.6-stable에서 mysql-connector-java-3.0.6-stable-bin.jar 파일을,
      자바가 설치된 디렉토리(예를 들어, c:\j2sdk1.4.1_02)의 jre\lib\ext 디렉토리에 복사합니다.

      원래는, 이렇게 직접 복사하지 않고 시스템 환경 변수로 CLASSPATH를 만들어 mysql-connector-java-3.0.6-stable-bin.jar파일의 위치를 지정해 주어야 하는데, 번거롭기도 하고 Windows에서 잘 작동하지 않는 것 같아 직접 복사하는 방법을 사용한 것입니다.
      그렇다고 이것이 편법은 아닙니다. Connector/J 설치 매뉴얼에 보면,
      Put mysql-connector-java-3.0.6-stable-bin.jar in your classpath, either by adding the FULL path to it to your CLASSPATH enviornment variable, or putting it in $JAVA_HOME/jre/lib/ext.
      이렇게 직접 복사해 넣어도 된다고 명시되어 있습니다.

      ※ 자료실에 mysql-connector-java-3.0.6-stable-bin.jar 파일을 등록해두었습니다. 이 파일 하나만 있어도 됩니다~



  • 톰캣 재 실행

    1. 톰캣을 재 실행합니다.
      톰캣이 실행되면서 위에서 복사한 Connector/J 파일을 포함하여 실행하게 됩니다.

    2. 아파치와 MySQL을 실행하지 않았다면, 이것도 실행해야 합니다.

      앞으로의 실습은, 아파치-MySQL-톰캣을 모두 실행해 놓고 실습해야 합니다.
      APM_Setup을 실행하고 톰캣을 실행하면 되겠죠.
      이렇게 하면 JSP 뿐만 아니라 PHP도 모두 구동할 수 있는 환경이 됩니다.

[unix] VI 메뉴얼 - 내가 만들었음 내가 주로쓰느것들만 모음

esc: 명령어 입력
 
vi로 게시물 열기 및 저장
 vi file : vi를 시작하여 지정한 파일 편집
 vi -R file : 읽기 전용 편집기로서 vi를 시작하여 지정한 파일 편집
 view file : 읽기 전용 편집기로서 vi를 시작하여 지정한 파일 편집
 wq : 데이터를 저장하고 종료
 :q! : 데이터를 저장하지 않고 종료 
 
입력키의 종류
 a : 커서 위치의 다음 칸부터 입력하기
 A : 커서가 있는 줄의 끝부터 입력하기
 i : 커서 위치부터 입력하기 (Insert도 같은 역할)
 I : 커서가 있는 줄의 맨 앞에서부터 입력하기
 o : 커서 바로 아래에 줄을 만들고 입력하기
 O : 커서 바로 위에 줄을 만들고 입력하기
 s : 커서가 있는 단어를 지우고 입력하기
 S : 커서가 있는 행을 지우고 입력하기

삭제
 x  : 문자 삭제
 #x : #개의 문자 삭제
 dd : 한 줄 삭제
 #d : #줄 삭제
 
취소키의 종류
 u : 작업 취소하기
 U : 그 줄에 행해진 작업 모두 취소하기
 . : 조금 전에 했던 명령을 반복하기

줄이동
 h<Left> : 커서를 한 칸 왼쪽으로 이동
 j<Down> : 커서를 한 줄 아래로 이동
 k<Up> : 커서를 한 줄 위로 이동
 l<Right> :커서를 한 칸 오른쪽으로 이동
 <Backspace> :커서를 한 칸 왼쪽으로 이동
 0 : 커서를 현재 줄의 맨 앞으로 이동
 $ : 커서를 현재 줄의 맨 끝으로 이동
 ^ : 커서를 현재 줄의 첫글자(공백이나 탭이 아닌)로 이동


마지막으로 지운거 복사
 p : 마지막으로 지워진 것을 커서의 뒤/아래에 삽입
 P : 마지막으로 지워진 것을 커서의 앞/위에 삽입
 
패턴검색
 / : 이전의 패턴에 대해 앞으로 검색을 반복
 n : 명령에 대해 같은 방향으로 반복
 N : 명령에 대해 반대 방향으로 반복


줄 길이의 조절
 : J : 줄의 결합
 
Visual 모드
  v ㅋㅋ

[sample] select box에 option추가 및 선택

<script language=javascript>
var m_index = 0;
function add()
{
    m_index++;
   
        var oNewNode=document.createElement("option");
        oNewNode.setAttribute("value", m_index);
        oNewNode.innerText= m_index;
        oNewNode.selected = true;
        obj_select.appendChild ( oNewNode );
}
</script>

<input type=button onClick=javascript:add() value="add">

<select name=obj_select>

</select>


select, table등의 동적 객체 생성

DOM객체를 이용, 동적select, table 제어
<SCRIPT>
function appChild(){
  if (oList.all.length<6){
    var oNewNode=document.createElement("option");
    oNewNode.setAttribute("id", "item"+(ulObj.all.length+1)); //ID부여
    oNewNode.innerText="id=item"+(oList.all.length+1);
    oList.appendChild(oNewNode);
  }
}
</SCRIPT>

<select id=oList size=10>
<option name=item1 value="">항목 번호 1</option>
</select>
<INPUT type="button" value="자식 개체 추가" onclick="appChild()">

<BR><BR>-------------------------<BR><BR>

<SCRIPT>
function insertElement(){
  var nod=document.createElement('option');
  nod.setAttribute("id","oLi"+(ulObj.all.length+1)); //ID부여
  nod.innerText="id=oLi"+(ulObj.all.length+1);
  ulObj.insertBefore(nod,eval("oLi"+(ulObj.all.length)));
}
</SCRIPT>

<select id=ulObj size=10>
<option  id="oLi1" name=item value="">항목 번호 1</option>
<option  id="oLi2" name=item value="">항목 번호 2</option>
<option  id="oLi3" name=item value="">항목 번호 3</option>
</select>
<INPUT type="button" value="개체 삽입" onclick="insertElement()">

<BR><BR>-------------------------<BR><BR>

<TABLE id=tableObj border=1 width=600>
<TR id=row1>
<TD id=cell11>예제 칸1-1</TD>
<TD id=cell12>예제 칸1-2</TD>
</TR>
<TR id=row2>
<TD id=cell21>예제 칸2-1</TD>
<TD id=cell22>예제 칸2-2</TD>
</TR>
<TR id=row3>
<TD id=cell31>예제 칸3-1</TD>
<TD id=cell32>예제 칸3-2</TD>
</TR>
</TABLE>
<SCRIPT>
function makeRow(){
  newTr=tableObj.insertRow(document.createElement('<TR>'));
  newTd=newTr.insertCell(document.createElement('<TD>'));
  newTd.innerText='생성, 삽입된 줄-칸1';
  newTd=newTr.insertCell(document.createElement('<TD>'));
  newTd.innerText='생성, 삽입된 줄-칸2';
}
function delRow(){
  tableObj.deleteRow(0);
}
</SCRIPT>
<BUTTON onclick="delRow();">테이블 줄 제거 클릭</BUTTON>
<BUTTON onclick="makeRow();">테이블 줄 생성 클릭</BUTTON>


TR에 insertCell(TD)이라는 함수가 잇음 이거 사용하면 TD를 제어할수있음

table를 마음대로 컨트롤 합니다.

<table id=sendTable border>
<tr>
<td>1</td><td>2</td><td>3</td>
</tr>
</table>

table id=sendTable<br>
otr = sendTable.insertRow(0) : 위한줄을 추가합니다<br>
otr = sendTable.insertRow()=sendTable.insertRow(1)  : 다음 한줄을 추가합니다<br>
<BR>
otd = otr.insertCell()=otr.insertCell(-1)=otr.insertCell(0) : 셀을 추가합니다<br>
otd.innerHTML = "sell1" : 로 그셀에 들어갈 내용을 정의합니다
<BR><BR>
(숫자) 가 들어가기 위해서는 row 나 cell 이 들어갈 숫자가 정의되야 합니다.

<script>
  otr = sendTable.insertRow();
  otd = otr.insertCell();
  otd.innerHTML = "*sell1";
  otd = otr.insertCell();
  otd.innerHTML = "*sell2";
  otd = otr.insertCell();
  otd.innerHTML = "*sell3";

  otr = sendTable.insertRow();
  otd = otr.insertCell(0);
  otd.innerHTML = "sell_a1";
  otd = otr.insertCell(1);
  otd.innerHTML = "sell_b2";
  otd = otr.insertCell(2);
  otd.innerHTML = "sell_c3";


  otr = sendTable.insertRow();
  otd = otr.insertCell();
  otd.innerHTML = "sell21";
  otd = otr.insertCell();
  otd.innerHTML = "sell22";
  otd = otr.insertCell(0);
  otd.innerHTML = "1번 sell에 덮어쓰기 insertCell(0)";

  otr = sendTable.insertRow(3);
  otd = otr.insertCell();
  otd.innerHTML = "&3번줄에 끼어넣기 sell1";
  otd = otr.insertCell();
  otd.innerHTML = "3번줄에 끼어넣기 sell2";
  otd = otr.insertCell();
  otd.innerHTML = "3번줄에 끼어넣기 sell3";
  otd = otr.insertCell();
  otd.innerHTML = "*3번줄에 끼어넣기 sell4";
</script>


=======================
동적 select 예제입니다
=======================

  if (document.all.COMP) document.all.COMP.options[0] = new Option("라인명","");
  if (document.all.PART) {
   if (document.all.PART[1].length==undefined) {
    document.all.PART.options[0] = new Option("설비명2","");
   } else {
    for (var i=0;i<document.all.PART.length;i++) {
     document.all.PART[i].options[0] = new Option("설비명2","");
    }
   }
  }
  if (document.etcSelect.PART) document.all.etcSelect.options[0] = new Option("설비명","");


DBMS 교육 커리큘럼


Devpia에서 멜로 온건데.. 맘에 들어서 나도 공부해 보려 함..



DBMS 구조
DBMS 내부 구조
병렬 처리와 LOCK 메커니즘
4시간
인덱스란? 인덱스 내부 구조
인덱스 스캔 방식
B-Tree & Bitmap & Function Based 인덱스
인덱스 사용 및 설정 시의 유의사항
전체 범위 처리와 부분 범위 처리
6시간
조인 & 클러스터링 Nested Loop 조인
Sort-Merge 조인
Hash 조인
Cartesian 조인
Cluster
Subquery & 순환 관계 처리
SQL Plan & Tkprof
7시간
옵티마이저 옵티마이저의 이해 3시간
SQL PATTERN SQL PATTERN 학습 5시간
실무 활용 기법 및 예제 Analytic Function의 기법 & Rollup & Cube
실무 활용법 I
실무 활용법 II
실무 활용법 III
튜닝의 기법
10시간

2007년 7월 3일 화요일

javascript 정규식 예제.

string+='<H1>다른 제목1</H1><H2>다른 제목2</H2>';
// string='<H3>과제 11. 정규식 예제 중 한정기호</H3><H1>다른 제목1</H1><H2>다른 제목2</H2>';
reg=/<.3*?.*\/.3>/g;
document.write(string.match(reg));

2007년 6월 21일 목요일

ppm이 실행되지 않을때

C:\Documents and Settings\재관>ppm
ppm gui failed: DBI connect('dbname=C:\DOCUME~1\재관\LOCALS~1\APPLIC~1/ActiveSta
te/ActivePerl/820/ppm-MSWin32-x86-multi-thread-5_8.db','',...) failed: unable to
 open database file(1)

위와 같은 이유로 ppm이 실행되지 않을 경우
set ACTIVEPERL_PPM_HOME=c:\perl\temp


6.21
흠 중간에 한글이 들어갈 경우 ppm은 path를 인식하지 못한다.
계정을 새로 만들어서 사용해야 한다...흠..제길..

[linux] 네임 서버 변경하려고 할때..

/etc/resolv.conf 파일 수정

 nameserver 168.126.63.1
 nameserver 168.126.63.2

그냥 변경 하고 nslookup실행해 보면

# nslookup
Note:  nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead.  Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
>
>
>
> www.auction.co.kr
Server:         168.126.63.1
Address:        168.126.63.1#53

Non-authoritative answer:
Name:   www.auction.co.kr
Address: 211.233.17.11

이런식으로 출력 됨 ㅋㅋ

2007년 6월 20일 수요일

핸드폰 세일즈맨의 오페라

찌릿하군..
심사위원이 당신은 뭐하러 나왔냐? 라고 물었을때..
그는 오페라를 하겠다고 대답한다.
심사위원들의 눈엔 당황스러움이..

하지만 어느샌가 눈물을 ...

2007년 6월 18일 월요일

슬럼프

빠샤..
요즘 슬럼픈가? 일이 손에 잡히질 않네..희안하네 어째야 할까?
회사에서 책상에 앉아만 있는다고 일이 되는건 아닐텐데.

슬럼프를 어찌 극복해야 할까? 물론 할 일은 분명하다. 하지만 느릿느릿..굼벵이 마냥.
여름이라 그런가? 냉수 한 잔 마시면 회복 되면 좋으련만..ㅋㅋ

CPAN 모듈에 대한 설정

http://cpan.uwinnipeg.ca/htdocs/CPAN/CPAN.html

Saves all config variables to the current config file (CPAN/Config.pm or CPAN/MyConfig.pm that was loaded at start). 에 설정이 저장된다.
위치: /usr/local/lib/perl5/5.8.8/CPAN 밑에 Config.pm이 저장되어 있다.

오류 메시지

perl을 위한 wsdl파일 자동 생성기

내용인 즉슨
perl은 환상적인 언어라 자동으로 타입을 결정할 수 있기 때문에 SOAP Client를 작성함에 있어서도 환상적이다. 하지만 java, c++, vb등의 언어는 서버와 커뮤니케이션 하기 위해서는 WSDL파일이 있어야만 한다. WSDL파일은 서버와 상호 호환이 가능한 모든 데이터 구조가 정의 되어 있다.

그러므로 PERL로 생성한 웹 서비스도 다른 서비스를 지원하기 위해선 WSDL을 서비스 해야 한다.

http://dag.wieers.com/rpm/packages/perl-WSDL-Generator/

Generate wsdl file automagically.
You know folks out there who use another language than Perl (huh?) and you want to release a SOAP server for them

1/ that's very kind of you 2/ you need to generate a wsdl file 3/ this module can help Because Perl is dynamically typed, it is a fantastic language to write SOAP clients, but that makes perl not-so-easy to use as SOAP server queried by statically typed languages such as Delphi, Java, C++, VB... These languages need a WSDL file to communicate with your server. The WSDL file contains all the data structure definition necessary to interact with the server. It contains also the namespace and URL as well.

Latest release: 0.02-1.2

Website: http://search.cpan.org/dist/WSDL-Generator/
License: Artistic
Group: Applications/CPAN
Upstream Contact: Pierre Denis <pdenis at fotango dot com>
RPM Authority: dries :: Dries Verachtert <dries at ulyssis dot org>

perl에서 web service읭 wsdl사용

use SOAP::Lite;

$a = 45;
$b = 55;
print "Adding values ", $a, " and ", $b, "\n";
print SOAP::Lite
    -> service('file://c:/voices/perl/service1.wsdl')
    -> Add($a, $b);

#===============================================

파일일 경우엔 위와 같이 사용
http일 경우엔 http://host/voices/perl/service1.wsdl
로 사용한다.

2007년 6월 15일 금요일

서브루틴과 메소드의 차이

차이가 있지..
서브루틴은
AA::sub(); 의 형식

메소드는
$AA->method( $param ); 의 형식

메소드는 객체지향에서 사용하는 것이라 생각하면 된다.

클래스 내부를 살펴보면

package AA;

sub method
{
        my ( $self ) = shift; 또는 my( $self, @args ) = @_;
        ....
}

메소드의 경우 가장 첫 번째 파라미터는 객체를 가르키는 레퍼런스가 된다.

Web Service Track

1. XML Web Service의 소개

  -분산 어플리케이션의 진화

  -웹 서비스관련 기술 스택

  -웹 서비스 시나리오


2. XML Web Service 아키텍쳐

  -웹 서비스 아키텍쳐 / 서비스 지향 아키텍쳐

  -웹 서비스 아키텍쳐 구성의 역할

  -웹 서비스 프로그래밍 모델


3. 웹 서비스를 이루는 기술소개

  -HTTP 기본

  -XML 기본

  -SOAP

  -.NET Framework에서 SOAP 사용하기


4. Consuming XML Web Services

  -WSDL Document

  -Web Service Discovery

  -Web Service Proxies

  -웹 서비스 Consumer 제작하기


5. 간단한 XML Web Service 구현하기

  -Web Service Project 생성

  -Web Service Method 구현

  -상태관리

  -디버깅


6. XML Web Service의 출판 및 배포

  -웹 서비스 배포

  -UDDI의 소개

  -웹 서비스 출판

  -UDDI 사용하기


7. XML Web Service 보안

  -보안의 소개

  -SOAP 해더를 이용한 인증

  -Role-Based Security

  -Code Access Security

  -Encryption


8. XML Web Service 디자인

  -Performance

  -Reliability

  -Versioning


9. Global XML Web Services 아키텍쳐

  -GXA

  -Security & Licensing


2007년 6월 14일 목요일

XML-RPC와 SOAP Web Service

XML-RPC is a protocol that allows programs of different languages on different machines to easily talk to each other. By sending a well-defined XML document over unadorned HTTP, a client program can make a remote procedure call to a server. The server processes the request and wraps its response in another well-defined XML document that is sent back to the client over that same HTTP connection.

XML-RPC는 이종 머신상의 이종 언어들이 각자 쉽게 데이터를 주고 받을 수 있게 도와주는 일종의 프로토콜이다. 잘 정의된 XML문서를 HTTP를 통해 보내고 클라이언트는 서버의 프로시져를 호출 할 수 있다. 서버는 클라이언트의 요청에 대해 마찬가지로 잘 정의된 XML문서로 답변한다.

 

Because procedure requests and responses are all in XML, each end of the RPC connection need not be written in the same language or even for the same platforms

프로시져의 호출과 답변이 XML 이루어 지기 때문에 같은 환경과 언어가 필요하지 않다.

 

Clients code to an agreed-upon API that a Web service listener implements. Either side of the API fence can change without affecting the other side. In this way, Web services in general, and XML-RPC in particular, can help break down the Berlin Wall of incompatible OS platforms and make language-agnostic software network components.

클라이언트의 서비스Api 지원한다. Xml-RPC Web Service 일반적인 방법은 Web Service이고 XML-RPC 특별한 방법이다.

 

Although less famous than its younger sibling SOAP, XML-RPC is a simple and easy tool that can help you integrate even the most uncommunicative of systems

서비스보다 유명하진 않지만 XML-RPC 통신할 없는 시스템조차도 관리할 있는 쉬운 방법이다.

 

Where SOAP is a generalized, object-oriented, messaging protocol that is designed to carry arbitrary XML payloads across any network protocol, XML-RPC is a simple procedural protocol designed only to make remote function calls

SOAP 서비스는 XML 전송하기 위한 객체 지향의 네트워크 프로토콜인데 반해 XML-RPC 단순 리모트 펑션을 부르기 위한 방법 하나이다.

 

CPAN의 RPC::XML 모듈을 사용한다.

 

결론: SOAP Web Service와 XML-RPC는 다름 ㅋㅋㅋㅋ

데이터를 전송하는 복잡한 행동 보다는 서버의 프로시져를 단순히 CALL해서 사용할 때 사용한다.

두 개의 프로토콜을 적절히 조합해서 사용하면 최상의 결과를 얻을 수 있음