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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.subtitle {font-size:0.8em;}

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

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

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

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

----
Also see AdvancedOptions
<<tiddler HideTiddlerTitle>> <<tiddler HideTiddlerSubtitle>> <<tiddler HideTiddlerTags>>
!Call For Proposal / 徵求提案
今年的大會,我們希望能讓更多開放原始碼的同好參與,因此請各位社群先進,不論是您自己想要上來露個臉介紹自己的經驗,或是您希望 [[COSCUP]] 籌委邀請哪一位講者來介紹哪個議題,都請聯絡我們 (請聯絡 2007cfp at coscup.org)。

今年 [[COSCUP]] 的議程範圍如下 (包括, 但不限於):
*嵌入式平台 (Embedded Platform)
*文件管理系統 (Content Management System)
*中文相關 (Chinese Language Related)
*發掘本土隱性 OSS 專案 (Local Projects without Promotion)
*開放源碼之桌面工具或綠色軟體 (Open Sourced Desktop Tools / Greenware)
*網站相關架構 (Web-Oriented Architecture)
*新技術介紹 (State-of-the-art)
*地區性社群活動 (Regional Community Activities)
*國際社群交流 (International Community Cooperation)
*其他與開放原始碼相關議題 (Other Open-Source Related Topics)
所有接受的議題,在正式議程中,每個講者預計有 20 分鐘的介紹時間(將依實際安排細節稍作調整),而閃電秀 (Lightning Talk)時間會比較短。
 <<tiddler HideTiddlerSubtitle>> <<tiddler HideTiddlerTitle>> <<tiddler ReplaceDoubleClick>> <<tiddler HideTiddlerTags>>
!* 時間:2007 年 11 月 3 日(六)- 11 月 4 日(日)
!* 地點:台北市和平東路 2 段 106 號 科技大樓 二樓
!Main Theme / 大會宗旨
傳統商業軟體的開發者(coders)和使用者(users)很少交流,是大家都接受的事實。你的軟體用起來有問題?請打技術支援電話,由客服人員為你服務,他或許已經儘其所能,但未必能解決你的問題。如果問題是軟體的臭蟲,你只好痴痴地等待不知幾年後才開賣的下一版。而你當初之所以選用A軟體而不是B軟體,常常是聽信銷售員(sales)的一面之詞或同儕的推薦。在這個行為模式下,users 面對的是銷售員和客服,coders 面對的還是銷售員和客服,users 遇到的問題要間接地才能反應到 coders 手上,中間還可能會被過濾掉。

Open source 這個在 1998 年出現的名詞,大家早已耳熟能詳。這種在網路上已經進行二三十年的軟體開發模式之所以能成功,有許多原因,其中一個極為關鍵的因素,就是 coder-user 的直接接觸。無屏障的交流形成了問題的快速回報和修補機制,而當這個機制被網路效應放大到極限時,Linus 定律就出現了:《臭蟲難逃眾人法眼》(With enough eyeballs, all bugs are shallow),軟體品質因此顯著提昇。在 open source 的模式中,coders 和 users 中間的人不再是銷售員或客服,而是讓軟體更容易被 users 接受的推廣者(promoters),他們打包套件讓軟體更好裝、寫說明文件讓軟體更易學、辦推廣活動讓軟體被更多人接觸到、在網路上回答問題解決使用者的疑惑,而且不會把 coders 藏在背後產生資訊的不對稱。

Coders、users 和 promoters 是讓 open source 軟體發光發熱的支柱,所以我們的 open source 研討會是專為這三種人舉辦的。你可以是 A 軟體的 coder、B 軟體的 promoter、C 軟體的 user。不論你是已經踏入 open source 領域,還是一直站在門口不知如何入門,歡迎你來參加 COSCUP - Conference for Open Source Coders, Users and Promoters!

今年的 [[COSCUP]] 最大的改變,是由各台灣本地社群共同舉辦,也希望能透過這樣的合作,增加社群同好的參與度,正如 [[COSCUP]] 的精神,在這個研討會當中,你同時是與會者,推廣者,也參與了大會的運作。

* 誰應該參加:寫 open source 軟體的開發者、熱衷 open source 軟體的推廣者、熟悉 open source 軟體的使用者、想了解 open source 軟體的新手。
<<tiddler HideTiddlerTitle>> <<tiddler HideTiddlerSubtitle>> <<tiddler ReplaceDoubleClick>> <<tiddler HideTiddlerTags>>
!Important Dates / 重要日程
*2007/7/15  - 徵求參與建議
*2007/9/1   - 收件截止
*2007/9/15  - 宣布入選名單, 並排定初步議程
*2007/10/初 - 初步議程公告 (未定, 待更新)
*2007/10/31 - 收齊講者文稿
*2007/11/3-11/4 - COSCUP 2007 大會
[[COSCUP]]
[[Program]]
 <<tiddler HideTiddlerTitle>> <<tiddler HideTiddlerSubtitle>> <<tiddler ReplaceDoubleClick>> <<tiddler HideTiddlerTags>>
!講者/摘要
!!文字資訊處理
本座談將以「update 進況+討論未來發展」為主。
像 gcin 社群經營有成,OpenVanilla 正在思考轉型,也確實在蛻變中,但中文資訊處理絕不只有輸入法而已(或者說,輸入法隨著幾個 framework 成熟,已經是比較被解決的問題了)。
去年開始因為 Magic Designer 等朋友的努力,組字又再被注意,酷音詞庫計劃,也重新挖掘出社群的力量(Web 2.0?? 但也發現了社群的限制?)這些也是 pcchen 有興趣的地方 -- 如何利用社群力量開發新的輸入法(本土語言,例如 andrew/arne 在做的事),b6s 應該也能來談一談「中文」輸入在兩岸不管 open source 還是商業界的力量消長與局勢變化。
主題還是會放在,open source 中文資訊處理社群,能怎麼繼續經營,會面臨什麼樣的挑戰以及怎麼找尋出路(特別是在台灣這樣的地方),台灣的 developer 的中文經驗能對世界的 open source community 做出什麼樣的貢獻,(舉例: OpenVanilla 與緬甸文輸入法開發者的交流)。

!Linux based Laptop 與社群
近日來 EeePC 及 OLPC 相關話題不斷,兩大開源筆電平台的技術團隊將首度面對面,相信將能促成進一步的合作,或是引爆更深一層的話題!(本議程以英文進行)
*Ellis Wang: Asus Eee PC Ecosystem Enabling & Development Programs
**Asus Eee PC is a new line of <html>PCs</html> that focuses on providing users with the most comprehensive Internet application based on three Es: Easy to learn, work, play; Excellent Internet experience and Excellent on the go, and hence the product name of Eee PC. In this talk, he will cover Asus Eee PC Ecosystem Enabling & Development Programs , like How Eee PC to engage with SW Partners and Tiers & What Does Eee PC Development Program Do. And he also will compare Asus Eee PC desktop with other hot laptop Linux distributions from a user's perspective and a coder's perspective.  For Eee PC reference:  https://eeepc.asus.com/en/
**Ellis Wang is the SW lead of Eee PC. He has been thirteen-year experiences on system software products planning, development and engineering. The areas he more focuses on are triple-play IP communications and PC Centrex-based applications. Ellis studies Speech Recognition, Natural Language Grammar Processing & <html>Text-to-Speech</html> algorithms & technologies at National Cheng Kung University. He can be reached by e-mails:  ellis_wang@asus.com.tw  or ellis_wang@msn.com.
*Mike Fletcher: One Laptop Per Child
**The One Laptop Per Child project is a non-profit group attempting to provide access to the intellectual and social resources of the world to children who would otherwise be without.  To make this happen it has produced an inexpensive laptop designed explicitly for the needs of young learners, combining an innovative hardware design with novel software and content.  It has also, to some extent, pushed the idea of inexpensive computers to the forefront.  As we see more and more laptops approaching developing-world price-points, we must act to avoid duplicating effort and to increase the value of these projects as educational tools.
**Mike Fletcher is responsible for "Developer Relations" for the One Laptop Per Child project. He runs his own small consulting company as well as a number of Open Source projects, including the standard Python binding to OpenGL.  Mike studied Design Epistemology at the University of Waterloo, focusing on applying design theory to the problem of educating designers. Along the way he picked up Virtual Reality as a minor and spent the bulk of the first Internet boom working on a desktop virtual reality environment.

