<<gradient horiz #bbbbbb #eeeeee #ffffff>>The new GradientMacro allows simple horizontal and vertical coloured gradients. They are constructed from coloured HTML elements, and don't require any images to work.>>\nThe GradientMacro is an ExtendedMacro that processes the text after it up until the next '>>' sequence. It looks like this:\n{{{\n<<gradient vert #ffffff #ffdddd #ff8888>>gradient fill>>\n}}}\nThe first parameter can be ''vert'' or ''horiz'' to indicate the direction of the gradient. The following parameters are two or more colours (CSS RGB(r,g,b) format is also acceptable). The GradientMacro constructs a smooth linear gradient between each of the colours in turn.\n\n| <<gradient vert #ffffff #ffdddd #ff8888>>No images were harmed in the making of this gradient fill>> | <<gradient vert #ffffff #ddffdd #88ff88>>No images were harmed in the making of this gradient fill>> | <<gradient vert #ffffff #ddddff #8888ff>>No images were harmed in the making of this gradient fill>> |\n\nInline CSS definitions can be added to gradient fills like this:\n\n<<gradient vert #000000 #660000 #aa2222>>color:#ffffff;font-size:12pt;Darkness>>\n{{{\n<<gradient vert #000000 #660000 #aa2222>>color:#ffffff;font-size:12pt;Darkness>>\n}}}\n\nYou can make an abrupt transition in the gradient by using the "snap" prefix, like this:\n\n{{{\n<<gradient vert #000000 #999999 snap:#aa2222 #ff444>>color:#ffffff;font-size:24pt;padding:4pt;More darkness>>\n}}}\n<<gradient vert #000000 #999999 snap:#aa2222 #ff444>>color:#ffffff;font-size:24pt;padding:4pt;More darkness>>
@@color(#04f): pinching @@; physique modifier를 적용했을 때, 잘못된 웨이트 값으로 메쉬가 찌그러지는 현상\n
@@color(#04f): PPU @@(물리연산 프로세스 유닛) ; CPU가 담당하는 이미지 재생과 관련된 물리 연산을 전담하는 주변기기\n\n아수스코리아와 이엠텍은 2006.05 말 물리연산카드를 국내에 출시하며 2∼3곳의 업체가 판매를 준비중이다. 아수스가 출시할 ‘PhysX P1 고스트리콘’은 에이지아(AGEIA) 칩세트를 장착한 제품으로 기존 ‘CPU+GPU’ 게임프로세싱 처리 개념을 ‘CPU+GPU+PPU’로 확대한 카드. 이엠텍은 기존 PCI슬롯에 장착, 애드온 방식으로 3D게임을 현실감 있게 즐길 수 있는 BFG 물리 엔진 가속카드를 판매한다.\n\n이와 함께 ‘언리얼 토너먼트 2007’ ‘셀팩터’ ‘고스트리콘’ 등 국내외 유명 게임도 물리연산을 지원할 예정이어서, PPU가 그래픽카드에 이은 새 주변기기로 떠오른 상황이다. 아수스에 따르면 연내 물리연산카드를 지원하기로 한 PC용 게임은 5월 현재 10여 종에 달한다.
@@color(#04f): protected와 private의 차이 @@\npublic으로 선언된 멤버 변수와 함수는 클래서 내부와 외부에서 사용할 수 있지만, \n클래스에서 선언된 protected로 선언된 것은 파생 클래스의 내부에서 사용할 수 있다. 기반 클래스에서 private로 선언된 멤버는 파생 클래스에서 내부적으로 사용할 수 없으며, 기반 클래스에서 private으로 선언된 멤버는 파생 클래스로 상속은 되지만 파생 클래스에서 참조만 할 수 없다는 것이다.\n\n@@color(#04f): singleton @@; C++ 클래스 단일체(singleton)는 주어진 임의의 시점에서 시스템 내에 단 하나의 인스턴스만 존재하는 객체를 가리키며, 전역 객체로써 취급된다.\n\n@@color(#04f): traits @@(문자특성)\n특정 타입의 정보 혹은 그 타입의 연산에 대한 정보를 캡슐화한 일종의 객체로서, \n구체적인 이름 대신에 타입에 구애받지 않고 쓸 수 있는 대표 정보를 모아 둔 집합으로 생각하면 무난하다. \n예로, iterator_traits<T>::difference_type는 특정 타입의 객체에 대한 두 반복자의 차이를 나타내는 타입이다.\n
@@color(#04f): script @@(스크립트); 컴퓨터 프로세서나 컴파일러가 아닌 다른 프로그램에 의해 번역되고 수행되는 명령문의 집합.\n\nC나 C++와 같은 언어들에 비해 제한된 능력을 지니고 실행속도도 느리지만 프로그램을 쉽고 빠르게 작성할 수 있다. 주로 제한된 능력을 가진 프로그램이나 컴파일된 기존 프로그램과 연결하여 재사용되는 프로그램들을 만드는 데 적당하다.
@@color(#04f): signature @@; ex) The signatures and behaviors of the virtual functions in Accumulator have changed.\n\n(gpgstudy에 질문했을 때) 류광_님께서 주신 답글 \n저는 signature를 사전 그대로 서명으로 번역하고 있습니다. 사람의 서명이 그 사람을 고유하게 식별해 주듯이 함수의 서명은 그 함수를 고유하게 식별합니다. 서명은 간단히 말하면 함수 선언입니다. 반환값 형식, 함수 이름, 매개변수 형식들 등등 전체를 서명이라고 부릅니다. 그중 하나라도 바뀌면 서명이 바뀐 것입니다. 함수 원형(prototype)이라고도 합니다.
@@color(#04f): smart pointer@@; 세이프 포인터라고도 하는데 \n* 스마트포인터는 메모리 해제에 대한 프로그래머의 부담을 줄일수있는 일종의 한 방법으로, 스마트포인터 클래스는 객체에대한 포인터를 멤버로 갖고있으며 지역변수는 해당영역을 벗어나면 자동으로 소멸된다는 기초를 토대로 하고 있다.\n** 포인터를 선언하면 NULL로 초기화 하는 번거로움을 제어할 수 있다.\n** 포인터가 생성, 소멸, 복사, 대입, 역참조 등의 동작을 제어할 수 있다.\n** 블록을 빠져 나올때 지역변수처럼 자동으로 해제를 하게 해 준다.\n등의 장점이 있으나, 구현방식에 따라 제한사항이 있을 수 있어 주의해야한다.\n
@@color(#04f): Snap Shot @@(스냅샷) (→ 야호사전에서 펌)\n모든 메모리 바이트, 하드웨어 레지스터 및 상태 표시기를 비롯하여 메모리의 현재 상태를 저장한 것. 오류 발생 시 시스템을 복원하기 위해 정기적으로 저장된다.2. 파일이 업데이트되기 전에 저장된 복사본. 저장소 관리 프로그램의 일부인 스냅샷을 사용하면 이전 버전의 파일을 다시 가져와서 검토하거나 사용할 수 있다. \n
@@color(#04f): ▣ Waterfall(폭포) 모델 @@; 다음 단계의 코딩을 시작하기 전에 그 전의 모든 단계의 코드를 확정지어버리는 방식\n\n@@color(#04f): ▣ Wi-Fi(와이파이) @@ ; Wireless Fidelity\n홈 네트워킹, 휴대전화, 비디오 게임 등에 쓰이는 유명한 무선 기술의 상표 이름\n\n@@color(#04f): ▣ Wii MotionPlus @@;\nMotionPlus는 가속기와 센서 바가 결합된 Wii용 무선 컨트롤러의 최종 버전으로, 게이머의 팔 위치와 방향에 따른 궤도를 인식해 보다 현실감을 높여줄 것으로 기대를 모으고 있음\n&nbsp; &nbsp; -. 2009년 06월 현재 사용되고 있는 Wii 컨트롤러는 게이머의 움직임이 게임 내 캐릭터와 일치하지 않는 문제점이 있는데, MotionPlus를 통해 정확도가 대폭 개선될 것이라 기대됨\n&nbsp; &nbsp; -. MotionPlus 지원 타이틀은 SEGA의 'Virtua Tennis 2009'(5월 19일 발매), EA의 'Tiger Woods PGA Tour 10' (6월 16일 발매 예정), Nintendo의 'Wii Sports Resort' (6월 18일 발매 예정), EA의 'GrandSlam Tennis' (6월 18일 발매예정) 등으로 알려짐\n\n@@color(#04f): ▣ WPF @@; (Windows Presentation Foundation) @ 2010-01-06 @\n이전 코드네임 Avalon, 이전의 WinFx라 불리던 .Net Framework 3.0이상의 환경에서 동작하는 MS의 차세대 그래픽 표현 기술(Subsystem)\n\n@@color(#04f): ▣ w.r.t @@; the world (reference) coordinate \n\n@@color(#04f): ▣ WYSIWYG @@(위지윅, 보는 것이 얻는 것이다.); What you see is What you get.\n\n
@@color(#04f): VPN @@(Virtual Private Networking)\n
@@color(#04f): UML @@이란 무슨 언어인가요? - 텀즈 펌...(출처) http://www.terms.co.kr/ \n\nUML이란 소프트웨어 개발 과정에서 산출되는 산출물들을 명시, 개발, 문서화하기 위한 모델링 언어이다. UML은 Rational 사의 Grady Booch, James Rumbaugh에 의해 1994년 10월에 처음 개발에 착수되었다. 이후 1995년 10월에 Unified Method 0.8의 명칭으로 OOPSLA '95에서 발표되었으며, 이후 Ivar Jacobson이 UML 개발에 함께 협력하면서 1996년에 버전 0.9를 발표하였고, 1997년 11월에는 UML 1.1 이 OMG에 의해 표준으로 채택되었다. \n\nUML은 모델링 언어일뿐 메쏘드(또는 방법론)는 아니다. 메쏘드는 프로세스에 대한 정의와 각각의 업무들에 대한 지침과, 업무들 간의 순서들을 명시해야 하는 반면, 모델링 언어는 표기법(또는 다이어그램)들만을 제시하는 것이다. 따라서 UML은 소프트웨어 개발에 사용하기 위한 여러 다이어그램들을 정의하고 있으며, 또 다이어그램들의 의미들에 대해 정의하고 있다. \n\nUML은 여러가지 다이어그램들을 제시함으로써 소프트웨어 개발과정의 산출물들을 비주얼하게 제공하고, 개발자들과 고객 또는 개발자들 간의 의사소통을 원활하게 할 수 있도록 하고 있다. UML은 시스템을 모델링 할 수 있는 다양한 도구들을 제공하기 때문에, 도메인을 모델링하기가 훨씬 용이할 뿐만 아니라 모델링한 결과를 쉽게 파악할 수 있게 된다. 또한 산업계 표준으로 채택되었기 때문에 UML을 적용한 시스템은 신뢰성 있는 시스템으로 평가받을 수 있다. \n
@@color(#04f): ▣ Technical Director @@ 테크니컬 디렉터는 \n영화나 3D 애니메이션의 제작 과정에서 컴퓨터 그래픽스와 관련된 기술적 문제를 찾고 해결하는 전문가를 말한다. 기존에는 뚜렷한 구분되는 직종인 아티스트와 프로그래머의 역할을 동시에 하는 특징이 있는 새로운 직종 분야이다. 이 직종은 현재까지는 명확한 정의를 갖추어 나가는 상태이고 회사와 프로젝트 상황에 따라 직무가 다양한 경향이 있다.\n\n비슷한 직종인 그래픽 사이언티스트는 본인이 기술의 생산자로서 소프트웨어와 알고리즘을 통해 제작 과정의 문제를 해결하는 역할을 한다면 TD는 이미 주어진 기술에 대한 분석적 소비자로서 그것의 작동/적용 원리를 파악하여 이를 창조적으로 활용해서 문제를 해결하는 역할을 하고 나아가서 프로젝트의 성공을 이끈다. 따라서 테크니컬 디렉터는 세부 분야와 관련된 소프트웨어에 대한 해박한 지식과 경험이 필수적이다.\n\n@@color(#04f): ▣ TFT @@; Task Force Team\n회사에서 중요한 일, 새로운 일(프로젝트)을 추진할 때 각 부서 및 해당 부서에서 선발된 TASK에 관련된 인재들이 임시 팀을 만들어 활동하는 것을 말한다. 대기업은 TFT에 발탁되면 본인의 새로운 사무실에서 새로운 사람들과 그 일만 집중하다가 나중에 다시 본연의 임무로 돌아가던가 TFT을 정식 팀으로 승격시켜 전보 발령을 내는 경우도 있는데 중소기업은 일반 업무에 TFT업무가 부가되는 것이 보통이다.\n\n즉 task 목적을 가지고 그 목적을 추진하기 위해 임시로 모인 집단을 이야기할 때 쓰인다. 그 임무가 완수되면 곧바로 해체되는 집단으로 회사 등에서 많이 쓰이는 용어이다.\n\n@@color(#04f): ▣ Texture Splatting @@\n\n@@color(#04f): ▣ Traversal @@; 운행법 - ex. 이진 트리의 운행법(Traversal)\n\n@@color(#04f): ▣ Traversal behavior @@; 순회동작\n\n@@color(#04f): ▣ TSCC @@(TechSmith Screen Capture Codec Installation) - http://www.techsmith.com/\n&nbsp; &nbsp; TechSmith사에서 개발한 스크린 캡쳐용 코덱입니다.\n\n\n
/***\nTo use, add {{{[[TagglyTaggingStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also ViewTemplate, EditTemplate and TagglyTagging.\n***/\n/*{{{*/\n.tagglyTagged li.listTitle { display:none;}\n.tagglyTagged li { display: inline; font-size:90%; }\n.tagglyTagged ul { margin:0px; padding:0px; }\n.tagglyTagging { padding-top:0.5em; }\n.tagglyTagging li.listTitle { display:none;}\n.tagglyTagging ul { margin-top:0px; padding-top:0.5em; padding-left:2em; margin-bottom:0px; padding-bottom:0px; }\n\n/* .tagglyTagging .tghide { display:inline; } */\n\n.tagglyTagging { vertical-align: top; margin:0px; padding:0px; }\n.tagglyTagging table { margin:0px; padding:0px; }\n\n\n.tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }\n.tagglyTagging .button, .tagglyTagging .hidebutton { color:#aaa; font-size:90%; border:0px; padding-left:0.3em;padding-right:0.3em;}\n.tagglyTagging .button:hover, .hidebutton:hover { background:#eee; color:#888; }\n.selected .tagglyTagging .button { display:inline; }\n\n.tagglyTagging .hidebutton { color:white; } /* has to be there so it takes up space. tweak if you're not using a white tiddler bg */\n.selected .tagglyTagging .hidebutton { color:#aaa }\n\n.tagglyLabel { color:#aaa; font-size:90%; }\n\n.tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }\n.tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}\n.tagglyTagging ul ul li {margin-left:0.5em; }\n\n.editLabel { font-size:90%; padding-top:0.5em; }\n/*}}}*/\n
<!---\n| Name:|UpsideDownViewTemplate |\n| Purpose:|Stand on your head|\n--->\n<!--{{{-->\n<div class="tagglyTagging" macro="tagging"></div>\n<div style="background-image:url(../images/up.jpg);background-repeat:no-repeat;background-position:bottom right;" class='viewer' macro='view text wikified'></div>\n<div><span class='title' macro='view title'></span><span class="miniTag" macro="miniTag"></span></div>\n<div class="tagglyTagged" macro="tags"></div>\n<div class="toolbar">\n<span style="padding-right:0.75em;" class='fakeButton' macro="runMacroIfTagged Groceries toggleTag Buy"></span>\n<span style="padding-right:0.75em;" class='fakeButton' macro="runMacroIfTagged Flippable toggleTag UpsideDown"></span>\n<span style="padding-right:0.75em;" class='fakeButton' macro="runMacroIfTagged Plugins toggleTag systemConfig"></span>\n<span macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump newHere'></span></div>\n<br/>\n\n<!--}}}-->\n
@@color(#04f): 가치주 @@ = 현재 소외된 주식\n\ncf.성장주, "현명한 투자자" 벤저민 그레이엄 저\n• 시장 전망은 할 수 없다 -> 기업가치에 촛점\n• 단기 등락을 예측하는 것은 바보들의 짓이다.\n• 주식은 싸게 사서, 보유하는 것이다.\n
Tag popup:\n{{{\n<<tag features>>\n}}}\nwill result in <<tag features>>\n\nSlider:\n{{{\n<<slider chkTestSlider OptionsPanel options "Change TiddlyWiki advanced options">>\n}}}\nResults in this button <<slider chkTestSlider OptionsPanel options "Change TiddlyWiki advanced options">>\nThe parameters are:\n* cookie name to be used to save the state of the slider\n* name of the tiddler to include in the slider\n* title text of the slider\n* tooltip text of the slider\n\n----\nExtendedFormatting\n\nLike most wikis, TiddlyWiki supports a range of simplified character formatting:\n| !To get | !Type this |h\n| ''Bold'' | {{{''Bold''}}} |\n| --Strikethrough-- | {{{--Strikethrough--}}} |\n| __Underline__ | {{{__Underline__}}} (that's two underline characters) |\n| //Italic// | {{{//Italic//}}} |\n| Superscript: 2^^3^^=8 | {{{2^^3^^=8}}} |\n| Subscript: a~~ij~~ = -a~~ji~~ | {{{a~~ij~~ = -a~~ji~~}}} |\n| @@highlight@@ | {{{@@highlight@@}}} |\n<<<\nThe highlight can also accept CSS syntax to directly style the text:\n@@color:green;green coloured@@\n@@background-color:#ff0000;color:#ffffff;red coloured@@\n@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;border:1px solid black;Access any CSS style@@\n<<<\n\n//For backwards compatibility, the following highlight syntax is also accepted://\n{{{\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@\n}}}\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@
@@color(#04f): 객체는 @@ 데이터와 데이터를 처리하는 포로시저를 함께 묶은 단위이다. \n 프로시저를 일반적으로 메소드 또는 오퍼레이션이라고 부른다. 객체는 요청 또는 메시지를 클라이언트로부터 받으면 오퍼레이션을 수해한다.\n
/***\n!Sections in this Tiddler:\n*Generic rules\n**Links styles\n**Link Exceptions\n*Header\n*Main menu\n*Sidebar\n**Sidebar options\n**Sidebar tabs\n*Message area\n*Popup\n*Tabs\n*Tiddler display\n**Viewer\n**Editor\n*Misc. rules\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n font-size: .75em;\n font-family: arial,helvetica;\n position: relative;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n/*}}}*/\n/***\n''General Link Styles'' /%-----------------------------------------------------------------------------%/\n***/\n/*{{{*/\n.externalLink {\n text-decoration: underline;\n}\n\n.tiddlyLinkExisting {\n font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n font-weight: bold;\n}\n/*}}}*/\n/***\n''Exceptions to common link styles'' /%------------------------------------------------------------------%/\n***/\n/*{{{*/\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n\n.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 4.5em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 4.5em 0em 1em 1em;\n left: 0px;\n top: 0px;\n}\n\n.siteTitle {\n font-size: 3em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n/*}}}*/\n/***\n!Main menu /%==================================================%/\n***/\n/*{{{*/\n#mainMenu {\n position: absolute;\n left: 0;\n width: 10em;\n text-align: right;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.1em;\n}\n\n/*}}}*/\n/***\n!Sidebar rules /%==================================================%/\n***/\n/*{{{*/\n#sidebar {\n position: absolute;\n right: 3px;\n width: 16em;\n font-size: .9em;\n}\n/*}}}*/\n/***\n''Sidebar options'' /%----------------------------------------------------------------------------------%/\n***/\n/*{{{*/\n#sidebarOptions {\n padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n margin-left: 1em;\n padding: 0.5em;\n font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n font-weight: bold;\n display: inline;\n padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n margin: 0 0 .3em 0;\n}\n/*}}}*/\n/***\n''Sidebar tabs'' /%-------------------------------------------------------------------------------------%/\n***/\n/*{{{*/\n\n#sidebarTabs .tabContents {\n width: 15em;\n overflow: hidden;\n}\n\n/*}}}*/\n/***\n!Message area /%==================================================%/\n***/\n/*{{{*/\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\n}\n\n#messageArea a{\n text-decoration: underline;\n}\n/*}}}*/\n/***\n!Popup /%==================================================%/\n***/\n/*{{{*/\n.popup {\n font-size: .9em;\n padding: 0.2em;\n list-style: none;\n margin: 0;\n}\n\n.popup hr {\n display: block;\n height: 1px;\n width: auto;\n padding: 0;\n margin: 0.2em 0em;\n}\n\n.popup li.disabled {\n padding: 0.2em;\n}\n\n.popup li a{\n display: block;\n padding: 0.2em;\n}\n/*}}}*/\n/***\n!Tabs /%==================================================%/\n***/\n/*{{{*/\n.tabset {\n padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.tabContents {\n padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n margin: 0;\n padding: 0;\n}\n\n.txtMainTab .tabContents li {\n list-style: none;\n}\n\n.tabContents li.listLink {\n margin-left: .75em;\n}\n/*}}}*/\n/***\n!Tiddler display rules /%==================================================%/\n***/\n/*{{{*/\n#displayArea {\n margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n font-size: .9em;\n visibility: hidden;\n}\n\n.selected .toolbar {\n visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n font-style: italic;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 1.1em;\n}\n\n/* I'm not a fan of how button looks in tiddlers... */\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n* html .viewer pre {\n width: 99%;\n padding: 0 0 1em 0;\n}\n\n.viewer {\n line-height: 1.4em;\n padding-top: 0.5em;\n}\n\n.viewer .button {\n margin: 0em 0.25em;\n padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n padding: 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n margin-left: 0.5em;\n font-size: 1.2em;\n line-height: 1.4em;\n overflow: auto;\n}\n\n.viewer code {\n font-size: 1.2em;\n line-height: 1.4em;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n display: block;\n width: 100%;\n font: inherit;\n}\n\n.editorFooter {\n padding: 0.25em 0em;\n font-size: .9em;\n}\n\n.editorFooter .button {\npadding-top: 0px; padding-bottom: 0px;}\n\n.fieldsetFix {border: 0;\npadding: 0;\nmargin: 1px 0px 1px 0px;\n}\n/*}}}*/\n/***\n!Misc rules /%==================================================%/\n***/\n/*{{{*/\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n outline: 0;\n}\n\n.zoomer {\n font-size: 1.1em;\n position: absolute;\n padding: 1em;\n}\n\n.cascade {\n font-size: 1.1em;\n position: absolute;\n overflow: hidden;\n}\n/*}}}*/
/***\n!Colors Used\n*@@bgcolor(#8cf): #8cf - Background blue@@\n*@@bgcolor(#18f): #18f - Top blue@@\n*@@bgcolor(#04b): #04b - Mid blue@@\n*@@bgcolor(#014):color(#fff): #014 - Bottom blue@@\n*@@bgcolor(#ffc): #ffc - Bright yellow@@\n*@@bgcolor(#fe8): #fe8 - Highlight yellow@@\n*@@bgcolor(#db4): #db4 - Background yellow@@\n*@@bgcolor(#841): #841 - Border yellow@@\n*@@bgcolor(#703):color(#fff): #703 - Title red@@\n*@@bgcolor(#866): #866 - Subtitle grey@@\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #fff;\n color: #000;\n}\n\na{\n color: #04b;\n}\n\na:hover{\n background: #04b;\n color: #fff;\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: #703;\n background: #8cf;\n}\n\n.button {\n color: #014;\n border: 1px solid #fff;\n}\n\n.button:hover {\n color: #014;\n background: #fe8;\n border-color: #db4;\n}\n\n.button:active {\n color: #fff;\n background: #db4;\n border: 1px solid #841;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #04b;\n}\n\n.headerShadow {\n color: #000;\n}\n\n.headerShadow a {\n font-weight: normal;\n color: #000;\n}\n\n.headerForeground {\n color: #fff;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #8cf;\n}\n\n/*}}}*/\n/***\n!General tabs /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected{\n color: #014;\n background: #eee;\n border-left: 1px solid #ccc;\n border-top: 1px solid #ccc;\n border-right: 1px solid #ccc;\n}\n\n.tabUnselected {\n color: #fff;\n background: #999;\n}\n\n.tabContents {\n color: #014;\n background: #eee;\n border: 1px solid #ccc;\n}\n\n.tabContents .button {\n border: 0;}\n\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n}\n\n#sidebarOptions input {\n border: 1px solid #04b;\n}\n\n#sidebarOptions .sliderPanel {\n background: #8cf;\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: #04b;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #fff;\n background: #04b;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #04b;\n background: #fff;\n}\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n border: 1px solid #841;\n background: #db4;\n color: #014;\n}\n\n#messageArea .button {\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: #014;\n background: #fff;\n}\n\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #18f;\n border: 1px solid #04b;\n}\n\n.popup hr {\n color: #014;\n background: #014;\n border-bottom: 1px;\n}\n\n.popup li.disabled {\n color: #04b;\n}\n\n.popup li a, .popup li a:visited {\n color: #eee;\n border: none;\n}\n\n.popup li a:hover {\n background: #014;\n color: #fff;\n border: none;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n color: #866;\n}\n\n.title {\n color: #703;\n}\n\n.subtitle {\n color: #866;\n}\n\n.toolbar {\n color: #04b;\n}\n\n.tagging, .tagged {\n border: 1px solid #eee;\n background-color: #eee;\n}\n\n.selected .tagging, .selected .tagged {\n background-color: #ddd;\n border: 1px solid #bbb;\n}\n\n.tagging .listTitle, .tagged .listTitle {\n color: #014;\n}\n\n.tagging .button, .tagged .button {\n border: none;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.sparkline {\n background: #8cf;\n border: 0;\n}\n\n.sparktick {\n background: #014;\n}\n\n.errorButton {\n color: #ff0;\n background: #f00;\n}\n\n.cascade {\n background: #eef;\n color: #aac;\n border: 1px solid #aac;\n}\n\n.imageLink, #displayArea .imageLink {\n background: transparent;\n}\n\n/*}}}*/\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n border: 1px solid #db4;\n}\n\n.viewer blockquote {\n border-left: 3px solid #666;\n}\n\n.viewer table {\n border: 2px solid #333;\n}\n\n.viewer th, thead td {\n background: #db4;\n border: 1px solid #666;\n color: #fff;\n}\n\n.viewer td, .viewer tr {\n border: 1px solid #666;\n}\n\n.viewer pre {\n border: 1px solid #fe8;\n background: #ffc;\n}\n\n.viewer code {\n color: #703;\n}\n\n.viewer hr {\n border: 0;\n border-top: dashed 1px #666;\n color: #666;\n}\n\n.highlight, .marked {\n background: #fe8;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor input {\n border: 1px solid #04b;\n}\n\n.editor textarea {\n border: 1px solid #04b;\n width: 100%;\n}\n\n.editorFooter {\n color: #aaa;\n}\n\n/*}}}*/
@@color(#04f): 교차판정 @@방식(충돌체크)\n-1. Axis Aligned Bounding Box ; 삼각형, 구, 축에 나란한 경계 박스\n-2. Oriented Bounding Box ; 방향을 가지는 경계 박스\n-3. Discrete Oriented Polytopes ; 유한한 방향을 가지는 다각형
@@color(#04f): 디더링 @@(dithering)은\n*서로 다른 색의 픽셀들의 연달아 놓아서 합성된 색이 나타나게 하는 것으로, \n**하드웨어에서 실제로 제공되는 것보다 더 많은 색들이 존재하는 것처럼 보이게 하기 위한 것이다.\n***컴퓨터 그래픽스(CG)에서 표시 장치나 인쇄기의 능력(해상도)을 초과하는 다계조(多階調)의 색의 화상을 근사하게 생성하기 위하여 사용되는 기술로,\n***예로 컬러 표시 장치나 인쇄기에서는 적색 도트와 백색 도트의 비율을 어떻게 하느냐에 따라 다양한 계조의 분홍색으로 보이게 한다.\n*디더링은 하프톤 화상(halftone image)과 비슷한 화상을 생성하며,\n**디더링은 저해상도에서 컴퓨터 도형 처리의 사실감을 높이고 매끄럽지 못하고 계단 모양으로 울퉁불퉁한 윤곽선이나 대각선을 눈에 띄지 않게 하기 위하여 사용된다.흔히 디더법이라고 도 한다. \n**화면에 어떤 색상을 표시할 수 없는 경우, \n***표시할 수 있는 색상들의 화소를 모아 되도록 비슷한 색상을 만들어 내는 것을 말한다. 예를 들어 회색은 회색의 화소를 사용하는 것이 아니라 검은색과 흰색 화소를 섞는 비율을 조절하여 보여주는 것으로 대체할 수 있다. \n**웹 그래픽의 경우 파일의 크기를 줄이기 위해 256 가지 색깔만 사용하도록 제한을 두면서 \n***그 외의 색은 디더링으로 나타내는 경우가 많다. 화면이나 프린터에서 모든 색을 표현할 수 있는 것이 아니기 때문에 있는 색을 혼합하여 사용하는 편법을 쓰는 것이라고 생각해도 틀리지 않다. \n&nbsp; &nbsp; cf.Dither Strength : 수치가 클수록 렌더링 입자가 커집니다
@@color(#04f): 래스터라이제이션 @@(rasterization)이란\n그래픽 (삼각형과 같은) 프리미티브를 가지고 실제로 스크린에 한 픽셀씩 그리는 것이다.\n
Part/ Chapter/ Section\n!!! 대분류-한글\n|<<siteMap Chapter_가 . openSliders>><<siteMap Chapter_나 . openSliders>><<siteMap Chapter_다 . openSliders>><<siteMap Chapter_라 . openSliders>><<siteMap Chapter_마 . openSliders>>|<<siteMap Chapter_바 . openSliders>><<siteMap Chapter_사 . openSliders>><<siteMap Chapter_아 . openSliders>><<siteMap Chapter_자 . openSliders>><<siteMap Chapter_차 . openSliders>>|<<siteMap Chapter_카 . openSliders>><<siteMap Chapter_타 . openSliders>><<siteMap Chapter_파 . openSliders>><<siteMap Chapter_하 . openSliders>>|\n|noBorder threeCol|k\n\n!!! 대분류-영어\n|<<siteMap Chapter_A . sliders>><<siteMap Chapter_B . sliders>><<siteMap Chapter_C . sliders>><<siteMap Chapter_D . sliders>><<siteMap Chapter_E . sliders>><<siteMap Chapter_F . sliders>><<siteMap Chapter_G . sliders>><<siteMap Chapter_H . sliders>><<siteMap Chapter_I . sliders>>|<<siteMap Chapter_J . sliders>><<siteMap Chapter_K . sliders>><<siteMap Chapter_L . sliders>><<siteMap Chapter_M . sliders>><<siteMap Chapter_N . sliders>><<siteMap Chapter_0 . sliders>><<siteMap Chapter_P . sliders>><<siteMap Chapter_Q . sliders>><<siteMap Chapter_R . sliders>>|<<siteMap Chapter_S . sliders>><<siteMap Chapter_T . sliders>><<siteMap Chapter_U . sliders>><<siteMap Chapter_V . sliders>><<siteMap Chapter_W . sliders>><<siteMap Chapter_X . sliders>><<siteMap Chapter_Y . sliders>><<siteMap Chapter_Z . sliders>>|\n|noBorder threeCol|k\n
TiddlyWiki lets you write ordinary HTML by enclosing it in {{{<html>}}} and {{{</html>}}}:\n\n<html>\n<a href="javascript:;" onclick="onClickTiddlerLink(event);" tiddlyLink="TiddlyWiki" style="background-color: yellow;">Link to wikiwords from HTML</a>\n</html>\n\nThe source for the above is:\n\n{{{\n<html>\n<div style="background-color: yellow;">\n<a href="javascript:;" onclick="onClickTiddlerLink(event);" tiddlyLink="Macros">Link to wikiwords from HTML</a>\n</div>\n</html>\n}}}\n\nHTML can enable some exotic new features (like [[embedding GMail and Outlook|http://groups.google.com/group/TiddlyWiki/browse_thread/thread/d363303aff5868d0/056269d8409d121f?lnk=st&q=embedding+gmail&rnum=1#056269d8409d121f]] in a TiddlyWiki). However it doesn't work for some JavaScript code libraries; see CustomMarkup for another way to include custom HTML in your TiddlyWiki.\n\n----\nHere's one way to get a Flickr badge in TiddlyWiki:\n\n<html>\n<a href="http://www.flickr.com" style="text-align:center;">www.<strong style="color:#3993ff">flick<span style="color:#ff1c92">r</span></strong>.com</a><br>\n<iframe style="background-color:#ffffff; border-color:#ffffff; border:none;" width="113" height="151" frameborder="0" scrolling="no" src="http://www.flickr.com/apps/badge/badge_iframe.gne?zg_bg_color=ffffff&zg_person_id=35468148136@N01" title="Flickr Badge"></iframe>\n</html>\n\nHere's the HTML code to insert in a tiddler:\n{{{\n<html>\n<a href="http://www.flickr.com" style="text-align:center;">www.<strong style="color:#3993ff">flick<span style="color:#ff1c92">r</span></strong>.com</a><br>\n<iframe style="background-color:#ffffff; border-color:#ffffff; border:none;" width="113" height="151" frameborder="0" scrolling="no" src="http://www.flickr.com/apps/badge/badge_iframe.gne?zg_bg_color=ffffff&zg_person_id=35468148136@N01" title="Flickr Badge"></iframe>\n</html>\n}}}\n\nYou'll need to know your Flickr person ID, which should replace the value "35468148136@N01" in the HTML. There's a useful [[Flickr idGettr|http://eightface.com/code/idgettr/]] to help with this.
Entities in HTML documents allow characters to be entered that can't easily be typed on an ordinary keyboard. They take the form of an ampersand (&), an identifying string, and a terminating semi-colon (;). There's a complete reference [[here|http://www.htmlhelp.com/reference/html40/entities/]]; some of the more common and useful ones are shown below. Also see [[Paul's Notepad|http://thepettersons.org/PaulsNotepad.html#GreekHtmlEntities HtmlEntitiesList LatinHtmlEntities MathHtmlEntities]] for a more complete list.\n\n|>|>|>|>|>|>| !HTML Entities |\n| &amp;nbsp; | &nbsp; | no-break space | &nbsp;&nbsp; | &amp;apos; | &apos; | single quote, apostrophe |\n| &amp;ndash; | &ndash; | en dash |~| &amp;quot; | " | quotation mark |\n| &amp;mdash; | &mdash; | em dash |~| &amp;prime; | &prime; | prime; minutes; feet |\n| &amp;hellip; | &hellip; | horizontal ellipsis |~| &amp;Prime; | &Prime; | double prime; seconds; inches |\n| &amp;copy; | &copy; | Copyright symbol |~| &amp;lsquo; | &lsquo; | left single quote |\n| &amp;reg; | &reg; | Registered symbol |~| &amp;rsquo; | &rsquo; | right single quote |\n| &amp;trade; | &trade; | Trademark symbol |~| &amp;ldquo; | &ldquo; | left double quote |\n| &amp;dagger; | &dagger; | dagger |~| &amp;rdquo; | &rdquo; | right double quote |\n| &amp;Dagger; | &Dagger; | double dagger |~| &amp;laquo; | &laquo; | left angle quote |\n| &amp;para; | &para; | paragraph sign |~| &amp;raquo; | &raquo; | right angle quote |\n| &amp;sect; | &sect; | section sign |~| &amp;times; | &times; | multiplication symbol |\n| &amp;uarr; | &uarr; | up arrow |~| &amp;darr; | &darr; | down arrow |\n| &amp;larr; | &larr; | left arrow |~| &amp;rarr; | &rarr; | right arrow |\n| &amp;lArr; | &lArr; | double left arrow |~| &amp;rArr; | &rArr; | double right arrow |\n| &amp;harr; | &harr; | left right arrow |~| &amp;hArr; | &hArr; | double left right arrow |\n\nThe table below shows how accented characters can be built up by subsituting a base character into the various accent entities in place of the underscore ('_'):\n\n|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>| !Accented Characters |\n| grave accent | &amp;_grave; | &Agrave; | &agrave; | &Egrave; | &egrave; | &Igrave; | &igrave; | &Ograve; | &ograve; | &Ugrave; | &ugrave; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |\n| acute accent | &amp;_acute; | &Aacute; | &aacute; | &Eacute; | &eacute; | &Iacute; | &iacute; | &Oacute; | &oacute; | &Uacute; | &uacute; | &nbsp; | &nbsp; | &Yacute; | &yacute; | &nbsp; | &nbsp; |\n| circumflex accent | &amp;_circ; | &Acirc; | &acirc; | &Ecirc; | &ecirc; | &Icirc; | &icirc; | &Ocirc; | &ocirc; | &Ucirc; | &ucirc; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |\n| umlaut mark | &amp;_uml; | &Auml; | &auml; | &Euml; | &euml; | &Iuml; | &iuml; | &Ouml; | &ouml; | &Uuml; | &uuml; | &nbsp; | &nbsp; | &Yuml; | &yuml; | &nbsp; | &nbsp; |\n| tilde | &amp;_tilde; | &Atilde; | &atilde; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &Otilde; | &otilde; | &nbsp; | &nbsp; | &Ntilde; | &ntilde; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |\n| ring | &amp;_ring; | &Aring; | &aring; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |\n| slash | &amp;_slash; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &Oslash; | &oslash; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |\n| cedilla | &amp;_cedil; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &Ccedil; | &ccedil; |
Several [[Macros]] including the TodayMacro take a DateFormatString as an optional argument. This string can be a combination of ordinary text, with some special characters that get substituted by parts of the date:\n* {{{DDD}}} - day of week in full (eg, "Monday")\n* {{{ddd}}} - short day of week (eg, "Mon")\n* {{{DD}}} - day of month\n* {{{0DD}}} - adds a leading zero\n* {{{DDth}}} - adds a suffix\n* {{{WW}}} - ISO-8601 week number of year\n* {{{0WW}}} - adds a leading zero\n* {{{MMM}}} - month in full (eg, "July")\n* {{{mmm}}} - short month (eg, "Jul")\n* {{{MM}}} - month number\n* {{{0MM}}} - adds leading zero\n* {{{YYYY}}} - full year\n* {{{YY}}} - two digit year\n* {{{wYYYY}}} - full year with respect to week number\n* {{{wYY}}} two digit year with respect to week number\n* {{{hh}}} - hours\n* {{{0hh}}} - adds a leading zero\n* {{{hh12}}} - hours in 12 hour clock\n* {{{0hh12}}} - hours in 12 hour clock with leading zero\n* {{{mm}}} - minutes\n* {{{0mm}}} - minutes with leading zero\n* {{{ss}}} - seconds\n* {{{0ss}}} - seconds with leading zero\n* {{{am}}} or {{{pm}}} - lower case AM/PM indicator\n* {{{AM}}} or {{{PM}}} - upper case AM/PM indicator
@@color(#04f): 목표관리 @@(MBO:Management By Objective through self-control)\n참고; [[핵심성공요인(CSF)]]\n\n기업의 인간적 측면에 바탕을 두고 효율적 경영관리체제를 실현하려고 하는 경영관리의 수법 및 경영이념이다.이것은 조직목표와 개인목표를 명확하게 설정함으로써 각자의 능력을 개발하고 의욕을 높이며 또한 각자의 힘을조직력으로 집중 발휘시킴으로써 효율적인 경영활동을 가능하게 하려고 하는 것이다.\n*목표관리의 개념 \n**목표관리란 조직의 목표설정에서부터 책임의 확정, 실적의 평가, 조직단위 또는 개인의 활동에 이르기까지 조직의 상·하 구성원과 함께 참여하여 공동으로 조직의 제반문제에 대해 결정하는 것이다. 이 때의 목표는 단기간의 구체적 목표를 말한다. 즉, 목표관리는 상·하 간의 참여적 관리라고 볼 수 있다. \n*관리 방법\n**목표관리는 조직목표와 개인목표를 어떻게 연계시킬 것인가가 중요하다. 그러기 위해서는 앞에서 학습한 방법(Tree, Budget, Probability, Task, Cycle)을 잘 활용해야 한다. 그리고 시스템을 중시하는 조직문화 창조가 목표관리의 효율적인 운영방법이 되기 때문에 현장을 실질적으로 통솔하는 중간관리자들의 역할이 매우 중요하다.\n목표관리에서는 정량목표, 정성목표, 스킬 매트릭스의 3개 기본축이 있다. 이 중 스킬 매트릭스는 더 높은 성과를 올리기 위해서는 어떠한 능력 요건이 필요한지 규정하는 것이다. \n * 직무에 필요한 요건은 보통 능력(업무수행능력, 문제해결 능력, 의사소통)과 의사(지도/육성, 향상심, 책임감, 협조성)의 두 가지 분야로 나뉜다. 명확한 전략의 공통점은 핵심역량이 명확해서 그것을 무기로 삼고 있다는 점이다. \n\n그리고 회사의 독자적인 핵심역량에 비추어 개인이 갖추어야 할 역량도 독자적인 것이어야 한다. \n * 역량의 기본 관점은 인재에 대한 벤치마킹이다. 높은 실적을 올리는 뛰어난 사원의 특성을 모델화하여 평가, 보상, 능력개발, 채용, 배치 등 인사관리 시스템 전반에 활용해야 한다.\n\n인사평가의 3가지 기능은 조직이 지향하는 방향으로 사원의 행동을 이끌어,\n * 인재를 육성하고, 조직을 강화하며, 처우를 결정하기 위한 기초 정보를 얻는 것이다. 평가하는 것은 정량목표, 정성목표, 스킬 매트릭스 3가지이며 능력주의, 성과주의 중 어느 쪽을 지향하는가에 따라 비중이 달라진다.\n\n평가는 ‘달성도 x 비중 x 난이도 x 노력도’라는 공식으로 산출한다. \n * 달성도는 연간 매출목표가 1억 5,000만 엔이었는데 실적이 1억 2,000만 엔이라면 80%가 된다. \n * 비중은 목표의 수가 3개라면 전체를 100으로 했을 때 각각의 목표에 몇 %의 비중을 부여하는가이다. \n * 난이도란 조정항목이며 노력도는 시장과 환경이 순풍인가 역풍인가를 참작하기 위한 항목으로 이 두 가지 항목은 잘 사용하지 않는다. \n\n목표관리는 보통 6개월 주기로 실시하는데 가능한 한 사업연도(상반기, 하반기)에 맞추는 것이 좋으며 \n * 주기 말에 성과를 평가하여 다음 기의 목표를 잡는 것이 좋다.\n
@@color(#04f): 속력과 속도 @@ \n개체가 주어진 시간 동안 주어진 거리를 이동한다면, \n&nbsp; &nbsp; 물리적인 관점에서 이것은 개체의 속력이고,\n&nbsp; &nbsp; 만일 방향을 정의한다면 이것은 개체의 속도이다.[ 참고; "DirectX 실시간 렌더링 실전테크닉 ]
@@color(#04f): 스키마 @@(Schema)\n* 사람들은 어떠한 사실에 대해서 아무런 순서없이 알고 있다기 보다는 특별한 주제에 대해서 보통 체계화된 지식을 가지고 있게 된다.\n** 이렇게 하나의 주제에 대해 체계화된 지식 구조를 스키마(schema, 복수는 schemata)라 한다. 예를 들어, 빨래를 하고, 생일파티를 하고, 식당에서 식사를 하는 등과 같은 익숙하고도 고정된 상황에 대해 체계적으로 알고 있는 지식을 말한다.\n* 여러종류의 개념들에 대해 이렇듯 고정화되고 체계화된 스키마가 존재합니다. \n** 이러한 모든 스키마는 복잡한 아이디어들을 체계화하는 하나의 틀을 제공하기 때문에, 언어를 이해하고 처리하는데 중요한 역할을 하게 된다.
@@color(#04f): 스프라이트 @@(Sprite)\n* 일정 사이즈의 그래픽 데이터를 화면 상에서 자유자재로 배치하거나 고속으로 움직일 수 있는데, 이 그래픽 데이터를 '스프라이트' 라고 한다. \n** 컴퓨터에서는 화면 전체가 한 장의 그래픽 데이터로 구성되어 있기 때문에 액션 게임의 캐릭터 등을 움직이기 위해서는 캐릭터의 위치가 변화된 그림을 계속해서 만들어 표시해야 한다. \n* 이것을 소프트웨어적로 행하게 되면 컴퓨터가 처리해야 하는 분량이 상당하게 되는데, \n** 하드웨어적인 스프라이트 기능을 가지고 있는 게임기에서는 배경의 그림 위에 독립해서 캐릭터의 그림을 배치하고 자유자재로 위치를 변경할 수 있다.\n\n@@color(#04f): 스프라이트 에디터 @@\n* 스프라이트 Editor란, 보통 게임에서 맵에 찍히는 타일이외의 그림 데이터를 만들어주는 Editor이다. \n** 게임의 주인공이나 그 외의 캐릭터와 날아다니는 새, 예쁜 나비나 강아지 등도 만들어 주기도 하고, 여러 개의 그림들을 묶어, 방향에 따른 모습이나 동작 등을 만들어 하나의 새로운 캐릭터를 만들어 준다.
@@color(#04f): ▣ 아젠다 @@영어 사전상으로는,...\n&nbsp; &nbsp; agenda (agenda의 단수 취급이 확립되어 왔으므로 복수형은 ~s가 일반적임_보통 단수 취급)\n의사 일정, 협의 사항; 비망록 the first item on the ~ 의사 일정의 제1항목,......\n아젠다(agenda)란 '토의할 일련의 과제들', '해야할 일련의 일들'이란 뜻을 가진 단어로, 라틴어의 'agere(하다)'에서 유래한 영어\n
@@color(#04f): 오픈 소스 - 라이센스 @@\n# GNU: General Public License (GPL) \n## 파생물도 GPL을 따라야 함 \n## 소스를 반드시 구할 수 있어야 함(변경 포함) \n## Richard M. Stallman이 주창함 \n## LGPL과 LGPL2\n# BSD License \n## 파생물은 별도의 라이센스 부여 가능 \n## 그럴 필요 없음. 상업적 사용 가능 \n## BSD UNIX의 라이센스 조항 \n## 여러가지 변종 존재(FreeBSD, X, Artistic etc..)\n# Artistic License, Mozilla Public License(MPL), FreeBSD License, XFree86 License 등 \n
@@color(#04f): 이모티콘 @@(Emoticon)\n
@@color(#04f): 인덱스버퍼 @@(Index Buffer)는 정점의 인덱스를 보관하기 위한 전용 버퍼\n# 정점을 여러 번 나열하는 것보다 메모리 소모량이 적다.\n# 자주 사용되는 정점을 캐쉬(cache)에 저장해서 더 높은 효율을 낼 수 있다.\n** 실제로는 캐시 적중 알고리즘에 따라서 정점을 최적화 해야만 한다.\n# 구형 그래픽카드(TNT급)들이 16비트 인덱스만(WORD형)을 지원한다.\n** 그릴 수 있는 폴리곤의 숫자는 2에 16승 = 64k가 되며, D3DFMT_INDEX16을 사용한다.\n\n▶ 관련사항; [[버텍스버퍼]]\n
@@color(#04f): 인스턴스 @@(instance)는\n추상화 개념 또는 클래스 객체, 컴퓨터 프로세스 등과 같은 템플릿이 실제 구현된 것이다.\n(출처; http://www.terms.co.kr/)
@@color(#04f): 인자 기반 탐색 @@(argument-dependent lookup) \n'''쾨니그 탐색(Koenig lookup)''' - 어떤 함수에 어떤 타입의 인자가 있으면, 그 함수의 이름을 찾기 위해 해당 타입의 인자가 위치한 네임스페이스 내부의 이름을 탐색해 들어간다는 간단한 규칙이다. \nADL(Argument Dependent Lookup)이란 약자로 많이 불린다. '쾨니그'의 Koenig는 C++ 표준화 위원회 임원이자 이 규칙을 창안한 앤드류 쾨니그(Andrew Koenig)의 이름에서 따온 것이다.
@@color(#04f): 영속성 @@(Persistence)이란\n객체의 상태를 저장한 후 나중에 그 상태를 복원시키는 동작이다. 영속성은 MFC에서는 Serialization이란 용어로 불린다. 만약 개발자가 영속성을 사용하게 된다면, 개발자는 file 형식(format)에 대한 아무런 걱정 없이 read/write할 수 있다. 단지 객체를 read/write하는 순서만 맞추어 주면 된다.\n
@@color(#04f): 버텍스버퍼 @@(vertex buffer)란\n정점을 모아두는 일종의 메모리로 비디오 메모리와 시스템 메모리 두 가지의 메모리를 사용한다.\n* 비디오 메모리; 비디오카드의 GPU(Graphic Processing Unit)에 의해서 정점 셰이더, T&L 등의 강력한 하드웨어 가속을 사용할 수 있지만, 자체의 메모리 용량을 벗어날 수 없으며, 게다가 텍스처와 함께 사용해야 하기 때문에 사용 가능한 메모리는 더욱 적을 수밖에 없다.\n* 시스템 메모리; T&L등의 강력한 하드웨어 가속은 사용할 수 없지만, 풍부한 용량으로 상대적으로 많은 정점 버퍼를 관리할 수 있다.\n\n▶ 관련사항; [[인덱스버퍼]]
@@color(#04f): 추상화 @@(abstraction)\n주어진 문제나 시스템 중에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는 작업. 이러한 과정은 원래 문제에서 구체적인 사항은 되도록 생략하고 핵심이 되는 원리만을 따진다.\n
@ 2011-03-28 @\n클라우드 게이밍은 오직 고속 네트워크망과 디스플레이만으로 모든 수치 연산과 파일 저장을 대신하는 원격 시스템을 통해 게임을 플레이한다.\n\n▷ 장점 ; \n&nbsp; &nbsp; -.클라이언트를 다운받을 필요가 없으며 고사양 게임을 즐기기 위해 매번 PC를 업그레이드 하지 않아도 된다.\n&nbsp; &nbsp; -.굳이 고정돼있는 PC가 아니더라도 스마트TV나 태블릿 PC등 다양한 유무선 기기들을 활용(미래의 게임 플랫폼으로 각광)\n&nbsp; &nbsp; -.게임 그래픽의 발전은 CPU가 PC에서 차지하는 비중만큼 GPU의 위상을 급격하게 끌어올린 가장 큰 이유라고 할 수 있다. 하지만 클라우드 게이밍 기반에서는 PC용 CPU와 GPU에게 더 이상 높은 스펙을 요구하지 않는다. (PC용 하드웨어 제조업체에게도 큰 타격)\n\n▷ 단점 ; \n&nbsp; &nbsp; -.제대로 된 클라우드 게이밍을 구현하기 위해 엄청난 양의 데이터를 처리할 수 있는 서버가 필요\n&nbsp; &nbsp; -.고사양을 요구하는 하이엔드급 온라인 게임을 원활하게 클라우드 게이밍 기반으로 서비스하기 위해서는 기가 단위의 인터넷 회선이 필요\n&nbsp; &nbsp; -.단순히 화면전달이 아닌 유저의 컨트롤 지연 문제를 해결하는 것도 과제 \n\n클라우드 게이밍 서비스가 갖고 있는 장점이 오히려 발목을 잡을 수도 있다는 의견도 있다. 고사양 게임을 유저가 보유한 기기의 스펙에 구애받지 않고 즐길 수 있다는 장점이 점차 가벼운 게임을 선호하고 있는 지금의 기호와 맞아 떨어지지 않을 수도 있다는 것이다. 결국 클라우드 게이밍은 고사양을 요구하는 게임에 적합한 플랫폼이지만 SNG나 스마트폰 자체에서 운용되는 가벼운 게임들이 더 각광받으면서 마니아들만 즐기는 플랫폼으로 남을 수도 있다는 의견이다.
@@color(#04f): 타이밍 @@\n* 애니메이션이 시스템 프레임에 의존할 때 문제점\n** 개체에게 프레임당 주어진 거리만큼 이동하라고 지시할 경우, \n*** 프레임 속도가 빨라질수록 개체 속도도 빨라져 시스템에 독립된 일정한 속도를 유지할 수 없다.\n*** 대안으로 프레임 속도를 잠그는 방법도 있지만 바람직하지 못하며 애니메이션을 프로그램의 시간에 의존하도록 해야하며 어떠한 애니메이션 기법도 프레임이 아닌 시간에 근거해야만 한다.\n* 저속 타이머는 애니메이션에 더 적합하면\n** 고속 타이머는 프레임 속도와 같은 통계량에 더 좋다.\n* 높은 정밀도 값을 질의하는 것이 훨씬 더 시간이 오래 걸리기 때문에,\n** 실제로 매우 짧은 시간 간격을 측정하기 위해 고속 타이머를 사용할 수 없다.\n** 이것은 더 긴 시간 간격 동안에 작은 변화를 보기 위해 사용할 수 있다.\n* 이전 프레임을 기준으로 하지 않고 시작 시간을 기준으로 하여 경과된 시간을 계산함으로써\n** 프레임 간에 반올림 오차를 피할 수 있다.\n[ 참고; "DirectX 실시간 렌더링 실전테크닉 "제 38장 완벽한 타이밍" ]\n
@@color(#04f): 트리거 @@(trigger)\n* 트리거의 예를 들면, \n** 데이터베이스 내에서 참조의 무결성을 유지하기 위해 어떤 프로시저를 자동으로 호출하는 것과 같은 행동이다. 트리거는 사용자가 데이터를 삽입하거나 삭제하는 등과 같은, 데이터 변경에 관한 시도를 했을 때 효력을 나타낸다. \n* 트리거는 지정된 어떤 변경이 시도되면, 일련의 행동들을 취하도록 시스템에게 알릴 수 있다. \n** 트리거는 부정확하고, 허가 받지 않았으며, 일관성이 없는 데이터 변경을 방지함으로써, 데이터베이스의 무결성을 유지하는데 도움을 준다. \n
@@color(#04f): 파일 확장자 @@(filename extension)\n\n@@color(#04f): .fxo @@\n&#8226; Microsoft DirectX pre-compiled pixel/vertex shader.(from www.file-extensions.org)\n&#8226; Gamebryo can load either text-based FX shaders, or binary FX shaders that have been compiled with fxc.exe. Compiled FX shaders should be use the extension ".FXO" to distinguish them from uncompiled FX shaders.(from Gamebryo 2.5 documentation )\n
@@color(#04f): 패딩 @@(padding)이란? \n패딩은 데이타를 일정 단위의 크기를 맞추기 위하여 추가되는 더미 데이타를 말한다. 예를 들어 데이터의 단위를 40바이트로 정했다면 실제 데이타가 36바이트라도 나머지 4바이트를 쓰레기 값으로 채워서 40바이트를 맞추게 된다. \n이런 데이터는 컴퓨터나 네트웍의 처리 단위와 관련이 있다... Visual C++ 프로그래머라면 #pragma pack을 사용하여 이러한 구조체 얼라인먼트 문제를 해결하는 방법을 알고 있을 것이다. 하지만 네트웍 패킷을 설계하는데 있어서는 패딩을 사용하여 특정 환경에 종속적이지 않은 방법을 선택하는 것이 좋다.
@@color(#04f): 포트폴리오 @@(portfolio) - 출처; 야후백과사전\n사진가나 아티스트·표현자(表現者)·크리에이터 등이 자신들의 작품을 정리하여 정리한 파일. 패션사진가·그래픽디자이너들 사이에서는 북(book)으로 통용되는 경우도 있다. 일반적인 출판물·사진집 등과는 차이가 있어 어디까지나 교사·갤러리직원·미술관직원·편집자와 같은 제3자에게 자신의 작품세계에 대한 이해를 구하는 기능으로 활용되는데, 작품은 몇몇 시리즈 가운데 대표작을 골라 전체를 간단히 이해할 수 있도록 편성된다. 작가의 연락처·경력·작품의도와 같은 문자정보도 포함된다. 작자는 이 포트폴리오를 일상적으로 만들면서 테마를 보다 명확히 축약해나가고, 편집을 더하고, 다음 작품의 힌트도 얻을 수 있는 장점이 있다.\n\n@@color(#04f): 포트폴리오 @@(portfolio) - 출처; 야후백과사전\n주식투자에서 위험을 줄이고 투자수익을 극대화하기 위해 여러 종목에 분산투자하는 방법. 본래 간단한 서류가방이나 자료수집철을 뜻하는 말로, 주식투자에서는 투자자산의 집합이라는 의미로 사용된다. 자산 운용에는 공격형(투기형) 투자와 방어형 투자의 두 방향이 있다.
1.@@color(#04f): 프레이밍 @@(framing)이란? - 출처; Network Programming For Microsoft Windows 2, 15장\n낮은 레벨의 통신 프로토콜에서 데이터의 전송 단위를 프레임(frame)이라고 하고 이런 프레임에 데이터를 담거나 추출하는 과정을 프레이밍(framing)이라고 한다. 예를 들면 이더넷 프레임(Ethernet frame)은 IP 패킷을 담고 있다. 또한 IP가 이더넷이 아닌 시리얼 통신을 통해 구현될 때는 시리얼 통신용 프레임에 패킷이 담기게 된다. 일반적으로 프레임은 프로그래밍 가능한 가장 낮은 수준의 데이터다.\n&nbsp; &nbsp; 신호 -> 프레임 -> IP패킷 -> UDP패킷\n이런 식으로 이해하면 될 것이다.\n\n========================================\n2.@@color(#04f): 프레이밍 @@(framing)이란?\n해당 시점에서 장면의 주제, 여백 등을 고려해 구도를 잡는 것. 여기서는 섀도 맵 해상도가 차지하는 시스템 자원의 낭비를 막기 위해 그림자를 고려한 라이트의 담당 영역을 결정하는 걸 말한다.\n출처; 디지털 라이팅 & 렌더링 2nd Edition\n\n========================================\n3.@@color(#04f): 사진에서 프레이밍, 크롭핑, 트리밍의 구별 @@\n사진에서 이미지를 잘라내는 것은 세 가지로 구분한다.\n1) 프레이밍(Framing)이란\n카메라의 파인더를 통해 촬영할 대상의 범위를 결정하여 촬영하기 전에 필요 없는 것을 잘라내는 것을 말한다. 촬영단계에서 완벽한 앵글과 Composition, Construction, Lighting, 셔터찬스 등을 결정하고 최종적으로 자신이 촬영할 범위를 결정하는 행위이다.\n\n2) 크로핑(Cropping)이란\n필름으로 확대 인화할 때 필름의 일부분에 원치 않는 대상이 찍혔다면\n이것을 인화하면서 확대기로 이미지의 크기를 조절하여 인화지 위에 그 이미지가 나타나지 않도록 하는 것을 말한다. 필름을 잘라내는 것은 아니지만, 필름의 이미지 중 필요한 부분만 인화지 위에 나오게 하는 방법이다.\n특히 갓 사진을 시작한 사람들이 많이 활용하는 방법이다.\n\n3) 트리밍(Trimming)이란\n최종 인화한 인화지에서 필요 없는 부분을 잘라내는 것을 말한다.\n
@@color(#04f): 휴리스틱 의사결정이론 @@ - 출처; KASPA 김중규 행정학 아카데미\n(1)의의 : 뉴엘과 사이먼에 의하면, 문제 해결은 다양한 문제 상태로 된 ‘문제 공간’의 검색이다. 문제의 적정 공간에 관한 인간의 내적 결정은 직무환경의 해석을 통해서 이루어진다. 문제 해결자는 휴리스틱 규칙을 사용하여 선택적으로 문제를 개념화시킨다(Newell & Simon, 1972: 48-85). 이 때 사람마다 문제 공간이 갖는 구조상의 차이는 실제 문제 해결 과정에 지대한 영향을 미친다. 문제 공간은 지식 상태를 나타내는 노드(node)의 연결망 형태로 생각할 수 있는데, 각 노드는 특정 시점에서 문제해결자가 알고 있는 것을 말한다. 각 지식의 상태는 수많은 기호들로 구성된다. 뉴웰과 사이먼에 위하면, 문제풀이란 문제풀이자가 원하는 지식 상태에 도달하는 경로(path)를 찾는 과정이 된다. 문제 해결을 문제 공간의 탐색이라고 할 때 중요한 것은 탐색을 지배하는 원리를 찾는 것이다. 전체 문제의 대안과 결과를 모두 탐색할 수 없을 때 우리는 흔히 문제를 쪼개어 하위 목표의 선택 방법에 몰두하게 된다. \n\n(2)특징 : 목표의 선택 방법은 알고리즘과 휴리스틱으로 나뉜다. 알고리즘 방법은 문제 해결이 보장되는 절차이다. 덧셈, 곱셈은 여기에 해당한다. 알고리즘 방법을 사용하면 항상 정확한 답이 나온다. 휴리스틱은 최선의 답 (best answer) 보다 그럴 듯한 답 (nice and good answer)에 이르게 하는 주먹구구식 탐색 규칙 (rule of thumb) 이다. 휴리스틱은 탐색의 완벽은 기하지 못하지만 가능한 탐색 고하정의 효율성은 높일 수 있다. 휴리스틱의 기본 원리는 항상 현재 최선의 값을 가진 하위 목표로부터 출발하여 나름대로의 특정 형태의 평가 함수(의사결정 규칙)에 의거하여 탐색이 유도될 수 있다는 것이다 (Kowalski, 1979:82). 알고리즘은 완전한 합리성을 추구한다면 휴리스틱은 제한된 합리성에 의한 문제해결과정이다. \n\n(3)알고리즘과의 비교 : 휴리스틱에 입각한 문제 해결 과정은 다음과 같은 특징을 가진다.\n&nbsp; &nbsp; 1)알고리즘에 비해 현실적이다. 곱셈의 경우는 해결의 정확성은 보장받아도, 그러한 해결 과정의 자원과 가중치의 배분이 형평에 맞게 이루어졌는지에 관한 해답을 주지 못한다. \n&nbsp; &nbsp; 2)알고리즘에 비해 문제 해결 수단의 탐색에 유연하다. 여기서 ‘유연하다’란 말은 문제 해결 수단의 탐색에 동원되는 지식이 덜 구조화되어 있다는 뜻이다. \n&nbsp; &nbsp; 3)알고리즘에 비해 효율적이다. 알고리즘은 문제 해결의 규범성을 강조하는 반면, 휴리스틱은 인간이 수행할 수 있는 계산 능력의 범위 안에서 채택 가능한 해답을 찾고자 하는 문제 풀이 방법의 발견에 몰두하기 때문에 현실적으로 효율적인 방법이 된다. 따라서 의사결정자는 채택 가능한 해결책에 가장 빨리 도달하게 하는 몇 개의 단순한 의사결정규칙을 사용하는 휴리스틱 탐색에 의존하게 된다. \n\n(4)한계 : 인간 의사결정의 휴리스틱적 해결은 현실 세계에서 목표-수단의 연쇄고리를 찾아내기 힘들다는 데 한계가 있다. 사람들이 보통 자신들의 행동의 목표를 잘 인식하지 못하는 것과 같다. 반대로 의식하지 않는 행동은 과연 목표가 없는가 하는 문제 제기도 가능하다. 아울러 휴리스틱에 입각한 의사결정이 효율적이라 해도 반드시 타당하지 못하다는 데 또 다른 한계가 있다. 비교적 간단하고 반복적인 영역에서의 의사결정에는 휴리스틱이 효용을 발휘하겠지만 복잡한 영역에서의 휴리스틱적 의사결정에는 종종 위험이 따르기도 한다. \n
@@color(#04f): ▣ ABV @@(Alternate Bounding Volume)\n\n@@color(#04f): ▣ ACL @@(Access Control List) ; 접근 조절 목록\n\n@@color(#04f): ▣ Architecture @@; 아키텍처\n하드웨어·소프트웨어를 포함한 컴퓨터시스템 전체의 설계 사상, 즉 구성상의 사고 방식이나 구성 방법.\n\n@@color(#04f): ▣ argument @@; 인수\n테이블에서 구하는 항목이나 함수를 발견하는 데 필요한 이미 알고 있는 관련 요소(함수값을 결정하는 변수)\n\n@@color(#04f): ▣ ARPU @@; (≒아르푸) Average Revenue Per User의 준말로 한 사용자당 올리는 평균 수익을 의미
@@color(#04f): Occluder @@; 언리얼에서는 컬링이라고도 한다는데 \n게임상에서 눈앞에 벽이 있어 보이지 않더라도 벽뒤 시선의 일직선 상의 모든것을 랜더링건다. 게임을 좀더 가볍게 돌릴수 있게 하기 위해서 맵을 적절하게 등분하여 Occluder를 배치하고 일정 영역에서는 원하는 부분을 랜더링 걸지 않게 해준다.\n
@@color(#04f): Bezier Curve @@; 불규칙한 곡선을 표현하기 위해 수학적으로 만든 선.\n프랑스의 수학자 베지어에 의해 만들어진 다항식 공선의 하나로 아웃라인 문자, 스플라인 곡선, 포스트 스크립트 등 문자 데이터와 도형을 그릴 때의 자유 곡선은 이 베지어 곡선이 사용되고 있다.\n베지어 곡선은 제어점이라고 하는 몇 개의 점으로 만들어 지는데, 곡선은 최초의 제어점인 기점에서 시작하여 최후의 제어점인 종점에서 끝난다.\n기점과 종점 사이에 찍힌 제어점이 곡선 모양을 결정하며, 곡선은 제어점 위를 통과하는 것은 아니다. 기점에서 시작한 곡선은 인접한 제어점 방향으로 진행하는데, 그 옆에 있는 제어점의 영향을 받아 최초의 제어점 위를 지나가지 않고 다음의 제어점 방향에 곡선이 그려지게 된다. 결국 하중 평균이 채용되는 것이다.\n이와 같이 하여 매끄러운 곡선을 그릴 수 있고, 기점과 종점을 포함한 제어점의 갯수가 많을 수록 복잡한 곡선을 만들 수 있는데, 계산에 시간이 걸리므로 많은 것은 사용할 수 없다. 포스트스크립트는 제어점이 4개의 3차 베지어 곡선이 사용되며, 트루타입은 2차 베지어 곡선이 사용된다.\n&#8226; 상세정보 ; [[베지어 곡선|http://www.gingaminga.com/wiki/pds/ziny/Bezier.mht]] ▶ 출처; 3map.snu.ac.kr/
@@color(#04f): ▣ BitBlt @@(Bit Block Transfer)\n\n@@color(#04f): ▣ BSC @@(Base Station Controller) : 기지국 제어기\n - 여러 기지국 등을 제어하는 기능 수행 (핸드오프 등)\n@@color(#04f): ▣ BTS @@(Base Transceiver Subsystem) : 기지국 송수신기\n - 이동국과의 음성, 데이터의 실제 전송기능 수행\n - 안테나 및 탑 구조물 등\n\n@@color(#04f): ▣ BOP @@(Bottom of the paramid) 비즈니스란 @ 2011-03-12 @\n경제라는 피라미드의 하단을 뜻하는데, 주로 개도국 이하의 경제적 빈곤계층을 의미하는 말로 통용된다. 즉 BOP란 빈곤층을 대상으로 한 사업모델이다. 일단 BOP의 양적 시장규모는 합격점이다. 국제금융공사(IFC)는 소득별 인구구성에서 연간소득 3,000달러 이하의 세대를 BOP층으로 규정하는데, 그 규모는 세계인구의 약 72%(40억명)를 차지한다. 잠재적인 시장규모란 약 5조달러로 일본의 실질국내총생산에 해당하는 거액이다. 지역별로는 중동을 포함한 아시아가 최대 BOP 시장이다. 이런 점에서 BOP 시장은 포스트 신흥시장으로 불리기도 한다.\n\n@@color(#04f): ▣ BTS @@(Bug Tracking System)란 \nQA와 개발자가 발견된 소프트웨어의 버그를 추적하는 것을 돕기 위한 소프트웨어\n\n
@@color(#04f): Circular Dependencies @@; 순환참조\n\n@@color(#04f): ▣ CDN @@ (Contents Delivery Network) \n\n@@color(#04f): color scheme @@ (컬러 스킴) ; (실내 장식•의상 따위의) 색채 설계; (일반적으로) 배색 계획\n출처 ; 야후 사전\n\n@@color(#04f): Context Sensitive 도움말 @@\n이용자가 처한 상황을 시스템이 판별해서 이용자에게 알맞은 도움말을 제공하는 형태를 말한다.\n\n@@color(#04f): customize @@; 사용자정의\n\n\n\n
@@color(#04f): CPU @@(중앙처리장치) \n레지스터는 CPU 연산을 위한 일시적인 기억장소로서, 레지스터에 \n-.Accumulator - 데이타를 저장\n&nbsp; &nbsp; A←A+B와 같이 레지스터간의 연산으로 인한 결과값이 다시 범용 레지스터에 누적된다는 개념\n-.Pointer - 데이터의 주소를 저장\n-.Counter - 데이터의 갯수를 저장
@@color(#04f): ▣ Message box warning @@; 경고 메시지 박스\n\n@@color(#04f): ▣ MMPOG @@ (Massively Multiplayer Persistent Online Games) &nbsp; &nbsp; @ 2010-03-25 @ \n수천명의 플레이어가 하나의 가상 세계를 공유하는 멀티 플레이어 게임. 이 때 캐릭터의 정보가 끊임없이 기록되며 시간에 따라 변화한다.
@@color(#04f): NDLCD @@; NDL Collision Data\n\n
@@color(#04f): ▣ DAG @@(directed acyclic graph) ; 방향성 비순환 그래프 \n\n@@color(#04f): ▣ DBA @@(Database Administrator)\n\n@@color(#04f): ▣ DCC tools @@(Digital Content Creation Tools)\n\n@@color(#04f): ▣ DDA @@ 동적 난이도 조절(Dynamic Difficulty Adjustment) &nbsp; &nbsp; @ 2010-03-25 @\n플레이어의 능력에 따라 게임의 난이도를 증가 혹은 감소시키는 능력.\n\n@@color(#04f): ▣ dereferencing @@; 간접지정\n\n@@color(#04f): ▣ down-casting @@; 파생, 혹은 형제 클래스의 타입으로 변환\n
@@color(#04f): filename extension @@; 파일 확장자\n\n@@color(#04f): functionality @@; 기능성\n\n
@@color(#04f): Effect @@\nDirectX9 용어로 이펙트 effect란 정면의 출력 방법을 기술하는 스트링이다. \n&nbsp; &nbsp; 이 이펙트에서는 텍스처와 이름, 위치 및 기타 매개변수를 지정한다.\n&nbsp; &nbsp; ▷ 출처; 초보개발자를 위한 DircetX 게임 데모 프로그래밍(에이콘 발행)(p.168 5장 3D 이펙트/ 5.5 이펙트)\n\n• Bloom Effect\n• Glow Effect\n
@@color(#04f): ▣ GDC @@ 게임 개발자 회의(Game Developers Conference) &nbsp; &nbsp; @ 2010-03-25 @ \n게임 개발자들이 모여서 게임 제작과 관련된 자신들의 경험에 관해 전달하고 토론하는 연례 회의.\n\n@@color(#04f): ▣ Global Variable @@; 전역변수\n\n@@color(#04f): ▣ Glyph (glíf) @@ n.그림(도안) 표지/【건축】장식용, 세로홈/【고고학】그림 문자, 상형 문자/ ~ic a. \n\n@@color(#04f): ▣ GUI @@( Graphic user interface )\n\n
@@color(#04f): instance, instantiate @@; 인스턴스, 인스턴스화\n인스턴스는 추상화 개념 또는 클래스 객체, 컴퓨터 프로세스 등과 같은 템플릿이 실제 구현된 것이다. 인스턴스화는 클래스 내의 객체에 대해 특정한 변형을 정의하고, 이름을 붙인 다음, 그것을 물리적인 어떤 장소에 위치시키는 등의 작업을 통해, 인스턴스를 만드는 것을 의미한다.
@@color(#04f): ▣ If you are curious @@; 참고로\n\n@@color(#04f): ▣ implementation @@; 구현\n\n@@color(#04f): ▣ infinite loop @@; 무한루프\n\n@@color(#04f): ▣ interpolator @@; 간단한 애니메이션 계산을 위하여 미리 만들어진 스크립트\n• interpolator node; 보간자 노드, 보간 노드\n\n@@color(#04f): ▣ ISBN @@ (International Standard Book Number)국제표준 도서번호\n서적을 분류, 숫자로 표시한 세계공통의 코드. 국명, 출판사, 도서코드 등의 숫자로 표시.\n\n1. 2007년 1월 1일 부터 ISBN 자리수를 10자리 -> 13자리로 변경한 이유는\n&nbsp; &nbsp; 1970년대 ISBN시스템이 도입된 시점에 예상했던 것보다 인쇄출판물 및 전자출판물 등 출판량의 급증으로 현 ISBN시스템에서 사용할 수 있는 도서번호수가 한계에 도달하여 2007년 1월 1일 부터 전 세계적으로 ISBN 13자리를 사용한다.\n10자리 ISBN을 다 소진한 국가들은 먼저 13자리 ISBN을 사용할 수 있어서 <미국><캐나다>등의 나라들은 ISBN 13자리를 미리 시행할 예정이나, 우리나라는 전 세계 적용시점에 맞추어 2007년 1월 1일 부터 시행한다. \n\n2. ISBN 13자리 변경 내역\n&#8226; 2007년 1월 1일 부터 ISBN은 10자리에서 13자리로 변경하여 사용 \n&#8226; 기존 10자리 번호는 앞에 978을 덧붙임 \n&#8226; ISBN 13자리 숫자는 ISBN 10자리 바코드로 변환한 EAN-13 숫자와 동일\n&#8226; 기존번호에 978을 덧붙여 사용하고, 2007년부터 한국문헌번호센터에서는 979배정을 시작\n\n
@@color(#04f): 게임의 분류 @@\n* MUD(머드) ; Multiple User Dialogue / Dungeon \n** 멀티플레이가 지원되고, 그 기반에 채팅이 있으면 머드게임으로 텍스트를 기반으로 해서 오로지 텍스트를 이용해서 명령을 하고 텍스트를 통해서 모든 게임 정보를 얻고 진행\n* MUG(머그) ; Multi User Graphic \n** 기존의 텍스트형 멀티게임인 머드게임에서 발전한 형태로 멀티미디어를 포함한 머드게임을 말하고, 사이버공간내의 자신의 분신(캐릭터)의 성장을 주요 목적으로 하며, 그래픽을 통해서 자신의 캐릭터의 성장을 볼 수 있다. 수많은 타인과의 반목, 대결, 타협, 조화를 통해서 게임을 진행해 나가는 방식\n** 국내의 대표적인 머그게임으로는 ncsoft의 <리니지>, 넥슨의 <바람의 나라>, 태울의 <영웅문>, 팬택넷의 <마제스티> 등이 있다.\n* MOG ; Multiplayer Online Game (멀티플레이어 온라인 게임)\n** MOG게임의 충성도와 사용자의 소비율이 낮기때문에 이 유형의 게임은 생존압력이 매우 크며, 사용자들이 제품의 퀠러티에 대한 요구가 향상됨에 따라 MOG는 반드시 끊임없이 새로운 게임요소를 추가해야만 사용자들의 수요를 만족시킬 수 있다.\n* MMOG(엠모그) ; Massively Multiplayer Online Game (다중 멀티플레이어 온라인 게임)\n* MMORPG ; Massively Multi-user Online Role Playing Game (다중접속 온라인 롤 플레잉 게임)\n** 수백명 이상이 하나의 세계에서 게임을 즐기는 게임\n* MORPG ; Multi-user Online Role Playing Game\n** 8명 안팎의 소수 유저들이 각기 독립된 월드에 접속해서 플레이하는 ‘파티 플레이 방식’의 게임으로 대전도 하고 소수의 인원들로서 던전탐험을 하면서 성장해나가는 기반의 시스템\n*** 던전앤파이터, NC소프트의 길드워, 웹젠의 SUN, 소프트닉스의 라키온:카오스 포스, 윈디소프트의 인피니티 등 \n** 장점 ; \n*** MMORPG에 비해 낮은 접근성과 쉬운 조작법, 캐주얼게임보다 강한 몰입도와 높아진 게임성 등, 대규모 군중 속에서 소외될 수밖에 없는 MMORPG와 달리 스스로가 주연이 될 수 있는 장점이 있음\n*** MMORPG와는 다르게 엄청나게 많은 시간을 투자하지 않아도 즐길수 있다.\n** 단점 ;\n*** 단순반복의 던전파티사냥, 소수 매니아층 유저들, 무차별한 캐쉬탬 등\n* MMP game; Massively Multiplayer game(대규모 다중 플레이 게임)\n* MOD; 'Modification'의 약어로 '유저가 게임의 내용을 수정 하거나 추가한 결과물'을 말한다.\n** 다른 게임의엔진이나 구성 요소로부터 새로 구성된 게임\n** 정의상으로 보면 '유즈맵'도 분명 'MOD'에 속한다고 볼 수 있다. 사람에 따라 조금씩 다르지만 보통 'MOD'라고 이야기할 때는 단순히 맵 정도를 새로 제작하는 수준이 아닌 게임 플레이 자체를 완전히 바꾼 경우를 말한다. 높은 완성도를 가진 'MOD'는 원작과 비교해서 아예 다른 게임이라고 불러도 손색이 없다.\n** 'MOD'의 시초는 일반적으로 '캐슬 울펜슈타인(Castle Wolfenstein)'을 변형하여 만든 '캐슬 스머펜슈타인(Castle Smurfenstein)'으로 보고 있다(물론 그 이전에도 이러한 것을 만든 게이머가 없을 것이라고는 보장할 수 없기 때문에 'MOD'의 역사는 더 오래되었다고 할 수 있다). 이 게임은 원래 '울펜슈타인'의 고성에서 나치들을 상대하는 게임이지만 'MOD'에 의해 거대한 버섯성에서 스머프들을 상대하는 게임으로 변했다.\n** 이 게임이 나온 시기는 1980년대 초반이다. 마치 '유즈맵'이 발전하여 'MOD'가 등장한 것처럼 말했지만 그렇지 않다. 하지만 이 시기에는 대다수의 게이머들의 수준 문제도 있었고, 제작사들이 게임소스를 패쇄적으로 운영했기 때문에 'MOD'가 그다지 활성화 되지 못했다. 'MOD'가 활성화되기 시작한 것은 1990년대 부터다. '둠(Doom)'이나 '퀘이크(Quake)' 같은 3D게임들이 인기를 끌기 시작하면서부터 'MOD'에 대한 관심이 증폭되었고, 몇몇 회사에서 'MOD' 개발을 위한 게임엔진과 모드 툴을 개발 및 공개하면서 지금에 이르게 되었다.\n* FPS ; First Person Shooter (1인칭 슈터 게임)\n** 1인칭 시점으로 총기류 등의 무기를 사용해 이동하고 전투를 벌이는 게임 장르이다. 컴퓨터의 성능이 발전함에 따라 슈팅게임 역시 3차원 표현을 활용하게 되었으며, 이드소프트웨어(Id Software)사의 캐슬 울펜스타인(Castle Wolfenstein)이 그 효시이다. 이후 이드소프트웨어와 제작자 존 카맥(John Camack)은 일인칭슈터(First Person Shooter)라는 새로운 게임의 장르를 개척하며 둠 시리즈, 퀘이크 시리즈를 통해 이 분야의 절대 강자로 자리 잡게 되었다.\n\n* 핵 & 슬래쉬 ; hack-and-slash\n\n!!! AOS란 RPG, FPS 등의 게임 장르 중에 하나로,\nAOS라는 단어의 시초는 스타크래프트의 유즈맵인 Aeon Of Strife 의 약자로(공성전) 한 게임 안에서 캐릭터의 성장(RPG 요소), 몬스터의 사냥, 적 캐릭터와의 PVP, 아이템 구입등 전반적인 활동(RTS 요소)을 통해 전투를 이글어 나가는 장르이다.\n\n초기에 스타크래프트 유즈맵으로 시작된 AOS 는 워크래프트3를 통해 룰은 그대로 유지한채 새롭게 DOTA 라는 게임으로 변형된다.\nDOTA는 AOS 장르에 가장 큰 영향을 끼친 유즈맵이며 스타크래프트와 다르게 전투 중심이 아닌 영웅 성장을 통한 전투에 촛점을 맞춘다.\n(게임에 따라서 각각의 특성을 가진 다양한 캐릭터를 지원)\n\n워3라는 기본 게임을 바탕으로 하고 있으며 워3의 가장 큰 장점중에 하나인 영웅 시스템과 성장 시스템을 스타크래프트의 AOS와 융합하여 만들어진 산물이라 할수 있다.\n\n높은 진입장벽이 단점이다. AOS는 기본적으로 PvP를 기반으로 하고 있어서, MMORPG류의 게임처럼 초보존부터 시작해서 차근차근 게임의 재미를 알게 되고, 차근차근 스킬을 배워가며 차근차근 게임에 흡수되는 것이 아니라, AOS는 시작과 동시에 앞서 말했던 RPG의 성장, 수집, RTS의 전략, 전술, 각 캐릭터의 특성을 모두 파악하고 게임에 임해야 승리 할 수 있다. 더군다나, 상대는 유저이기 때문에 이 부분의 학습량에 대한 차이를 둘 기준이 없다.\n(참고. http://blog.naver.com/ryukilsun/130086285287 )\n\n\n!!! 유료게임의 무료/ 부분유료화 전환은\n* 유료 아이템과 게임 밸런싱을 둘러싼 기존 유료/ 신규 무료 이용자 간의 갈등 해소라는 과제를 내포하고 있어, \n** 유료로 구매한 아이템의 성능은 높이되, \n** 전체 게임 내에서의 형평성을 유지할 수 있도록 밸런스를 조절하는 것이 부분유료화 성패의 주요 요소라 할 수 있다.\n\n!! 라이브팀 역할\n소프트웨어를 유지보수하고 컨텐츠를 추가하며, 게임마스터처럼 행동하면서 게이머 손에서 제품이 언제나 새롭게 살아있게 해주는 역할을 담당\n\n!! 게임업계의 333법칙\n* 이용자가 3초 안에 게임명을 기억하게 해야 한다.\n* 또 30분 동안 이용자가 게임에 접속해 있어야 하고, \n* 접속을 종료한 뒤 3시간 전에는 이용자의 머릿속에 해당 게임이 다시 떠올라야 한다.\n\n\n!!! 웹게임\n* 웹게임(Web Game): Wikipedia에서는 브라우저 게임(Browser Game)이라고 부르고 있으며, \n** 일반적으로는 별도의 클라이언트 프로그램을 설치하지 않고 웹 브라우저 상에서 즐기는 게임을 의미함, \n** 주로 JavaScrpit 혹은 Flash로 제작하여 PC패키지 게임(CD,DVD설치)이나 온라인게임에 비해 컴퓨터 성능의 부담이 적은 게임을 칭하며, 웹표준을 지키기 때문에 Internet Explorer뿐만 아니라, Firefox, Safari 등에서도 실행 가능 \n\n* 웹게임의 장점\n&nbsp; &nbsp; &nbsp; &nbsp; ▶ 과거 PC 통신의 텍스트 입력 방식의 메드 게임에 대한 향수\n&nbsp; &nbsp; &nbsp; &nbsp; ▶ 사양이 낮은 PC나 휴대용 디바이스에서도 구동되어 언제나 접속 가능하다는 점\n&nbsp; &nbsp; &nbsp; &nbsp; ▶ 오프라인 상태에서도 웹 기반의 세계가 지속 된다는 점 \n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 예) OGame, 부족전쟁, 칠용전설(중국 웹게임)\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 출처; 게임산업TREND 2008 4/4분기 고경신(엔씨소프트 Global Biz. Unit 부장)\n\n\n!!! 클라이언트기반 소셜네트워크게임(SNG)\n* 클라이언트 기반 SNG는 브라우저에서 바로 실행되는 기존 SNG와 달리 파일을 내려받아 설치하는 온라인게임의 형식을 따른다. \n** 클라이언트 기반 SNG는 게임 내에 소셜네트워크서비스(SNS)를 갖췄다. 달리 말하면, 이용자가 게임에 들어와야 SNS를 통해 상대방과 친분을 쌓을 수 있다는 얘기다. SNS 파급력이 게임 내부에 한정된다. 즉 게임을 즐기려고 접속한 이용자가 아니면, 인맥 쌓기가 어렵다.\n** 미국에서 발원된 SNG와는 시각차이가 크다. SNS플랫폼 위에서 SNG가 돌아가면서, SNS를 즐기는 이용자가 자연스레 게임에 유입되는 것과는 과정이 반대다.\n\n\n!!! 클라우드 게이밍\n오직 고속 네트워크망과 디스플레이만으로 모든 수치 연산과 파일 저장을 대신하는 원격 시스템을 통해 게임을 플레이한다.\n* 장점 ;\n** 클라이언트를 다운받을 필요가 없으며 고사양 게임을 즐기기 위해 매번 PC를 업그레이드 하지 않아도 된다.\n** 굳이 고정돼있는 PC가 아니더라도 스마트TV나 태블릿 PC등 다양한 유무선 기기들을 활용(미래의 게임 플랫폼으로 각광)\n\n!!! App Store\n* $99의 개발자 등록비만 지불하면 누구나 직접 개발한 애플리케이션 업로드 가능\n** 작년 7월 오픈 후 현재까지 25,000 여 개의 애플리케이션 등록\n** 1~7일이 소요되는 최소한의 버그테스트를 거쳐 App Store에 등록되면, 전세계 iPhone, iPod Touch 이용자들이 자유롭게 유/무료 다운로드 가능\n* 유료 애플리케이션은 제작자 : 애플이 7:3 비율로 수익 배분\n** Electronic Arts, Konami 등 글로벌 업체 및 게임빌, 컴투스 등 국내 업체 입점\n\n\n!!! PvP와 RvR (출처 : Tong - 버들마을님의 게임 이야기통)\n* 구분; PvP의 규모가 커지면 RvR이 되는 게 아니라 아군과 적군이 캐릭터 생성부터 확실한 구분되는 시스템의 지원여부가 기준\n** 자신이 특정 진영에 속할 것인지 아닌지를 플레이어가 결정할 수 있는 PvP 게임과 달리 RvR은 진영선택에 강제성을 띈다. 때문에 진영을 선택한 플레이어는 원하든 원하지 않든, 게임 내에서 확실히 구분되는 아군과 적군을 가지게 된다. 즉, 같은 캐릭터로는 진영 이동이 불가능하고 중립적인 입장도 될 수 없는 것이다. 따라서 개인보다 단체적 성향이 강하다.\n* @@color(#04f): PvP @@(Player vs Player)\n** 예) 리니지 - 몬스터를 처치해 자신의 무기와 방어구를 강화시키고 그 장비들로 공성전과 필드전을 펼치며 혈맹의 끈끈한 정을 느끼는 것\n** 개발자가 만들어 놓은 컨텐츠뿐만 아니라 유저들 스스로가 만들어가는 세력 구도가 PvP 게임의 재미이자 장점이다. 하지만 다양한 세력이 존재하기 때문에 자칫 과도한 경쟁과 감정싸움에 휘말릴 수 있다.\n** 유저들이 창조할 수 있는 범위가 넓지만 협동 부분보단 경쟁 부분이 대다수를 차지하지만, 다양한 세력 구도가 PvP의 중요한 재미인 만큼 유저들에 의해 형성되는 세력 간 관계를 지금보다 유연하게 시스템적으로 지원하게 될 것이다.\n** 게이머를 경쟁 외의 컨텐츠를 즐기기 힘들게 만들 수 있어서, 온라인 게임의 기본적인 재미 요소 중 하나인 협동’을 즐기기엔 힘들다.\n* @@color(#04f): RvR @@(Realm vs Realm)\n** 예) 월드 오브 워크래프트(와우) - 적과 아군이 뚜렸하게 나뉘어져 있으므로 상대진영을 아무런 부담 없이 공격할 수 있다. 거기에 장비보다는 플레이어의 컨트롤 실력이 승패의 많은 부분을 차지하기 때문에 액션 게임 못지 않은 재미를 선사\n** 강제성을 띄기 때문에 유저들이 만들어 가는 컨텐츠가 부족하고 세력간 인구차가 발생한다면 재미가 반감된다. 반면 진영이 확실히 구분되기 때문에 플레이어간 전투를 적극적으로 유도 할 수 있다.\n** 온라인 게임의 가장 기본적인 재미인 협동과 경쟁이 자연스럽게 녹아 있다. 공공의 적을 두고 있다는 점에서 소속감을 높일 수 있고 이런 소속감은 단합, 즉 협동으로 나타난다. 경쟁 요소는 지역을 차지하거나 승리하는 적 진영과의 전투에서 찾을 수 있다. \n** 인구비율이 맞지 않는 경우 RvR 게임의 재미가 반감되기 때문에 기울어진 인구비율을 극복하기 위해선 여러 가지 안전장치가 필요하며, 진영간 전투가 더욱 재미있고 활성화 될 수 있도록 지원하는 시스템이 필수적이다. \n
@@color(#04f): managed C++ @@은 .NET 플랫폼에서 사용하는 C++로 기본적인 문법은 비슷하지만,\n추가된 문법 들과(박싱, 언박싱).NET 프레임워크의 사용, MSIL, 가비지 컬렉션 등이 특징이다.\nnative C++은 .NET 플랫폼을 사용하지 않는 기존의 C++을 말한다.\n
▣ 용어정리를 위해서 만든 공간으로 위키 설정에 도움을 준 현진에게 감사!\n&nbsp; &nbsp; 참고 사이트 - http://www.tiddlywiki.org/wiki/CcTiddly\n&nbsp; &nbsp; 여기에 설치된 버전은 ccTiddly-v1.1 final 버전을 받아서 설치\n\nTo get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:\n* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)\n* MainMenu: The menu (usually on the left)\n* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened\nYou'll also need to enter your username for signing your edits: <<option txtUserName>>\n\n* Text format ; 유니코드(UTF-8)
<<search>><<closeAll>><<newTiddler>><<tiddler 'LoginPanel'>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>\n\n\n\n
출처; http://hanigamo.egloos.com/1576787\n\nsyntactic : 문법의\nsemantic : 의미의, 의미론의\nPragmatics : 어용론(語用論)\n\nSemantic은 Syntactic에 대응하는 개념입니다. Syntactic은 과학적, 규칙적인 것을 대변해서 인공의 언어, 한정된 Tag를 가지는 word를 의미하고 주로 외형에 대해서 규정하는 범위를 가지는 것 같습니다. 반면에 Semantic은 Syntactic한데 받아들여질 수 없는 것에 대한 대책으로 나오게 된 것 같습니다. Semantic은 Real word를 반영하는 것으로 이해될 수 있겠지만, 컴퓨터로 Real word를 모델링 하는 것은 곧 커다란 artificial word에 지나지 않습니다. 그러니까 Sematic은 좀 더 섬세한 인공 세상 - 자연 세상을 많이 반영한 - 을 의미할 수 밖에 없습니다. "아버지가 자동차를 먹었다"와 같은 문장은 명사, 동사, 조사 등의 단위를 인식하는 syntactic word에서는 존재할 수 있는 문장이지만, "자동차는 음식이 아니다"라는 사실을 기록해둔 Sematic world에서는 존재하기 어려운 문장이 될 것입니다. (자동차 모양의 과자를 먹었다는 것이 사실이어도 의미론에서는 어쩔수가 없겠지요... 그것을 용납해주는 수준이 의미론입니다.) 그러므로 Syntactic과 Semantic은 다루는 단위의 범위의 차이가 있을 뿐 동일한 체계를 가지고 있습니다. \n\nSemamtic의 중요 개념은 word - (concept)과 (concept) - Relation - (concept) 입니다. 어떤 단어가 어떤 개념인지와 어느 개념과 어느 개념이 어떠한 관계를 가지고 있느냐를 이용하면 Semantic이 되는 것이고 단어의 아주 상위개념 - 특히 언어적인 관점에서 - 인 단어의 품사, 그리고 위치라는 Relation을 사용하면 일반적인 Syntactic이 되는 것 같습니다. 단지 대상과 관계의 종류가 많아진 다는 것이 다른 점이라고 하여야 할 것 같습니다. 그렇다면, Sematic을 도입하려면 어떠한 일을 하면 되는 것일까 생각해 보아야 겠습니다. 그것은 명확하게 대상으로 하는 concept들을 나누어 분류하고, Relation도 나누어 분류한 후에 concept과 concept간의 relation을 규정해 주는 것이 될 것 입니다. 이것을 어려운 이야기로 Ontology구축이라고도 하는 것 같습니다.
Dead라는 말은 신호를 받지 못하고 있는 상태를 말한다.즉 신호가 전달 되지 않으니 신호가 죽은셈이다. Reckoning은 추산하다는 뜻으로 신호가 없는 동안에도 추측으로 계산한다는 것이다. \n다시말해서 신호가 없는 동안에도 이전에 받았던 신호를 바탕으로 추산해서 상태정보를 갱신한다는 것이다. \n\nDead Reckoning은 주로 플레이어의 위치정보를 갱신하는데 사용되는데,\n물론 데드 레커닝 없이 매 프레임마다 플레이어의 위치값을 주고 받을 수 있으면 좋지만.. 제한된 Bandwidth 때문에 그렇게 할 수가 없다. \n추가로 플레이어의 정보를 전달할때 현재의 위치 값 뿐만아니라 위치 값이 전달되지 않는 동안에도 위치 값을 추측하는데 데 필요한 부가적인 정보를 같이 보내한다. \n\n
!!! Effect\n이펙트는 쉐이더(버텍스, 픽셀, 텍스처 등)와 파이프라인이 버텍스와 픽셀 데이터를 사용하는 방법을 제어하는 파이프라인 스테이트의 결합으로, 어셈블리 언어 이펙트와 HLSL 이펙트가 있다.\n\n* 스테이트(state)란 단어가 자주 사용되는데, 이는 렌더링 조건을 저장할 필요가 있는 파이프라인의 모든 정보를 포함하며, 파이프라인의 거의 모든 기능을 포함한다.\n\n참고서적\n&#8226; Microsoft DirectX9 Programmable Graphics Pipeline(정보문화사, 2004)
@@color(#04f): ▣ Spec @@ specification (보통 ~s) 설계 명세서, 시방서\n\n@@color(#04f): ▣ swap file(스왑 파일): @@ 메모리의 보조 역할을 하는 하드 디스크 내의 파일.\n&nbsp; &nbsp; 현재 필요한 리소스가 메모리 상에 없을 경우 스왑 파일로부터 찾아서 메모리에 올리며, 메모리가 부족할 경우 당장 필요하지 않은 리소스를 메모리로부터 해제한다.\n\n\n
@@color(#04f): ROPs @@ = Raster래스터 Operations오퍼레이션 Pipelines파이프라인\n = Render랜더 Output아웃풋 Pipelines파이프라인 \n = Render랜더 Output아웃풋 Units유닛\n\n@@color(#04f): ▣ RPG @@ 롤플레잉 게임(Role-Playing Game) @ 2010-03-25 @\n예전에는 종이와 주사위를 가지고 즐겨던 판타지 게임을 가리켰고, 나중에는 그런 게임의 관습을 따르는 컴퓨터 게임 장르를 가리키는 용어로 바뀌었다. ULTIMA나 WIZARD 시리즈가 좋은 예다. 혹은 로켓 추진 수류탄(rocket-propelled grenade)의 약어로도 사용된다.\n\n@@color(#04f): ▣ RTS @@ 실시간 전략 게임(Real-Time Stategy) @ 2010-03-25 @\n끊임 없이 진행되는 액션을 통해 벌어지는 대규모 군사 전투를 묘사하는 게임 장르이며 턴 방식(turn-based) 게임과 대비된다. Westwood의 DUNE II가 초기 작품이다.\n
@@color(#04f): ▣ 타임 박싱 @@(Time Boxing)은\n 작업을 끝내는 기간으로써, 종료일은 고정되어 바뀌지 않는다. 팀이 종료일을 초과하면, 작업은 실패한 것으로 간주하거나, 취소 혹은 일정을 재조정한다.\n\n@@color(#04f): ▣ 터치 제너레이션 @@(Touch! Generations)은\n콘솔 게임의 정의를 확대시킨 닌텐도의 소프트웨어 라인업을 일컫는 용어다.\n강아지를 키우고, 뇌를 단련하고, 영어를 배우고, 요리를 만들고, 본격적인 피트니스나 악기 연주를 즐기는 등 지금까지 게임과는 무관하다고 여겨졌던 테마를 닌텐도 DS와 위를 통해 게임의 형태로 하나하나 실현시킨 것을 말한다.\n\n@@color(#04f): ▣ 텍스처 @@(texture) @ 2010-03-25 @\n폴리곤 모델에 색상과 셈세함을 더하기 위해 덧씌워지는 2차원 그래픽 이미지. 캐릭터 모델에 적용될 때는 종증 스킨(skin)이라고 불린다.\n\n@@color(#04f): ▣ 턴 방식 @@(turn-based) @ 2010-03-25 @\n특정한 조건이 만족될 때(예를 들어 모든 플레이어가 자신의 캐릭터를 옮겨놓았을 때) 다음의 분리된 라운드로 넘어가는 방식.\n\n@@color(#04f): ▣ 팀빌딩 @@(team building)이란\n집단이 과제를 달성하는 방식을 개선하도록 도움을 주고 집단구성원들이 대인기술과 문제해결기술을 강화하도록 도움을 주는 광범위한 계획적 활동이다(Cummings & Worley, 2001). \n&nbsp; &nbsp; 팀빌딩의 목적은 응집성, 상호협력 및 조직과의 일체감을 높임으로써 팀의 효과성을 높이는데 있다. 팀빌딩은 조직의 영구적이거나 일시적인 집단 또는 팀에서 팀워크와 과제달성을 개선하기 위한 효과적인 접근이 되고 있다. 팀빌딩을 통해 문제해결집단은 구성원이 가진 자원과 기여를 최대로 활용할 수 있으며, 어떤 구체적인 문제들을 극복할 수 있게 된다. \n&nbsp; &nbsp; 팀빌딩은 단독으로 사용할 수도 있지만, 종업원 참여, 직무설계, 구조개편 등과 같은 다른 조직개발 개입기법들의 효과를 높이기 위해 사용할 수도 있다. 팀빌딩을 통해 효과적인 변화 프로그램을 설계하는데 도움이 되며, 조직구성원들이 이러한 변화 프로그램들을 수용하고 실행하도록 보장해준다. \n
@@color(#04f): ▣ PIE 원칙 @@ (Program Intently and Expressively) ;\n작성하는 코드는 의도를 명확히 전달하고, 반드시 의미가 있어야 한다. 이렇게 하면, 읽기 쉽고 이해하기 쉬운 코드가 될 것이다. 코드가 혼란스럽지 않기 때문에, 잠재적인 에러도 피할 것이다. 의도적이고, 의미 있게 프로그램 하라.
@@color(#04f): ▣ 마일스톤 @@(Milestone)은\n자연석에 목적지까지의 남은 거리와 방 향을 새겨 놓은 표지석\n즉, 이정표를 뜻 하기도 하며, 또한 인생, 역사 등의 중대 시점, 획기적인 사건을 뜻하기도 한다.\n\n@@color(#04f): ▣ 말 @@ [명사] \n사람의 생각이나 느낌 따위를 표현하고 전달하는 데 쓰는 음성 기호. 곧 사람의 생각이나 느낌 따위를 목구멍을 통하여 조직적으로 나타내는 소리를 가리킨다. \n\n@@color(#04f): ▣ 매시업 @@ (Mashup)\n매시업은 1960년대부터 음악계에서 쓰이던 용어, 다른 가수의 히트곡 여러 개에서 일정 구절을 따서 이를 섞어 새로운 노래를 만든다는 의미이다. 최근엔 음악뿐만 아니라 동영상, 사전, 컴퓨터 프로그램, 애플리케이션 등의 창조물을 섞어 완전히 새로운 창조물을 만들어낸다는 뜻으로 쓰인다.\n\n@@color(#04f): ▣ 모두발언 @@ 은 책으로 말한다면 머릿말과 같다.\n모두발언은 토론회에서 자주 들을 수 있는데, 본 토론에 들어가기 전에 참여한 토론자들이 순서에 따라 돌아가면서 주제에 대한 자기의 주의, 주장을 요점정리 식으로 말하는 것을 뜻한다.\n\n@@color(#04f): ▣ 모션 캡처 @@ (motion capture)\n실제생명체(보통은 사람)로부터 애니메이션 정보를 얻어내는 기법.\n\n@@color(#04f): ▣ 모티파이슨 @@ (Monty Python)\n1970년대 초반까지 큰 인기를 끌었던 영국의 코미디 <Month Python's Flying Gircus>에 단골로 출연했고, 그외 다수의 극장용 영화를 만든 코미디 창작 집단\n\n@@color(#04f): ▣ 미켈란젤로 동기 @@\n미켈란젤로는 1508년 교황 율리우스 2세의 명령에 따라 그 넓이가 600평방미터나 되는 시스티나 성당에 불후의 명작인 천지창조를 그린 르네상스를 대표하는 화가로 자신의 작품에 대한 굉장한 자부심과 함께 자신의 일을 즐겼던 사람입니다. 그는 그 작업을 위해 사람들의 성당출입을 금하고 4년 동안이나 성당에 틀어 박혀서 오직 그림을 그리는 일에 전념했습니다. \n\n창의적이고 진취적인 사람들은 돈이나 명예를 얻기 위해서 일을 하는 것이 아니라 단지 일이 좋아서 그 일을 즐거움으로 한다고 합니다. 이것이 바로 우리 안에 존재하는 내적동기입니다. 누군가가 자신을 알아주기를 바라는 마음없이 자기 자신만은 너무도 잘 알고 있기에 온 힘을 기울여 최선을 다하는 내적동기를 '미켈란젤로 동기'라고 부릅니다.
| 기호 | 설명 | 기타 |\n| MX | 보급형이라는데 중점적인 의미를 두고있습니다. (보급형 그래픽카드) | 대표모델 : Geforce MX4000, Geforce2 MX400, Geforce4 MX440 |\n| Ti | 2, 3, 4 시리즈중 고급형 모델 입니다. | 대표모델 : Geforce4 Ti4200, Geforce4 Ti4400, Geforce4 Ti4600 |\n| FX | Geforce5 시리즈 모델의 단독적인 이름입니다. | |\n| LE | Low Edition), 보급형 모델로 만들기위해 클럭을 낮추거나 혹은 메모리의 비트수를 내리는 경우이다. | 대표모델 : Geforce FX5700LE, Geforce 6600LE, Geforce 6800LE |\n| XT | (eXtenTion Edition), 값비싼 그래픽카드의 값을 낮춰 많은 이들이 재빠른 3D게임을 할 수 있도록 한다는 의미입니다.LE와 비슷한 개념입니다. | 대표모델 : Geforce FX5900XT |\n| GE | (Gamer(Great) Edition), 게이머들에게 좀더 좋은 성능의 그래픽카드를 주기 위하여 오버클럭을 하여서 상위모델과 비슷한 성능을 내는 그래픽카드에 업체에서 붙여준 것이다. nVIDIA의 정식모델이 아니다. | 대표모델 : Geforce 6600GE |\n| GS | GS가 왜 없지 GT보다 떨어짐... | |\n| GT | (GreaT edition), 중급이상 성능의 그래픽카드에 붙는 이름입니다. | 대표모델 : Geforce 6600GT, Geforce 7600GT, Geforce 8600GT |\n| GTS | (GreaT Stream) 중상급의 성능을 냅니다. | |\n| GTX | (Grand eXtreme Edition), GT보다 상위개념, Extreme이 과격한, 극도의 뜻을 내포하고 있음으로 이는 성능이 높은 그래픽카드에 쓰인다. | 대표모델 : Geforce 7800GTX |\n| Ultra | (Ultra edition), 몇몇 시리즈 라인업 중 최상급의 그래픽카드에 쓰인다. | |\n
@@color(#04f): ▣ 대시보드 @@(dashboard)/ 전산실관리솔루션\nIT대시보드는 기업 IT자원의 안정적인 운영을 위해 시스템 운영현황을 한눈에 파악하여 장애예측을 통한 예방 및 진단, 원인분석을 효과적으로 수행할 수 있도록 하는 솔루션.\n\nIT대시보드는 복잡하고 다양한 IT자원 현황을 운영자관점에서 직관적이고 통합적으로 파악하기 위해, 다이나믹한 화면으로 표현되어야 하며, 실시간 데이터관리를 위한 분산처리환경이 필요합니다. 또한 운영자가 원하는 정보를 언제든지 제공할 수 있도록 손쉬운 화면생성기능과 함께 추가적인 확장이 용이해야 한다.\n\n@@color(#04f): ▣ 대화 @@(對話) [명사] \n마주 대하여 이야기를 주고받음. 또는 그 이야기.\n\n@@color(#04f): ▣ 데쓰매치 @@ (deathmatch) &nbsp; &nbsp; @ 2010-03-25 @\n1인칭 슈팅 게임의 플레이어 대 플레이어(PvP; Player vs. Player) 모드에서 사용되는 매력적인 신조어; 나중에는 실시간 전략 게임과 같은 다른 장르에까지 폭 넓게 사용됨.\n\n@@color(#04f): ▣ 데이터 @@ (data) &nbsp; &nbsp; @ 2010-03-25 @\n지형 구조나 음성 대화 등의 게임 컨텐트. 그것을 조작하며 표시하는데 사용되는 소프트웨어와 구별되는 개념이다.
@@color(#04f): ▣ 게임 플레이 @@ (gameplay) &nbsp; &nbsp; @ 2010-03-25 @\n플레이어가 게임에서 하는 일, 활동, 도전 등을 표현하는 다소 모호한 단어. 이를 지원하는 기술 및 그래픽 작업과 대비된다.\n\n@@color(#04f): ▣ 기술 @@ (technology) &nbsp; &nbsp; @ 2011-06-28 @\n사람들이 ''노동과 원자재를 결합해 상품과 서비스를 만들어내는 방법을 결정하는 모든 요인들''을 지칭한다. \n기술에는 청사진이나 제조 비법이 아니라 부패의 수준, 경영진이 직원을 대하는 태도, 투자자에 대한 법률적 보호, 경쟁 환경에 대한 문화의 영향력, 근로자의 창의성에 영향을 미치는 교육적 전통 등 수많은 요인들이 포함된다.\n\n@@color(#04f): ▣ 기조발언 @@ 은 토론에 앞서 자신이 주장할 전체적인 내용에 대해 큰 틀을 제시하는 것으로, \n&nbsp; &nbsp; 예를들면 토론이 찬성/반대의 형태로 나타난다면 기조발언으로 찬성 혹은 반대의 입장을 밝히고 토론시에 내가 왜 찬성을 하는지에 대한 자세한 내용을 말하는 것이다.\n\n
@@color(#04f): ▣ 1인칭 슈팅 게임 @@ (first-person shooter) &nbsp; &nbsp; @ 2010-03-25 @\n플레이어가 적들로 가득 찬 3차원 세계 안을 돌아다니는 유명한 게임 장르. 플레이어는 머리 높이에 장착된 카메라를 통해 세계를 조망하며, 이러한 시야는 사격 조준기로서의 역할도 함께 한다. Id Software의 CASTLE WOLFENSTEIN 3D가 아마도 첫 번째 예가 될 것이다.\n\n@@color(#04f): ▣ 1인칭 스니커 @@ (first-person sneaker) &nbsp; &nbsp; @ 2010-03-25 @\n플레이어가 목표를 달성하는데 있어 전투보다 잠행(stealth)이 보다 중요하게 사용되는 1인칭 시점의 게임을 이른다. Looking Glass Studios의 THIEF 시리즈가 아마도 가장 돋보이는 예가 될 것이다.\n\n@@color(#04f): ▣ 아티팩트 @@ (artifacts)는 의도하지 않게 생기는 부가적인 효과. \n&nbsp; &nbsp; 단어 자체는 중립적이지만 결과적으로 부산물이 생겨 부정적인 효과를 가져오는 게 일반적이다. 압축이 심한 JPG 이미지에 생기는 지저분한 픽셀이 대표적인 예이다.\n\n@@color(#04f): ▣ 엔진 @@ (engine) &nbsp; &nbsp; @ 2010-03-25 @\n게임 내 환경을 표시하고 기본적인 기능을 규정하는 핵심 시스템; 데이터와 구별되는 개념.\n\n@@color(#04f): ▣ 와르넷 @@ (warnet) &nbsp; &nbsp; @ 2010-07-14 @\n인도네시아에 있는 일종의 피시방. 가게를 의미하는 와룽(warung)과 인터넷(internet)의 합성어.\n\n@@color(#04f): ▣ 유비쿼터스 @@ (Ubiquitous)란 @ 2010-12-06 @\n'언제 어디에나 존재한다'는 뜻의 라틴어로, 사용자가 컴퓨터나 네트워크를 의식하지 않고 장소에 상관없이 자유롭게 네트워크에 접속할 수 있는 환경을 말한다.\n\n@@color(#04f): ▣ 익스플로잇 @@ (exploit) &nbsp; &nbsp; @ 2010-03-25 @\n(특히 온라인 게임에서) 플레이어가 불공평한 이익이나 보상을 얻을 수 있도록 방치된 게임 내부의 결점.\n\n@@color(#04f): ▣ 인간개발지수 @@ \n유엔 국제연합개발계획이 매년 세계 각국의 문맹률, 평균수명, 1인당 실질 국민소득 등 인간의 삶과 관련된 여러 가지 지표를 조사해 인간개발 성취 정도를 평가하는 지수를 말한다. 인간의 행복이나 발전 정도는 소득 수준과 비례하지 않고, 소득을 얼마나 현명하게 사용하느냐에 달려 있음을 보여주는 지수다.\n\n
@@color(#04f): ▣ 패치 @@ (patch) &nbsp; &nbsp; @ 2010-03-25 @\n이미 출시된 제품의 문제점을 수정하는 소프트웨어. 버그를 수정하고 빠진 기능을 추가해서 내놓곤 한다.\n\n@@color(#04f): ▣ 포스트모르템 @@(Postmortem) &nbsp; &nbsp; @ 2009-11-07 @\n원래 '부검'(負劍)이란 뜻으로, 시체를 해부하여 죽은 원인을 밝혀내는 일을 의미한다. \n게임 개발과 관련 해서, 포스트모르템이란 출시된 게임에서 제작 과장에서 성공적이었던 요소와 문제를 야기했던 요소를 낱낱이 분석하는 것을 말한다. 예로, 게임 디벨로퍼(Game Developers) 잡지의 포스트모르템이라는 제목의 연재 기사들이 있다.\n\n@@color(#04f): ▣ 포지티브섬 게임 @@(Positive-sum game)\n\n@@color(#04f): ▣ 폭포수 개발 모델 @@(waterfall development model) &nbsp; &nbsp; @ 2010-03-25 @\n먼저 요구되는 기능을 정리하고, 그것들을 모듈화된(modular) 하위 시스템으로 나눈 다음, 각각의 모듈을 만들고, 전체적으로 통합하며, 끝으로 완성된 시스템이 요구 조건을 모두 만족시키는지 확인한 후 출시하도록 하는 소프트웨어 제작 과정을 말한다. 일반적으로 규모가 크고 잘 알려진 시스템에 대해서는 적합하지만, 높은 효율성과 기능 혁신을 필요로 하는 시스템에 대해서는 덜 효율적이다.\n\n@@color(#04f): ▣ 프로토타입 @@(Prototype)\n프로토타입의 원래 뜻은 원형, 초기 형태 등을 가리키는 것이지만, 흔히 공학에서 말하는 프로토타입이란 어떤 구조물이나 장비에 대하여, 형상이나 설계, 적합성 또는 성능 등을 평가하기 위해 만든 실물 크기의 모형을 말한다. \n\n
@@color(#04f): 시험용 게임물 등급 제도 @@ \n* 게임물등급위원회(게임위)가 시행하고 있으며, 2006년 4월 24일 제정된 게임산업진흥법에 따라 국내에서 서비스되는 게임은 개발과정에서 성능, 안정성, 이용자 만족도 등을 평가할 목적으로 테스트를 진행하는 경우 심험용 게임물 심의를 받아야한다.\n* 테스트는 시험용 게임 등급을 받은 후 30일 이내에 진행돼야하며, 인원은 1만명을 넘지 말아야 한다. 만약 1만명 이상의 인원이 테스트에 참여하려면 정식 심의를 받아야 한다. \n
@@color(#04f): ▣ 샌드박스 @@(sandbox) @ 2010-03-25 @\n복잡하고 동적인 시뮬레이션을 통해 흥미를 이끌어내는 게임. 미리 정해진 목표난 이야기에 의존하기보다 플레이어의 창의성에 의존하다.\n\n@@color(#04f): ▣ 소모규 개방경제 @@ (Small Open Economy)는 @ 2011-01-08 @\nOECD가 명명한 것으로서 보통 약자로 SMOPEC라고 표기한다. 즉 OECD는 경제규모가 작아 정책적으로 국제가격, 금리, 소득에 영향을 미칠 수는 없지만 국제무역에 활발하게 참여하는 국가경제를 소규모 개방경제라고 칭한 것이다. \n한편 强小國(Small but Strong Countries)이란 인구 규모는 작지만 소득 수준이 높은 국가를 지칭한다. \n\n@@color(#04f): ▣ 소셜네트워크서비스 @@ (Social Network Service)란 @ 2011-01-23 @\n웹상에서 이용자들이 친구, 선후배, 동료 등 지인과의 인맥 관계를 강화시키고 또 새로운 인맥을 쌓으며 폭넓은 인적네트워크를 형성할 수 있도록 해주는 서비스로 간단히 SNS라고 부르기도 하는데 트위터ㆍ싸이월드ㆍ페이스북 등이 대표적이다.\n\n@@color(#04f): ▣ 스마트폰 @@(Smartphone)은 일반적으로 'PC와 유사한 기능'을 수행할 수 있는 이동전화를 뜻함. \n&nbsp; &nbsp; 일반적으로 자체 설치된 Operating System를 (Symbian OS, iPhone OS, Windows Mobile, Palm Web OS, Linux, Android 등) 통해 일정관리, 이메일 등의 기본적 기능 외에도 PDF나 MS Office 파일 등의 열람이 가능하며, MP3, 사진, 비디오, 인터넷 브라우징 등이 가능한 모바일 기기를 스마트폰이라 칭함. 최근에는 Apple 사의 App Store를 시초로하여 사용자가 원하는 애플리케이션을 직접 선택, 구매하여 설치할 수 있는 기능이 필수적으로 자리잡고 있음\n&nbsp; &nbsp; 출처 ; February 2009 2nd Issue 글로벌 게임산업 Trend(한국산업진흥원)\n\n@@color(#04f): ▣ 스타형(STAR) 휴가 문화 @@\n천편일률적인 휴가에서 벗어나 휴가를 이용하여 업무 외의 개인적인 관심사를 탐구하는 자기개발 Self-development형, 젊은 여성층을 중심으로 휴가를 기회로 외모 변신을 도모하는 변신형 Transformation, 스스로가 목표하는 계획과 일정에 맞춰 혼자 여행하는 나홀로형 Alone, 집에서 편안하게 휴식하면서 가족과 화목을 도모하는 신체적 재충전을 추구하는 방콕형 Rest 휴가.\n\n&nbsp; &nbsp;
@@color(#04f): ▣ 모아레 @@(Moire)란\n단어는 프랑스인들이 고대 중국에서 수입된 비단 위에 나타나는 물결무늬를 일컬었던 말로, 요즘에는 두 개 이상의 주기적인 물결무늬가 겹쳐져 생기는 간섭무늬(interference fringe)를 지칭하는 단어로 사용된다.\n\n모기장 같은 망사 두 장이 겹쳐있을 때 망사를 이루는 세밀한 직물의 격자간격보다 훨씬 크고 변화가 다양한 얼룩무늬를 볼 수 있다. 또한 머리빗 두 개를 겹쳐서 보면 간격이 빗살보다 넓은 새로운 어두운 그림자를 볼 수 있다. 이렇게 주기적인 무늬가 겹쳐서 원래의 주기보다 큰 무늬를 만드는 현상을 말한다.\n\n1. 모아레 현상은 맥놀이 현상이 시각적으로 발생하는 것으로, 일정한 간격을 갖는 물체 사이에 발생하는 간섭 무늬를 말하며, 차트 위에 무지개색 물결 무늬가 나타나거나 햇빛이 비치는 날 모기장이나 커텐 등이 겹쳐져 있으면 물결무늬가 생기고, 줄무늬 옷을 입고 촬영한 사진이나 일정한 간격의 구조물을 촬영했을 때 무지개 빛이 나타나는 모습에서도 확인할 수 있다. \n\n2. 부적절한 스크린 각도에 의해 인쇄물에서 나타나는 색상의 덩어리지는 현상.\n도트 무늬가 충돌하여 발생하는 파도 모양의 무늬로서 망점 수가 다른 두 개의 방점 화면이 동일한 이미지에 겹쳐질 때 만들어진다.\n예를 들어 스캔한 원본 망점 화면과 이미지의 dpi 망점 수가 다르면 모니터 화면에 모아레 무늬가 생긴다. 이런 문제가 발생하지 않게 하려면 화면 각도와 망점 화면의 망점 수를 정확하게 설정해야 한다.\n\n3. 포토샵 필터 중에서 Blur(픽셀이 가지고 있는 색상 차이를 줄여서 전반적으로 뿌옇게 만들어준다)를 사용해서, \n스캔 받은 이미지에 묻어있는 잡음이나 모아레 현상을 제거할 수 있다.\n
@@color(#04f): ▣ 캡슐화 @@\n관련있는 데이터를 한데 묶어 줍으로써, 데이터를 보다 일괄적으로 관리하는 것\n\n@@color(#04f): ▣ 커뮤니케이션 @@ [명사]\n사람들끼리 서로 생각, 느낌 따위의 정보를 주고받는 일. 말이나 글, 그 밖의 소리, 표정, 몸짓 따위로 이루어진다. ‘의사 전달’, ‘의사소통’으로 순화. \n\n@@color(#04f): ▣ 컷씬 @@ (cut-scene) &nbsp; &nbsp; @ 2010-03-25 @\n동적으로 생성되기보다는 이미 준비된 데이터부터 재생되는 비대화형(non-interactive) 동영상; 일반적으로 게임의 도입부나 종결부에 사용되며, 줄거리를 전달하는 목적으로 제공되거나, 플레이어가 목표를 달성했을 때 그에 대한 보상으로 웅장한 그래픽을 보여주기도 한다.\n\n@@color(#04f): ▣ 코쿤 @@ (cocoon)은 누에고치를 빗댄 말로,\n&nbsp; &nbsp; 불확실성이 증대되는 경기침제기에 타인과의 접촉이나 교제에서 받는 스트레스를 피해 외부와의 단절을 선언한 사람들을 의미함.\n\n@@color(#04f): ▣ 클라우드 컴퓨팅 @@ (Cloud Computing) &nbsp; &nbsp; @ 2011-06-14 @\n자료나 소프트웨어를 개별 기기가 아닌 데이터센터에 저장해뒀다가 필요할 때마다 인터넷을 통해 꺼내 쓰는 서비스. 전 과정이 마치 구름(cloud)처럼 눈에 보이지 않는 인터넷상에서 이루어진다는 뜻으로 이름 붙여졌다.\n\n
* 별책\n* 정리\n*[[formatting]]
GettingStarted\n----\n[[용어정리]]\n----\n<<slider about [[About...]] [[About...]] 'Learn about the CasePSD team'>>\n----\n\nsince 2008.7.1\n\n
GettingStarted\n
Handmade
(ccTiddly 1.1)a reusable non-linear personal web notebook
/***\nThis is a sample style definition to demonstrate CustomCssClass formatting\n***/\n/*{{{*/\n.wrappingClass {color: #666; background: #bbb;}\n/*}}}*/\n.wrappingClass {color: #000000; background: #D7DEDD;}\n\n/***\nCosmetic fixes that probably should be included in a future TW...\n***/\n/*{{{*/\n.viewer .listTitle { list-style-type:none; margin-left:-2em; }\n.editorFooter .button { padding-top: 0px; padding-bottom:0px; }\n/*}}}*/\n/***\nImportant stuff. See TagglyTaggingStyles and HorizontalMainMenuStyles\n***/\n/*{{{*/\n[[TagglyTaggingStyles]]\n[[HorizontalMainMenuStyles]]\n/*}}}*/\n/***\nClint's fix for weird IE behaviours\n***/\n/*{{{*/\nbody {position:static;}\n.tagClear{margin-top:1em;clear:both;}\n/*}}}*/\n/***\nJust colours, fonts, tweaks etc. See SideBarWhiteAndGrey\n***/\n/*{{{*/\nbody {background:#eee; /* font-size:103%; */}\na{ color: #069; }\na:hover{ background: #069; color: #fff; }\n.popup { background: #178; border: 1px solid #069; }\n.headerForeground a { color: #6fc;}\n.headerShadow { left: 2px; top: 2px; }\n.title { padding:0px; margin:0px; }\n.siteSubtitle { padding:0px; margin:0px; padding-left:1.5em; }\n.subtitle { font-size:90%; color:#ccc; padding-left:0.25em; }\nh1,h2,h3,h4,h5 { color: #000; background: transparent; }\n.title {color:black; font-size:2em;}\n.shadow .title {color:#999; }\n.viewer pre { background-color:#f8f8ff; border-color:#ddf; }\n.viewer { padding-top:0px; }\n.editor textarea { font-family:monospace; }\n#sidebarOptions { border:1px #ccc solid; }\n.tiddler {\n border-bottom:1px solid #ccc; border-right:1px solid #ccc; padding-bottom:1em; margin-bottom:1em; \n background:#fff; padding-right:1.5em; }\n#messageArea { background-color:#bde; border-color:#8ab; border-width:4px; border-style:dotted; font-size:90%; }\n#messageArea .button { text-decoration:none; font-weight:bold; background:transparent; border:0px; }\n#messageArea .button:hover {background: #acd;}\n[[SideBarWhiteAndGrey]]\n\n.viewer td {vertical-align:top;}\n\n.viewer table.noBorder {border-style:none;}\n.viewer table.noBorder td {border-style:none;}\n.viewer table.threeCol td {width:33%;}\n\n#adsense {\n margin: 1em 15.7em 0em 1em; border:1px solid #ddd;\n background:#f8f8f8; text-align:center;margin-bottom:1em;overflow:hidden;padding:0.5em;} \n\n.sliderPanel { margin-left: 2em; }\n\n.viewer th { background:#ddd; color:black; }\n/*}}}*/\n/*{{{*/\n/* for testing clint's new formatter. eg {{red{asdfaf}}} */\n.red { color:white; background:red; display:block; padding:1em; } \n\n/* FF doesn't need this. but IE seems to want to make first one white */\n.txtMainTab .tabset { background:#eee; }\n.txtMoreTab .tabset { background:transparent; }\n\n.faq ol li { padding-top:1em; font-size:120%; }\n.faq ol ul li { padding-top:0px; font-size:100%; }\n\n/*}}}*/\n
{{{\n@@color(#04f): 가치주 @@\n}}}\n@@color(#04f): 가치주 @@\ndddss\n!Code\n{{{\nToday is <<today>>.\n}}}\n\n{{wrappingClass{Text that is now accentuated}}}\n\n@@sf@@\n<<<\ndfsf\n{{{\n// SideBarOption\n<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<tiddler 'LoginPanel'>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>\n}}}\n
/***\n''NestedSlidersPlugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman\nsource: http://www.TiddlyTools.com/#NestedSlidersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nQuickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''\n\nYou can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.\n\nFor more details, please click on a section headline below:\n++++!!!!![Configuration]>\nDebugging messages for 'lazy sliders' deferred rendering:\n<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering\n<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered\n===\n++++!!!!![Usage]>\nWhen installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify\n*default to open\n*cookiename\n*heading level\n*floater\n*rollover\n*custom label/tooltip\n*automatic blockquote\n*deferred rendering\nThe complete syntax, using all options, is:\n//{{{\n++++(cookiename)!!!!!^*[label|tooltip]>...\ncontent goes here\n===\n//}}}\nwhere:\n* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^\nmarks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^\n* {{{(cookiename)}}}^^\nsaves the slider opened/closed state, and restores this state whenever the slider is re-rendered.^^\n* {{{!}}} through {{{!!!!!}}}^^\ndisplays the slider label using a formatted headline (Hn) style instead of a button/link style^^\n* {{{"^"}}} //(without the quotes)//^^\nmakes the slider 'float' on top of other content rather than shifting that content downward^^\n* {{{"*"}}} //(without the quotes)//^^\nautomatically opens/closes slider on "rollover" as well as when clicked^^\n* {{{[label]}}} or {{{[label|tooltip]}}}^^\nuses custom label/tooltip. (defaults are: ">" (more) and "<" (less)^^\n* {{{">"}}} //(without the quotes)//^^\nautomatically adds blockquote formatting to slider content^^\n* {{{"..."}}} //(without the quotes)//^^\ndefers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^\n\n//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//\n===\n++++!!!!![Examples]>\nsimple in-line slider: \n{{{\n+++\n content\n===\n}}}\n+++\n content\n===\n----\nuse a custom label and tooltip: \n{{{\n+++[label|tooltip]\n content\n===\n}}}\n+++[label|tooltip]\n content\n===\n----\ncontent automatically blockquoted: \n{{{\n+++>\n content\n===\n}}}\n+++>\n content\n===\n----\nall options combined //(default open, cookie, heading, floater, rollover, label/tooltip, blockquoted, deferred)//\n{{{\n++++(testcookie)!!!^*[label|tooltip]>...\n content\n===\n}}}\n++++(testcookie)!!!^*[label|tooltip]>...\n content\n===\n----\ncomplex nesting example:\n{{{\n+++^[get info...|click for information]\n put some general information here, plus a floating slider with more specific info:\n +++^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^*[glossary definition]explaining technical terms===\n ===\n===\n}}}\n+++^[get info...|click for information]\n put some general information here, plus a floating slider with more specific info:\n +++^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^*[glossary definition]explaining technical terms===\n ===\n===\n----\nnested floaters\n>menu: <<tiddler NestedSlidersExample>>\n(see [[NestedSlidersExample]] for definition)\n----\n===\n+++!!!!![Installation]>\nimport (or copy/paste) the following tiddlers into your document:\n''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)\n===\n+++!!!!![Revision History]>\n\n++++[2006.02.16 - 1.7.7]\ncorrected deferred rendering to account for use-case where show/hide state is tracked in a cookie\n===\n\n++++[2006.02.15 - 1.7.6]\nin adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)\n===\n\n++++[2006.02.04 - 1.7.5]\nadd 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals\n===\n\n++++[2006.01.18 - 1.7.4]\nonly define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.\n===\n\n++++[2006.01.16 - 1.7.3]\nadded adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.\n===\n\n++++[2006.01.16 - 1.7.2]\nadded button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends\n===\n\n++++[2006.01.14 - 1.7.1]\nadded optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.\n===\n\n++++[2006.01.14 - 1.7.0]\nadded optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)\n===\n\n+++[2006.01.03 - 1.6.2]\nWhen using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)\n===\n\n+++[2005.12.15 - 1.6.1]\nadded optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders\nremoved checkbox option for 'global' application of lazy sliders\n===\n\n+++[2005.11.25 - 1.6.0]\nadded optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)\n===\n\n+++[2005.11.21 - 1.5.1]\nrevised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.\n===\n\n+++[2005.11.20 - 1.5.0]\n added (cookiename) syntax for optional tracking and restoring of slider open/close state\n===\n\n+++[2005.11.11 - 1.4.0]\n added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style\n===\n\n+++[2005.11.07 - 1.3.0]\n removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other\n formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines\n===\n\n+++[2005.11.05 - 1.2.1]\n changed name to NestedSlidersPlugin\n more documentation\n===\n\n+++[2005.11.04 - 1.2.0]\n added alternative character-mode syntax {{{(((}}} and {{{)))}}}\n tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax\n===\n\n+++[2005.11.03 - 1.1.1]\n fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used\n code cleanup, added documentation\n===\n\n+++[2005.11.03 - 1.1.0]\n changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}\n changed name to EasySlidersPlugin\n===\n\n+++[2005.11.03 - 1.0.0]\n initial public release\n===\n\n===\n+++!!!!![Credits]>\nThis feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with research, programming and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson\n===\n***/\n// //+++!!!!![Code]\n//{{{\nversion.extensions.nestedSliders = {major: 1, minor: 7, revision: 7, date: new Date(2006,2,16)};\n//}}}\n\n//{{{\n// options for deferred rendering of sliders that are not initially displayed\nif (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;\nif (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;\n\n// default styles for 'floating' class\nsetStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \s\n background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");\n//}}}\n\n//{{{\nconfig.formatters.push( {\n name: "nestedSliders",\n match: "\s\sn?\s\s+{3}",\n terminator: "\s\ss*\s\s={3}\s\sn?",\n lookahead: "\s\sn?\s\s+{3}(\s\s+)?(\s\s([^\s\s)]*\s\s))?(\s\s!*)?(\s\s^)?(\s\s*)?(\s\s[[^\s\s]]*\s\s])?(\s\s>)?(\s\s.\s\s.\s\s.)?\s\ss*",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n {\n // location for rendering button and panel\n var place=w.output;\n\n // default to closed, no cookie\n var show="none"; var title=">"; var tooltip="show"; var cookie="";\n\n // extra "+", default to open\n if (lookaheadMatch[1])\n { show="block"; title="<"; tooltip="hide"; }\n\n // cookie, use saved open/closed state\n if (lookaheadMatch[2]) {\n cookie=lookaheadMatch[2].trim().substr(1,lookaheadMatch[2].length-2);\n cookie="chkSlider"+cookie;\n if (config.options[cookie]==undefined)\n { config.options[cookie] = (show=="block") }\n if (config.options[cookie])\n { show="block"; title="<"; tooltip="hide"; }\n else\n { show="none"; title=">"; tooltip="show"; }\n }\n\n // custom label/tooltip\n if (lookaheadMatch[6]) {\n title = lookaheadMatch[6].trim().substr(1,lookaheadMatch[6].length-2);\n var pos=title.indexOf("|");\n if (pos!=-1)\n { tooltip = title.substr(pos+1,title.length); title = title.substr(0,pos); }\n else\n { tooltip += " "+title; }\n }\n\n // create the button\n if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link\n var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;\n var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,null,title);\n btn.onclick=onClickNestedSlider;\n btn.setAttribute("href","javascript:;");\n btn.setAttribute("title",tooltip);\n }\n else\n var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider);\n btn.sliderCookie = cookie; // save the cookiename (if any) in the button object\n\n // "non-click" MouseOver open/close slider\n if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;\n\n // create slider panel\n var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";\n var panel=createTiddlyElement(place,"div",null,panelClass,null);\n panel.style.display = show;\n panel.button = btn; // so the slider panel know which button it belongs to\n btn.sliderPanel=panel;\n\n // render slider (or defer until shown) \n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n if ((show=="block")||!lookaheadMatch[8]) {\n // render now if panel is supposed to be shown or NOT deferred rendering\n w.subWikify(lookaheadMatch[7]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);\n // align slider/floater position with button\n adjustSliderPos(place,btn,panel,panelClass);\n }\n else {\n var src = w.source.substr(w.nextMatch);\n var endpos=findMatchingDelimiter(src,"+++","===");\n panel.setAttribute("raw",src.substr(0,endpos));\n panel.setAttribute("blockquote",lookaheadMatch[7]?"true":"false");\n panel.setAttribute("rendered","false");\n w.nextMatch += endpos+3;\n if (w.source.substr(w.nextMatch,1)=="\sn") w.nextMatch++;\n if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\sn\sn"+panel.getAttribute("raw"));\n }\n }\n }\n }\n)\n\n// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)\nfunction findMatchingDelimiter(src,starttext,endtext) {\n var startpos = 0;\n var endpos = src.indexOf(endtext);\n // check for nested delimiters\n while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {\n // count number of nested 'starts'\n var startcount=0;\n var temp = src.substring(startpos,endpos-1);\n var pos=temp.indexOf(starttext);\n while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }\n // set up to check for additional 'starts' after adjusting endpos\n startpos=endpos+endtext.length;\n // find endpos for corresponding number of matching 'ends'\n while (startcount && endpos!=-1) {\n endpos = src.indexOf(endtext,endpos+endtext.length);\n startcount--;\n }\n }\n return (endpos==-1)?src.length:endpos;\n}\n//}}}\n\n//{{{\nfunction onClickNestedSlider(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theLabel = theTarget.firstChild.data;\n var theSlider = theTarget.sliderPanel\n var isOpen = theSlider.style.display!="none";\n // if using default button labels, toggle labels\n if (theLabel==">") theTarget.firstChild.data = "<";\n else if (theLabel=="<") theTarget.firstChild.data = ">";\n // if using default tooltips, toggle tooltips\n if (theTarget.getAttribute("title")=="show")\n theTarget.setAttribute("title","hide");\n else if (theTarget.getAttribute("title")=="hide")\n theTarget.setAttribute("title","show");\n if (theTarget.getAttribute("title")=="show "+theLabel)\n theTarget.setAttribute("title","hide "+theLabel);\n else if (theTarget.getAttribute("title")=="hide "+theLabel)\n theTarget.setAttribute("title","show "+theLabel);\n // deferred rendering (if needed)\n if (theSlider.getAttribute("rendered")=="false") {\n if (config.options.chkDebugLazySliderRender)\n alert("rendering '"+theLabel+"':\sn\sn"+theSlider.getAttribute("raw"));\n var place=theSlider;\n if (theSlider.getAttribute("blockquote")=="true")\n place=createTiddlyElement(place,"blockquote");\n wikify(theSlider.getAttribute("raw"),place);\n theSlider.setAttribute("rendered","true");\n }\n // show/hide the slider\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n theSlider.style.display = isOpen ? "none" : "block";\n if (this.sliderCookie && this.sliderCookie.length)\n { config.options[this.sliderCookie]=!isOpen; saveOptionCookie(this.sliderCookie); }\n // align slider/floater position with target button\n adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);\n return false;\n}\n\n// hijack animation handler 'stop' handler so overflow is visible after animation has completed\nSlider.prototype.coreStop = Slider.prototype.stop;\nSlider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }\n\n// adjust panel position based on button position\nif (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {\n ///////////////////////////////////////////////////////////////////////////////\n /// EXPERIMENTAL HACK - WORKS IN SOME CASES, NOT IN OTHERS\n ///////////////////////////////////////////////////////////////////////////////\n // "if this panel is floating and the parent is not also a floating panel"...\n if (panelClass=="floatingPanel" && place.className!="floatingPanel") {\n var left=0; var top=btn.offsetHeight;\n if (place.style.position!="relative") { left+=findPosX(btn); top+=findPosY(btn); }\n if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth;\n panel.style.left=left+"px"; panel.style.top=top+"px";\n }\n}\n\nfunction getWindowWidth() {\n if(document.width!=undefined)\n return document.width; // moz (FF)\n if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )\n return document.documentElement.clientWidth; // IE6\n if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )\n return document.body.clientWidth; // IE4\n if(window.innerWidth!=undefined)\n return window.innerWidth; // IE - general\n return 0; // unknown\n}\n//}}}\n// //===
You can wrap any text in an HTML {{{<span>}}} or {{{<div>}}} with a specified CSS class. This allows custom CSS styling in a nice, modular way. By placing a rule in your StyleSheet tiddler like {{{.wrappingClass{color: #666; background: #bbb} }}} you can markup a piece of text in the tiddler using this code:\n\n{{{\n{{wrappingClass{Text that is now accentuated}}}\n}}}\n\n{{wrappingClass{Text that is now accentuated}}}\n\nBy default, the text is placed in a {{{<span>}}}. To use a {{{<div>}}} instead, insert a line break before the text:\n\n{{{\n{{wrappingClass{\nText that is now accentuated}}}\n}}}\n\n{{wrappingClass{\nText that is now accentuated}}}\n
/***\n|''Name:''|NestedSlidersTweaks|\n|''Version:''|0.5.0 (07-Mar-2006)|\n|''Source:''|http://rodney.gotdns.com|\n|''Author:''|[[RodneyGomes]]|\n|''Type:''|PluginTweak+Macro|\n\n!Dependencies\nThis is a plugin tweak and it requires NestedSlidersPlugins\n\n!Description\nThis tweak allows you to define nicer looking popup menus... (more description \nto come soon)\n\n!Usage\nMore information soon.\n\n!Example\n<<nstweak on>>+++^[Menu1]\nMenuOption1\nMenuOption2\n+++^[NestedMenu]\nMenuOption3\nMenuOption4\n===\nMenuOption5\n===<<nstweak off>>\n\n// //+++[Revision History]>\n*v0.5.0\n** IE 6 support!\n*v0.4.1\n** fixed up general coding style (mainly because of Firefox 1.5.0.1 bugs)\n* v0.4\n** fixed the buttons to now refresh on click so that even if the tiddler moves\n the next time you click on the button of the slider will make it open in the \n right place.\n* v0.3.1\n** fixed issue with some browsers complaining about "missing formal parameter". \n Was associated with the use of the name class as a paramter to some functions.\n* v0.3.0\n** now with macro support!\n* v0.2.0\n** fixed issue with making the onmouseover work for all floatingPanels\n* v0.1.0\n** initial release. \n// //===\n\n\n// //+++[Code]\n***/\n//{{{\n\nconfig.macros.nstweak = {};\n\nconfig.macros.nstweak.clickingOnNestedSliderOrButton = function(e,obj) {\n var res = false;\n \n if (config.macros.nstweak.clickingOn(e,obj) || \n ("button" in obj && config.macros.nstweak.clickingOn(e,obj.button)))\n return true;\n \n var children = obj.childNodes; \n \n for(var i = 0; i < children.length; i++)\n res = res || \n config.macros.nstweak.clickingOnNestedSliderOrButton(e,children[i]);\n \n return res;\n}\n\nconfig.macros.nstweak.old_main_onClick = document.onclick;\ndocument.onclick = function mainOnClick(e) {\n var floatPanels = document.getElementsByTagName("div");\n \n for(var i = 0; i < floatPanels.length; i++) {\n if (floatPanels[i].getAttribute) { \n var panel = floatPanels[i];\n if (panel.getAttribute('clickclass') == 'clickingclass')\n if (!config.macros.nstweak.clickingOnNestedSliderOrButton(e,panel))\n if (panel.style.display != 'none')\n config.macros.nstweak.closeFloatPanel(floatPanels[i]);\n }\n\n if (config.macros.nstweak.old_main_onClick)\n config.macros.nstweak.old_main_onClick(e);\n }\n}\n\nconfig.macros.nstweak.getElementPosition = function(obj) {\n var offsetTrail = obj;\n var offsetLeft = 0;\n var offsetTop = 0;\n \n while (offsetTrail) {\n offsetLeft += offsetTrail.offsetLeft;\n offsetTop += offsetTrail.offsetTop;\n offsetTrail = offsetTrail.offsetParent;\n }\n \n return {left:offsetLeft, top:offsetTop};\n}\n\nfunction getPageX(e) {\n if (!e) e = window.event;\n if (config.browser.isIE){\n return e.offsetX;\n } else {\n return e.pageX;\n }\n}\n\nfunction getPageY(e) { \n if (!e) e = window.event;\n \n if (config.browser.isIE){\n return e.offsetY;\n } else {\n return e.pageY;\n }\n}\n\nconfig.macros.nstweak.clickingOn = function(e,obj) {\n var posObj = config.macros.nstweak.getElementPosition(obj);\n \n return ((posObj.left < getPageX(e)) && (posObj.left + obj.offsetWidth > getPageX(e)) &&\n (posObj.top < getPageY(e)) && (posObj.top + obj.offsetHeight > getPageY(e)));\n}\n\nconfig.macros.nstweak.closeFloatPanel = function(panel) { \n if (panel.getAttribute)\n if (panel.getAttribute('clickclass') == 'clickingclass')\n panel.style.display = 'none';\n}\n\nconfig.macros.nstweak.closeAllSlidersOfClass = function(_class,place) {\n var elements = place.getElementsByTagName("div");\n \n for(var i = 0; i < elements.length; i++ ) {\n if (elements[i].getAttribute)\n if (elements[i].getAttribute('clickclass') == _class)\n elements[i].style.display = 'none';\n } \n}\n\nconfig.macros.nstweak.allPanelsClosed = function(_class) {\n var elements = document.getElementsByTagName("div");\n var res = true;\n \n for(var i = 0; i < elements.length;i++ ) { \n if (elements[i].getAttribute)\n if (elements[i].getAttribute("clickclass") == _class)\n res = res && (elements[i].style.display == "none");\n } \n \n return res;\n}\n\nconfig.macros.nstweak.state = false;\n\nconfig.macros.nstweak.buttonpopupclass = "buttonpopup";\nconfig.macros.nstweak.sliderpopupclass = "sliderpopup";\nconfig.macros.nstweak.nestedbuttonpopupclass = "nestedbuttonpopup";\nconfig.macros.nstweak.nestedsliderpopupclass = "nestedsliderpopup";\n\nconfig.macros.nstweak.enabled_floating_panel = {};\n\nconfig.macros.nstweak.handler = function(place,macroName,params) {\n if (params[1]) this.buttonpopupclass = params[1];\n if (params[2]) this.sliderpopupclass = params[2];\n if (params[3]) this.nestedbuttonpopupclass = params[3];\n if (params[4]) this.nestedsliderpopupclass = params[4];\n \n if (params[0].toLowerCase() == 'on')\n this.state = true;\n else\n this.state = false; \n}\n\n// hijack NestedSlidersPlugin hook :)\nwindow.adjustSliderPos = function(place,btn,panel,panelClass) {\n if (config.macros.nstweak.state) {\n var _panelClass = panelClass; \n if ( panelClass == "floatingPanel") {\n var _clickclass = "clickingclass";\n \n config.macros.nstweak.enabled_floating_panel[_clickclass] = false;\n \n var onMouseOver = function(e) {\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n \n // Small trick for when everything is closed because it's basically lost\n // focus and therefore we reset the enabled back to false.\n if (config.macros.nstweak.allPanelsClosed(_clickclass)) {\n config.macros.nstweak.enabled_floating_panel[_clickclass] = false;\n return;\n }\n \n // only click if this panelclass is the same as the enabled one and if it is not already shown!\n if (config.macros.nstweak.enabled_floating_panel[_clickclass] && theTarget.sliderPanel.style.display == "none") {\n config.macros.nstweak.closeAllSlidersOfClass(_clickclass,place);\n onMouseClick(e); \n }\n }\n \n var old_onMouseClick = btn.onclick;\n var onMouseClick = function(e) { \n\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theSlider = theTarget.sliderPanel\n \n if (theSlider.getAttribute("sliderclass") == "base") {\n var left=0; \n var top=theSlider.button.offsetHeight;\n \n if (theSlider.style.position!="relative") { \n left+=findPosX(theSlider.button); \n top+=findPosY(theSlider.button); \n }\n \n theSlider.style.left=left+"px"; \n theSlider.style.top=top+"px";\n }\n \n if (old_onMouseClick) \n old_onMouseClick(e); \n \n config.macros.nstweak.enabled_floating_panel[_clickclass] = true; \n }\n \n panel.setAttribute("clickclass",_clickclass);\n \n btn.onmouseover = onMouseOver;\n btn.onclick = onMouseClick;\n \n if (place.className=="floatingPanel") {\n panel.className = config.macros.nstweak.nestedsliderpopupclass;\n btn.className = config.macros.nstweak.nestedbuttonpopupclass; \n panel.setAttribute("sliderclass","nested");\n } else { \n panel.className = config.macros.nstweak.sliderpopupclass;\n btn.className = config.macros.nstweak.buttonpopupclass; \n panel.setAttribute("sliderclass","base"); \n }\n }\n } else {\n ///////////////////////////////////////////////////////////////////////////////\n /// EXPERIMENTAL HACK - WORKS IN SOME CASES, NOT IN OTHERS\n ///////////////////////////////////////////////////////////////////////////////\n // "if this panel is floating and the parent is not also a floating panel"...\n if (panelClass=="floatingPanel" && place.className!="floatingPanel") {\n var left=0; var top=btn.offsetHeight;\n if (place.style.position!="relative") { left+=findPosX(btn); top+=findPosY(btn); }\n panel.style.left=left+"px"; panel.style.top=top+"px";\n }\n }\n}\n\n//}}}\n// //===
/***\n| Name:|SiteMapMacro|\n| Author:|Simon Baird|\n| Location:|http://simonbaird.com/mptw/#SiteMapMacro|\n| Version:|1.0.3, 15-Mar-06|\n\n!!Examples\nSee SiteMap and SliderSiteMap for example usage.\n\n!!Parameters\n* Name of tiddler to start at\n* Max depth (a number) \n* Format (eg, nested, see formats below)\n* Don't show root flag (anything other than null turns it on)\n* Tags - a string containing a bracketed list of tags that we are interested in\n\n!!History\n* 1.0.3 (15-Mar-06)\n** added tag filtering\n* 1.0.2 (15-Mar-06)\n** Added json format and dontshowroot option\n* 1.0.1 (9-Mar-06)\n** Added selectable formats and fixed nested slider format\n* 1.0.0 (8-Mar-06)\n** first release\n\n***/\n//{{{\n\nversion.extensions.SiteMapMacro = {\n major: 1,\n minor: 0,\n revision: 3,\n date: new Date(2006,3,15),\n source: "http://simonbaird.com/mptw/#SiteMapMacro"\n};\n\nconfig.macros.siteMap = {\n\n formats: {\n bullets: {\n formatString: "%0[[%1]]\sn%2",\n indentString: "*"\n },\n\n // put this in your StyleSheet to make it look good.\n // .sliderPanel { margin-left: 2em; }\n\n sliders: {\n formatString: "[[%1]]+++\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n openSliders: {\n formatString: "[[%1]]++++\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n popups: {\n formatString: "[[%1]]+++^\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n // these don't work too well\n openPopups: {\n formatString: "[[%1]]++++^\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n \n // this is a little nuts but it works\n json: {\n formatString: '\sn%0{"%1":[%2\sn%0]}',\n formatStringLeaf: '\sn%0"%1"',\n indentString: " ",\n separatorString: ","\n }\n\n\n },\n\n defaultFormat: "bullets",\n\n treeTraverse: function(title,depth,maxdepth,format,dontshowroot,tags,excludetags) {\n\n var tiddler = store.getTiddler(title);\n var tagging = store.getTaggedTiddlers(title);\n\n if (dontshowroot)\n depth = 0;\n\n var indent = "";\n if (this.formats[format].indentString)\n for (var j=0;j<depth;j++)\n indent += this.formats[format].indentString;\n\n var childOutput = "";\n if (!maxdepth || depth < parseInt(maxdepth)) \n for (var i=0;i<tagging.length;i++)\n if (tagging[i].title != title) {\n if (this.formats[format].separatorString && i != 0)\n childOutput += this.formats[format].separatorString;\n childOutput += this.treeTraverse(tagging[i].title,depth+1,maxdepth,format,null,tags,excludetags);\n }\n\n if (childOutput == "" && (\n (tags && tags != "" && !tiddler.tags.containsAll(tags.readBracketedList())) ||\n (excludetags && excludetags != "" && tiddler.tags.containsAny(excludetags.readBracketedList()))\n )\n ) {\n // so prune it cos it doesn't have the right tags and neither do any of it's children\n return "";\n }\n\n if (dontshowroot)\n return childOutput;\n\n if (this.formats[format].formatStringLeaf && childOutput == "") {\n // required for nestedSliders\n return this.formats[format].formatStringLeaf.format([indent,title,childOutput]);\n }\n\n return this.formats[format].formatString.format([indent,title,childOutput]);\n },\n\n handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n wikify(this.treeTraverse(\n params[0] && params[0] != '.' ? params[0] : tiddler.title, 1, \n params[1] && params[1] != '.' ? params[1] : null, // maxdepth\n params[2] && params[2] != '.' ? params[2] : this.defaultFormat, // format\n params[3] && params[3] != '.' ? params[3] : null, // dontshowroot\n params[4] && params[4] != '.' ? params[4] : null, // tags\n params[5] && params[5] != '.' ? params[5] : null // excludetags\n ),place);\n }\n\n}\n\n//}}}\n
/***\n|Name|TagglyListPlugin|\n|Created by|SimonBaird|\n|Location|http://simonbaird.com/mptw/#TagglyListPlugin|\n|Version|1.1.2 25-Apr-06|\n|Requires|See TagglyTagging|\n\n!History\n* 1.1.2 (25-Apr-2006) embedded TagglyTaggingStyles. No longer need separated tiddler for styles.\n* 1.1.1 (6-Mar-2006) fixed bug with refreshAllVisible closing tiddlers being edited. Thanks Luke Blanshard.\n\n***/\n\n/***\n!Setup and config\n***/\n//{{{\n\nversion.extensions.TagglyListPlugin = {\n major: 1, minor: 1, revision: 2,\n date: new Date(2006,4,25),\n source: "http://simonbaird.com/mptw/#TagglyListPlugin"\n};\n\nconfig.macros.tagglyList = {};\nconfig.macros.tagglyListByTag = {};\nconfig.macros.tagglyListControl = {};\nconfig.macros.tagglyListWithSort = {};\nconfig.macros.hideSomeTags = {};\n\n// change this to your preference\nconfig.macros.tagglyListWithSort.maxCols = 6;\n\nconfig.macros.tagglyList.label = "Tagged as %0:";\n\n// the default sort options. set these to your preference\nconfig.macros.tagglyListWithSort.defaults = {\n sortBy:"title", // title|created|modified\n sortOrder: "asc", // asc|desc\n hideState: "show", // show|hide\n groupState: "nogroup", // nogroup|group\n numCols: 1\n};\n\n// these tags will be ignored by the grouped view\nconfig.macros.tagglyListByTag.excludeTheseTags = [\n "systemConfig",\n "TiddlerTemplates"\n];\n\nconfig.macros.tagglyListControl.tags = {\n title:"sortByTitle", \n modified: "sortByModified", \n created: "sortByCreated",\n asc:"sortAsc", \n desc:"sortDesc",\n hide:"hideTagged", \n show:"showTagged",\n nogroup:"noGroupByTag",\n group:"groupByTag",\n cols1:"list1Cols",\n cols2:"list2Cols",\n cols3:"list3Cols",\n cols4:"list4Cols",\n cols5:"list5Cols",\n cols6:"list6Cols",\n cols7:"list7Cols",\n cols8:"list8Cols",\n cols9:"list9Cols" \n}\n\n// note: should match config.macros.tagglyListControl.tags\nconfig.macros.hideSomeTags.tagsToHide = [\n "sortByTitle",\n "sortByCreated",\n "sortByModified",\n "sortDesc",\n "sortAsc",\n "hideTagged",\n "showTagged",\n "noGroupByTag",\n "groupByTag",\n "list1Cols",\n "list2Cols",\n "list3Cols",\n "list4Cols",\n "list5Cols",\n "list6Cols",\n "list7Cols",\n "list8Cols",\n "list9Cols"\n];\n\n\n//}}}\n/***\n\n!Utils\n***/\n//{{{\n// from Eric\nfunction isTagged(title,tag) {\n var t=store.getTiddler(title); if (!t) return false;\n return (t.tags.find(tag)!=null);\n}\n\n// from Eric\nfunction toggleTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)==null) t.tags.push(tag);\n else t.tags.splice(t.tags.find(tag),1);\n}\n\nfunction addTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n t.tags.push(tag);\n}\n\nfunction removeTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);\n}\n\n// from Udo\nArray.prototype.indexOf = function(item) {\n for (var i = 0; i < this.length; i++) {\n if (this[i] == item) {\n return i;\n }\n }\n return -1;\n};\nArray.prototype.contains = function(item) {\n return (this.indexOf(item) >= 0);\n}\n//}}}\n/***\n\n!tagglyList\ndisplays a list of tagged tiddlers. \nparameters are sortField and sortOrder\n***/\n//{{{\n\n// not used at the moment...\nfunction sortedListOfOtherTags(tiddler,thisTag) {\n var list = tiddler.tags.concat(); // so we are working on a clone..\n for (var i=0;i<config.macros.hideSomeTags.tagsToHide.length;i++) {\n if (list.find(config.macros.hideSomeTags.tagsToHide[i]) != null)\n list.splice(list.find(config.macros.hideSomeTags.tagsToHide[i]),1); // remove hidden ones\n }\n for (var i=0;i<config.macros.tagglyListByTag.excludeTheseTags.length;i++) {\n if (list.find(config.macros.tagglyListByTag.excludeTheseTags[i]) != null)\n list.splice(list.find(config.macros.tagglyListByTag.excludeTheseTags[i]),1); // remove excluded ones\n }\n list.splice(list.find(thisTag),1); // remove thisTag\n return '[[' + list.sort().join("]] [[") + ']]';\n}\n\nfunction sortHelper(a,b) {\n if (a == b) return 0;\n else if (a < b) return -1;\n else return +1;\n}\n\nconfig.macros.tagglyListByTag.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n\n var sortBy = params[0] ? params[0] : "title"; \n var sortOrder = params[1] ? params[1] : "asc";\n\n var result = store.getTaggedTiddlers(tiddler.title,sortBy);\n\n if (sortOrder == "desc")\n result = result.reverse();\n\n var leftOvers = []\n for (var i=0;i<result.length;i++) {\n leftOvers.push(result[i].title);\n }\n\n var allTagsHolder = {};\n for (var i=0;i<result.length;i++) {\n for (var j=0;j<result[i].tags.length;j++) {\n\n if ( \n result[i].tags[j] != tiddler.title // not this tiddler\n && config.macros.hideSomeTags.tagsToHide.find(result[i].tags[j]) == null // not a hidden one\n && config.macros.tagglyListByTag.excludeTheseTags.find(result[i].tags[j]) == null // not excluded\n ) {\n if (!allTagsHolder[result[i].tags[j]])\n allTagsHolder[result[i].tags[j]] = "";\n allTagsHolder[result[i].tags[j]] += "**[["+result[i].title+"]]\sn";\n\n if (leftOvers.find(result[i].title) != null)\n leftOvers.splice(leftOvers.find(result[i].title),1); // remove from leftovers. at the end it will contain the leftovers...\n }\n }\n }\n\n\n var allTags = [];\n for (var t in allTagsHolder)\n allTags.push(t);\n\n allTags.sort(function(a,b) {\n var tidA = store.getTiddler(a);\n var tidB = store.getTiddler(b);\n if (sortBy == "title") return sortHelper(a,b);\n else if (!tidA && !tidB) return 0;\n else if (!tidA) return -1;\n else if (!tidB) return +1;\n else return sortHelper(tidA[sortBy],tidB[sortBy]);\n });\n\n var markup = "";\n\n if (sortOrder == "desc") {\n allTags.reverse();\n }\n else {\n // leftovers first...\n for (var i=0;i<leftOvers.length;i++)\n markup += "*[["+leftOvers[i]+"]]\sn";\n } \n\n for (var i=0;i<allTags.length;i++)\n markup += "*[["+allTags[i]+"]]\sn" + allTagsHolder[allTags[i]];\n\n if (sortOrder == "desc") {\n // leftovers last...\n for (var i=0;i<leftOvers.length;i++)\n markup += "*[["+leftOvers[i]+"]]\sn";\n }\n\n wikify(markup,place);\n}\n\nconfig.macros.tagglyList.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n var sortBy = params[0] ? params[0] : "title"; \n var sortOrder = params[1] ? params[1] : "asc";\n var numCols = params[2] ? params[2] : 1;\n\n var result = store.getTaggedTiddlers(tiddler.title,sortBy);\n if (sortOrder == "desc")\n result = result.reverse();\n\n var listSize = result.length;\n var colSize = listSize/numCols;\n var remainder = listSize % numCols;\n\n var upperColsize;\n var lowerColsize;\n if (colSize != Math.floor(colSize)) {\n // it's not an exact fit so..\n lowerColsize = Math.floor(colSize);\n upperColsize = Math.floor(colSize) + 1;\n }\n else {\n lowerColsize = colSize;\n upperColsize = colSize;\n }\n\n var markup = "";\n var c=0;\n\n var newTaggedTable = createTiddlyElement(place,"table");\n var newTaggedBody = createTiddlyElement(newTaggedTable,"tbody");\n var newTaggedTr = createTiddlyElement(newTaggedBody,"tr");\n\n for (var j=0;j<numCols;j++) {\n var foo = "";\n var thisSize;\n\n if (j<remainder)\n thisSize = upperColsize;\n else\n thisSize = lowerColsize;\n\n for (var i=0;i<thisSize;i++) \n foo += ( "*[[" + result[c++].title + "]]\sn"); // was using splitList.shift() but didn't work in IE;\n\n var newTd = createTiddlyElement(newTaggedTr,"td",null,"tagglyTagging");\n wikify(foo,newTd);\n\n }\n\n};\n\n/* snip for later.....\n //var groupBy = params[3] ? params[3] : "t.title.substr(0,1)";\n //var groupBy = params[3] ? params[3] : "sortedListOfOtherTags(t,tiddler.title)";\n //var groupBy = params[3] ? params[3] : "t.modified";\n var groupBy = null; // for now. groupBy here is working but disabled for now.\n\n var prevGroup = "";\n var thisGroup = "";\n\n if (groupBy) {\n result.sort(function(a,b) {\n var t = a; var aSortVal = eval(groupBy); var aSortVal2 = eval("t".sortBy);\n var t = b; var bSortVal = eval(groupBy); var bSortVal2 = eval("t".sortBy);\n var t = b; var bSortVal2 = eval(groupBy);\n return (aSortVal == bSortVal ?\n (aSortVal2 == bSortVal2 ? 0 : (aSortVal2 < bSortVal2 ? -1 : +1)) // yuck\n : (aSortVal < bSortVal ? -1 : +1));\n });\n }\n\n if (groupBy) {\n thisGroup = eval(groupBy);\n if (thisGroup != prevGroup)\n markup += "*[["+thisGroup+']]\sn';\n markup += "**[["+t.title+']]\sn';\n prevGroup = thisGroup;\n }\n\n\n\n*/\n\n\n//}}}\n\n/***\n\n!tagglyListControl\nUse to make the sort control buttons\n***/\n//{{{\n\nfunction getSortBy(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.sortBy;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["title"])) return "title";\n else if (tiddler.tags.contains(usetags["modified"])) return "modified";\n else if (tiddler.tags.contains(usetags["created"])) return "created";\n else return defaultVal;\n}\n\nfunction getSortOrder(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.sortOrder;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["asc"])) return "asc";\n else if (tiddler.tags.contains(usetags["desc"])) return "desc";\n else return defaultVal;\n}\n\nfunction getHideState(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.hideState;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["hide"])) return "hide";\n else if (tiddler.tags.contains(usetags["show"])) return "show";\n else return defaultVal;\n}\n\nfunction getGroupState(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.groupState;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["group"])) return "group";\n else if (tiddler.tags.contains(usetags["nogroup"])) return "nogroup";\n else return defaultVal;\n}\n\nfunction getNumCols(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.numCols; // an int\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n for (var i=1;i<=config.macros.tagglyListWithSort.maxCols;i++)\n if (tiddler.tags.contains(usetags["cols"+i])) return i;\n return defaultVal;\n}\n\n\nfunction getSortLabel(title,which) {\n // TODO. the strings here should be definable in config\n var by = getSortBy(title);\n var order = getSortOrder(title);\n var hide = getHideState(title);\n var group = getGroupState(title);\n if (which == "hide") return (hide == "show" ? "−" : "+"); // 0x25b8;\n else if (which == "group") return (group == "group" ? "normal" : "grouped");\n else if (which == "cols") return "cols±"; // &plusmn;\n else if (by == which) return which + (order == "asc" ? "↓" : "↑"); // &uarr; &darr;\n else return which;\n}\n\nfunction handleSortClick(title,which) {\n var currentSortBy = getSortBy(title);\n var currentSortOrder = getSortOrder(title);\n var currentHideState = getHideState(title);\n var currentGroupState = getGroupState(title);\n var currentNumCols = getNumCols(title);\n\n var tags = config.macros.tagglyListControl.tags;\n\n // if it doesn't exist, lets create it..\n if (!store.getTiddler(title))\n store.saveTiddler(title,title,"",config.options.txtUserName,new Date(),null);\n\n if (which == "hide") {\n // toggle hide state\n var newHideState = (currentHideState == "hide" ? "show" : "hide");\n removeTag(title,tags[currentHideState]);\n if (newHideState != config.macros.tagglyListWithSort.defaults.hideState)\n toggleTag(title,tags[newHideState]);\n }\n else if (which == "group") {\n // toggle hide state\n var newGroupState = (currentGroupState == "group" ? "nogroup" : "group");\n removeTag(title,tags[currentGroupState]);\n if (newGroupState != config.macros.tagglyListWithSort.defaults.groupState)\n toggleTag(title,tags[newGroupState]);\n }\n else if (which == "cols") {\n // toggle num cols\n var newNumCols = currentNumCols + 1; // confusing. currentNumCols is an int\n if (newNumCols > config.macros.tagglyListWithSort.maxCols || newNumCols > store.getTaggedTiddlers(title).length)\n newNumCols = 1;\n removeTag(title,tags["cols"+currentNumCols]);\n if (("cols"+newNumCols) != config.macros.tagglyListWithSort.defaults.groupState)\n toggleTag(title,tags["cols"+newNumCols]);\n }\n else if (currentSortBy == which) {\n // toggle sort order\n var newSortOrder = (currentSortOrder == "asc" ? "desc" : "asc");\n removeTag(title,tags[currentSortOrder]);\n if (newSortOrder != config.macros.tagglyListWithSort.defaults.sortOrder)\n toggleTag(title,tags[newSortOrder]);\n }\n else {\n // change sortBy only\n removeTag(title,tags["title"]);\n removeTag(title,tags["created"]);\n removeTag(title,tags["modified"]);\n\n if (which != config.macros.tagglyListWithSort.defaults.sortBy)\n toggleTag(title,tags[which]);\n }\n\n store.setDirty(true); // save is required now.\n story.refreshTiddler(title,false,true); // force=true\n}\n\nconfig.macros.tagglyListControl.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n var onclick = function(e) {\n if (!e) var e = window.event;\n handleSortClick(tiddler.title,params[0]);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n };\n createTiddlyButton(place,getSortLabel(tiddler.title,params[0]),"Click to change sort options",onclick,params[0]=="hide"?"hidebutton":"button");\n}\n//}}}\n/***\n\n!tagglyListWithSort\nput it all together..\n***/\n//{{{\nconfig.macros.tagglyListWithSort.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n if (tiddler && store.getTaggedTiddlers(tiddler.title).length > 0)\n // todo make this readable\n wikify(\n "<<tagglyListControl hide>>"+\n (getHideState(tiddler.title) != "hide" ? \n '<html><span class="tagglyLabel">'+config.macros.tagglyList.label.format([tiddler.title])+' </span></html>'+\n "<<tagglyListControl title>><<tagglyListControl modified>><<tagglyListControl created>><<tagglyListControl group>>"+(getGroupState(tiddler.title)=="group"?"":"<<tagglyListControl cols>>")+"\sn" + \n "<<tagglyList" + (getGroupState(tiddler.title)=="group"?"ByTag ":" ") + getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+" "+getNumCols(tiddler.title)+">>" // hacky\n // + \sn----\sn" +\n //"<<tagglyList "+getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+">>"\n : ""),\n place,null,tiddler);\n}\n\nconfig.macros.tagglyTagging = { handler: config.macros.tagglyListWithSort.handler };\n\n\n//}}}\n/***\n\n!hideSomeTags\nSo we don't see the sort tags.\n(note, they are still there when you edit. Will that be too annoying?\n***/\n//{{{\n\n// based on tags.handler\nconfig.macros.hideSomeTags.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n var theList = createTiddlyElement(place,"ul");\n if(params[0] && store.tiddlerExists[params[0]])\n tiddler = store.getTiddler(params[0]);\n var lingo = config.views.wikified.tag;\n var prompt = tiddler.tags.length == 0 ? lingo.labelNoTags : lingo.labelTags;\n createTiddlyElement(theList,"li",null,"listTitle",prompt.format([tiddler.title]));\n for(var t=0; t<tiddler.tags.length; t++)\n if (!this.tagsToHide.contains(tiddler.tags[t])) // this is the only difference from tags.handler...\n createTagButton(createTiddlyElement(theList,"li"),tiddler.tags[t],tiddler.title);\n\n}\n\n//}}}\n/***\n\n!Refresh everything when we save a tiddler. So the tagged lists never get stale. Is this too slow???\n***/\n//{{{\n\nfunction refreshAllVisible() {\n story.forEachTiddler(function(title,element) {\n if (element.getAttribute("dirty") != "true") \n story.refreshTiddler(title,false,true);\n });\n}\n\nstory.saveTiddler_orig_mptw = story.saveTiddler;\nstory.saveTiddler = function(title,minorUpdate) {\n var result = this.saveTiddler_orig_mptw(title,minorUpdate);\n refreshAllVisible();\n return result;\n}\n\nstore.removeTiddler_orig_mptw = store.removeTiddler;\nstore.removeTiddler = function(title) {\n this.removeTiddler_orig_mptw(title);\n refreshAllVisible();\n}\n\nconfig.shadowTiddlers.TagglyTaggingStyles = "/***\snTo use, add {{{[[TagglyTaggingStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also ViewTemplate, EditTemplate and TagglyTagging.\sn***/\sn/*{{{*/\sn.tagglyTagged li.listTitle { display:none;}\sn.tagglyTagged li { display: inline; font-size:90%; }\sn.tagglyTagged ul { margin:0px; padding:0px; }\sn.tagglyTagging { padding-top:0.5em; }\sn.tagglyTagging li.listTitle { display:none;}\sn.tagglyTagging ul { margin-top:0px; padding-top:0.5em; padding-left:2em; margin-bottom:0px; padding-bottom:0px; }\sn\sn/* .tagglyTagging .tghide { display:inline; } */\sn\sn.tagglyTagging { vertical-align: top; margin:0px; padding:0px; }\sn.tagglyTagging table { margin:0px; padding:0px; }\sn\sn\sn.tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }\sn.tagglyTagging .button, .tagglyTagging .hidebutton { color:#aaa; font-size:90%; border:0px; padding-left:0.3em;padding-right:0.3em;}\sn.tagglyTagging .button:hover, .hidebutton:hover { background:#eee; color:#888; }\sn.selected .tagglyTagging .button { display:inline; }\sn\sn.tagglyTagging .hidebutton { color:white; } /* has to be there so it takes up space. tweak if you're not using a white tiddler bg */\sn.selected .tagglyTagging .hidebutton { color:#aaa }\sn\sn.tagglyLabel { color:#aaa; font-size:90%; }\sn\sn.tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }\sn.tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}\sn.tagglyTagging ul ul li {margin-left:0.5em; }\sn\sn.editLabel { font-size:90%; padding-top:0.5em; }\sn/*}}}*/\sn";\n\nrefreshStyles("TagglyTaggingStyles");\n\n\n//}}}\n\n// // <html>&#x25b8;&#x25be;&minus;&plusmn;</html>
TagglyTagging is currently broken up into several components. To install TagglyTagging you should\n#Install the plugins TagglyListPlugin, QuickOpenTagPlugin, RenameTagsPlugin and NewHereCommand\n# Copy the contents of TagglyTaggingViewTemplate and TagglyTaggingEditTemplate to your ViewTemplate and EditTemplate tiddlers respectively\nOr you could just [[Download]] a fresh empty file with TagglyTagging pre-installed and start with that.\n!What is TagglyTagging?\nFor more info about TagglyTagging try the TagglyTaggingFAQ and the TagglyTaggingTutorial.
(See also SliderSiteMap)\n|<<siteMap WhatsNew>><<siteMap FunStuff>>|<<siteMap TagglyTagging>><<siteMap More... 2>>|<<siteMap Plugins 2>>|\n|noBorder threeCol|k\n
Demo of slider formatting in SiteMapMacro\n|!sliders|!openSliders|!popups|\n|{{{<<siteMap TagglyTagging . sliders>>}}}|{{{<<siteMap TagglyTagging . openSliders>>}}}|{{{<<siteMap TagglyTagging . popups>>}}}|\n|<<siteMap TagglyTagging . sliders>>|<<siteMap TagglyTagging . openSliders>>|<<siteMap TagglyTagging . popups>>|
config.messages.customConfigError = "설정에 오류가 있습니다 - %0";\nconfig.messages.savedSnapshotError = "이 TiddlyWiki가 잘못 저장된 것으로 보입니다. 자세한 내용은 http://www.tiddlywiki.com/#DownloadSoftware 를 참조하세요.";\nconfig.messages.subtitleUnknown = "(알 수 없음)";\nconfig.messages.undefinedTiddlerToolTip = "글 '%0' 은 아직 존재하지 않습니다.";\nconfig.messages.externalLinkTooltip = "%0 로의 링크";\nconfig.messages.noTags = "분류된 글이 없습니다.";\nconfig.messages.notFileUrlError = "변경사항을 반영하기 전에 이 TiddlyWiki를 저장해야 합니다.";\nconfig.messages.cantSaveError = "이 브라우저로는 저장할 수 없습니다. 가능하면 [[Firefox|http://mozilla.or.kr]]를 사용해 주세요.";\nconfig.messages.invalidFileError = "원본파일 '%0' 이 올바른 TiddlyWiki 파일이 아닌 것 같습니다.";\nconfig.messages.backupSaved = "백업 파일이 저장되었습니다.";\nconfig.messages.backupFailed = "백업을 실패하였습니다.";\nconfig.messages.rssSaved = "RSS 피드가 저장되었습니다.";\nconfig.messages.rssFailed = "RSS 피드 저장을 실패하였습니다.";\nconfig.messages.emptySaved = "빈 템플릿을 저장하였습니다.";\nconfig.messages.emptyFailed = "빈 템플릿 저장을 실패하였습니다.";\nconfig.messages.mainSaved = "이 TiddlyWiki가 저장되었습니다.";\nconfig.messages.mainFailed = "이 TiddlyWiki의 저장에 실패했습니다. 변경사항이 저장되지 않았습니다.";\nconfig.messages.macroError = "매크로 '%0' 의 실행 중에 오류가 발생했습니다.";\noverwriteWarning: "'%0' 라는 글이 이미 존재합니다. 확인을 누르면 기존의 글은 삭제됩니다.";\n\nconfig.messages.unsavedChangesWarning = "주의하세요! 저장되지 않은 글이 있습니다.\sn\sn확인을 눌러 저장하거나 \sn취소를 눌러 변경된 내용을 취소할 수 있습니다.",\nconfig.messages.dates.months = ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"];\nconfig.messages.dates.days = ["일요일","월요일", "화요일", "수요일", "목요일","금요일","토요일","일요일"];\n\nconfig.views.wikified.tag.labelNoTags = "분류 없음";\nconfig.views.wikified.tag.labelTags = "분류: ";\nconfig.views.wikified.tag.tooltip = "'%0' 분류된 글 보기";\nconfig.views.wikified.tag.openAllText = "'%0' 분류된 글을 모두 열기";\nconfig.views.wikified.tag.openAllTooltip = "모든 글을 엽니다.";\nconfig.views.wikified.tag.popupNone = "'%0'로 분류된 글이 없습니다.";\n\nconfig.views.editor.tagPrompt = "분류들을 빈 칸으로 구분하거나, 필요하다면 다음과 같이 [[대괄호]]로 묶어 입력해 주세요. 또는 다음을 눌러 기존의 분류를 입력하셔도 됩니다.";\nconfig.views.editor.tagChooser.text = "분류";\nconfig.views.editor.tagChooser.tooltip = "이 글에 기존에 있는 분류를 더합니다.";\nconfig.views.editor.tagChooser.popupNone = "분류가 존재하지 않습니다.";\nconfig.views.editor.tagChooser.tagTooltip = "분류 '%0' 을 추가합니다.";\nconfig.views.editor.defaultText = " '%0' 에 관한 글을 작성해 주세요.";\n\nconfig.macros.search.label = "검색";\nconfig.macros.search.prompt = "이 TiddlyWiki를 검색합니다.";\nconfig.macros.search.successMsg = "%1 를 포함한 %0 개의 글이 검색되었습니다.";\nconfig.macros.search.failureMsg = "%0을 포함한 글을 찾을 수 없습니다.";\nconfig.macros.allTags.tooltip = "'%0' 로 분류된 글 보기";\nconfig.macros.allTags.noTags = "분류된 글이 없습니다.";\nconfig.macros.list.all.prompt = "오름차순으로 정렬된 모든 글";\nconfig.macros.list.missing.prompt = "글을 가리키는 링크는 있지만 존재하지 않는 글";\nconfig.macros.list.orphans.prompt = "어떤 글에서도 참조하지 않는 글";\nconfig.macros.timeline.dateFormat = "YYYY년 MMM DD일";\n\nconfig.macros.closeAll.label = "모든 글 닫기";\nconfig.macros.closeAll.prompt = "현재 열려있는 모든 글을 닫습니다. (현재 편집중인 글은 제외)";\nconfig.macros.permaview.label = "절대경로";\nconfig.macros.permaview.prompt = "현재 보고 있는 글들을 모두 보기 위한 링크";\nconfig.macros.saveChanges.label = "변경사항 저장";\nconfig.macros.saveChanges.prompt = "갱신된 TiddlyWiki를 만들기 위하여 모든 글을 저장합니다.";\nconfig.macros.newTiddler.label = "새 글 쓰기";\nconfig.macros.newTiddler.prompt = "새 글을 만듭니다.";\nconfig.macros.newJournal.label = "새 일기 쓰기";\nconfig.macros.newJournal.prompt = "현재 날짜와 시간을 이용하여 새 글을 만듭니다.";
/***\n| Name:|QuickOpenTagPlugin|\n| Purpose:|Makes tag links into a Taggly style open tag plus a normal style drop down menu|\n| Creator:|SimonBaird|\n| Source:|http://simonbaird.com/mptw/#QuickOpenTagPlugin|\n| Requires:|TW 2.x|\n| Version|1.1 (7-Feb-06)|\n\n!History\n* Version 1.1 (07/02/2006)\n** Fix Firefox 1.5.0.1 crashes\n** Updated by ~BidiX[at]~BidiX.info\n* Version 1.0 (?/01/2006)\n** First release\n\n***/\n//{{{\n\n//⊻ ⊽ ⋁ ▼ \n\nwindow.createTagButton_orig_mptw = createTagButton;\nwindow.createTagButton = function(place,tag,excludeTiddler) {\n var sp = createTiddlyElement(place,"span",null,"quickopentag");\n createTiddlyLink(sp,tag,true,"button");\n var theTag = createTiddlyButton(sp,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tag]),onClickTag);\n theTag.setAttribute("tag",tag);\n if(excludeTiddler)\n theTag.setAttribute("tiddler",excludeTiddler);\n return(theTag);\n};\n\nconfig.macros.miniTag = {handler:function(place,macroName,params,wikifier,paramString,tiddler) {\n var tagged = store.getTaggedTiddlers(tiddler.title);\n if (tagged.length > 0) {\n var theTag = createTiddlyButton(place,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);\n theTag.setAttribute("tag",tiddler.title);\n theTag.className = "miniTag";\n }\n}};\n\nconfig.macros.miniTag.dropdownchar = (document.all?"▼":"▾"); // the fat one is the only one that works in IE\n\nconfig.macros.allTags.handler = function(place,macroName,params)\n{\n var tags = store.getTags();\n var theDateList = createTiddlyElement(place,"ul",null,null,null);\n if(tags.length === 0)\n createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);\n for (var t=0; t<tags.length; t++)\n {\n var theListItem =createTiddlyElement(theDateList,"li",null,null,null);\n var theLink = createTiddlyLink(theListItem,tags[t][0],true);\n var theCount = " (" + tags[t][1] + ")";\n theLink.appendChild(document.createTextNode(theCount));\n\n var theDropDownBtn = createTiddlyButton(theListItem," "+config.macros.miniTag.dropdownchar,this.tooltip.format([tags[t][0]]),onClickTag);\n theDropDownBtn.setAttribute("tag",tags[t][0]);\n }\n};\n\n\nsetStylesheet(\n ".quickopentag { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }\sn"+\n ".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }\sn"+\n ".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}\sn"+\n "a.miniTag {font-size:150%;}\sn"+\n "",\n"QuickOpenTagStyles");\n\n//}}}\n\n/***\n<html>&#x22bb; &#x22bd; &#x22c1; &#x25bc; &#x25be;</html>\n***/\n
/***\n| Name:|RenameTagsPlugin|\n| Purpose:|Allows you to easily rename tags|\n| Creator:|SimonBaird|\n| Source:|http://simonbaird.com/mptw/#RenameTagsPlugin|\n| Version:|1.0.1 (5-Mar-06)|\n\n!Description\nIf you rename a tiddler/tag that is tagging other tiddlers this plugin will ask you if you want to rename the tag in each tiddler where it is used. This is essential if you use tags and ever want to rename them. To use it, open the tag you want to rename as a tiddler (it's the last option in the tag popup menu), edit it, rename it and click done. You will asked if you want to rename the tag. Click OK to rename the tag in the tiddlers that use it. Click Cancel to not rename the tag.\n\n!Example\nTry renaming [[Plugins]] or [[CSS]] on this site.\n\n!History\n* 1.0.1 (5-Mar-06) - Added feature to allow renaming of tags without side-effect of creating a tiddler\n* 1.0.0 (5-Mar-06) - First working version\n\n!Code\n***/\n//{{{\n\nversion.extensions.RenameTagsPlugin = {\n major: 1, minor: 0, revision: 0,\n date: new Date(2006,3,5),\n source: "http://simonbaird.com/mptw/#RenameTagsPlugin"\n};\n\nconfig.macros.RenameTagsPlugin = {};\nconfig.macros.RenameTagsPlugin.prompt = "Rename the tag '%0' to '%1' in %2 tidder%3?";\n\n// these are very useful, perhaps they should be in the core\nif (!store.addTag) {\n store.addTag = function(title,tag) {\n var t=this.getTiddler(title); if (!t || !t.tags) return;\n t.tags.push(tag);\n };\n};\n\nif (!store.removeTag) {\n store.removeTag = function(title,tag) {\n var t=this.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);\n };\n};\n\nstore.saveTiddler_orig_tagrename = store.saveTiddler;\nstore.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {\n if (title != newTitle && this.getTaggedTiddlers(title).length > 0) {\n // then we are renaming a tag\n var tagged = this.getTaggedTiddlers(title);\n if (confirm(config.macros.RenameTagsPlugin.prompt.format([title,newTitle,tagged.length,tagged.length>1?"s":""]))) {\n for (var i=0;i<tagged.length;i++) {\n store.removeTag(tagged[i].title,title);\n store.addTag(tagged[i].title,newTitle);\n // if tiddler is visible refresh it to show updated tag\n story.refreshTiddler(tagged[i].title,false,true);\n }\n }\n if (!this.tiddlerExists(title) && newBody == "") {\n // dont create unwanted tiddler\n return null;\n }\n }\n return this.saveTiddler_orig_tagrename(title,newTitle,newBody,modifier,modified,tags);\n}\n\n//}}}\n\n
/***\n|Name|NewHereCommand|\n|Source|http://simonbaird.com/mptw/#NewHereCommand|\n|Version|1.0|\n\nCode originally by ArphenLin. Small tweak by SimonBaird\nhttp://aiddlywiki.sourceforge.net/NewHere_demo.html#NewHereCommand\nTo use this you must edit your ViewTemplate and add newHere to the toolbar div, eg\n{{{<div class='toolbar' macro='toolbar ... newHere'></div>}}}\n***/\n\n//{{{\n\nconfig.commands.newHere = {\n text: 'new here',\n tooltip: 'Create a new tiddler tagged as this tiddler',\n handler: function(e,src,title) {\n if (!readOnly) {\n clearMessage();\n var t=document.getElementById('tiddler'+title);\n story.displayTiddler(t,config.macros.newTiddler.title,DEFAULT_EDIT_TEMPLATE);\n story.setTiddlerTag(config.macros.newTiddler.title, title, 0);\n story.focusTiddler(config.macros.newTiddler.title,"title");\n return false;\n }\n }\n};\n\n//}}}
You can do this right here and now. Maybe you should print this out so it's easy to follow while working on screen. I presume you have some familiarity with TiddlyWiki basics. If you are having trouble following this then try this [[excellent tutorial|http://www.blogjones.com/TiddlyWikiTutorial.html]] first.\n\n!Getting started: Create some content\n* First hit "close others" to clear up your screen\n* Click "new tiddler" from the main menu.\n* Name the tiddler "~MyStuff" by typing into the title box.\n* Add some contents to the contents box, for example "This is my stuff"\n* Click the Done button to save the new tiddler. (We will return to this one later).\n* Let's say you just returned from a meeting and want to enter a couple of notes about it\n** Click "new tiddler"\n** Enter tiddler title as "Meeting with Leo - 12 Oct"\n** Add some meeting notes in the content box\n** Don't click Done just yet...\n\n!Tagging your content\n* Before you save the "Meeting with Leo..." tiddler let's add some tags\n** It's a meeting so let's give it a tag called "Meetings". Type Meetings in the tags box.\n** The meeting was with Leo so let's give it a tag called Leo. Type Leo in the tags box.\n** Let's say the meeting was about budget planning for example. Type Budget in the tags box.\n** So your tags box should look like this: {{{Meetings Leo Budget}}}\n*Now save the tiddler by clicking the Done button.\n\n!Using the tags\n*No big deal so far, right? Now we start to get into TagglyTagging territory.\n*Notice the tags appear above the title. They are italicised to indicate they don't exist yet (just like any other tiddler that doesn't exist yet).\n*Click on the Leo tag. You will open an empty tiddler called Leo.\n**Give it some content like "Leo Runcible, ext 1234. Likes cats". Or whatever.\n**Leo's a person so give him a tag of "People" by typing People in the tags box.\n**Save it by clicking Done.\n\n!Lets pick up the pace\n*Go back to your "Meeting with Leo..." tiddler.\n** Click on Meetings. Give Meetings a tag of ~MyStuff and save it.\n** Click on Budget. Give Budget a tag of Projects. Type something about the Budget project in the tiddler contents if you want. Save it.\n** Now above the Budget title click on the Projects tag. Give Projects a tag of ~MyStuff. Save that.\n* Now find your ~MyStuff tiddler. Look at the tagged tiddler list which appears at the bottom of the tiddler. It should be a list containing Meetings, People and Projects.\n* Close a few tiddlers and try navigating to your meeting tiddler from ~MyStuff using the tagged tiddler lists.\n\nThat's a quick look at the basics of TagglyTagging. Hopefully by now you have some idea about what TagglyTagging can do. Play around with it a little more if you like. Then continue to...\n\n!The New Here Button\n* Click on People.\n* Do you know any other people?\n* If so click, "new here" in the People tiddler\n** Notice that the tags box already contains the tag People. (This is what the new here button does. It creates a new tiddler with the tag already filled in).\n** Type someone's name and some notes on that person. Click Done to Save.\n* Add a couple more people for fun\n** Notice what happens to the "tagged tiddler" list at the bottom of the People tiddler.\n\n!Changing the structure of your data\nLet's look at how easy it is to change your structure. Suppose you decide that you want to have different types of Projects: Ongoing, Current and Future\n* Go to your Budget tiddler. Edit it and change the Projects tag to Ongoing Projects. Save.\n* Click the Ongoing Projects tag. Give that a tag of "Projects".\n* That's it. You're done. Well actually you haven't added the Ongoing and Future Projects but you can see that's not hard. Maybe click "new here" at the Projects tiddler. Or maybe just tag a project as Future Projects and do it from the bottom up.\n\n!Another example\n* Suppose your original meeting had an action item for you. Type it into the meeting notes as a wiki word or {{{[[}}}Do Something{{{]]}}}.\n* Now click on it and give it a tag of Todo. Type any extra information about how you're going to do it when it's due by etc into the contents. Put a reminder in there if you have ReminderPlugin installed.\n* Now make sure you can get to your Todos by tagging Todo tiddler as MyStuff.\n* For convenience let's put a link to MyStuff in your MainMenu. This will put all your new organised information at your fingertips at all times.\n\n!Sort Controls and Columns\n* If you mouse over a tagged tiddler list you should some buttons. Try them out. Note that if you save it remembers your choice.\n\n!Wrapup\nHopefully you can see that TagglyTagging gives you a powerful way to organise and structure your information. Don't forget that you can still use conventional wiki links to navigate around your tiddlers. TagglyTagging just gives you another way to do cool stuff with your TiddlyWiki.\n\n\n~~This tutorial is a draft. Feedback is welcome. Please [[contact|Contact]] me with comments and suggestions.~~\n
/***\nFor use in ViewTemplate \n***/\n//{{{\n\nconfig.macros.hideWhen = {};\nconfig.macros.hideWhen.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n if (eval(params[0]))\n place.style["display"] = 'none';\n}\n\nconfig.macros.hideUnless = {};\nconfig.macros.hideUnless.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n if (!eval(params[0]))\n place.style["display"] = 'none';\n}\n\n\n//}}}
/***\n|''Name:''|CloseUnsavedOnCancel|\n|''Sourse''|http://jackparke.googlepages.com/jtw.html#CloseUnsavedOnCancel|\n|''Version:''|2.0.8 (16-Apr-2006)|\n|''Author:''|SimonBaird|\n|''Adapted By:''|[[Jack]]|\n|''Type:''|Plugin|\n!Description\nWhen you click new tiddler then click cancel I think the new tiddler should close automatically. This plugin implements that behavious.\n\n!Revision History\n* 1.0.1 (11-Oct-2005) by SimonBaird\n* 2.0.8 Made 2.0.x compatible by Jack on 16-Apr-2006\n\n!Code\n***/\n//{{{\n\nconfig.commands.cancelTiddler.handler = function(event,src,title) {\n if(story.hasChanges(title) && !readOnly)\n if(!confirm(this.warning.format([title])))\n return false;\n story.setDirty(title,false);\n if (!store.tiddlerExists(title) || store.fetchTiddler(title).modifier==config.views.wikified.defaultModifier) {\n story.closeTiddler(title,false);\n store.removeTiddler(title)\n } else {\n story.displayTiddler(null,title);\n }\n return false;\n}\n\n//}}}
/***\nExamples:\n\n|Code|Description|Example|h\n|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|\n|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|\n|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|\n|{{{<<toggleTag TagName TiddlerName nolabel>>Click me}}}|Same but hide the label|<<toggleTag TagName TiddlerName nolabel>>Click me|\n(Note if TiddlerName doesn't exist it will be silently created)\n\n!Known issues\n* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing. Should it stick the tag in the edit box?\n\n!Code\n***/\n//{{{\n\n\n// This function contributed by Eric Shulman\nfunction toggleTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)==null) t.tags.push(tag)\n else t.tags.splice(t.tags.find(tag),1)\n}\n\n// This function contributed by Eric Shulman\nfunction isTagged(title,tag) {\n var t=store.getTiddler(title); if (!t) return false;\n return (t.tags.find(tag)!=null);\n}\n\nconfig.macros.toggleTag = {};\nconfig.views.wikified.toggleTag = {fulllabel: "[[%0]] [[%1]]", shortlabel: "[[%0]]", nolabel: "" };\n\nconfig.macros.toggleTag.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n if(tiddler instanceof Tiddler) {\n var tag = (params[0] && params[0] != '.') ? params[0] : "checked";\n var title = (params[1] && params[1] != '.') ? params[1] : tiddler.title;\n var hidelabel = (params[2] && params[2] != '.') ? true : false;\n var alsoRefreshStyles = (params[3] && params[3] != '.') ? true : false;\n\n var onclick = function(e) {\n if (!e) var e = window.event;\n if (!store.getTiddler(title))\n store.saveTiddler(title,title,"",config.options.txtUserName,new Date(),null);\n toggleTag(title,tag);\n\n store.setDirty(true); // so TW knows it has to save now\n\n story.forEachTiddler(function(title,element) {\n if (element.getAttribute("dirty") != "true") \n story.refreshTiddler(title,false,true);\n });\n\n if (alsoRefreshStyles)\n store.notifyAll();\n\n return false;\n };\n\n var lingo = config.views.wikified.toggleTag;\n\n // this part also contributed by Eric Shulman\n var c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick=onclick;\n place.appendChild(c);\n c.checked=isTagged(title,tag);\n\n if (!hidelabel) {\n var label = (title!=tiddler.title)?lingo.fulllabel:lingo.shortlabel;\n wikify(label.format([tag,title]),place);\n }\n }\n}\n\n//}}}\n
/***\nIntended for use in ViewTemplate\n!Examples\n|{{{<<runMacroIfTagged [[Groceries]] toggleTag Buy>>}}}|<<runMacroIfTagged [[Groceries]] toggleTag Buy>>|\n|{{{<<runMacroIfTagged Plugins toggleTag systemConfig>>}}}|<<runMacroIfTagged Plugins toggleTag systemConfig>>|\n***/\n//{{{\n\n// This function contributed by Eric Shulman\nfunction toggleTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)==null) t.tags.push(tag)\n else t.tags.splice(t.tags.find(tag),1)\n}\n\n// This function contributed by Eric Shulman\nfunction isTagged(title,tag) {\n var t=store.getTiddler(title); if (!t) return false;\n return (t.tags.find(tag)!=null);\n}\n\nconfig.macros.runMacroIfTagged = {};\nconfig.macros.runMacroIfTagged.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n if (isTagged(tiddler.title,params[0]))\n config.macros[params[1]].handler(place,params[1],params.slice(2),wikifier,paramString/*fixme*/,tiddler);\n}\n\n//}}}\n/***\n!Todo\n* paramString needs to have the first word removed from the front of it at fixme above\n\n\n***/\n\n
<!---\nSee TagglyTaggingViewTemplate\n--->\n<!--{{{-->\n<div class="toolbar">\n <!-- testing this one -->\n <!--<span style="padding-right:0.75em;" class='fakeButton' macro="viewHtml"></span>-->\n <!--<span style="padding-right:0.75em;" class='fakeButton' macro="viewAsJs"></span>-->\n\n <!-- experimental stuff. puts checkboxes in toolbar -->\n <span style="padding-right:0.75em;" class='fakeButton' macro="runMacroIfTagged Plugins toggleTag systemConfig"></span>\n\n <span macro='toolbar -closeTiddler closeOthers +editTiddler references jump refresh newHere'></span>\n</div>\n<div class="tagglyTagged" macro="hideSomeTags"></div>\n<div><span class='title' macro='view title'></span><span class="miniTag" \n\nmacro="miniTag"></span></div>\n<div class='subtitle'>Created <span macro='view created date [[DD-MM-YY]]'></span>, updated <span macro='view modified date [[DD-MM-\n\nYY]]'></span></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class="tagglyTagging" macro="tagglyTagging"></div>\n<!--}}}-->
<!--{{{-->\n<div class="toolbar" macro="toolbar +saveTiddler closeOthers cancelTiddler deleteTiddler"></div>\n<div class="title" macro="view title"></div>\n<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>\n<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>\n<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>\n<div class="editor" macro="edit text"></div>\n<br/>\n<!--}}}-->
/***\n| Title:|CommaSeparatedTags|\n| Source:|http://simonbaird.com/mptw/#CommaSeparatedTags|\n\n!Notes\n* Probably works badly if you have tags containing commas.\n* If you have a non-shadow EditTemplate you need replace {{{macro="edit tags"}}} with {{{macro="editCommaTags"}}} in EditTemplate.\n\n***/\n//{{{\n\n// copied mostly from config.macros.edit.handler\nconfig.macros.editCommaTags = {handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n if (tiddler instanceof Tiddler) {\n story.setDirty(tiddler.title,true);\n var e = createTiddlyElement(place,"input");\n if(tiddler.isReadOnly())\n e.setAttribute("readOnly","readOnly");\n e.setAttribute("edit","tags");\n e.setAttribute("type","text");\n e.value = tiddler.getTags().readBracketedList().join(", "); // <---- this is the tweak\n e.setAttribute("size","40");\n e.setAttribute("autocomplete","off");\n }\n}};\n\n// install in EditTemplate (won't work if you have a real EditTemplate. Then you must modify EditTemplate yourself)\nconfig.shadowTiddlers.EditTemplate = config.shadowTiddlers.EditTemplate.replace(/macro='edit tags'/,"macro='editCommaTags'"); \n\nString.prototype.readCommaList = function(unique) {\n var n = [];\n var split = this.split(",");\n for (var i=0;i<split.length;i++)\n n.pushUnique(split[i].trim(),unique);\n return n;\n};\n\n\nTiddlyWiki.prototype.saveTiddler_orig_commasep = TiddlyWiki.prototype.saveTiddler;\nTiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {\n if (typeof tags == "string") {\n tags = tags.readCommaList(); // I don't think it every gets here..\n }\n else {\n tags = tags.join(" ").readCommaList(); // seems strange because the commas are already in the array\n }\n\n return this.saveTiddler_orig_commasep(title,newTitle,newBody,modifier,modified,tags);\n};\n\n//}}}\n
<!---\n| Name:|~TagglyTaggingEditTemplate |\n| Version:|1.1 (12-Jan-2006)|\n| Source:|http://simonbaird.com/mptw/#TagglyTaggingEditTemplate|\n| Purpose:|See TagglyTagging for more info|\n| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|\n--->\n<!--{{{-->\n<div class="toolbar" macro="toolbar +saveTiddler closeOthers -cancelTiddler deleteTiddler"></div>\n<div class="title" macro="view title"></div>\n<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>\n<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>\n<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>\n<div class="editor" macro="edit text"></div>\n<br/>\n<!--}}}-->
<!---\n| Name:|~TagglyTaggingEditTemplate |\n| Version:|1.1 (12-Jan-2006)|\n| Source:|http://simonbaird.com/mptw/#TagglyTaggingEditTemplate|\n| Purpose:|See TagglyTagging for more info|\n| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|\n--->\n<!--{{{-->\n<div class="toolbar" macro="toolbar +saveTiddler closeOthers -cancelTiddler deleteTiddler"></div>\n<div class="title" macro="view title"></div>\n<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>\n<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>\n<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>\n<div class="editor" macro="edit text"></div>\n<br/>\n<!--}}}-->
You can have your own personal, self-contained wiki exactly* like this site in just a few seconds. Here's how to do it.\n# Right click on [[empty_mptw.html|./empty_mptw.html]]\n# Click 'Save link as...' and save the file somewhere locally. Name it whatever you want.\n# When the download is finished, double click the file to open it in your browser\nThat's it! You're now ready configure your page's title, menus etc, and add your own content by following the instructions in your new TiddlyWiki file.\n\n~~* Actually the "empty" file contains the TagglyTagging stuff plus Eric Shulman's ImportTiddlersPlugin. I've removed the more experimental plugins used on this site. See [[here|./empty_mptw.html#excludeSearch]] for a full list of what comes with the empty file.~~
The original, revolutionary, super cool, 100% javascript, microcontent, self-contained wiki in a web page, created and maintained by JeremyRuston. For more information visit http://www.tiddlywiki.com/. MonkeyPirateTiddlyWiki is running TiddlyWiki <<version>>.\n\nSo what is TiddlyWiki? In short it's a wiki implemented in javascript and stored in a single html file. But you can think of it as an ''electronic notepad from the future''. Try these links for more information:\n*[[TiddlyWiki Explanation (euicho.com)|http://euicho.com/index.php?p=123]]\n*[[TiddlyWiki Tutorial (blogjones.com)|http://www.blogjones.com/TiddlyWikiTutorial.html]]\n*[[Wikipedia Entry|http://en.wikipedia.org/wiki/Tiddlywiki]]\n\nOr try my new TiddlyWikiFAQ.
//{{{\n\nDate.prototype.getHours12 = function()\n{\n var h = this.getHours();\n return (h > 12 ? h-12 : ( h > 0 ? h : 12 ));\n}\n\nDate.prototype.getAmPm = function()\n{\n return (this.getHours() >= 12 ? "pm" : "am");\n}\n\n// Substitute date components into a string\n// should be a hijack but hopefull this or something like it will go into core...\nDate.prototype.formatString = function(template)\n{\n template = template.replace(/YYYY/g,this.getFullYear());\n template = template.replace(/YY/g,String.zeroPad(this.getFullYear()-2000,2));\n template = template.replace(/MMM/g,config.messages.dates.months[this.getMonth()]);\n template = template.replace(/0MM/g,String.zeroPad(this.getMonth()+1,2));\n template = template.replace(/MM/g,this.getMonth()+1);\n template = template.replace(/DDD/g,config.messages.dates.days[this.getDay()]);\n template = template.replace(/0DD/g,String.zeroPad(this.getDate(),2));\n template = template.replace(/DDth/g,this.getDate()+this.daySuffix());\n template = template.replace(/DD/g,this.getDate());\n template = template.replace(/0hh12/g,String.zeroPad(this.getHours12(),2)); // <--------- new\n template = template.replace(/hh12/g,this.getHours12()); // <--------- new\n template = template.replace(/0hh/g,String.zeroPad(this.getHours(),2));\n template = template.replace(/hh/g,this.getHours());\n template = template.replace(/0mm/g,String.zeroPad(this.getMinutes(),2));\n template = template.replace(/mm/g,this.getMinutes());\n template = template.replace(/0ss/g,String.zeroPad(this.getSeconds(),2));\n template = template.replace(/ss/g,this.getSeconds());\n template = template.replace(/[ap]m/g,this.getAmPm().toLowerCase()); // <--------- new\n template = template.replace(/[AP]M/g,this.getAmPm().toUpperCase()); // <--------- new\n return template;\n}\n\n//}}}\n\n
/***\n| Name:|TiddlerExcerptTooltip|\n| Source:|http://simonbaird.com/mptw/#TiddlerExcerptTooltip|\n| Author:|Simon Baird, adapted from original version posted to mailing list by Udo Borkowski|\n| Version:|1.0.0|\n| Description:|Make tooltip of tiddler links the first line or excerpt of the tiddler content|\n***/\n//{{{\n\n// adjust the following to your preference\nconfig.TiddlerExcerptTooltip = {\n trimLength: 60,\n dateFormat:"DD-MM-YY"\n}\n\n// %0 is title\n// %1 is modifier\n// %2 is modified date\n// %3 is first line\n// %4 is first so many characters\n// %5 is short modified date\n// %6 is short created date\n\n// firefox seems to trim the tooltip if it gets too long...\nconfig.messages.tiddlerLinkTooltip = "%1/%5: %4";\n\nconfig.messages.tiddlerEmpty = "(empty)";\n\nTiddler.prototype.getSubtitle = function()\n{\n var theModifier = this.modifier;\n if(!theModifier)\n theModifier = config.messages.subtitleUnknown;\n var theModified = this.modified;\n if(theModified)\n theModified = theModified.toLocaleString();\n else\n theModified = config.messages.subtitleUnknown;\n\n var m = this.text.match(/\ss*(.*)/);\n var firstLine = (m != null && m.length >= 1) ? m[1] : "";\n\n var contentExcerpt = this.text.prettyTrim(config.TiddlerExcerptTooltip.trimLength);\n if (contentExcerpt == "")\n contentExcerpt = config.messages.tiddlerEmpty;\n\n var shortModified = this.modified.formatString(config.TiddlerExcerptTooltip.dateFormat);\n var shortCreated = this.created.formatString(config.TiddlerExcerptTooltip.dateFormat);\n\n\n return config.messages.tiddlerLinkTooltip.format(\n [this.title,theModifier,theModified,firstLine,contentExcerpt,shortModified,shortCreated]); \n}\n\n// this lifted from TagUtils\nString.prototype.prettyTrim = function(len,prefix,postfix) {\n var result = this.trim().replace(/\sr\sn/g,' ').replace(/[\sn|\st]/g,' ');\n if (result.length > len - 3)\n return result.trim().substr(0,len) + '...';\n else\n return result;\n}\n\n//}}}\n
/***\n| Name:|AutoCorrectPlugin|\n| Created by:|SimonBaird|\n| Location:|http://simonbaird.com/mptw/#AutoCorrectPlugin|\n| Version:|1.0.0 (06-Apr-2006)|\n| Requires:|~TW2.x|\n!Description\nAuto-corrects a list of mistyped or misspelled words. The list of words can be in any tiddler tagged with autoCorrectWords\n!History\n* 06-Apr-06, version 1.0.0\n** split off from InstantTimestamp\n** read translations from a tiddler instead of javascript array\n!Notes\n* See also InstantTimestamp, BigListForAutoCorrect, MyAutoCorrectWords\n!Code\n***/\n//{{{\n\nversion.extensions.AutoCorrectPlugin = { major: 1, minor: 0, revision: 0, date: new Date(2006,4,6),\n source: "http://simonbaird.com/mptw/#AutoCorrectPlugin"\n};\n\nconfig.AutoCorrectPlugin = {\n wordListTag: "autoCorrectWords",\n excludeTags: [\n "noAutoCorrect",\n "CSS",\n "css",\n "systemConfig",\n "zsystemConfig",\n "Plugins",\n "Plugin",\n "plugins",\n "plugin",\n "javascript",\n "code"\n ],\n excludeTiddlers: [\n "StyleSheet",\n "StyleSheetLayout",\n "StyleSheetColors",\n "StyleSheetPrint"\n ]\n}; \n\nif (!Array.prototype.contains)\n Array.prototype.contains = function(item) {\n return (this.find(item) != null);\n };\n\nif (!Array.prototype.containsAny)\n Array.prototype.containsAny = function(items) {\n for (var i=0;i<items.length;i++)\n if (this.contains(items[i]))\n return true;\n return false;\n };\n\nString.prototype.upperCaseFirst = function() {\n return this.substr(0,1).toUpperCase() + this.substr(1);\n}\n\nTiddlyWiki.prototype.saveTiddler_mptw_autocorrect = TiddlyWiki.prototype.saveTiddler;\nTiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {\n\n tags = (typeof(tags) == "string") ? tags.readBracketedList() : tags;\n var conf = config.AutoCorrectPlugin;\n\n if ( !tags.containsAny(conf.excludeTags) \n && !tags.contains(conf.wordListTag)\n && !conf.excludeTiddlers.contains(newTitle) ) {\n\n var wordListTiddlers = store.getTaggedTiddlers(conf.wordListTag);\n for (var i=0;i<wordListTiddlers.length;i++) {\n var lines = wordListTiddlers[i].text.split(/$/m);\n for (var j=0;j<lines.length;j++) {\n if (lines[j].indexOf("->") > 0) {\n var replacer = lines[j].trim().split("->");\n newBody = newBody.replace(new RegExp(\n "\s\sb"+replacer[0]+"\s\sb","g"),replacer[1]);\n newBody = newBody.replace(new RegExp(\n "\s\sb"+replacer[0].upperCaseFirst()+"\s\sb","g"),replacer[1].upperCaseFirst());\n }\n }\n }\n }\n\n return this.saveTiddler_mptw_autocorrect(title,newTitle,newBody,modifier,modified,tags);\n}\n\n//}}}\n
/***\n| Name:|InstantTimestamp|\n| Created by:|SimonBaird|\n| Location:|http://simonbaird.com/mptw/#InstantTimestamp|\n| Version:|1.0.4 (06-Apr-2006)|\n| Requires:|~TW2.x|\n!Description\nIf you enter {ts} in your tiddler content (without the spaces) it will be replaced with a timestamp when you save the tiddler. Full list:\n* {ts} or {t} -> timestamp\n* {ds} or {d} -> datestamp\n* !ts or !t at start of line -> !!timestamp\n* !ds or !d at start of line -> !!datestamp\n(I added the extra ! since that's how I like it. Remove it from translations below if required)\n!Notes\n* Change the timeFormat and dateFormat below to suit your preference.\n* See also AutoCorrectPlugin\n!History\n* 06-Apr-06, version 1.0.4\n** removed the AutoCorrect stuff and put it in AutoCorrectPlugin\n* 05-Apr-06, version 1.0.3\n** now have exclusion by tag and tiddler name, probably less important here than in AutoCorrectPlugin\n* 05-Apr-06, version 1.0.2\n** put matches into array to and eval them to allow generic substitutions\n* 05-Apr-06, version 1.0.1\n** added ds for datestamp as suggested by DanielBaird\n** made case insensitive\n** Added translation for !t at start of line\n* 05-Apr-06, version 1.0.0\n** written after suggestion by Achim Wessling \n!Code\n***/\n//{{{\n\nversion.extensions.InstantTimestamp = { major: 1, minor: 0, revision: 4, date: new Date(2006,4,6),\n source: "http://simonbaird.com/mptw/#InstantTimestamp"\n};\n\nconfig.InstantTimestamp = {\n\n timeFormat: 'DD/0MM/YY 0hh:0mm',\n dateFormat: 'DD/0MM/YY',\n\n translations: [\n [/^!ts?$/img, "'!!'+now.formatString(config.InstantTimestamp.timeFormat)"],\n [/^!ds?$/img, "'!!'+now.formatString(config.InstantTimestamp.dateFormat)"],\n [/\s{ts?\s}/ig, "now.formatString(config.InstantTimestamp.timeFormat)"],\n [/\s{ds?\s}/ig, "now.formatString(config.InstantTimestamp.dateFormat)"]\n ],\n excludeTags: [\n "noAutoCorrect",\n "CSS",\n "css",\n "systemConfig",\n "zsystemConfig",\n "Plugins",\n "Plugin",\n "plugins",\n "plugin",\n "javascript",\n "code"\n ],\n excludeTiddlers: [\n "StyleSheet",\n "StyleSheetLayout",\n "StyleSheetColors",\n "StyleSheetPrint"\n ]\n}; \n\nif (!Array.prototype.contains)\n Array.prototype.contains = function(item) {\n return (this.find(item) != null);\n };\n\nif (!Array.prototype.containsAny)\n Array.prototype.containsAny = function(items) {\n for (var i=0;i<items.length;i++)\n if (this.contains(items[i]))\n return true;\n return false;\n };\n\nTiddlyWiki.prototype.saveTiddler_mptw_instanttimestamp = TiddlyWiki.prototype.saveTiddler;\nTiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {\n\n tags = (typeof(tags) == "string") ? tags.readBracketedList() : tags;\n var conf = config.InstantTimestamp;\n\n if ( !tags.containsAny(conf.excludeTags) \n && !conf.excludeTiddlers.contains(newTitle) ) {\n\n var now = new Date();\n var trans = config.InstantTimestamp.translations;\n for (var i=0;i<trans.length;i++) {\n newBody = newBody.replace(trans[i][0], eval(trans[i][1]));\n }\n }\n\n return this.saveTiddler_mptw_instanttimestamp(title,newTitle,newBody,modifier,modified,tags);\n}\n\n//}}}\n
Designed for use with AutoCorrectPlugin. Tag with autoCorrectWords to enable these translations. Sourced from http://www.actwin.com/rwmack/spelling.htm\n{{{\nabsense->absence\nacceptible->acceptable\naccessable->accessible\naccidently->accidentally\naccomadate->accommodate\naccompanyed->accompanied\naccross->across\nacheivement->achievement\nachievment->achievement\nacomplish->accomplish\nacquiantence->acquaintance\nacquited->acquitted\nactualy->actually\nacuracy->accuracy\naddmission->admission\nadolecent->adolescent\nadress->address\nadviced->advised\nagian->again\nagina->again\nagravate->aggravate\nagressive->aggressive\nahev->have\nahppen->happen\nahve->have\nalomst->almost\nalmsot->almost\nalotted->allotted\nalreayd->already\nalusion->allusion\nalwasy->always\nalwyas->always\namature->amateur\namke->make\namking->making\nanbd->and\nanual->annual\nanytying->anything\naquiantance->acquaintance\naquire->acquire\naquitted->acquitted\narangement->arrangement\narguement->argument\nathat->that\naudeince->audience\naveh->have\navhe->have\nawya->away\nbakc->back\nbaout->about\nbarin->brain\nbcak->back\nbecasue->because\nbecuase->because\nbefoer->before\nbegining->beginning\nbeleive->believe\nbera->bear\nboaut->about\nbusness->business\ncasion->casino\nceratin->certain\nchari->chair\nchasr->characters\nclaer->clear\nclaerer->clearer\nclaerly->clearly\nclera->clear\ncomittee->committee\ncomming->coming\ncommitee->committee\nconstatn->constant\ncoudl->could\ncoudln->couldn\ncpoy->copy\ncxan->can\ndael->deal\ndefinit->definite\nderam->dream\ndeside->decide\ndevide->divide\ndiea->idea\ndoens->doesn\ndoign->doing\ndonig->doing\ndreasm->dreams\ndrnik->drink\ndyas->days\nefel->feel\neles->else\nembarass->embarrass\nembarassing->embarrassing\nembarras->embarrass\nembarrasing->embarrassing\nened->need\nenxt->next\nerally->really\nesle->else\nethose->ethos\neveyr->every\nexagerate->exaggerate\nexagerated->exaggerated\nexagerating->exaggerating\nexistance->existence\neyar->year\neyars->years\neyasr->years\nfianlly->finally\nfidn->find\nfiel->file\nfiels->files\nfinancialy->financially\nfirends->friends\nfirts->first\nfomr->from\nforfiet->forfeit\nforhead->forehead\nforiegn->foreign\nfoudn->found\nfourty->forty\nfreind->friend\nfrist->first\nfulfilment->fulfillment\ngaranteed->guaranteed\ngaurd->guard\ngeneraly->generally\ngerat->great\ngodo->good\ngogin->going\ngonig->going\ngoign->going\ngoverment->government\ngoverner->governor\ngrammaticaly->grammatically\ngrammer->grammar\ngreif->grief\ngrwo->grow\ngraet->great\ngrat->great\ngreta->great\nguage->gauge\nguidence->guidance\nhace->have\nhaev->have\nhapened->happened\nharras->harass\nherad->heard\nhera->hear\nherat->heart\nheroe->hero\nheros->heroes\nhieght->height\nhismelf->himself\nhorus->hours\nhousr->hours\nhten->then\nhtere->there\nhtey->they\nhting->thing\nhtikn->think\nhtink->think\nhtis->this\nhumer->humor\nhvae->have\nhvea->have\nhvaing->having\nhwihc->which\nhwile->while\nhwole->whole\nhypocracy->hypocrisy\nhypocrasy->hypocrisy\nhypocrit->hypocrite\nidae->idea\nidaes->ideas\nidesa->ideas\nilogical->illogical\nimagenary->imaginary\nimagin->imagine\nimediately->immediately\nimense->immense\nimmitate->imitate\nincidently->incidentally\nincredable->incredible\nindependant->independent\nindispensible->indispensable\ninevatible->inevitable\ninevitible->inevitable\ninfinit->infinite\ninocence->innocence\nintelectual->intellectual\ninteligence->intelligence\ninteligent->intelligent\ninterpet->interpret\ninterupt->interrupt\nintrest->interest\nirelevent->irrelevant\niresistable->irresistible\niresistible->irresistible\niritable->irritable\niritated->irritated\nirresistable->irresistible\ninot->into\niwll->will\niwth->with\njeapardy->jeopardy\njstu->just\njsut->just\nknowlege->knowledge\nkonw->know\nkonws->knows\nknwo->know\nknwos->knows\nkwno->know\nlabatory->laboratory\nlabratory->laboratory\nleanr->learn\nlegitamate->legitimate\nleran->learn\nlerans->learns\nlevle->level\nliason->liaison\nlibary->library\nlible->liable\nlief->life\nlieing->lying\nliek->like\nliekd->liked\nliesure->leisure\nlightening->lightning\nlitature->literature\nliterture->literature\nlittel->little\nliuke->like\nliev->live\nlivley->lively\nloev->love\nlonelyness->loneliness\nlonley->lonely\nlonly->lonely\nlsat->last\nlveo->love\nlvoe->love\nmaintainance->maintenance\nmaintainence->maintenance\nmaintenence->maintenance\nmakse->makes\nmanuever->maneuver\nmariage->marriage\nmarrage->marriage\nmathamatics->mathematics\nmear->mere\nmedacine->medicine\nmena->mean\nmenas->means\nmessanger->messenger\nminature->miniature\nmischeivous->mischievous\nmisile->missile\nmkae->make\nmkaes->makes\nmkaing->making\nmkea->make\nmoent->moment\nmoeny->money\nmoer->more\nmorgage->mortgage\nmovei->movie\nmroe->more\nmuscels->muscles\nmysefl->myself\nmysterous->mysterious\nnaturaly->naturally\nnaturely->naturally\nneccessary->necessary\nnecesary->necessary\nneice->niece\nnickle->nickel\nnineth->ninth\nninty->ninety\nnkow->know\nnkwo->know\nnoticable->noticeable\nnoticeing->noticing\nnuculear->nuclear\nnuisanse->nuisance\nnusance->nuisance\noaky->okay\nobstacal->obstacle\nocasionally->occasionally\noccassionally->occasionally\noccurance->occurrence\noccured->occurred\noccurence->occurrence\noccurr->occur\noccurrance->occurrence\nocurr->occur\nocurrance->occurrence\nocurred->occurred\nocurrence->occurrence\noging->going\nomision->omission\nomited->omitted\nomre->more\nonot->onto\nonyl->only\noponent->opponent\noportunity->opportunity\noposite->opposite\noppinion->opinion\noptomism->optimism\norgin->origin\norginal->original\norginize->organize\notehr->other\nowrk->work\nowudl->would\npaide->paid\npalce->place\npamplet->pamphlet\nparalel->parallel (500)\nparrallel->parallel (700)\npasttime->pastime\npayed->paid\npeculure->peculiar\npeice->piece\npeom->poem\npeoms->poems\npeopel->people\npeotry->poetry\nperformence->performance\nperhpas->perhaps\nperhasp->perhaps\npermanent->permanent\npermissable->permissible\nperphas->perhaps\npersonel->personal\nplaned->planned\nplesant->pleasant\npoisin->poison\nposess->possess\nposession->possession\npossable->possible\npossably->possibly\npossesion->possession\npracticaly->practically\npracticly->practically\nprairy->prairie\npreceed->precede\nprefered->preferred\nprepair->prepare\nprepartion->preparation\npresense->presence\nprevelant->prevalent\npriviledge->privilege\nprobablly->probably\nprobelm->problem\nproceed->proceed\nproceedure->procedure\nprofesion->profession\nprofesor->professor\nproffesion->profession\nproffesor->professor\nprominant->prominent\nprophacy->prophecy\npropoganda->propaganda\npsycology->psychology\npublically->publicly\npumkin->pumpkin\npwoer->power\nqtuie->quite\nquantaty->quantity\nquizes->quizzes\nqutie->quite\nraelly->really\nreacll->recall\nrealy->really\nrealyl->really\nreciept->receipt\nrecieve->receive\nrecieving->receiving\nrecomend->recommend\nrecrod->record\nrediculous->ridiculous\nrefered->referred\nrefering->referring\nreferrence->reference\nregluar->regular\nrela->real\nrelaly->really\nreleive->relieve\nrememberance->remembrance\nrepatition->repetition\nrepresentive->representative\nrestraunt->restaurant\nrewriet->rewrite\nroomate->roommate\nrussina->russian\nrwite->write\nrythm->rhythm\nrythem->rhythm\nsacrafice->sacrifice\nsaftey->safety\nsalery->salary\nsargant->sergeant\nsasy->says\nschedual->schedule\nscirpt->script\nscripot->script\nsecretery->secretary\nseperate->separate\nseverley->severely\nsherif->sheriff\nshineing->shining\nshoudl->should\nshoudln->shouldn\nsieze->seize\nsimpley->simply\nsincerley->sincerely\nsinse->since\nsmae->same\nsmoe->some\nsnese->sense\nsoem->some\nsohw->show\nsophmore->sophomore\nsoudn->sound\nsoudns->sounds\nsotry->story\nsotyr->story\nsould->soul\nsoulds->souls\nspeach->speech\nsponser->sponsor\nstroy->story\nstoyr->story\nstopry->story\nstoreis->stories\nstorise->stories\nstnad->stand\nstpo->stop\nstrat->start\nstubborness->stubbornness\nsuccessfull->successful\nsuceed->succeed\nsuer->sure\nsumary->summary\nsupercede->supersede\nsuperintendant->superintendent\nsupose->suppose\nsupress->suppress\nsurley->surely\nsuround->surround\nsuseptible->susceptible\nswiming->swimming\nsyas->says\ntaeks->takes\ntahn->than\ntaht->that\ntath->that\ntalek->talk\ntalekd->talked\ntehy->they\ntemperment->temperament\ntemperture->temperature\ntendancy->tendency\nthgat->that\ntghe->the\nther->there\ntheri->their\nthge->the\nthier->their\nthign->thing\nthigns->things\nthigsn->things\nthikn->think\nthikns->thinks\nthikning->thinking\nthiunk->think\nthna->than\nthne->then\nthnig->thing\nthnigs->things\nthsi->this\nthsoe->those\nthta->that\ntiem->time\ntih->with\ntihkn->think\ntihs->this\ntimne->time\ntiome->time\ntje->the\ntjhe->the\ntkae->take\ntkaes->takes\ntkaing->taking\ntlaking->talking\ntobbaco->tobacco\ntodya->today\ntommorrow->tomorrow\ntongiht->tonight\ntowrad->toward\ntrafficed->trafficked\ntrafic->traffic\ntransfered->transferred\ntruely->truly\nturnk->trunk\ntwon->town\ntyhat->that\ntyhe->the\ntyrany->tyranny\nunconcious->unconscious\nunecessary->unnecessary\nunmistakeably->unmistakably\nuntill->until\nuseage->usage\nusefull->useful\nuseing->using\nusualy->usually\nvaccum->vacuum\nvaluble->valuable\nvegtable->vegetable\nvenemous->venomous\nvengance->vengeance\nveyr->very\nvigilence->vigilance\nvillin->villain\nvisable->visible\nvrey->very\nvyer->very\nvyre->very\nwaht->what\nwarrent->warrant\nwatn->want\nwehn->when\nweild->wield\nwendsay->Wednesday\nwensday->Wednesday\nwhcih->which\nwhereever->wherever\nwhic->which\nwhihc->which\nwholy->wholly\nwhta->what\nwief->wife\nwierd->weird\nwiht->with\nwintery->wintry\nwirting->writing\nwithdrawl->withdrawal\nwiull->will\nwnat->want\nwnats->wants\nwnated->wanted\nwohle->whole\nwokr->work\nworshipped->worshiped\nwoudl->would\nwriet->write\nwrok->work\nwroking->working\nwroet->wrote\nwtih->with\nyeild->yield\nytou->you\nyera->year\nyeras->years\nyersa->years\nyeasr->years\n}}}
<<list shadowed>>
/***\n|''Name:''|ForEachTiddlerPlugin|\n|''Version:''|1.0.5 (2006-02-05)|\n|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|\n|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|\n|''Licence:''|[[BSD open source license]]|\n|''Macros:''|[[ForEachTiddlerMacro]] v1.0.5|\n|''TiddlyWiki:''|1.2.38+, 2.0|\n|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|\n!Description\n\nCreate customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.\n\n''Syntax:'' \n|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|\n|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|\n|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|\n|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|\n|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|\n|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]] is used.|\n|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|\n|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|\n\nSee details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].\n\n!Revision history\n* v1.0.5\n** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.\n** Support Firefox 1.5.0.1\n** Internal\n*** Make "JSLint" conform\n*** "Only install once"\n* v1.0.4 (2006-01-06)\n** Support TiddlyWiki 2.0\n* v1.0.3 (2005-12-22)\n** Features: \n*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) \n*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)\n** Enhancements:\n*** Improved error messages on InternetExplorer.\n* v1.0.2 (2005-12-10)\n** Features: \n*** context object also holds reference to store (TiddlyWiki)\n** Fixed Bugs: \n*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)\n* v1.0.1 (2005-12-08)\n** Features: \n*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".\n*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.\n*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).\n*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .\n*** Improved script evaluation (for where/sort clause and write scripts).\n* v1.0.0 (2005-11-20)\n** initial version\n\n!Code\n***/\n//{{{\n\n \n//============================================================================\n//============================================================================\n// ForEachTiddlerPlugin\n//============================================================================\n//============================================================================\n\n// Only install once\nif (!version.extensions.ForEachTiddlerPlugin) {\n\nversion.extensions.ForEachTiddlerPlugin = {major: 1, minor: 0, revision: 5, date: new Date(2006,2,5), source: "http://tiddlywiki.abego-software.de/#ForEachTiddlergPlugin"};\n\n// For backward compatibility with TW 1.2.x\n//\nif (!TiddlyWiki.prototype.forEachTiddler) {\n TiddlyWiki.prototype.forEachTiddler = function(callback) {\n for(var t in this.tiddlers) {\n callback.call(this,t,this.tiddlers[t]);\n }\n };\n}\n\n//============================================================================\n// forEachTiddler Macro\n//============================================================================\n\nversion.extensions.forEachTiddler = {major: 1, minor: 0, revision: 5, date: new Date(2006,2,5), provider: "http://tiddlywiki.abego-software.de"};\n\n// ---------------------------------------------------------------------------\n// Configurations and constants \n// ---------------------------------------------------------------------------\n\nconfig.macros.forEachTiddler = {\n // Standard Properties\n label: "forEachTiddler",\n prompt: "Perform actions on a (sorted) selection of tiddlers",\n\n // actions\n actions: {\n addToList: {},\n write: {}\n }\n};\n\n// ---------------------------------------------------------------------------\n// The forEachTiddler Macro Handler \n// ---------------------------------------------------------------------------\n\nconfig.macros.forEachTiddler.getContainingTiddler = function(e) {\n while(e && !hasClass(e,"tiddler"))\n e = e.parentNode;\n var title = e ? e.getAttribute("tiddler") : null; \n return title ? store.getTiddler(title) : null;\n};\n\nconfig.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n // config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);\n\n if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);\n // --- Parsing ------------------------------------------\n\n var i = 0; // index running over the params\n // Parse the "in" clause\n var tiddlyWikiPath = undefined;\n if ((i < params.length) && params[i] == "in") {\n i++;\n if (i >= params.length) {\n this.handleError(place, "TiddlyWiki path expected behind 'in'.");\n return;\n }\n tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");\n i++;\n }\n\n // Parse the where clause\n var whereClause ="true";\n if ((i < params.length) && params[i] == "where") {\n i++;\n whereClause = this.paramEncode((i < params.length) ? params[i] : "");\n i++;\n }\n\n // Parse the sort stuff\n var sortClause = null;\n var sortAscending = true; \n if ((i < params.length) && params[i] == "sortBy") {\n i++;\n if (i >= params.length) {\n this.handleError(place, "sortClause missing behind 'sortBy'.");\n return;\n }\n sortClause = this.paramEncode(params[i]);\n i++;\n\n if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {\n sortAscending = params[i] == "ascending";\n i++;\n }\n }\n\n // Parse the script\n var scriptText = null;\n if ((i < params.length) && params[i] == "script") {\n i++;\n scriptText = this.paramEncode((i < params.length) ? params[i] : "");\n i++;\n }\n\n // Parse the action. \n // When we are already at the end use the default action\n var actionName = "addToList";\n if (i < params.length) {\n if (!config.macros.forEachTiddler.actions[params[i]]) {\n this.handleError(place, "Unknown action '"+params[i]+"'.");\n return;\n } else {\n actionName = params[i]; \n i++;\n }\n } \n \n // Get the action parameter\n // (the parsing is done inside the individual action implementation.)\n var actionParameter = params.slice(i);\n\n\n // --- Processing ------------------------------------------\n try {\n this.performMacro({\n place: place, \n inTiddler: tiddler,\n whereClause: whereClause, \n sortClause: sortClause, \n sortAscending: sortAscending, \n actionName: actionName, \n actionParameter: actionParameter, \n scriptText: scriptText, \n tiddlyWikiPath: tiddlyWikiPath});\n\n } catch (e) {\n this.handleError(place, e);\n }\n};\n\n// Returns an object with properties "tiddlers" and "context".\n// tiddlers holds the (sorted) tiddlers selected by the parameter,\n// context the context of the execution of the macro.\n//\n// The action is not yet performed.\n//\n// @parameter see performMacro\n//\nconfig.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {\n\n var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);\n\n var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;\n context["tiddlyWiki"] = tiddlyWiki;\n \n // Get the tiddlers, as defined by the whereClause\n var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);\n context["tiddlers"] = tiddlers;\n\n // Sort the tiddlers, when sorting is required.\n if (parameter.sortClause) {\n this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);\n }\n\n return {tiddlers: tiddlers, context: context};\n};\n\n// Returns the (sorted) tiddlers selected by the parameter.\n//\n// The action is not yet performed.\n//\n// @parameter see performMacro\n//\nconfig.macros.forEachTiddler.getTiddlers = function(parameter) {\n return this.getTiddlersAndContext(parameter).tiddlers;\n};\n\n// Performs the macros with the given parameter.\n//\n// @param parameter holds the parameter of the macro as separate properties.\n// The following properties are supported:\n//\n// place\n// whereClause\n// sortClause\n// sortAscending\n// actionName\n// actionParameter\n// scriptText\n// tiddlyWikiPath\n//\n// All properties are optional. \n// For most actions the place property must be defined.\n//\nconfig.macros.forEachTiddler.performMacro = function(parameter) {\n var tiddlersAndContext = this.getTiddlersAndContext(parameter);\n\n // Perform the action\n var actionName = parameter.actionName ? parameter.actionName : "addToList";\n var action = config.macros.forEachTiddler.actions[actionName];\n if (!action) {\n this.handleError(parameter.place, "Unknown action '"+actionName+"'.");\n return;\n }\n\n var actionHandler = action.handler;\n actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);\n};\n\n// ---------------------------------------------------------------------------\n// The actions \n// ---------------------------------------------------------------------------\n\n// Internal.\n//\n// --- The addToList Action -----------------------------------------------\n//\nconfig.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {\n // Parse the parameter\n var p = 0;\n\n // Check for extra parameters\n if (parameter.length > p) {\n config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);\n return;\n }\n\n // Perform the action.\n var list = document.createElement("ul");\n place.appendChild(list);\n for (var i = 0; i < tiddlers.length; i++) {\n var tiddler = tiddlers[i];\n var listItem = document.createElement("li");\n list.appendChild(listItem);\n createTiddlyLink(listItem, tiddler.title, true);\n }\n};\n\n// Internal.\n//\n// --- The write Action ---------------------------------------------------\n//\nconfig.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {\n // Parse the parameter\n var p = 0;\n if (p >= parameter.length) {\n this.handleError(place, "Missing expression behind 'write'.");\n return;\n }\n\n var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);\n p++;\n\n // Parse the "toFile" option\n var filename = null;\n var lineSeparator = undefined;\n if ((p < parameter.length) && parameter[p] == "toFile") {\n p++;\n if (p >= parameter.length) {\n this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");\n return;\n }\n \n filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));\n p++;\n if ((p < parameter.length) && parameter[p] == "withLineSeparator") {\n p++;\n if (p >= parameter.length) {\n this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");\n return;\n }\n lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);\n p++;\n }\n }\n \n // Check for extra parameters\n if (parameter.length > p) {\n config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);\n return;\n }\n\n // Perform the action.\n var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);\n var count = tiddlers.length;\n var text = "";\n for (var i = 0; i < count; i++) {\n var tiddler = tiddlers[i];\n text += func(tiddler, context, count, i);\n }\n \n if (filename) {\n if (lineSeparator !== undefined) {\n lineSeparator = lineSeparator.replace(/\s\sn/mg, "\sn").replace(/\s\sr/mg, "\sr");\n text = text.replace(/\sn/mg,lineSeparator);\n }\n saveFile(filename, convertUnicodeToUTF8(text));\n } else {\n var wrapper = createTiddlyElement(place, "span");\n wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);\n }\n};\n\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n// Internal.\n//\nconfig.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {\n return {\n place : placeParam, \n whereClause : whereClauseParam, \n sortClause : sortClauseParam, \n sortAscending : sortAscendingParam, \n script : scriptText,\n actionName : actionNameParam, \n actionParameter : actionParameterParam,\n tiddlyWikiPath : tiddlyWikiPathParam,\n inTiddler : inTiddlerParam\n };\n};\n\n// Internal.\n//\n// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of \n// the given path.\n//\nconfig.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {\n if (!idPrefix) {\n idPrefix = "store";\n }\n var lenPrefix = idPrefix.length;\n \n // Read the content of the given file\n var content = loadFile(this.getLocalPath(path));\n if(content === null) {\n throw "TiddlyWiki '"+path+"' not found.";\n }\n \n // Locate the storeArea div's\n var posOpeningDiv = content.indexOf(startSaveArea);\n var posClosingDiv = content.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1)) {\n throw "File '"+path+"' is not a TiddlyWiki.";\n }\n var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);\n \n // Create a "div" element that contains the storage text\n var myStorageDiv = document.createElement("div");\n myStorageDiv.innerHTML = storageText;\n myStorageDiv.normalize();\n \n // Create all tiddlers in a new TiddlyWiki\n // (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)\n var tiddlyWiki = new TiddlyWiki();\n var store = myStorageDiv.childNodes;\n for(var t = 0; t < store.length; t++) {\n var e = store[t];\n var title = null;\n if(e.getAttribute)\n title = e.getAttribute("tiddler");\n if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)\n title = e.id.substr(lenPrefix);\n if(title && title !== "") {\n var tiddler = tiddlyWiki.createTiddler(title);\n tiddler.loadFromDiv(e,title);\n }\n }\n tiddlyWiki.dirty = false;\n\n return tiddlyWiki;\n};\n\n\n \n// Internal.\n//\n// Returns a function that has a function body returning the given javaScriptExpression.\n// The function has the parameters:\n// \n// (tiddler, context, count, index)\n//\nconfig.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {\n var script = context["script"];\n var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";\n var fullText = (script ? script+";" : "")+functionText+";theFunction;";\n return eval(fullText);\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {\n var result = [];\n var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);\n tiddlyWiki.forEachTiddler(function(title,tiddler) {\n if (func(tiddler, context, undefined, undefined)) {\n result.push(tiddler);\n }\n });\n return result;\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {\n var message = "Extra parameter behind '"+actionName+"':";\n for (var i = firstUnusedIndex; i < parameter.length; i++) {\n message += " "+parameter[i];\n }\n this.handleError(place, message);\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {\n var result = \n (tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) \n ? 0\n : (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)\n ? -1 \n : +1; \n return result;\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {\n var result = \n (tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) \n ? 0\n : (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)\n ? +1 \n : -1; \n return result;\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {\n // To avoid evaluating the sortClause whenever two items are compared \n // we pre-calculate the sortValue for every item in the array and store it in a \n // temporary property ("forEachTiddlerSortValue") of the tiddlers.\n var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);\n var count = tiddlers.length;\n var i;\n for (i = 0; i < count; i++) {\n var tiddler = tiddlers[i];\n tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);\n }\n\n // Do the sorting\n tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);\n\n // Delete the temporary property that holds the sortValue. \n for (i = 0; i < tiddlers.length; i++) {\n delete tiddlers[i].forEachTiddlerSortValue;\n }\n};\n\n\n// Internal.\n//\nconfig.macros.forEachTiddler.trace = function(message) {\n displayMessage(message);\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {\n var message ="<<"+macroName;\n for (var i = 0; i < params.length; i++) {\n message += " "+params[i];\n }\n message += ">>";\n displayMessage(message);\n};\n\n\n// Internal.\n//\n// Creates an element that holds an error message\n// \nconfig.macros.forEachTiddler.createErrorElement = function(place, exception) {\n var message = (exception.description) ? exception.description : exception.toString();\n return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);\n};\n\n// Internal.\n//\n// @param place [may be null]\n//\nconfig.macros.forEachTiddler.handleError = function(place, exception) {\n if (place) {\n this.createErrorElement(place, exception);\n } else {\n throw exception;\n }\n};\n\n// Internal.\n//\n// Encodes the given string.\n//\n// Replaces \n// "$))" to ">>"\n// "$)" to ">"\n//\nconfig.macros.forEachTiddler.paramEncode = function(s) {\n var reGTGT = new RegExp("\s\s$\s\s)\s\s)","mg");\n var reGT = new RegExp("\s\s$\s\s)","mg");\n return s.replace(reGTGT, ">>").replace(reGT, ">");\n};\n\n// Internal.\n//\n// Returns the given original path (that is a file path, starting with "file:")\n// as a path to a local file, in the systems native file format.\n//\n// Location information in the originalPath (i.e. the "#" and stuff following)\n// is stripped.\n// \nconfig.macros.forEachTiddler.getLocalPath = function(originalPath) {\n // Remove any location part of the URL\n var hashPos = originalPath.indexOf("#");\n if(hashPos != -1)\n originalPath = originalPath.substr(0,hashPos);\n // Convert to a native file format assuming\n // "file:///x:/path/path/path..." - pc local file --> "x:\spath\spath\spath..."\n // "file://///server/share/path/path/path..." - FireFox pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n // "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."\n // "file://server/share/path/path/path..." - pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n var localPath;\n if(originalPath.charAt(9) == ":") // pc local file\n localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file:///") === 0) // mac/unix local file\n localPath = unescape(originalPath.substr(7));\n else if(originalPath.indexOf("file:/") === 0) // mac/unix local file\n localPath = unescape(originalPath.substr(5));\n else // pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\s\s"); \n return localPath;\n};\n\n// ---------------------------------------------------------------------------\n// Stylesheet Extensions (may be overridden by local StyleSheet)\n// ---------------------------------------------------------------------------\n//\nsetStylesheet(\n ".forEachTiddlerError{color: #ffffff;background-color: #880000;}",\n "forEachTiddler");\n\n//============================================================================\n// End of forEachTiddler Macro\n//============================================================================\n\n\n//============================================================================\n// String.startsWith Function\n//============================================================================\n//\n// Returns true if the string starts with the given prefix, false otherwise.\n//\nversion.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nString.prototype.startsWith = function(prefix) {\n var n = prefix.length;\n return (this.length >= n) && (this.slice(0, n) == prefix);\n};\n\n\n\n//============================================================================\n// String.endsWith Function\n//============================================================================\n//\n// Returns true if the string ends with the given suffix, false otherwise.\n//\nversion.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nString.prototype.endsWith = function(suffix) {\n var n = suffix.length;\n return (this.length >= n) && (this.right(n) == suffix);\n};\n\n\n//============================================================================\n// String.contains Function\n//============================================================================\n//\n// Returns true when the string contains the given substring, false otherwise.\n//\nversion.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nString.prototype.contains = function(substring) {\n return this.indexOf(substring) >= 0;\n};\n\n//============================================================================\n// Array.indexOf Function\n//============================================================================\n//\n// Returns the index of the first occurance of the given item in the array or \n// -1 when no such item exists.\n//\n// @param item [may be null]\n//\nversion.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.indexOf = function(item) {\n for (var i = 0; i < this.length; i++) {\n if (this[i] == item) {\n return i;\n }\n }\n return -1;\n};\n\n//============================================================================\n// Array.contains Function\n//============================================================================\n//\n// Returns true when the array contains the given item, otherwise false. \n//\n// @param item [may be null]\n//\nversion.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.contains = function(item) {\n return (this.indexOf(item) >= 0);\n};\n\n//============================================================================\n// Array.containsAny Function\n//============================================================================\n//\n// Returns true when the array contains at least one of the elements \n// of the item. Otherwise (or when items contains no elements) false is returned.\n//\nversion.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.containsAny = function(items) {\n for(var i = 0; i < items.length; i++) {\n if (this.contains(items[i])) {\n return true;\n }\n }\n return false;\n};\n\n\n//============================================================================\n// Array.containsAll Function\n//============================================================================\n//\n// Returns true when the array contains all the items, otherwise false.\n// \n// When items is null false is returned (even if the array contains a null).\n//\n// @param items [may be null] \n//\nversion.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.containsAll = function(items) {\n for(var i = 0; i < items.length; i++) {\n if (!this.contains(items[i])) {\n return false;\n }\n }\n return true;\n};\n\n\n} // of "install only once"\n\n// Used Globals (for JSLint) ==============\n// ... DOM\n/*global document */\n// ... TiddlyWiki Core\n/*global convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink, \n displayMessage, endSaveArea, hasClass, loadFile, saveFile, \n startSaveArea, store, wikify */\n//}}}\n\n\n/***\n!Licence and Copyright\nCopyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this\nlist of conditions and the following disclaimer in the documentation and/or other\nmaterials provided with the distribution.\n\nNeither the name of abego Software nor the names of its contributors may be\nused to endorse or promote products derived from this software without specific\nprior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n***/\n\n
@@color(#04f): ▣ 제로섬게임 @@ (zero-sum game)\n\n@@color(#04f): ▣ 전역변수 @@(Global Variable)\n\n@@color(#04f): ▣ 좌표계 @@\n/ CCW(counter-clockwise; 반시계 방향) ; 오른손좌표계 - OpenGL, 3dsMax\n/ CW(clockwise;시계 방향) ; 왼쪽좌표계 - Direct3D\n\n@@color(#04f): ▣ 증강현실 @@(Augmented Reality)은\n실제 환경에 가상 물체를 합성하여 원래의 환경에 존재하는 사물처럼 보이도록 하는 기술로, 가상의 공간과 사물만을 대상으로 하는 기존의 가상현실과 달리 현실세계를 가상세계와 접목하여 보완해 줌
寸:마디 촌. 鐵:쇠 철. 殺:죽일 살. 人:사람 인\n'촌철'은 손가락 한 개 폭 정도의 무기를 뜻한다.\n\n@@color(#04f): 한 치의 쇠로 사람을 죽인다. 간단한 경구(警句)로 어떤 일의 급소를 찔러 사람을 감동시킴 @@\n'촌철살인'은 날카로운 경구(驚句)를 비유한 것으로, 상대방의 허를 찌르는 한 마디의 말이 수천 마디의 말을 능가한다는 뜻임\n\n&nbsp; &nbsp; '학림옥로(學林玉露)'라는 책은 남송(南宋) 때의 나대경(羅大徑)이, 찾아오는 손님들과 주고받은 청담(淸談)을 시동(侍童)에게 기록하게 한 것으로 '天地人'의 세 부분 18권으로 구성된 책이다. \n\n&nbsp; &nbsp; 그 중 '지부(地部)' 제7권 <살인수단(殺人手段)>에는 종고선사(宗藁禪師)가 다음과 같이 선(禪)을 논하여 말했다. \n\n&nbsp; &nbsp; "어떤 사람이 무기를 한 수레 가득 싣고 왔다고 해서 살인을 할 수 있는 것이 아니다. 나는 오히려 한 치도 안 되는 칼만 있어도 사람을 죽일 수 있다." \n宗藁論禪曰 譬如人載一車兵器 弄了一件 又取出一件來弄便不是殺人手段 我則只 有寸鐵 便可殺人. \n\n이것은 그가 선(禪)의 요체(要諦)를 갈파한 말이므로, 살인이라고 하지만 물론 칼날로 상처를 입히는 것을 뜻한 것이 아니라, '자기의 마음 속의 속된 생각을 없애는 것'을 뜻한다. \n\n아직 크게 깨달음에 이르지 못한 사람은 그 속된 생각을 끊어버리기 위하여 성급하게 이것 저것 대답을 해 오겠지만, 정신의 집중이 부족하기 때문에 모두 날것들뿐이다. \n\n그와 같은 칼로는 몇 천 몇 만 개나 되는 깨달음의 경지에 이르지 못한다. \n \n모든 일에 온 몸과 온 정성을 다 기울일 때, 충격적으로 번득이는 것, 이것이야말로 큰 깨달음인 것이다. \n[출전] '學林玉露' \n
@@color(#04f): 트위터 @@(twitter)는\n* 40글자 정도의 단문으로 소통하는 블로그이며, 좀 더 쉽게 말씀드리면 40자 글자 제한이 있는 댓글놀이이다.\n** 하지만 단순 댓글이 아니라 각자 자신의 홈을 갖고있고, follow-follower라는 싸이월드 일촌 시스템과 유사한 기능이 있습니다. 이 관계를 맺고있으면 상대방이 쓴글만 모아서 자동으로 받아 볼 수가 있다.\n** 무엇보다도 전세계 동시적으로 다양한 문화권의 사람들이 실시간으로 간편하게 소통할 수 있기 때문에 점차적으로 이용자가 확대되고 있다.\n\n* 트위터(twitter)는 2006년 3월 샌프란시스코의 벤처기업인 오비어스 코프가 오픈한 마이크로 블로그 형식의 소셜 네트워킹 서비스(SNS)이다.\n** 긴 글을 쓰고 사진과 동영상까지 넣을 수 있는 블로그와 달리 트위터는 최대 140자까지만 글을 쓸 수 있고, 사진이나 동영상 그리고 음악 등은 하이퍼텍스트 링크 형식으로만 삽입할 수 있다.\n*** 이를 바탕으로 실시간 소통하는 이 서비스는, 연예계와 정치권에 이어 기업의 마케팅 수단으로도 확산되는 추세. 형식은 블로그와 유사하지만 단문 위주로 커뮤니케이션을 할 수 있어 쉽고, 상대방의 동의를 얻어야 친구가 되는 타 SNS와는 달리, 상대방의 수락 없이도 본인이 원하는 사람들이 보내는 메시지를 받아 볼 수 있다. \n*** 그래서 블로그가 아니라 마이크로 블로그라고 불린다. 대신 트위터는 소셜 네트워킹(Social Networking) 즉 인맥을 만드는 기능이 매우 강한 것이 특징이다. 트위터에서는 따라가기(follow)라고 불리는 기능이 있다. 상대방의 마이크로 블로그에 가서 따라가기 버튼을 누르면 그 다음부터는 그 사람이 쓰는 글이 나에게 자동으로 업데이트 된다.\n** 짦은 문장만 쓸 수 있는 대신, SMS 스마트폰 메신저로 블로그에 글을 올릴 수도 있다.(하지만 트위터는 국내에서는 SMS로 글을 올릴 수 없는 상태이다) 즉 이동성이 뛰어난 유무선 인터넷 서비스이다. 이동성이 뛰어나고, 내 친구가 업데이트하는 글을 실시간으로 받아볼 수 있기 때문에 전세계에서 현재 벌어지는 일을 쉽게 파악할 수 있다.\n*** 트위터의 파워는 바로 '엄청난 속도의 전파력'에서 나온다. 2009년 여름 이란 대통령 선거 이후 테헤란에서 휴대전화 단문메시지 송수신 서비스가 중단됐지만, 트위터를 통해 시위장소와 시위 전개 상황을 실시간으로 이란 네티즌들에게 알리면서 시위를 주도하는 등 변혁을 촉발하는 역할을 해냈다. 또한 중국 우루무치에서 대규모 유혈사태가 발생했을 때 그 어떤 언론보다 신속하게 사태를 전한 것은 다름아닌 트위터였다..\n** 초기의 트위터는 유명인의 소셜 네트워크 서비스(SNS)라는 점에서 호기심을 자극하는 수준이었다면 이제는 언론보다 어 빠른 정보 파급력으로 세력을 넓혀가고 있다.\n*** 기업 CEO들도 상황을 파악하고 소비자들의 목소리를 직접 듣는 도구로 트위터를 활용하고 있다. 눈치빠른 정치인들은 트위터를 통해 국민과 소통하겠다고 나서고 있다. 초기에는 허진호 네오위즈인터넷 대표, 이찬진 드림위즈 대표 등 주로 IT관련 CEO들이 트위터에 합류했다. 최근에는 박용만 두산 인프라코어 회장도 직접 트위터를 개설해 눈길을 끌고 있다.\n\n! 트위터의 문제점\n* 하지만 트위터는 기본적으로 하지만 트위터는 영어 서비스이다. 트위터는 전세계의 언어 중 영어와 일본어 서비스 2개만 하고 있을 뿐이다. 일본어 서비스를 하는 이유는 초기 투자자 가운데 일본기업이 있기 때문이다.\n** 이런 점 때문에 한국 사용자들이 겪는 불편은 꽤 많다. 트위터에 가입을 하면 한국인은 3천만명이 넘는 외국인 가운데 한국인을 찾아야 하는데 이것이 쉽지 않다. 그래서 가입만 해놓고 잠을 자는 회원들이 적지 않다.\n* 한글 검색이 잘 안되고, 트위터와 연동돼 돌아가는 어플리케이션에서는 한글이 깨지는 현상이 나타난다. 브라우저에 따라 한글로 사람 이름을 검색하면 검색이 나오지 않는 현상이 있고, 한글로 글을 검색했을 때도 비슷한 현상이 나타났다.\n** 한국의 이슈가 무엇인지 알 수 없다는 문제점이 있다. 트위터는 메인 페이지에 Trending Topics 라는 것이 나오는데 여기에 실리는 것이 모두 영어이다. 따라서 한국에서는 무엇이 이슈인지 알 수가 없다.\n* 국내 트위터 이용자들은 휴대폰 SMS로 문자를 올리는 것도 불가능합니다. 현재 미국과 영국, 캐나다 등 3나라에서만 휴대폰 SMS 서비스가 가능한 상태다. \n** 트위터는 영어권 서비스이고, 회사 규모가 직원 60명에 불과한 중소기업인데다, 전세계가 단일 채널이어서 야후나 구글처럼 그 나라의 실정에 맞춘 나라별 서비스를 제공하기는 쉽지 않을 것 같다.\n** 그래서 한국한 트위터들이 우후죽순 생겨나고 있다. 이런 현상은 한국뿐 아니라 전세계적으로 공통된 현상이다. 독일, 일본, 중국 등 대부분의 국가에 트위터와 유사한 서비스들이 생겨나 트위터와 경쟁을 하고 있다.\n\n! 국내 트위터 유사 사이트\n* 기타\n** twitter.com ; 김연아, 오바마\n** playtalk.net ; 이외수\n* __트위터와 연동성을 강조한 야그__\n** 가장 트위터와 유사하고 트위터와 연동이 잘 되는 사이트는 야그( www.yagg.kr )이다. 야그는 트위터와 문법체계가 비슷하고 트위터에 가지 않고도 트위터에 글을 올리거나, 트위터에 온 글을 볼 수 있어 인기이다.\n** 또한 야그 사용자는 웹은 물론 휴대전화 문자메시지(SMS)로 내 블로그에 글을 올릴 수 있다. 애플의 iTunes에서 아이폰/아이팟용 어플리케이션을 무료로 내려받으면 아이폰에서 쉽게 야그를 할 수 있다.\n** 한국 내 이슈를 알 수 있다는 점도 장점이고, 한국내의 지역별 검색기능도 갖추고 있어 우리 동네 사람들과 친구를 쉽게 맺을 수 있다.\n* __비즈니스 인맥 쌓기 링크나우__ \n** 비즈니스에 특화된 SNS도 있다. ‘링크나우’ ( www.linknow.kr )는 개인 프로필을 기반으로 한 비즈니스 인맥 서비스다. 출생지, 학교, 직장 등 개인 정보를 회원끼리 공유하면서 인맥을 형성하며, 일촌이 되면 연락처는 물론이고 서로의 인맥까지 공유할 수 있다. 특히 근무 회사나 이메일이 바뀌는 등 신상변동이 있더라도 일촌들에게 자동으로 통보돼 이를 바로 알 수 있는 게 장점이다. 10만명 가까운 CEO, 직장인, 전문직 종사자들이 인맥을 구축하고, 비즈니스 파트너를 찾거나 채용을 하는데 자주 애용하고 있다. \n* __NHN에 인수된 미투데이__ \n** 네이버에 인수된 미투데이( www.me2day.com )도 트위터와 유사한 마이크로 블로그 사이트이다. 그렇지만 이 서비스는 친구 신청을 하고 상대가 동의해야 친구가 되는 방식을 해왔기 때문에 오히려 싸이월드와 비슷하다. 하지만 마이크로 블로그라는 점에서는 트위터와 유사한 점이 많다.\n* __음식점 정보가 있는 런파이프__\n** 싸이월드의 공동창업자로 유명한 이동형 나우프로필 대표가 지난 4월 비공개 서비스를 시작한 ‘런파이프’( www.runpipe.com )도 있다. 특히 '구독로그' 기능은 뉴스사이트나 개인 블로그 등을 직접 불러와 등록하면 해당 기사를 계속 구독할 수 있으며 '퍼뜨리기' 기능으로 관계를 맺은 다른 파이프에게 전달할 수 있다. \n* __SK텔레콤의 토씨__\n** SK텔레콤이 서비스하고 있는 토씨(www.tossi.com)는 한국형 모바일 블로그다. 휴대전화에서 문자를 써서 수신자(#7055)에게 보내면 웹 블로그에 등록된다. 또 친구 새 글이나 댓글이 등록되면 글 내용을 20자까지 SMS로 알려주며, 문자로 답하면 해당글에 댓글을 바로 달 수 있다. 인터넷에 접속하지 않아도 문자를 보내는 것만으로도 유선-무선에 있는 블로거들과 의견을 주고받을 수 있다. 현재 토씨의 가입자수는 25만여명이며 전체 회원 중 64%가 10~20대이다. \n\n! 트위터 = MSN + 세이클럽 + 심심이 전체공개\n트위터 안의 트위터들, 점점 늘어나고 있습니다. \n그렇다면 대체 누가 트위터 안으로 모이는 걸까요?\n&nbsp; &nbsp; 1. MSN 메신저의 '남몰래 로그인' 기능을 즐겨 사용하던 위기관리 전문가 정모 차장. 트위터는 '남몰래 로그인' 기능이 자동지원됩니다. \n&nbsp; &nbsp; 2. 세이클럽에서 채팅방을 만들어 친구가 들어오길 기다리며 지루한 시간을 보내야 했던 홍보대행사 김AE. 트위터는 채팅방을 만들 필요도 없고 지루하게 친구가 들어오기만을 기다릴 필요도 없습니다. 첫째, 채팅방은 늘 개설되어 있으며, 둘째, 그 채팅방에는 누구나 들어갈 수 있으며 (더군다나 '남자 사절' '안 예쁜 여자 입장 불가' '19세 이상 입장 불가'와 같은 입장 제한 조건도 없습니다) 셋째, 마음에 드는 친구가 있으면 따로 말을 걸면 되며 넷째, 그렇지 않은 경우에는 계속해서 눈팅을 즐기면 됩니다. \n&nbsp; &nbsp; 3. 심심이에게 말걸기 좋아하던 OOO 마케팅 부서의 오대리. 트위터에서는 살아있는 사람에게도 말을 걸 수 있습니다. \n\n\n\n
@@color(#04f): ▣ Kick-Off Meeting @@; 첫 회의\n'Kick-off'란 미식축구에서 게임을 시작하기 위해 상대편 진영으로 공을 차는 것을 의미합니다. 따라서 'Kick-off Meeting'이란 어떤 프로젝트나 업무를 시작할 때 담당자들이 모두 모여 향후 업무 분담 및 진행 계획 등을 논의하는 첫 회의를 의미합니다.\n
@@color(#04f): 참고 ; 취업을 위한 준비 @@\n1) 이력서 ; 진실되고, 간결하고, 구체적으로 기술( 이력서 1장 + 자기소개서 1장) \n&nbsp; &nbsp; 50% 정도 차지 - 정해진 형태가 없는 경우, 일반적인 형식 사용(*.hwp, *.doc)\n2) 인터뷰 성공전략 ; 복장, 언어, 태도, 화법 ==> 취업 의지 표명\n&nbsp; &nbsp; -0. 능력, 적응성, 적합성을 기본으로 면접자를 파악 \n&nbsp; &nbsp; -1. 면접 전 제출한 이력서를 숙지하라.\n&nbsp; &nbsp; -2. 해당 기업/ 시장에 대한 거시적인 자료를 다시 확인하라.\n&nbsp; &nbsp; -3. 자기소개(3분 speech)가 성공의 열쇠\n3) 성장배경 + 교육 + 자격/특기 + 경험 + 성과 + 역량 >> To 조직(직무)\n4) 인터뷰 종료후 ; Post Analysis, Thank you Note
1. 진입하고자 하는 시장에 강력한 No.1이 있다면 No.1을 할만한 새로운 시장을 구축하라 - 범주의 원칙\n2. 좋은 제품보다는 시장 진입을 먼저하라 - 리더의 원칙\n3. 시장에 첫 번째로 진입하는 것보다는 고개의 머릿속에 첫 번째로 인식시켜라 - 기억의 원칙\n4. 잠재 고객이 기억하기 쉬운 언어로 메시지를 전달해라 - 집중의 원칙\n&nbsp; &nbsp; -. Net Market 창출 ; 신시장 구축 -> 브랜드 네이밍 -> 시장확장\n&nbsp; &nbsp; -. Segment tation\n&nbsp; &nbsp; -. Brand Naming\n&nbsp; &nbsp; -. Extension\n\n
@ 98. 7. 10. 18:00-18:40 @\n1. 현장 현황 파악 -> 일지작성(Data입력); 전일 반성과 오늘 목표 설정\n2. 공장 설비의 작동원리; 인성파악 -> 정확한 판단 및 예측\n3. 도면과 자료정리 -> 일의 진행 과정을 체크\n4. 자재정리 -> 재고 파악과 부품확보\n5. 구매요령\n&nbsp; &nbsp; 1) 대화 = 문서작성 - -> 대인관계 유지, 발전(논리성)\n&nbsp; &nbsp; 2) 시장조사 철저\n6. 수리, 의뢰 요령 \n&nbsp; &nbsp; 1) 예정가 산정.\n&nbsp; &nbsp; 2) 업체 기술 수준 파악\n\n\n
@@color(#04f): ▣ Hook @@; \nWindows가 응용프로그램에게 message를 전달하기 전에 system message queue에서 message를 가로채는 과정 \n\n@@color(#04f): ▣ HUD @@ (Head-Up Display) ; \n-.UI에서 HUD란 반투명한 계기판으로 형태로 말 그대로 고개를 든 채 확인할 수 있는 정보창\n&nbsp; &nbsp; (대개)닫기 버튼 없이 항상 화면에 떠 있으면서 정보를 보여주는 UI로\n&nbsp; &nbsp; UnitFrame(얼굴+HP/MP+상태) 이나 QuickSlot 같은 것들이다.\n-.UI를 만들다보면 갯수가 너무 많아져서 전부 로딩하려면 메모리와 시간낭비가 심해지기 때문에 처음부터 로딩해둬야 하는 것과 나중에 로딩해도 되는 것들을 분류할 필요가 있는데, 이때 HUD 류는 무조건 로딩해야하는 분류에 속한다.\n-.참고; gpgstudy의 'hud란 무엇인가요??' \n&nbsp; &nbsp; http://www.gpgstudy.com/forum/viewtopic.php?p=124838\n-.전투기 조종석 앞 유리창에 있는 투명한 패널에 속도ㆍ고도ㆍ무장정보 등 각종 비행정보 및 임무정보를 조종사의 전방 상단에 제공한다.\n\n@@color(#04f): ▣ HMD @@ (Head mounted Display) ; 안경처럼 머리에 쓰고 대형 영상을 즐길 수 있는 영상표시\n휴대하면서 영상물을 대형화면으로 즐기거나 수술이나 진단에 사용하는 의료기기에 적용할 수 있는 차세대 영상표시 장치로, 군사용, 항공기용으로 개발됐던 HUD (Head-up Display)에서 발전된 형태이다.\n
@@color(#04f): 핵심성공요인 @@(CSF:Critical Success Factor) \n출처; http://opps1004.egloos.com/1286335 - 웁스천사 마케팅 이야기\n참고; [[목표관리(MBO)]]\n\nJohn F. Rocket은 최고 경영자의 정보 요구를 이해하기 위한 수단으로 CSF(Critical Success Factors)를 개발하였다. 이 방법은 기업 전체에 적용되며, 하나의 보다 광범위한 기획 방법으로 확장되어 전략 정보 기획방법의 필수요소로 발전되었다. \n\n핵심 성공 요인(CSF)의 정의를 살펴보면 “개인, 부서 또는 조직에게 성공적인 결과를 가져옴으로써 경쟁력 있는 업무 수행을 보장해 줄 수 있는 한정된 수의 영역”을 의미한다. 따라서, 사업이 번창하고 경영자의 목표가 달성될 수 있기 위해 반드시 성공하여야 할 몇몇 주용 영역의 의미가 있다. CSF는 한 기업의 활동이 성공하기 위해서 갖추거나 수행되어야 할 주요요소를 의미하고 한 기업이 선택한 전략의 방향 뿐만 아니라 산업/경제의 전반적인 구조에 의해 결정된다.\n\nCSF는 경영의 목적(Goal) 및 경영 목표(Objective)를 성취하는데 있어서 중요한 내부 항목으로 경영 목적(Goal)을 위한 수단의 역할을 수행한다. Goal이 비교적 안정적이고 외부적인 경향이 강하다면, CSF는 상대적으로 불안정하며 내부적인 경향이 강하다. 따라서, CSF는 경영의 중요한 가정(Critical Assumption)이 변하면 함께 조정되어야 한다. 또한, CSF는 경영목표를 달성하기 위한 수단(Means)이며, 성과의 달성은 측정될 수 있어야 한다.\n\nCSF는 다음과 같은 특징들을 가지고 있다.\n * CSF는 계층적 구조를 가지고 있다. 최고 경영자, 사업 단위 등으로 세분화될 수 있다.\n * 내적인 CSF와 외적인 CSF, 감시적인 기능의 CSF와 구축적 기능의 CSF로 대별할 수 있다. \n\nCSF가 도출되는 5가지 원천은 아래와 같다.\n * 해당 산업 : 산업 자체의 특성으로부터 도출되는 CSF\n * 경쟁적 전략 또는 업계 내의 위치 : 기업의 특정 활동 범위 또는 역할에 의해 도출되거나 또는 고유한 전략에 의해 도출되는 CSF\n * 환경적 요인 : 환경적 변화 요인에 의해 도출되는 CSF\n * 일시적 요인 : 단기적 위기 상황에 의해 도출되는 CSF로 취기에 관련된 CSF는 중요할 수는 있지만 수명은 짧음\n * 관리직의 위치 : 어떤 CSF는 특정 관리자에게 관련되어 있음\n\n마지막으로 CSF는 경영자에게 2가지 효과를 준다. \n * 경영자로 하여금 가장 중요한 활동에 초점을 맞출 수 있게 한다.\n * 경영자로 하여금 그들의 정보 요구를 심사 숙고하게 도와준다.\n
@@color(#04f): ▣ 레벨 @@(level) &nbsp; &nbsp; @ 2010-03-25 @\n일반적으로 게임의 한 스테이지. 혹은 가상의 장소(예를 들어 건물의 층)에 대응되는 한 묶음의 게임 데이터, 또는 게임 캐릭터의 등급을 나타낼 때도 사용된다.\n\n@@color(#04f): ▣ 렌더러 @@(renderer) &nbsp; &nbsp; @ 2010-03-25 @\n이미 만들어진 애니메이션을 재생하는 것이 아니라, 일련의 데이터로부터 특정한 절차를 거쳐 화면에 그려주는 소프트웨어.\n\n@@color(#04f): ▣ 로하스 @@(LOHAS : Lifestyles Of Health And Sustainability) &nbsp; &nbsp; @ 2011-09-25 @\n대표적인 친환경적 생활양식으로 건강과 환경, 사회의 지속적인 발전 등을 심각하게 생각하는 소비자들의 생활 패턴을 가리키며, 웰빙에 사회와 환경을 추가해, 친환경적이고 합리적인 소비패턴을 지향한다.\n\n@@color(#04f): ▣ 롱테일@@ (The Long Tail) 법칙은 &nbsp; &nbsp; @ 2010-12-06 @\n결과물의 80%는 조직의 20%에 의하여 생산된다는 파레토법칙에 배치하는 것으로 80%의 사소한 다수가 20%의 핵심 소수보다 뛰어난 가치를 창출한다는 이론이다.\n\n\n
@@color(#04f): ▣ E3 @@ (Electronic Entertainment Expo) &nbsp; &nbsp; @ 2010-03-25 @\n해마다 6월 말에 열리는 게임 업계의 무역 쇼. 새로운 게임이 E3에서 첫 선을 보이는 경우가 종종 있고, 그 때문에 게임을 마케팅할 때 E3의 중요성이 커지고 있다.
자신이 뜻하는 바를 이루려고 노력을 하지만 그러한 노력을 방해하는 환경에 휩쓸려 자신을 통제하지 못하는 잘못 (from '재무설계를 위한 행동재무학')\n\n중요한 의사결정 순간에 비이성적이고, 비효율적인 판단으로 손실을 초래하는 경우가 종종 있다. 이러한 자기통제오류는 마치 습관처럼 우리의 삶 깊숙이 뿌리내리고 있어서 미래의 풍요로운 삶을 이루지 못하도록 방해한다. 미래를 위한 저축을 방해하는 자기통제오류가 발생하는 이유는 사람들이 미래보다 현재에 소비하는 것을 더 선호하기 때문이다. 이와 같이 현재에 소비하고자 하는 유혹을 이기고 미래의 원하는 삶을 추구하기 위해서는 적절한 자기통제가 필요하며 이를 위해서는 자기통제를 도와주는 시스템의 구축이 필요하다.\n\n자기통제 시스템을 구축하기 위한 방법으로\n첫 번째, 먼저 저축하고 나중에 소비하는 선저축 후소비의 시스템을 유지하기 위해서 가입한 저축금액이 급여통장에서 자동이체 되어 먼저 빠져나가도록 하자.\n두 번째, 한 달 소비에 대한 예산을 짜고 그 예산의 범위 내에서 지출하도록 신용카드 사용을 체크하고 체크카드나 현금을 사용하도록 하자.\n세 번째, 귀찮더라도 매일 가계부를 작성하도록하자.\n네 번째, 통장마다 꼬리표를 달아서 저축상품의 목적을 분명히 하자.\n\n출처; 신용사회 2010.01.(Vol.328) Money 실전 재테크
@@color(#04f): 아이패트 @@는 애플의 태블릿...\nIT기술 동향과 트렌드를 미리 만나볼 수 있는 자리인 CES 2010에서 올해 주목하고 있는 분야는 3가지, 스마트폰, 3DTV 그리고 태블릿이다. 작년 CES에서 주인공은 스마트폰이었고, 여기에 2가지 목록이 추가\n\n''아이패드'' ; 터치에 최적화된 아이팟 터치나 아이폰에서 화면을 확장(더 큰 화면에 더 많은 즐거움을 제공)\n-. 모바일 운영체제인 아이폰 OS를 사용, 아이패드에서 키패드란 있으면 좋고 없어도 상관없는 입력 디바이스일 뿐\n-. 플래시 미지원, 엑티브 X 불가, 멀티태스킹 등이 지원되지 않는다는 점으로 웹 환경이나 사용성에서 제약이 오는 단점이 있지만, 이로인해 누르는 순간 반응하는 터치속도, 빠른 웹 로딩과 즉각적인 애플리케이션의 반응들이 이 단점에서 나오는 것이기도 하다. \n-. 기기 자체보다는 아이폰과 아이팟 터치의 주 수입원이 제품에 있는 게 아니라 앱 스토어를 통해 제공하는 디지털 콘텐츠에 있음\n-. ''PC가 아닌 멀티미디어 기기'' ; 간편함과 신속함이 장점\n&nbsp; &nbsp; 간단하게 게임을 즐기거나 웹서핑을 위해 PC에 전원을 넣을 필요 없이 아이패드를 사용\n&nbsp; &nbsp; 아이패드로 책을 읽고 음악을 듣고 영화를 보고 싶으면 Wi-Fi를 통해 곧 바로 감상\n\n\n''태블릿 PC'' ; 키보드라는 입력체계를 떼어내고 터치스크린을 붙인 것\n-. 마우스와 키보드라는 입력 체계를 가진 PC를 그대로 계승\n-. 오랜 시간동안 구축된 PC환경을 고스란히 사용할 수 있다는 장점이 있지만, 키보드와 마우스에 특화된 소프트웨어를 터치로 조작한다는 건 매우 어렵고도 스트레스를 유발\n* UMPC ; 2001년 MS의 키패드를 제거하고 터치 디스플레이로 동작하는 노트북\n** 그 당시 인터넷 환경과 칩셋 기술력으로는 얇고 가벼우며 오래가야한다는 모바일 디바이스의 특성을 소화해내기에는 버거운 게 현실이었고 결국 실패.\n** PC환경에서 인터넷은 보급화 되었지만, 기동성과 휴대성 측면에서 무선 LAN 환경이 좋지 못했고 짧은 구동시간과 열약한 터치 인터페이스는 태블릿을 노트북보다 못한 존재로 만들어버리고 말았다. \n* MID(모바일 인터넷 디바이스); 인텔이 모바일 시장을 타깃으로 아톰 프로세서를 선보이고 이를 이용한 모델로 계속해서 개선된 모델들이 출시.\n** MID도 PC의 운영체제를 그대로 계승했다는 한계점으로 인해 현재까지도 시장 가능성만을 제시\n
!전략적 사회공헌 3대 유형\n''공유 가치형'' ; 정보격차 해소 주력\n인텔은 나이지리아 내 200개교에 'Classmate'라는 저가 노트북을 개발하여 공급하는 한편, 안정적인 전력공급을 위해 디젤발전기를 학교에 설치하고 무선 인터넷 환경도 제동했다. 또한 마이크로소프트는 부유층에는 '정품판매 방식'을 쓰고 빈곤층에는 정부 및 시민단체와 협력 네트워크를 구축해 '무상지원방식'을 사용하였다.\n\n''시장창조형'' ; 빈부격차 해소 주력\nGE는 인도에서 초간편형 심전계 'MAC400'을 현지기술로 개발해 미국 내 가격의 10분의 1 수준인 1000달러에 판매하였고 필립스는 진흙으로 만든 전통적인 '출라(Chulha)'를 개선해 집안 내 안전사고를 해결하는 한편 신시장 창출에도 성공하였다.\n\n''문제해결형'' ; 의료격차 해소 주력\n미국의 머크는 1987년 실명을 유발하는 회선사상충증 치료제인 멕티잔을 필요한 사람에게 필요한 만큼 지원하겠다는 '멕티잔 기부 프로그램'을 발표, 프로그램이 시작된 이래 25억 개의 약을 기부하여 약 7억 명의 환자를 치료하였으며 현재에도 아프리카, 남미지역에서 연간 8000만 명의 환자가 혜택을 받고 있다. 국내기업으로는 매일유업의 특수이유식, CJ의 저단백밥의 경우가 의료격차 해소에 중점을 둔 기업 활동을 꼽힌다.\n\n출처; 신용사회 2010.02.(Vol.329) Information 존경하는 기업의 조건
@@color(#04f): ▣ xfer @@ ; Transfer &nbsp; &nbsp; @ 2010-07-15 @\n
@@color(#04f): ▣ 빈티지 @@(Vintage) @ 2011-06-15 @\n수십 년의 세월이 지나도 변하지 않는 미적 가치와 우월성을 가진 것 (from American Heritage Dictionary)\n-> 희소성의 흔적, 시간의 흔적이 가치를 창조\ncf. 앤티크(Antique) ; 일반적으로 100년 이상의 시간이 지난 것 \n\n@@color(#04f): ▣ 블루슈머 @@(Bluesumer) @ 2010-08-04 @\n블루 오션(Blue Ocean) 전략이란 공급자 중심의 한정된 시장 안에서 경쟁우위를 달성하는 레드 오션(Red Ocean) 전략에서 벗어나, 구매자 중심의 인식의 재구축을 통한 가치혁신으로 미개척된 잠재 수요를 발견하고 이를 타켓으로 다른 기업과 차별화된 가치곡선을 형성하여 비약적인 이익을 이끌어내는 전략을 뜻한다. 간단히 말해 새로운 성장의 잠재력을 지닌 새로운 시장을 만들어 내는 것을 뜻한다. \n블루 오션에서 파생된 단어 블루슈머(Bluesumer ; 신소비 집단)란 '경쟁자가 없는 시장의 새로운 소비자'를 뜻하는 말로, 블루 오션(Blue Ocean)과 소비자를 지칭하는 단어인 Consumer를 합성한 신조어이다.
@@color(#04f): ▣ 희토 @@란 @ 2011-03-12 @\n란탄, 세륨, 디스프로슘 등의 17종의 원소를 포함하는 희귀금속을 포함한다. 희토는 자기부상열차, 전기 자동차 등 모든 첨단제품에 필수적으로 사용되며 '공업의 미타민', '공업의 조미료', '21세기의 황금' 등으로 불리는 전략자원으로 자리잡고 있다. 일찍이 덩샤오핑은 중동에 석유가 있다면 중국에는 희토가 있다고 언급하며 그 전략적 중요성을 강조한 바 있다.\n
@@color(#04f): ▣ 경제 주체 @@ = 가계 + 기업(= 민간) + 정부(= 국민) + 해외(= 국제) + 금융 \n\n@@color(#04f): ▣ 미들맨 @@ (middleman)&nbsp; &nbsp; @ 2011-07-12 @\n중개상 혹은 중개인이라는 사전적 의미를 넘어 국가 간, 기업 간, 개인 간의 국제적 교역을 촉진시키는 역할을 하는 전문가 그룹을 통칭하는 개념으로, 변호사, 컨설팅회사, 통역사, 디자이너, 애널리스트, 은행 등\n\n@@color(#04f): ▣ 미시경제학 @@ (微視經濟學, Microeconomics) &nbsp; &nbsp; @ 2011-07-03 @\n- 사회를 구정하는, 하나의 시장안에서 이루어지는 개별경제주체들의 상호작용을 연구\n- 미시경제학의 주된 분석대상은 ''1.수요자 2.공급자 3.시장구조''\n- 시장구조는 경쟁시장, 독점시장, 과점시장, 독점적 경쟁시장 등으로 구분되면, 각 시장 구조에서의 균형점이 어떻게 결정되는지를 설명\n\n@@color(#04f): ▣ 거시경제학 @@ (巨視經濟學, Macroeconomics) &nbsp; &nbsp; @ 2011-07-03 @\n- 모든 개별경제주체들의 상호작용의 결과로 인해 나타나는 한 나라의 경제전체 현상에 대한 분석.\n- 국민소든, 물가, 실업, 환율, 국제수지 등 경제 전반에 영향을 미치는 변수들의 결정요인과 이러한 변수들간의 상호관련성을 연구하는 분야.\n- ''경제정상이론''과 ''경기변동이론''은 거시경제학에서의 주요 연구대상\n- 정부의 개입이 불필요하다고 보는 고전학파와 시장은 불안정하므로 정부의 적극적인 개입을 통해야한다는 케인즈학파로 구분\n\n@@color(#04f): ▣ 미시자본주의 @@ (마이크로 캐피털리즘, Micro-Capitalism) 란 &nbsp; &nbsp; @ 2011-07-03 @\n자본주의적 발전에서 자본집중의 원리에 따라 대기업이 중심이 되는 고전적인 발전이 아니라, 소기업을 중심으로 발전이 이루어지기 때문에 ''「자본의 분산」이 강화되는 발전''을 말한다. 그러나 이 명칭은 주변화 혹은 비공식화와도 구별되어야 한다. 주변화 marginalization나 비공식화 informalization 와도 구변되어야 한다. 주변화나 비공식화는 이원적 구조의 강화를 의미하나, 미시자본주의는 이원구조의 약화를 의미하기 때문이다.\n- 강력한 개인 재산권, 신용시장의 확대 그리고 기업가정신의 육성에 의해 탄생\n- 마이크로 캐피털리즘은 재능 있는 사람들이 선진국으로 이민을 가지 않고 고국에 머무르게 되면 이들이 공공의료, 교육, 사회간접자본 그리고 산업 발전과 같은 문제들을 외국에 의존하지 않고 직접 해결할 수 있을 것으로 기대\n\n@@color(#04f): ▣ 중력 모형 @@ (gravity model)\n사회학자들이 뉴턴의 만유인력의 법칙을 원용하여 두 지역 간의 인구와 상품 이동 등 상호작용을 중력 모형의 원리에 비춰 설명하는 이론. 중력 모형이 제시하는 기본 원리는 두 도시의 공간적 상호작용의 견인력은 도시의 인구 규모에 비례하며 두 도시 간의 거리의 제곱에 반비례한다.\n\n@@color(#04f): ▣ 집적 경제 @@ (agglomeration economies)\n어떤 지역에 산업이나 인구가 집중하면 서로가 분업하게 되거나 노동력 및 소비시장이 생기는 한편으로 도로 등의 시설이 만련되고 투자 및 생활 효율이 높아지는 것\n\n\n!!경제지수\n@@color(#04f): ▣ 국제재산권지수 @@ (International Property Rights Index)\n전세계 GDP의 95퍼센트를 차지하는 70개 국가를 대상으로 한 조사와 통계 자료를 바탕으로 계산되며, 법적·정치적 환경, 물적재산권, 지적재산권의 세 가지 항목으로 구성된다. \n\n@@color(#04f): ▣ 세계평화지수 @@ (Global Peace Index)\n군사 예산, 무기 수출, 폭력범죄의 정도, 전쟁 사상자, 죄수 규모, 조직범죄 수준, 잠재적인 테러 공격 위험, 사회적·정치적 갈등, 인접 지역이나 국가와의 상대적 관계 등 23개 지표를 종합해 평화를 수치화한 것으로 한국은 2010년 43위를 기록했다.\n\n@@color(#04f): ▣ 인간개발지수 @@ \n유엔 국제연합개발계획이 매년 세계 각국의 문맹률, 평균수명, 1인당 실질 국민소득 등 인간의 삶과 관련된 여러 가지 지표를 조사해 인간개발 성취 정도를 평가하는 지수를 말한다. 인간의 행복이나 발전 정도는 소득 수준과 비례하지 않고, 소득을 얼마나 현명하게 사용하느냐에 달려 있음을 보여주는 지수다.\n\n
@@color(#04f): ▣ CCU @@ (ConCurrent User) ; 동시접속자\n정의 : 동일한 시간대에 게임에 접속해 있는 유저를 말한다. 흔히 로그인 서버를 기준으로 산정한다.\n\n@@color(#04f): ▣ ARPU @@ (Average Revenue Per User) ; 가입자당 평균 매출액, 즉 객단가\n정의 : "일정기간"의 매출액을 그 기간내의 BU로 나누어 산출한 수치\n&nbsp; &nbsp; 한달을 기준으로 해서 유저가 평균적으로 결제한 금액으로 산정.\n\n@@color(#04f): ▣ ACCU @@ (Average ConCurrent User) ; 평균동접\n\n@@color(#04f): ▣ PCCU @@ (Peak ConCurrent User) ; 최고동접\n\n@@color(#04f): ▣ BU @@ (Buying User) = PU(Paying User) ; 구매자, 한번이라도 캐쉬 아이템을 구입한 적이 있는 유저\n주로 정액제 비지니스 모델을 사용하는 게임에서 활용하는 용어\n정액 비용을 결제한 유저(PU), 캐쉬 아이템을 구입한 유저(BU)\n\n@@color(#04f): ▣ UV @@ (Unique Visitor) ; 한번이라도 접속을 한 유저\n&nbsp; &nbsp; &#8226; MMO UV 산출법 : PCCU * 3.935\n&nbsp; &nbsp; &#8226; CASUAL UV 산출법 : PCCU * 7.45\n\n@@color(#04f): ▣ BUrate @@ (Buying User rate) = BU/UV\n\n
▣ 2012.05.14.(월) 14:00 ~ 15:30, 8층 대회의실, VDI(Virtual Desktop Infrastructure)\n\n▶ '클라우드 붐'과 함께 PC 가상화 기술로 통칭되는 서버기반컴퓨팅(SBC)과 데스크톱가상화(VDI)\n&nbsp; &nbsp; &nbsp; &nbsp; : 기기에 상관없이 언제 어디서나 기업 서버에 접속해 필요한 업무자원을 사용\n- 중앙 서버에 애플리케이션을 두고 같이 나눠 쓰는 서버기반컴퓨팅(SBC)\n- PC 애플리케이션이 중앙 서버에 존재하는 데스크톱가상화(VDI)\n\n80% 이상의 기밀 유출 보안 사고는 임직원의 업무용 pc에서 발생한다. SBC나 VDI의 공통점인 '내PC가 비어있다'의 방식은 PC 문서를 유출하거나 USB 메모리로 빼내고 노트북PC를 분실하는 경우 등을 방지할 수 있다. \n\n* 부정적 측면\n** 높은 초기투자비용, 높은 솔루션 가격과 매년 책정되는 라이센스 비용 그리고 버전 업그레이드 비용의 부담\n** 사용자의 불만 (자신의 정보를 빼앗긴 기분, 회사에서 의심받는 느낌/ 느린 업무속도와 자유롭지 못한 어플리케이션 설치)\n\n* 긍정적 측면\n** 보안, 모바일 업무 생산성, 개인 PC보안사고 방지\n** IT관리 편의성 (데스크톱 가상화후 한명이 관리할 수 있는 PC수는 두배가 되었다)\n** 친환경 (PC사용전력 감소)\n** 지식관리시스템 구축용이 (노하우를 쌓는데 유리해짐)\n\n▶ 리소스 제공 관점\n1.원격 데스크톱 연결 (Session Hosted)\n2.데스크톱 가상화(VDI) (Server Hosted)\n3.가상 PC 방식 (Client Hosted) ; 공공, 금융, MED-V\n\n▶ VDI 도입\n1.물리적 디바이스 분리 ; 하드웨어 인프라 ↓\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; 스토리지 사이징 및 설계 중요 ; 적은 용량, 병렬처리 가능한 구성\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; Zero/ Thin Clients (cf.Zero Clients ; OS나 어플리케이션 없이 VM만 작동)\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; RemoteFX ; 추가 GPU를 통한 3D 가속 처리\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; CPU 1 core ≒ 2.5명 → 최대 4명 처리 예상(>> 10명)\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; 데스트톱, 모바일 기기 등 모든 디바이스를 지원\n\n2.통합 관리 System\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; 서버 가상화\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; 데스크톱 가상화\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; 프리젠테이션 가상화\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; 어플리케이션 가상화\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; 프로파일 가상화\n\n3.관리인력을 통한 접근 등 이슈 발생 ; 관리비, 유지 인력 ↑\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; 잘못된 Task 분석과 설계 등으로 장점이 단점으로 나타날 수 있음\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; 자동화 ; 데이타 통합 등에 수작업\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; 인증 Self-Service\n&nbsp; &nbsp; &nbsp; &nbsp; &#8226; Public Cloud 연동\n\n▶ 구성\n| 인프라공유 |VM | 개별 사용자 프로파일로 할당된 저장공간에 작업 |\n| 어플리케이션 |~|~|\n|>| Windows HyperVisor | |\n|>| 서버가상화 | Windows XP - 아키텍처 설계시 VM이 고려되지 않음 |\n|>|~| Windows 7 이상의 OS를 추천 (∵ Hyper-V) |\n