Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which use a logographic writing system and need larger font sizes.
***/

/*{{{*/
body {font-size:0.8em;}

#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}

.subtitle {font-size:0.8em;}

.viewer table.listView {font-size:0.95em;}

.htmlarea .toolbarHA table {border:1px solid ButtonFace; margin:0em 0em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<!--}}}-->
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

----
Also see AdvancedOptions
!!!공부는 절대적인 수치를 기반으로 해야하고, 그에 대한 평가는 상대적으로 해야한다.
자아 보호의 욕구로 인해 실패나 실수를 합리화시키는 행위는 매우 일반적인 행동.
하지만 그런 행동이 반복되면, 스스로를 보호하기 위한 가상의 사실을 현실로 받아 들이게 된다.

이러한 문제가 발생하지 않도록 하려면, 현재 자신이 저지르고 있는 행동이 어떤 의미가 있는지 자각하고, 평가할 수 있도록 스스로에게 객관적인 태도를 가져야 할 필요가 있다.
드디어 TiddlyWiki 적용 완료! Google Chrome과는 어울리지 않는다는 사실을 뒤늦게 깨닿고, 사랑해 마지않는 Opera로 갈아탔다.
기존에 작성했던 문서들과 포스팅도 전부 이쪽으로 옮기는 작업을 진행할 생각이다. (물론 그 과정에서 엄청난 Tagging이 필요하겠지만)
*이탈리아 [[친퀘테레(Cinque Terre)|http://en.wikipedia.org/wiki/Cinque_terre]] 와인[[Wine]]! 
오늘은 여러모로 실망한 점이 많다.
일단 최근 써온 iPod Touch에 대해서 조금 적자면...
!!!Part I. iPod Touch 사용 후기 #1
<<<
확실히, 아이팟 터치가 글을 입력하기 편한 무언가가 될 수 없다는걸 크게 느끼고 있다.
타이핑에 신뢰성이 떨어진다는 것은 엄청난 치명타인데다가, 실질적으론 적응을 할 수 없을 정도로 텍스트 입력에 대한 UX최적화는 전혀 이루어지지 않았다.
차라리, 세벌식 키보드를 이용해서 텍스트를 입력할 수 있다면 새로운 기회가 될 수 있을 것 같기도 한데, 확실히 뭉뚝한 손가락이 가져오는 애매한 느낌은 절대로 장점으로 다가올 순 없을 것이다.
특히 특정 위치로 텍스트 커서를 가져다 주는 Magnifying Glass는 손가락을 때는 순간 사용자에게 무지막지하게 불편한 늒미을 전해주는데, 이 문제는 근본적으로 고쳐질 필요가 있겠다.
<<<
위의 글을 FU Editor의 Landscape 모드로 입력하는데 약 10분 가량이 들었다. 사실 과거에 애용하던 Zodiac2를 사용할 때도 크게 차이는 없었겠지만, 화면 크기의 차이도 있고 하니 사실 비교할 수 없을 정도로 더 나은 속도를 보여주는건 사실이다.
위의 내용을 핸드폰으로 입력했을 때, 일반적인 Notetaking을 핸드폰으로 하는 나로선 꽤 빠른 속도로 적을 수 있다. 현재 사용하는 2개의 기종간에 차이가 좀 있긴 하지만(애니콜과 CYON) 대체로 빠른 편이다.

그런데 아이팟 터치는, 속도를 떠나서 '''버튼을 누른 후에 사용자에게 전해지는 느낌'''이 최악이다. 마치 유리 표면을 살짝 만진 듯한, 밋밋한 느낌은 비즈니스 머신에서 전해지는 명쾌함과 정 반대라고 할 수 있겠다.

물론 목적이 다르다고 하면 할 말이 없겠지만, WWDC에서 애플이 주장하는 '''비즈니스 목적으로도 훌륭하다'''는 주장은 별로 납득되지 않는다.
과연 HP나 Google이 만들지 못하는 영역인걸까? 그럼 MS는?

이 외에도 iPod이 가지는 문제점이라고 생각하는 부분들이 있지만, 오늘은 패스.

!!!Part II. Some People
정보의 독점에 대해 강한 욕구를 가지고 있는 사람들이 많다는건 너무나도 당연해서 딱히 이야기할 필요도 없겠지만, 내가 진짜 슬픈 것은 그들이 가지고 있는 정보라는 것이 실제로는 News나 다름없다는 사실.
!!!정보의 범람이 나에게 끼치는 영향
 생각보다 ''온라인 미디어''를 표방하는 곳이 많은데다가, 그 와중에서도 좋은 정보를 축약해서 보여주는 곳이 없다는게 요즘 느껴지는 지식에 대한 갈증이 생기는 원인같다.
 아무리 정보가 많다한들, 그 정보를 내가 사용할 수 있는 포멧으로 가공하기 위해선 지식이 필요한데, 최근에는 그게 너무 부족하다는 느낌이 든다.
 의미없는 정보를 무한정 들이부어봤자, 밑 빠진 독에 물 붓는 격이고... 그리고 그 정보를 제공하는 사람도 피차일반인 것 같고...

!!!닌텐도 게임기 같은거 만들기
[[지경부를 찾은 이명박 대통령의 발언|http://www.edaily.co.kr/news/econo/newsRead.asp?newsid=02168086589587240]]이 점점 이슈가 되는 것 같은데...
#닌텐도보다 자본 규모가 크고
#시장 진입 경험이 있으며
#기술적 진입장벽이 없고
#기반 기술을 보유한 회사
라면 전혀 문제없을 것 같다.
어떤 회사를 마음에 두고 하는 말인지는 잘 모르겠으나...

!!!iPod Touch 사용 후기 #2
 일단 기계의 외형적인 특징 상 나에게 주는 불편함은 크게 2가지.
#딱히 그립이 강화되는 부분도 없어서, 손에 땀이 많은 나로선 거의 얼음을 들고 있는 느낌. 마찰력이 떨어져서 자꾸 미끌어져 떨어질 것 같은 불안함이 느껴진다. 이건 3rd Party 업체들을 위한 배려(?)같기도 한데, 일단 브랜드로서의 가치를 위해서 UI를 포기한게 아닌가 싶다.
#가로 그립에서도 불편함은 변함이 없다. 미끄러져 떨어질 것 같은 애매함은 없지만 묘하게 짧은 세로길이로 인해, 타이핑 하기가 생각보다 어렵다. 물론 세로그립 상태와는 비교도 안되지만...
#'''어떤 방향으로 잡아도 상관없다'''는 장점은 ''딱히 잡아도 편한 느낌이 들지 않는다''는 터치의 특징과 맞물리는데, 개인적으론 한쪽으로 무게축이 강하게 쏠려있으면, 사용하기 편하겠다는 생각이 문득 든다. 물론 그로 인해 발생하는 가로 세로 그립의 문제는 어쩔 수 없겠지만...

 사실 언급한 이야기들은 전부 iPod Touch라는 기계를 대상으로 생각하면, 부질없는 내용이기도 하다. 브랜드 마케팅의 정점에 서 있는 iPod Touch, iPhone등의 Apple Inc. 제품들은 설계부터 가치관이 다르기 때문에, 내가 열거한 사항들은 ''어쩔 수 없이 따라오는 불편함''에 가깝다고 할 수 있겠다.
하지만 하드웨어가 아닌 소프트웨어의 측면에서 봤을 때도 문제는 여전한데... (To be continued)
!!!RTL Racing Team Manager
재밌는데 매뉴얼 구하기가 힘드네...
머신에 대한 기본 지식이 딸리는게 팍팍 느껴진다. 뭐 경영도 마찬가지고.
!!!광고/수익 조건에 따른 트래픽 분산 서비스
MNCAST의 멸망과 함께 문득 든 생각인데, 광고 모델과 트래픽을 결합한 서비스가 나오면 괜찮을 것 같다.
이번 김연아 동영상처럼, 트래픽량이 많은 컨텐츠는 트래픽 제공사가 원하는 광고를 게재하는 방식으로 서비스를 구축하면 재밌을 듯.
결과적으론 Torrent랑 매우 비슷하다.
일단 전제가 몇가지 있는데...
*실제 동영상은 메인 서비스가 가지고 있음.
**여기에는 여러가지 법적인 문제도 생길 수 있는데... 이건 경영쪽에서 손만 잘 대면 괜찮게 각이 나올 것 같다.
*접속자, 트래픽 사용량을 메인 서버스 측에서 실시간으로 확인할 수 있어야한다.
**이 전제가 없으면 광고 수익 계산도 힘들고...
*타 업체와 데이터를 쉐어할 수 있는 채널을 열어둔다.
**여기서 공유하는 데이터는 광고와 동영상을 포함한다.
대충 이렇게 세팅이 완료되면, 아래와 같은 방식으로 진행한다.
#메인 서비스에서 트래픽량이 증가하는 컨텐츠가 감지된다.
#우선순위가 가장 높은 업체의 서버로 동영상(및 광고) 데이터를 전송한다.
#그 업체에서 제공하고 싶은 광고를 게재하고, 동영상을 재생한다.
#만약 해당 업체의 트래픽이 초과되면, 그 다음 업체로 트래픽을 분산시킨다.
##반복...
물론 이 과정에는 몇몇 끔찍한(?) 상황들을 고려하지 않았다는 단점이 있지만, 클라이언트 사이드가 아닌 서버 사이드에서, BitTorrent같은 Traffic Sharing을 하기 시작하면 굉장히 재밌어 질 것 같은데...
그리고 굳이 사업자가 아니더라도, 돈 좀 벌자는 개인들이 인터넷 안쓰는 시간에 빙빙 돌리고 있으면, 그것도 나름 재밌을 것 같고...
!!!오늘의 링크
http://www.sexypop.co.kr/ - 넵 감사
http://abcmart.cjmall.com/goods/goods_qna_list.php?goodsno=186788238 - ''죄송합니다''가 압권
http://avantgarde.egloos.com/1867927 - 2009년 2월 첫째주 자동차 업계 소식 모음
http://www.codinghorror.com/blog/archives/001218.html
http://jidolstar.com/blog/archives/521 - [[AS3.0|ActionScript]] 웹 상에서 컴파일하기
http://notice.koreanblog.com/203 - 대통령 UGC
http://amir79.tistory.com/16 - Disband of Brothers
http://dl.eve-files.com/media/corp/Verite/influence.png - 이브 세력도 (Daily Update)
http://www.facebook.com/apps/application.php?id=5282518924&ref=s&ref=s - Have Sex!
!!!주말!
이번 주말의 목표는
*특허법 관련 정보 모으고, 사례 알아보기
*[[Adobe Flex]] Chart Component 활용 사례 찾기
*--정신적 스트레스 게이지 좀 낮추기-- 실패
*양말 부족 현상을 해결하기
!!!오늘의 링크
http://yaksha.egloos.com/1349230 - NEET족의 취업을 응원합니다
http://technet.microsoft.com/en-us/sysinternals/bb545027.aspx - Sysinternals Suite
http://ay-avebury.soton.ac.uk/Prospectus/CMA/HistShip/shipind.htm - John Illsley’s ''History and Archaeology of the Ship''
http://xacdo.net/3cf/bono_shawshankredemption.html - 쇼생크 탈출
http://www.youtube.com/watch?v=Q5k7a9YEoUI - [[Scrum]] in Under 10 Minutes
http://sp.or.kr/sp2007/bbs/board.php?bo_table=4_1&wr_id=13890 - 당''게'' 사건
http://itviewpoint.com/99680 - 싸이월드 ''역''추적기
!!!Ctrl + V of SK
[[SketchPan|http://www.sketchpan.com]]을 본 지는 꽤 되었다. [[SmartPlace|http://smartplace.kr]]에서 주최하는 Demo Day (그 당시엔 난상토론회)에서 [[박PD|http://parkpd.egloos.com]] 형님과 함께 김유 대표(형)님을 만나면서 알게 되었고, 그 후로 몇 번 방문해서 [[그림|http://sketchpan.com/php/search/?search_word=isdead]]을 그려 보기도 했다.
그리고 어느새 스케치판은 ''Litmus^^2^^''에 합류했고, SK와의 미팅과 여러 희소식(으로 추정되는) 이야기들이 들렸다. 그 때 당시엔 "스토리베리와 협업할 수 있는 부분은 없을까?" 라는 식의 다양한 고민을 했던 것 같다.

그리고 몇시간 전, [[아주 인상적인 뉴스가 SmartPlace에 올라왔다.|http://www.smartplace.kr/blog_post_364.aspx]] 우리 회사의 전 직원들이 이 소식을 접했고, 다들 다양한 의견을 가지고 있었다. 오에카키 이야기도 나왔고, GE에서 이벤트성으로 만든 페이지 얘기도 있었고...
하지만 내가 예상했던 아주 당연한 듯한 이야기가 담담한 표정과 함께 흘러나왔다.

"스토리베리도 곧 저렇게 되지 않을까?"

모두들 당연하다는 표정을 지었고, 우리는 다시 PC 앞에 앉았다.
!!!말귀
자기 자신의 경험과 지식을 중심으로 생각하면 서로 말귀를 못 알아듣는 상황이 벌어지는 것 같다.
아무리 그래도 그렇지, 타인의 의도와 목적을 읽지 못하고 눈 앞에 보이는걸로 모든걸 평가하다니...
이런 상황에도 이해 되는 사람이 있고, 여전히 이해 되지 않는 사람들이 있다. 후자 쪽은 이제 성가시다.
!!! 간만의 삽질: Wireless ad hoc network
[[iPod Touch]]가 손에 들어온 이후로, Wi-fi 이용에 대한 욕구가 날로 강해져가고 있다. 그 와중에 무선랜 이용이 불가능한 상태엔 불안함과 짜증이 섞이기도 하는데, 결국 생각의 끝에는 삽질이 기다리고 있었으니...

아무래도 서울에 올라오면 KT Wibro를 쓰게 되는 나로선, 인터넷이 끊어지는 상황이란게 그다지 익숙하지 않다. 하지만 [[iPod Touch]]에는 USB 포트도 없고, CM이 돌아갈 리도 없기 때문에, 이런 상황이 되면 터치는 좀 가벼운 쇳덩어리로 밖에 느껴지지 않는다. (무려 Wibro Modem 보다 무겁다)
마침 오늘 밤도 비슷한 상황이기도 해서, ''Wireless LAN to AP''라는 애매한 용어로 구글링을 시작했다.
결과는 뻔했지만 굉장히 참담했다. 이리 저리 비슷한 용어의 홍수 안에서 방황을 하다가, #puzzlet에서 k님의 힌트(y> 애드혹 모드)로 Ad hoc이라는 단어가 이럴 때 쓰인다는 것을 깨달음과 동시에, Vista의 ''연결 또는 네트워크 설정''에서 애드혹 설정를 발견했다.

굉장히 순조롭게 Wireless Ad hoc Network을 여는데 성공했고, 터치가 붙는 것 까지 확인한 후, 회심의 미소를 지었다... 하지만 당연하다는 듯, 장벽이 눈 앞에 있었는데... 랜선을 연결 해 둔 ''로컬 영역 연결''이 인터넷 연결 공유가 되지 않는 것이었다. 브릿지를 하도록 체크하면 제대로 된 오류 메세지도 뜨지 않고 ''"인터넷 연결 공유를 사용할 수 있게 설정하는 동안 오류가 발생했습니다."''라는 비참한 메세지만 뿌릴 뿐이었다.

하지만 여기서 질 수는 없는 법. 방금 전에 나온 오류 메세지를 대담하게 구글링을 해봤더니, 딱 하고 나오는 [[MS의 답변|http://support.microsoft.com/kb/827328/ko]]. "오오오"하고 희열에 가득 찬 나는 시키는대로 아래의 서비스들을 전부 켜 버렸다.
*Application Layer Gateway Service
*Network Connections
*NLA(Network Location Awareness)
*Plug and Play
*Remote Access Auto Connection Manager
*Remote Access Connection Manager
*Remote Procedure Call (RPC)
*Telephony
그리고 당당하게 인터넷 공유 연결!

...하지만 나를 기다리는 건 똑같은 오류 메세지. 이 상태로 끝을 낼 수는 없다는 마음에 재부팅을 했다. 똑같은 과정을 반복했고, 애드혹 네트워크 설정 후, 자동으로 따라오는 인터넷 연결 공유(ICS) 체크 버튼을 눌렀으나... 결과는 ''실패''.

삽질은 내일도 이어질 듯 하다.
!!!오늘의 링크
http://www.idg.co.kr/newscenter/common/newCommonView.do?newsId=53471 - 개발 프로젝트가 망했다는 것을 알아내는 26가지 방법
http://offree.net/entry/Using-myLGNet-with-iPod-Touch - myLGNet의 기본키: 123456789a
http://www.ticalc.org/archives/files/fileinfo/277/27767.html - Wolfenstein83: Wolfenstein 3D for Ti-83
http://www.yegrina.net/tt/427 - 추억의 MUG면
http://hbr.harvardbusiness.org/web/tools/2009/01/list-toc - The HBR List 2009
!!!소통의 블로그
TiddlyWiki 호스팅을 블로그 삼아 쓴 지 벌써 1주일을 훌쩍 넘었다. 많은 ''블로거''들이 추구하는 ''소통''을 절개하고도 충분히 만족스러운 포스팅을 할 수 있는 것 같아 만족스럽다.
물론 언젠가는 바리바리 싸들고 다른 블로그로 옮겨야겠지만... 생각만 해도 끔찍하다.
!!!특허 관련 정보 찾기
<<<
''BM 특허란?'' - http://www.bizforms.co.kr/bizcontents/patent/patent_06_001.asp
...새로운 아이디어에 따른 비즈니스 모델을 설정하고, 그 비즈니스 모델에 요구되는 데이터 집합 및 속성을 규정하고, 시계열적인 데이터의 처리과정을 제시한 산업상 이용할 수 있는 기술적 사상(비즈니스 모델 + 데이터 모델 + 프로세스 모델)
<<<
이래 저래 특허 관련해서 찾아 보는 중. 카테고리가 BM이었다니... 절차와 접근 방식은 약간 감이 잡혔는데, 기존 사례가 있는지 어떻게 검색할까나...
!!!D-5
슬슬 잠수 타야 쓰것네...
!!!오늘의 링크
http://meganefc.com.ne.kr/frame3.htm - 안경 캐릭터 데이터베이스
http://smallman.co.kr/ - 키작남
http://www.jamis.co.kr/main/jamis/intro.aspx - 오디션 잉글리쉬를 서비스 중엔 T3에서 내놓은 컨셉 식당, ''Jami's''
http://kr.enswer.me/player/XYyxsl49oxj8Tiah1B1Z9Q - Yuna-Kim Scheherazade - Ver.Animation
http://blog.naver.com/favedesign/20046683731 - 아사히야마 동물원
http://blog.naver.com/favedesign/20046675056 - Honda의 Script Think 사례
http://agile.egloos.com/1932851 - Inner Game
http://offree.net/entry/iTunes-Replacement - iTunes 대체용 어플리케이션들
http://www.thisisgame.com/board/view.php?id=205421&category=116 - 엔씨에 소송을 건 美 월즈닷컴
http://swbae.egloos.com/1869376 - 해킹 당한 Kaspersky US 웹사이트
!!!소프트웨어 기술자 신고제
<<<
http://emptydream.tistory.com/2768
''정부가 SW 기술자 경력 관리 한단다''
<<<
일단 저런 움직임이 전혀 무의미하거나 나쁜 것이라곤 생각하지 않는다. 지금까지 물관리 안되어온 건 사실인 것 같고, 그로 인해서 시장 자체가 잡상인 좌판이 되었다는 얘기도 자주 들리고... 근데 문제는 아직 제대로 정착되려면 한참 멀은 것 같은데, 나같은 허접한 뉴비들이야 그렇다 치고, 실제로 업계에서 몇바퀴 구른 사람들이 정확한 평가를 받기 힘들다는건 좀 아쉽다고 할 수 밖에.
뭐가 되었건, 이런 정책이 개발자를 갈구기 위함이라고 오버하는건 좀 아닌 것 같다. 실제로 경력차들은 ''포폴''과 ''주변 평가''로 인해서 꼽히는 사람들이 대부분이기도 하니, 어설픈 사람들이 걱정할 부분은 아닌 것 같다.
!!!화왕산 억새 태우기
<<<
http://www.idomin.com/news/articleView.html?idxno=278971
억새 태우기란?
<<<
정월 맞기 축제 중 하나였던 ''억새 태우기'' 과정에서 [[대참사|http://www.cbs.co.kr/Nocut/Show.asp?IDX=1061372]]가 일어났다. 작년에도 불 때문에 난리나더니, 올해도 어김없이...
현재까지 무려 4명의 사상자가 나온 걸로 판명되었고, 그 중 안전요원이었던 [[공무원 한명|http://news.khan.co.kr/kh_news/cp_art_view.html?artid=200902101500109&code=940202]]도 끼어있는 걸로 예상하고 있다는데...

고인의 명복을 빕니다...
!!!오늘의 링크
http://www.imsdb.com - The Internet Movie Script Database
http://www.kukinews.com/news2/article/view.asp?arcid=0921186738 - 국민일보의 멋진 낚시: '''히로스에 료코 비치는 드레스 파문'''
!!!microsco.pe.kr
[[Naver|http://www.naver.com]]에서 공짜로 뿌릴 때 슬쩍 받아온 [[microsco.pe.kr|http://microsco.pe.kr]] 도메인을 드디어 적용했다. [[isdead.kr|http://isdead.kr]] 쪽은 아직 정체성을 두지 못했는데... ''현미경'' 쪽은 원래부터 개인용 Wiki에 쓰려던 생각이었어서, 생각난 김에 바로 적용해버렸다.
이제 서버 하나 얻어서 본격 이전 작업을 했으면 좋겠는데...
!!!Journal 문제
Journal을 클릭하면 ddMyyyy식으로 날짜가 뜨는데, 자동 정렬이 아니었다는 사실을 깨닿고 결국 전부 이름을 바꿔버렸다.
JavaScript라도 만져서 고치던지 해야...
!!!책: 프레젠테이션 설득의 기술
<<<
http://www.amazon.com/New-Sales-Speak-Presentation-Mistakes/dp/0471755656
''New Sells Speak'': The 9 Biggest Sales Presentation Mistakes and How To Avoid Them
<<<
한글 제목에 낚이면 안되는 책. 번역판의 초반부는 아무리 봐도 Sales 관련 내용이었는데... 아니나 다를까 원래부터 세일즈 책이었다.
내용은 "내가 이야기하는 좌절스러운 경험들을 들어보세요! 그럼 좋은 경험이 될꺼에요." 수준. 나쁘진 않다. 상당히 뻔한 이야기이긴 한데... 아무 생각없이 프레젠테이션 공부를 해야겠다며 표지 색깔이 마음에 들어 책을 집어드는 사람들을 계도하기엔 적당한 것 같다. 근데 그 사람들이 '청자의 입장'을 고려할지는 좀 의문이지만...
!!!오늘의 링크
[[스팸방지 뚫는 포르노 집단 지성|http://innover.tistory.com/entry/스팸방지-뚫는-포르노-집단지성]]
http://www.wecon.kr/sub/lscenter/index.jsp - 문화산업 법률지원센터
http://www.gitiss.org/html/news/today_view.jsp?rscid=117824 - ''화재 피난 훈련''용 게임(?) 제작
http://en.wikipedia.org/wiki/Fsae - 프새
http://www.amazon.com/John-Molloys-New-Dress-Success/dp/0446385522 - John T. Molloy's ''New Dress for Success''
!!!자전거 지름
SAAB의 [[SA8-2007 F|http://www.sellbike.co.kr/shop/display/home.php?mode=subdetail&num=1618]] 모델을 질렀다. 접이식 미니벨로인데, 기존 부품을 교체해서 중량이 약 10kg밖에 안되는 것 같다. 한 손으로 옆에 끼고 계단을 올라도 별로 부담이 안 될 정도. 차마 ''BORN FROM JETS''라는 문구에 낚여서 샀다고는 못하겠고...... 여튼 만족감은 예술이다.
안장이 좀 낮아서 다리를 쭉쭉 뻗지 못하는 것 같은 느낌이 들지만, 그래도 7단 기어의 성능은 예상보다 뛰어났다. 서초에서 방배를 거쳐, 반포대교를 건너 군자교 근처까지 왔는데, 다음부터는 꼭 물을 가지고 다녀야겠다.
!!!오늘의 대장정
#서초 이오빌
#방배역
#서초 소방서
#고속터미널
#세화고교
#한강쪽 간선도로
#반포대교
#서빙고동
#옥수 쯤에서 한강공원 진입
#응봉
#한양대
#용답
#신답
#버들습지
#청계천 진입... 직전에 순찰하시는 분이 막아서, 군자교 쪽으로 U턴
#정체를 알 수 없는 다리
#군자교
#장평교
#장안교
#중랑교
#탈진해서 주변을 봤더니 월계
#녹천교
#창동교에서 진입
#(의도하지 못했던) 도봉 경찰서 등장
#직전해보니 이마트 등장(???)
#창원 초등학교(???????????)
#소피아호텔(여기서 안도의 한숨)
#방학사거리
#신학초등학교 근처에 있는 집까지 직진
이건 거의 모험 수준... 앞으론 지도를 보던가 해야. 순수 자전거 주행시간으로 따지면 3시간 쯤 되는 것 같다.
앞으론 안해야지, 라고 생각하면서도 마음 속으론 "다음엔 어디 갈까"라는 생각이 문득...
!!!오늘의 링크
http://www.austria.or.kr/ - 오스트레일리아 아닙니다.
http://indexneo.egloos.com/4844927 - 홍차의 중요성
!!!자전거 사진
<<<
[img[http://image.fileslink.com/cb3f400dac362fe/P2110001.JPG]]
이번에 지른 ''제트기''. 에르곤 그립과 전립선 안장으로 교체해서 원래 무게보다 1kg 정도는 가벼워졌다고 한다.
현재 무게는 약 10kg 정도... A-Bike의 두배 정도. 무지 가볍다.
<<<

<<<
[img[http://image.fileslink.com/cb3f40071324a6d/P2110002.JPG]]
실차를 보니 생각보다 높이가 낮았는데, 아담하다는 느낌이...
근데 미니벨로 치고 꽤나 남성적이다. 바디가 상당히 통통하다.
<<<

<<<
[img[http://image.fileslink.com/cb3f4008813d4fb/P2110003.JPG]]
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
딱히 이걸 보고 질렀다곤 못하겠다. ''Born From Jets''라니...
그래서 자전거 별칭도 ''제트기''로 결정.
<<<

<<<
[img[http://image.fileslink.com/cb3f40034324d37/P2110004.JPG]]
뒤에 달린 체인 겸 후미등도 딸려왔는데, 생각보다 굉장히 유용했다.
덕분에 어제 맘 놓고 장을 봤다는...
<<<

<<<
[img[http://image.fileslink.com/cb3f400e4735539/P2110008.JPG]]
...작긴 작다.
근데 노트북 가방 매고 타니까 무게중심이 상당히 뒤로 쏠리더라...
<<<

<<<
[img[http://image.fileslink.com/cb3f790d6f2233f/P2110014.JPG]]
지나가던 사람들이 막 쳐다볼 정도로 화려하게 생긴건 아니지만, 담담한 매력이 있다.
사실 뭣보다, 굉장히 쭉쭉 잘나간다. 7단 기어의 힘인 듯.
<<<
!!!오늘의 링크
http://nyorong.egloos.com/4739565 - 간만의 ''겟단''
http://bemil.chosun.com/brd/view.html?tb=BEMIL085&pn=3&num=117586 - 대전차 양초
http://www.penisland.net/ - Pen Island!
!!!역시 해장엔...
김치콩나물국이 최고인 듯.
<<<
''재료''
신 김치
콩나물
대파
고추가루
소금
국물용 멸치
<<<
!!!오늘의 링크
http://www.superleagueformula.com/ - 슈퍼리그 포뮬러
http://www.youtube.com/watch?v=tlTwcD_3l8M - Pannonia Rally (Post RBR?)
!!!옥토버훼스트
''슈바이너학센'' - 생각보다 맛있었는데, 두툼한 껍질이 인상적. 생각보다 소스가 밋밋했는데, 고기 맛을 살리는데는 효과적이었던 것 같다. 28,000원이었는데... 한 23,000원 정도 수준?
''라들러'' - 언제나 마셔도 가볍고 좋다.
''모듬 소세지'' - 가격이 조금 비싼 감이 있지만(18,000원) 그나마 가장 안정적인(?) 안주.
!!!오늘의 링크
http://www.lokeshdhakar.com/2007/08/20/an-illustrated-coffee-guide - 인상적인 커피 일러스트
http://www.kukinews.com/news2/article/view.asp?arcid=0921193626 - 체험정부
http://www.cfos.de - cFosSpeed: 회선 대역폭 최적화 툴(?)
!!!경향 하우징 페어
부드럽게 열리는 슬라이딩 도어, STANLEY, 마끼다, B&D의 렉서스(?) 라인인 DeWalt, LED 전구, 수많은 황토매트와 옥돌 뭐시기...
그 와중에서 기억에 가장 남는건 ''htm''이었다. 대문짝 보다도 큰 사이즈로 적혀있는 문구.
''Hankook Towel Machin''
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 무려 입구와 스탠드 양 쪽에 똑같이 적혀 있었다. 세트 받고 난감했을 듯. (사진은 나중에)

아버지와 나는 간단하게 (으깬 고구마와 토마토 슬라이스의 조합이 미묘한) 샌드위치와 초코 케이크를 먹었는데, 해물잡탕밥이니 무슨 탕이니 해서 7~8천원대로 먹기엔 좀 아까워 보이더라... 근데 중간의 두 군데에 스타벅스가 있어서 나름 인상깊었음.

것보다 너무 널찍했다. 어린 시절(90년대)의 기억으론 오밀조밀하고 이것 저것 많은 느낌이었는데, 품목도 거기서 거기고, 뭐 별로 볼게 없다는 느낌.
하지만 전류를 흐르게 하면 보이지 않는 매직 윈도와 화이트보드까지 겸해서 사용 가능한 실크스크린 벽지는 여러모로 마음에 들었다. 특히 벽지는 방에 떡 붙이고 싶은 욕망이...
!!!오늘의 링크
http://emusic.egloos.com/4158688 - 청력 반사신경 게임?
http://ykei.egloos.com/4850249 - DB Forensics 소개
http://www.voxexmachina.com/news/fallout-3-nude-mods-and-sexy-patches - 폴아웃3 누드 패치
!!!종이 공예
<<<
http://www.amazon.com/Paper-Engineering-Revised-Expanded-techniques/dp/2888930498
Paper Engineering (Revised & Expanded Edition)
<<<
Papercraft 다음은 Popup인가... 봐도 봐도 종이공예의 세계는 대단함이 느껴진다.
!!!Dyson (2008)
한 30분 게임을 즐긴 후, [[Dyson]] 리뷰를 작성했다. 좋은 아이디어는 Innovation을 통해 화려하게 꽃 핀다는 느낌이 든다. 게다가 게임 자체도 꽃 피는(?) 게임이라서 더 인상적이었음.
이런건 Imagine Cup 못나가겠지?
!!!오늘의 링크
http://airyakiniku.cosaji.jp - 고기굽는 영상
http://www.macosadamas.com - 마코스 아다마스
http://radiostar.textcube.com/108 - 싸이월드 삽질기
http://lezhin.com/196 - 아오이 소라 티셔츠
http://www.viewsnnews.com/article/view.jsp?seq=46876 - 거제시, YS 기념관 착공
http://valcione.egloos.com/4067629 - 용자30 체험판 출시
!!!또다시 장거리 자전거 주행
-8℃의 적절히 추운 날씨에도 불구하고, Neowiz의 Openup Meeting에 참석하기 위해 7시 기상 후 7시 40분쯤 삼성으로 출발...
[[몇일 전|2009/02/12]]의 장거리 주행으로 고역을 치뤘지만, 그때의 기억따위는 싹 잊고(...)
*방학동 집
*창동교 (실수로 내천 반대쪽을 탔음)
*군자교
*서울숲 근처
*성수공업고등학교
*영동대교
*코엑스
시간은 약 2시간 정도. 지난번보다 지도를 확실히 본 덕인지, 생각보다 수월하게 도착했다. 중간쯤에서 치열(?)한 배틀을 뜨기도 했고, 적절한 역풍으로 느릿느릿 나아가다보니 결국 더디게 도착한 것 같다.
여전히 미친 짓이라는 생각은 하지만... 이 짓을 또 할 것 같다는 예감이 스믈스믈 든다.
!!Openup Meeting
<<<
http://openup.textcube.com
http://openup.ning.com
<<<
Open Seminar fot Startups: Softbank의 Litmus^^2^^와 비슷한 창업 보육 서비스를 진행하고 있는 Neowiz의 창업자 모임. 일전에 오프라인 모임에서 뵈었던 David C.님의 초대로 3차 미팅에 참석하게 되었다.
일단 모임의 참석자가 Demo Day(구 난상토론회)와는 차이가 좀 있는데, 일단 연령대가 생각보다 높은 편. 시행착오가 많았던 다른 모임에 비해, 좀 더 Closed system을 지향하는 것 같다.
!!!웹 스타트업의 글로벌(영어권) 사업 도전
Qbox의 이안님의 발표로 시작. Qbox의 3개의 모델에 대한 간단한 설명.
Career: NHN > 첫눈 > 실리콘밸리 > Qbox

''핵심 키워드''
*Distance
*Language
*Partnership
*Timing

''이야기의 핵심''
*환경에 대한 이해
**경쟁 환경 분석
**현지에 배치하는 사람들과 배치 시점의 선택
**자원 배분과 보상
*한국과 미국 시장의 동시 런칭 성공 for Venture
*기능 or 비즈니스

''재밌는 이야기꺼리''
#미국은 회사 차리기 쉽다
##법인 등록은 $160 정도면 땡
#VC의 투자 지급
##통장에 돈이 꽂히기까지 약 3개월
##심사 기간이 생각보다 길다
##별로 안깐다 (되려 칭찬한다)
##선수들이 많다
!!!라이딩 후폭풍
몸살 걸린 듯.
!!!LG텔레콤 틴링 광고
요즘 꽃남+틴링 광고 시작할 때 나오는 효과음이 Windows Vista 종료음이랑 똑같아서 위화감이 느껴진다...
!!!알라딘 할인 행사
k모님의 한마디로 어쩔 수 없이 새벽 4시 넘게 Aladdin에서 스크롤을 죽죽 내리고 있는 신세. 스테디셀러 50% 할인과 사이언스북스 할인 행사로 쏟아져 나온 책들을 전부 훑다보니 벌써 시간이 한참 흐르고 말았다.
그 와중에 질병진화학(?)같은 미묘한 주제도 발견했는데, 일단 오늘 낮에는 공들여서 장바구니 정리를 해야할 듯. (아니 30만원이라니!)
!!!오늘의 링크
http://sonnet.egloos.com/4006460 - 현장에서 본 한국경제 30년 (강만수 저) 리뷰
http://nullmodel.egloos.com/1873884 - iDoser 떡밥
http://shaw.egloos.com/1870509 - 유명 인사들의 사인(死因)
http://dory.mncast.com/mncHMovie.swf?movieID=10063094820080229170833 - 언더로 시구하는 소녀시대 BK유리
http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx
http://www.darkroastedblend.com/2009/02/worlds-strangest-theme-parks.html
!!!The Mentalist
알고보니 Rome을 만들었던 Bruno Heller 작품이었다... 이 제작자는 역사물보다 이런 애매한(?) 무게의 작품이 딱 어울리는 듯. HBO보단 CBS가 어울리고...
까는 사람들은 Psych와 Monk를 합쳐놓은 작품이라고 주장하는데, 일단 Psych를 안봐서 딱히 할 말이 없다. 시간나면 한번 챙겨봐야.
!!!오늘의 링크
http://news.bbc.co.uk/2/hi/health/7901337.stm - Child abuse 'alters stress gene'
http://blog.naver.com/secofbush/100013603411 - 튜토리얼 링크 모음
http://www.conceptart.org/gallery/ - Concept Arts
!!!StoryPhoto 기획 완료
간만에 장인의 솜씨를 뽐내어보았다.
!!!오늘의 링크
http://on.cupnoodle.jp - NOODLE ON NOODLE
http://media.daum.net/politics/dipdefen/view.html?cateid=1068&newsid=20090224162407346 - 남여 군입대 관련 공개변론
!!!食記
제육볶음, 차이 티 라떼, 치킨 탕수육, 미소라멘, 꼼장어, 꼬막을 먹었다.
!!!Quake Live
<<<
http://www.quakelive.com
[[Quake Live]] 정식 페이지 //(IE 7/8, FF 2/3만 지원)//
<<<
드디어 떴다! InstantAction에서 시도했던 웹 브라우저에서 바로 실행할 수 있는 게임을, id Software에서 [[Quake III]] 기반으로 내놓기로 약속한 지 벌써 2년 째. Closed Beta를 거쳐 드디어 Open Beta 개시!
가입은 했으나, 현재 28,000명 정도의 Queue가 쌓여있어서 아직 게임을 시작하진 못했다. 간만에 마우스 좀 불타오르겠구나...
일단 6.37MB짜리 MSI 파일을 설치했다. 그 와중에 당연하다는 듯이 깔리는 PB(PunkBuster)...
일단 매치 시스템이 자동등급제로 바뀌었다. 실력이 있는 사람들과 없는 사람들을 끼리끼리 묶어, 비슷한 수준의 사람들이 모여서 싸우게 만드는 방식. 결과적으로 방은 선택식이 아니라는 점이 특이할만한 점.
게임 자체는 기존과 똑같다. 빠르고, 가볍고, 개운한 느낌이 그대로 살아 있다. 아직 이런 저런 버그(웹 사이트 레벨)가 있는 것 같지만, 조만간 제대로 오픈하면 즐겁게 할 수 있을 것 같다.
!!!누들 로드
KBS 1에서 방영하는 누들로드를 봤다. 보고나니 다시 요리혼이 꿈틀대는 듯한 느낌이...
<<<
http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8952750705 - 누들 - 세계의 식탁을 점령한 음식의 문화사
http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8988274490 - 파스타 에 바스타
http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8991193293 - 최승주와 박찬일의 이탈리아 요리
http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8919204047 - 괜찮은 면요리 다 들어 있어요!
http://www.amazon.com/Complete-Book-Pasta-Noodles/dp/060980930X - The Complete Book of Pasta and Noodles
<<<
!!!오늘의 링크
http://www.uxbooth.com/blog/top-29-free-ux-tools-and-extensions - 29가지의 UX 관련 도구들
http://www.visualwebgui.com - Virtual ~WebGUI: RAD Tool for Silverlight, AJAX
http://c2.com/cgi/wiki?GuiPrototypingTools - Prototyping Tools
http://www.zdnet.co.kr/ArticleView.asp?artice_id=00000039170213 - UI 프로토타이핑
http://www.carettasoftware.com - Caretta GUI Design Studio
http://www.boxesandarrows.com/view/interactive - Interactive Prototypes with PowerPoint
http://www.q-net.or.kr/inf/qlf05_0101_p.jsp - 국가 공인자격시험 정보
http://iljari.mma.go.kr - 일자리: 전문연구/산업요원 취업포털시스템
http://nullmodel.egloos.com/1875767 - 코시마섬의 원숭이
!!!스토리베리를 하며 경험했던 수 많은 삽질 리스트
*Silicon Valley VC들과 만나서 영어로 PT하기
*(학내)신문에 낼 광고 시안, 하루만에 제작
*회사 앞에서 1kg 가량의 돼지고기 굽기
*사무실 안에서 베트남 쌀국수 끓여먹기
돌이켜보면 그 와중에도 참 다양한 뻘짓을 한 것 같다.
!!!오늘의 링크
http://www.zdnet.co.kr/ArticleView.asp?artice_id=20090227101016 - 금속 건틀릿
http://www.thinkgeek.com/homeoffice/gear/8e82 - ~USBCell
http://prezi.com - One Page Presentation
http://ghosttownmedia.com/videos/heartbreak - Kanye West의 신곡, Heartbreak의 MV
http://overdread.egloos.com/4804978 - 도쿄에서 워싱턴까지 자동차 길찾기
http://www.americanrhetoric.com - American Rhetoric
http://www.youtube.com/watch?v=Nlpsvq0k4MI - ''Wall'' Street Fighter IV
!!!The Cynical Factory
계약제 커뮤니티라는 이름을 달고, 첫번째 프로젝트를 위한 [[CynFact.com|http://cynfact.com]]이 오픈했다.
!!!오늘의 링크
http://blog.summerz.pe.kr/1377 - flickr and Nate
!!!개강 준비
*[[게임연구워크샵]]
*[[스토리텔링기법]]
*[[인간행동의심리적이해]]
*[[컴퓨터그래픽스개론]]
*[[프로젝트매니지먼트]]
관심있는 강의만 찍었다는 느낌이...
!!!오늘의 링크
http://choboweb.com/850 - MS의 새로운 의류 브랜드, ''~SoftWare''
http://moastone.egloos.com/2284518 - 아이마스를 이어서 Dream Club
http://cleep.egloos.com/1695309 - 외장 하드를 선택하는데 필요한 모든 지식
!!!Build Your Own Sports Car!
<<<
http://www.amazon.com/Build-Your-Own-Sports-Car/dp/1844253910
''Build Your Own Sports Car: On a Budget'' - by Chris Gibbs
<<<
인생의 중장기 목표를 스포츠 카(캐터햄) 만들기로 잡아볼까, 라는 생각이 들게 만드는 책.
일단 좀 침착하게 읽고 생각해야겠다. -_-
!!!두려움
가끔씩 Opera 뻗는게 두려워서라도 그냥 쓰다 말아도 저장하고 그래야겠다.
오늘도 또 날려먹었네... -_-
!!!오늘의 링크
http://video.cyworld.com/206174336 - 허공을 달리는 개
http://www.sophiehoulden.com/games/thelinearrpg - Linear RPG
http://www.thebailoutgame.us - The Bailout Game
!!!Presentation Skills
*Typical Type
**Bullet-driven
**Diagram-driven
**Script-driven
*Lessig Style
*Zen Style
*Jobs Style
여러가지 스타일의 프레젠테이션을 나누어서 분석해보는 중. 모두 장단점이 극명하기 때문에, 목적에 따라 나누어서 사용하면 좋을 것 같다.
어설픈 Zen 스타일 했다가 분위기 망치는 경우도 몇번 봐서...
!!!오늘의 링크
http://ecli.egloos.com/4076757 - 호두의 진실
http://flvs.daum.net/flvPlayer.swf?vid=y5TwBMwADZA$ - 개꿈
http://www.axehaircrisisrelief.org/100girls - Axe 100 Girls
!!!Lie To Me
<<<
http://en.wikipedia.org/wiki/Facial_Action_Coding_System
''FACS'' - 얼굴 표정 인식 체계
<<<
[[Hypnosis|http://en.wikipedia.org/wiki/Hypnosis]]와 기타 다양한 신체 반응을 포괄적으로 다루는 The Mentalist를 이어, FACS를 이용한 수사를 중점으로 다루는 새로운 TV Series.
기본 중의 기본인 과학적 증거 분석으로 시작해, 혈흔과 같은 특정 주제를 파고 드는 수사물이 늘었는데, 그 와중에 FACS가 등장했다는 사실에 반가움을 느끼는 중.
내용은 꽤나 담담한 편인데, The Mentalist와 상호 관계가 있는 듯한 느낌이... 그러면서 은근히 ''[[Shark|http://www.tv.com/shark/show/58080/summary.html]]風''을 강조하는게 흥미를 자극한다.
!!!오늘의 링크
[//주의: ''19금''//] http://tentakaizer.blog21.fc2.com/blog-entry-5.html - Sexlivion, not Oblivion
http://junycap.com/blog/502 - ''디지털 PR/마케팅 커뮤니케이션 포럼 2009'' 자료
http://naridy.egloos.com/4080843 - 초토화 된 Amazon 창고의 참상
!!![[Saber Duel]]
<<<
https://www.mochiads.com/community/games/kaolin/saber-duel
mochiad - [[Saber Duel]]
<<<
간만에 재밌는 게임을 [[전자음악 알아보기|http://emusic.egloos.com]]에서 낚았다.
Force라는 흥미로운 소재를 다루는 게임들은 많지만, 막상 그것을 ''어떻게'' 체험시킬 것인가에 대한 고민에 비해 결과물이 적은게 현실. 그러다보니 이런 게임 하나만 봐도 즐거움이 두배...
!!!오늘의 링크
http://www.bitlet.org - 웹 상에서 직접 Torrent 받기
!!!오늘의 링크
http://www.bluebeam.com - 멋진 PDF 첨삭 프로그램
http://www.builtny.com - BUILT, 노트북 가방이 인상적인 브랜드
http://goldprice.org/live-gold-price.html - 금 시세를 실시간으로 보는 사이트
http://hosunson.egloos.com/2303151 - ''카더라''가 만들어지는 과정
http://www.oldversion.com - because newer is not always better
!!!To Do
딱히 쓸 곳이 없어서, 참고삼아 여기에 적어보기로 했다.
*Personal Business Card
*The Main Concept of the Cynical Factory
*Daily Time Table
!!!오늘의 링크
http://www.neoearly.net/2462905 - 16943 Monitor
http://loan0419.egloos.com/4871963 - 액션치킨가면
!!![[Palm Vx]] 지름
8시간의 배터리와 쉬운 문서 작성을 핑계로, 결국 [[Palm Vx]]와 Palm Portable Keyboard를 질렀다.
또다시 삽질의 시간이 찾아왔다...
!!![[Don't Look Back]]
간만에 센스있는 게임 또 발견.
컨셉을 좀 더 멋지게 잡았으면, 엔딩에서 완전 소름돋았을 듯... 하지만 아쉬움보다 놀라움이 더 크다. 정말 잘 만들었다.
!!!오늘의 링크
http://www.skweezer.com - PDA용 사이즈로 포맷을 바꿔주는 사이트
!!!오늘의 링크
http://www.iexceller.com - 아이엑셀러, Microsoft Excel 관련 커뮤니티
!!!자전거 출근 Part. 4
''서초>방학''편, ''방학>삼성''편, ''삼성>녹사평''편을 거쳐, ''녹사평>역삼''을 달성했다.
약 1시간 10분정도 시간을 투자해서 안정적으로 도착. 한남대교를 지나 쭉 내려오는데... 자동차처럼 논현으로 가는 라인은 없더라. -_-
그래서 결국 압구정쪽으로 이동해서, (공포의 언덕이 있는) 학동을 거쳐 역삼에 도착했다. 덕분에 급경사에서 브레이크 잡는 법을 터득했다. (물론 공포의 순간이 찔끔찔끔 엄습해서 깜짝 놀라기도 했다)
계속 이렇게 열심히 타고 다니면, E모님의 말씀대로 살이 쭉쭉 빠질지도...
!!!오늘의 링크
http://www.najle.com/idaft - The Daft Punk's Console
!!!XBOX 360
엑박을 샀다.
당분간 온라인 상에선 잠잠할 듯.
!!!오늘의 링크
http://www.poladroid.net - 사진을 폴라로이드화(?) 시켜주는 서비스
!!!오늘의 링크
http://www.nodaya-net.com/11438.htm - Dryer Gun
!!!오늘의 링크
http://www.takaratomy.co.jp/products/invadersbank - Space Invaders 1/6 Scale
http://blog.ohmynews.com/arts/162015 - <인간과 국가를 위한 충성> ''박은선''
http://tenhou.net/0 - 무료 온라인 마작. ([[사용설명|http://qdash.tistory.com/35]])
!!!Gears of War 2
결국 기여워2까지 도착... 큰일났다...
일단 오늘안에 Normal 챕터 3까진 깨봐야겠다.
!!!오늘의 링크
http://filez.tistory.com - 습득물 보관소: 각종 서식들을 모아둔 블로그
http://emusic.egloos.com/4237791 - 전자음악 세미나 소식
http://www.asiae.co.kr/uhtml/read.php?idxno=2009031707092724313 - MB 살지도 않은 집이 ''생가''로 둔갑
http://blog.naver.com/aquaregia21/150043608892 - 마사지하는 방법을 친절히 시연해보았다
!!!오늘의 링크
http://ssanzi.egloos.com/1294270 - 제발 말 좀 해봐
http://do.davebsd.com - GNOME Do
!!!Gears of War 2, Normal 클리어
엔딩 크레딧을 보아하니 (당연히) 3편이 나올 분위기구나...
여튼 이젠 하드코어 공략. (헤드샷도 척척 되니 위안이 된다는)
!!!오늘의 링크
http://hansang.egloos.com/1882129 - 앨저넌에게 꽃을
http://www.objectifiedfilm.com/official-objectified-one-sheet-poster - Objectified
!!!오늘의 링크
http://ykei.egloos.com/4867979 - Marine One 청사진 유출
!!!오늘의 링크
http://www.battleclinic.com/forum/index.php/topic,42042.msg213916/BattleClinic-Interviews-CCP-Executives.html#msg213916
[[Wikipedia: ActionScript|http://en.wikipedia.org/wiki/Actionscript]]
...a scripting language based on ECMAScript. ActionScript is used primarily for the development of websites and software using the Adobe Flash Player platform, but is also used in some database applications, and in basic robotics, as with the Make Controller Kit.
[[Wikipedia: Adobe Flash|http://en.wikipedia.org/wiki/Adobe_flash]]
...a multimedia platform created by Macromedia and currently developed and distributed by Adobe Systems.

!!!Reference
[[Adobe TV|http://tv.adobe.com]]
[[Lynda CS4 Lessons|http://www.lynda.com/cs4u]]

!!!Community
[[플생사모|http://cafe.naver.com/flashdev.cafe]]
[[야웅닷컴|http://www.yawoong.com/]]
[[나무야|http://www.namooya.com/]]
[[플래시클럽|http://www.flashclub.co.kr/]]
[[Wikipedia: Adobe Flex|http://en.wikipedia.org/wiki/Adobe_Flex]]
...a collection of technologies released by Adobe Systems for the development and deployment of cross platform rich Internet applications based on the proprietary Adobe Flash platform.

!!!Reference
[[Adobe Flex Builder 3: Getting Started|http://learn.adobe.com/wiki/display/Flex/Getting+Started]]
[[Adobe Flex 3 Live Docs|http://livedocs.adobe.com/flex/3/html]]
[[Adobe Flex 3 Component Explorer|http://examples.adobe.com/flex3/componentexplorer/explorer.html]]
[[Adobe Flex 3 실전 트레이닝 북 (동영상 강의)|http://sites.google.com/site/jinyoungeom/flex-lecture/adobeflex3]]

!!!Documents
[[White Paper: Adobe Flash Player 10 security|http://www.adobe.com/devnet/flashplayer/articles/flash_player10_security_wp.html]]
좌단의 리스트를 클릭하시면 포스팅을 보실 수 있습니다.
Background: #fff
Foreground: #000
PrimaryPale: #6af
PrimaryLight: #88a
PrimaryMid: #336
PrimaryDark: #111
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #963
TertiaryPale: #ccc
TertiaryLight: #aaa
TertiaryMid: #777
TertiaryDark: #444
Error: #f88
[[Notice]]
[[Blogging]]
<<<
http://www.pig-min.com/tt/2233
Pig-Min: Ritgun님의 리뷰
<<<
누가 봐도 [[Galcon]]의 영향력이 느껴지는 작품이지만, 나름의 독창성이 성공적으로 버무려 진 게임.
*Asteroid
*Seed
*Tree
단지 위의 세가지를 제외하곤, 모든 시스템의 기초가 [[Galcon]]으로부터 시작된다는 느낌이 강하게 든다. (물론 Asteroid는 Galcon에서의 Planet과 똑같다고 할 수도 있겠지만...) 하지만 이런 사실이 전혀 상관 없게 만드는 것이 두가지가 있는데, 바로 ''공·수''와 ''사정거리''다.

기존의 Galcon류는 적당한 수준의 마우스 컨트롤, 거리와 유닛 이동 시간에 대한 감각, 전략적 위치(행성) 선점을 기반으로 하는 가벼우면서도 심오한 게임이었다면, Dyson은 한 걸음 더 나아가서, 자리 잡은 Asteroid에서 생성되는 Seedling에 대한 품질 또한 신경써야한다는 점에서 원류와의 큰 차이를 느낄 수 있다.
덕분에 게임 자체의 중후함(?)이 늘어나, 게임의 진행 속도가 더딘 감이 있다. 초반에는 전술적 위치 선점과 품질 관리, Asteroid에 대한 정보 확보를 위해 시간을 써야하기 때문에, 초반 5~10분간은 조용한 정보전으로 시작된다. 그리고 서로의 무기와 방패에 대한 정보를 얻는 순간, 실시간으로 반응을 해야한다.

Dyson의 또다른 강점은, 이런 작은 옵션 하나가 추가됨으로서 생기는 여러가지 문제를 미적으로 잘 풀어냈다는 점이다. 메인스트림 RTS와는 다른, 나무와 씨앗이라는 독특한 소재가 나름 설득력 있고 매력적으로 느껴진다. 스크롤과 팬을 하는 과정에서 작은 재미를 더 해주고 지루함을 덜어주는 요소라고 할 수 있겠다.
!!!Review
[[Dyson|2009/02/20]]
!!!My Favorites
*Star Wars Jedi Knight II: Jedi Outcast - Raven Software
*The Elder Scrolls II: Daggerfall - Bethesda Softworks
*The Elder Scrolls IV: Oblivion - Bethesda Game Studios
*Fallout - Black Isle Studios
*Fallout 2 - Black Isle Studios
*Fallout 3 - Bethesda Game Studios
*Grand Theft Auto: San Andreas - Rockstar North
*Doom - id Software
*Doom II: Hell on Earth - id Software
*Doom III - id Software, Splash Damage (multiplay)
*Doom RPG - Fountainhead Entertainment, id Software (design)
*Orcs & Elves - Fountainhead Entertainment
*Quake - id Software
*Quake 3 - id Software
*Quake 4 - Raven Software
*Commander Keen - id Software
*Wolfenstein 3D - id Software
Indie Life™ is my first web comic strip series. This cartoon introduce indie game industry, favorite or famous indie game, and my private indie life to everyone.

You can get this series from http://wasdead.blogspot.com
학교나 개인적으로 듣는 강의를 정리하는 태그
[[isdead]]
[[Portfolio]]
[[Blogging]]

[[TiddlyWiki Tutorial]]
!!!Current Projects
*Overnight Survivor
*The Uncharted Canal
*Indie Life™ of isdead

!!!Finished Projects
이즈데드의 웹노트에 오신 것을 환영합니다!

옆의 Blogging을 확인하시면, 새로 올라온 포스팅을 감상하실 수 있습니다.

<<<
혹시 화면의 글씨가 흐릿하게 보이시나요?
[[Cleartype을 적용|http://www.google.com/search?q=%ED%81%B4%EB%A6%AC%EC%96%B4%ED%83%80%EC%9E%85]]하시면 깔끔한 화면으로 보실 수 있습니다.
<<<
[[Overnight Survivor]] is a game with [[Storyberry]] platform. It's currently making with [[isdead]], [[Timur]].

in Russian: Пережить ночную смену (Survive the Night Shift)
2005년도에 몇개월 쓰다가, 결국 다른 분에게 양도했던 Palm Vx. 하지만 이번엔 Palm Portable Keyboard와 함께 재입양해서, 핸드헬드 워드프로세서로 쓰기로 결정. (거기에 일정 관리까지)
긴 배터리와 생각보다 뛰어난 가독성 덕분에 8M RAM이라는 메모리에도 불구하고, 많은 사람들이 즐겨찾는 기종.
!!!강좌
http://blog.naver.com/wchoi19/10001156925 - 프리웨어들로 꾸미는 내 팜
http://blog.naver.com/wchoi19/10001258801 - 최소한의 상용 프로그램으로 꾸미는 내 팜
!!!사용기
http://lhovamp.tistory.com/51
http://clien.career.co.kr/zboard/view.php?id=use&no=3605
http://kpug.net/zboard/view.php?id=swhw&no=5155
http://www.kpug.net/zboard/view.php?id=swhw&no=5690
!!!관련 자료 모음
http://blog.naver.com/hipack?Redirect=Log&logNo=90000988002
http://www.fingertool.com/ping_data/range_list.asp?hd_code=24&os_code=7
http://www.natara.com
http://www.kpug.net/zboard/view.php?id=course&no=340
http://blog.naver.com/onesun80/60009069073
http://edtechworld.com/palmprograms/index.php?option=com_docman&task=cat_view&gid=14&Itemid=27
!!!잘 나온 사진들
http://blog.naver.com/dewsoup/60025460909 - Palm Vx with Portable Keyboard (Contax i4R)
<<plugins>>
*[[Adobe Developer Connection|http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=299639895]]
*[[MSR Football Podcast|http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=79143300]]
*[[MSR NASCAR Podcast|http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=78104484]]
*[[iTunes U - Stanford|http://itunes.stanford.edu]]
!!!Current Position
*Lead Service Designer, ISEEYOU Co., Ltd.
*Game Reviewer, [[Pig-Min.com|http://Pig-Min.com]]
*Web Cartoonist, <''Indie Life™'' of isdead>
!!![[Careers]]
*Service Design - Storyberry Service, ISEEYOU Co., Ltd.
*User Interface Design - Storyberry Service, ISEEYOU Co., Ltd.
*Service Design - Storyish Service
*Project Management - - Storyish Service
*Technical Support - ACE, DTPZone Co.
*Server Management - DTPZone Co.
<<<
https://www.mochiads.com/community/games/kaolin/saber-duel
[[Saber Duel]] - mochiad
<<<
([[홀로포닉스|http://en.wikipedia.org/wiki/Holophonics]]를 응용했다고 하긴 뭐하고) 스테레오 음향과 스타워즈의 라이트세이버를 이용해 간단한 게임을 만들어냈다. ''[[The Force|http://en.wikipedia.org/wiki/The_Force_(Star_Wars)]]''를 표현하고 체험하는 독창적인 방식이라고 할 정도는 아니지만, 하나의 독특한 시도로서 높이 평가할 만하다.

게임 시스템은 매우 단순해서, 상대방의 라이트세이버 소리 방향에 맞춰, 키보드 화살표를 누르면 된다. 좌, 우, 그리고 정 중앙으로 공격이 들어오는데, 처음엔 천천히 들어오지만, 뒤로 갈 수록 소리가 겹쳐서 들리기 때문에 난도가 급상승한다.

단 하나 아쉬운 점이 있다면, 양 쪽 공격은 Mono sound이기 때문에 소리가 50% 정도로 작게 들리는데, 정 중앙에서 나오는 소리는 그냥 그 음원을 그대로 썼는지, 측면 공격보다 크게 들린다. Centre 볼륨만 조금 더 작게 했으면 정말 완벽했을 듯.

하지만 ''소리''라는 요소를 깔끔하게 게임으로 옮겼고, 그 요소를 Duel(대결)이라는 소재로 잘 포장해서, 하나의 잘 완성된 게임으로 만들었다는 사실은, 여전히 인상적이다. =)
[[Wikipedia: Scrum|http://en.wikipedia.org/wiki/Scrum_(development)]]
...an iterative incremental process of software development commonly used with agile software development.
''microsco.pe.kr''
''isdead: The Cynical Felix''
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:malgun gothic,arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
내 인생의 동반자였다가 현재는 반쯤 버림받은 신세인 Tapwave Zodiac 2.
''Bold''
==Strike==
__Underline__
//Italic//
I'm^^Superscription^^
I'm~~Subscription~~
@@Highlight@@
!!!Headline
*Bullet
#Ordered
[[Link|http://isdead.egloos.com]]
----
<<<
Quote
<<<
{{{
Codebox
}}}
[img[isdead|http://pds14.egloos.com/pds/200901/20/15/c0033815_4975e25cb3f3c.jpg][http://isdead.egloos.com]]
Timur Izhbulatov is music composer and Python developer. He is making all soundtrack of [[Overnight Survivor]].

[[Timur's Homepage|http://timka.org]]
[[Timur's Last.fm|http://www.last.fm/music/Timur+Izhbulatov]]
/***
Contains the stuff you need to use Tiddlyspot
Note you must also have UploadPlugin installed
***/
//{{{

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'isdead';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[Welcome to Tiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[Welcome to Tiddlyspot]] ");
}

// create some shadow tiddler content
merge(config.shadowTiddlers,{

'Welcome to Tiddlyspot':[
 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki Guides|http://tiddlywikiguides.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),

'TspotControls':[
 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<<br>>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),

'TspotSidebar':[
 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),

'TspotOptions':[
 "tiddlyspot password:",
 "<<option pasUploadPassword>>",
 ""
].join("\n")

});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 17/03/2009 23:47:03 | isdead | [[/|http://isdead.tiddlyspot.com/]] | [[store.cgi|http://isdead.tiddlyspot.com/store.cgi]] | . | [[index.html | http://isdead.tiddlyspot.com/index.html]] | . | ok |
| 18/03/2009 11:57:03 | isdead | [[/|http://isdead.tiddlyspot.com/]] | [[store.cgi|http://isdead.tiddlyspot.com/store.cgi]] | . | [[index.html | http://isdead.tiddlyspot.com/index.html]] | . | ok |
| 18/03/2009 12:56:57 | isdead | [[/|http://isdead.tiddlyspot.com/]] | [[store.cgi|http://isdead.tiddlyspot.com/store.cgi]] | . | [[index.html | http://isdead.tiddlyspot.com/index.html]] | . | ok |
| 18/03/2009 13:35:39 | isdead | [[/|http://isdead.tiddlyspot.com/]] | [[store.cgi|http://isdead.tiddlyspot.com/store.cgi]] | . | [[index.html | http://isdead.tiddlyspot.com/index.html]] | . |
| 21/03/2009 12:07:08 | isdead | [[/|http://isdead.tiddlyspot.com/]] | [[store.cgi|http://isdead.tiddlyspot.com/store.cgi]] | . | [[index.html | http://isdead.tiddlyspot.com/index.html]] | . | ok |
| 21/03/2009 12:09:43 | isdead | [[/|http://isdead.tiddlyspot.com/]] | [[store.cgi|http://isdead.tiddlyspot.com/store.cgi]] | . | [[index.html | http://isdead.tiddlyspot.com/index.html]] | . | ok |
| 21/03/2009 13:22:52 | isdead | [[/|http://isdead.tiddlyspot.com/]] | [[store.cgi|http://isdead.tiddlyspot.com/store.cgi]] | . | [[index.html | http://isdead.tiddlyspot.com/index.html]] | . |
| 22/03/2009 14:28:50 | isdead | [[/|http://isdead.tiddlyspot.com/]] | [[store.cgi|http://isdead.tiddlyspot.com/store.cgi]] | . | [[index.html | http://isdead.tiddlyspot.com/index.html]] | . |
| 01/04/2009 10:14:49 | isdead | [[/|http://isdead.tiddlyspot.com/]] | [[store.cgi|http://isdead.tiddlyspot.com/store.cgi]] | . | [[index.html | http://isdead.tiddlyspot.com/index.html]] | . |
| 06/04/2009 17:11:21 | isdead | [[/|http://isdead.tiddlyspot.com/#isdead]] | [[store.cgi|http://isdead.tiddlyspot.com/store.cgi]] | . | [[index.html | http://isdead.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			config.macros.option.genericCreate(place,'pas',opt,className,desc);
			// checkbox linked with this password "save this password on this computer"
			config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);			
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
		},
		onChange: config.macros.option.genericOnChange
	}
});

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
			saveOptionCookie(opt);
		return config.options[name] ? "true" : "false";
	}
});

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
			}
		},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	}
});

// need to reload options to load passwordOptions
loadOptionsCookie();

/*
if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}

/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.0|
|''Date:''|May 5, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (#3125)|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 0,
	date: new Date("May 5, 2007"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0 (#3125)'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
	
//
// Upload Macro
//

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
};
	
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"
};

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
		return;
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};

config.macros.upload.action = function(params)
{
		// for missing macro parameter set value from options
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			alert(config.macros.upload.messages.noStoreUrl);
			clearMessage();
			return false;
		}
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			alert(config.macros.upload.messages.usernameOrPasswordMissing);
			clearMessage();
			return false;
		}
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 
};

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
{
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;
};

//
// uploadOptions Macro
//

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		wizard.createWizard(place,this.wizardTitle);
		wizard.addStep(this.step1Title,this.step1Html);
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		markList.parentNode.insertBefore(listWrapper,markList);
		wizard.setValue("listWrapper",listWrapper);
		this.refreshOptions(listWrapper,false);
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
		else
			uploadCaption = config.macros.upload.label.uploadLabel;
		
		wizard.setButtons([
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
				
			]);
	},
	refreshOptions: function(listWrapper) {
		var uploadOpts = [
			"txtUploadUserName",
			"pasUploadPassword",
			"txtUploadStoreUrl",
			"txtUploadDir",
			"txtUploadFilename",
			"txtUploadBackupDir",
			"chkUploadLog",
			"txtUploadLogMaxLine",
			]
		var opts = [];
		for(i=0; i<uploadOpts.length; i++) {
			var opt = {};
			opts.push()
			opt.option = "";
			n = uploadOpts[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
			opts.push(opt);
		}
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
				h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
			}
		}
		
	},
	onCancel: function(e)
	{
		backstage.switchTab(null);
		return false;
	},
	
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
}

//
// upload functions
//

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."
};

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
			displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
			return;
		}
		if (bidix.debugMode) 
			alert(original.substr(0,500)+"\n...");
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
			alert(config.messages.invalidFileError.format([localPath]));
			return;
		}
		bidix.upload.uploadRss(uploadParams,original,posDiv);
	};
	
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
		saveChanges();
	}
	// get original
	var uploadParams = Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,null,null,callback,uploadParams,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
			bidix.upload.uploadMain(params[0],params[1],params[2]);
		} else {
			displayMessage(bidix.upload.messages.rssFailed);			
		}
	};
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		bidix.upload.httpUpload(rssUploadParams,convertUnicodeToUTF8(generateRss()),callback,Array(uploadParams,original,posDiv));
	} else {
		bidix.upload.uploadMain(uploadParams,original,posDiv);
	}
};

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
				displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
			}
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
			store.setDirty(false);
			log.endUpload("ok");
		} else {
			alert(bidix.upload.messages.mainFailed);
			displayMessage(bidix.upload.messages.mainFailed);
			log.endUpload("failed");			
		}
	};
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);
	bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == httpStatus.NotFound)
			alert(bidix.upload.messages.storePhpNotFound.format([url]));
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			alert(responseText);
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
			alert(responseText);
		if (responseText.charAt(0) != '0')
			status = null;
		callback(status,params,responseText,url,xhr);
	};
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;
};

//
// UploadLog
// 
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
		store.addTiddler(this.tiddler);
	}
	return this;
};

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
		return;
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			textArray.splice(1,textArray.length-1-maxLine);
			this.tiddler.text = textArray.join('\n');		
	}
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	store.addTiddler(this.tiddler);
	// refresh and notifiy for immediate update
	story.refreshTiddler(this.tiddler.title);
	store.notify(this.tiddler.title, true);
};

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
		return;
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";
	this.addText(text);
};

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
		return;
	this.addText(" "+status+" |");
};

//
// Utilities
// 

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

bidix.dirname = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};

bidix.basename = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

//
// Initializations
//

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});

// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');


/* don't want this for tiddlyspot sites

// Backstage
merge(config.tasks,{
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");

*/


//}}}
!!!기억에 남는 와인
*[[Le Sfere Zibibbo|http://www.tizwine.com/index.php/ps_pagename/winenotes?wine=2650]] - 달고 맛있음
*[[Moscato d'Asti|http://en.wikipedia.org/wiki/Moscato_d'Asti]] - Eiswein과 흡사
*[[Panul Cabernet Sauvignon Reserve (2006)|http://www.winesearcher.co.kr/wine_detail/wine_detail.html?uid=41763]] - 포도의 베이스가 아주 진하게 느껴짐
*[[Majuang Mosel (2007)|http://www.cepdor.com/item/wine_detail.php?i_code=sw-gm-qq-mo-6]] - 잔잔한 단 맛이 매력적
!!!Books
*[[범선의 역사|http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8959132462]]
!!!Vehicle
*[[A-Bike|http://a-bike.co.uk/]]
!!!Camera
*[[Panasonic Lumiox DMC-LX3|http://www.dpreview.com/news/0807/08072102panasoniclx3.asp]]
*[[Rolleiflex TLR with Carl Zeiss Lens (T*)|http://en.wikipedia.org/wiki/Rolleiflex]]
isdead
!!!마음에 드는 어플리케이션
*Discover
*Bloomberg
*Twitterrific
*Wikipanion
*Pro Football
*iSports
*Sportacular
*RDP
*~IfFound
*Labyrinth
*Tab Tab
*Lightsaber
*Banner Free
*Lost it!
*Amazon.com
isdead: The Cynical Felix.
[[Portfolio]]
!!!Contact
''MSN'': isdead at live.com
''Google Talk'': wasdead at gmail.com
''~NateOn'': isdead at nate.com

''Cell Phone'': 017 760 8004
!!!Website
[[Storyberry|http://storyberry.com/?mid=sns_mblog&id=isdead]]

[[Blog (English)|http://wasdead.blogspot.com]]
[[Blog (Korean) - Expired|http://isdead.egloos.com]]
[[Blog (Japanese)|http://isdead.exblog.jp]]
[[Twitter|http://twitter.com/isdead]]
[[Facebook|http://www.facebook.com/profile.php?id=617326407]]
[[me2day|http://me2day.net/isdead]]

[[LinkedIn|http://linkedin.com/in/isdead]]
!!!강의 정보
''담임 교수'': 배성한
''교과목명'': 게임연구워크샵 / Game Research Workshop
!!!교과개요
교수는 기존 게임을 종류별로 구분하고 정의하며, 각장르의 게임을 선정하여 분석함.
학생들은 각자 본인이 원하는 게임을 선정하여 분석, 연구하고 과제로 제출함.
!!!교과목표
#교수 강의
#학생게임분석 과제 제출
#중간고사와 기말고사

!!!1강 - Orientation
;Workshop
:연구 발표회. 참가자가 전문가의 조언을 받으면서, 문제 해결을 위하여 진행하는 협동 연구.
''부교재'' [[게임제작개론|http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=895643056X]]

총 ''15주''로 구성 (7주: 중간고사 / 15주: 기말고사)
!!!컴퓨터 게임의 역사
!!!강의 정보
''담임 교수'': 정현아
''교과목명'': 스토리텔링기법 / Storytelling Strategy
!!!교과개요
스토리에 대한 개념을 이해하고 영상물 제작을 위한 구체적인 창작 기법 학습을 통해 완성도 있는 스토리의 창작과 분석을 가능하게 한다.
!!!교과목표
#스토리에 대한 개론
#스토리의 구조
#스토리 창작 방법과 실례
#스토리 분석

!!!제 1강 - 스토리텔링이란 무엇인가?
''스토리텔링이란?''
*이야기''하기''
*광범위하게는 스토리 전체, 구체적으로는 이야기하는 방식에 초점을 맞춰 이해할 수 있는 개념

''스토리텔링의 중요성''
|화자의 목소리|톤|성량|말투|어휘|동작|
등을 활용하여, 전달자가 얼마나 효과적인 방법을 취했느냐에 주목
한층 치밀하고 체계화된 구성을 통해 스토리를 만들면, 다른 문화, 종교, 환경을 넘어서 강력한 힘으로 사람의 마음을 움직일 수 있다.

''스토리텔링의 기능''
*잘 꾸며진 이야기는 사람의 마음을 움직일 수 있다.
*이야기를 전달하는 기술은 산업 분야와 상관없다.
*인간의 삶을 표현하는 @@하나의 은유@@로서 작동한다.

''스토리의 유래와 형성과정''
#스토리의 역사
##세계를 이해하는 방식
###주변세계를 이해하기 위해 @@이야기@@라는 방법을 이용
###인류의 역사와 인류 최초의 이야기가 함께 시작되었을지도?
##구비문학
###다양한 형태로 전세계에 고루 분포함
###유사한 내용의 이야기가 지역적 차이를 막론하고 많이 발견되고 있음
##시학(Poetics, 詩學)
###[[Wikipedia: Poetics|http://en.wikipedia.org/wiki/Poetics_(Aristotle)]]
###극작법의 원리와 구조에 대해 설명
###서사의 기본이 되는 책으로 평가
#스토리의 형성 과정
##신화 Myth
###신, 신적인 존재
##서사시 Epic poetry
###영웅적 인간
##로망스 Romance
###귀족, 기사
##소설 Novel
###평범한 시민
#스토리의 보편성
##보편성
###개별적인 이야기의 주제, 소재, 교훈 등이 시공간을 초월한 인류의 공통적인 메세지를 담고 있다는 사실을 의미
###좋은 이야기의 내면에는 인간 모두가 공통적으로 느낄 수 있는 보편성이 포진
##구조적 유사성
###서로 다른 문화/지역에서 채집된 이야기(설화, 전설, 옛 이야기 등)에서 구조적으로 비슷한 부분이 발견되는 것
###예: 신데렐라 이야기
##프롭의 연구
###[[Vladimir Propp|http://en.wikipedia.org/wiki/Propp]] 1895~1970
####러시아의 민속학자
####구조주의학자로서, 이야기의 구조적인 차원에서 놀라울 정도의 일관성이 있음을 증명
####「민담형태론 (1927)」: 러시아 민담 100편의 구조 분석
###스토리의 세부적 묘사에는 차이가 있지만, 구조적 특징은 공유
###많은 이야기에 등장하는 개별 인물들의 유형과 행위를 일목 요연하게 이해할 수 있음
###[[민담형태론 리뷰|http://love.isloco.com/entry/책리뷰-민담형태론-블라디미르-프로프]]
''용어 정리''
*Story - 인물과 배경을 가지고 ''인과율''로 연결된 사건의 연속, 이야기.
*Storytelling - 이야기하기, 혹은 이야기 전달방식
*Scenario - 일정한 형식에 따라 작성된 미디어의 각본
!!!강의 정보
''담임 교수'': 장수용
''교과목명'': 인간행동의심리적이해 / Understanding Human Behavior Psychology
''교재'': [[인간행동의 심리|http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8986713748]]
!!!교과개요
인간이란 무엇인지를 알고 이해하기 위해 인간의 심리와 행동을 설명하고, 예측하고자 한다. 
강의와 토의의 2 가지 방법을 병행한다.
!!!교과목표
#인간의 심리와 행동을 설명, 예측, 통제하려는 학문적 목적이다. 
#학문적 목적의 달성을 통해 조직의 목적을 달성하려는 궁극적 목적이다. 
사회나 비즈니스의 조직상황에서 인간의 다양한 태도와 행동에 영향을 미치는 다양한 요인들에 대한 이해를 주목적으로 하며, 이들 지식들의 현실적 적용을 통해 인간행동에 있어 삶의 질을 높히고 동시에 조직의 목적을 효과적으로 달성할 수 있는 방안들에 대해 공부한다.  
!!!참고 링크
<<<
http://seri.org/bt/btIndex.html?btno=100 - 인간과 조직 그리고 경영성과관리의 연구
http://www.seri.org/forum/mantech - HRD Forum
http://www.sbcon.co.kr - SBC 전략기업컨설팅
<<<

!제 1강 - 인간행동 심리의 개요
''심리학의 정의''
*[[Wikipedia: Psychology|http://en.wikipedia.org/wiki/Psychology]]
*''마음의 이치''(心理)를 따지는 학문
*Mind, Psycho, Spirit을 체계적으로 연구하고, 각각의 Structure와 Mechanism를 파악
*''사회'' 구성안에 존재하는 ''인간''의 ''행동''을 과학적으로 이해하기 위함

''심리학의 목적''
*학문적 목적
**인간의 심리와 행동을 예측, 설명, 통제하고 이해할 수 있다.
*궁극적 목적
**인간과 사회의 복지를 달성
**인간과 사회의 진리와 선을 달성
<<<
심리학의 내부 구성을 요약하면:
*Mental Function
*Behavior
*Human
*Human Affairs
에 대한 연구를 진행하므로, 인간학(Humannology)이라는 별칭으로 부르기도 한다.
<<<

''인간행동의 기초 심리''
#''자극-반응''설 ~Stimulus-Response Theory (''행동주의'' 심리학)
##사람의 행동은 자극과 그에 대한 반응으로 학습된다. (예: 파블로프의 개)
###무조건 자극 - 무조건 반응
###조건 자극 - 무조건 자극 - 무조건 반응 : 조건 형성
###조건 자극 - 무조건 반응 : Conditioned Reflex (Psychic Reflex)
##행동주의 심리학의 기조
###사람의 행동 대부분은 학습된 것이다.
###학습 원리를 통해 행동의 원리를 해석할 수 있다.
###어떤 학습을 받느냐에 따라 인간관이 결정된다.
#심리학에서의 인간관
| 성선설 | 성악설 | 행동주의 학파 | 정신분석 학파 | 인본주의 학파 | 신경생물학적 접근 |h
| 긍정적 | 부정적 | 중성적 | 부정적 | 긍정적 | 중성적 |
|맹자(孟子)의 주장 |순자(旬子)의 주장 ||매슬로(Maslow) ||
|물욕(勿慾)하기 때문에 불의가 일어난다. |선천적으로 이욕(利慾)의 마음이 강하다. |후천적인 경험에 의거하여 행동이 결정된다. ||||

''심리학의 흐름''
#인본주의 심리학: 인간 존중의 학파
##아브라함 매슬로 [[Abraham Maslow|http://en.wikipedia.org/wiki/Abraham_Maslow]] (1907~1970)
###인간을 기본적으로 선하게 보았음
###인간의 잠재적 창조성을 인정
###비정상인의 심리학보다는 정상인을 대상으로 한 심리학을 강조
###요소로 나누어진 인간보다 통합된 전체로서의 인간을 강조
###동물연구를 통해 인간을 이해하는 것은 부적절하다고 주장
###상담심리학, 치료심리학, 성격심리학 등에 많은 영향을 미침
##칼 로저스 [[Carl Rogers|http://en.wikipedia.org/wiki/Carl_Rogers]] (1902~1987)
###현상학적 관점에서 인본주의 심리학을 접근
###「상담과 심리요법 Counseling and Psychotherapy」: 당시의 정신분석요법에 대해 처음으로 대안을 제시하는 계기가 됨
###「내담자 중심 요법 Client-centered Therapy」: 각 개인의 지각에 따라 행동이 달라진다는 시각
###자기(Self) 강조 → Self Theory
#한국에 전파된 심리학
##1922년 (아동심리학 발간)
###사람의 마음이 어떻게 활동하는지 알아, 사람의 마음이 이러한 것이라 함을 가르쳐 주는 학문
##1960년대 이후
###이론과 실험 중심의 기초 심리학 중심
##현재
###이론과 실험 중심의 흐름을 유지, 응용 분야를 강조

''인간행동의 심리적 접근방법''
#신경생물학적 심리학의 접근방법
##인간의 심리는 신체 내부(뇌, 척수)에서 일어나는 사건과 관계가 있다.
##중추신경계, 말초신경계, 내분비계 → 인간의 ''심리, 행동'' 지배
#무의식을 강조한 정신분석과 심층심리학
##빙산의 일각(표면 심리)과 그 아래(심층 심리)
##정신분석 이론
###프로이드 ([[Sigmund Freud|http://en.wikipedia.org/wiki/Sigmund_Freud]] 1856~1939)에 의해 확립
###무의식적 경험, 유아기 경험을 중시하는 이론
###비과학적인 사례분석, 면접, 임상경험, 자기보고 등으로 구성
###인간의 내적 측면의 작용과 움직임을 연구하는 ''동적심리학''
###인간의 무의식적 동기나 소망, 갈등을 다루는 ''심층심리학''

;참고 자료
:[[Douglas McGregor|http://en.wikipedia.org/wiki/Douglas_McGregor]]'s ~X-Y Theory: 인간의 본성에 대한 심리학의 관점 - http://www.businessballs.com/mcgregor.htm
:~S-R Theory - http://www.rci.rutgers.edu/~cfs/305_html/Behaviorism/SR_Theory.html
!!!강의 정보
''담임 교수'': 장창익
''교과목명'': 컴퓨터그래픽스개론 / Introduction to Computer Graphics
!!!교과개요
2차원, 3차원 컴퓨터그래픽 기술이 모든 창작 디지털컨텐츠 특히 게임, 디지털 애니메이션, 영화 등에서 중요한 기술로 부각되고 있다. 컴퓨터그래픽의 이해 및 실습 강의에서는 컴퓨터그래픽스의 기본적인 이론강의 및 영화, 영상, 애니메이션, 게임, 멀티미디어 등의 미디어컨텐츠 산업분야와 순수예술분야에서의 응용 예를 소개하고 컴퓨터그래픽스기술이 적용된 디지털 컨텐츠 사례를 조사 연구 발표하며 현재 최신 해외 첨단 정보를 공유한다. 
!!!교과목표
*수업의 2/3는 컴퓨터그래픽의 기본이론 중심의 지식을 갖게 될 수있도록 하고 나머지 수업의 1/3은 현재 영화, 애니메이션, 게임산업분야에서 컴퓨터그래픽스 특수효과기술의 흥미있는 적용사례를 재미있게 소개한다.
*컴퓨터그래픽 특수효과 기술을 적용시킨 극장용, TV용 장단편 영화(애니메이션 영화 포함)와 단편영화/영상(테마파크영상, 게임영상, 순수창작영상 포함)들의 제작과정을 살펴봄으로서 컴퓨터그래픽수업의 흥미와 재미와 느끼면서 공부할 수 있도록 진행한다. (예 과거에 극장에서 흥행성공을 이룬 대작영화에서 현재 개봉중인 영화에 이르기까지)
#''발제모듈'': 동영상 중심 인트로덕션을 통해 이번 강좌의 주제를 소개하며 그 주제에 따른 개념적 분석, 토의주제를 제공한다.
#''심화모듈'': 강의화면에서 강의보조자료(관련사이트URL, 관련이미지, 관련동영상 등)를 제시하면 수강생은 이 강의 보조자료를 활용하여 이해를 심화한다.
#''토의모듈'': 수강생은 발제모듈을 통해 제기된 토의주제를 학기초에 구성한 토론조와 함께 토의를 하며 과제를 완성하여 제출한다.
!!!참조할 사이트
*''[[SIGGRAPH|http://www.siggraph.org]]''
**Computer Graphic Conference의 최고봉인 ''S''pecial ''I''nterest ''G''roup on ''GRAPH''ics and Interactive Techniques.
**http://en.wikipedia.org/wiki/Siggraph
*''[[Cinefex|http://www.cinefex.com]]''
*영화 FX 관련 유명 잡지.
**http://en.wikipedia.org/wiki/Cinefex
*''[[Gamasutra|http://www.gamasutra.com]]''
**게임개발 잡지로 유명한 [[Game Developer|http://en.wikipedia.org/wiki/Game_Developer_(magazine)]]에서 운영하는 게임업계 관련 정보 포털 사이트. 
*''[[Animation World Network|http://www.awn.com]]''
**애니메이션 관련 최대의 온라인 퍼블리싱 그룹이자, 포털 사이트. 실제로 Animation World Magazine을 발행하고 있다.
*''[[VFX World|http://www.vfxworld.com]]''
**Visual FX와 Computer Graphics, 3D Animation에 특화된 포털 사이트. [[AWN|http://www.awn.com]]의 산하에 있다.
*''[[CG Society|http://www.cgsociety.com]]''
**Computer Graphics 관련 소식과 정보를 제공하는 포털 사이트이자, CG 아티스트들이 모이는 커뮤니티. 일부 기능은 유료 회원제로 운영되고 있다.
*''[[Highend 3D|http://www.highend3d.com]]''
**Maya, 3D Max, XSI, ~ZBrush, Motion Builder 등, 3D 영상 제작 및 처리를 위한 소프트웨어의 정보를 주로 다루는 사이트.
!!!컴퓨터 특수효과 이정표
|!|>| !1960년대 |>| !1970년대 |h
|!Types| !1960~1964 | !1965~1969 | !1970~1974 | !1975~1979 |
| ''VEF'' |- Time Machine<br>- The Last Voyage<br>- The Guns of Navarone<br>- The Absent Minded Professor<br>- ''The Longest Days''<br>- Munity on the Bounty<br>- Cleopatra<br>- The Birds<br>- Mary Poppins<br>- 7 Faces of Dr. Lao<br>|- 007 Thunderball<br>- The Greatest Story Ever Told<br>- Fantastic Voyage<br>- Hawaii<br>- Doctor Dolittle<br>- Tobruk<br>- 2001: A Space Odyssey<br>- Ice Station Zebra<br>- Planet of the Apes<br>- Marooned<br>- Krakatoa, East of Java|- Tora Tora Tora!<br>- Patton<br>- Bedknobs and Broomsticks<br>- When Dinosaurs Ruled the Earth<br>- ''The Poseidon Adventure''<br>- Westworld<br>- Earthquake<br>- Fritz the Cat<br>- Heavy Traffic<br>- The Savage Planet<br>- Charlotte's Web|- The Hindenburg<br>- King Kong<br>- Logan's Run<br>- Star Wars Episode IV: A New Hope<br>- Close Encounters of the Third Kind<br>- Superman<br>- Alien<br>- The Black Hole<br>- 007 Moonraker|
| ''AFF'' |- One Hundred and One Dalmatians<br>- The Sword in the Stone|- Junglebook<br>- The Yellow Submarine<br>- A Boy Named Charlie Brown||- Galaxy Express 999|
| ''IF''(IS) |- John Whitney's Catalog<br>- John Whitney's Lapis<br>- Atboftb Carrier Landing<br>^^by William Fetter and W. Bernhart^^|- Stereo Computer Animations<br>^^by ''Bell Labs''^^<br>- Hummingbird<br>^^by Charles Csuri^^<br>- Cockpit Simulation<br>^^by William Fetter^^<br>- Permutation<br>^^by John Whitney^^<br>- Pas De Deux<br>^^by Norman ~McLaren^^|- Animated Face<br>^^by Fred I. Parke^^<br>- Hunger<br>^^by Peter Folders^^|
|!|>| !1980년대 |>| !1990년대 |h
| !Types | !1980~1984 | !1985~1989 |
| ''VEF'' |- Star Wars Episode V: The Empire Strikes Back<br>- Raiders of the Lost Ark<br>- Dragonslayer<br>- Looker<br>- E.T.<br>- Blade Runner<br>- Poltergeist<br>- TRON<br>- Star Trek 2<br>- Star Wars Episode VI: Return Of The Jedi<br>- Indiana Johns and the Temple of Doom<br>- Ghostbusters<br>- 2010|- Cocoon<br>- Return to Oz<br>- Young Sherlock Holmes<br>- Back to the Future<br>- The Last Starfighter<br>- Aliens<br>- Little Shop of Horrors<br>- Innerspace<br>- Predetor<br>- Who Framed Roger Rabbit<br>- Die Hard<br>- Willow<br>- Abyss<br>- The Adventures of Baron Munchausen<br>- Back to the Future Part 2<br>- Indiana Johns and the Last Crusade<br>- Field of Dreams<br>- Ghostbusters 2|
| ''AFF'' |- The Secret of Nymph|- The Black Cauldron<br>- The Great Mouse Detective<br>- Akira<br>- The Little Mermaid<br>- Kiki's Delivery Service|
| ''IF'' |- Vol Libre<br>^^by Loren Carpenter^^<br>- Carla's Island<br>^^by Nelson Max^^<br>- ''Growth''<br>^^by Yoichiro Kawaguchi^^<br>- ~Bio-Sensor<br>^^by Osaka Univ. and Toyo Links^^<br>- Still Life Etude<br>^^by Hiroshima Univ.^^|- Brilliance<br>^^by Abel and Associates^^<br>- Growth III<br>^^by Yoichiro Kawaguchi^^<br>- Luxo Jr.<br>^^by John Lasseter^^<br>- Road to Point Reyes<br>- Stanley and Stella: Breaking the Ice<br>^^by Symbolics^^<br>- Red's Dream<br>^^by Pixar<br>- Baloon Guy<br>^^by Chris Wedge^^<br>- Tin Toy<br>^^by John Lasseter<br>- Threat<br>^^by William Kroyer^^<br>- Locomotion<br>^^by Pacific Data^^<br>- The Sky<br>^^by Hiroshima Univ.^^<br>- Knickknack<br>^^by Pixar^^<br>- Don't Touch Me<br>^^by ~Kleiser-Walczak^^<br>- Preview of The Works<br>^^created at the NYIT^^<br>- The Little Dream<br>^^by Matt Elson^^<br>- Eurythmy<br>^^ by Susan Amkraut & Micheal Girard^^<br>- Study of a Numeric Modeled Severe Storm|
!!!강의 정보
''담임 교수'': 김종혁
''교과목명'': 프로젝트매니지먼트 / Project Management
!!!교과개요
#효율적인 프로젝트관리를 위한 기초 과목으로 모든 분야에서 대부분의 프로젝트에 적용할 수 있는 Global Standard를 이해하는데 목적이 있습니다.
#프로젝트 관리 방법및 관련 용어를 이해 할 수 있습니다. 
!!!교과목표
#두 사람의 강사가 문답 위주로 강의 하여 이해력 증대
#이론과 실무를 적절히 배합하여 균형있는 강의 
#강사의 많은 실제 경험을 소개
!!!참고 링크
http://www.pmi.org - Project Management Institute

!!!제 1강 - 프로젝트 관리의 목적