!!大規模運算
電腦、頻寬、儲存設備越來越便宜,我們對問題的胃口越來越大,不知不覺地,科學界已經玩到全球連線的網格計算(Grid Computing),讓基因定序、新藥搜尋、天文學、粒子物理都可以一次用上千台散在世界各地的電腦共同計算一個問題。
在此同時,Web 的指數式成長,也讓各大搜尋引擎必須跟上腳步,才能在最短的時間裡,計算出上億個網頁對各個搜尋關鍵字的重要性。這要怎麼做?當然也是需要 N 台電腦來計算。最近 Google 和 IBM 合作要在校園裡推動的 Cloud Computing,就是這種技術。
想像一下,如果可以讓上千上萬台電腦一起來解你手上的計算問題,讓本來要一個月才跑完的程式,不到一個小時就算完了,那不是太酷了嗎?這背後的技術是什麼?該如何改寫程式才能用到這樣的計算能力?
為此,我們請了中央研究院的李宏春和 Google 的 Christophe Bisciglia 來 COSCUP 告訴大家,他們開發了/用了哪些 open source 的軟體來達成 Grid Computing 和 Cloud Computing。什麼?不用買上百萬元的商業軟體就可以擁有這種高超的技術?沒錯!你所需要的,只是熱誠的學習精神。想一窺門徑,就來參加大規模運算的議程。
(本議程以英文進行)
*李宏春: Open Source Tools for Grid Application Development
**This talk will be an introduction of the 3 open source developments in the grid world: GANGA, DIANE and AMGA, focusing on how they are utilized in different application domain in addressing the issues of the scientific grid computing.
*Christophe Bisciglia: Cluster Computing: Why it's happening, why it's important and why open source adds value.
**Fundamental changes in the computing architecture are changing the way large technology providers think about large scale computing. Moore's law is no longer making processors faster, but rather, increasingly parallel. Companies like Google have been dealing with this for several years, but the time has come for the rest of the tech industry and academia to embrace and adapt to this change. This creates a unique opportunity to advance open source tools such as Apache's Hadoop Project. In this talk, I will describe the changes taking place, how they effect software design, and what tools exist to leverage the benefits derived from large scale clusters.
**Christophe Bisciglia: Christophe is a senior engineer at Google and a visiting scientist at the University of Washington (Computer Science and Engineering Department). He graduated from UW CSE in 2003 and started working with Google's search quality team on internationalization and personalization systems. Since then, he has spearheaded a partnership between Google, IBM, UW and several other universities to facilitate teaching large scale computing to undergraduates. The most recent development is the Google/IBM Academic Cluster Computing Initiative which provides access to a large scale cluster for academic use.

!!Web 式平台
Web 2.0 的熱潮持續不退,而 SOA 的概念又將 Web 平台提升至另一個高峰,就算猜測未來十年是 Web 的時代也不為過;而在 Web 2.0 時代中,除了 blog / wiki / CMS (內容管理系統) 等常見的平台之外,還有許多在幕後默默支持這些系統成功的工具。今年我們邀請了 kevinwatt 與大家分享搜尋引擎的開發經驗, 也請知名的 clkao 長輩來跟大家介紹他怎麼用 Jifty 從事商業行為,最特別的是我們也邀請了 xportal 的作者來介紹這套完全自行開發的本土 Portal 平台。

!!開放組織新人秀
2006-2007 對台灣的開放源碼界來說,可真是百花齊放的一年!除了 Wikipedia 年會來台舉辦,引發一波維基熱,並成立了中華民國維基媒體協會;Mozilla 亦將成立社團法人台灣摩茲協會;此外本土社群 TOSSUG 及 StudyArea 都有一些想要推動的工作,也發現需要一個貼近社群的法人來處理捐贈和稅務的問題,因此社群朋友開始構思要成立新的法人;ICOS 之外的台灣兩大開放源碼社群活動 COSCUP 及 OSDC.tw 也將分別闡述近年活動成果及未來展望。本場次邀請到台灣第一個開放源碼法人 SLAT 暨 ICOS 承辦單位的大家長何建明老師主持。

!!BSD
BSD 一直是在開放源碼作業系統當中,和 Linux 站在兩邊的另一人,當 Linux 以各種 Distribution 散佈並走紅的同時,BSD 則站在各大商業平台的背後默默的支持;而台灣地區 BSD 圈子裡的知名人物,通常都在網路或技術社群中同時具有其他重要的角色。在 FreeBSD 7.0 版即將推出的同時、且讓這些平常只會只聞其名不見其人的長輩們來聊聊新玩意兒。

!!嵌入式系統
嵌入式系統開發者採用 Open Source 軟體、尤其是 embedded linux 已行之有年;其他使用 linux 作為核心系統的設備如路由器、無線基地台、手機、NAS 等產品,在全球市場上已有不小的佔有率。台灣的 IT 廠商一向有極強的製造能力,在這波結合硬體和 open source 軟體的浪潮中,也沒有缺席;他們開發了許多產品,也培養了不少 linux 核心和驅動程式的第一線高手。
台灣的 IT 廠商和 open source 社群之間向來甚少交流。這次舉辦嵌入式系統的議程,希望能讓平常在各 IT 公司工作的工程師共聚一堂,分享在即時性作業系
統、網路設備、顯示等等領域的成果,提升彼此的技術實力。
自從 OpenMoko 這個以「從裡到外完全 open source 的手機平台」為願景的專案成形以來,全球各 open source 社群對它投射了極度的關注。由大眾電腦鼎力支持並提供硬體的 OpenMoko 專案,今年也將來 COSCUP 介紹他們的平台。
去年底由世界知名網路藝術家鄭淑麗和國內 open source 社群合作的作品 porta2030 讓許多人接觸到了 OpenWrt 這個架在 linux 核心上的 firmware 系
統,以及和 mesh network 有關的技術,還促成社群中的一位學生在今年暑假遠赴柏林和當地的 mesh network 高手實習。這次也有不少 OpenWrt 和 mesh network 相關的演講。
*Jim Huang (黃敬群),網路暱稱為 "jserv",目前服務於無線通訊產業。閒暇時投入若干項自由軟體開發,不排斥任何作業系統,並以研究其核心設計與實作為樂。興趣為分散式運算、嵌入式系統、多媒體處理效能最佳化、物件導向設計與分析、社會主義、電腦圖學,以及多國語文處理等。
** homepage: https://jserv.sayya.org/ blog: https://blog.linux.org.tw/jserv/
**議程摘要:延續 Orz Microkernel 的想法,設計新的作業系統也可以相當有趣,以實體的機器人設計作為主軸,體驗如何親手打造嵌入式系統並著手設計相關的軟硬體建設,預計有:
*** 從零到有,設計 Embedded RTOS
*** 針對嵌入式環境與機器人自動控制需求,對 RTOS 作系統調整
*** 善用 GNU Toolchain 與諸多自由軟體,加速開發與系統偵錯
**擺脫學院派繁瑣的細節,本議程以「快快樂樂」的角度切入,期望與會者對嵌入式系統設計有不同的看法。
*Joseph Ku (古傑芳)
**個人簡介:
***網虎國際 軟體工程師
***美商InterVideo 資深軟體工程師
***凱太數位 技術總監
**講題摘要:
***Framebuffer
***Framebuffer In Linux
***Disaster of Linux Desktop Development
***DirectFB

!!閃電秀
!!!周蟒 (zhpy)  -- 中文 python 程式語言
周蟒(zhpy)是全功能的中文 python 程式語言替身,透過周蟒可以使用繁簡中文關鍵字/參數/變數來學習和編寫程式。周蟒是友善、易於學習而強大的中文程式語言,期望成為台灣/中國人首選的程式入門教學工具。
周蟒檔案小(核心 <10k),易於安裝、跨平台、附命令行工具與互動式直譯器,採用 Python 語言清晰可讀的語法,直觀的物件導向能力,方便的動態物件類型等特性。周蟒程式可以與 python 程式無縫轉換。在降低學習程式門檻的同時,也適合橋接英文程式語言學習。
周蟒提供互動直譯器,中文系統腳本,與 python 程式雙向轉換,編譯器等功能。
*zhpy 網站: https://code.google.com/p/zhpy/
*gasolin, zhpy 作者,  google pythontw group 管理者, TurboGears WebFramework contributor.
!!!OV hack
* 慶祝 OV [[三歲生日|//lukhnos.org/blog/zh/archives/560]], 一切 [[盡在不言中|//www.flickr.com/photos/lukhnos/1712179502/]]
/***
|Name|DisableWikiLinksPlugin|
|Source|//www.TiddlyTools.com/#DisableWikiLinksPlugin|
|Version|1.5.0|
|Author|Eric Shulman - ELS Design Studios|
|License|//www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|//creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Tiddler.prototype.autoLinkWikiWords, 'wikiLink' formatter|
|Description|selectively disable TiddlyWiki's automatic ~WikiWord linking behavior|

This plugin allows you to disable TiddlyWiki's automatic ~WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links.  To create a tiddler link when automatic linking is disabled, you must enclose the link text within {{{[[...]]}}}.

You can block automatic WikiWord linking behavior for any specific tiddler by ''tagging it with<<tag excludeWikiWords>>'' (see configuration below) or, check a plugin option to disable automatic WikiWord links to non-existing tiddler titles, while still linking WikiWords that correspond to existing tiddlers titles or shadow tiddler titles.  You can also block specific selected WikiWords from being automatically linked by listing them in [[DisableWikiLinksList]] (see configuration below), separated by whitespace.  This tiddler is optional and, when present, causes the listed words to always be excluded, even if automatic linking of other WikiWords is being permitted.

Note: WikiWords contained in default ''shadow'' tiddlers will be automatically linked unless you select an additional checkbox option lets you disable these automatic links as well, though this is not recommended, since it can make it more difficult to access some TiddlyWiki standard default content (such as AdvancedOptions or SideBarTabs)

!!!!!Configuration
<<<
Self-contained control panel:
<<option chkDisableWikiLinks>> Disable ALL automatic WikiWord tiddler links
<<option chkAllowLinksFromShadowTiddlers>> ... except for WikiWords //contained in// shadow tiddlers
<<option chkDisableNonExistingWikiLinks>> Disable automatic WikiWord links for non-existing tiddlers
Disable automatic WikiWord links for words listed in: <<option txtDisableWikiLinksList>>
Disable automatic WikiWord links for tiddlers tagged with: <<option txtDisableWikiLinksTag>>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''DisableWikiLinksPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2006.06.09 [1.5.0]'' added configurable txtDisableWikiLinksTag (default value: "excludeWikiWords") to allows selective disabling of automatic WikiWord links for any tiddler tagged with that value.
''2006.12.31 [1.4.0]'' in formatter, test for chkDisableNonExistingWikiLinks
''2006.12.09 [1.3.0]'' in formatter, test for excluded wiki words specified in DisableWikiLinksList
''2006.12.09 [1.2.2]'' fix logic in autoLinkWikiWords() (was allowing links TO shadow tiddlers, even when chkDisableWikiLinks is TRUE).
''2006.12.09 [1.2.1]'' revised logic for handling links in shadow content
''2006.12.08 [1.2.0]'' added hijack of Tiddler.prototype.autoLinkWikiWords so regular (non-bracketed) WikiWords won't be added to the missing list
''2006.05.24 [1.1.0]'' added option to NOT bypass automatic wikiword links when displaying default shadow content (default is to auto-link shadow content)
''2006.02.05 [1.0.1]'' wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
''2005.12.09 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
version.extensions.disableWikiLinks= {major: 1, minor: 5, revision: 0, date: new Date(2007,6,9)};

if (config.options.chkDisableNonExistingWikiLinks==undefined) config.options.chkDisableNonExistingWikiLinks= false;
if (config.options.chkDisableWikiLinks==undefined) config.options.chkDisableWikiLinks=false;
if (config.options.txtDisableWikiLinksList==undefined) config.options.txtDisableWikiLinksList="DisableWikiLinksList";
if (config.options.chkAllowLinksFromShadowTiddlers==undefined) config.options.chkAllowLinksFromShadowTiddlers=true;
if (config.options.txtDisableWikiLinksTag==undefined) config.options.txtDisableWikiLinksTag="excludeWikiWords";

// find the formatter for wikiLink and replace handler with 'pass-thru' rendering
initDisableWikiLinksFormatter();
function initDisableWikiLinksFormatter() {
	for (var i=0; i<config.formatters.length && config.formatters[i].name!="wikiLink"; i++);
	config.formatters[i].coreHandler=config.formatters[i].handler;
	config.formatters[i].handler=function(w) {
		// supress any leading "~" (if present)
		var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;
		var title=w.matchText.substr(skip);
		var exists=store.tiddlerExists(title);
		var inShadow=w.tiddler && store.isShadowTiddler(w.tiddler.title);

		// check for excluded Tiddler
		if (w.tiddler && w.tiddler.isTagged(config.options.txtDisableWikiLinksTag))
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }

		// check for specific excluded wiki words
		var t=store.getTiddlerText(config.options.txtDisableWikiLinksList)
		if (t && t.length && t.indexOf(w.matchText)!=-1)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }

		// if not disabling links from shadows (default setting)
		if (config.options.chkAllowLinksFromShadowTiddlers && inShadow)
			return this.coreHandler(w);

		// check for non-existing non-shadow tiddler
		if (config.options.chkDisableNonExistingWikiLinks && !exists)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }

		// if not enabled, just do standard WikiWord link formatting
		if (!config.options.chkDisableWikiLinks)
			return this.coreHandler(w);

		// just return text without linking
		w.outputText(w.output,w.matchStart+skip,w.nextMatch)
	}
}

Tiddler.prototype.coreAutoLinkWikiWords = Tiddler.prototype.autoLinkWikiWords;
Tiddler.prototype.autoLinkWikiWords = function()
{
	// DEBUG alert("processing: "+this.title);
	// if all automatic links are not disabled, just return results from core function
	if (!config.options.chkDisableWikiLinks)
		return this.coreAutoLinkWikiWords.apply(this,arguments);
	return false;
}
//}}}
/%
|Name|HideTiddlerTags|
|Source|//www.TiddlyTools.com/#HideTiddlerTags|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|//www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|//creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's tagged/tagging display elements|

Usage: <<tiddler HideTiddlerTags>>

%/<script>
	var t=story.findContainingTiddler(place);
	if (t && t.id!="tiddlerHideTiddlerTags")
		for (var i=0; i<t.childNodes.length; i++)
			if (hasClass(t.childNodes[i],"tagging")||hasClass(t.childNodes[i],"tagged"))
				t.childNodes[i].style.display="none";
</script>
/%
|Name|HideTiddlerTitle|
|Source|//www.TiddlyTools.com/#HideTiddlerTitle|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|//www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|//creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's title display elements (name, dates, and author)|

Usage: <<tiddler HideTiddlerTitle>>

%/<script>
	// get the tiddler element
	var t=window.story.findContainingTiddler(place);
	if (t && t.id!="tiddlerHideTiddlerTitle")
		for (var i=0; i<t.childNodes.length; i++)
			if (hasClass(t.childNodes[i],"title")||hasClass(t.childNodes[i],"subtitle"))
				t.childNodes[i].style.display="none";
</script>
/%
|Name|HideTiddlerToolbar|
|Source|//www.TiddlyTools.com/#HideTiddlerToolbar|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|//www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|//creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's toolbar display|

Usage: <<tiddler HideTiddlerToolbar>>

%/<script>
	var t=story.findContainingTiddler(place);
	if (t && t.id!="tiddlerHideTiddlerToolbar")
		for (var i=0; i<t.childNodes.length; i++)
			if (hasClass(t.childNodes[i],"toolbar"))
				t.childNodes[i].style.display="none";
</script>
/***
|Name|InlineJavascriptPlugin|
|Source|//www.TiddlyTools.com/#InlineJavascriptPlugin|
|Version|1.6.0|
|Author|Eric Shulman - ELS Design Studios|
|License|//www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|//creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|

''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Usage
<<<
When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.

''Deferred execution from an 'onClick' link''
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.  You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text

''External script source files:''
You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}).  This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins.  The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.

''Display script source in tiddler output''
By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.

''Defining javascript functions and libraries:''
Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed.  Thus, you cannot load a library and //immediately// use it's functions within the same tiddler.  However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).

To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened.  For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.

Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines.  Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.

''Creating dynamic tiddler content''
An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.

If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display.  For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.

//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler.  To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//

''Accessing the ~TiddlyWiki DOM''
The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.

Access to this DOM element allows you to create scripts that can:
* vary their actions based upon the specific location in which they are embedded
* access 'tiddler-relative' information (use findContainingTiddler(place))
* perform direct DOM manipulations (when returning wikified text is not enough)
<<<
!!!!!Examples
<<<
an "alert" message box:
><script show>
	alert('InlineJavascriptPlugin: this is a demonstration message');
</script>
dynamic output:
><script show>
	return (new Date()).toString();
</script>
wikified dynamic output:
><script show>
	return "link to current user: [["+config.options.txtUserName+"]]";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
   if (!window.story) window.story=window;
   var title=story.findContainingTiddler(place).id.substr(7);
   return title+" is using "+store.getTiddlerText(title).length+" bytes";
</script>
creating an 'onclick' button/link that runs a script:
><script label="click here" title="clicking this link will show an 'alert' box" show>
   if (!window.story) window.story=window;
   alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
</script>
loading a script from a source url:
>//www.TiddlyTools.com/demo.js contains:
>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
><script src="demo.js" show>
	return "loading demo.js..."
</script>
><script label="click to execute demo() function" show>
	demo()
</script>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.02.19 [1.6.0]'' added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
''2006.10.16 [1.5.2]'' add newline before closing '}' in 'function out_' wrapper.  Fixes error caused when last line of script is a comment.
''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
''2006.01.05 [1.4.0]'' added support 'onclick' scripts.  When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked.  'place' value is set to match the clicked button/link element.
''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString().  Fixed error reporting so IE shows the correct response text.  Based on a suggestion by UdoBorkowski
''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content.  Based on a suggestion by BradleyMeck
''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access
''2005.11.08 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
version.extensions.inlineJavascript= {major: 1, minor: 6, revision: 0, date: new Date(2007,2,19)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",

	handler: function(w) {
		var lookaheadRegExp = new RegExp(this.lookahead,"mg");
		lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			if (lookaheadMatch[1]) { // load a script library
				// make script tag, set src, add to body to execute, then remove for cleanup
				var script = document.createElement("script"); script.src = lookaheadMatch[1];
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (lookaheadMatch[5]) { // there is script code
				if (lookaheadMatch[4]) // show inline script code in tiddler output
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (lookaheadMatch[2]) { // create a link to an 'onclick' script
					// add a link, define click handler, save code in link (pass 'place'), set link attributes
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
					link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
					link.code="function _out(place){"+lookaheadMatch[5]+"\n};_out(this);"
					link.setAttribute("title",lookaheadMatch[3]?lookaheadMatch[3]:"");
					link.setAttribute("href","javascript:;");
					link.style.cursor="pointer";
				}
				else { // run inline script code
					var code="function _out(place){"+lookaheadMatch[5]+"\n};_out(w.output);"
					code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
					try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
					if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
				}
			}
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
} )
//}}}
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.2|
|''Date:''|Jul 21, 2006|
|''Source:''|//www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
***/

//{{{
// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};

config.formatters.push(
{
	name: "legacyStrikeByChar",
	match: "==",
	termRegExp: /(==)/mg,
	element: "strike",
	handler: config.formatterHelpers.createElementAndWikify
});

} //# end of "install only once"
//}}}
<<tiddler HideTiddlerTitle>><<tiddler HideTiddlerSubtitle>><<tiddler ToggleRightSidebar>>
[[大會宗旨|COSCUP]]
[[大會議程|Program]]
[[講者/摘要|Detailed]]
[[合辦單位|ORG]]
[[徵求提案|CFP]]
[[重要日程|Dates]]
[[宣傳稿|Promotion]]
[[小貼紙|Stick]]
[[投影片|Slides]]
[[報名|REG]]
[[歷年活動|Past]]
    <html><b><a href=index_e.html><font color=#ffffff>    English</font></a></b></html>
<<tiddler HideTiddlerTitle>> <<tiddler HideTiddlerSubtitle>> <<tiddler ReplaceDoubleClick>> <<tiddler HideTiddlerTags>>
!Cooperating Organizations / 合辦單位
*[[TOSSUG|//wiki.tossug.org]]
*[[Study Area|//www.study-area.org]]
*[[KaLUG|//kalug.linux.org.tw]]
*[[Chupei.PM|//chupei.pm.org/]]
*[[Handlino 和多工作室|//handlino.com]]
*[[Zuso|//www.zuso.org.tw]]
*[[SLAT|//www.slat.org]]
<!--{{{-->
<div class='header'>
     <div class='gradient' macro='gradient vert #FFFFFF #FFFFFF '>
	<div class='titleLine' >
                <span class='searchBar' macro='search'></span>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
    </div>
</div>
<div id='bodywrapper'>
<div id='sidebar'>
	<div id='sidebarOptions' refresh='content' 	tiddler='SideBarOptions'></div>
	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
</div>
<div id='contentFooter' refresh='content' tiddler='contentFooter'></div>
</div>

<!--}}}-->
<<tiddler HideTiddlerTitle>> <<tiddler HideTiddlerSubtitle>> <<tiddler ReplaceDoubleClick>> <<tiddler HideTiddlerTags>>
!歷年活動
* [[COSCUP 2006|/2006/]]
* ICOS 2005 社群議程
* ICOS 2004 社群議程
* ICOS 2003 社群議程
* ICOS 2002 社群議程
* ICOS 2001 社群議程
* ICOS 2000
* OSW 1999
 <<tiddler HideTiddlerTitle>> <<tiddler HideTiddlerSubtitle>> <<tiddler ReplaceDoubleClick>> <<tiddler HideTiddlerTags>>
!Program / 大會議程
!!11/3 (Sat.)
| 時間 | 議程 | 講者 主題/與談人 |
|09:30-10:00| 報到 ||
|10:00-12:10| 文字資訊處理 |主持人: lukhnos<br>與談人<br>- 陳柏中 pcchen: 社群與台灣語文輸入法發展<br>- 姜天戩 b6s: 華語輸入法在各地的發展近況比較<br>- 張正一 magic designer: 動態組字與部件筆序<br>- 葉健欣 yap: 剎那搜尋|
|12:10-13:30| 午餐 ||
|13:00-14:30| Linux based Laptop 與社群 |主持人: 葉平<br>- Ellis Wang ([[ASUS|//www.asus.com/tw/]]): Asus Eee PC Ecosystem Enabling & Development Programs<br>- [[Mike Fletcher|//wiki.laptop.org/go/User:Mcfletch]] ([[OLPC|//laptop.org]]): One Laptop Per Child|
|14:30-14:40| 換場 ||
|14:40-16:10| 大規模運算 |主持人: Knight Feng<br>- 李宏春 ([[ASGC|//twgrid.org]]): Open Source Tools for Grid Application Development<br>- Christophe Bisciglia ([[Google|//google.com]]): Cluster Computing: Why it's happening, why it's important and why open source adds value.|
|16:10-16:30| 下午茶 ||
|16:30-17:30| Web 式平台 |主持人: ̣̣吳文熹(暫定)<br>- 高嘉良 clkao: How I build a business with jifty in 2 weeks<br>- 焉德葳 kevinwatt: ozearch<br>- 黃純沐 xportal: xportal|
|17:30-18:00| 閃電秀 |主持人: 劉康民 gugod<br>開放報名中<br>已報名講者: <br>- gasolin - zhpy<br>- #osxchat op - OV hack<br>- 李健秋 AndrewLee - Debian For Begineers<br>- 李圭烽 Thinker: ajaxmind & mez_xml|
|18:00-21:00| <html>BoF</html> |[[Open Topic, Open For Register at https://coscup.wikidot.com/ |//coscup2007.wikidot.com/]] |
!!11/4 (Sun.)
| 時間 | 議程 | 講者 主題/與談人 |
|09:10-10:40| 開放組織新人秀 |主持人: 中華民國軟體自由協會 SLAT 何建明 理事長<br>講者/與談人:<br>- 葉平: TOSSUG<br>- 梁楓 lman: Study Area<br>- 鄧傑 (虎兒): Wikipedia<br>- 趙柏強 Bob Chao: moztw<br>- 馮正青 Knight Feng: COSCUP<br>- 簡信昌 hcchien: OSDC.tw|
|10:50-12:00| BSD |主持人: 廖英傑 ijliao / 吳建達 slzzp<br>- 黃青山 chinsan: A quick tutorial for <html>FreeBSD</html> Documentation Project using Docbook/SGML<br>- 梁泰華 avatar: ZFS on <html>FreeBSD</html>: A Quick Tutorial<br>- rafan: 駕馭 ports|
|12:00-13:00| 午餐 ||
|13:00-15:00| 嵌入式系統 #1 |主持人: 李圭烽 (thinker)<br>講者:<br>- 黃敬群 jserv: 快快樂樂設計嵌入式即時作業系統<br>- 古傑芳 joseph: The <html>DirectFB</html> and I<br>- 陳俊宏 Jollen: OpenMoko 好好玩!|
|15:00-15:20| 下午茶 ||
|15:20-17:20| 嵌入式系統 #2 |主持人: 李世元 (FourDollars)<br>講者:<br>- 蔡志展 chihchun: mesh network on openwrt<br>- 林智斌 macpaul: port wifi router to openwrt<br>- 蔡政崇 wtsai: batman on openwrt|
<<tiddler HideTiddlerTitle>> <<tiddler HideTiddlerSubtitle>> <<tiddler ReplaceDoubleClick>> <<tiddler HideTiddlerTags>>
!News Release / 新聞稿
聯絡人:陳貴成 (kc@coscup.org)

開放源碼研討會 (ICOS) 及開源人年會 (COSCUP) 今年以聯合研討會的形式,將於 2007 年 11 月 1 日至 11 月 4 日於台北市科技大樓盛大舉辦。自 1999 年起即為台灣地區自由軟體界年度盛事的 ICOS,與全台最大開放源碼社群聚會的 COSCUP 共同舉辦,同時結合國科會自由軟體期末成果展,將讓本聯合研討會成為今年度自由軟體/開放源碼界的大型嘉年華會!

在各國政府陸續採用自由軟體的同時,台灣有哪些對應措施?微軟在歐洲的逆境與在台灣的相對強勢,我們又該如何看待?在本研討會中,台灣的資訊政策主導機關將針對自由軟體政策進行說明外,我們也邀請台灣微軟與台灣網威針對其令自由軟體圈爭議的合作進行說明!希望藉此能在自由軟體商業市場上,協助台灣廠商尋求一片新藍海。

開放源碼的軟體和技術,已經滲透到世界各角落和各個領域。今年的聯合研討會將涵蓋 Web、低價筆記型電腦、嵌入式系統、大規模運算、中文資訊處理等技術議題,並請到各領域的開發者、使用者及社群人士到現場交流。

開放源碼一向是 Web 背後的重要推手,部落格 (blog) 及維基 (wiki) 等開源系統在 Web 2.0 的熱潮中扮演極重要的角色,而 FireFox 更是全球最知名的開放源
碼瀏覽器,今年將且時從伺服器和用戶兩端來討論相關的新技術。

近日來兩個採用開放源碼的低價筆電 EeePC 及 OLPC 相關話題不斷,兩大技術團隊將在本次研討會中首度面對面,相信將能促成進一步的合作。

全球開源社群對開源手機平台 OpenMoko 的極度關注,將近年嵌入式平台的開發議題推向另一個高點,今年嵌入式開源軟體是研討會的一大重點,OpenMoko 及相關嵌入式平台的開發者將介紹各式嵌入式系統的開源軟體。

Google、Yahoo 等網路服務的成功和網格運算的崛起,使得以開放源碼打造巨大叢集的技術成為近年的顯學之一,Google 和中央研究院將介紹他們開發的技術。

今年台灣社群有了中文動態組字及搜尋等生力軍加入,對於中文未來在電腦上的發展可望有不小的衝擊。

除了政策和技術議題之外,對於開放源碼在教育、商業及非營利組織的應用,也請講者來談採用開放源碼的經驗,尤其是在網路上的應用,相信能協助各企業及非營利組織更進一步了解如何有效使用開放源碼軟體。

大會網址:
  ICOS: https://2007.icos.org.tw/
  COSCUP: https://coscup.org/

聯合研討會報名網頁: https://coscup.org/2007/#REG

!Promotion / 宣傳稿
!!!COSCUP 開源人年會
Coders、users 和 promoters 是讓 open source 軟體發光發熱的支柱,社群同好在相關的領域中的貢獻,讓 open source 軟體更趨成熟。每年一次的開源人年會,是專為這三種人舉辦的。你可以是 A 軟體的 coder、B 軟體的 promoter 或是 C 軟體的 user。不論你是已經踏入 open source 領域,還是一直站在門口不知如何入門,又或者你是圈子裡的長輩,我們都竭誠歡迎你來參加 COSCUP - Conference for Open Source Coders, Users and Promoters!

今年的 COSCUP 開源人年會與 ICOS 聯合舉辦,讓一年一度的自由軟體界盛事更為盛大。而今年的 COSCUP 最大的改變,是由各台灣本地社群共同舉辦,也希望能透過這樣的合作,增加社群同好的參與度,正如 COSCUP 的精神,在這個研討會當中,你同時是與會者,推廣者,也參與了大會的運作。

今年 COSCUP 的重點,因 Web 2.0 及 OLPC 等發燒話題,因而排入了許多與 Web 平台及嵌入式系統的相關議題,而中文議程、閃電秀及系統議程則是歷年來聽眾有興趣的重頭戲。此外今年因各大開放源碼相關法人陸續成立,也提供了一個機會讓各法人可以交流。

議程內容精彩絕倫、除了邀請到社群重量級前輩、我們也希望藉由發掘本土隱性OSS 專案,找到更多的參與者,讓大家有機會在這個場合中擦出更多的火花。

!!!COSCUP Conference for Open Source Coders, Users and Promoters
Coders, users and promoters are the backbone for brightening Open Source softwares, and communities contribute in related fields mature open source softwares. COSCUP is for this 3 kinds of persons. You can be the coder of A software, promoter of B software or the user of C software. No matter you are already in the circle of open source, just wait outside and see what's happened, or you contribute a lot in the area, you are all welcome to be with us in COSCUP - Conference for Open Source Coders, Users and Promoters!

COSCUP 2007 is a joint conference of ICOS (International Conference on Open Source), to make the open source carnival more exciting. The mostly change of COSCUP in 2007 is, the conference is co-organized by all local communities in Taiwan, we hope to enlarge the participation of local communities during such kind of cooperation. Just like the spirit of COSCUP, in this conference, you can be both attendee and promoter, and also involve the operation of the conference.

The major topics in COSCUP 2007 including web-based platform and embedded system due to the popularity of Web 2.0 and OLPC; the Chinese session, Lightning Talk and System session are the most interesting topics for years. However, lots of non-profit organizations become activated, there's also a session for these new organizations to expose and communicate to each other.

The program is attractive just like before, we invite not only big ones in the community but also developers of non-famous local OSS projects, to get more people involved and make OSS more brilliant in Taiwan.
<<tiddler HideTiddlerTitle>> <<tiddler HideTiddlerSubtitle>> <<tiddler ReplaceDoubleClick>> <<tiddler HideTiddlerTags>>
!Registration / 報名
本年度 COSCUP 與 ICOS 為聯合研討會, 請至 [[ICOS 報名系統|//www.slat.org/icos2007/index.php?option=com_attend_events&task=view&id=1&Itemid=0]] 報名, 並請務必點選您想要參加的議程以利統計場次及人數.
!!* [[ICOS 報名系統|//www.slat.org/icos2007/index.php?option=com_attend_events&task=view&id=1&Itemid=0]]
/%
|Name|ReplaceDoubleClick|
|Source|//www.TiddlyTools.com/#ReplaceDoubleClick|
|Version|2.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|//www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|//creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides|tiddler background click and doubleclick handlers|
|Description|disable doubleclick-to-edit-tiddler or replace doubleclick with shift/ctrl/alt+singleclick|

Usage:
	in tiddler content:
		<<tiddler ReplaceDoubleClick>> or
		<<tiddler ReplaceDoubleClick with: key trigger>>
	in ViewTemplate:
		<span macro="tiddler ReplaceDoubleClick"></span> or
		<span macro="tiddler ReplaceDoubleClick with: key trigger"></span>
where:
	'key' (optional) is one of: none (default), ctrl, shift, or alt
	'trigger' (optional) is one of: click, doubleclick (default)

* if no key parameter (or "none") is specified, then the double-click action is **disabled** for that tiddler.
* if a key (other than none) is specified, the doubleclick action for the tiddler will only be invoked
	when the key+trigger combination is used.
* note: double-clicking will also trigger the single-click handler.  As a result, when 'click' option is specified,
	either click OR double-click (plus the specified key) will trigger the action.

Revision History:
2.0.0 renamed from ShiftClickToEdit and merged with DoubleClickDisable and added support specifiying alternative key+click combination

%/<script>
	var here=story.findContainingTiddler(place); if (!here) return;
	if (here.ondblclick) {
		here.setAttribute("editKey","none");
		if ("$1"=="shift" || "$1"=="ctrl" || "$1"=="alt")
			here.setAttribute("editKey","$1"+"Key");
		var trigger=("$2"=="click")?"onclick":"ondblclick";
		here.save_dblclick=here.ondblclick;
		here.ondblclick=null;
		if (here.getAttribute("editKey")!="none")
			here[trigger]=function(e) {
				var ev=e?e:window.event;
				if (ev[this.getAttribute("editKey")])
					this.save_dblclick.apply(this,arguments);
			}
	}
</script>
<<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
/***
This CSS by DaveBirss.
***/
/*{{{*/


.tabSelected {
 background: #fff;
}

.tabUnselected {
 background: #eee;
}

#sidebar {
 color: #000;
 background: transparent;
}

#sidebarOptions {
 background: #fff;
}

#sidebarOptions input {
	border: 1px solid #ccc;
}

#sidebarOptions input:hover, #sidebarOptions input:active,  #sidebarOptions input:focus {
	border: 1px solid #000;
}

#sidebarOptions .button {
 color: #999;
}

#sidebarOptions .button:hover {
 color: #000;
 background: #fff;
 border-color:white;
}

#sidebarOptions .button:active {
 color: #000;
 background: #fff;
}

#sidebarOptions .sliderPanel {
 background: transparent;
}

#sidebarOptions .sliderPanel A {
 color: #999;
}

#sidebarOptions .sliderPanel A:hover {
 color: #000;
 background: #fff;
}

#sidebarOptions .sliderPanel A:active {
 color: #000;
 background: #fff;
}

.sidebarSubHeading {
 color: #000;
}

#sidebarTabs {`
 background: #fff
}

#sidebarTabs .tabSelected {
 color: #000;
 background: #fff;
 border-top: solid 1px #ccc;
 border-left: solid 1px #ccc;
 border-right: solid 1px #ccc;
 border-bottom: none;
}

#sidebarTabs .tabUnselected {
 color: #999;
 background: #eee;
 border-top: solid 1px #ccc;
 border-left: solid 1px #ccc;
 border-right: solid 1px #ccc;
 border-bottom: none;
}

#sidebarTabs .tabContents {
 background: #fff;
}


#sidebarTabs .txtMoreTab .tabSelected {
 background: #fff;
}

#sidebarTabs .txtMoreTab .tabUnselected {
 background: #eee;
}

#sidebarTabs .txtMoreTab .tabContents {
 background: #fff;
}

#sidebarTabs .tabContents .tiddlyLink {
 color: #999;
 border:none;
}

#sidebarTabs .tabContents .tiddlyLink:hover {
 background: #fff;
 color: #000;
 border:none;
}

#sidebarTabs .tabContents {
 color: #000;
}

#sidebarTabs .button {
 color: #666;
}

#sidebarTabs .tabContents .button:hover {
 color: #000;
 background: #fff;
}

#sidebar {color:#999;}
/*}}}*/
2007 COSCUP 開源人年會
[img[2007 COSCUP 開源人年會|071024_coscup_2007_logo.png]]
 <<tiddler HideTiddlerTitle>> <<tiddler HideTiddlerSubtitle>> <<tiddler ReplaceDoubleClick>> <<tiddler HideTiddlerTags>>
!Slides / 投影片
| 議程/Session | 講者/Speaker | Topic/主題 | License/授權 |
| 文字資訊處理 | 陳柏中 |社群與台灣語文輸入法發展 | |
| 文字資訊處理 | 姜天戩 |[[華語輸入法在各地的發展近況比較|Slides/CHT_IM.pdf]]|[[CC-BY-NC-SA|//creativecommons.org/]] |
| 文字資訊處理 | 張正一 |[[動態組字與部件筆序|Slides/CHT_dgg.zip]]<br>(解開 zip 後, 用 takahashi.xul?data=DGG_coscup07) |[[CC-BY-NC-ND-2.5 TW|//creativecommons.org/licenses/by-nc-nd/2.5/tw/]] |
| 文字資訊處理 | 葉健欣 |[[剎那搜尋|Slides/CHT_ksana.odp]]|[[CC-BY-SA-2.5 TW|//creativecommons.org/licenses/by-sa/2.5/tw/]]|
| Linux based Laptop<br>與社群 | Ellis Wang |Asus Eee PC Ecosystem Enabling<br>& Development Programs | |
| Linux based Laptop<br>與社群 | Mike Fletcher |One Laptop Per Child | |
| 大規模運算 | 李宏春 |Open Source Tools for Grid Application Development | |
| 大規模運算 | Christophe Bisciglia |Cluster Computing: Why it's happening,<br>why it's important and why open source adds value. | |
| Web 式平台 | 高嘉良 |[[How I build a business with jifty in 2 weeks|Slides/WBP_jifty.tgz]] |[[CC NC|//creativecommons.org/]] |
| Web 式平台 | 焉德葳 |[[ozearch|Slides/WBP_ozearch.odp]]|[[CC BY SA 2.5 TW|//creativecommons.org/licenses/by-sa/2.5/tw/]]|
| Web 式平台 | 黃純沐 |[[xportal|Slides/WBP_xportal.pdf]] |[[CC-BY-NC-ND-2.5 TW|//creativecommons.org/licenses/by-nc-nd/2.5/tw/]] |
| 開放組織新人秀 | 葉平 |TOSSUG | |
| 開放組織新人秀 | 梁楓 |Study Area | |
| 開放組織新人秀 | 鄧傑 |Wikipedia | |
| 開放組織新人秀 | 趙柏強 |moztw | |
| 開放組織新人秀 | 馮正青 |[[COSCUP|Slides/ORG_COSCUP.pdf]] |[[CC BSD|//creativecommons.org/licenses/BSD/]]|
| 開放組織新人秀 | 簡信昌 |[[OSDC.tw|Slides/ORG_OSDCtw.zip]] |[[CC-BY-NC|//creativecommons.org/]] |
| BSD | 黃青山 |[[A quick tutorial for FreeBSD Documentation Project using Docbook/SGML||Slides/BSD_fdp.odp]]|[[CC BY NC SA 3.0|//creativecommons.org/licenses/by-nc-sa/3.0/]]|
| BSD | 梁泰華 |[[ZFS on FreeBSD: A Quick Tutorial||Slides/BSD_zfs.pdf]] |[[CC BSD|//creativecommons.org/licenses/BSD/]]|
| BSD | rafan |[[駕馭 ports|Slides/BSD_ports.pdf]] |[[CC SA 2.5|//creativecommons.org/]]|
| 嵌入式系統 | 黃敬群 |快快樂樂設計嵌入式即時作業系統 |[[CC 2.0 SA|//creativecommons.org/]]|
| 嵌入式系統 | 古傑芳 |The DirectFB and I | |
| 嵌入式系統 | 陳俊宏 |OpenMoko 好好玩! | |
| 嵌入式系統 | 蔡志展 |mesh network on openwrt | |
| 嵌入式系統 | 林智斌 |port wifi router to openwrt | |
| 嵌入式系統 | 蔡政崇 |batman on openwrt | |
| 閃電秀 | gasolin |[[Zhpy|Slides/LT_quickzhpy.zip]] | |
 <<tiddler HideTiddlerSubtitle>> <<tiddler HideTiddlerTitle>> <<tiddler ReplaceDoubleClick>> <<tiddler HideTiddlerTags>>
!小貼紙
!!請各位同好協助, 利用以下貼紙幫本研討會宣傳. :)
!!300x250
https://coscup.org/2007/071016_banner_300x250.png
[img[071016_banner_300x250.png]]
!!468x60
https://coscup.org/2007/071016_banner_468x60.png
[img[071016_banner_468x60.png]]
!!80x25
https://coscup.org/2007/071016_banner_80x25.png
[img[071016_banner_80x25.png]]
[[SideBarWG]]

#topMen br {display:none;}
/***
!Top Menu Styles
***/
/*{{{*/
#topMenu br {display:none; }
#topMenu { background: #000 ; color:#fff;padding: 0.5em 0.5em;}
/*}}}*/

/***
!General
***/
/*{{{*/
body {
 background: #444;
 margin: 0 auto;
}

 #contentWrapper{
 background: #fff;
 border: 0;
 margin: 0 1em;

 padding:0;
}
/*}}}*/

/***
!Header rules
***/
/*{{{*/
.titleLine{
 margin: 0px 3em 0em 0em;
margin-left:1.7em;
margin-bottom: 0px;
 padding: 0;
 text-align: left;
 color: #fff;
}

.siteTitle {
	font-size: 2em;
        font-weight: bold;
}

.siteSubtitle {
	font-size: 0px;
        display: block;
        margin: .5em auto 1em;
}

.gradient {margin: 0 auto;}



.header {
 background: #fff;
 margin: 0 0em;
 padding:0 12px;

}
/*}}}*/

/***
!Display Area
***/
/*{{{*/
#bodywrapper {margin:0 12px; padding:0;background:#fff; height:1%}

#displayArea{
 margin: 0em 16em 0em 1em;
 text-align: left;
}

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

h1,h2,h3,h4,h5 { color: #000; background: transparent; padding-bottom:2px; border-bottom: 1px dotted #666; }
.title {color:black; font-size:1.8em; border-bottom:1px solid #333; padding-bottom:0.3px;}
.subtitle { font-size:90%; color:#ccc; padding-left:0.25em; margin-top:0.1em; }

.shadow .title {
	color: #aaa;
}

.tagClear{
	clear: none;
}

* html .viewer pre {
	margin-left: 0em;
}

* html .editor textarea, * html .editor input {
	width: 98%;
}

.tiddler {margin-bottom:1em; padding-bottom:0em;}


.toolbar .button {color:#bbb; border:none;}
.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active {background:transparent; color:#111; border:none; text-decoration:underline;}

#sidebar .highlight, #sidebar .marked {background:transparent;}

.tagging, .tagged {
	border: 1px solid #eee;
	background-color: #F7F7F7;
}

.selected .tagging, .selected .tagged {
	background-color: #eee;
	border: 1px solid #bbb;
}

 .tagging .listTitle, .tagged .listTitle {
	color: #bbb;
}

.selected .tagging .listTitle, .selected .tagged .listTitle {
	color: #222;
}


.tagging .button:hover, .tagged .button:hover {
		border: none; background:transparent; text-decoration:underline; color:#000;
}

.tagging .button, .tagged .button {
		color:#aaa;
}

.selected .tagging .button, .selected .tagged .button {
		color:#000;
}

.viewer blockquote {
	border-left: 3px solid #000;
}

.viewer pre, .viewer code {
	border: 1px dashed #ccc;
	background: #eee;}

.viewer hr {
	border: 0;
	border-top: solid 1px #333;
 margin: 0 8em;
	color: #333;
}

.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}

.viewer .highlight, .viewer .marked {text-decoration:none;}

#sidebarTabs .highlight, #sidebarTabs .marked {color:#000; text-decoration:none;}

.tabSelected {
 color: #000;
 background: #fff;
 border-top: solid 1px #ccc;
 border-left: solid 1px #ccc;
 border-right: solid 1px #ccc;
 border-bottom: none;
}

.viewer .tabSelected:hover{color:#000;}

.viewer .tabSelected {font-weight:bold;}

.tabUnselected {
 color: #999;
 background: #eee;
 border-top: solid 1px #ccc;
 border-left: solid 1px #ccc;
 border-right: solid 1px #ccc;
 border-bottom: solid 1px #ccc;
 padding-bottom:1px;
}

.tabContents {
 background: #fff;
  color: #000;
}
/*}}}*/
/***
!!!Tables
***/
/*{{{*/
.viewer table {
	border: 1px solid #000;
}

.viewer th, thead td {
	background: #000;
	border: 1px solid #000;
	color: #fff;
}

.viewer td, .viewer tr {
	border: 1px solid #111; padding:4px;
}
/*}}}*/


/***
!!!Editor area
***/
/*{{{*/
.editor input, .editor textarea {
	border: 1px solid #ccc;
}

.editor {padding-top:0.3em;}

.editor textarea:focus, .editor input:focus {
	border: 1px solid #333;
}
/*}}}*/

/***
!Sidebar
***/
/*{{{*/
#sidebar{
position:relative;
float:right;
margin-bottom:1em;
display:inline;
width: 16em;
}

#sidebarOptions .sliderPanel {
	background: #eee; border:1px solid #ccc;
}

/*}}}*/

/***
!Body Footer rules
***/
/*{{{*/
#contentFooter {
 text-align: center;
 clear: both;
 color:#fff;
 background: #000;
 padding: 1em 2em;
font-weight:bold;
}

/*}}}*/
/***
!Link Styles
***/
/*{{{*/
a{
	color: #000;
}

a:hover{
        color: #FF6600;
        background:#fff;
}


.button {
	color: #000;
	border: 1px solid #fff;
}

.button:hover {
	color: #fff;
	background: #ff8614;
	border-color: #000;
}

.button:active {
	color: #fff;
	background: #ff8614;
	border: 1px solid #000;
}

.tiddlyLink {border-bottom: 1px dotted #000;}
.tiddlyLink:hover {border-bottom: 1px dotted #FF6600;}

.titleLine a {border-bottom: 1px dotted #FF9900;}

.titleLine a:hover {border-bottom: 1px dotted #fff;}

.siteTitle a, .siteSubtitle a{
 color: #fff;
}

.viewer .button {border: 1px solid #ff8614; font-weight:bold;}
.viewer .button:hover, .viewer .marked, .viewer .highlight{background:#ff8614; color:#fff; font-weight:bold; border: 1px solid #000;}

#topMenu .button, #topMenu .tiddlyLink {
 margin-left:0.5em; margin-right:0.5em;
 padding-left:3px; padding-right:3px;
 color:white; font-weight:bold;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover { background:#000; color:#FF8814}

#topMenu a{border:none;}
/*}}}*/

/***
!Message Area /%=================================================%/
***/
/*{{{*/
#messageArea {
	border: 4px dotted #ff8614;
	background: #000;
	color: #fff;
        font-size:90%;
}

#messageArea .button {
	padding: 0.2em;
	color: #000;
	background: #fff;
        text-decoration:none;
        font-weight:bold;
        border:1px solid #000;
}

#messageArea a {color:#fff;}

#messageArea a:hover {color:#ff8614; background:transparent;}

#messageArea .button:hover {background: #FF8614; color:#fff; border:1px solid #fff; }

/*}}}*/

/***
!Popup /%=================================================%/
***/
/*{{{*/
.popup {
	background: #ff8814;
	border: 1px solid #333;
}

.popup hr {
	color: #333;
	background: #333;
	border-bottom: 1px;
}

.popup li.disabled {
	color: #333;
}

.popup li a, .popup li a:visited {
	color: #eee;
	border: none;
}

.popup li a:hover {
	background: #ff8614;
	color: #fff;
	border: none;
        text-decoration:underline;
}

.searchBar {float:right; font-size:1em;}
.searchBar .button {display:block; border:none; color:#ccc; }
.searchBar .button:hover{border:none; color:#eee;}

.searchBar input{
 border: 1px inset #000; background:#EFDFD1; width:5em; margin:0;
}

.searchBar input:focus {
 border: 1px inset #000; background:#fff;
}

*html .titleLine {margin-right:1.3em;}

*html .searchBar .button {margin-left:1.7em;}

 .HideSideBarButton {float:right;}
/*}}}*/

.blog h2, .blog h3, .blog h4{
  margin:0;
  padding:0;
border-bottom:none;
}
.blog {margin-left:1.5em;}


.blog .excerpt {
  margin:0;
margin-top:0.3em;
  padding: 0;
  margin-left:1em;
  padding-left:1em;
  font-size:90%;
  border-left:1px solid #ddd;
}

#tiddlerWhatsNew h1, #tiddlerWhatsNew h2 {border-bottom:none;}
div[tags~="RecentUpdates"], div[tags~="lewcidExtension"] {margin-bottom: 2em;}

#hoverMenu  .button, #hoverMenu  .tiddlyLink {border:none; font-weight:bold; background:#f37211; color:#fff; padding:0 5px; float:right; margin-bottom:4px;}
#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#f37211; background:#000; padding:0 5px; float:right; margin-bottom:4px;}

#topMenu .fontResizer {float:right;}

#topMenu .fontResizer .button{border:1px solid #000;}
#topMenu .fontResizer .button:hover {border:1px solid #f37211; color:#fff;}
#sidebarTabs .txtMainTab .tiddlyLinkExisting {
 font-weight: normal;
 font-style: normal;
}

#sidebarTabs .txtMoreTab .tiddlyLinkExisting {
 font-weight: bold;
 font-style: normal;
}

.block a{display:block;}
/%
|Name|ToggleRightSidebar|
|Source|//www.TiddlyTools.com/#ToggleRightSidebar|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|//www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|//creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide right sidebar (SideBarOptions)|
%/<script label="show/hide right sidebar">
	var show=document.getElementById('sidebar').style.display=='none';
	if (!show) {
		document.getElementById('sidebar').style.display='none';
		var margin='1em';
	}
	else {
		document.getElementById('sidebar').style.display='block';
		var margin=config.options.txtDisplayAreaRightMargin?config.options.txtDisplayAreaRightMargin:"";
	}
	place.innerHTML=(show?"&gt;&gt;&gt;":"&lt;&lt;&lt;"); // SET LINK TEXT
	place.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP
	document.getElementById('displayArea').style.marginRight=margin;
	config.options.chkShowRightSidebar=show;
	saveOptionCookie('chkShowRightSidebar');
	var sm=document.getElementById("storyMenu"); if (sm) config.refreshers.content(sm);
	return false;
</script><script>
	if (config.options.chkShowRightSidebar==undefined)
		config.options.chkShowRightSidebar=true;
	if (!config.options.txtDisplayAreaRightMargin||!config.options.txtDisplayAreaRightMargin.length)
		config.options.txtDisplayAreaRightMargin="18em";
	var show=config.options.chkShowRightSidebar;
	document.getElementById('sidebar').style.display=show?"block":"none";
	document.getElementById('displayArea').style.marginRight=show?config.options.txtDisplayAreaRightMargin:"1em";
	place.lastChild.innerHTML=(show?"&gt;&gt;&gt;":"&lt;&lt;&lt;"); // SET LINK TEXT
	place.lastChild.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP
	place.lastChild.style.fontWeight="normal";
</script>
(C) Conference for Open Source Coders, Users and Promoters, <html><font="#ffffff"><b>Powered by TiddlyWiki</b></font></html>