2009-01-20# 文/李筑音 《Cheers》雜誌\n\n從外在的物質使用,到內在的心靈關係,總是有更好的方向值得我們去追求。2009年,除了職場上的波動,《Cheers》雜誌提醒你9種新方向,更多的改變從此開始,一點也不難。\n\n''1.理財:簡單為上''\n\n投資理財簡單化是2009年很重要的原則。投資理財專家夏韻芬提醒,今年高風險性的投資商品少碰為妙,還是以自己看得懂的金融商品為主。\n不景氣也是檢視自己過去投資比例的最好時機,生活支出、房貸、保費等項目的比重,不妨重新調整。夏韻芬建議,目前房貸利率已經調降,許多人卻還在使用固定利率,很不划算,應該要趕緊改成機動利率。同時,也可減少保費的支出。不少人把保險當做儲蓄工具,假使你收入真的產生變化,不妨暫時把保費減少一些。\n她認為,2009年還是有反彈機會,只是時間會拉長,因此更要培養紀律,嚴格的停利跟停損,換句話說,能出場時要當機立斷,不要觀望以免損失擴大。\n\n''2.消費:聰明杜絕無謂浪費''\n\n降低支出,減少不必要的生活開銷也是2009年一定要改變的消費習慣。夏韻芬舉例,很多人為了省錢,到大賣場、量販店購物,買回來的食物卻來不及吃就爛掉,一樣是無謂的浪費。\n「蕭條時尚」是荷包縮水時,上班族可以多發揮的創意思維。她鼓勵大家不妨多點巧思,用搭配、混搭方式創造流行感,自己改造舊的牛仔褲、T恤,也是不過度浪費的好方法。\n\n''3.學習:多投資自己腦袋''\n\n景氣不好,更要投資自己的腦袋。夏韻芬笑說,頸部以上的多投資,頸部以下的不用花太多錢。\n上班族不妨善用「不花錢」的學習管道,例如收聽ICRT,或是到BBC、CNN等網站下載免費的Podcast(播客)節目加強英文,或是到職訓局去充實一些專業技能,在職場由專業分工走向專業多工的時代,才能成為老闆最寶貴的資產。\n平時不妨自我練習在3分鐘內說出自己對公司的貢獻。此外,如果碰上無薪休假,與其在家裡怨天尤人,抱怨公司,還不如去多聽免費演講、多看展覽、多讀書,或是參加社團,拓展人脈。 \n\n''4.健康:愈運動,愈有希望''\n\n愈是不景氣,愈要保住健康,除了有強健的體魄才能對抗惡劣環境,萬一生病,還要額外再支付大大小小的醫藥費,更是得不償失。\n最近才去龍門露營區騎自行車,Google台灣區總經理兼台灣工程研究所所長簡立峰鼓勵年輕上班族多走出戶外,不僅可以鍛鍊身體,更有助排遣負面情緒。畢竟體能與心態是一體兩面,先有健康的身體,才有高昂的鬥志。\n\n''5.親密關係:轉換心情陪家人''\n\n永遠不要忘記家人是人生中最珍貴的資產。\n享受居家生活並不代表非得花大錢裝潢,有時你欠缺的只是一份「心情」。好好整理家裡環境,布置一個喜歡的角落,和家人共享一張好CD、或喝杯好茶,反而能讓自己得到真正的歸屬與安定。\n偶爾和家人到住家附近野餐,也是增進彼此感情的好方法。美食作家葉怡蘭表示,她經常帶著自己親手做的沙拉、輕食,和家人到住家附近的山坡散步、野餐,就能換得一天的快樂時光。\n\n''6.公益:多為別人想一想''\n\n不要成天想著自己為何最倒楣,做點善事,會發現力量更大。\n2007年開始投身公益的作家王文華曾在部落格寫道:「成功如此boring(無聊)。Boring的原因,是因為我們除了自己,一無所有。100%只有自己的生活,就像100%的檸檬汁,令人反胃。」\n他和趨勢科技董事長張明正創辦「若水公司」,開始做公益,推動社會企業的概念。他坦言,做公益,可以暫時「忘掉自己、只想別人,就像脫光了衣服,輕鬆舒適。」2008年一場意外讓夏韻芬痛失愛子,將愛子意外身故的保險理賠金全數捐出後,更讓她產生推動「商業保險社會化」的公益想法。\n夏韻芬有感而發地說,她以前常跟自己的小孩說,少吃一頓buffet自助餐,就可以幫助其他小孩都有飯吃,所以她跟她的小孩都認養了貧苦小孩。最近很多公益團體出現募款危機,她建議,每個人都有保險,只要願意提撥保費的10%、20%,就可以讓許多慈善、社福團體繼續運作下去,不需要多有錢,一般上班族就能做到。 \n\n''7.生活:重新喚醒你的感官''\n\n你有多久沒有好好釋放身心靈,放慢速度讓五感享受生活?不妨利用假日,好好為自己和家人下廚煮一頓飯,喚醒長久以來麻木的感官,也讓自己吃得更健康。\n葉怡蘭認為,台灣人煮飯受到太多中式烹調的影響,以為做飯一定複雜,一定要三菜一湯、大火快炒,加上繁複的調味料,其實不盡然。有時候一份乾拌麵配涼拌小菜、一份豆腐,也可以是一餐;一盤綜合水果灑上葡萄乾、橄欖油沾麵包、加上一小杯白酒,也很美味。\n「現代人什麼都要,要過頭了,應該開始改變,知道自己不要什麼。」她認為,2009年,大家不妨學習放慢速度生活,重新學習「重質不重量」,多珍惜限量、手工的東西。剝除不必要的包裝,反而會讓你重新體會事物的真實滋味。\n\n''8.視野:實踐一場夢寐已久的旅行''\n\n28歲的大男孩謝旺霖,一次單車橫跨中國滇藏的旅程,為他年輕的靈魂開啟了新視界,更寫出了令人驚豔的作品《轉山》。\n這個世界,哪裡仍令你好奇?未必非要做到像背包客般長期壯遊,即使是三五好友結伴,去一個一直想去卻沒去的地方,都是拓展視野,增廣人生閱歷最直接的方式。把目的地寫進你的圓夢記事本裡,為自己好好計畫一趟難忘的旅程。\n\n''9.自己:用記事本寫下夢想''\n\n向來有做筆記習慣的作家李欣頻表示,每到歲末年終,她都會在筆記本寫下10個明年想實現的夢想,例如明年她的夢想之一,就是到南極旅行。\n如同她在最新的文案作品中寫道──在這個信心低谷、創意用盡的時刻,我們不再需要「教我們該怎麼做事」的達人,而是需要「教我們如何作夢」的痴人。\n痴人的靈魂是自由的,敢作與眾不同的夢,能看見未來的非凡,現實環境再怎麼無情,他們依然熱情,不管別人怎麼側目數落,他總能像個傻子般地堅持著,把所有的生命時間,放在別人看不到希望的地方,固執成痴,力求完美,自得其樂,自豪不餒。 \n新的一年到來,不論2009年你有什麼偉大的圓夢計劃,現在就替自己準備一本「圓夢記事本」,把夢想一一寫下,努力去改變,去實現它吧!
<<reminder day:4 month:4 year:2009 title:"下次可捐血日期">>\n<<reminder day:18 month:4 year:2009 title:"下次可捐血日期">>\n<<reminder day:1 month:7 year:2009 title:"史艷文再度紅塵">>\n
This notebook attempts to capture the essence of a [["kinkless" GTD system|http://www.kinkless.com]] using TiddlyWiki. It is using the <<gtdVersion>> version of the GTD plugins, by Tom Otvos, and is based on version <<version>> of the [[TiddlyWiki|http://www.tiddlywiki.com]] stand-alone wiki project, by Jeremy Ruston. For customization info, see [[GTD TiddlyWiki|http://groups.google.com/group/GTD-TiddlyWiki]] and [[TiddlyWikiDev|http://www.tiddlywiki.com/dev/]].
!Welcome to version 1.2.0 of d-cubed\nThis is a minor update to the previous 1.1.0 release, introducing several new usability features. As with the previous 1.1.0 release, this d-cubed embraces the 2.1 version of ~TiddlyWiki, taking advantage of some of what it has to offer, and allowing the more adventurous user to add on any of the new 2.1-centric plugins to further enhance their d-cubed setup.\n\n''Note that to fully upgrade d-cubed, you must first update the core GTD plugins //and then// update ~TiddlyWiki. If you are reading this, then you have already done the first step. If you have not updated ~TiddlyWiki, the easiest way is to click on "Check for Updates" in the menu at left, and then click on the "Update ~TiddlyWiki" button. For your information, you are currently running version <<version>> of ~TiddlyWiki.''\n\nAlso note that you do not need to update ~TiddlyWiki to use this version of d-cubed. It is nicer if you do, but you get some bang just from this release, as detailed below.\n\n''As this release is being prepared, ~TiddlyWiki has just been updated to version 2.2. It is very important to note that this release of d-cubed has not been validated against 2.2, so to avoid potential data loss, do not upgrade any important d-cubed documents to 2.2. A compatible version of d-cubed will be provided in the near future.''\n\nThis release has the following changes:\n* actions can now be assigned to a project directly from the action's tiddler menu; if the action belonged to a project already, it is removed from that project first, and then appended to the destination project\n* in addition to the default "important" tag for projects, you can now specify an arbitrary list of tags in the [[Configuration|Configuration Options]] that affect the sort order of projects and project actions\n* action lists now display action titles in two different styles, depending on whether the action has any text content in it; by default, empty action tiddlers (CSS class gtdActionWithoutContent) are displayed in normal text weight, and actions with content (CSS class gtdActionWithContent) are displayed in bold\n* newly-added contexts immediately appear in action context picker instead of needing a document reload\n\nFinally, if you are a regular user of d-cubed and would like contribute in some way, there is now a "tip jar" available. Just click on the button below:\n\n<html>\n<form action="https://www.paypal.com/cgi-bin/webscr" method="post">\n<input type="hidden" name="cmd" value="_s-xclick">\n<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">\n<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">\n<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHRwYJKoZIhvcNAQcEoIIHODCCBzQCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYArqELycEhlEeU4Ikv7/arlOM92IKDYe4nhYuHcGQlAg7wtuL0XiBzeUog47f9Bh6mOch2fYU739g1LRdmPCGXFC+/FUhiHtC0WzzoM9Ze5brDxX55ZMRYcSW8r+F/+8f1fbjQLKQOweWzfB87c9atRjhIivYizx582Z10qJEN3uDELMAkGBSsOAwIaBQAwgcQGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIWXCtKBKQVOqAgaApYeMrVxuoRQ/0OILmlaCiziXXCg0VMf39lT6qFy12dsom2u/b56rCay/s/vyWzdDZgpdV3wUqChgTrHIjaaJUIQ15ITyskbYDDWMMEwp5f5UEy6Y/fDtugF7sGknAvEL+G6QtQv8su4Nlqu1EWOptSlvuuPokBBwKM6J2elMzds4x1ug/9L7WAheCNKXP1bR+VOskaCKnT71m23cfyceHoIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDcwMjEzMjIyODI4WjAjBgkqhkiG9w0BCQQxFgQUT2cBzuxL2aED6PhQaLoEbTd+PEYwDQYJKoZIhvcNAQEBBQAEgYAZfdUgTGt3yxXci0obaP0sP7CmwzdmlqYu92W24sITRc1j/+gNvyqLpCtRkRHFT0FFZqqukwopZPE4/VCM496TqcVaQMXZAi9jVyrniLA3BEKY8VCrLYqW3pnf87TLfLOe9Y65FlT3Sx4EKwLCNIhYwojgx6lZXo+TNVCWhMBmHQ==-----END PKCS7-----\n">\n</form>\n</html>\nNo pressure, no obligation, but thank you if you do!\n\n//This tiddler will only open automatically the first time you run d-cubed after an update. After that, you can freely delete it, or save it for future reference.//
! Next actions for active contexts\n<<gtdActionList @>>
To make this system operate more efficiently, you should periodically archive completed projects and actions. When a project or action is archived, it is merely tagged in a special way to get it "out of sight", but all the information in the project and action tiddlers is preserved. This is important if you need to go back and find something. Click one of these buttons to view the current <<tag project-archive>> or <<tag action-archive>>.\n\n** Click <<gtdArchive archive>> if you would like to archive all completed projects and actions now.\n** Click <<gtdArchive unarchive>> if you would like to unarchive all previously archived projects and actions now.\n\nIf you are sure that you do not want to retain archived projects and actions, you can purge them completely from the system. //Once these archived items are removed, the only way they can be put back in is through manual importing or copy/paste.// ''For your safety, your file will be saved and a backup file will be automatically generated before an archive purge is performed.''\n\n** Click <<gtdArchive purge>> if you would like to purge your archive now.
SunAccount會計處系統\nhttp://jbaccaps/tsweb/\n日盛集團入口網站\nhttp://jsidc.jihsun.com.tw/jsun/\n財資_外匯選擇權系統\nhttp://jbdtsweb01/FXOption/Main.aspx\n財資_利率交換系統\nhttp://jbdts.jsidc.com/AMSIRS/Main.aspx\n財資_票債券系統\nhttp://jbdtsweb01.jsidc.com/amsbond/Main.aspx\n財資_利率期貨系統\nhttp://jbdts.jsidc.com/amsirf/main.aspx\n財資_外幣債券系統\nhttp://jbdtsweb01/FXAMSBOND/Main.aspX\n財資_債券選擇權\nhttp://jbdts.jsidc.com/AMSBondOptions/Main.aspx\n標準整批帳務交易平台\nhttp://jbbftp.jsidc.com/bftp/Main.aspX\n異康:憑證管理工具\nhttp://sii.tse.com.tw\n
/***\n|''Name:''|CalendarPlugin|\n|''Source:''|http://www.TiddlyTools.com/#CalendarPlugin|\n|''Author:''|SteveRumsby|\n|''License:''|unknown|\n|''~CoreVersion:''|2.0.10|\n\n// // updated by Jeremy Sheeley to add cacheing for reminders\n// // see http://www.geocities.com/allredfaq/reminderMacros.html\n// // ''Changes by ELS 2006.08.23:''\n// // added handling for weeknumbers (code supplied by Martin Budden. see "wn**" comment marks)\n// // ''Changes by ELS 2005.10.30:''\n// // config.macros.calendar.handler()\n// // ^^use "tbody" element for IE compatibility^^\n// // ^^IE returns 2005 for current year, FF returns 105... fix year adjustment accordingly^^\n// // createCalendarDays()\n// // ^^use showDate() function (if defined) to render autostyled date with linked popup^^\n// // calendar stylesheet definition\n// // ^^use .calendar class-specific selectors, add text centering and margin settings^^\n\n\n!!!!!Configuration:\n<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//\n|''First day of week:''|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|\n|''First day of weekend:''|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|\n\n!!!!!Syntax:\n|{{{<<calendar>>}}}|Produce a full-year calendar for the current year|\n|{{{<<calendar year>>}}}|Produce a full-year calendar for the given year|\n|{{{<<calendar year month>>}}}|Produce a one-month calendar for the given month and year|\n|{{{<<calendar thismonth>>}}}|Produce a one-month calendar for the current month|\n|{{{<<calendar lastmonth>>}}}|Produce a one-month calendar for last month|\n|{{{<<calendar nextmonth>>}}}|Produce a one-month calendar for next month|\n\n***/\n// //Modify this section to change the text displayed for the month and day names, to a different language for example. You can also change the format of the tiddler names linked to from each date, and the colours used.\n\n//{{{\nconfig.macros.calendar = {};\n\nconfig.macros.calendar.monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];\nconfig.macros.calendar.daynames = ["M", "T", "W", "T", "F", "S", "S"];\n\nconfig.macros.calendar.weekendbg = "#c0c0c0";\nconfig.macros.calendar.monthbg = "#e0e0e0";\nconfig.macros.calendar.holidaybg = "#ffc0c0";\n\n//}}}\n// //''Code section:''\n// (you should not need to alter anything below here)//\n//{{{\nif(config.options.txtCalFirstDay == undefined)\n config.options.txtCalFirstDay = 0;\nif(config.options.txtCalStartOfWeekend == undefined)\n config.options.txtCalStartOfWeekend = 5;\nif(config.options.chkDisplayWeekNumbers == undefined)//wn**\n config.options.chkDisplayWeekNumbers = false;\nif(config.options.chkDisplayWeekNumbers)\n config.options.txtCalFirstDay = 0;\n\nconfig.macros.calendar.tiddlerformat = "0DD/0MM/YYYY"; // This used to be changeable - for now, it isn't// <<smiley :-(>> \n\nversion.extensions.calendar = { major: 0, minor: 6, revision: 0, date: new Date(2006, 1, 22)};\nconfig.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nconfig.macros.calendar.holidays = [ ]; // Not sure this is required anymore - use reminders instead\n//}}}\n\n// //Is the given date a holiday?\n//{{{\nfunction calendarIsHoliday(date)\n{\n var longHoliday = date.formatString("0DD/0MM/YYYY");\n var shortHoliday = date.formatString("0DD/0MM");\n\n for(var i = 0; i < config.macros.calendar.holidays.length; i++) {\n if(config.macros.calendar.holidays[i] == longHoliday || config.macros.calendar.holidays[i] == shortHoliday) {\n return true;\n }\n }\n return false;\n}\n//}}}\n\n// //The main entry point - the macro handler.\n// //Decide what sort of calendar we are creating (month or year, and which month or year)\n// // Create the main calendar container and pass that to sub-ordinate functions to create the structure.\n// ELS 2005.10.30: added creation and use of "tbody" for IE compatibility and fixup for year >1900//\n// ELS 2005.10.30: fix year calculation for IE's getYear() function (which returns '2005' instead of '105')//\n// ELS 2006.05.29: add journalDateFmt handling//\n//{{{\nconfig.macros.calendar.handler = function(place,macroName,params)\n{\n var calendar = createTiddlyElement(place, "table", null, "calendar", null);\n var tbody = createTiddlyElement(calendar, "tbody", null, null, null);\n var today = new Date();\n var year = today.getYear();\n if (year<1900) year+=1900;\n \n // get format for journal link by reading from SideBarOptions (ELS 5/29/06 - based on suggestion by Martin Budden)\n var text = store.getTiddlerText("SideBarOptions");\n this.journalDateFmt = "DD-MMM-YYYY";\n var re = new RegExp("<<(?:newJournal)([^>]*)>>","mg"); var fm = re.exec(text);\n if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }\n\n if (params[0] == "thismonth")\n {\n cacheReminders(new Date(year, today.getMonth(), 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, today.getMonth());\n } \n else if (params[0] == "lastmonth") {\n var month = today.getMonth()-1; if (month==-1) { month=11; year--; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else if (params[0] == "nextmonth") {\n var month = today.getMonth()+1; if (month>11) { month=0; year++; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else {\n if (params[0]) year = params[0];\n if(params[1])\n {\n cacheReminders(new Date(year, params[1]-1, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, params[1]-1);\n }\n else\n {\n cacheReminders(new Date(year, 0, 1, 0, 0), 366);\n createCalendarYear(tbody, year);\n }\n }\n window.reminderCacheForCalendar = null;\n}\n//}}}\n//{{{\n//This global variable is used to store reminders that have been cached\n//while the calendar is being rendered. It will be renulled after the calendar is fully rendered.\nwindow.reminderCacheForCalendar = null;\n//}}}\n//{{{\nfunction cacheReminders(date, leadtime)\n{\n if (window.findTiddlersWithReminders == null)\n return;\n window.reminderCacheForCalendar = {};\n var leadtimeHash = [];\n leadtimeHash [0] = 0;\n leadtimeHash [1] = leadtime;\n var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);\n for(var i = 0; i < t.length; i++) {\n //just tag it in the cache, so that when we're drawing days, we can bold this one.\n window.reminderCacheForCalendar[t[i]["matchedDate"]] = "reminder:" + t[i]["params"]["title"]; \n }\n}\n//}}}\n//{{{\nfunction createCalendarOneMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarYear(calendar, year)\n{\n var row;\n row = createTiddlyElement(calendar, "tr", null, null, null);\n var back = createTiddlyElement(row, "td", null, null, null);\n var backHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year-1);\n };\n createTiddlyButton(back, "<", "Previous year", backHandler);\n back.align = "center";\n\n var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);\n yearHeader.align = "center";\n //yearHeader.setAttribute("colSpan", 19);\n yearHeader.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?22:19);//wn**\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n var fwdHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year+1);\n };\n createTiddlyButton(fwd, ">", "Next year", fwdHandler);\n fwd.align = "center";\n\n createCalendarMonthRow(calendar, year, 0);\n createCalendarMonthRow(calendar, year, 3);\n createCalendarMonthRow(calendar, year, 6);\n createCalendarMonthRow(calendar, year, 9);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthRow(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDayHeader(row, 3);\n createCalendarDayRows(cal, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthHeader(cal, row, name, nav, year, mon)\n{\n var month;\n if(nav) {\n var back = createTiddlyElement(row, "td", null, null, null);\n back.align = "center";\n back.style.background = config.macros.calendar.monthbg;\n\n/*\n back.setAttribute("colSpan", 2);\n\n var backYearHandler = function() {\n var newyear = year-1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(back, "<<", "Previous year", backYearHandler);\n*/\n var backMonHandler = function() {\n var newyear = year;\n var newmon = mon-1;\n if(newmon == -1) { newmon = 11; newyear = newyear-1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(back, "<", "Previous month", backMonHandler);\n\n\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n// month.setAttribute("colSpan", 3);\n// month.setAttribute("colSpan", 5);\n month.setAttribute("colSpan", config.options.chkDisplayWeekNumbers?6:5);//wn**\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n fwd.align = "center";\n fwd.style.background = config.macros.calendar.monthbg; \n\n// fwd.setAttribute("colSpan", 2);\n var fwdMonHandler = function() {\n var newyear = year;\n var newmon = mon+1;\n if(newmon == 12) { newmon = 0; newyear = newyear+1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(fwd, ">", "Next month", fwdMonHandler);\n/*\n var fwdYear = createTiddlyElement(row, "td", null, null, null);\n var fwdYearHandler = function() {\n var newyear = year+1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(fwd, ">>", "Next year", fwdYearHandler);\n*/\n } else {\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n //month.setAttribute("colSpan", 7);\n month.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?8:7);//wn**\n }\n month.align = "center";\n month.style.background = config.macros.calendar.monthbg;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayHeader(row, num)\n{\n var cell;\n for(var i = 0; i < num; i++) {\n if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, "td");//wn**\n for(var j = 0; j < 7; j++) {\n var d = j + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);\n if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))\n cell.style.background = config.macros.calendar.weekendbg;\n }\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDays(row, col, first, max, year, mon)\n{\n var i;\n if (config.options.chkDisplayWeekNumbers){\n if (first<=max) {\n var ww = new Date(year,mon,first);\n createTiddlyElement(row, "td", null, null, "w"+ww.getWeek());//wn**\n }\n else createTiddlyElement(row, "td", null, null, null);//wn**\n }\n for(i = 0; i < col; i++) {\n createTiddlyElement(row, "td", null, null, null);\n }\n var day = first;\n for(i = col; i < 7; i++) {\n var d = i + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n var daycell = createTiddlyElement(row, "td", null, null, null);\n var isaWeekend = ((d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))? true:false);\n\n if(day > 0 && day <= max) {\n var celldate = new Date(year, mon, day);\n // ELS 2005.10.30: use <<date>> macro's showDate() function to create popup\n if (window.showDate) {\n showDate(daycell,celldate,"popup","DD",config.macros.calendar.journalDateFmt,true, isaWeekend); // ELS 5/29/06 - use journalDateFmt \n } else {\n if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;\n var title = celldate.formatString(config.macros.calendar.tiddlerformat);\n if(calendarIsHoliday(celldate)) {\n daycell.style.background = config.macros.calendar.holidaybg;\n }\n if(window.findTiddlersWithReminders == null) {\n var link = createTiddlyLink(daycell, title, false);\n link.appendChild(document.createTextNode(day));\n } else {\n var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);\n }\n }\n }\n day++;\n }\n}\n//}}}\n\n// //We've clicked on a day in a calendar - create a suitable pop-up of options.\n// //The pop-up should contain:\n// // * a link to create a new entry for that date\n// // * a link to create a new reminder for that date\n// // * an <hr>\n// // * the list of reminders for that date\n//{{{\nfunction onClickCalendarDate(e)\n{\n var button = this;\n var date = button.getAttribute("title");\n var dat = new Date(date.substr(6,4), date.substr(3,2)-1, date.substr(0, 2));\n\n date = dat.formatString(config.macros.calendar.tiddlerformat);\n var popup = createTiddlerPopup(this);\n popup.appendChild(document.createTextNode(date));\n var newReminder = function() {\n var t = store.getTiddlers(date);\n displayTiddler(null, date, 2, null, null, false, false);\n if(t) {\n document.getElementById("editorBody" + date).value += "\sn<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n } else {\n document.getElementById("editorBody" + date).value = "<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n }\n };\n var link = createTiddlyButton(popup, "New reminder", null, newReminder); \n popup.appendChild(document.createElement("hr"));\n\n var t = findTiddlersWithReminders(dat, [0,14], null, 1);\n for(var i = 0; i < t.length; i++) {\n link = createTiddlyLink(popup, t[i].tiddler, false);\n link.appendChild(document.createTextNode(t[i].tiddler));\n }\n}\n//}}}\n\n//{{{\nfunction calendarMaxDays(year, mon)\n{\n var max = config.macros.calendar.monthdays[mon];\n if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) {\n max++;\n }\n return max;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRows(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1 + 7;\n var day1 = -first1 + 1;\n var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first2 < 0) first2 = first2 + 7;\n var day2 = -first2 + 1;\n var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first3 < 0) first3 = first3 + 7;\n var day3 = -first3 + 1;\n\n var max1 = calendarMaxDays(year, mon);\n var max2 = calendarMaxDays(year, mon+1);\n var max3 = calendarMaxDays(year, mon+2);\n\n while(day1 <= max1 || day2 <= max2 || day3 <= max3) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;\n createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRowsSingle(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1+ 7;\n var day1 = -first1 + 1;\n var max1 = calendarMaxDays(year, mon);\n\n while(day1 <= max1) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n }\n}\n//}}}\n\n// //ELS 2005.10.30: added styles\n//{{{\nsetStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }", "calendarStyles");\n//}}}\n
These configuration options enable you to customize the default behaviour of this wiki. They are saved locally as cookies, just like other TiddlyWiki configuration options. Note that in some cases, you will need to reload the document for the changes to take effect.\n\n!!Action display settings\nThis value, if specified, is a semi-colon-delimited list of tags that are used to prioritize projects and actions for those projects. If left blank, the single priority tag "important" is used to sort projects. Otherwise, the specified tags are used in the listed order of importance, the first tag being most important (you will need to reload the document to see your change):\n<<option txtGTDProjectPriorities>>\n\nThis value, if specified, is the number of days to keep completed actions in context and review action lists (leave blank to show all unarchived, completed actions):\n<<option txtGTDActionAging>>\n\n!!Magic tags\nThe following tag is used for the "reference" context, used to identify tiddlers that show up in the [[Reference]] list: \n<<option txtGTDReferenceContext>>\n\nThe following tag is used for the "someday-maybe" context, used to identify tiddlers that show up in the [[Someday-Maybe]] list:\n<<option txtGTDSomedayContext>>\n\nThe following tag is used for the "unfiled" context, used to tag actions when the context is not known (such as orphaned actions from a deleted context):\n<<option txtGTDUnfiledContext>>\n\n!!Miscellaneous functionality\n<<option chkGTDFancyStyle>> Use this checkbox to enable or disable the extended (fancy) GTD style specified by the GTDTWStyleSheet (you will need to reload the document to see your change)\n\n<<option chkGTDLazyAutoSave>> Use this checkbox to enable or disable "lazy" autosaving of changes to your document. If turned on, then the autosave will fire every <<option txtGTDLazyAutoSaveInterval>> seconds.\n\n\n
* 康健 * 2009-07-31 * 第129期\n文.李怡嬅\n中國醫藥大學創辦人陳立夫享壽103歲,他的養生秘訣之一就是練八段錦以及每天晨起淋浴按摩全身。\n\n你想起而效尤,最擔心沒有足夠時間按摩全身嗎?沒關係,《康健》整理出現代人常見的8大問題,教你按對穴位,揮別疼痛。\n\n''一、頭痛:百會穴能解大部份頭痛''\n戶外高溫炎熱令人頭暈,一進到室內低溫的冷氣房,原本擴張的血管、肌肉瞬間收縮,更令人頭痛難耐。\n\n此時可以按壓頭頂的百會穴(兩耳往上交會至頭頂),能讓全身氣血通暢。\n\n手腕的神門穴(仰掌、握拳,手掌緣靠近小指側,腕橫紋上的凹陷即是穴位)則有鎮定放鬆的效果。\n\n大家熟知的太陽穴(在眉尾和眼角之間的凹陷處),可以緩解側邊頭痛的困擾。\n而痛偏在前額,試試按摩合谷穴(將大拇指第一指節的橫紋,貼放在另一手的虎口,大拇指的指尖處往下壓,就是合谷穴)。\n\n 如果是後腦疼痛,可將雙手抱頭按壓「風池穴」(位於後頸部兩側,髮際與脊椎外側筋處,是頸部肌肉起點),舒緩症狀。\n\n''二、眼睛疲勞:順著眼框骨按摩眼部周圍至感覺痠脹''\n 長時間盯著電腦、電視、看書、看文件,眼睛酸澀難受,可按壓眼部四周的穴位緩解。循著眼眶骨,由雙眼內上眼角往外,輕輕按壓眉毛內側的纘竹穴、眼睛內側的睛明穴、眼睛下緣落淚處的承泣穴、額頭兩側的太陽穴等,直到感覺痠脹即可,能改善眼部的血液循環,並且刺激整個眼部周遭肌肉,舒緩不適。\n\n ◎貼心提醒,眼壓高、青光眼、高血壓者或眼睛有紅腫熱痛時,切忌按摩穴道。\n\n''三、過敏性鼻炎、咳嗽:迎香治鼻炎、少商平咳嗽''\n有過敏體質的人夏天待在冷氣房症狀將更明顯。低溫會刺激鼻腔、氣管,尤其藏污納垢的冷氣濾網蓄積大量塵蟎,容易誘發呼吸道問題,不停流鼻水、打噴嚏、咳嗽。\n\n》過敏性鼻炎的症狀緩解可刺激迎香、印堂穴。迎香穴位於鼻翼外緣的法令紋處,印堂穴則在兩眉頭中間,兩個穴道都能散鼻部鬱熱,按壓至感覺發熱即可解決困擾。\n\n》至於喉嚨痛或咳嗽,試試天突穴及少商穴。天突穴位於胸骨柄上緣中部微凹處,是氣息出入的要塞,可平喘、化痰、理氣。少商穴屬肺經,位於大拇指指甲根部內緣,是治療咽喉症狀的特效穴,能緩減咽喉疼痛。\n\n另外,平時保健可以按壓風池穴,位於脖子與後腦交接處的凹陷,約在髮際之上,風池穴走膽經,幫助清熱。\n\n''四、肩頸痠痛:大範圍按摩肩頸及上背部''\n肩頸僵硬痠痛幾乎是每個上班族的困擾。\n\n》解除頸部的不適,可雙手抱頭按風府及風池穴。風府穴在後腦髮際往上約1指幅中央處,風池穴則位於後頸部兩側,髮際與脊椎外側筋處,是頸部肌肉起點。\n\n 台北市立聯合醫院中醫醫療部針灸科主任吳建隆提供簡易方法,從風池穴循著髮際慢慢按到耳朵,「之中有許多穴道,都能放鬆頸部。」\n\n 》舒緩肩部僵硬,可試試天宗穴,位在上背部,約在肩胛骨的中央,取穴方法是上半身直立,左手貼在右肩二分之一處,手指自然垂直,中指指尖碰到的點就是天宗穴。\n\n 不過如果背部穴道自己按不到,可以請家人朋友幫忙。例如常用的肩井穴,一人坐著,另一人站在背後雙手前臂放在背按摩者坐的肩井穴(在耳朵垂直與肩膀交會處)前後推壓,台北醫學大學附設醫院針傷科主任陳萍和建議。\n\n 也可請自己家人在上背部做大範圍的按摩,觸碰到的肩中俞、肩外俞穴都能緩解緊繃的肌肉。\n\n''五、腸胃功能失調:順時針按摩肚臍周圍的穴道''\n現代人多多少少都有腸胃功能失調的毛病,雖不是大病,但症狀發作時相當惱人。\n》脹氣令人坐臥難安,按壓內關穴及天樞穴有助消除脹氣。內關穴在手腕橫格紋以上距三指處,以大拇指用力按壓,不適感會逐漸消失。而天樞穴在肚臍左右兩邊2寸(約3指)處,可促進腸胃蠕動。\n\n》便秘時,以指尖按壓中脘穴(肚臍正上方4寸處)、孔最(肘橫紋下4寸處)、天樞穴、合谷穴,都有助腸胃收縮。或者依照升結腸(右腹部從下往上)、橫結腸(肚臍上方由右到左)降結腸(左腹部從上往下)順時針方向搓揉,會按到腹部促進腸胃蠕動的穴道,也有助排便。\n\n》胃痛先別急著吞胃藥,按摩或熱敷足三里(膝關節下方3寸)、按壓中脘穴、天樞穴都能減輕疼痛。\n\n至於平時腸胃功能的保養,可按摩脾經和足三里穴,強化腸胃功能,脾經為足部大拇趾外側至小腿中央,由下往上輕壓或熱敷5~10分鐘。\n\n''六、生理期不適:三陰交能止痛去寒''\n不少女性飽受經期紊亂、經量過多、經痛的折磨,有些人甚至要吃止痛藥才能減輕疼痛。\n\n》經痛時試試看刺激行間穴、三陰交。行間穴位於雙腳足大趾與二趾之間,能幫助打通肝經,有助解除肝氣鬱滯之害。\n\n 而位於腳外踝上方距離4指寬、在小腿脛骨內側的三陰交,是脾、肝、腎三經經過的交點,經期間單純只有腹痛的人,應該是寒氣太重、凝結小腹,刺激三陰交可以去除體內瘀血,生新血,止痛、去寒。\n\n 》其他生理期的困擾,可以試試按摩足部太溪(補腎陰,位於內踝尖和足跟上大筋的中點)、足三里(補氣)、等穴道,均可解決生理周期不穩定。\n\n''七、手腳冰冷:湧泉穴促進血液循環''\n體質虛寒,血液循環不良,經常手腳冰冷的人,長時間待在冷氣房,呼吸道及腸胃都會有問題,尤其是老人家下肢冰冷,是導致心、腦血管病症爆發的主因之一,陳萍和說。\n\n按壓湧泉(可滋陰補腎,腳掌底前半凹陷處,第2、3腳趾趾縫延伸到足跟連線約三分之一處)、關元(肚臍下3寸)、足三里都能促進血液循環,減少不舒服的症狀。\n\n湧泉穴更被稱為「長壽穴」,是腎經的首穴,《皇帝內經》中說:腎出於湧泉,湧泉者足心也。也就是腎經之氣如源泉之水,來源於足下。常常按摩湧出穴能防治哮喘、失眠多夢、頭暈、頭痛等多種困擾,中國醫藥大學中醫所教授林昭庚甚至認為,「腳底的穴道只要認識湧泉穴就足夠了。」\n\n''八、失眠:合谷、神門穴幫助安神''\n台灣有四分之一的人睡不好。按壓穴道有助氣血運行順暢,幫助你入眠。\n\n先試試神門穴,取穴方法是仰掌,握緊拳頭,手掌緣靠近小指側,腕橫紋上的凹陷即是穴位,以以拇指掐按穴位,能鎮靜安神。\n\n合谷穴能行氣止痛、內關穴友寧心安神,理氣鎮痛,紓緩心悸、胸悶及失眠症狀的效果。\n\n''◎一分鐘教室:按壓穴道到底幾次最好?''\n目前中醫界並沒有準則,但共識是按壓穴道若為保健目的,以一次按壓15~20秒,再休息5秒,反覆做10~15分鐘,若為解除疼痛,則要持續按壓到感覺痛點有舒緩跡象。力道要按到感覺,但不至於疼痛難受。\n\n 敲打經絡跟按穴道效果是一樣的。取穴時,1寸為一指寬(拇指)、1.5寸為兩指寬、2寸為三指寬。\n\n[img[http://pics5.blog.yam.com/18/userfile/m/monkeygod/album/14a765d8676cc9.jpg]]\n
/***\n|''Name:''|DatePlugin|\n|''Source:''|http://www.TiddlyTools.com/#DatePlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nThere are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW. While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier. This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.\n\nThis plugin display formatted dates, for the specified year, month, day using number values or mathematical expressions such as (Y+1) or (D+30). Optionally, you can create a link from the formatted output to a 'dated tiddler' for quick blogging or create a popup menu that includes the dated tiddler link plus links to changes made on that date as well as links to any pending reminders for the coming 31 days (if the RemindersPlugin is installed). This plugin also provides a public API for easily incorporating formatted date output (with or without the links/popups) into other plugins, such as calendar generators, etc.\n!!!!!Usage\n<<<\nWhen installed, this plugin defines a macro: {{{<<date [mode] [date] [format] [linkformat]>>}}}. All of the macro parameters are optional and, in it's simplest form, {{{<<date>>}}}, it is equivalent to the ~TiddlyWiki core macro, {{{<<today>>}}}.\n\nHowever, where {{{<<today>>}}} simply inserts the current date/time in a predefined format (or custom format, using {{{<<today [format]>>}}}), the {{{<<date>>}}} macro's parameters take it much further than that:\n* [mode] is either ''display'', ''link'' or ''popup''. If omitted, it defaults to ''display''. This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.\n* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively. You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters. Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler. You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values. \n* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax. The default is "YYYY.0MM.0DD"\n>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^\n>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^\n>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^\n>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^\n* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format\n\nIn addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:\n\n''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}'' \n\nNote that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:\n* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status: 'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.\n* [weekend] - true indicates a weekend, false indicates a weekday. When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.\n<<<\n!!!!!Examples\n<<<\nThe current date: <<date>>\nThe current time: <<date today "0hh:0mm:0ss">>\nToday's blog: <<date link today "DDD, MMM DDth, YYYY">>\nRecent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>\nThe first day of next month will be a <<date Y M+1 1 "DDD">>\nThis tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>\nThe SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>\nThis document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>\n<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''DatePlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.05.09 [2.2.1]'' added "todaybg" handling to set background color of current date. Also, honor excludeLists tag when getting lists of tiddlers. Based on suggestions by Mark Hulme.\n''2006.05.05 [2.2.0]'' added "linkedbg" handling to set background color when a 'dated tiddler' exists. Based on a suggestion by Mark Hulme.\n''2006.03.08 [2.1.2]'' add 'override leadtime' flag param in call to findTiddlersWithReminders(), and add "Enter a title" default text to new reminder handler. Thanks to Jeremy Sheeley for these additional tweaks.\n''2006.03.06 [2.1.0]'' hasReminders() nows uses window.reminderCacheForCalendar[] when present. If calendar cache is not present, indexReminders() now uses findTiddlersWithReminders() with a 90-day look ahead to check for reminders. Also, switched default background colors for autostyled dates: reminders are now greenish ("c0ffee") and holidays are now reddish ("ffaace").\n''2006.02.14 [2.0.5]'' when readOnly is set (by TW core), omit "new reminders..." popup menu item and, if a "dated tiddler" does not already exist, display the date as simple text instead of a link.\n''2006.02.05 [2.0.4]'' added var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables\n''2006.01.18 [2.0.3]'' In 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content. With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned. To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit") equals "text", and then append the new reminder to the contents of that control.\n''2006.01.11 [2.0.2]'' correct 'weekend' override detection logic in showDate()\n''2006.01.10 [2.0.1]'' allow custom-defined weekend days (default defined in config.macros.date.weekend[] array)\nadded flag param to showDate() API to override internal weekend[] array\n''2005.12.27 [2.0.0]'' Update for TW2.0\nAdded parameter handling for 'linkformat'\n''2005.12.21 [1.2.2]'' FF's date.getYear() function returns 105 (for the current year, 2005). When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number. But IE's date.getYear() already returns 2005. As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005). Adding +1900 is now conditional so the values will be correct on both browsers.\n''2005.11.07 [1.2.1]'' added support for "tiddler" dynamic date parameter\n''2005.11.06 [1.2.0]'' added support for "tiddler:title" dynamic date parameter\n''2005.11.03 [1.1.2]'' when a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu. Based on a suggestion from BenjaminKudria.\n''2005.11.03 [1.1.1]'' Temporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache. While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed. This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).\n''2005.11.01 [1.1.0]'' corrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended. This should hopefully speed up calendar generators and other plugins that render multiple dates...\n''2005.10.31 [1.0.1]'' documentation and code cleanup\n''2005.10.31 [1.0.0]'' initial public release\n''2005.10.30 [0.9.0]'' pre-release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.date = {major: 2, minor: 2, revision: 1, date: new Date(2006,5,9)};\n//}}}\n\n//{{{\nconfig.macros.date = {\n format: "YYYY.0MM.0DD", // default date display format\n linkformat: "YYYY.0MM.0DD", // 'dated tiddler' link format\n linkedbg: "#babb1e", // "babble"\n todaybg: "#ffab1e", // "fable"\n weekendbg: "#c0c0c0", // "cocoa"\n holidaybg: "#ffaace", // "face"\n modifiedsbg: "#bbeeff", // "beef"\n remindersbg: "#c0ffee", // "coffee"\n holidays: [ "01/01", "07/04", "07/24", "11/24" ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)\n weekend: [ 1,0,0,0,0,0,1 ] // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ]\n};\n//}}}\n\n//{{{\nconfig.macros.date.handler = function(place,macroName,params)\n{\n // do we want to see a link, a popup, or just a formatted date?\n var mode="display";\n if (params[0]=="display") { mode=params[0]; params.shift(); }\n if (params[0]=="popup") { mode=params[0]; params.shift(); }\n if (params[0]=="link") { mode=params[0]; params.shift(); }\n // get the date\n var now = new Date();\n var date = now;\n if (!params[0] || params[0]=="today")\n { params.shift(); }\n else if (params[0]=="filedate")\n { date=new Date(document.lastModified); params.shift(); }\n else if (params[0]=="tiddler")\n { date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }\n else if (params[0].substr(0,8)=="tiddler:")\n { var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }\n else {\n var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));\n var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));\n var d = eval(params.shift().replace(/D/ig,now.getDate()+0));\n date = new Date(y,m-1,d);\n }\n // date format with optional custom override\n var format=this.format; if (params[0]) format=params.shift();\n var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();\n showDate(place,date,mode,format,linkformat);\n}\n//}}}\n\n//{{{\nwindow.showDate=showDate;\nfunction showDate(place,date,mode,format,linkformat,autostyle,weekend)\n{\n if (!mode) mode="display";\n if (!format) format=config.macros.date.format;\n if (!linkformat) linkformat=config.macros.date.linkformat;\n if (!autostyle) autostyle=false;\n\n // format the date output\n var title = date.formatString(format);\n var linkto = date.formatString(linkformat);\n\n // just show the formatted output\n if (mode=="display") { place.appendChild(document.createTextNode(title)); return; }\n\n // link to a 'dated tiddler'\n var link = createTiddlyLink(place, linkto, false);\n link.appendChild(document.createTextNode(title));\n link.title = linkto;\n link.date = date;\n link.format = format;\n link.linkformat = linkformat;\n\n // if using a popup menu, replace click handler for dated tiddler link\n // with handler for popup and make link text non-italic (i.e., an 'existing link' look)\n if (mode=="popup") {\n link.onclick = onClickDatePopup;\n link.style.fontStyle="normal";\n }\n\n // format the popup link to show what kind of info it contains (for use with calendar generators)\n if (!autostyle) return;\n if (hasModifieds(date))\n { link.style.fontStyle="normal"; link.style.fontWeight="bold"; }\n if (hasReminders(date))\n { link.style.textDecoration="underline"; }\n if(isToday(date))\n { link.style.border="1px solid black"; }\n\n if( (weekend!=undefined?weekend:isWeekend(date)) && (config.macros.date.weekendbg!="") )\n { place.style.background = config.macros.date.weekendbg; }\n if(isHoliday(date)&&(config.macros.date.holidaybg!=""))\n { place.style.background = config.macros.date.holidaybg; }\n if (hasModifieds(date)&&(config.macros.date.modifiedsbg!=""))\n { place.style.background = config.macros.date.modifiedsbg; }\n if (store.tiddlerExists(linkto)&&(config.macros.date.linkedbg!=""))\n { place.style.background = config.macros.date.linkedbg; }\n if (hasReminders(date)&&(config.macros.date.remindersbg!=""))\n { place.style.background = config.macros.date.remindersbg; }\n if(isToday(date)&&(config.macros.date.todaybg!=""))\n { place.style.background = config.macros.date.todaybg; }\n}\n//}}}\n\n//{{{\nfunction isToday(date) // returns true if date is today\n { var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }\n\nfunction isWeekend(date) // returns true if date is a weekend\n { return (config.macros.date.weekend[date.getDay()]); }\n\nfunction isHoliday(date) // returns true if date is a holiday\n{\n var longHoliday = date.formatString("0MM/0DD/YYYY");\n var shortHoliday = date.formatString("0MM/0DD");\n for(var i = 0; i < config.macros.date.holidays.length; i++) {\n var holiday=config.macros.date.holidays[i];\n if (holiday==longHoliday||holiday==shortHoliday) return true;\n }\n return false;\n}\n//}}}\n\n//{{{\n// Event handler for clicking on a day popup\nfunction onClickDatePopup(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var popup = createTiddlerPopup(this);\n if(popup) {\n // always show dated tiddler link (or just date, if readOnly) at the top...\n if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))\n createTiddlyLink(popup,this.date.formatString(this.linkformat),true);\n else\n createTiddlyText(popup,this.date.formatString(this.linkformat));\n addModifiedsToPopup(popup,this.date,this.format);\n addRemindersToPopup(popup,this.date,this.linkformat);\n }\n scrollToTiddlerPopup(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n//{{{\nfunction indexModifieds() // build list of tiddlers, hash indexed by modification date\n{\n var modifieds= { };\n var tiddlers = store.getTiddlers("title","excludeLists");\n for (var t = 0; t < tiddlers.length; t++) {\n var date = tiddlers[t].modified.formatString("YYYY0MM0DD")\n if (!modifieds[date])\n modifieds[date]=new Array();\n modifieds[date].push(tiddlers[t].title);\n }\n return modifieds;\n}\nfunction hasModifieds(date) // returns true if date has modified tiddlers\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n return (config.macros.date.modifieds[date.formatString("YYYY0MM0DD")]!=undefined);\n}\n\nfunction addModifiedsToPopup(popup,when,format)\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n var mods = config.macros.date.modifieds[when.formatString("YYYY0MM0DD")];\n if (mods) {\n mods.sort();\n var e=createTiddlyElement(popup,"div",null,null,"changes:");\n for(var t=0; t<mods.length; t++) {\n var link=createTiddlyLink(popup,mods[t],false);\n link.appendChild(document.createTextNode(indent+mods[t]));\n createTiddlyElement(popup,"br",null,null,null);\n }\n }\n}\n//}}}\n\n//{{{\nfunction indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date\n{\n var reminders = { };\n if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed\n // DEBUG var starttime=new Date();\n var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);\n for(var i=0; i<t.length; i++) reminders[t[i].matchedDate]=true;\n // DEBUG var out="Found "+t.length+" reminders in "+((new Date())-starttime+1)+"ms\sn";\n // DEBUG out+="startdate: "+date.toLocaleDateString()+"\sn"+"leadtime: "+leadtime+" days\sn\sn";\n // DEBUG for(var i=0; i<t.length; i++) { out+=t[i].matchedDate.toLocaleDateString()+" "+t[i].params.title+"\sn"; }\n // DEBUG alert(out);\n }\n return reminders;\n}\n\nfunction hasReminders(date) // returns true if date has reminders\n{\n if (window.reminderCacheForCalendar)\n return window.reminderCacheForCalendar[date]; // use calendar cache\n if (!config.macros.date.reminders)\n config.macros.date.reminders = indexReminders(date,90); // create a 90-day leadtime reminder cache\n return (config.macros.date.reminders[date]);\n}\n\nfunction addRemindersToPopup(popup,when,format)\n{\n if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed\n\n var indent = String.fromCharCode(160)+String.fromCharCode(160);\n var reminders=findTiddlersWithReminders(when, [0,31],null,null,1);\n var e=createTiddlyElement(popup,"div",null,null,"reminders:"+(!reminders.length?" none":""));\n for(var t=0; t<reminders.length; t++) {\n link = createTiddlyLink(popup,reminders[t].tiddler,false);\n var diff=reminders[t].diff;\n diff=(diff<1)?"Today":((diff==1)?"Tomorrow":diff+" days");\n var txt=(reminders[t].params["title"])?reminders[t].params["title"]:reminders[t].tiddler;\n link.appendChild(document.createTextNode(indent+diff+" - "+txt));\n createTiddlyElement(popup,"br",null,null,null);\n }\n if (readOnly) return; // omit "new reminder..." link\n var link = createTiddlyLink(popup,indent+"new reminder...",true); createTiddlyElement(popup,"br");\n var title = when.formatString(format);\n link.title="add a reminder to '"+title+"'";\n link.onclick = function() {\n // show tiddler editor\n story.displayTiddler(null, title, 2, null, null, false, false);\n // find body 'textarea'\n var c =document.getElementById("tiddler" + title).getElementsByTagName("*");\n for (var i=0; i<c.length; i++) if ((c[i].tagName.toLowerCase()=="textarea") && (c[i].getAttribute("edit")=="text")) break;\n // append reminder macro to tiddler content\n if (i<c.length) {\n if (store.tiddlerExists(title)) c[i].value+="\sn"; else c[i].value="";\n c[i].value += "<<reminder";\n c[i].value += " day:"+when.getDate();\n c[i].value += " month:"+(when.getMonth()+1);\n c[i].value += " year:"+when.getFullYear();\n c[i].value += ' title:"Enter a title" >>';\n }\n };\n}\n//}}}\n
//{{{\n\nconfig.macros.date.holidays=[ ]; // use reminders instead\n\nif (config.options.chkGTDFancyStyle) {\n // these colours are somewhat friendlier to the default d3 menu colour scheme\n config.macros.calendar.weekendbg= "seagreen";\n config.macros.calendar.monthbg = "transparent";\n\n config.macros.date.weekendbg="seagreen";\n config.macros.date.holidaybg="seagreen";\n config.macros.date.modifiedsbg="transparent";\n config.macros.date.remindersbg="red";\n}\n\n\n//}}}
這世界若沒有愛你的心與你愛的心,那你不過是一粒飄蕩的塵埃\n提醒自己的一些問題\n我的工作備忘\n成功人士的七個習慣\n主頁圖\n
/***\n''Export Tiddlers Plugin for TiddlyWiki version 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#ExportTiddlersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nWhen many people edit copies of the same TiddlyWiki document, the ability to easily copy and share these changes so they can then be redistributed to the entire group is very important. This ability is also very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\nExportTiddlersPlugin let you ''select and extract tiddlers from your ~TiddlyWiki documents and save them to a local file'' or a remote server (requires installation of compatible server-side scripting, still under development...). An interactive control panel lets you specify a destination, and then select which tiddlers to export. A convenient 'selection filter' helps you pick desired tiddlers by specifying a combination of modification dates, tags, or tiddler text to be matched or excluded. ''Tiddler data can be output as ~TiddlyWiki "storeArea ~DIVs" that can be imported into another ~TiddlyWiki or as ~RSS-compatible XML that can be published for RSS syndication.''\n\n!!!!!Inline interface (live)\n<<<\n<<exportTiddlers inline>>\n<<<\n!!!!!Usage\n<<<\nOptional "special tiddlers" used by this plugin:\n* SiteUrl^^\nURL for official server-published version of document being viewed\ndefault: //none//^^\n* SiteHost^^\nhost name/address for remote server (e.g., "www.server.com" or "192.168.1.27")\ndefault: //none//^^\n* SitePost^^\nremote path/filename for submitting changes (e.g., "/cgi-bin/submit.cgi")\ndefault: //none//^^\n* SiteParams^^\narguments (if any) for server-side receiving script\ndefault: //none//^^\n* SiteID^^\nusername or other authorization identifier for login-controlled access to remote server\ndefault: current TiddlyWiki username (e.g., "YourName")^^\n* SiteDate^^\nstored date/time stamp for most recent published version of document\ndefault: current document.modified value (i.e., the 'file date')^^\n<<<\n!!!!!Example\n<<<\n<<exportTiddlers>>\n<<<\n!!!!!Installation\n<<<\nImport (or copy/paste) the following tiddlers into your document:\n''ExportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < exportTiddlers > >" macro^^\n<<<\n!!!!!Revision History\n<<<\n''2006.02.12 [2.1.2]''^^\nadded var to unintended global 'tags' in matchTags(). Avoids FF1501 bug when filtering by tags. (based on report by TedPavlic)\n''2006.02.04 [2.1.1]''^^\nadded var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables\n''2006.02.02 [2.1.0]''^^\nAdded support for output of complete TiddlyWiki documents. Let's you use ExportTiddlers to generate 'starter' documents from selected tiddlers.^^\n''2006.01.21 [2.0.1]''^^\nDefer initial panel creation and only register a notification function when panel first is created\nin saveChanges 'hijack', create panel as needed. Note: if window.event is not available to identify the click location, the export panel is positioned relative to the 'tiddlerDisplay' element of the TW document.\n^^\n''2005.12.27 [2.0.0]''^^\nUpdate for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n^^\n''2005.12.24 [0.9.5]''^^\nMinor adjustments to CSS to force correct link colors regardless of TW stylesheet selection\n^^\n''2005.12.16 [0.9.4]''^^\nDynamically create/remove exportPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.\n^^\n''2005.11.15 [0.9.2]''^^\nadded non-Ajax post function to bypass javascript security restrictions on cross-domain I/O. Moved AJAX functions to separate tiddler (no longer needed here). Generalized HTTP server to support UnaWiki servers\n^^\n+++[previous releases...]\n''2005.11.08 [0.9.1]''^^\nmoved HTML, CSS and control initialization into exportInit() function and call from macro handler instead of at load time. This allows exportPanel to be placed within the same containing element as the "export tiddlers" button, so that relative positioning can be achieved.\n^^\n''2005.10.28 [0.9.0]''^^\nadded 'select opened tiddlers' feature\nBased on a suggestion by Geoff Slocock\n^^\n''2005.10.24 [0.8.3]''^^\nCorrected hijack of 'save changes' when using http:\n^^\n''2005.10.18 [0.8.2]''^^\nadded AJAX functions\n^^\n''2005.10.18 [0.8.1]''^^\nCorrected timezone handling when filtering for date ranges.\nImproved error checking/reporting for invalid filter values and filters that don't match any tiddlers.\nExporting localfile-to-localfile is working for IE and FF\nExporting server-to-localfile works in IE (after ActiveX warnings), but has security issues in FF\nCross-domain exporting (localfile/server-to-server) is under development\nCookies to remember filter settings - coming soon\nMore style tweaks, minor text changes and some assorted layout cleanup.\n^^\n''2005.10.17 [0.8.0]''^^\nFirst pre-release.\n^^\n''2005.10.16 [0.7.0]''^^\nfilter by tags\n^^\n''2005.10.15 [0.6.0]''^^\nfilter by title/text\n^^\n''2005.10.14 [0.5.0]''^^\nexport to local file (DIV or XML)\n^^\n''2005.10.14 [0.4.0]''^^\nfilter by start/end date\n^^\n''2005.10.13 [0.3.0]''^^\npanel interaction\n^^\n''2005.10.11 [0.2.0]''^^\npanel layout\n^^\n''2005.10.10 [0.1.0]''^^\ncode framework\n^^\n''2005.10.09 [0.0.0]''^^\ndevelopment started\n^^\n===\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n// // +++[version]\n//{{{\nversion.extensions.exportTiddlers = {major: 2, minor: 1, revision: 2, date: new Date(2006,2,12)};\n//}}}\n// //===\n\n// // +++[macro handler]\n//{{{\nconfig.macros.exportTiddlers = {\n label: "export tiddlers",\n prompt: "Copy selected tiddlers to an export document",\n datetimefmt: "0MM/0DD/YYYY 0hh:0mm:0ss" // for "filter date/time" edit fields\n};\n\nconfig.macros.exportTiddlers.handler = function(place,macroName,params) {\n if (params[0]!="inline")\n { createTiddlyButton(place,this.label,this.prompt,onClickExportMenu); return; }\n var panel=createExportPanel(place);\n panel.style.position="static";\n panel.style.display="block";\n}\n\nfunction createExportPanel(place) {\n var panel=document.getElementById("exportPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.exportTiddlers.css,"exportTiddlers");\n panel=createTiddlyElement(place,"span","exportPanel",null,null)\n panel.innerHTML=config.macros.exportTiddlers.html;\n exportShowPanel(document.location.protocol);\n exportInitFilter();\n refreshExportList(0);\n store.addNotification(null,refreshExportList); // refresh listbox after every tiddler change\n return panel;\n}\n\nfunction onClickExportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("exportPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createExportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n// //===\n\n// // +++[Hijack saveChanges] diverts 'notFileUrlError' to display export control panel instead\n//{{{\nwindow.coreSaveChanges=window.saveChanges;\nwindow.saveChanges = function()\n{\n if (document.location.protocol=="file:") { coreSaveChanges(); return; }\n var e = window.event;\n var parent=e?resolveTarget(e).parentNode:document.body;\n var panel = document.getElementById("exportPanel");\n if (panel==undefined || panel.parentNode!=parent) panel=createExportPanel(parent);\n exportShowPanel(document.location.protocol);\n if (parent==document.body) { panel.style.left="30%"; panel.style.top="30%"; }\n panel.style.display = "block" ;\n}\n//}}}\n// //===\n\n// // +++[IE needs explicit scoping] for functions called by browser events\n//{{{\nwindow.onClickExportMenu=onClickExportMenu;\nwindow.onClickExportButton=onClickExportButton;\nwindow.exportShowPanel=exportShowPanel;\nwindow.exportShowFilterFields=exportShowFilterFields;\nwindow.refreshExportList=refreshExportList;\n//}}}\n// //===\n\n// // +++[CSS] for floating export control panel\n//{{{\nconfig.macros.exportTiddlers.css = '\s\n#exportPanel {\s\n display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em;\s\n}\s\n#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\s\n#exportPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\s\n#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\s\n#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\s\n#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\s\n#exportPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#exportPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\s\n#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\s\n#exportPanel .rad { width:auto; }\s\n#exportPanel .chk { width:auto; }\s\n#exportPanel .btn { width:auto; }\s\n#exportPanel .btn1 { width:98%; }\s\n#exportPanel .btn2 { width:48%; }\s\n#exportPanel .btn3 { width:32%; }\s\n#exportPanel .btn4 { width:24%; }\s\n#exportPanel .btn5 { width:19%; }\s\n';\n//}}}\n// //===\n\n// // +++[HTML] for export control panel interface\n//{{{\nconfig.macros.exportTiddlers.html = '\s\n<!-- output target and format -->\s\n<table cellpadding="0" cellspacing="0"><tr><td width=50%>\s\n export to\s\n <select size=1 id="exportTo" onchange="exportShowPanel(this.value);">\s\n <option value="file:" SELECTED>this computer</option>\s\n <option value="http:">web server (http)</option>\s\n <option value="https:">secure web server (https)</option>\s\n <option value="ftp:">file server (ftp)</option>\s\n </select>\s\n</td><td width=50%>\s\n output format\s\n <select id="exportFormat" size=1>\s\n <option value="DIV">TiddlyWiki export file</option>\s\n <option value="TW">TiddlyWiki document</option>\s\n <option value="XML">RSS feed (XML)</option>\s\n </select>\s\n</td></tr></table>\s\n\s\n<!-- export to local file -->\s\n<div id="exportLocalPanel" style="margin-bottom:5px;margin-top:5px;">\s\nlocal path/filename<br>\s\n<input type="file" id="exportFilename" size=56 style="width:100%"><br>\s\n</div><!--panel-->\s\n\s\n<!-- export to http server -->\s\n<div id="exportHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;">\s\ndocument URL<br>\s\n<input type="text" id="exportHTTPSiteURL" onfocus="this.select()"><br>\s\nserver script / parameters<br>\s\n<input type="text" id="exportHTTPServerURL" onfocus="this.select()"><br>\s\n</div><!--panel-->\s\n\s\n<!-- export to ftp server -->\s\n<div id="exportFTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;">\s\n<table cellpadding="0" cellspacing="0" width="33%"><tr valign="top"><td>\s\n host server<br>\s\n <input type="text" id="exportFTPHost" onfocus="this.select()"><br>\s\n</td><td width="33%">\s\n username<br>\s\n <input type="text" id="exportFTPID" onfocus="this.select()"><br>\s\n</td><td width="33%">\s\n password<br>\s\n <input type="password" id="exportFTPPW" onfocus="this.select()"><br>\s\n</td></tr></table>\s\nFTP path/filename<br>\s\n<input type="text" id="exportFTPFilename" onfocus="this.select()"><br>\s\n</div><!--panel-->\s\n\s\n<!-- list of tiddlers -->\s\n<table><tr align="left"><td>\s\n select:\s\n <a href="JavaScript:;" id="exportSelectAll"\s\n onclick="onClickExportButton(this)" title="select all tiddlers">\s\n all </a>\s\n <a href="JavaScript:;" id="exportSelectChanges"\s\n onclick="onClickExportButton(this)" title="select tiddlers changed since last save">\s\n changes </a> \s\n <a href="JavaScript:;" id="exportSelectOpened"\s\n onclick="onClickExportButton(this)" title="select tiddlers currently being displayed">\s\n opened </a> \s\n <a href="JavaScript:;" id="exportToggleFilter"\s\n onclick="onClickExportButton(this)" title="show/hide selection filter">\s\n filter </a> \s\n</td><td align="right">\s\n <a href="JavaScript:;" id="exportListSmaller"\s\n onclick="onClickExportButton(this)" title="reduce list size">\s\n – </a>\s\n <a href="JavaScript:;" id="exportListLarger"\s\n onclick="onClickExportButton(this)" title="increase list size">\s\n + </a>\s\n</td></tr></table>\s\n<select id="exportList" multiple size="10" style="margin-bottom:5px;"\s\n onchange="refreshExportList(this.selectedIndex)">\s\n</select><br>\s\n\s\n<!-- selection filter -->\s\n<div id="exportFilterPanel" style="display:none">\s\n<table><tr align="left"><td>\s\n selection filter\s\n</td><td align="right">\s\n <a href="JavaScript:;" id="exportHideFilter"\s\n onclick="onClickExportButton(this)" title="hide selection filter">hide</a>\s\n</td></tr></table>\s\n<div class="box">\s\n<input type="checkbox" class="chk" id="exportFilterStart" value="1"\s\n onclick="exportShowFilterFields(this)"> starting date/time<br>\s\n<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\s\n <select size=1 id="exportFilterStartBy" onchange="exportShowFilterFields(this);">\s\n <option value="0">today</option>\s\n <option value="1">yesterday</option>\s\n <option value="7">a week ago</option>\s\n <option value="30">a month ago</option>\s\n <option value="site">SiteDate</option>\s\n <option value="file">file date</option>\s\n <option value="other">other (mm/dd/yyyy hh:mm)</option>\s\n </select>\s\n</td><td width="50%">\s\n <input type="text" id="exportStartDate" onfocus="this.select()"\s\n onchange="document.getElementById(\s'exportFilterStartBy\s').value=\s'other\s';">\s\n</td></tr></table>\s\n<input type="checkbox" class="chk" id="exportFilterEnd" value="1"\s\n onclick="exportShowFilterFields(this)"> ending date/time<br>\s\n<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\s\n <select size=1 id="exportFilterEndBy" onchange="exportShowFilterFields(this);">\s\n <option value="0">today</option>\s\n <option value="1">yesterday</option>\s\n <option value="7">a week ago</option>\s\n <option value="30">a month ago</option>\s\n <option value="site">SiteDate</option>\s\n <option value="file">file date</option>\s\n <option value="other">other (mm/dd/yyyy hh:mm)</option>\s\n </select>\s\n</td><td width="50%">\s\n <input type="text" id="exportEndDate" onfocus="this.select()"\s\n onchange="document.getElementById(\s'exportFilterEndBy\s').value=\s'other\s';">\s\n</td></tr></table>\s\n<input type="checkbox" class="chk" id=exportFilterTags value="1"\s\n onclick="exportShowFilterFields(this)"> match tags<br>\s\n<input type="text" id="exportTags" onfocus="this.select()">\s\n<input type="checkbox" class="chk" id=exportFilterText value="1"\s\n onclick="exportShowFilterFields(this)"> match titles/tiddler text<br>\s\n<input type="text" id="exportText" onfocus="this.select()">\s\n</div> <!--box-->\s\n</div> <!--panel-->\s\n\s\n<!-- action buttons -->\s\n<div style="text-align:center">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportFilter" value="apply filter">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportStart" value="export tiddlers">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportClose" value="close">\s\n</div><!--center-->\s\n';\n//}}}\n// //===\n\n// // +++[initialize interface]>\n// // +++[exportShowPanel(which)]\n//{{{\nfunction exportShowPanel(which) {\n var index=0; var panel='exportLocalPanel';\n switch (which) {\n case 'file:':\n case undefined:\n index=0; panel='exportLocalPanel'; break;\n case 'http:':\n index=1; panel='exportHTTPPanel'; break;\n case 'https:':\n index=2; panel='exportHTTPPanel'; break;\n case 'ftp:':\n index=3; panel='exportFTPPanel'; break;\n default:\n alert("Sorry, export to "+which+" is not yet available");\n break;\n }\n exportInitPanel(which);\n document.getElementById('exportTo').selectedIndex=index;\n document.getElementById('exportLocalPanel').style.display='none';\n document.getElementById('exportHTTPPanel').style.display='none';\n document.getElementById('exportFTPPanel').style.display='none';\n document.getElementById(panel).style.display='block';\n}\n//}}}\n// //===\n\n// // +++[exportInitPanel(which)]\n//{{{\nfunction exportInitPanel(which) {\n switch (which) {\n case "file:": // LOCAL EXPORT PANEL: file/path:\n // ** no init - security issues in IE **\n break;\n case "http:": // WEB EXPORT PANEL\n case "https:": // SECURE WEB EXPORT PANEL\n // url\n var siteURL=store.getTiddlerText("SiteUrl");\n if (store.tiddlerExists("unawiki_download")) {\n var theURL=store.getTiddlerText("unawiki_download");\n theURL=theURL.replace(/\s[\s[download\s|/,'').replace(/\s]\s]/,'');\n var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";\n var theHost=store.getTiddlerText(title);\n if (!theHost || !theHost.length) theHost=document.location.host;\n if (!theHost || !theHost.length) theHost=title;\n siteURL=which+"//"+theHost+theURL\n }\n if (!siteURL) siteURL="SiteUrl";\n document.getElementById("exportHTTPSiteURL").value=siteURL;;\n // server script/params\n var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";\n var theHost=store.getTiddlerText(title);\n if (!theHost || !theHost.length) theHost=document.location.host;\n if (!theHost || !theHost.length) theHost=title;\n // get POST\n var title=(store.tiddlerExists("unawiki_post"))?"unawiki_post":"SitePost";\n var thePost=store.getTiddlerText(title);\n if (!thePost || !thePost.length) thePost="/"+title;\n // get PARAMS\n var title=(store.tiddlerExists("unawiki_params"))?"unawiki_params":"SiteParams";\n var theParams=store.getTiddlerText(title);\n if (!theParams|| !theParams.length) theParams=title;\n var serverURL = which+"//"+theHost+thePost+"?"+theParams;\n document.getElementById("exportHTTPServerURL").value=serverURL;\n break;\n case "ftp:": // FTP EXPORT PANEL\n // host\n var siteHost=store.getTiddlerText("SiteHost");\n if (!siteHost || !siteHost.length) siteHost=document.location.host;\n if (!siteHost || !siteHost.length) siteHost="SiteHost";\n document.getElementById("exportFTPHost").value=siteHost;\n // username\n var siteID=store.getTiddlerText("SiteID");\n if (!siteID || !siteID.length) siteID=config.options.txtUserName;\n document.getElementById("exportFTPID").value=siteID;\n // password\n document.getElementById("exportFTPPW").value="";\n // file/path\n document.getElementById("exportFTPFilename").value="";\n break;\n }\n}\n//}}}\n// //===\n\n// // +++[exportInitFilter()]\n//{{{\nfunction exportInitFilter() {\n // TBD: persistent settings via local cookies\n // start date\n document.getElementById("exportFilterStart").checked=false;\n document.getElementById("exportStartDate").value="";\n // end date\n document.getElementById("exportFilterEnd").checked=false;\n document.getElementById("exportEndDate").value="";\n // tags\n document.getElementById("exportFilterTags").checked=false;\n document.getElementById("exportTags").value="not excludeExport";\n // text\n document.getElementById("exportFilterText").checked=false;\n document.getElementById("exportText").value="";\n // show/hide filter input fields\n exportShowFilterFields();\n}\n//}}}\n// //===\n\n// // +++[exportShowFilterFields(which)]\n//{{{\nfunction exportShowFilterFields(which) {\n var show;\n\n show=document.getElementById('exportFilterStart').checked;\n document.getElementById('exportFilterStartBy').style.display=show?"block":"none";\n document.getElementById('exportStartDate').style.display=show?"block":"none";\n var val=document.getElementById('exportFilterStartBy').value;\n document.getElementById('exportStartDate').value\n =getFilterDate(val,'exportStartDate').formatString(config.macros.exportTiddlers.datetimefmt);\n if (which && (which.id=='exportFilterStartBy') && (val=='other'))\n document.getElementById('exportStartDate').focus();\n\n show=document.getElementById('exportFilterEnd').checked;\n document.getElementById('exportFilterEndBy').style.display=show?"block":"none";\n document.getElementById('exportEndDate').style.display=show?"block":"none";\n var val=document.getElementById('exportFilterEndBy').value;\n document.getElementById('exportEndDate').value\n =getFilterDate(val,'exportEndDate').formatString(config.macros.exportTiddlers.datetimefmt);\n if (which && (which.id=='exportFilterEndBy') && (val=='other'))\n document.getElementById('exportEndDate').focus();\n\n show=document.getElementById('exportFilterTags').checked;\n document.getElementById('exportTags').style.display=show?"block":"none";\n\n show=document.getElementById('exportFilterText').checked;\n document.getElementById('exportText').style.display=show?"block":"none";\n}\n//}}}\n// //===\n// //===\n\n// // +++[onClickExportButton(which): control interactions]\n//{{{\nfunction onClickExportButton(which)\n{\n // DEBUG alert(which.id);\n var theList=document.getElementById('exportList'); if (!theList) return;\n var count = 0;\n var total = store.getTiddlers('title').length;\n switch (which.id)\n {\n case 'exportFilter':\n count=filterExportList();\n var panel=document.getElementById('exportFilterPanel');\n if (count==-1) { panel.style.display='block'; break; }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage("filtered "+theList.options[0].text);\n if (count==0) { alert("No tiddlers were selected"); panel.style.display='block'; }\n break;\n case 'exportStart':\n exportTiddlers();\n break;\n case 'exportHideFilter':\n case 'exportToggleFilter':\n var panel=document.getElementById('exportFilterPanel')\n panel.style.display=(panel.style.display=='block')?'none':'block';\n break;\n case 'exportSelectChanges':\n var lastmod=new Date(document.lastModified);\n for (var t = 0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;\n theList.options[t].selected=(tiddler.modified>lastmod);\n count += (tiddler.modified>lastmod)?1:0;\n }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n if (count==0) alert("There are no unsaved changes");\n break;\n case 'exportSelectAll':\n for (var t = 0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count += 1;\n }\n theList.options[0].text=formatExportListHeader(count,count);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n break;\n case 'exportSelectOpened':\n for (var t = 0; t < theList.options.length; t++) theList.options[t].selected=false;\n var tiddlerDisplay = document.getElementById("tiddlerDisplay");\n for (var t=0;t<tiddlerDisplay.childNodes.length;t++) {\n var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);\n for (var i = 0; i < theList.options.length; i++) {\n if (theList.options[i].value!=tiddler) continue;\n theList.options[i].selected=true; count++; break;\n }\n }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n if (count==0) alert("There are no tiddlers currently opened");\n break;\n case 'exportListSmaller': // decrease current listbox size\n var min=5;\n theList.size-=(theList.size>min)?1:0;\n break;\n case 'exportListLarger': // increase current listbox size\n var max=(theList.options.length>25)?theList.options.length:25;\n theList.size+=(theList.size<max)?1:0;\n break;\n case 'exportClose':\n document.getElementById('exportPanel').style.display='none';\n break;\n }\n}\n//}}}\n// //===\n\n// // +++[list display]\n//{{{\nfunction formatExportListHeader(count,total)\n{\n var txt=total+' tiddler'+((total!=1)?'s':'')+" - ";\n txt += (count==0)?"none":(count==total)?"all":count;\n txt += " selected for export";\n return txt;\n}\n\nfunction refreshExportList(selectedIndex)\n{\n var theList = document.getElementById("exportList");\n var sort;\n if (!theList) return;\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) sort='modified';\n if (selectedIndex==1) sort='title';\n if (selectedIndex==2) sort='modified';\n if (selectedIndex==3) sort='modifier';\n\n // get the alphasorted list of tiddlers\n var tiddlers = store.getTiddlers('title');\n // unselect headings and count number of tiddlers actually selected\n var count=0;\n for (var i=0; i<theList.options.length; i++) {\n if (theList.options[i].value=="") theList.options[i].selected=false;\n count+=theList.options[i].selected?1:0;\n }\n // disable "export" button if no tiddlers selected\n document.getElementById("exportStart").disabled=(count==0);\n // update listbox heading to show selection count\n if (theList.options.length)\n theList.options[0].text=formatExportListHeader(count,tiddlers.length);\n\n // if a [command] item, reload list... otherwise, no further refresh needed\n if (selectedIndex>3) return;\n\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=\n new Option(formatExportListHeader(0,tiddlers.length), "",false,false);\n theList.options[i++]=\n new Option(((sort=="title" )?">":indent)+' [by title]', "",false,false);\n theList.options[i++]=\n new Option(((sort=="modified")?">":indent)+' [by date]', "",false,false);\n theList.options[i++]=\n new Option(((sort=="modifier")?">":indent)+' [by author]', "",false,false);\n // output the tiddler list\n switch(sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modifier":\n case "modified":\n var tiddlers = store.getTiddlers(sort);\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++)\n {\n var tiddler = tiddlers[t];\n var theSection = "";\n if (sort=="modified") theSection=tiddler.modified.toLocaleDateString();\n if (sort=="modifier") theSection=tiddler.modifier;\n if (theSection != lastSection)\n {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n}\n//}}}\n// //===\n\n// // +++[list filtering]\n//{{{\nfunction getFilterDate(val,id)\n{\n var result=0;\n switch (val) {\n case 'site':\n var timestamp=store.getTiddlerText("SiteDate");\n if (!timestamp) timestamp=document.lastModified;\n result=new Date(timestamp);\n break;\n case 'file':\n result=new Date(document.lastModified);\n break;\n case 'other':\n result=new Date(document.getElementById(id).value);\n break;\n default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31\n var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;\n var oneday=86400000;\n if (id=='exportStartDate')\n result=new Date((Math.floor(now/oneday)-val)*oneday+tz);\n else\n result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);\n break;\n }\n // DEBUG alert('getFilterDate('+val+','+id+')=='+result+"\snnow="+now);\n return result;\n}\n\nfunction filterExportList()\n{\n var theList = document.getElementById("exportList"); if (!theList) return -1;\n\n var filterStart=document.getElementById("exportFilterStart").checked;\n var val=document.getElementById("exportFilterStartBy").value;\n var startDate=getFilterDate(val,'exportStartDate');\n\n var filterEnd=document.getElementById("exportFilterEnd").checked;\n var val=document.getElementById("exportFilterEndBy").value;\n var endDate=getFilterDate(val,'exportEndDate');\n\n var filterTags=document.getElementById("exportFilterTags").checked;\n var tags=document.getElementById("exportTags").value;\n\n var filterText=document.getElementById("exportFilterText").checked;\n var text=document.getElementById("exportText").value;\n\n if (!(filterStart||filterEnd||filterTags||filterText)) {\n alert("Please set the selection filter");\n document.getElementById('exportFilterPanel').style.display="block";\n return -1;\n }\n if (filterStart&&filterEnd&&(startDate>endDate)) {\n var msg="starting date/time:\sn"\n msg+=startDate.toLocaleString()+"\sn";\n msg+="is later than ending date/time:\sn"\n msg+=endDate.toLocaleString()\n alert(msg);\n return -1;\n }\n\n // scan list and select tiddlers that match all applicable criteria\n var total=0;\n var count=0;\n for (var i=0; i<theList.options.length; i++) {\n // get item, skip non-tiddler list items (section headings)\n var opt=theList.options[i]; if (opt.value=="") continue;\n // get tiddler, skip missing tiddlers (this should NOT happen)\n var tiddler=store.getTiddler(opt.value); if (!tiddler) continue; \n var sel=true;\n if ( (filterStart && tiddler.modified<startDate)\n || (filterEnd && tiddler.modified>endDate)\n || (filterTags && !matchTags(tiddler,tags))\n || (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))\n sel=false;\n opt.selected=sel;\n count+=sel?1:0;\n total++;\n }\n return count;\n}\n//}}}\n\n//{{{\nfunction matchTags(tiddler,cond)\n{\n if (!cond||!cond.trim().length) return false;\n\n // build a regex of all tags as a big-old regex that \n // OR's the tags together (tag1|tag2|tag3...) in length order\n var tgs = store.getTags();\n if ( tgs.length == 0 ) return results ;\n var tags = tgs.sort( function(a,b){return (a[0].length<b[0].length)-(a[0].length>b[0].length);});\n var exp = "(" + tags.join("|") + ")" ;\n exp = exp.replace( /(,[\sd]+)/g, "" ) ;\n var regex = new RegExp( exp, "ig" );\n\n // build a string such that an expression that looks like this: tag1 AND tag2 OR NOT tag3\n // turns into : /tag1/.test(...) && /tag2/.test(...) || ! /tag2/.test(...)\n cond = cond.replace( regex, "/$1\s\s|/.test(tiddlerTags)" );\n cond = cond.replace( /\ssand\ss/ig, " && " ) ;\n cond = cond.replace( /\ssor\ss/ig, " || " ) ;\n cond = cond.replace( /\ss?not\ss/ig, " ! " ) ;\n\n // if a boolean uses a tag that doesn't exist - it will get left alone \n // (we only turn existing tags into actual tests).\n // replace anything that wasn't found as a tag, AND, OR, or NOT with the string "false"\n // if the tag doesn't exist then /tag/.test(...) will always return false.\n cond = cond.replace( /(\ss|^)+[^\s/\s|&!][^\ss]*/g, "false" ) ;\n\n // make a string of the tags in the tiddler and eval the 'cond' string against that string \n // if it's TRUE then the tiddler qualifies!\n var tiddlerTags = (tiddler.tags?tiddler.tags.join("|"):"")+"|" ;\n try { if ( eval( cond ) ) return true; }\n catch( e ) { displayMessage("Error in tag filter '" + e + "'" ); }\n return false;\n}\n//}}}\n// //===\n\n// // +++[output data formatting]>\n// // +++[exportHeader(format)]\n//{{{\nfunction exportHeader(format)\n{\n switch (format) {\n case "TW": return exportTWHeader();\n case "DIV": return exportDIVHeader();\n case "XML": return exportXMLHeader();\n }\n}\n//}}}\n// //===\n\n// // +++[exportFooter(format)]\n//{{{\nfunction exportFooter(format)\n{\n switch (format) {\n case "TW": return exportDIVFooter();\n case "DIV": return exportDIVFooter();\n case "XML": return exportXMLFooter();\n }\n}\n//}}}\n// //===\n\n// // +++[exportTWHeader()]\n//{{{\nfunction exportTWHeader()\n{\n // Get the URL of the document\n var originalPath = document.location.toString();\n // Check we were loaded from a file URL\n if(originalPath.substr(0,5) != "file:")\n { alert(config.messages.notFileUrlError); return; }\n // Remove any location part of the URL\n var hashPos = originalPath.indexOf("#"); if(hashPos != -1) 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 // Load the original file\n var original = loadFile(localPath);\n if(original == null)\n { alert(config.messages.cantSaveError); return; }\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n { alert(config.messages.invalidFileError.format([localPath])); return; }\n return original.substr(0,posOpeningDiv+startSaveArea.length)\n}\n//}}}\n// //===\n\n// // +++[exportDIVHeader()]\n//{{{\nfunction exportDIVHeader()\n{\n var out=[];\n var now = new Date();\n var u = store.getTiddlerText("SiteUrl",null);\n var title = wikifyPlain("SiteTitle").htmlEncode();\n var subtitle = wikifyPlain("SiteSubtitle").htmlEncode();\n var user = config.options.txtUserName.htmlEncode();\n var twver = version.major+"."+version.minor+"."+version.revision;\n var pver = version.extensions.exportTiddlers.major+"."\n +version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;\n out.push("<html><body>");\n out.push("<style type=\s"text/css\s">");\n out.push("#storeArea {display:block;margin:1em;}");\n out.push("#storeArea div");\n out.push("{padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}");\n out.push("#javascriptWarning");\n out.push("{width:100%;text-align:left;background-color:#eeeeee;padding:1em;}");\n out.push("</style>");\n out.push("<div id=\s"javascriptWarning\s">");\n out.push("TiddlyWiki export file<br>");\n out.push("Source: <b>"+document.location+"</b><br>");\n out.push("Title: <b>"+title+"</b><br>");\n out.push("Subtitle: <b>"+subtitle+"</b><br>");\n out.push("Created: <b>"+now.toLocaleString()+"</b> by <b>"+user+"</b><br>");\n out.push("TiddlyWiki "+twver+" / "+"ExportTiddlersPlugin "+pver+"<br>");\n out.push("</div>");\n out.push("<div id=\s"storeArea\s">");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportDIVFooter()]\n//{{{\nfunction exportDIVFooter()\n{\n var out=[];\n out.push("</div></body></html>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportXMLHeader()]\n//{{{\nfunction exportXMLHeader()\n{\n var out=[];\n var now = new Date();\n var u = store.getTiddlerText("SiteUrl",null);\n var title = wikifyPlain("SiteTitle").htmlEncode();\n var subtitle = wikifyPlain("SiteSubtitle").htmlEncode();\n var user = config.options.txtUserName.htmlEncode();\n var twver = version.major+"."+version.minor+"."+version.revision;\n var pver = version.extensions.exportTiddlers.major+"."\n +version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;\n out.push("<" + "?xml version=\s"1.0\s"?" + ">");\n out.push("<rss version=\s"2.0\s">");\n out.push("<channel>");\n out.push("<title>" + title + "</title>");\n if(u) out.push("<link>" + u.htmlEncode() + "</link>");\n out.push("<description>" + subtitle + "</description>");\n out.push("<language>en-us</language>");\n out.push("<copyright>Copyright " + now.getFullYear() + " " + user + "</copyright>");\n out.push("<pubDate>" + now.toGMTString() + "</pubDate>");\n out.push("<lastBuildDate>" + now.toGMTString() + "</lastBuildDate>");\n out.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");\n out.push("<generator>TiddlyWiki "+twver+" plus ExportTiddlersPlugin "+pver+"</generator>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportXMLFooter()]\n//{{{\nfunction exportXMLFooter()\n{\n var out=[];\n out.push("</channel></rss>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportData()]\n//{{{\nfunction exportData(theList,theFormat)\n{\n // scan export listbox and collect DIVs or XML for selected tiddler content\n var out=[];\n for (var i=0; i<theList.options.length; i++) {\n // get item, skip non-selected items and section headings\n var opt=theList.options[i]; if (!opt.selected||(opt.value=="")) continue;\n // get tiddler, skip missing tiddlers (this should NOT happen)\n var thisTiddler=store.getTiddler(opt.value); if (!thisTiddler) continue; \n if (theFormat=="TW") out.push(thisTiddler.saveToDiv());\n if (theFormat=="DIV") out.push(thisTiddler.title+"\sn"+thisTiddler.saveToDiv());\n if (theFormat=="XML") out.push(thisTiddler.saveToRss());\n }\n return out;\n}\n//}}}\n// //===\n// //===\n\n// // +++[exportTiddlers(): output selected data to local or server]\n//{{{\nfunction exportTiddlers()\n{\n var theList = document.getElementById("exportList"); if (!theList) return;\n\n // get the export settings\n var theProtocol = document.getElementById("exportTo").value;\n var theFormat = document.getElementById("exportFormat").value;\n\n // assemble output: header + tiddlers + footer\n var theData=exportData(theList,theFormat);\n var count=theData.length;\n var out=[]; var txt=out.concat(exportHeader(theFormat),theData,exportFooter(theFormat)).join("\sn");\n var msg="";\n switch (theProtocol) {\n case "file:":\n var theTarget = document.getElementById("exportFilename").value.trim();\n if (!theTarget.length) msg = "A local path/filename is required\sn";\n if (!msg && saveFile(theTarget,txt))\n msg=count+" tiddler"+((count!=1)?"s":"")+" exported to local file";\n else if (!msg)\n msg+="An error occurred while saving to "+theTarget;\n break;\n case "http:":\n case "https:":\n var theTarget = document.getElementById("exportHTTPServerURL").value.trim();\n if (!theTarget.length) msg = "A server URL is required\sn";\n if (!msg && exportPost(theTarget+encodeURIComponent(txt)))\n msg=count+" tiddler"+((count!=1)?"s":"")+" exported to "+theProtocol+" server";\n else if (!msg)\n msg+="An error occurred while saving to "+theTarget;\n break;\n case "ftp:":\n default:\n msg="Sorry, export to "+theLocation+" is not yet available";\n break;\n }\n clearMessage(); displayMessage(msg,theTarget);\n}\n//}}}\n// //===\n\n// // +++[exportPost(url): cross-domain post] uses hidden iframe to submit url and capture responses\n//{{{\nfunction exportPost(url)\n{\n var f=document.getElementById("exportFrame"); if (f) document.body.removeChild(f);\n f=document.createElement("iframe"); f.id="exportFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n d.location.replace(url);\n return true;\n}\n//}}}\n// //===\n
+++(gtdProjectsSliderState)[Projects]<<tiddler ProjectList>>===\n+++(gtdActionsSliderState)[Actions]<<list tagged context>>===\n+++(gtdReviewSliderState)[Review]\n*[[Summary Review]]\n*[[Project Review]]\n*[[Action Review]]\n*[[Reminders]]\n===\n\n<<newerTiddler button:"Create new project" name:"NewProject" tags:"project" template:"NewProjectTemplate">> <<newerTiddler button:"Create new context" name:"NewContext" tags:"context" template:"NewContextTemplate">> <<newerTiddler button:"Create new action" name:"NewAction" tags:"action" template:"NewActionTemplate">>\n[[Ticklers]] [[Reference]] [[Someday-Maybe]]\n+++[Calendar|Show a calendar]<<calendar thismonth>>===\n\n[[Configuration|Configuration Options]] [[Check for Updates|UpdateApplication]] [[Archives]]
/***\n|''Name:''|GTDPlugins|\n|''Description:''|Plugin to support Getting Things Done|\n|''Version:''|<<gtdVersion>>|\n|''Date:''|June 6, 2007|\n|''Source:''|http://www.dcubed.ca/|\n|''Author:''|Tom Otvos|\n|''~CoreVersion:''|2.0.11|\n|''Browser:''|Firefox 1.5+; InternetExplorer 6.0+|\n***/\n\n/***\n''Macros:''\n*{{{<<gtdAction "}}}//title//{{{" "}}}//context list//{{{">>}}}\n*{{{<<gtdActionList {"}}}//context list//{{{" | "*" | "@" {"all" | "noproject" | "projectonly"} }>>}}}\n** //if no parameters are specified, current context or project is used//\n** //specify "*" for actions across all projects, "@" for incomplete actions across all contexts (or "all" for all actions)//\n** //use "projectonly" or "noproject" to filter actions by project association//\n*{{{<<list tagged "}}}//tag list//{{{" {any | all}>>}}}\n** //if no parameters are specified, all tags are necessary//\n*{{{<<gtdActionCompleted>>}}}\n*{{{<<gtdToggleTag>>}}}\n*{{{<<gtdToggleState>>}}}\n*{{{<<importUpdates "}}}//url//{{{" {updates | all} "}}}//buttonTitle//{{{" "}}}//buttonHelp//{{{" "}}}//importTiddlers params...//{{{">>}}}\n*{{{<<gtdArchive { archive | unarchive | purge }>>}}}\n\n''Commands:''\n*{{{newAction}}}\n*{{{newProjectAction}}}\n*{{{changeContext}}}\n*{{{deleteAction}}}\n*{{{deleteContext}}}\n*{{{deleteProject}}}\n*{{{deleteProjectAll}}}\n*{{{projectify}}}\n\n''Wiki formatting:''\n*{{{..new action title|context}}}\n\n***/\n//{{{\n\nversion.extensions.GTDPlugins = {major: 1, minor: 2, revision: 0, patch: 0 };\n\nvar _GTD = {\n\n lazyAutoSave: 0,\n contextCache: null,\n usingProjectTags: true,\n projectPriorities: [],\n\n initialize: function ()\n {\n var d = new Date();\n\n if (config.options.txtGTDReferenceContext == undefined) config.options.txtGTDReferenceContext = "reference";\n if (config.options.txtGTDSomedayContext == undefined) config.options.txtGTDSomedayContext = "someday";\n if (config.options.txtGTDUnfiledContext == undefined) config.options.txtGTDUnfiledContext = "unfiled";\n if (config.options.txtGTDActionAging == undefined) config.options.txtGTDActionAging = "";\n if (config.options.chkGTDFancyStyle == undefined) config.options.chkGTDFancyStyle = true;\n if (config.options.chkGTDLazyAutoSave == undefined) config.options.chkGTDLazyAutoSave = true;\n if (config.options.txtGTDLazyAutoSaveInterval == undefined) config.options.txtGTDLazyAutoSaveInterval = "60";\n if (config.options.txtGTDProjectPriorities == undefined) config.options.txtGTDProjectPriorities = "";\n \n // some tricks to work when our script is loaded from an external file...\n if (!store) config.notifyTiddlers.push( {name: "GTDStyleSheet", notify: refreshStyles} );\n if (!store && config.options.chkGTDFancyStyle) config.notifyTiddlers.push( {name: "GTDTWStyleSheet", notify: refreshStyles} );\n if (!store) config.notifyTiddlers.push( {name: null, notify: _GTD.refreshActionViews} );\n \n this.setReviewUpdate();\n this.setLazyAutoSave();\n \n if (config.options.txtGTDProjectPriorities.length == 0)\n this.projectPriorities = [ "important" ];\n else\n this.projectPriorities = config.options.txtGTDProjectPriorities.split(';');\n \n if (!store) return;\n \n if ((version.major == 2 && version.minor < 1) || !store.tiddlerExists("d3 settings")) {\n // we force a changed() call on all projects, contexts, and actions, to enable them to set up their cross-references\n var tiddlers = [];\n tiddlers = tiddlers.concat(store.getTaggedTiddlers("project"), store.getTaggedTiddlers("context"), store.getTaggedTiddlers("action"));\n for (var i = 0; i < tiddlers.length; i++)\n tiddlers[i].changed();\n \n // if we have tiddler meta data, rebuild it\n if (version.major > 2 || version.minor > 0)\n this.rebuildMetaData();\n }\n else {\n this.initializeFromMetaData();\n this.usingProjectTags = false;\n }\n \n store.addNotification("GTDStyleSheet", refreshStyles);\n if (config.options.chkGTDFancyStyle) store.addNotification("GTDTWStyleSheet", refreshStyles);\n store.addNotification(null, _GTD.refreshActionViews);\n \n // force a display of release notes, if required\n var v = version.extensions.GTDPlugins;\n var releaseNotesTiddler = "About version " + v.major + '.' + v.minor + '.' + v.revision;\n if ((config.options.chkGTDReleaseNotes || config.options.chkGTDReleaseNotes == undefined) && store.tiddlerExists(releaseNotesTiddler)) {\n params = "open:\s"" + releaseNotesTiddler + "\s"";\n params = params.parseParams("open",null,false);\n config.options.chkGTDReleaseNotes = false;\n saveOptionCookie("chkGTDReleaseNotes");\n }\n\n if (version.major > 2 || version.minor > 0)\n pluginInfo.log.push('Initialized in ' + ((new Date()).getTime() - d.getTime()) + ' milliseconds');\n },\n \n rebuildMetaData: function()\n {\n pluginInfo.log.push('Rebuilding action metadata...');\n\n store.suspendNotifications();\n var tiddlers = store.getTaggedTiddlers("action");\n for (var i = 0; i < tiddlers.length; i++) {\n var t = tiddlers[i];\n store.setValue(t, "gtd");\n store.setValue(t, "gtd.context", t.gtdContextName);\n if (t.gtdProject) store.setValue(t, "gtd.project", t.gtdProject.title);\n if (t.gtdProject) store.setValue(t, "gtd.projectindex", t.gtdProject.gtdActions.indexOf(t));\n // booo...scary...strip out project tag\n if (t.gtdProject) t.tags.remove(t.gtdProject.title);\n }\n store.resumeNotifications();\n \n var tiddler = store.createTiddler("d3 conversion");\n var s = "Completed document conversion. Do not delete this tiddler unless you want to rebuild the action metadata.\sn\snThis tiddler also contains document-specific preferences which, if deleted, will revert to default settings.";\n tiddler.assign("d3 settings", s, config.options.txtUserName, new Date(), ["excludeLists"]);\n },\n \n initializeFromMetaData: function()\n {\n var tiddlers = store.getTaggedTiddlers("action");\n // ??? one possible optimization is to sort action list by project, to avoid repeatedly fetching project tiddler\n for (var i = 0; i < tiddlers.length; i++) {\n var t = tiddlers[i];\n t.gtdActionName = store.getValue(t, "title");\n t.gtdActionDone = this.tiddlerHasTag(t, "done");\n t.gtdProjectName = store.getValue(t, "gtd.project");\n t.gtdContextName = store.getValue(t, "gtd.context");\n if (t.gtdProjectName) {\n t.gtdProject = store.getTiddler(t.gtdProjectName);\n if (t.gtdProject) {\n if (t.gtdProject.gtdActions == undefined) t.gtdProject.gtdActions = [];\n t.gtdProject.gtdActions.push(t);\n }\n }\n }\n \n tiddlers = store.getTaggedTiddlers("project");\n for (i = 0; i < tiddlers.length; i++) {\n t = tiddlers[i];\n if (t.gtdActions) {\n t.gtdActions.sort( \n function(a,b) { var ai = parseInt(store.getValue(a, "gtd.projectindex")), bi = parseInt(store.getValue(b, "gtd.projectindex")); return (ai < bi) ? -1 : +1; }\n );\n }\n else\n t.gtdActions = [];\n this.setNextAction(t);\n }\n \n tiddlers = this.getCachedContexts();\n for (i = 0; i < tiddlers.length; i++)\n tiddlers[i].gtdContextName = tiddlers[i].title;\n },\n \n tiddlerHasTag: function (tiddler, tag)\n {\n if (typeof(tiddler) == "string") tiddler = store.getTiddler(tiddler);\n if (tiddler.tags.length == 0) return false;\n return (tiddler.tags.find(tag) != null);\n },\n \n tiddlerSwapTag: function (tiddler, oldTag, newTag)\n {\n for (var i = 0; i < tiddler.tags.length; i++)\n if (tiddler.tags[i] == oldTag) {\n tiddler.tags[i] = newTag;\n return true;\n }\n return false;\n },\n \n setExtendedValue: function (tiddler, name, value)\n {\n // this bottleneck safely sets an extended data value, quietly ignoring the request\n // if the setValue function is not available AND it disables notifications during\n // the setValue if it is defined\n \n if (version.major > 2 || version.minor > 0) {\n store.suspendNotifications();\n store.setValue(tiddler, name, value);\n store.resumeNotifications();\n }\n },\n \n tiddlerHasChanged: function (tiddler, doSave)\n {\n tiddler.changed();\n //story.setDirty(tiddler.title, true);\n store.setDirty(true);\n if (this.tiddlerHasTag(tiddler, 'context'))\n this.clearContextCache();\n if (doSave == undefined) doSave = true;\n if (doSave) tiddler.modified = new Date();\n if (config.options.chkAutoSave && doSave)\n saveChanges();\n else if (doSave)\n this.lazyAutoSave++;\n },\n \n tiddlerAgeInDays: function(tiddler)\n {\n var now = new Date();\n return (now.getTime() - tiddler.modified.getTime()) / 1000 / 86400;\n },\n \n filteredTags: function (tags, specialTags, filterTags)\n {\n var resultTags = [];\n specialTags = specialTags.concat(filterTags);\n for (var i = 0; i < tags.length; i++)\n if (!specialTags.contains(tags[i])) resultTags.push(tags[i]);\n return resultTags;\n },\n \n filteredActionTags: function (tags, filterTags)\n {\n return this.filteredTags(tags, [ "action", "done", "floating", "action-archive" ], filterTags);\n },\n \n filteredProjectTags: function (tags, filterTags)\n {\n return this.filteredTags(tags, [ "project", "done", "important", "project-archive" ], filterTags);\n },\n \n qualifiedProjectName: function(p)\n {\n var tags = this.filteredProjectTags(p.tags, []);\n var q = '';\n for (var i = 0; i < tags.length; i++)\n q += tags[i] + '.';\n return q + p.title;\n },\n \n toggleTag: function (tiddler, tag, toggle)\n {\n var tagIndex = -1;\n for (var i = 0; i < tiddler.tags.length; i++)\n if (tiddler.tags[i] == tag) {\n tagIndex = i;\n break;\n }\n \n if (toggle && tagIndex == -1) {\n tiddler.tags.push(tag);\n }\n else if (!toggle && tagIndex != -1) {\n tiddler.tags.splice(tagIndex, 1);\n }\n },\n \n getTiddlerElement: function (tiddler)\n {\n return document.getElementById(story.idPrefix + tiddler.title);\n },\n \n refreshActionViews: function (tiddler)\n {\n if (tiddler) {\n if (typeof(tiddler) == "string") tiddler = store.getTiddler(tiddler);\n if (tiddler) {\n // first refresh the action tiddler\n story.refreshTiddler(tiddler.title, null, true);\n // do not do anything else if we are not an action!\n // no, we still want to do review updates below, so only do the next bit for actions\n // if (!_GTD.tiddlerHasTag(tiddler, "action")) return;\n if (_GTD.tiddlerHasTag(tiddler, "action")) {\n // now refresh all tiddlers that are tags of the action, which should be the context and project\n // no...now use explicit reference to project/context\n //for (var i = 0; i < tiddler.tags.length; i++)\n // ...of course, we don't refresh action-specific state tags\n // if (tiddler.tags[i] != "action" && tiddler.tags[i] != "done" && tiddler.tags[i] != "floating") {\n // story.refreshTiddler(tiddler.tags[i], null, true);\n // }\n if (tiddler.gtdProjectName && tiddler.gtdProjectName.length > 0) story.refreshTiddler(tiddler.gtdProjectName, null, true);\n if (tiddler.gtdContextName && tiddler.gtdContextName.length > 0) story.refreshTiddler(tiddler.gtdContextName, null, true);\n }\n else if (_GTD.tiddlerHasTag(tiddler, "context"))\n _GTD.clearContextCache();\n }\n }\n \n var specialTiddlers = store.getTaggedTiddlers("review");\n for (var i = 0; i < specialTiddlers.length; i++)\n if (_GTD.tiddlerHasTag(specialTiddlers[i], "gtd")) { // only update GTD review tiddlers, as an optimization\n // as a further optimization, we don't refresh tiddlers that aren't actually displayed, and make sure that\n // if they are displayed, they are in view mode, not edit mode\n var el = _GTD.getTiddlerElement(specialTiddlers[i]);\n if (el && el.getAttribute("template") == "reviewViewTemplate")\n story.refreshTiddler(specialTiddlers[i].title, null, true);\n }\n\n },\n \n appendProjectActionMarkup: function(projectTiddler, actionTitle, actionContext)\n {\n var actionInsertionPoint = -1, actionLeadin = "";\n \n var reActionWikitext = "^\s\s.{2}([^|\s\sn]+)(?:\s\s|?)(.*).*$";\n var reActionMacro = "(.*)<<gtdAction ((?:[^>]|(?:>(?!>)))*)>>.*$";\n var actionRe = new RegExp("(" + reActionWikitext + ")|(" + reActionMacro + ")", "mg");\n do {\n var formatMatch = actionRe.exec(projectTiddler.text);\n if (formatMatch) {\n actionLeadin = (formatMatch[1] ? "" : formatMatch[5]);\n actionInsertionPoint = actionRe.lastIndex;\n }\n } while(formatMatch);\n \n var actionProto = "\sn" + actionLeadin + "<<gtdAction \s"" + actionTitle + "\s" \s"" + actionContext + "\s">>";\n if (actionInsertionPoint == -1)\n projectTiddler.text += actionProto;\n else\n projectTiddler.text = projectTiddler.text.substring(0, actionInsertionPoint) + actionProto + projectTiddler.text.substr(actionInsertionPoint);\n \n this.tiddlerHasChanged(projectTiddler);\n this.refreshActionViews(projectTiddler);\n },\n \n removeProjectAction: function(projectTiddler, actionTitle)\n {\n var reActionWikitext = "^(\s\s.{2})[ \s\st]*(" + actionTitle + ")[ \s\st]*((\s\s|.*\s\sn?)|(.*\s\sn?))";\n var reActionMacro = "(.*<<gtdAction [\s"\s']?)(" + actionTitle + ")([\s"\s']?\s\ss+(?:[^>]|(?:>(?!>)))*>>.*\s\sn?)";\n projectTiddler.text = projectTiddler.text.replace(new RegExp(reActionWikitext, "mg"), "");\n projectTiddler.text = projectTiddler.text.replace(new RegExp(reActionMacro, "mg"), "");\n projectTiddler.changed();\n story.refreshTiddler(projectTiddler.title, null, true);\n },\n \n setNextAction: function(project)\n {\n if (project.gtdActions == undefined) project.gtdActions = [];\n project.gtdNextAction = null;\n for (var i = 0; i < project.gtdActions.length; i++)\n if (!project.gtdActions[i].gtdActionDone) {\n project.gtdNextAction = project.gtdActions[i];\n project.gtdProjectDone = false;\n this.toggleTag(project, "done", project.gtdProjectDone);\n return;\n }\n // if we get here, project is currently complete\n if (project.gtdActions.length > 0) project.gtdProjectDone = true;\n this.toggleTag(project, "done", project.gtdProjectDone);\n },\n \n clearContextCache: function()\n {\n this.contextCache = null;\n },\n \n getCachedContexts: function()\n {\n if (!this.contextCache) this.contextCache = store.getTaggedTiddlers("context");\n return this.contextCache;\n },\n \n renameCachedContext: function(oldName, newName)\n {\n if (this.contextCache) {\n var index = this.contextCache.indexOf(oldName);\n if (index > -1) this.contextCache[index] = newName;\n }\n },\n \n findActionContext: function(action)\n {\n var context = null;\n \n var contexts = this.getCachedContexts();\n for (var i = 0; i < contexts.length; i++)\n if (_GTD.tiddlerHasTag(action, contexts[i].title)) {\n context = contexts[i].title;\n break;\n }\n \n return context;\n },\n \n saveWithForcedBackup: function()\n {\n var saveBackups = config.options.chkSaveBackups;\n config.options.chkSaveBackups = true;\n saveChanges();\n config.options.chkSaveBackups = saveBackups;\n },\n \n isNextAction: function(actionTiddler)\n {\n if (actionTiddler.gtdProject && actionTiddler == actionTiddler.gtdProject.gtdNextAction)\n return true;\n return !actionTiddler.gtdActionDone && this.tiddlerHasTag(actionTiddler, "floating");\n },\n \n setReviewUpdate: function()\n {\n window._GTD = this;\n // having a subminute review update is overkill, but it would be nice to have semi-accurate\n // clock, so we can't have it be longer than a minute between updates\n //window.setTimeout('window._GTD.doReviewUpdate()', 60 * 1000);\n var d = new Date();\n window.setTimeout('window._GTD.doReviewUpdate()', (3600 - 60*d.getMinutes() - d.getSeconds()) * 1000);\n },\n \n doReviewUpdate: function()\n {\n this.refreshActionViews(null);\n this.setReviewUpdate();\n },\n \n setLazyAutoSave: function()\n {\n window._GTD = this;\n var interval = parseInt(config.options.txtGTDLazyAutoSaveInterval, 10);\n interval = isNaN(interval) ? 60 : interval.clamp(0, Number.MAX_VALUE);\n window.setTimeout('window._GTD.doLazyAutoSave()', interval * 1000);\n },\n \n doLazyAutoSave: function()\n {\n if (config.options.chkGTDLazyAutoSave && !config.options.chkAutoSave && (this.lazyAutoSave > 0 || store.isDirty())) {\n this.lazyAutoSave = 0;\n displayMessage('Autosaving changes...');\n saveChanges();\n if (typeof(gtdAutoSaveHook) == "function")\n gtdAutoSaveHook();\n window.setTimeout('clearMessage()', 5 * 1000);\n }\n this.setLazyAutoSave();\n },\n \n projectPriority: function(p)\n {\n var maxPriority = _GTD.projectPriorities.length;\n for (var i = 0; i < maxPriority; i++)\n if (_GTD.tiddlerHasTag(p, _GTD.projectPriorities[i])) return (maxPriority - i);\n return 0;\n },\n \n actionSorter: function(a,b)\n {\n // we now have an extended sort function to try and provide a more useful list of actions, esp. in a context view\n // ... the rule now is that project actions appear before non-project actions\n // ... if two actions have projects, and either project is tagged "important", it will appear first, otherwise actions are alphabetical by project\n // ... if two actions are from the same project, they appear in project action sequence, not alphabetically\n // ... all non-project actions continue to be sorted alphabetically\n \n if (a.gtdProject && b.gtdProject) {\n var aImportance = _GTD.projectPriority(a.gtdProject), bImportance = _GTD.projectPriority(b.gtdProject);\n if (a.gtdProject == b.gtdProject)\n return (a.gtdProject.gtdActions.find(a) < b.gtdProject.gtdActions.find(b)) ? -1 : +1;\n else if (aImportance != bImportance)\n return (aImportance > bImportance) ? -1 : +1;\n else\n return (a.gtdProject.title < b.gtdProject.title) ? -1 : +1;\n }\n else if (a.gtdProject)\n return -1; // "a" has a project, "b" doesn't, so "a" comes first\n else if (b.gtdProject)\n return +1; // "b" has a project, "a" doesn't, so "b" comes first\n else {\n var aImportance = _GTD.tiddlerHasTag(a, "important"), bImportance = _GTD.tiddlerHasTag(b, "important");\n if (aImportance && !bImportance)\n return -1; // "a" is important, "b" is not, so "a" comes first\n else if (bImportance && !aImportance)\n return +1; // "b" is important, "a" is not, so "a" comes first\n else\n return (a.title < b.title) ? -1 : +1;\n }\n },\n \n projectSorter: function(a,b) \n {\n \n var aImportance = _GTD.projectPriority(a), bImportance = _GTD.projectPriority(b);\n if (aImportance != bImportance)\n return (aImportance > bImportance) ? -1 : +1;\n else\n return (a.title < b.title) ? -1 : +1;\n }\n};\n\nconfig.macros.gtdVersion = {}\nconfig.macros.gtdVersion.handler = function(place)\n{\n var v = version.extensions.GTDPlugins;\n createTiddlyElement(place, "span", null, null, v.major + "." + v.minor + "." + v.revision + (v.patch ? "." + v.patch : "") + (v.beta ? " (beta " + v.beta + ")" : ""));\n}\n\nconfig.macros.list.tagged = {}\nconfig.macros.list.tagged.innerHandler = function(tagList, allTags)\n{\n var tiddlers = store.getTaggedTiddlers(tagList[0]);\n\n if (allTags) {\n var results = [];\n for (var i = 0; i < tiddlers.length; i++) {\n var tiddler = tiddlers[i], hasAllTags = true;\n for (var j = 1; hasAllTags && j < tagList.length; j++) {\n // hasAllTags &= _GTD.tiddlerHasTag(tiddler, tagList[j]);\n hasAllTags &= (tagList[j].charAt(0) == '-') ? !_GTD.tiddlerHasTag(tiddler, tagList[j].substr(1)) : _GTD.tiddlerHasTag(tiddler, tagList[j])\n }\n if (hasAllTags) results.push(tiddlers[i]);\n }\n return results;\n }\n else {\n for (var i = 1; i < tagList.length; i++) {\n var more = store.getTaggedTiddlers(tagList[i]);\n for (var j = 0; j < more.length; j++)\n tiddlers.pushUnique(more[j]);\n }\n return tiddlers;\n }\n}\nconfig.macros.list.tagged.handler = function(params) \n{\n var tags = params[1].readBracketedList();\n if (tags.length == 1) {\n if (config.options[tags[0]] == undefined)\n return store.getTaggedTiddlers(tags[0]);\n else\n return store.getTaggedTiddlers(config.options[tags[0]]);\n }\n else if (tags.length > 1) {\n var allTags = (params[2] == undefined || params[2] == 'all');\n var tiddlers = this.innerHandler(tags, allTags);\n tiddlers.sort(function (a,b) {if(a.title == b.title) return(0); else return (a.title < b.title) ? -1 : +1; });\n return tiddlers;\n }\n}\n\nconfig.macros.gtdActionList = {}\nconfig.macros.gtdActionList.handler = function(place,macroName,params)\n{\n var theList = createTiddlyElement(place, "ul", null, "gtdActionList");\n var parentTiddler = story.findContainingTiddler(place).getAttribute("tiddler");\n \n var allActions = (params[1] == "all");\n var noProjectActions = (params[1] == "noproject");\n var justProjectActions = (params[1] == "projectonly");\n var aging = parseInt(config.options.txtGTDActionAging, 10);\n aging = isNaN(aging) ? 0 : aging.clamp(0, Number.MAX_VALUE);\n \n if (params[0] == "*") { // review actions for all projects\n var projects = store.getTaggedTiddlers("project");\n // do an importance sort on project list first, so they bubble to the top\n projects.sort(_GTD.projectSorter);\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n // filter projects that have been deferred\n if (_GTD.tiddlerHasTag(project, config.options.txtGTDSomedayContext)) continue;\n if (!allActions) {\n //var skipEmptyProject = true;\n //if (project.gtdActions != undefined && project.gtdActions.length > 0)\n // for (var k = 0; skipEmptyProject && k < project.gtdActions.length; k++)\n // skipEmptyProject = project.gtdActions[k].gtdActionDone;\n //if (skipEmptyProject) continue;\n if (project.gtdActions == undefined || project.gtdActions.length == 0 || project.gtdProjectDone) continue;\n }\n // this will present the actions in the same order as they appear in the project\n var theListItem = createTiddlyElement(theList, "li", null, "gtdActionListProject");\n createTiddlyLink(theListItem, project.title, true);\n if (project.gtdActions != undefined && project.gtdActions.length > 0) {\n var subList = createTiddlyElement(theList, "ul", null, "gtdActionList");\n for (var j = 0; j < project.gtdActions.length; j++) {\n var action = project.gtdActions[j];\n // if we are not displaying all actions, filter old completed actions (if specified)\n // if (!allActions && action.gtdActionDone && aging > 0 && _GTD.tiddlerAgeInDays(action) > aging) continue;\n // NEW! we are now filtering all completed actions unless we are displaying all actions\n if (!allActions && action.gtdActionDone) continue;\n var subListItem = createTiddlyElement(subList, "li");\n var el = config.macros.gtdAction.createActionElement(subListItem, action, project.title, action.tags);\n }\n }\n }\n }\n \n else if (params[0] == "@") { // review actions for all contexts\n var contexts = _GTD.getCachedContexts();\n for (var i = 0; i < contexts.length; i++) {\n var context = contexts[i];\n var actions = config.macros.list.tagged.innerHandler([context.title, "action"], true);\n if (actions.length > 0) {\n var firstAction = true, theListItem, subList;\n actions.sort(_GTD.actionSorter);\n for (var j = 0; j < actions.length; j++) {\n var currentAction = actions[j];\n // special filtering by request...\n if (noProjectActions && currentAction.gtdProject) continue;\n if (justProjectActions && typeof(currentAction.gtdProject) == 'undefined') continue;\n // if we are not displaying all actions, filter completed actions and non-next project actions\n if (!allActions && (currentAction.gtdActionDone || (currentAction.gtdProject && !_GTD.isNextAction(currentAction)))) continue;\n // filter actions for projects that have been deferred\n if (currentAction.gtdProject && _GTD.tiddlerHasTag(currentAction.gtdProject, config.options.txtGTDSomedayContext)) continue;\n if (firstAction) {\n theListItem = createTiddlyElement(theList, "li", null, "gtdActionListContext");\n createTiddlyLink(theListItem, context.title, true);\n subList = createTiddlyElement(theList, "ul", null, "gtdActionList");\n firstAction = false;\n }\n var subListItem = createTiddlyElement(subList, "li");\n var el = config.macros.gtdAction.createActionElement(subListItem, currentAction, context.title, currentAction.tags);\n }\n }\n }\n }\n \n else { // actions tagged by current tiddler name, or specified tag list as parameter\n var reviewMode = config.options['chkGTDActionListReviewMode' + escape(parentTiddler)];\n if (typeof(reviewMode) == 'undefined') reviewMode = false;\n \n // chain to our "tagged" list macro to get the tiddlers first\n var tags = (params.length == 0 || params[0] == "." ? [ parentTiddler ] : params[0].readBracketedList());\n tags.push("action");\n var results = config.macros.list.tagged.innerHandler(tags, true);\n results.sort(_GTD.actionSorter);\n for (var t = 0; t < results.length; t++) {\n var action = results[t];\n // special filtering by request...\n if (noProjectActions && action.gtdProject) continue;\n if (justProjectActions && typeof(action.gtdProject) == 'undefined') continue;\n if (action.gtdProject && _GTD.tiddlerHasTag(action.gtdProject, config.options.txtGTDSomedayContext)) continue;\n // if we are not displaying all actions, filter completed actions and non-next project actions\n if (reviewMode && !allActions && (action.gtdActionDone || (action.gtdProject && !_GTD.isNextAction(action)))) continue;\n // if we are not displaying all actions, filter old completed actions (if specified)\n if (!allActions && action.gtdActionDone && aging > 0 && _GTD.tiddlerAgeInDays(action) > aging) continue;\n var theListItem = createTiddlyElement(theList, "li");\n var el = config.macros.gtdAction.createActionElement(theListItem, action, parentTiddler, action.tags);\n }\n }\n}\n\nconfig.macros.gtdAction = {}\nconfig.macros.gtdAction.createActionElement = function(place, actionTiddler, filterName, tags)\n{\n if (typeof(actionTiddler) == "string") actionTiddler = store.getTiddler(actionTiddler);\n \n var actionElement = createTiddlyElement(place, "span", null, "gtdActionItem");\n \n // oddly, we barf when setting the checkbox type on an input if we use createTiddlyElement...\n var cb = document.createElement("input");\n cb.setAttribute("type", "checkbox");\n cb.setAttribute("actionTiddler", actionTiddler.title);\n cb.onclick = this.onClickDone;\n actionElement.appendChild(cb);\n cb.checked = actionTiddler.gtdActionDone;\n createTiddlyLink(actionElement, actionTiddler.title, true);\n actionElement.className = (actionTiddler.text ? "gtdActionWithContent" : "gtdActionWithoutContent");\n if (actionTiddler.gtdActionDone) actionElement.className += " gtdCompletedActionItem";\n if (_GTD.isNextAction(actionTiddler)) actionElement.className += " gtdNextActionItem";\n \n var filterTags = [], actionTags = [];\n if (actionTiddler.gtdProjectName && actionTiddler.gtdProjectName.length > 0)\n actionTags.push(actionTiddler.gtdProjectName);\n if (actionTiddler.gtdContextName && actionTiddler.gtdContextName.length > 0)\n actionTags.push(actionTiddler.gtdContextName);\n for (var i = 0; i < tags.length; i++) actionTags.pushUnique(tags[i]);\n if (filterName && filterName.length > 0) filterTags.pushUnique(filterName);\n \n actionTags = _GTD.filteredActionTags(actionTags, filterTags);\n if (actionTags.length > 0) {\n createTiddlyText(actionElement, " [ ");\n for (var i = 0; i < actionTags.length; i++) {\n if (i > 0) createTiddlyText(actionElement, ", ");\n createTiddlyLink(actionElement, actionTags[i], true, "actionCrossReference");\n }\n createTiddlyText(actionElement, " ]");\n }\n \n return actionElement;\n}\n\nconfig.macros.gtdAction.onClickDone = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("actionTiddler"));\n if (tiddler) {\n _GTD.toggleTag(tiddler, "done", this.checked);\n tiddler.gtdActionDone = this.checked;\n _GTD.tiddlerHasChanged(tiddler);\n _GTD.refreshActionViews(tiddler);\n if (this.checked && typeof(gtdActionDoneHook) == "function")\n gtdActionDoneHook(tiddler);\n if (tiddler.gtdActionDone && tiddler.gtdProject == undefined && confirm("This action is not a part of a project. Would you just like to delete it?")) {\n story.closeTiddler(tiddler.title, false, false);\n store.removeTiddler(tiddler.title);\n }\n }\n return true;\n}\n\nconfig.macros.gtdAction.handler = function(place,macroName,params)\n{\n var title = params[0], tags;\n var parentTiddler = story.findContainingTiddler(place).getAttribute("tiddler");\n var tiddler = store.getTiddler(title);\n if (!tiddler) {\n // we should *never* get here now for project actions, but keep code in case project code\n // trips up, or we use this macro somewhere else\n this.createAction(title, parentTiddler, params[1]);\n }\n else\n // use actual tiddler tags, not macro param, in case context changed!\n tags = tiddler.tags;\n var action = this.createActionElement(place, title, parentTiddler, tags);\n}\n\nconfig.macros.gtdAction.createAction = function(title, projectTiddlerName, tagParams, extraTags)\n{\n // var tags = ["action", parentTiddler];\n var action, tags = ["action"], fields = {};\n if (_GTD.usingProjectTags)\n tags.push(projectTiddlerName);\n if (typeof(tagParams) == "string") tags = tags.concat(tagParams.readBracketedList());\n if (typeof(extraTags) == "string") tags = tags.concat(extraTags.readBracketedList());\n var templateText = store.getTiddlerText("NewActionTemplate", config.views.wikified.defaultText.format([title]));\n if (_GTD.usingProjectTags)\n action = store.saveTiddler(title, title, templateText, config.options.txtUserName, new Date(), tags);\n else {\n fields["gtd.project"] = projectTiddlerName;\n action = store.saveTiddler(title, title, templateText, config.options.txtUserName, new Date(), tags, fields);\n }\n return action;\n}\n\nconfig.macros.gtdActionCompleted = {}\nconfig.macros.gtdActionCompleted.handler = function(place,macroName,params)\n{\n if (!readOnly) {\n var title = story.findContainingTiddler(place).getAttribute("tiddler");\n var tiddler = store.getTiddler(title);\n // oddly, we barf when setting the checkbox type on an input if we use createTiddlyElement...\n var cb = document.createElement("input");\n cb.setAttribute("type", "checkbox");\n cb.setAttribute("actionTiddler", title);\n cb.onclick = this.onClickDone;\n place.appendChild(cb);\n cb.checked = tiddler.gtdActionDone;\n }\n}\n\nconfig.macros.gtdActionCompleted.onClickDone = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("actionTiddler"));\n if (tiddler) {\n _GTD.toggleTag(tiddler, "done", this.checked);\n tiddler.gtdActionDone = this.checked;\n _GTD.tiddlerHasChanged(tiddler);\n _GTD.refreshActionViews(tiddler);\n if (this.checked && typeof(gtdActionDoneHook) == "function")\n gtdActionDoneHook(tiddler);\n if (tiddler.gtdActionDone && tiddler.gtdProject == undefined && confirm("This action is not a part of a project. Would you just like to delete it?")) {\n story.closeTiddler(tiddler.title, false, false);\n store.removeTiddler(tiddler.title);\n }\n }\n return true;\n}\n\nconfig.macros.gtdToggleTag = {}\nconfig.macros.gtdToggleTag.handler = function(place,macroName,params)\n{\n if (!readOnly) {\n var title = story.findContainingTiddler(place).getAttribute("tiddler");\n var tiddler = store.getTiddler(title);\n // oddly, we barf when setting the checkbox type on an input if we use createTiddlyElement...\n var cb = document.createElement("input");\n cb.setAttribute("type", "checkbox");\n cb.setAttribute("tiddler", title);\n cb.setAttribute("toggledTag", params[0]);\n cb.onclick = this.onClickDone;\n place.appendChild(cb);\n cb.checked = _GTD.tiddlerHasTag(tiddler, params[0]);\n }\n}\n\nconfig.macros.gtdToggleTag.onClickDone = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("tiddler"));\n if (tiddler) {\n _GTD.toggleTag(tiddler, this.getAttribute("toggledTag"), this.checked);\n _GTD.tiddlerHasChanged(tiddler);\n if (_GTD.tiddlerHasTag(tiddler, "action"))\n _GTD.refreshActionViews(tiddler);\n else\n // we need a broad notification here, not just refreshActionViews\n store.notify(tiddler.title, true);\n }\n return true;\n}\n\nconfig.macros.gtdToggleState = {}\nconfig.macros.gtdToggleState.handler = function(place,macroName,params)\n{\n var title = story.findContainingTiddler(place).getAttribute("tiddler");\n var tiddler = store.getTiddler(title);\n // oddly, we barf when setting the checkbox type on an input if we use createTiddlyElement...\n var cb = document.createElement("input");\n cb.setAttribute("type", "checkbox");\n cb.setAttribute("tiddler", title);\n var state = params[0] + escape(title);\n cb.setAttribute("stateName", state);\n cb.onclick = this.onClickDone;\n place.appendChild(cb);\n cb.checked = config.options[state];\n}\n\nconfig.macros.gtdToggleState.onClickDone = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("tiddler"));\n if (tiddler) {\n var state = this.getAttribute("stateName");\n config.options[state] = this.checked;\n saveOptionCookie(state);\n story.refreshTiddler(tiddler.title, null, true);\n }\n return true;\n}\n\nconfig.macros.importUpdates = { \n importMode: "updates",\n buttonTitle: "Update", \n buttonHelp: "Click here to update the application",\n preUpdateMessage: "Once the download is finished, you will need to reload your document to complete the update. In order to allow you to review the update tiddlers, this will not be done automatically. \sn\snClick \s"OK\s" start the update.",\n postUpdateMessage: "Please remember, you will need to save and reload your document to complete the update. In order to allow you to review the update tiddlers, this will not be done automatically."\n}\nconfig.macros.importUpdates.handler = function(place, macroName, params)\n{\n var mode = params[1] ? params[1] : this.importMode;\n var title = params[2] ? params[2] : this.buttonTitle;\n var prompt = params[3] ? params[3] : this.buttonHelp;\n var button = createTiddlyButton(place, title, prompt, this.onClickUpdate);\n button.setAttribute("updateSource", params[0]);\n button.setAttribute("importMode", mode);\n if (params.length > 4) button.setAttribute("importExtras", params.slice(4).join(" "));\n}\n\nconfig.macros.importUpdates.onClickUpdate = function(e)\n{\n if (!confirm(config.macros.importUpdates.preUpdateMessage))\n return;\n var importParams = [ this.getAttribute("importMode"), this.getAttribute("updateSource") ];\n var importExtras = this.getAttribute("importExtras");\n if (importExtras) importParams = importParams.concat(importExtras.split(" "));\n if (version.extensions.importTiddlers.major < 3)\n importParams.push("force");\n // force a saveChanges with backup before the update\n _GTD.saveWithForcedBackup();\n // chain to the importTiddlers macro\n config.macros.importTiddlers.handler(this, "importTiddlers", importParams);\n // ensure that relevant release notes are displayed on first launch\n config.options.chkGTDReleaseNotes = true;\n saveOptionCookie("chkGTDReleaseNotes");\n // do *not* cause a browser navigation\n return false;\n}\n\nconfig.macros.gtdArchive = {}\nconfig.macros.gtdArchive.handler = function(place, macroName, params)\n{\n var archiveAction = params.length > 0 ? params[0] : "archive"\n var btn = createTiddlyButton(place, archiveAction, "", this.onClick);\n btn.setAttribute("archiveAction", archiveAction);\n}\n\nconfig.macros.gtdArchive.onClick = function(e)\n{\n var warning = "Are you sure you want to %0 all %1 projects and actions?";\n var status = "There were %0 project(s) and %1 action(s) %2d.";\n var archiveAction = this.getAttribute("archiveAction");\n \n var projectCount = 0, actionCount = 0;\n \n if (archiveAction == "archive") {\n if (confirm(warning.format([archiveAction, "completed"]))) {\n clearMessage();\n var projects = store.getTaggedTiddlers("project");\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n if (project.gtdActions == undefined || project.gtdActions.length == 0) continue;\n var projectComplete = true;\n for (var j = 0; projectComplete && j < project.gtdActions.length; j++)\n projectComplete = project.gtdActions[j].gtdActionDone;\n if (!projectComplete) continue;\n // if we get here, all project actions are done, so archive project\n story.closeTiddler(project.title, false, false);\n _GTD.tiddlerSwapTag(project, "project", "project-archive");\n _GTD.tiddlerHasChanged(project, false);\n projectCount++;\n for (j = 0; j < project.gtdActions.length; j++) {\n story.closeTiddler(project.gtdActions[j].title, false, false);\n _GTD.tiddlerSwapTag(project.gtdActions[j], "action", "action-archive");\n _GTD.tiddlerHasChanged(project.gtdActions[j], false);\n actionCount++;\n }\n }\n var actions = store.getTaggedTiddlers("action");\n for (i = 0; i < actions.length; i++) {\n var action = actions[i];\n if (action.gtdActionDone && !action.gtdProject) {\n story.closeTiddler(action.title, false, false);\n _GTD.tiddlerSwapTag(action, "action", "action-archive");\n _GTD.tiddlerHasChanged(action, false);\n actionCount++;\n }\n }\n displayMessage(status.format([projectCount, actionCount, archiveAction]));\n var saveClearMessage = clearMessage;\n clearMessage = function() {};\n if (config.options.chkAutoSave) saveChanges();\n clearMessage = saveClearMessage;\n store.notify(null, true);\n }\n }\n \n else if (archiveAction == "unarchive") {\n if (confirm(warning.format([archiveAction, "archived"]))) {\n clearMessage();\n var projects = store.getTaggedTiddlers("project-archive");\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n story.closeTiddler(project.title, false, false);\n _GTD.tiddlerSwapTag(project, "project-archive", "project");\n _GTD.tiddlerHasChanged(project, false);\n projectCount++;\n }\n var actions = store.getTaggedTiddlers("action-archive");\n for (i = 0; i < actions.length; i++) {\n var action = actions[i];\n story.closeTiddler(action.title, false, false);\n _GTD.tiddlerSwapTag(action, "action-archive", "action");\n _GTD.tiddlerHasChanged(action, false);\n actionCount++;\n }\n displayMessage(status.format([projectCount, actionCount, archiveAction]));\n var saveClearMessage = clearMessage;\n clearMessage = function() {};\n if (config.options.chkAutoSave) saveChanges();\n clearMessage = saveClearMessage;\n store.notify(null, true);\n }\n }\n \n else if (archiveAction == "purge") {\n if (confirm(warning.format([archiveAction, "archived"]))) {\n clearMessage();\n _GTD.saveWithForcedBackup();\n var projects = store.getTaggedTiddlers("project-archive");\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n story.closeTiddler(project.title, false, false);\n store.removeTiddler(project.title);\n projectCount++;\n }\n var actions = store.getTaggedTiddlers("action-archive");\n for (i = 0; i < actions.length; i++) {\n var action = actions[i];\n story.closeTiddler(action.title, false, false);\n store.removeTiddler(action.title);\n actionCount++;\n }\n displayMessage(status.format([projectCount, actionCount, archiveAction]));\n var saveClearMessage = clearMessage;\n clearMessage = function() {};\n if (config.options.chkAutoSave) saveChanges();\n clearMessage = saveClearMessage;\n store.notify(null, true);\n }\n }\n else\n alert("That archiving action is not supported");\n}\n\nconfig.formatters.push(\n {\n name: "gtdAction",\n match: "^\s\s.{2}.*",\n lookahead: "^\s\s.{2}([^|]*)(?:\s\s|?)(.*)",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"g");\n var lookaheadMatch = lookaheadRegExp.exec(w.matchText)\n if (lookaheadMatch) {\n var params = [ lookaheadMatch[1].trim() ];\n if (lookaheadMatch[2].trim().length > 0) params.push(lookaheadMatch[2].trim());\n config.macros.gtdAction.handler(w.output, "gtdAction", params);\n }\n }\n }\n);\n\nconfig.commands.newAction = { text: "action", tooltip: "Create a new action for this context", hideReadOnly: true };\nconfig.commands.newAction.handler = function(event, src, context)\n{\n var d = new Date();\n var newActionTitle = d.formatString("New Action hh:0mm:0ss");\n if (!store.tiddlerExists(newActionTitle)) {\n var tiddler = store.createTiddler(newActionTitle);\n var templateText = store.getTiddlerText("NewActionTemplate", config.views.wikified.defaultText.format([newActionTitle]));\n tiddler.assign(newActionTitle, templateText, config.options.txtUserName, new Date(), [ "action", context ]);\n \n story.displayTiddler(null, newActionTitle, DEFAULT_EDIT_TEMPLATE);\n story.focusTiddler(newActionTitle, "title");\n }\n return false;\n}\n\nconfig.commands.newProjectAction = { text: "action", tooltip: "Create a new action for this project", hideReadOnly: true };\nconfig.commands.newProjectAction.handler = function(event, src, project)\n{\n var d = new Date();\n var newActionTitle = d.formatString("New Action hh:0mm:0ss");\n if (!store.tiddlerExists(newActionTitle)) {\n var defaultContext = config.options.txtGTDUnfiledContext;\n _GTD.appendProjectActionMarkup(store.getTiddler(project), newActionTitle, defaultContext);\n \n var tiddler = store.createTiddler(newActionTitle);\n var templateText = store.getTiddlerText("NewActionTemplate", config.views.wikified.defaultText.format([newActionTitle]));\n var tags = ["action"], fields = {};\n if (_GTD.usingProjectTags)\n tags.push(project);\n tags.push(defaultContext);\n if (_GTD.usingProjectTags)\n tiddler.assign(newActionTitle, templateText, config.options.txtUserName, new Date(), tags);\n else {\n fields["gtd.project"] = project;\n tiddler.assign(newActionTitle, templateText, config.options.txtUserName, new Date(), tags, new Date(), fields);\n }\n \n story.displayTiddler(null, newActionTitle, DEFAULT_EDIT_TEMPLATE);\n story.focusTiddler(newActionTitle, "title");\n }\n return false;\n}\n\nconfig.commands.changeContext = { text: "context", tooltip: "Change context of this action", hideReadOnly: true, popupNone: "There are no contexts" };\nconfig.commands.changeContext.handler = function(event,src,title)\n{\n var popup = Popup.create(src);\n if (popup) {\n var contexts = _GTD.getCachedContexts();\n var tiddler = store.getTiddler(title);\n var currentContext = _GTD.findActionContext(tiddler);\n if (!currentContext) currentContext = '';\n \n var c = false;\n for (var i = 0; i < contexts.length; i++)\n if (contexts[i].title != currentContext) {\n var button = createTiddlyButton(createTiddlyElement(popup, "li"), contexts[i].title, '', this.onClickContext);\n button.setAttribute("actionTiddler", title);\n button.setAttribute("oldContext", currentContext);\n button.setAttribute("newContext", contexts[i].title);\n c = true;\n }\n \n if (!c)\n createTiddlyText(createTiddlyElement(popup, "li", null, "disabled"), this.popupNone);\n }\n \n Popup.show(popup, false);\n event.cancelBubble = true;\n if (event.stopPropagation) event.stopPropagation();\n // do *not* cause a browser navigation\n return false;\n}\n\nconfig.commands.changeContext.onClickContext = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("actionTiddler"));\n if (tiddler) {\n var contextChanged = false;\n var oldContext = this.getAttribute("oldContext");\n var newContext = this.getAttribute("newContext");\n if (oldContext.length == 0)\n contextChanged = (tiddler.tags.push(newContext) > 0);\n else\n contextChanged = _GTD.tiddlerSwapTag(tiddler, oldContext, newContext);\n \n if (contextChanged) {\n tiddler.gtdContextName = newContext;\n _GTD.setExtendedValue(tiddler, "gtd.context", newContext);\n _GTD.tiddlerHasChanged(tiddler);\n _GTD.refreshActionViews(tiddler);\n // be sure to refresh old context as well...\n story.refreshTiddler(oldContext, null, true);\n }\n }\n // do *not* cause a browser navigation\n return false;\n}\n\nconfig.commands.changeProject = { text: "project", tooltip: "Change project of this action", hideReadOnly: true, popupNone: "There are no projects" };\nconfig.commands.changeProject.handler = function(event,src,title)\n{\n var popup = Popup.create(src);\n if (popup) {\n var projects = store.getTaggedTiddlers("project");\n var tiddler = store.getTiddler(title);\n var currentProject = (tiddler.gtdProject ? tiddler.gtdProject.title : '');\n \n var c = false;\n for (var i = 0; i < projects.length; i++)\n if (projects[i].title != currentProject) {\n var button = createTiddlyButton(createTiddlyElement(popup, "li"), projects[i].title, '', this.onClickProject);\n button.setAttribute("actionTiddler", title);\n button.setAttribute("oldProject", currentProject);\n button.setAttribute("newProject", projects[i].title);\n c = true;\n }\n \n if (!c)\n createTiddlyText(createTiddlyElement(popup, "li", null, "disabled"), this.popupNone);\n }\n \n Popup.show(popup, false);\n event.cancelBubble = true;\n if (event.stopPropagation) event.stopPropagation();\n // do *not* cause a browser navigation\n return false;\n}\n\nconfig.commands.changeProject.onClickProject = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("actionTiddler"));\n if (tiddler) {\n var oldProject = this.getAttribute("oldProject");\n var newProject = this.getAttribute("newProject");\n \n if (oldProject.length > 0)\n _GTD.removeProjectAction(tiddler.gtdProject, tiddler.title)\n if (_GTD.usingProjectTags)\n _GTD.tiddlerSwapTag(tiddler, oldProject, newProject);\n else\n _GTD.setExtendedValue(tiddler, "gtd.project", newProject);\n _GTD.appendProjectActionMarkup(store.getTiddler(newProject), tiddler.title, tiddler.gtdContextName);\n \n _GTD.tiddlerHasChanged(tiddler);\n _GTD.refreshActionViews(tiddler);\n }\n // do *not* cause a browser navigation\n return false;\n}\n\nconfig.commands.deleteAction = { text: "delete", tooltip: "Delete this action", hideReadOnly: true, warning: "Are you sure you want to delete '%0'?", altwarning: "Are you sure you want to delete '%0'? The action will also be removed from project '%1'." };\nconfig.commands.deleteAction.handler = function(event, src, title)\n{\n var tiddler = store.getTiddler(title);\n var ok = (tiddler.gtdProject ? confirm(this.altwarning.format([title, tiddler.gtdProject.title])) : confirm(this.warning.format([title])));\n if (ok) {\n if (tiddler.gtdProject) _GTD.removeProjectAction(tiddler.gtdProject, title);\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if (config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteContext = { text: "delete", tooltip: "Delete this context", hideReadOnly: true, warning: "Are you sure you want to delete '%0'? All associated actions will be tagged as 'unfiled'." };\nconfig.commands.deleteContext.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n store.suspendNotifications();\n this.unlinkActions(title);\n // force a rebuild of our context cache\n _GTD.clearContextCache();\n store.resumeNotifications();\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if (config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteContext.unlinkActions = function(contextTitle)\n{\n var tiddlers = config.macros.list.tagged.innerHandler([contextTitle, "action"], true);\n for (var i = 0; i < tiddlers.length; i++) {\n var tiddler = tiddlers[i];\n _GTD.tiddlerSwapTag(tiddler, contextTitle, config.options.txtGTDUnfiledContext);\n _GTD.tiddlerHasChanged(tiddler, false);\n // context removal will do view notification...\n }\n}\n\nconfig.commands.archiveProject = { text: "archive", tooltip: "Archive this project", hideReadOnly: true, warning: "Are you sure you want to archive '%0'?", noarchive: "This project is %0 and will not be archived." };\nconfig.commands.archiveProject.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n var project = store.getTiddler(title);\n if (project.gtdActions == undefined || project.gtdActions.length == 0) {\n alert(this.noarchive.format(["empty"]));\n return;\n }\n var projectComplete = true;\n for (var j = 0; projectComplete && j < project.gtdActions.length; j++)\n projectComplete = project.gtdActions[j].gtdActionDone;\n if (!projectComplete) {\n alert(this.noarchive.format(["incomplete"]));\n return;\n }\n // if we get here, all project actions are done, so archive project\n story.closeTiddler(project.title, false, false);\n _GTD.tiddlerSwapTag(project, "project", "project-archive");\n _GTD.tiddlerHasChanged(project, false);\n for (j = 0; j < project.gtdActions.length; j++) {\n story.closeTiddler(project.gtdActions[j].title, false, false);\n _GTD.tiddlerSwapTag(project.gtdActions[j], "action", "action-archive");\n _GTD.tiddlerHasChanged(project.gtdActions[j], false);\n }\n store.notify(null, true);\n if (config.options.chkAutoSave)\n saveChanges();\n }\n\n return false;\n}\n\nconfig.commands.deleteProject = { text: "delete", tooltip: "Delete this project", hideReadOnly: true, warning: "Are you sure you want to delete '%0'? All associated actions will no longer be bound to this (or any) project." };\nconfig.commands.deleteProject.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n store.suspendNotifications();\n this.unlinkActions(title);\n store.resumeNotifications();\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if (config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteProject.unlinkActions = function(projectTitle)\n{\n // var tiddlers = config.macros.list.tagged.innerHandler([projectTitle, "action"], true);\n var project = store.getTiddler(projectTitle);\n for (var i = 0; i < project.gtdActions.length; i++) {\n var tiddler = project.gtdActions[i];\n tiddler.gtdProject = null;\n tiddler.gtdProjectName = null;\n if (_GTD.usingProjectTags)\n tiddler.tags.splice(tiddler.tags.find(projectTitle), 1);\n else {\n _GTD.setExtendedValue(tiddler, "gtd.project", null);\n _GTD.setExtendedValue(tiddler, "gtd.projectindex", null);\n }\n _GTD.tiddlerHasChanged(tiddler, false);\n // project removal will do view notification...\n }\n}\n\nconfig.commands.deleteProjectAll = { text: "delete all", tooltip: "Delete this project and its actions", hideReadOnly: true, warning: "Are you sure you want to delete '%0' and all its associated actions?" };\nconfig.commands.deleteProjectAll.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n store.suspendNotifications();\n this.deleteActions(title);\n store.resumeNotifications();\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if (config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteProjectAll.deleteActions = function(projectTitle)\n{\n // var tiddlers = config.macros.list.tagged.innerHandler([projectTitle, "action"], true);\n var project = store.getTiddler(projectTitle);\n for (var i = 0; i < project.gtdActions.length; i++) {\n var tiddler = project.gtdActions[i].title;\n store.removeTiddler(tiddler);\n story.closeTiddler(tiddler, true, false);\n // project removal will do view notification...\n }\n}\n\nconfig.commands.projectify = { text: "projectify", tooltip: "Convert this action to a project", hideReadOnly: true, warning: "Are you sure you want to convert '%0' to a project?" };\nconfig.commands.projectify.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n var tiddler = store.getTiddler(title);\n if (tiddler.gtdProject) _GTD.removeProjectAction(tiddler.gtdProject, title);\n tiddler.tags = [ "project" ];\n _GTD.tiddlerHasChanged(tiddler, true);\n // we need a broad notification here, not just refreshActionViews\n store.notify(title, true);\n }\n \n return false;\n}\n\n// *** ***/\n// *** These are overrides to core TiddlyWiki functionality ***\n// *** ***/\n\nTiddler.prototype._GTDInheritedChanged = Tiddler.prototype.changed;\nTiddler.prototype.changed = function()\n{\n this._GTDInheritedChanged();\n \n // Note that this is called both as part of normal tiddler changes AND as a part\n // of the initial TW loading process from DIVs...\n \n if (_GTD.tiddlerHasTag(this, "project")) {\n // (re)build the in-memory ordered action list\n this.gtdActions = [];\n this.gtdNextAction = null;\n if (this.text) {\n var reActionWikitext = "^\s\s.{2}([^|\s\sn]+)(?:\s\s|?)(.*)";\n var reActionMacro = "<<gtdAction ((?:[^>]|(?:>(?!>)))*)>>";\n var actionRe = new RegExp("(" + reActionWikitext + ")|(" + reActionMacro + ")", "mg");\n do {\n var formatMatch = actionRe.exec(this.text);\n if (formatMatch) {\n var macroParams = (formatMatch[1] ? null : formatMatch[5].readMacroParams());\n // note that for the ".." notation, we are trimming up action titles and contexts\n var actionTiddlerName = (formatMatch[1] ? formatMatch[2].trim() : macroParams[0]);\n var actionTiddler = store.getTiddler(actionTiddlerName);\n if (!actionTiddler) {\n var actionTags = (formatMatch[1] ? formatMatch[3].trim() : macroParams[1]);\n var extraTags = (formatMatch[1] ? '' : macroParams[2]);\n actionTiddler = config.macros.gtdAction.createAction(actionTiddlerName, this.title, actionTags, extraTags);\n }\n if (actionTiddler) {\n actionTiddler.gtdProject = this;\n if (this.gtdNextAction == null && !_GTD.tiddlerHasTag(actionTiddler, "done"))\n this.gtdNextAction = actionTiddler;\n this.gtdActions.push(actionTiddler);\n _GTD.setExtendedValue(actionTiddler, "gtd.projectindex", this.gtdActions.length - 1);\n // handle project renaming in action\n if (actionTiddler.gtdProjectName && actionTiddler.gtdProjectName != this.title) {\n if (_GTD.usingProjectTags)\n _GTD.tiddlerSwapTag(actionTiddler, actionTiddler.gtdProjectName, this.title);\n else\n _GTD.setExtendedValue(actionTiddler, "gtd.project", this.title);\n // action view won't get updated through any other refresh mechanism, so\n story.refreshTiddler(actionTiddler.title, null, true);\n }\n actionTiddler.gtdProjectName = this.title;\n }\n }\n } while(formatMatch);\n }\n }\n \n else if (_GTD.tiddlerHasTag(this, "context")) {\n if (this.gtdContextName == undefined)\n this.gtdContextName = this.title;\n else if (this.gtdContextName != this.title) {\n // propagate renamed context to affected actions\n store.suspendNotifications();\n var results = config.macros.list.tagged.innerHandler([ this.gtdContextName, "action"], true);\n for (var t = 0; t < results.length; t++) {\n _GTD.tiddlerSwapTag(results[t], this.gtdContextName, this.title);\n results[t].gtdContextName = this.title;\n _GTD.setExtendedValue(results[t], "gtd.context", this.title);\n // action view won't get updated through any other refresh mechanism, so\n //story.refreshTiddler(results[t].title, null, true);\n }\n // because the store is not yet updated, we need to manipulate the context cache directly\n _GTD.renameCachedContext(this.gtdContextName, this.title);\n this.gtdContextName = this.title;\n // we need a broad notification here, not just refreshActionViews\n store.resumeNotifications();\n store.notify(null, true);\n }\n }\n \n else if (_GTD.tiddlerHasTag(this, "action")) {\n if (this.gtdActionName == undefined)\n this.gtdActionName = this.title;\n else if (this.gtdActionName != this.title && this.gtdProject) {\n // ugh...dig into related project and update the wiki code to use new action name\n var reActionWikitext = "^(\s\s.{2}[ \s\st]*)(" + this.gtdActionName + ")(([ \s\st]*\s\s|.*\s\sn?)|(\s\sn?))";\n var reActionMacro = "(<<gtdAction [\s"\s']?)(" + this.gtdActionName + ")([\s"\s']?\s\ss+(?:[^>]|(?:>(?!>)))*>>)";\n this.gtdProject.text = this.gtdProject.text.replace(new RegExp(reActionWikitext, "mg"), "$1" + this.title + "$3");\n this.gtdProject.text = this.gtdProject.text.replace(new RegExp(reActionMacro, "mg"), "$1" + this.title + "$3");\n this.gtdActionName = this.title;\n }\n this.gtdActionDone = _GTD.tiddlerHasTag(this, "done");\n this.gtdContextName = _GTD.findActionContext(this);\n _GTD.setExtendedValue(this, "gtd.context", this.gtdContextName);\n // reset the next action on the associated project\n if (this.gtdProject) _GTD.setNextAction(this.gtdProject);\n }\n}\n\nStory.prototype.chooseTemplateForTiddler = function(title,template)\n{\n // This override to core TW functionality is used to provide tag-based view and edit templates. The\n // basic idea is that the tiddler is scanned for its tags and, depending on whether we are opening a\n // tiddler in "view" or "edit" mode, a corresponding 'tag + "ViewTemplate"' or 'tag + "EditTemplate"'\n // tiddler is searched for. If it exists, it is used instead of the default templates.\n \n if (!template)\n template = DEFAULT_VIEW_TEMPLATE;\n\n // before reverting to default behaviour, check to see if a tag-based template exists\n if (template == DEFAULT_VIEW_TEMPLATE || template == DEFAULT_EDIT_TEMPLATE) {\n if (this.tagBasedTemplateCache == undefined) this.tagBasedTemplateCache = new Array();\n var templateRoot = (template == DEFAULT_VIEW_TEMPLATE ? "ViewTemplate" : "EditTemplate");\n var tiddler = store.getTiddler(title);\n if (tiddler) {\n for (var i = 0; i < tiddler.tags.length; i++) {\n var tag = tiddler.tags[i];\n var tagTemplate = tag + templateRoot;\n var tagCacheId = tag + template;\n // first check our cache to see if we have seen this template before\n if (this.tagBasedTemplateCache[tagCacheId] != undefined) {\n // make sure template still exists\n if (store.tiddlerExists(this.tagBasedTemplateCache[tagCacheId])) {\n template = this.tagBasedTemplateCache[tagCacheId];\n break;\n }\n else\n delete this.tagBasedTemplateCache[tagCacheId];\n }\n // go to the store to see if template exists\n if (store.tiddlerExists(tagTemplate)) {\n template = tagTemplate;\n this.tagBasedTemplateCache[tagCacheId] = tagTemplate;\n break;\n }\n }\n }\n }\n \n if (template == DEFAULT_VIEW_TEMPLATE || template == DEFAULT_EDIT_TEMPLATE)\n template = config.tiddlerTemplates[template];\n return template;\n}\n\n// Clint Checketts' IE first-child patch, version 1.1, http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm#GiveFirstTiddlerClassPatch\n\nStory.prototype.closeTiddlerIEFirstChild = Story.prototype.closeTiddler;\nStory.prototype.closeTiddler = function(title,animate,slowly) {\n var tiddler = document.getElementById(this.idPrefix + title);\n // we need to test to ensure tiddler is actually open\n if (tiddler) {\n var storyArea = tiddler.parentNode;\n if ((this.idPrefix + title) == storyArea.firstChild.id){\n removeClass(storyArea.firstChild,"IEFirstChild");\n // this next line is redundant, since it is looked after at the end of this function\n // if (storyArea.firstChild.nextSibling) addClass(storyArea.firstChild.nextSibling,"IEFirstChild");\n }\n story.closeTiddlerIEFirstChild(title,animate,slowly);\n if (storyArea.firstChild) addClass(storyArea.firstChild,"IEFirstChild");\n }\n}\n\nStory.prototype.displayTiddlerIEFirstChild = Story.prototype.displayTiddler;\nStory.prototype.displayTiddler = function(srcElement,title,template,animate,slowly) {\n var storyArea = document.getElementById(this.container);\n if (storyArea.firstChild) removeClass(storyArea.firstChild,"IEFirstChild");\n story.displayTiddlerIEFirstChild(srcElement,title,template,animate,slowly);\n addClass(storyArea.firstChild,"IEFirstChild");\n}\n\n_GTD.initialize();\n\n//}}}\n
/***\n!GTD specific styles\n***/\n\n/*{{{*/\n/* how annoying is that big header anyway?! */\n.headerForeground, .headerShadow {\n padding-top: 1em;\n}\n\n/* the tagging popup really gets in the way so push it off to the side */\n.tagging { float: right; }\n\n/* this unbullets actions in the actionList macro */\nul.gtdActionList { list-style-type: none; }\nli.gtdActionListProject, li.gtdActionListContext { margin-top: 1.0em; }\n\n.gtdCompletedActionItem { text-decoration: line-through; }\n.gtdNextActionItem { border-bottom: 1px solid red; }\n.gtdActionWithContent a { font-weight: bold; }\n.gtdActionWithoutContent a { font-weight: normal; }\n\na.actionCrossReference { color: #228B22; }\na.actionCrossReference:hover { color: white; }\n\n/* necessary bits copied from enhanced stylesheet to render properly without it */\n#mainMenu {\n font-size: 1em;\n text-align: left;\n width: 12em;\n}\n\n#mainMenu * {\n font-size: 1em;\n font-weight: normal;\n padding: 0; margin: 0; border: 0;\n}\n\n#mainMenu ul {\n list-style: none;\n margin-bottom: 10px;\n}\n\n#mainMenu li {\n text-indent: 1em;\n}\n\n#mainMenu li li {\n text-indent: 1.5em;\n}\n\n#mainMenu li li li {\n text-indent: 2em;\n}\n\n#mainMenu li li li li {\n text-indent: 2.5em;\n}\n\n#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\n display: block; margin: 0;\n}\n\ntable.review { width: 98%; }\n.review tr { vertical-align: top; }\n\n/*}}}*/\n\n/***\n!Imported 3x5 printing styles\n//adapted from the work of Clint Checketts, http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm //\n***/\n\n/*{{{*/\n\n@media print {\n#mainMenu, #sidebar, #messageArea {display: none !important;}\n#displayArea {margin: 1em 1em 0em 1em;}\n\n\n/* LAYOUT ELEMENTS ========================================================== */\n*\n{\n margin: 0;\n padding: 0;\n}\n\n#contentWrapper\n{\n margin: 0;\n width: 100%;\n position: static;\n}\n\nbody {\n background: #fff;\n color: #000;\n font-size: 6.2pt;\n font-family: "Lucida Grande", "Bitstream Vera Sans", Helvetica, Verdana, Arial, sans-serif;\n /* we don't want any unnecessary output */\n border: none;\n}\n\nimg {\n max-width: 2.2in;\n max-height: 4.3in;\n}\n\n#header, #side_container, #storeArea, #copyright, #floater, #messageArea, .save_accesskey, .site_description, #saveTest, .toolbar, .header, .footer, .tagging, .tagged\n{\n display: none;\n}\n\n#tiddlerDisplay, #displayArea\n{\n display: inline;\n}\n\n.tiddler {\n margin: 0 0 2em 0;\n border: none;\n page-break-before: always;\n font-size: 200%;\n /* IF YOU DO NOT USE INDEX CARDS, USE THIS */\n font-size: 100%;\n}\n\n.tiddler:first-child {\n page-break-before: avoid;\n}\n\n/* this relies on Clint's IE first-child patch */\n.IEFirstChild {\n page-break-before: auto;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n margin-bottom: .3em;\n padding: .2em 0;\n border-bottom: 1px dotted #000;\n}\n\np, blockquote, ul, li, ol, dt, dd, dl, table\n{\n margin: 0 0 .3em 0;\n}\n\nh1, h2, h3, h4, h5, h6\n{\n margin: .2em 0;\n} \n\nh1\n{\n font-size: 1.5em;\n}\n\nh2\n{\n font-size: 1.3em;\n}\n\nh3\n{\n font-size: 1.25em;\n}\n\nh4\n{\n font-size: 1.15em;\n}\n\nh5\n{\n font-size: 1.1em;\n}\n\nblockquote\n{\n margin: .6em;\n padding-left: .6em;\n border-left: 1px solid #ccc;\n}\n\nul\n{\n list-style-type: circle;\n}\n\nli\n{\n margin: .1em 0 .1em 2em;\n line-height: 1.4em; \n}\n\ntable\n{\n border-collapse: collapse;\n font-size: 1em;\n}\n\ntd, th\n{\n border: 1px solid #999;\n padding: .2em;\n}\n\nhr {\n border: none;\n border-top: dotted 1px #777;\n height: 1px;\n color: #777;\n margin: .6em 0;\n}\n}\n/*}}}*/\n\n/***\n!Imported styles for calendar plugin\n***/\n\n/*{{{*/\n\n#mainMenu .calendar {\n width: 100%;\n background-color: transparent !important;\n}\n\n#mainMenu .calendar, #mainMenu .calendar tr, #mainMenu .calendar td, #mainMenu .calendar a {\n}\n\n\n/*}}}*/\n
/***\n!Layout Rules /%==============================================%/\n***/\n/*{{{*/\n\nbody {\n /* this is required for proper layout on IE, for some reason... */\n _position: static;\n}\n\n.tagClear {\n /* this, too, is a necessary IE hack... */\n _margin-top: 10em; \n _clear: both;\n}\n\n.headerForeground, .headerShadow {\n padding-top: 1em;\n}\n\n.tiddler {\n margin: 0 0 0.9em 0;\n padding-bottom: 1em;\n}\n\n#mainMenu {\n width: 16em;\n font-size: 1em;\n text-align: left;\n padding-top: 0.5em;\n}\n\n#mainMenu * {\n font-size: 1em;\n font-weight: normal;\n padding: 0; margin: 0; border: 0;\n}\n\n#mainMenu ul {\n list-style: none;\n margin-bottom: 10px;\n}\n\n#mainMenu li {\n text-indent: 1em;\n}\n\n#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\n display: block; margin: 0;\n}\n\n#displayArea {\n margin-left: 19em; margin-top: 0;\n}\n\n.toolbar .button {\n margin-left: 4px;\n}\n\n/*}}}*/\n\n/***\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #464646;\n color: #000;\n}\n\nh1,h2,h3,h4,h5 {\n color: #000;\n background: #eee;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #000;\n}\n\n.headerForeground {\n color: #cf6;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #cf6;\n}\n\n/* ??? what is up when you specify a site title colour in IE ??? */\n/* .siteTitle { color: red; } */\n\n/*}}}*/\n/***\n!General tabs /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected {\n color: #fff;\n background: #960;\n border: none;\n}\n\n.tabUnselected {\n color: #fff;\n background: #660;\n}\n\n.tabContents {\n color: #004;\n background: #960;\n border: none;\n}\n\n.tabContents .button, .tabContents a {\n border: none;\n color: #fff;\n}\n\n.tabContents a:hover, .tabset a:hover {\n background: #000;\n}\n\n/* make nested tab areas look different */\n.tabContents .tabSelected, .tabContents .tabContents {\n background: #700;\n color: #fff;\n}\n\n.tabContents .tabContents {\n color: #eeb;\n}\n\n/*}}}*/\n/***\n!Main Menu /%=================================================%/\n***/\n/*{{{*/\n#mainMenu {\n background: #700;\n color: #fff;\n border-right: 3px solid #500;\n}\n\n#mainMenu * {\n color: #fff;\n}\n\n#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\n border: none;\n border-bottom: 1px solid #500;\n border-top: 1px solid #900;\n}\n\n#mainMenu a:hover,\n#mainMenu a.button:hover {\n background-color: #b00;\n color: #fff;\n}\n\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n color: #000;\n background: #eeb;\n border-right: 3px solid #bb8;\n border-bottom: 3px solid #520;\n}\n\n#sidebarOptions .sliderPanel {\n background: #fff;\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: #700;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #fff;\n background: #700;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #700;\n background: #fff;\n}\n\n#sidebarOptions a {\n color: #700;\n border: none;\n}\n\n#sidebarOptions a:hover, #sidebarOptions a:active {\n color: #fff;\n background: #700;\n}\n\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n border-right: 3px solid #da1;\n border-bottom: 3px solid #a80;\n background: #ffe72f;\n color: #014;\n}\n\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #cf6;\n border: none;\n}\n\n.popup hr {\n color: #000;\n}\n\n.popup li.disabled {\n color: #666;\n background: #cf6;\n}\n\n.popup li a, .popup li a:visited {\n color: #000;\n border: 1px outset #cf6;\n background: #cf6;\n}\n\n.popup li a:hover {\n color: #000;\n border: 1px outset #cf6;\n background: #ef9;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler {\n background: #fff;\n border-right: 3px solid #aaa;\n border-bottom: 3px solid #555;\n}\n\n.title {\n color: #900;\n}\n\n.toolbar {\n color: #000;\n}\n\n.toolbar .button {\n background: #eeb /*#cf6*/;\n border: 1px outset #eeb /*#cf6*/;\n}\n\n.toolbar .button:hover {\n background: #700 /*#ef9*/;\n color: #fff;\n}\n\n#mainMenu .calendar { border: 1px solid white; }\n#mainMenu .calendar, #mainMenu .calendar tr, #mainMenu .calendar td, #mainMenu .calendar a {\n}\n\n/*}}}*/\n\n/***\n!Additional print overrides for fancy style /%==============================================%/\n***/\n/*{{{*/\n\n@media print {\n\n.tiddler {\n /* get rid of our fancy tiddler outline */\n border: none;\n}\n\n}\n/*}}}*/\n
''如果…IF''\n當大家都喪失理智而責怪你時,如果你能夠保持清醒;\n當大家都懷疑你時,如果你仍能相信自己,\n同時還能思考他們懷疑的原因;\n如果你能等待而不覺得厭煩,\n或者當人們對你說謊時,你不會以謊言相對,\n或者當人們憎恨你時,你不會還以憎恨,\n既不會太過鄉愿,也不會賣弄聰明;\nIf you can keep your head when all about you\nAre losing theirs and blaming it on you;\nIf you can trust yourself when all men doubt you,\nBut make allowance for their doubting too;\nIf you can wait and not be tired by waiting,\nOr, being lied about, don't deal in lies,\nOr, being hated, don't give way to hating,\nAnd yet don't look too good, nor talk too wise;\n\n如果你懷抱夢想,但不會被夢想牽著走;\n如果你能夠思考,但不會以思考代替行動;\n如果你能在面臨成功或失敗時同樣沉著以對;\n如果你能忍受自己所說的真理,受到世人扭曲,\n或者看著你以生命維護的東西破碎,\n然後彎下腰來,用老舊的工具重新修護;\nIf you can dream—and not make dreams your master;\nIf you can think—and not make thoughts your aim;\nIf you can meet with triumph and disaster\nAnd treat those two impostors just the same;\nIf you can bear to hear the truth you've spoken\nTwisted by knaves to make a trap for fools,\nOr watch the things you gave your life to broken,\nAnd stoop and build 'em up with worn-out tools;\n\n如果你在無數次成功之後遭遇失敗,\n能夠重新來過,不會對失敗多說一句;\n如果你能在身心俱疲之際,仍然勇往直前,\n在你一無所有之際,仍能以僅存的意志力堅持下去;\nIf you can make one heap of all your winnings\nAnd risk it on one turn of pitch-and-toss,\nAnd lose, and start again at your beginnings\nAnd never breathe a word about your loss;\nIf you can force your heart and nerve and sinew\nTo serve your turn long after they are gone,\nAnd so hold on when there is nothing in you\nExcept the Will which says to them: "Hold on";\n\n如果你牛驥同皁,而不忘初衷,\n或者與權貴同行,而不失本色;\n如果仇敵與好友都不能傷害你;\n如果所有的人都能依賴你,但又不過份依賴;\n如果你能用六十秒填滿無情的一分鐘,\n這世界的一切都將歸你所有,\n而且你已長大成人~~~吾兒!\nIf you can talk with crowds and keep your virtue,\nOr walk with kings—nor lose the common touch;\nIf neither foes nor loving friends can hurt you;\nIf all men count with you, but none too much;\nIf you can fill the unforgiving minute\nWith sixty seconds' worth of distance run—\nYours is the Earth and everything that's in it,\nAnd—which is more—you'll be a Man, my son!
/***\n|''Name:''|ImportTiddlersPlugin|\n|''Source:''|http://www.TiddlyTools.com/#ImportTiddlersPlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nWhen many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. It can also be very extremely helpful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\nThis plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. An interactive control panel lets you pick a document to import from, and then select which tiddlers to import, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles. Automatically add tags to imported tiddlers so they are easy to find later on. Generates a detailed report of import 'history' in ImportedTiddlers.\n!!!!!Interactive interface\n<<<\n{{{<<importTiddlers>>}}} or {{{<<importTiddlers core>>}}}\ninvokes the built-in importTiddlers macro (TW2.1.x+). If installed in documents using TW2.0.x or earlier, fallback is to use 'link' display (see below)\n\n{{{<<importTiddlers link>>}}}\ncreates "import tiddlers" link that when clicked to show/hide import control panel\n\n{{{<<importTiddlers inline>>}}}\ncreates import control panel directly in tiddler content\n\n<<importTiddlers inline>>\n\nPress ''[browse]'' to select a TiddlyWiki document file to import. You can also type in the path/filename or a remote document URL (starting with http://)and press ''[open]''. //Note: There may be some delay to permit the browser time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//\n\nSelect one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.\n\n''select: all, new, changes, or differences''\n\nYou can click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in:\n>''"all"'' selects ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' selects only tiddlers that exist in both documents but that are newer in the source document\n>''"differences"'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)\n\n''Import Tagging:''\n\nTiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the "add tags" input field, and then //added// to the existing tags for each tiddler as it is imported.\n\n''Skip, Rename, Merge, or Replace:''\n\nWhen importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.\n\nTo bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.\n\n//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//\n\n''Import Report History''\n\nWhen tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.\n\nWhen the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.\n\nIf a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.\n\nNote: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the "create a report" checkbox before beginning the import processing.\n\n<<<\n!!!!!non-interactive 'load tiddlers' macro\n<<<\nUseful for automated installation/update of plugins and other tiddler content.\n\n{{{<<loadTiddlers "label:load tiddlers from %0" http://www.tiddlytools.com/example.html confirm>>}}}\n<<loadTiddlers "label:load tiddlers from %0" http://www.tiddlytools.com/example.html confirm>>\n\nSyntax:\n{{{<<loadTiddlers label:text prompt:text filter source quiet confirm>>}}}\n\n''label:text'' and ''prompt:text''\n>defines link text and tooltip (prompt) that can be clicked to trigger the load tiddler processing. If a label is NOT provided, then no link is created and loadTiddlers() is executed whenever the containing tiddler is rendered.\n''filter'' (optional) determines which tiddlers will be automatically selected for importing. Use one of the following keywords:\n>''"all"'' retrieves ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler\n>''"updates"'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)\n>''"tiddler:~TiddlerName"'' retrieves only the specific tiddler named in the parameter.\n>''"tag:text"'' retrieves only the tiddlers tagged with the indicated text.\n''source'' (required) is the location of the imported document. It can be either a local document path/filename in whatever format your system requires, or a remote web location (starting with "http://" or "https://")\n>use the keyword ''ask'' to prompt for a source location whenever the macro is invoked\n''"quiet"'' (optional)\n>supresses all status message during the import processing (e.g., "opening local file...", "found NN tiddlers..." etc). Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified. This ensures that changes to your document cannot occur without any visible indication at all.\n''"confirm"'' (optional)\n>adds interactive confirmation. A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.\n<<<\n!!!!!Installation\n<<<\ncopy/paste the following tiddlers into your document:\n''ImportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < ImportTiddlers > >" macro^^\n\n''Quick Installation Tip #1:''\nIf you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.\n<<<\n!!!!!Revision History\n<<<\n''2006.11.14 [3.1.2]'' fix macro handler parameter declaration (double-pasted param list corrupts IE)\n''2006.11.13 [3.1.1]'' use apply() method to invoke hijacked core handler\n''2006.11.13 [3.1.0]'' hijack TW2.1 built-in importTiddlers.handler() so it can co-exist with the plugin interface 'panel'. Use macro without params (or use 'core' keyword) to display built-in core interface. Use new "link" param to embed "import tiddlers" link that shows floating panel when clicked. Renamed a few plugin utility functions so they don't collide with core internal functions. More code restructuring to come.\n''2006.10.12 [3.0.8]'' in readTiddlersFromHTML(), fallback to find end of store area by matching "/body" when POST-BODY-START is not present (backward compatibility for older documents)\n''2006.09.10 [3.0.7]'' in readTiddlersFromHTML(), find end of store area by matching "POST-BODY-START" instead of "/body" \n''2006.08.16 [3.0.6]'' Use higher-level store.saveTiddler() instead of store.addTiddler() to avoid conflicts with ZW and other adaptations that hijack low-level tiddler handling. Also, in CreateImportPanel(), no longer register notify to "refresh listbox after every tiddler change" (left over from old 'auto-filtered' list handling). Thanks to Bob McElrath for report/solution.\n''2006.07.29 [3.0.5]'' added noChangeMsg to loadTiddlers processing. if not 'quiet' mode, reports skipped tiddlers.\n''2006.04.18 [3.0.4]'' in loadTiddlers.handler, fixed parsing of "prompt:" param. Also, corrected parameters mismatch in loadTiddlers() callback function definition (order of params was wrong, resulting in filters NOT being applied)\n''2006.04.12 [3.0.3]'' moved many display messages to macro properties for easier L10N translations via 'lingo' definitions.\n''2006.04.12 [3.0.2]'' additional refactoring of 'core candidate' code. Proposed API now defines "loadRemoteFile()" for XMLHttpRequest processing with built in fallback for handling local filesystem access, and readTiddlersFromHTML() to process the resulting source HTML content.\n''2006.04.04 [3.0.1]'' in refreshImportList(), when using [by tags], tiddlers without tags are now included in a new "untagged" psuedo-tag list section\n''2006.04.04 [3.0.0]'' Separate non-interactive {{{<<importTiddlers...>>}}} macro functionality for incorporation into TW2.1 core and renamed as {{{<<loadTiddlers>>}}} macro. New parameters for loadTiddlers: ''label:text'' and ''prompt:text'' for link creation, ''ask'' for filename/URL, ''tag:text'' for filtering, "confirm" for accept/reject of individual inbound tiddlers. Also, ImportedTiddlers report generator output has been simplified and "importReplace/importPublic" tags and associated "force" param (which were rarely, if ever, used) has been dropped.\n''2006.03.30 [2.9.1]'' when extracting store area from remote URL, look for "</body>" instead of "</body>\sn</html>" so it will match even if the "\sn" is absent from the source.\n''2006.03.30 [2.9.0]'' added optional 'force' macro param. When present, autoImportTiddlers() bypasses the checks for importPublic and importReplace. Based on a request from Tom Otvos.\n''2006.03.28 [2.8.1]'' in loadImportFile(), added checks to see if 'netscape' and 'x.overrideMimeType()' are defined (IE does *not* define these values, so we bypass this code)\nAlso, when extracting store area from remote URL, explicitly look for "</body>\sn</html>" to exclude any extra content that may have been added to the end of the file by hosting environments such as GeoCities. Thanks to Tom Otvos for finding these bugs and suggesting some fixes.\n''2006.02.21 [2.8.0]'' added support for "tiddler:TiddlerName" filtering parameter in auto-import processing\n''2006.02.21 [2.7.1]'' Clean up layout problems with IE. (Use tables for alignment instead of SPANs styled with float:left and float:right)\n''2006.02.21 [2.7.0]'' Added "local file" and "web server" radio buttons for selecting dynamic import source controls in ImportPanel. Default file control is replaced with URL text input field when "web server" is selected. Default remote document URL is defined in SiteURL tiddler. Also, added option for prepending SiteProxy URL as prefix to remote URL to mask cross-domain document access (requires compatible server-side script)\n''2006.02.17 [2.6.0]'' Removed "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.\n''2006.02.16 [2.5.4]'' added checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.\n''2006.02.14 [2.5.3]'' FF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()\n''2006.02.10 [2.5.2]'' corrected unintended global variable in importReport().\n''2006.02.05 [2.5.1]'' moved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2006.01.18 [2.5.0]'' added checkbox for "create a report". Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.\n''2006.01.15 [2.4.1]'' added "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic\n''2006.01.15 [2.4.0]'' Added support for tagging individual tiddlers with importSkip, importReplace, and/or importPrivate to control which tiddlers can be overwritten or shared with others when using auto-import macro syntax. Defaults are to SKIP overwriting existing tiddlers with imported tiddlers, and ALLOW your tiddlers to be auto-imported by others.\n''2006.01.15 [2.3.2]'' Added "ask" parameter to confirm each tiddler before importing (for use with auto-importing)\n''2006.01.15 [2.3.1]'' Strip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. Makes loading more efficient by reducing the document size and by preventing the import document from executing its TW initialization (including plugins). Seems to resolve the "Found 0 tiddlers" problem. Also, when importing local documents, use convertUTF8ToUnicode() to convert the file contents so support international characters sets.\n''2006.01.12 [2.3.0]'' Reorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest. Let's processing continue while waiting for remote hosts to respond to URL requests. Added non-interactive 'batch' macro mode, using parameters to specify which tiddlers to import, and from what document source. Improved error messages and diagnostics, plus an optional 'quiet' switch for batch mode to eliminate //most// feedback.\n''2006.01.11 [2.2.0]'' Added "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck\n''2006.01.09 [2.1.1]'' When a URL is typed in, and then the "open" button is pressed, it generates both an onChange event for the file input and a click event for open button. This results in multiple XMLHttpRequest()'s which seem to jam things up quite a bit. I removed the onChange handling for file input field. To open a file (local or URL), you must now explicitly press the "open" button in the control panel.\n''2006.01.08 [2.1.0]'' IMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements. Adapted from example code and techniques courtesy of Jonny LeRoy.\n''2006.01.06 [2.0.2]'' When refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.\n''2006.01.04 [2.0.1]'' When "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.\n''2005.12.27 [2.0.0]'' Update for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n''2005.12.22 [1.3.1]'' tweak formatting in importReport() and add 'discard report' link to output\n''2005.12.03 [1.3.0]'' Dynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding. Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)\n''2005.11.29 [1.2.1]'' fixed formatting of 'detail info' in importReport()\n''2005.11.11 [1.2.0]'' added 'inline' param to embed controls in a tiddler\n''2005.11.09 [1.1.0]'' only load HTML and CSS the first time the macro handler is called. Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.\n''2005.10.25 [1.0.5]'' fixed typo in importReport() that prevented reports from being generated\n''2005.10.09 [1.0.4]'' combined documentation with plugin code instead of using separate tiddlers\n''2005.08.05 [1.0.3]'' moved CSS and HTML definitions into plugin code instead of using separate tiddlers\n''2005.07.27 [1.0.2]'' core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()\n''2005.07.23 [1.0.1]'' added parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]'' Initial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n// // ''MACRO DEFINITION''\n//{{{\n// Version\nversion.extensions.importTiddlers = {major: 3, minor: 1, revision: 2, date: new Date(2006,11,14)};\n\n// IE needs explicit global scoping for functions/vars called from browser events\nwindow.onClickImportButton=onClickImportButton;\nwindow.refreshImportList=refreshImportList;\n\n// default cookie/option values\nif (!config.options.chkImportReport) config.options.chkImportReport=true;\n\n// fixups for TW2.0.x and earlier\nif (window.merge==undefined) window.merge=function(dst,src,preserveExisting)\n { for (p in src) if (!preserveExisting||dst[p]===undefined) dst[p]=src[p]; return dst; }\nif (config.macros.importTiddlers==undefined) config.macros.importTiddlers={ };\n\nmerge(config.macros.importTiddlers,{\n label: "import tiddlers",\n prompt: "Copy tiddlers from another document",\n foundMsg: "Found %0 tiddlers in %1",\n countMsg: "%0 tiddlers selected for import",\n importedMsg: "Imported %0 of %1 tiddlers from %2",\n src: "", // path/filename or URL of document to import (retrieved from SiteUrl tiddler)\n proxy: "", // URL for remote proxy script (retrieved from SiteProxy tiddler)\n useProxy: false, // use specific proxy script in front of remote URL\n inbound: null, // hash-indexed array of tiddlers from other document\n newTags: "", // text of tags added to imported tiddlers\n addTags: true, // add new tags to imported tiddlers\n listsize: 8, // # of lines to show in imported tiddler list\n importTags: true, // include tags from remote source document when importing a tiddler\n keepTags: true, // retain existing tags when replacing a tiddler\n index: 0, // current processing index in import list\n sort: "" // sort order for imported tiddler listbox\n});\n\nif (config.macros.importTiddlers.coreHandler==undefined)\n config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.handler; // save built-in handler\n\nconfig.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n if (!params[0] || params[0].toLowerCase()=='core') { // default to built in\n if (config.macros.importTiddlers.coreHandler)\n config.macros.importTiddlers.coreHandler.apply(this,arguments);\n else \n createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);\n }\n else if (params[0]=='link') // show link to floating panel\n createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);\n else if (params[0]=='inline') {// show panel as INLINE tiddler content\n createImportPanel(place);\n document.getElementById("importPanel").style.position="static";\n document.getElementById("importPanel").style.display="block";\n }\n else config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers\n}\n//}}}\n\n// // ''INTERFACE DEFINITION''\n// // Handle link click to create/show/hide control panel\n//{{{\nfunction onClickImportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("importPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createImportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n// // Create control panel: HTML, CSS\n//{{{\nfunction createImportPanel(place) {\n var panel=document.getElementById("importPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.importTiddlers.css,"importTiddlers");\n panel=createTiddlyElement(place,"span","importPanel",null,null)\n panel.innerHTML=config.macros.importTiddlers.html;\n refreshImportList();\n var siteURL=store.getTiddlerText("SiteUrl"); if (!siteURL) siteURL="";\n document.getElementById("importSourceURL").value=siteURL;\n config.macros.importTiddlers.src=siteURL;\n var siteProxy=store.getTiddlerText("SiteProxy"); if (!siteProxy) siteProxy="SiteProxy";\n document.getElementById("importSiteProxy").value=siteProxy;\n config.macros.importTiddlers.proxy=siteProxy;\n return panel;\n}\n//}}}\n\n// // CSS\n//{{{\nconfig.macros.importTiddlers.css = '\s\n#importPanel {\s\n display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em;\s\n}\s\n#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\s\n#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\s\n#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\s\n#importPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#importPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\s\n#importPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\s\n#importPanel .rad { width:auto; }\s\n#importPanel .chk { width:auto; margin:1px;border:0; }\s\n#importPanel .btn { width:auto; }\s\n#importPanel .btn1 { width:98%; }\s\n#importPanel .btn2 { width:48%; }\s\n#importPanel .btn3 { width:32%; }\s\n#importPanel .btn4 { width:24%; }\s\n#importPanel .btn5 { width:19%; }\s\n#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\s\n#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\s\n#importCollisionPanel { display:none; margin:0.5em 0em 0em 0em; }\s\n';\n//}}}\n\n// // HTML \n//{{{\nconfig.macros.importTiddlers.html = '\s\n<!-- source and report -->\s\n<table><tr><td align=left>\s\n import from\s\n <input type="radio" class="rad" name="importFrom" value="file" CHECKED\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=!this.checked?\s'block\s':\s'none\s'"> local file\s\n <input type="radio" class="rad" name="importFrom" value="http"\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=!this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=this.checked?\s'block\s':\s'none\s'"> web server\s\n</td><td align=right>\s\n <input type=checkbox class="chk" id="chkImportReport" checked\s\n onClick="config.options[\s'chkImportReport\s']=this.checked;"> create a report\s\n</td></tr></table>\s\n<!-- import from local file -->\s\n<div id="importLocalPanel" style="display:block;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\nlocal document path/filename:<br>\s\n<input type="file" id="fileImportSource" size=57 style="width:100%"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<!-- import from http server -->\s\n<div id="importHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\n<table><tr><td align=left>\s\n remote document URL:<br>\s\n</td><td align=right>\s\n <input type="checkbox" class="chk" id="importUseProxy"\s\n onClick="config.macros.importTiddlers.useProxy=this.checked;\s\n document.getElementById(\s'importSiteProxy\s').style.display=this.checked?\s'block\s':\s'none\s'"> use a proxy script\s\n</td></tr></table>\s\n<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\s\n onKeyUp="config.macros.importTiddlers.proxy=this.value"\s\n onChange="config.macros.importTiddlers.proxy=this.value;">\s\n<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<table><tr><td align=left>\s\n select:\s\n <a href="JavaScript:;" id="importSelectAll"\s\n onclick="onClickImportButton(this)" title="select all tiddlers">\s\n all </a>\s\n <a href="JavaScript:;" id="importSelectNew"\s\n onclick="onClickImportButton(this)" title="select tiddlers not already in destination document">\s\n added </a> \s\n <a href="JavaScript:;" id="importSelectChanges"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been updated in source document">\s\n changes </a> \s\n <a href="JavaScript:;" id="importSelectDifferences"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been added or are different from existing tiddlers">\s\n differences </a> \s\n <a href="JavaScript:;" id="importToggleFilter"\s\n onclick="onClickImportButton(this)" title="show/hide selection filter">\s\n filter </a> \s\n</td><td align=right>\s\n <a href="JavaScript:;" id="importListSmaller"\s\n onclick="onClickImportButton(this)" title="reduce list size">\s\n – </a>\s\n <a href="JavaScript:;" id="importListLarger"\s\n onclick="onClickImportButton(this)" title="increase list size">\s\n + </a>\s\n <a href="JavaScript:;" id="importListMaximize"\s\n onclick="onClickImportButton(this)" title="maximize/restore list size">\s\n = </a>\s\n</td></tr></table>\s\n<select id="importList" size=8 multiple\s\n onchange="setTimeout(\s'refreshImportList(\s'+this.selectedIndex+\s')\s',1)">\s\n <!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\s\n</select>\s\n<input type=checkbox class="chk" id="chkAddTags" checked\s\n onClick="config.macros.importTiddlers.addTags=this.checked;">add new tags \s\n<input type=checkbox class="chk" id="chkImportTags" checked\s\n onClick="config.macros.importTiddlers.importTags=this.checked;">import source tags \s\n<input type=checkbox class="chk" id="chkKeepTags" checked\s\n onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing tags<br>\s\n<input type=text id="txtNewTags" size=15 onKeyUp="config.macros.importTiddlers.newTags=this.value" autocomplete=off>\s\n<div align=center>\s\n <input type=button id="importOpen" class="importButton" style="width:32%" value="open"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importStart" class="importButton" style="width:32%" value="import"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importClose" class="importButton" style="width:32%" value="close"\s\n onclick="onClickImportButton(this)">\s\n</div>\s\n<div id="importCollisionPanel">\s\n tiddler already exists:\s\n <input type=text id="importNewTitle" size=15 autocomplete=off">\s\n <div align=center>\s\n <input type=button id="importSkip" class="importButton" style="width:23%" value="skip"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importRename" class="importButton" style="width:23%" value="rename"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importMerge" class="importButton" style="width:23%" value="merge"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importReplace" class="importButton" style="width:23%" value="replace"\s\n onclick="onClickImportButton(this)">\s\n </div>\s\n</div>\s\n';\n//}}}\n\n// // Control interactions\n//{{{\nfunction onClickImportButton(which)\n{\n // DEBUG alert(which.id);\n var theList = document.getElementById('importList');\n if (!theList) return;\n var thePanel = document.getElementById('importPanel');\n var theCollisionPanel = document.getElementById('importCollisionPanel');\n var theNewTitle = document.getElementById('importNewTitle');\n var count=0;\n switch (which.id)\n {\n case 'fileImportSource':\n case 'importOpen': // load import source into hidden frame\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n if (config.macros.importTiddlers.src=="") break;\n // Load document into hidden iframe so we can read it's DOM and fill the list\n config.macros.importTiddlers.loadRemoteFile(config.macros.importTiddlers.src, function(src,txt) {\n var tiddlers = readTiddlersFromHTML(txt);\n var count=tiddlers?tiddlers.length:0;\n displayMessage(config.macros.importTiddlers.foundMsg.format([count,src]));\n config.macros.importTiddlers.inbound=tiddlers;\n window.refreshImportList(0);\n });\n break;\n case 'importSelectAll': // select all tiddler list items (i.e., not headings)\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count++;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectNew': // select tiddlers not in current document\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=!store.tiddlerExists(theList.options[t].value);\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value==""||!store.tiddlerExists(theList.options[t].value)) continue;\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified>0); // updated tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n if (!store.tiddlerExists(theList.options[t].value)) { theList.options[t].selected=true; count++; continue; }\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified!=0); // changed tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importToggleFilter': // show/hide filter\n case 'importFilter': // apply filter\n alert("coming soon!");\n break;\n case 'importStart': // initiate the import processing\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.index=0;\n config.macros.importTiddlers.index=importTiddlers(0);\n importStopped();\n break;\n case 'importClose': // unload imported tiddlers or hide the import control panel\n // if imported tiddlers not loaded, close the import control panel\n if (!config.macros.importTiddlers.inbound) { thePanel.style.display='none'; break; }\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n break;\n case 'importSkip': // don't import the tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status='skipped after asking'; // mark item as skipped\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index+1); // resume with NEXT item\n importStopped();\n break;\n case 'importRename': // change name of imported tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status = 'renamed from '+theImported.title; // mark item as renamed\n theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title\n theItem.value = theNewTitle.value; // change the listbox item text\n theItem.text = theNewTitle.value; // change the listbox item text\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importMerge': // join existing and imported tiddler content\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n var theText = theExisting.text+'\sn----\sn^^merged from: ';\n theText +='[['+config.macros.importTiddlers.src+'#'+theItem.value+'|'+config.macros.importTiddlers.src+'#'+theItem.value+']]^^\sn';\n theText +='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\sn'+theImported.text;\n var theDate = new Date();\n var theTags = theExisting.getTags()+' '+theImported.getTags();\n theImported.set(null,theText,null,theDate,theTags);\n theImported.status = 'merged with '+theExisting.title; // mark item as merged\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");\n theImported.status += ' by '+theExisting.modifier;\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with this item\n importStopped();\n break;\n case 'importReplace': // substitute imported tiddler for existing tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n theImported.status = 'replaces '+theExisting.title; // mark item for replace\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");\n theImported.status += ' by '+theExisting.modifier;\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importListSmaller': // decrease current listbox size, minimum=5\n if (theList.options.length==1) break;\n theList.size-=(theList.size>5)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListLarger': // increase current listbox size, maximum=number of items in list\n if (theList.options.length==1) break;\n theList.size+=(theList.size<theList.options.length)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListMaximize': // toggle listbox size between current and maximum\n if (theList.options.length==1) break;\n theList.size=(theList.size==theList.options.length)?config.macros.importTiddlers.listsize:theList.options.length;\n break;\n }\n}\n//}}}\n\n// // refresh listbox\n//{{{\nfunction refreshImportList(selectedIndex)\n{\n var theList = document.getElementById("importList");\n if (!theList) return;\n // if nothing to show, reset list content and size\n if (!config.macros.importTiddlers.inbound) \n {\n while (theList.length > 0) { theList.options[0] = null; }\n theList.options[0]=new Option('please open a document...',"",false,false);\n theList.size=config.macros.importTiddlers.listsize;\n return;\n }\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) config.macros.importTiddlers.sort='title'; // heading\n if (selectedIndex==1) config.macros.importTiddlers.sort='title';\n if (selectedIndex==2) config.macros.importTiddlers.sort='modified';\n if (selectedIndex==3) config.macros.importTiddlers.sort='tags';\n if (selectedIndex>3) {\n // display selected tiddler count\n for (var t=0,count=0; t < theList.options.length; t++) count+=(theList.options[t].selected&&theList.options[t].value!="")?1:0;\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n return; // no refresh needed\n }\n\n // get the alphasorted list of tiddlers (optionally, filter out unchanged tiddlers)\n var tiddlers=config.macros.importTiddlers.inbound;\n tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=new Option(tiddlers.length+' tiddler'+((tiddlers.length!=1)?'s are':' is')+' in the document',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="title" )?">":indent)+' [by title]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="modified")?">":indent)+' [by date]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="tags")?">":indent)+' [by tags]',"",false,false);\n // output the tiddler list\n switch(config.macros.importTiddlers.sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modified":\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++) {\n var tiddler = tiddlers[t];\n var theSection = tiddler.modified.toLocaleDateString();\n if (theSection != lastSection) {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n case "tags":\n var theTitles = {}; // all tiddler titles, hash indexed by tag value\n var theTags = new Array();\n for(var t=0; t<tiddlers.length; t++) {\n var title=tiddlers[t].title;\n var tags=tiddlers[t].tags;\n if (!tags || !tags.length) {\n if (theTitles["untagged"]==undefined) { theTags.push("untagged"); theTitles["untagged"]=new Array(); }\n theTitles["untagged"].push(title);\n }\n else for(var s=0; s<tags.length; s++) {\n if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }\n theTitles[tags[s]].push(title);\n }\n }\n theTags.sort();\n for(var tagindex=0; tagindex<theTags.length; tagindex++) {\n var theTag=theTags[tagindex];\n theList.options[i++]=new Option(theTag,"",false,false);\n for(var t=0; t<theTitles[theTag].length; t++)\n theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n if (theList.size<config.macros.importTiddlers.listsize) theList.size=config.macros.importTiddlers.listsize;\n if (theList.size>theList.options.length) theList.size=theList.options.length;\n}\n//}}}\n\n// // re-entrant processing for handling import with interactive collision prompting\n//{{{\nfunction importTiddlers(startIndex)\n{\n if (!config.macros.importTiddlers.inbound) return -1;\n\n var theList = document.getElementById('importList');\n if (!theList) return;\n var t;\n // if starting new import, reset import status flags\n if (startIndex==0)\n for (var t=0;t<config.macros.importTiddlers.inbound.length;t++)\n config.macros.importTiddlers.inbound[t].status="";\n for (var i=startIndex; i<theList.options.length; i++)\n {\n // if list item is not selected or is a heading (i.e., has no value), skip it\n if ((!theList.options[i].selected) || ((t=theList.options[i].value)==""))\n continue;\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==t) break;\n var inbound = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(inbound.title);\n // avoid redundant import for tiddlers that are listed multiple times (when 'by tags')\n if (inbound.status=="added")\n continue;\n // don't import the "ImportedTiddlers" history from the other document...\n if (inbound.title=='ImportedTiddlers')\n continue;\n // if tiddler exists and import not marked for replace or merge, stop importing\n if (theExisting && (inbound.status.substr(0,7)!="replace") && (inbound.status.substr(0,5)!="merge"))\n return i;\n // assemble tags (remote + existing + added)\n var newTags = "";\n if (config.macros.importTiddlers.importTags)\n newTags+=inbound.getTags() // import remote tags\n if (config.macros.importTiddlers.keepTags && theExisting)\n newTags+=" "+theExisting.getTags(); // keep existing tags\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newTags+=" "+config.macros.importTiddlers.newTags; // add new tags\n inbound.set(null,null,null,null,newTags.trim());\n // set the status to 'added' (if not already set by the 'ask the user' UI)\n inbound.status=(inbound.status=="")?'added':inbound.status;\n // do the import!\n // OLD: store.addTiddler(in); store.setDirty(true);\n store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags);\n store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value\n }\n return(-1); // signals that we really finished the entire list\n}\n//}}}\n\n//{{{\nfunction importStopped()\n{\n var theList = document.getElementById('importList');\n var theNewTitle = document.getElementById('importNewTitle');\n if (!theList) return;\n if (config.macros.importTiddlers.index==-1)\n importReport(); // import finished... generate the report\n else\n {\n // DEBUG alert('import stopped at: '+config.macros.importTiddlers.index);\n // import collision... show the collision panel and set the title edit field\n document.getElementById('importCollisionPanel').style.display='block';\n theNewTitle.value=theList.options[config.macros.importTiddlers.index].value;\n }\n}\n//}}}\n\n// // ''REPORT GENERATOR''\n//{{{\nfunction importReport(quiet)\n{\n if (!config.macros.importTiddlers.inbound) return;\n // DEBUG alert('importReport: start');\n\n // if import was not completed, the collision panel will still be open... close it now.\n var panel=document.getElementById('importCollisionPanel'); if (panel) panel.style.display='none';\n\n // get the alphasorted list of tiddlers\n var tiddlers = config.macros.importTiddlers.inbound;\n // gather the statistics\n var count=0;\n for (var t=0; t<tiddlers.length; t++)\n if (tiddlers[t].status && tiddlers[t].status.trim().length && tiddlers[t].status.substr(0,7)!="skipped") count++;\n\n // generate a report\n if (count && config.options.chkImportReport) {\n // get/create the report tiddler\n var theReport = store.getTiddler('ImportedTiddlers');\n if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text = ""; }\n // format the report content\n var now = new Date();\n var newText = "On "+now.toLocaleString()+", "+config.options.txtUserName\n newText +=" imported "+count+" tiddler"+(count==1?"":"s")+" from\sn[["+config.macros.importTiddlers.src+"|"+config.macros.importTiddlers.src+"]]:\sn";\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newText += "imported tiddlers were tagged with: \s""+config.macros.importTiddlers.newTags+"\s"\sn";\n newText += "<<<\sn";\n for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status) newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\sn";\n newText += "<<<\sn";\n// 20060918 ELS: DON'T ADD "discard" BUTTON TO REPORT\n// newText += "<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n// newText += "onclick=\s"story.closeTiddler('"+theReport.title+"'); store.deleteTiddler('"+theReport.title+"');\s" ";\n// newText += "value=\s"discard report\s"></html>";\n // update the ImportedTiddlers content and show the tiddler\n theReport.text = newText+((theReport.text!="")?'\sn----\sn':"")+theReport.text;\n theReport.modifier = config.options.txtUserName;\n theReport.modified = new Date();\n // OLD: store.addTiddler(theReport);\n store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags);\n if (!quiet) { story.displayTiddler(null,theReport.title,1,null,null,false); story.refreshTiddler(theReport.title,1,true); }\n }\n\n // reset status flags\n for (var t=0; t<config.macros.importTiddlers.inbound.length; t++) config.macros.importTiddlers.inbound[t].status="";\n\n // refresh display if tiddlers have been loaded\n if (count) { store.setDirty(true); store.notifyAll(); }\n\n // always show final message when tiddlers were actually loaded\n if (count) displayMessage(config.macros.importTiddlers.importedMsg.format([count,tiddlers.length,config.macros.importTiddlers.src]));\n}\n//}}}\n\n/***\n!!!!! non-interactive 'load tiddlers' macro\n***/\n//{{{\n// default cookie/option values\nif (!config.options.chkImportReport) config.options.chkImportReport=true;\n\nconfig.macros.loadTiddlers = {\n label: "",\n prompt: "add/update tiddlers from '%0'",\n askMsg: "Please enter a local path/filename or a remote URL",\n openMsg: "Opening %0",\n openErrMsg: "Could not open %0 - error=%1",\n readMsg: "Read %0 bytes from %1",\n foundMsg: "Found %0 tiddlers in %1",\n nochangeMsg: "'%0' is up-to-date... skipped.",\n loadedMsg: "Loaded %0 of %1 tiddlers from %2"\n};\n\nconfig.macros.loadTiddlers.handler = function(place,macroName,params) {\n var label=(params[0] && params[0].substr(0,6)=='label:')?params.shift().substr(6):this.label;\n var prompt=(params[0] && params[0].substr(0,7)=='prompt:')?params.shift().substr(7):this.prompt;\n var filter="updates";\n if (params[0] && (params[0]=='all' || params[0]=='new' || params[0]=='changes' || params[0]=='updates'\n || params[0].substr(0,8)=='tiddler:' || params[0].substr(0,4)=='tag:'))\n filter=params.shift();\n var src=params.shift(); if (!src || !src.length) return; // filename is required\n var quiet=(params[0]=="quiet"); if (quiet) params.shift();\n var ask=(params[0]=="confirm"); if (ask) params.shift();\n var force=(params[0]=="force"); if (force) params.shift();\n if (label.trim().length) {\n // link triggers load tiddlers from another file/URL and then applies filtering rules to add/replace tiddlers in the store\n createTiddlyButton(place,label.format([src]),prompt.format([src]), function() {\n if (src=="ask") src=prompt(config.macros.loadTiddlers.askMsg);\n config.macros.importTiddlers.loadRemoteFile(src,loadTiddlers,quiet,ask,filter,force);\n })\n }\n else {\n // load tiddlers from another file/URL and then apply filtering rules to add/replace tiddlers in the store\n if (src=="ask") src=prompt(config.macros.loadTiddlers.askMsg);\n config.macros.importTiddlers.loadRemoteFile(src,loadTiddlers,quiet,ask,filter,force);\n }\n}\n\nfunction loadTiddlers(src,html,quiet,ask,filter,force)\n{\n var tiddlers = readTiddlersFromHTML(html);\n var count=tiddlers?tiddlers.length:0;\n if (!quiet) displayMessage(config.macros.loadTiddlers.foundMsg.format([count,src]));\n var count=0;\n if (tiddlers) for (var t=0;t<tiddlers.length;t++) {\n var inbound = tiddlers[t];\n var theExisting = store.getTiddler(inbound.title);\n if (inbound.title=='ImportedTiddlers')\n continue; // skip "ImportedTiddlers" history from the other document...\n\n // apply the all/new/changes/updates filter (if any)\n if (filter && filter!="all") {\n if ((filter=="new") && theExisting) // skip existing tiddlers\n continue;\n if ((filter=="changes") && !theExisting) // skip new tiddlers\n continue;\n if ((filter.substr(0,4)=="tag:") && inbound.tags.find(filter.substr(4))==null) // must match specific tag value\n continue;\n if ((filter.substr(0,8)=="tiddler:") && inbound.title!=filter.substr(8)) // must match specific tiddler name\n continue;\n if (!force && store.tiddlerExists(inbound.title) && ((theExisting.modified.getTime()-inbound.modified.getTime())>=0))\n { if (!quiet) displayMessage(config.macros.loadTiddlers.nochangeMsg.format([inbound.title])); continue; }\n }\n // get confirmation if required\n if (ask && !confirm((theExisting?"Update":"Add")+" tiddler '"+inbound.title+"'\snfrom "+src))\n { tiddlers[t].status="skipped - cancelled by user"; continue; }\n // DO IT!\n // OLD: store.addTiddler(in);\n store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags);\n store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value\n tiddlers[t].status=theExisting?"updated":"added"\n count++;\n }\n if (count) {\n // refresh display\n store.setDirty(true);\n store.notifyAll();\n // generate a report\n if (config.options.chkImportReport) {\n // get/create the report tiddler\n var theReport = store.getTiddler('ImportedTiddlers');\n if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text = ""; }\n // format the report content\n var now = new Date();\n var newText = "On "+now.toLocaleString()+", "+config.options.txtUserName+" loaded "+count+" tiddlers from\sn[["+src+"|"+src+"]]:\sn";\n newText += "<<<\sn";\n for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status) newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\sn";\n newText += "<<<\sn";\n// 20060918 ELS: DON'T ADD "discard" BUTTON TO REPORT\n// newText += "<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n// newText += "onclick=\s"story.closeTiddler('"+theReport.title+"'); store.deleteTiddler('"+theReport.title+"');\s" ";\n// newText += "value=\s"discard report\s"></html>";\n // update the ImportedTiddlers content and show the tiddler\n theReport.text = newText+((theReport.text!="")?'\sn----\sn':"")+theReport.text;\n theReport.modifier = config.options.txtUserName;\n theReport.modified = new Date();\n // OLD: store.addTiddler(theReport);\n store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags);\n if (!quiet) { story.displayTiddler(null,theReport.title,1,null,null,false); story.refreshTiddler(theReport.title,1,true); }\n }\n }\n // always show final message when tiddlers were actually loaded\n if (!quiet||count) displayMessage(config.macros.loadTiddlers.loadedMsg.format([count,tiddlers.length,src]));\n}\n\n// replaces existing core function\n\nconfig.macros.importTiddlers.loadRemoteFile = function(src,callback,quiet,ask,filter,force) {\n if (src==undefined || !src.length) return null; // filename is required\n if (!quiet) clearMessage();\n if (!quiet) displayMessage(config.macros.loadTiddlers.openMsg.format([src]));\n if (src.substr(0,4)!="http" && src.substr(0,4)!="file") { // if not a URL, fallback to read from local filesystem\n var txt=loadFile(src);\n if ((txt==null)||(txt==false)) // file didn't load\n { if (!quiet) displayMessage(config.macros.loadTiddlers.openErrMsg.format([src,"(unknown)"])); }\n else {\n if (!quiet) displayMessage(config.macros.loadTiddlers.readMsg.format([txt.length,src]));\n if (callback) callback(src,convertUTF8ToUnicode(txt),quiet,ask,filter,force);\n }\n }\n else {\n var x; // get an request object\n try {x = new XMLHttpRequest()} // moz\n catch(e) {\n try {x = new ActiveXObject("Msxml2.XMLHTTP")} // IE 6\n catch (e) {\n try {x = new ActiveXObject("Microsoft.XMLHTTP")} // IE 5\n catch (e) { return }\n }\n }\n // setup callback function to handle server response(s)\n x.onreadystatechange = function() {\n if (x.readyState == 4) {\n if (x.status==0 || x.status == 200) {\n if (!quiet) displayMessage(config.macros.loadTiddlers.readMsg.format([x.responseText.length,src]));\n if (callback) callback(src,x.responseText,quiet,ask,filter,force);\n }\n else {\n if (!quiet) displayMessage(config.macros.loadTiddlers.openErrMsg.format([src,x.status]));\n }\n }\n }\n // get privileges to read another document's DOM via http:// or file:// (moz-only)\n if (typeof(netscape)!="undefined") {\n try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); }\n catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }\n }\n // send the HTTP request\n try {\n var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();\n x.open("GET",src,true);\n if (x.overrideMimeType) x.overrideMimeType('text/html');\n x.send(null);\n }\n catch (e) {\n if (!quiet) {\n displayMessage(config.macros.loadTiddlers.openErrMsg.format([src,"(unknown)"]));\n displayMessage(e.description?e.description:e.toString());\n }\n }\n }\n}\n\nfunction readTiddlersFromHTML(html)\n{\n // extract store area from html \n var start=html.indexOf('<div id="storeArea">');\n var end=html.indexOf("<!--POST-BODY-START--"+">",start);\n if (end==-1) var end=html.indexOf("</body"+">",start); // backward-compatibility for older documents\n var sa="<html><body>"+html.substring(start,end)+"</body></html>";\n\n // load html into iframe document\n var f=document.getElementById("loaderFrame"); if (f) document.body.removeChild(f);\n f=document.createElement("iframe"); f.id="loaderFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n d.open(); d.writeln(sa); d.close();\n\n // read tiddler DIVs from storeArea DOM element \n var sa = d.getElementById("storeArea");\n if (!sa) return null;\n sa.normalize();\n var nodes = sa.childNodes;\n if (!nodes || !nodes.length) return null;\n var tiddlers = [];\n for(var t = 0; t < nodes.length; t++) {\n var title = null;\n if(nodes[t].getAttribute)\n title = nodes[t].getAttribute("tiddler");\n if(!title && nodes[t].id && (nodes[t].id.substr(0,5) == "store"))\n title = nodes[t].id.substr(5);\n if(title && title != "")\n tiddlers.push((new Tiddler()).loadFromDiv(nodes[t],title));\n }\n return tiddlers;\n}\n//}}}
為什麼世界上最困難的事情,就是勸服一隻鳥相信他是自由的,相信他只要花一點點時間去嘗試,就可以為自己得到證明。\n
\n<<calendar thismonth>>\n\n[[易學習筆記]]\n[[我的投機事業]]\n[[腦袋的養分]]\n[[經濟趨勢]]\n[[健康資訊]]\n[[創作]]\n[[我的小太陽]]\n<<tiddler GTDMenu>>\n[[Help|http://www.blogjones.com/TiddlyWikiTutorial.html#EasyToEdit]][[About]]\n
/***\n''NestedSlidersPlugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman\nsource: http://www.elsdesign.com/tiddlywiki/#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//''note: Enabling these settings may produce unexpected results. Use at your own risk.''//\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 'default to open', 'cookiename', 'heading level', 'custom label/tooltip', 'automatic blockquote' and 'deferred rendering'.\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)}}}^^\nsave the slider opened/closed state, and restore 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* {{{[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----\ndefault to open: \n{{{\n++++\n content\n===\n}}}\n++++\n content\n===\n----\nuse a custom label: \n{{{\n+++[label]\n content\n===\n}}}\n+++[label]\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, custom label/tooltip, blockquoted)//\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 slider with more specific info:\n +++[view details...|click for details]>\n put some detail here, which could include some +++[definitions]>explaining technical terms===\n ===\n===\n}}}\n+++[get info...|click for information]>\n put some general information here, plus a slider with more specific info:\n +++[view details...|click for details]>\n put some detail here, which could include some +++[definitions]>explaining technical terms===\n === \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.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]] based on considerable research, programming and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson\n===\n***/\n// //+++!!!!![Code]\n//{{{\nversion.extensions.nestedSliders = {major: 1, minor: 6, revision: 2, date: new Date(2006,1,3)};\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\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\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 // 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[4]) {\n title = lookaheadMatch[4].trim().substr(1,lookaheadMatch[4].length-2);\n if ((pos=title.indexOf("|")) != -1)\n { tooltip = title.substr(pos+1,title.length); title = title.substr(0,pos); }\n else\n { tooltip += " "+title; }\n }\n // use "Hn" header format instead of button/link\n if (lookaheadMatch[3]) {\n var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;\n var btn = createTiddlyElement(createTiddlyElement(w.output,"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 }\n else\n var btn = createTiddlyButton(w.output,title,tooltip,onClickNestedSlider);\n var panel = createTiddlyElement(w.output,"span",null,"sliderPanel",null);\n btn.sliderCookie = cookie;\n btn.sliderPanel = panel;\n panel.style.display = show;\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n if (!lookaheadMatch[6] || show=="block") {\n w.subWikify(lookaheadMatch[5]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);\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[5]?"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)\n 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// DISABLED: animation sets overflow:hidden, which clips nested sliders...\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 return false;\n}\n//}}}\n// //===
<<gtdActionList>>
The outcome for this project is
/***\n|''Name:''|NewerTiddlerPlugin|\n|''Version:''|$Revision: 13 $ |\n|''Source:''|http://thePettersons.org/tiddlywiki.html#NewerTiddlerPlugin |\n|''Author:''|[[Paul Petterson]] |\n|''Type:''|Macro Extension |\n|''Requires:''|TiddlyWiki 1.2.33 or higher |\n!Description\nCreate a 'new tiddler' button with lots more options! Specify the text to show on the button, the name of the new tiddler (with date macro expansion), one or more tags for the new tiddlers, and what text if any to include in the new tiddler body! Uses a named parameter format, simalar to the reminder plugin.\n\nAlso - if the tiddler already exists it won't replace any of it's existing data (like tags).\n\n!Syntax\n* {{{<<newerTiddler button:"Inbox" name:"Inbox YYYY/MM/DD" tags:"Journal, inbox" text:"New stuff for today:">>}}}\n* {{{<<newerTiddler button:"@Action" name:"Action: what" tags:"@Action" text:"Add project and describe action">>}}}\n* {{{<<newerTiddler button:"New Project" name:"Project Name?" tags:"My Projects, My Inbox, Journal" template:"MyTemplate">>}}}\n!!Parameters\n* name:"Name of Tiddler"\n* tags:"Tag1, Tag2, Tag3" - tags for new tiddler, comma seperated //don't use square brackets //({{{[[}}})// for tags!//\n* button:"name for button" - the name to display instead of "new tiddler"\n* body:"what to put in the tiddler body"\n* template:"Name of a tiddler containing the text to use as the body of the new tiddler"\n\n''Note:'' if you sepecify both body and template parameters, then template parameter will be used and the body parameter overridden.\n\n!Sample Output\n* <<newerTiddler button:"Inbox" name:"Inbox YYYY/MM/DD" tags:"Journal inbox" text:"New stuff for today:">>\n* <<newerTiddler button:"@Action" name:"Action: what" tags:"@Action" text:"Add project and describe action">>\n* <<newerTiddler button:"New Project" name:"Project Name?" tags:"[[My Projects]] [[My Inbox]] Journal" template:"MyTemplate">>\n\n!Todo\n<<projectTemplate>>\n\n!Known issues\n* Must use double quotes (") around parameter values if they contain a space, can't use single quotes (').\n* can't use standard bracketted style tags, ust type in the tags space and all and put a comma between them. For example tags:"one big tag, another big tag" uses 2 tags ''one big tag'' and ''another big tag''.\n\n!Notes\n* It works fine, and I use it daily, however I haven't really tested edge cases or multiple platforms. If you run into bugs or problems, let me know!\n\n!Requests\n* Have delta-date specifiers on the name: name:"Inbox YYY/MM/DD+1" ( ceruleat@gmail.com )\n* Option to just open the tiddler instead of immediately edit it ( ceruleat@gmail.com )\n* Have date formatters in tags as well as in name (me)\n\n!Revision history\n$History: PaulsNotepad.html $\n * \n * ***************** Version 2 *****************\n * User: paulpet Date: 2/26/06 Time: 7:25p\n * Updated in $/PaulsNotepad3.0.root/PaulsNotepad3.0/PaulsPlugins/systemConfig\n * Port to tw2.0, bug fixes, and simplification!\nv1.0.2 (not released) - fixed small documentation issues.\nv1.0.1 October 13th - fixed a bug occurring only in FF\nv1.0 October 11th - Initial public release\nv0.8 October 10th - Feature complete... \nv0.7 Initial public preview\n\n!Code\n***/\n//{{{\nconfig.macros.newerTiddler = { \nname:"New(er) Tiddler",\ntags:"",\ntext:"Type Tiddler Contents Here.",\nbutton:"new(er) tiddler",\n\nreparse: function( params ) {\n var re = /([^:\s'\s"\ss]+)(?::([^\s'\s":\ss]+)|:[\s'\s"]([^\s'\s"\s\s]*(?:\s\s.[^\s'\s"\s\s]*)*)[\s'\s"])?(?=\ss|$)/g;\n var ret = new Array() ;\n var m ;\n\n while( (m = re.exec( params )) != null )\n ret[ m[1] ] = m[2]?m[2]:m[3]?m[3]:true ;\n\n return ret ;\n},\nhandler: function(place,macroName,params,wikifier,paramString,tiddler) {\n if ( readOnly ) return ;\n\n var input = this.reparse( paramString ) ;\n var tiddlerName = input["name"]?input["name"].trim():config.macros.newerTiddler.name ;\n var tiddlerTags = input["tags"]?input["tags"]:config.macros.newerTiddler.tags ;\n var tiddlerBody = input["text"]?input["text"]:config.macros.newerTiddler.text ;\n var buttonText = input["button"]?input["button"]:config.macros.newerTiddler.button ;\n var template = input["template"]?input["template"]:null;\n\n // if there is a template, use it - otherwise use the tiddlerBody text\n if ( template ) {\n tiddlerBody = store.getTiddlerText( template );\n }\n if ( tiddlerBody == null || tiddlerBody.length == 0 )\n tiddlerBody = config.macros.newerTiddler.text ;\n\n var now = new Date() ;\n tiddlerName = now.formatString( tiddlerName ) ;\n \n createTiddlyButton( place, buttonText, "", function() {\n var exists = store.tiddlerExists( tiddlerName );\n var t = store.createTiddler( tiddlerName );\n if ( ! exists )\n t.assign( tiddlerName, tiddlerBody, config.views.wikified.defaultModifier, now, tiddlerTags.readBracketedList() );\n \n story.displayTiddler(null,tiddlerName,DEFAULT_EDIT_TEMPLATE);\n story.focusTiddler(tiddlerName,"title");\n return false;\n });\n}}\n//}}}\n/***\nThis plugin is released under the [[Creative Commons Attribution 2.5 License|http://creativecommons.org/licenses/by/2.5/]]\n***/
|Feed|d-cubed|\n|URL|http://dcubed.ca/gtd-update.html|
<div class='header' macro='gradient vert #000 #464646'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu' force='true'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>
! Active projects with remaining actions\n<<gtdActionList *>>\n! Projects with no open actions\n<<list tagged "project done -someday">>
*+++(gtdImportantProjectsSliderState)[Important:] <<list tagged "project important -someday" all>>===\n+++(gtdOtherProjectsSliderState)[Other:] <<list tagged "project -syntora -important -someday" all>>===
<<list tagged txtGTDReferenceContext any>>
/***\n|''Name:''|ReminderPlugin|\n|''Version:''|2.3.8.3 (Nov 28, 2006)|\n|''Source:''|http://www.geocities.com/allredfaq/reminderMacros.html|\n|''Author:''|Jeremy Sheeley(pop1280 [at] excite [dot] com)|\n|''Modified by:''|Tom Otvos|\n|''Licence:''|[[BSD open source license]]|\n|''Macros:''|reminder, showreminders, displayTiddlersWithReminders, newReminder|\n|''TiddlyWiki:''|2.0+|\n|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|\n\n!Description\nThis plugin provides macros for tagging a date with a reminder. Use the {{{reminder}}} macro to do this. The {{{showReminders}}} and {{{displayTiddlersWithReminder}}} macros automatically search through all available tiddlers looking for upcoming reminders.\n\n''This version contains a fix by Tom Otvos that modifies tag filtering when tiddlers contain no tags. In this version, if you are filtering showReminders by tag, and a tiddler has no tags, the filter will //not// match the tiddler. There are also a number of small UI-related changes to make the reminder interface a bit nicer. Do not copy this into your own TW documents unless you accept these changes.''\n\n!Installation\n* Create a new tiddler in your tiddlywiki titled ReminderPlugin and give it the {{{systemConfig}}} tag. The tag is important because it tells TW that this is executable code.\n* Double click this tiddler, and copy all the text from the tiddler's body.\n* Paste the text into the body of the new tiddler in your TW.\n* Save and reload your TW.\n* You can copy some examples into your TW as well. See [[Simple examples]], [[Holidays]], [[showReminders]] and [[Personal Reminders]]\n\n!Syntax:\n|>|See [[ReminderSyntax]] and [[showRemindersSyntax]]|\n\n!Revision history\n* v2.3.8 (Mar 9, 2006)\n**Bug fix: A global variable had snuck in, which was killing FF 1.5.0.1\n**Feature: You can now use TIDDLER and TIDDLERNAME in a regular reminder format\n* v2.3.6 (Mar 1, 2006)\n**Bug fix: Reminders for today weren't being matched sometimes.\n**Feature: Solidified integration with DatePlugin and CalendarPlugin\n**Feature: Recurring reminders will now return multiple hits in showReminders and the calendar.\n**Feature: Added TIDDLERNAME to the replacements for showReminders format, for plugins that need the title without brackets.\n* v2.3.5 (Feb 8, 2006)\n**Bug fix: Sped up reminders lots. Added a caching mechanism for reminders that have already been matched.\n* v2.3.4 (Feb 7, 2006)\n**Bug fix: Cleaned up code to hopefully prevent the Firefox 1.5.0.1 crash that was causing lots of plugins \nto crash Firefox. Thanks to http://www.jslint.com\n* v2.3.3 (Feb 2, 2006)\n**Feature: newReminder now has drop down lists instead of text boxes.\n**Bug fix: A trailing space in a title would trigger an infinite loop.\n**Bug fix: using tag:"birthday !reminder" would filter differently than tag:"!reminder birthday"\n* v2.3.2 (Jan 21, 2006)\n**Feature: newReminder macro, which will let you easily add a reminder to a tiddler. Thanks to Eric Shulman (http://www.elsdesign.com) for the code to do this.\n** Bug fix: offsetday was not working sometimes\n** Bug fix: when upgrading to 2.0, I included a bit to exclude tiddlers tagged with excludeSearch. I've reverted back to searching through all tiddlers\n* v2.3.1 (Jan 7, 2006)\n**Feature: 2.0 compatibility\n**Feature AlanH sent some code to make sure that showReminders prints a message if no reminders are found.\n* v2.3.0 (Jan 3, 2006)\n** Bug Fix: Using "Last Sunday (-0)" as a offsetdayofweek wasn't working.\n** Bug Fix: Daylight Savings time broke offset based reminders (for example year:2005 month:8 day:23 recurdays:7 would match Monday instead of Tuesday during DST.\n\n!Code\n***/\n//{{{\n\n//============================================================================\n//============================================================================\n// ReminderPlugin\n//============================================================================\n//============================================================================\n\nversion.extensions.ReminderPlugin = {major: 2, minor: 3, revision: 8, date: new Date(2006,3,9), source: "http://www.geocities.com/allredfaq/reminderMacros.html"};\n\n//============================================================================\n// Configuration\n// Modify this section to change the defaults for \n// leadtime and display strings\n//============================================================================\n\nconfig.macros.reminders = {};\nconfig.macros["reminder"] = {};\nconfig.macros["newReminder"] = {};\nconfig.macros["showReminders"] = {};\nconfig.macros["displayTiddlersWithReminders"] = {};\n\nconfig.macros.reminders["defaultLeadTime"] = [0,365];\nconfig.macros.reminders["defaultReminderMessage"] = "DIFF: TITLE on DATE ANNIVERSARY";\nconfig.macros.reminders["defaultShowReminderMessage"] = "DIFF: TITLE on DATE ANNIVERSARY -- TIDDLER";\nconfig.macros.reminders["defaultAnniversaryMessage"] = "(DIFF)";\nconfig.macros.reminders["untitledReminder"] = "Untitled Reminder";\nconfig.macros.reminders["noReminderFound"] = "Couldn't find a match for TITLE in the next LEADTIMEUPPER days."\nconfig.macros.reminders["todayString"] = "Today";\nconfig.macros.reminders["tomorrowString"] = "Tomorrow";\nconfig.macros.reminders["ndaysString"] = "DIFF days";\nconfig.macros.reminders["emtpyShowRemindersString"] = "There are no upcoming events";\n\n\n//============================================================================\n// Code\n// You should not need to edit anything \n// below this. Make sure to edit this tiddler and copy \n// the code from the text box, to make sure that \n// tiddler rendering doesn't interfere with the copy \n// and paste.\n//============================================================================\n\n// This line is to preserve 1.2 compatibility\n// if (!story) var story=window; \n//this object will hold the cache of reminders, so that we don't\n//recompute the same reminder over again.\nvar reminderCache = {};\n\nconfig.macros.showReminders.handler = function showReminders(place,macroName,params)\n{\n var now = new Date().getMidnight();\n var paramHash = {};\n var leadtime = [0,14];\n paramHash = getParamsForReminder(params);\n var bProvidedDate = (paramHash["year"] != null) || \n (paramHash["month"] != null) || \n (paramHash["day"] != null) || \n (paramHash["dayofweek"] != null);\n if (paramHash["leadtime"] != null)\n {\n leadtime = paramHash["leadtime"];\n if (bProvidedDate)\n {\n //If they've entered a day, we need to make \n //sure to find it. We'll reset the \n //leadtime a few lines down.\n paramHash["leadtime"] = [-10000, 10000];\n }\n }\n var matchedDate = now;\n if (bProvidedDate)\n {\n var leadTimeLowerBound = new Date().getMidnight().addDays(paramHash["leadtime"][0]);\n var leadTimeUpperBound = new Date().getMidnight().addDays(paramHash["leadtime"][1]);\n matchedDate = findDateForReminder(paramHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound); \n }\n\n var arr = findTiddlersWithReminders(matchedDate, leadtime, paramHash["tag"], paramHash["limit"]);\n var elem = createTiddlyElement(place,"span",null,null, null);\n var mess = "";\n if (arr.length == 0)\n {\n mess += config.macros.reminders.emtpyShowRemindersString; \n }\n for (var j = 0; j < arr.length; j++)\n {\n if (paramHash["format"] != null)\n {\n arr[j]["params"]["format"] = paramHash["format"];\n }\n else\n {\n arr[j]["params"]["format"] = config.macros.reminders["defaultShowReminderMessage"];\n }\n mess += getReminderMessageForDisplay(arr[j]["diff"], arr[j]["params"], arr[j]["matchedDate"], arr[j]["tiddler"]);\n mess += "\sn";\n }\n wikify(mess, elem, null, null);\n};\n\n\nconfig.macros.displayTiddlersWithReminders.handler = function displayTiddlersWithReminders(place,macroName,params)\n{\n var now = new Date().getMidnight();\n var paramHash = {};\n var leadtime = [0,14];\n paramHash = getParamsForReminder(params);\n var bProvidedDate = (paramHash["year"] != null) || \n (paramHash["month"] != null) || \n (paramHash["day"] != null) || \n (paramHash["dayofweek"] != null);\n if (paramHash["leadtime"] != null)\n {\n leadtime = paramHash["leadtime"];\n if (bProvidedDate)\n {\n //If they've entered a day, we need to make \n //sure to find it. We'll reset the leadtime \n //a few lines down.\n paramHash["leadtime"] = [-10000,10000];\n }\n }\n var matchedDate = now;\n if (bProvidedDate)\n {\n var leadTimeLowerBound = new Date().getMidnight().addDays(paramHash["leadtime"][0]);\n var leadTimeUpperBound = new Date().getMidnight().addDays(paramHash["leadtime"][1]);\n matchedDate = findDateForReminder(paramHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound); \n }\n var arr = findTiddlersWithReminders(matchedDate, leadtime, paramHash["tag"], paramHash["limit"]);\n for (var j = 0; j < arr.length; j++)\n {\n displayTiddler(null, arr[j]["tiddler"], 0, null, false, false, false);\n }\n};\n\nconfig.macros.reminder.handler = function reminder(place,macroName,params)\n{\n var dateHash = getParamsForReminder(params);\n if (dateHash["hidden"] != null)\n {\n return;\n }\n var leadTime = dateHash["leadtime"];\n if (leadTime == null)\n {\n leadTime = config.macros.reminders["defaultLeadTime"]; \n }\n var leadTimeLowerBound = new Date().getMidnight().addDays(leadTime[0]);\n var leadTimeUpperBound = new Date().getMidnight().addDays(leadTime[1]);\n var matchedDate = findDateForReminder(dateHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound);\n if (!window.story) \n {\n window.story=window; \n }\n if (!store.getTiddler) \n {\n store.getTiddler=function(title) {return this.tiddlers[title];};\n }\n var title = window.story.findContainingTiddler(place).id.substr(7);\n if (matchedDate != null)\n {\n var diff = matchedDate.getDifferenceInDays(new Date().getMidnight());\n var elem = createTiddlyElement(place,"span",null,null, null);\n var mess = getReminderMessageForDisplay(diff, dateHash, matchedDate, title);\n wikify(mess, elem, null, null);\n }\n else\n {\n createTiddlyElement(place,"span",null,null, config.macros.reminders["noReminderFound"].replace("TITLE", dateHash["title"]).replace("LEADTIMEUPPER", leadTime[1]).replace("LEADTIMELOWER", leadTime[0]).replace("TIDDLERNAME", title).replace("TIDDLER", "[[" + title + "]]") );\n }\n};\n\nconfig.macros.newReminder.handler = function newReminder(place,macroName,params)\n{\n // tomo - cleaned up the form layout a bit\n var today=new Date().getMidnight();\n var formstring = '<html><br/><form>';\n \n formstring += 'Year: <select name="year"><option value="">Every year</option>';\n for (var i = 0; i < 5; i++)\n {\n formstring += '<option' + ((i == 0) ? ' selected' : '') + ' value="' + (today.getFullYear() +i) + '">' + (today.getFullYear() + i) + '</option>';\n }\n formstring += '</select> Month: <select name="month"><option value="">Every month</option>';\n for (i = 0; i < 12; i++)\n {\n formstring += '<option' + ((i == today.getMonth()) ? ' selected' : '') + ' value="' + (i+1) + '">' + config.messages.dates.months[i] + '</option>';\n }\n formstring += '</select> Day: <select name="day"><option value="">Every day</option>';\n for (i = 1; i < 32; i++)\n {\n formstring += '<option' + ((i == (today.getDate() )) ? ' selected' : '') + ' value="' + i + '">' + i + '</option>';\n }\n formstring += '</select> Reminder Title: <input type="text" size="40" name="title" value="" onfocus="this.select();"> <input type="button" value="Add reminder" onclick="addReminderToTiddler(this.form)">';\n formstring += '</form></html>';\n \n var panel = config.macros.slider.createSlider(place, null, "New Reminder", "Open a form to add a new reminder to this tiddler");\n wikify(formstring, panel, null, store.getTiddler(params[1]));\n};\n\n// onclick: process input and insert reminder at 'marker'\nwindow.addReminderToTiddler = function(form) {\n if (!window.story) \n {\n window.story=window; \n }\n if (!store.getTiddler) \n {\n store.getTiddler=function(title) {return this.tiddlers[title];};\n }\n var title = window.story.findContainingTiddler(form).id.substr(7);\n var tiddler=store.getTiddler(title);\n var txt='\sn<<reminder ';\n if (form.year.value != "")\n txt += 'year:'+form.year.value + ' ';\n if (form.month.value != "")\n txt += 'month:'+form.month.value + ' ';\n if (form.day.value != "")\n txt += 'day:'+form.day.value + ' ';\n txt += 'title:"'+form.title.value+'" ';\n txt +='>>';\n tiddler.set(null,tiddler.text + txt);\n window.story.refreshTiddler(title,1,true);\n store.setDirty(true);\n // tomo - make sure to save if required\n if(config.options.chkAutoSave)\n saveChanges();\n};\n\nfunction hasTag(tiddlerTags, tagFilters)\n{\n // tomo - this has been updated to work better with tag-less tiddlers\n \n //Make sure we respond well to empty tagFilterlists\n if (tagFilters.length==0) return true;\n \n var bHasTag = false;\n \n /*bNoPos says: "'till now there has been no check using a positive filter"\n Imagine a filterlist consisting of 1 negative filter:\n If the filter isn't matched, we want hasTag to be true.\n Yet bHasTag is still false ('cause only positive filters cause bHasTag to change)\n \n If no positive filters are present bNoPos is true, and no negative filters are matched so we have not returned false\n Thus: hasTag returns true.\n \n If at any time a positive filter is encountered, we want at least one of the tags to match it, so we turn bNoPos to false, which\n means bHasTag must be true for hasTag to return true*/\n var bNoPos=true;\n \n for (var t3 = 0; t3 < tagFilters.length; t3++)\n {\n var negTest = tagFilters[t3].length > 1 && tagFilters[t3].charAt(0) == '!';\n // do the positive filter test outside of the tag loop, in case there are no tags!\n if (bNoPos && !negTest) bNoPos = false;\n \n for(var t2=0; t2<tiddlerTags.length; t2++)\n {\n if (negTest) \n {\n if (tiddlerTags[t2] == tagFilters[t3].substring(1))\n {\n //If at any time a negative filter is matched, we return false\n return false;\n }\n }\n else \n {\n if (tiddlerTags[t2] == tagFilters[t3])\n {\n //A positive filter is matched. As long as no negative filter is matched, hasTag will return true\n bHasTag=true;\n }\n }\n }\n }\n return (bNoPos || bHasTag);\n};\n\n//This function searches all tiddlers for the reminder //macro. It is intended that other plugins (like //calendar) will use this function to query for \n//upcoming reminders.\n//The arguments to this function filter out reminders //based on when they will fire.\n//\n//ARGUMENTS:\n//baseDate is the date that is used as "now". \n//leadtime is a two element int array, with leadtime[0] \n// as the lower bound and leadtime[1] as the\n// upper bound. A reasonable default is [0,14]\n//tags is a space-separated list of tags to use to filter \n// tiddlers. If a tag name begins with an !, then \n// only tiddlers which do not have that tag will \n// be considered. For example "examples holidays" \n// will search for reminders in any tiddlers that \n// are tagged with examples or holidays and \n// "!examples !holidays" will search for reminders \n// in any tiddlers that are not tagged with \n// examples or holidays. Pass in null to search \n// all tiddlers.\n//limit. If limit is null, individual reminders can \n// override the leadtime specified earlier. \n// Pass in 1 in order to override that behavior.\n\nwindow.findTiddlersWithReminders = function findTiddlersWithReminders(baseDate, leadtime, tags, limit)\n{\n//function(searchRegExp,sortField,excludeTag)\n// var macroPattern = "<<([^>\s\s]+)(?:\s\s*)([^>]*)>>";\n var macroPattern = "<<(reminder)(.*)>>";\n var macroRegExp = new RegExp(macroPattern,"mg");\n var matches = store.search(macroRegExp,"title","");\n var arr = [];\n var tagsArray = null;\n if (tags != null)\n {\n tagsArray = tags.split(" ");\n }\n for(var t=matches.length-1; t>=0; t--)\n {\n if (tagsArray != null)\n {\n //If they specified tags to filter on, and this tiddler doesn't \n //match, skip it entirely.\n if ( ! hasTag(matches[t].tags, tagsArray))\n {\n continue;\n }\n }\n\n var targetText = matches[t].text;\n do {\n // Get the next formatting match\n var formatMatch = macroRegExp.exec(targetText);\n if(formatMatch && formatMatch[1] != null && formatMatch[1].toLowerCase() == "reminder")\n {\n //Find the matching date.\n \n var params = formatMatch[2] != null ? formatMatch[2].readMacroParams() : {};\n var dateHash = getParamsForReminder(params);\n if (limit != null || dateHash["leadtime"] == null)\n {\n if (leadtime == null)\n dateHash["leadtime"] = leadtime;\n else\n {\n dateHash["leadtime"] = [];\n dateHash["leadtime"][0] = leadtime[0];\n dateHash["leadtime"][1] = leadtime[1];\n }\n }\n if (dateHash["leadtime"] == null)\n dateHash["leadtime"] = config.macros.reminders["defaultLeadTime"]; \n var leadTimeLowerBound = baseDate.addDays(dateHash["leadtime"][0]);\n var leadTimeUpperBound = baseDate.addDays(dateHash["leadtime"][1]);\n var matchedDate = findDateForReminder(dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound);\n while (matchedDate != null)\n {\n var hash = {};\n hash["diff"] = matchedDate.getDifferenceInDays(baseDate);\n hash["matchedDate"] = new Date(matchedDate.getFullYear(), matchedDate.getMonth(), matchedDate.getDate(), 0, 0);\n hash["params"] = cloneParams(dateHash);\n hash["tiddler"] = matches[t].title;\n hash["tags"] = matches[t].tags;\n arr.pushUnique(hash);\n if (dateHash["recurdays"] != null || (dateHash["year"] == null))\n {\n leadTimeLowerBound = leadTimeLowerBound.addDays(matchedDate.getDifferenceInDays(leadTimeLowerBound)+ 1);\n matchedDate = findDateForReminder(dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound);\n }\n else matchedDate = null;\n }\n }\n }while(formatMatch);\n }\n if(arr.length > 1) //Sort the array by number of days remaining.\n {\n arr.sort(function (a,b) {if(a["diff"] == b["diff"]) {return(0);} else {return (a["diff"] < b["diff"]) ? -1 : +1; } });\n }\n return arr;\n};\n\n//This function takes the reminder macro parameters and\n//generates the string that is used for display.\n//This function is not intended to be called by \n//other plugins.\n window.getReminderMessageForDisplay= function getReminderMessageForDisplay(diff, params, matchedDate, tiddlerTitle)\n{\n var anniversaryString = "";\n var reminderTitle = params["title"];\n if (reminderTitle == null)\n {\n reminderTitle = config.macros.reminders["untitledReminder"];\n }\n if (params["firstyear"] != null)\n {\n anniversaryString = config.macros.reminders["defaultAnniversaryMessage"].replace("DIFF", (matchedDate.getFullYear() - params["firstyear"]));\n }\n var mess = "";\n var diffString = "";\n if (diff == 0)\n {\n diffString = config.macros.reminders["todayString"];\n }\n else if (diff == 1)\n {\n diffString = config.macros.reminders["tomorrowString"];\n }\n else\n {\n diffString = config.macros.reminders["ndaysString"].replace("DIFF", diff);\n }\n var format = config.macros.reminders["defaultReminderMessage"];\n if (params["format"] != null)\n {\n format = params["format"];\n }\n mess = format;\n//HACK! -- Avoid replacing DD in TIDDLER with the date\n mess = mess.replace(/TIDDLER/g, "TIDELER");\n mess = matchedDate.formatStringDateOnly(mess);\n mess = mess.replace(/TIDELER/g, "TIDDLER");\n if (tiddlerTitle != null)\n {\n mess = mess.replace(/TIDDLERNAME/g, tiddlerTitle);\n mess = mess.replace(/TIDDLER/g, "[[" + tiddlerTitle + "]]");\n }\n \n mess = mess.replace("DIFF", diffString).replace("TITLE", reminderTitle).replace("DATE", matchedDate.formatString("DDD MMM DD, YYYY")).replace("ANNIVERSARY", anniversaryString);\n return mess;\n};\n\n// Parse out the macro parameters into a hashtable. This\n// handles the arguments for reminder, showReminders and \n// displayTiddlersWithReminders.\nwindow.getParamsForReminder = function getParamsForReminder(params)\n{\n var dateHash = {};\n var type = "";\n var num = 0;\n var title = "";\n for(var t=0; t<params.length; t++)\n {\n var split = params[t].split(":");\n type = split[0].toLowerCase();\n var value = split[1];\n for (var i=2; i < split.length; i++)\n {\n value += ":" + split[i];\n }\n if (type == "nolinks" || type == "limit" || type == "hidden")\n {\n num = 1;\n }\n else if (type == "leadtime")\n {\n var leads = value.split("...");\n if (leads.length == 1)\n {\n leads[1]= leads[0];\n leads[0] = 0;\n }\n leads[0] = parseInt(leads[0], 10);\n leads[1] = parseInt(leads[1], 10);\n num = leads;\n }\n else if (type == "offsetdayofweek")\n {\n if (value.substr(0,1) == "-")\n {\n dateHash["negativeOffsetDayOfWeek"] = 1;\n value = value.substr(1);\n }\n num = parseInt(value, 10);\n }\n else if (type != "title" && type != "tag" && type != "format")\n {\n num = parseInt(value, 10);\n }\n else\n {\n title = value;\n t++;\n while (title.substr(0,1) == '"' && title.substr(title.length - 1,1) != '"' && params[t] != undefined)\n {\n title += " " + params[t++];\n }\n //Trim off the leading and trailing quotes\n if (title.substr(0,1) == "\s"" && title.substr(title.length - 1,1)== "\s"")\n {\n title = title.substr(1, title.length - 2);\n t--;\n }\n num = title;\n }\n dateHash[type] = num;\n }\n //date is synonymous with day\n if (dateHash["day"] == null)\n {\n dateHash["day"] = dateHash["date"];\n }\n return dateHash;\n};\n\n//This function finds the date specified in the reminder \n//parameters. It will return null if no match can be\n//found. This function is not intended to be used by\n//other plugins.\nwindow.findDateForReminder= function findDateForReminder( dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound)\n{\n if (baseDate == null)\n {\n baseDate = new Date().getMidnight();\n }\n var hashKey = baseDate.convertToYYYYMMDDHHMM();\n for (var k in dateHash)\n {\n hashKey += "," + k + "|" + dateHash[k];\n }\n hashKey += "," + leadTimeLowerBound.convertToYYYYMMDDHHMM();\n hashKey += "," + leadTimeUpperBound.convertToYYYYMMDDHHMM();\n if (reminderCache[hashKey] == null)\n {\n //If we don't find a match in this run, then we will\n //cache that the reminder can't be matched.\n reminderCache[hashKey] = false;\n }\n else if (reminderCache[hashKey] == false)\n {\n //We've already tried this date and failed\n return null;\n }\n else\n {\n return reminderCache[hashKey];\n }\n \n var bOffsetSpecified = dateHash["offsetyear"] != null || \n dateHash["offsetmonth"] != null || \n dateHash["offsetday"] != null || \n dateHash["offsetdayofweek"] != null || \n dateHash["recurdays"] != null;\n \n // If we are matching the base date for a dayofweek offset, look for the base date a \n //little further back.\n var tmp1leadTimeLowerBound = leadTimeLowerBound; \n if ( dateHash["offsetdayofweek"] != null)\n {\n tmp1leadTimeLowerBound = leadTimeLowerBound.addDays(-6); \n }\n var matchedDate = baseDate.findMatch(dateHash, tmp1leadTimeLowerBound, leadTimeUpperBound);\n if (matchedDate != null)\n {\n var newMatchedDate = matchedDate;\n if (dateHash["recurdays"] != null)\n {\n while (newMatchedDate.getTime() < leadTimeLowerBound.getTime())\n {\n newMatchedDate = newMatchedDate.addDays(dateHash["recurdays"]);\n }\n }\n else if (dateHash["offsetyear"] != null || \n dateHash["offsetmonth"] != null || \n dateHash["offsetday"] != null || \n dateHash["offsetdayofweek"] != null)\n {\n var tmpdateHash = cloneParams(dateHash);\n tmpdateHash["year"] = dateHash["offsetyear"];\n tmpdateHash["month"] = dateHash["offsetmonth"];\n tmpdateHash["day"] = dateHash["offsetday"];\n tmpdateHash["dayofweek"] = dateHash["offsetdayofweek"];\n var tmpleadTimeLowerBound = leadTimeLowerBound;\n var tmpleadTimeUpperBound = leadTimeUpperBound;\n if (tmpdateHash["offsetdayofweek"] != null)\n {\n if (tmpdateHash["negativeOffsetDayOfWeek"] == 1)\n {\n tmpleadTimeLowerBound = matchedDate.addDays(-6);\n tmpleadTimeUpperBound = matchedDate;\n\n }\n else\n {\n tmpleadTimeLowerBound = matchedDate;\n tmpleadTimeUpperBound = matchedDate.addDays(6);\n }\n\n }\n newMatchedDate = matchedDate.findMatch(tmpdateHash, tmpleadTimeLowerBound, tmpleadTimeUpperBound);\n //The offset couldn't be matched. return null.\n if (newMatchedDate == null)\n {\n return null;\n }\n }\n if (newMatchedDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))\n {\n reminderCache[hashKey] = newMatchedDate;\n return newMatchedDate;\n }\n }\n return null;\n};\n\n//This does much the same job as findDateForReminder, but\n//this one doesn't deal with offsets or recurring \n//reminders.\nDate.prototype.findMatch = function findMatch(dateHash, leadTimeLowerBound, leadTimeUpperBound)\n{\n\n var bSpecifiedYear = (dateHash["year"] != null);\n var bSpecifiedMonth = (dateHash["month"] != null);\n var bSpecifiedDay = (dateHash["day"] != null);\n var bSpecifiedDayOfWeek = (dateHash["dayofweek"] != null);\n if (bSpecifiedYear && bSpecifiedMonth && bSpecifiedDay)\n {\n return new Date(dateHash["year"], dateHash["month"]-1, dateHash["day"], 0, 0);\n }\n var bMatchedYear = !bSpecifiedYear;\n var bMatchedMonth = !bSpecifiedMonth;\n var bMatchedDay = !bSpecifiedDay;\n var bMatchedDayOfWeek = !bSpecifiedDayOfWeek;\n if (bSpecifiedDay && bSpecifiedMonth && !bSpecifiedYear && !bSpecifiedDayOfWeek)\n {\n\n //Shortcut -- First try this year. If it's too small, try next year.\n var tmpMidnight = this.getMidnight();\n var tmpDate = new Date(this.getFullYear(), dateHash["month"]-1, dateHash["day"], 0,0);\n if (tmpDate.getTime() < leadTimeLowerBound.getTime())\n {\n tmpDate = new Date((this.getFullYear() + 1), dateHash["month"]-1, dateHash["day"], 0,0);\n }\n if ( tmpDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))\n {\n return tmpDate;\n }\n else\n {\n return null;\n }\n }\n\n var newDate = leadTimeLowerBound; \n while (newDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))\n {\n var tmp = testDate(newDate, dateHash, bSpecifiedYear, bSpecifiedMonth, bSpecifiedDay, bSpecifiedDayOfWeek);\n if (tmp != null)\n return tmp;\n newDate = newDate.addDays(1);\n }\n};\n\nfunction testDate(testMe, dateHash, bSpecifiedYear, bSpecifiedMonth, bSpecifiedDay, bSpecifiedDayOfWeek)\n{\n var bMatchedYear = !bSpecifiedYear;\n var bMatchedMonth = !bSpecifiedMonth;\n var bMatchedDay = !bSpecifiedDay;\n var bMatchedDayOfWeek = !bSpecifiedDayOfWeek;\n if (bSpecifiedYear)\n {\n bMatchedYear = (dateHash["year"] == testMe.getFullYear());\n }\n if (bSpecifiedMonth)\n {\n bMatchedMonth = ((dateHash["month"] - 1) == testMe.getMonth() );\n }\n if (bSpecifiedDay)\n {\n bMatchedDay = (dateHash["day"] == testMe.getDate());\n }\n if (bSpecifiedDayOfWeek)\n {\n bMatchedDayOfWeek = (dateHash["dayofweek"] == testMe.getDay());\n }\n\n if (bMatchedYear && bMatchedMonth && bMatchedDay && bMatchedDayOfWeek)\n {\n return testMe;\n }\n};\n\n//Returns true if the date is in between two given dates\nDate.prototype.isBetween = function isBetween(lowerBound, upperBound)\n{\n return (this.getTime() >= lowerBound.getTime() && this.getTime() <= upperBound.getTime());\n}\n//Return a new date, with the time set to midnight (0000)\nDate.prototype.getMidnight = function getMidnight()\n{\n return new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0);\n};\n// Add the specified number of days to a date.\nDate.prototype.addDays = function addDays(numberOfDays)\n{\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + numberOfDays, 0, 0);\n};\n//Return the number of days between two dates.\nDate.prototype.getDifferenceInDays = function getDifferenceInDays(otherDate)\n{\n//I have to do it this way, because this way ignores daylight savings\n var tmpDate = this.addDays(0);\n if (this.getTime() > otherDate.getTime())\n {\n var i = 0;\n for (i = 0; tmpDate.getTime() > otherDate.getTime(); i++)\n {\n tmpDate = tmpDate.addDays(-1);\n }\n return i;\n }\n else\n {\n var i = 0;\n for (i = 0; tmpDate.getTime() < otherDate.getTime(); i++)\n {\n tmpDate = tmpDate.addDays(1);\n }\n return i * -1;\n }\n return 0;\n};\nfunction cloneParams(what) {\n var tmp = {};\n for (var i in what) {\n tmp[i] = what[i];\n }\n return tmp;\n}\n// Substitute date components into a string\nDate.prototype.formatStringDateOnly = function formatStringDateOnly(template)\n{\n template = template.replace("YYYY",this.getFullYear());\n template = template.replace("YY",String.zeroPad(this.getFullYear()-2000,2));\n template = template.replace("MMM",config.messages.dates.months[this.getMonth()]);\n template = template.replace("0MM",String.zeroPad(this.getMonth()+1,2));\n template = template.replace("MM",this.getMonth()+1);\n template = template.replace("DDD",config.messages.dates.days[this.getDay()]);\n template = template.replace("0DD",String.zeroPad(this.getDate(),2));\n template = template.replace("DD",this.getDate());\n return template;\n};\n\n//}}}
!Overdue actions\n<<showReminders leadtime:-365...-1 tag:"action !done" format:"DATE: @@color:red;TITLE@@ [ TIDDLER ]">>\n!Actions for today and tomorrow\n<<showReminders leadtime:0...1 tag:"action !done" format:"DIFF: @@color:red;TITLE@@ [ TIDDLER ]">>\n!All reminders for the next week\n<<showReminders leadtime:0...7 tag:"!done" format:"DIFF: @@color:red;TITLE@@ [ TIDDLER ]">>
Click on the button below to create a new reminder as a tickler:\n\n<<newReminder>>
!~人之所以犯錯,不是因為不懂,而是自以為什麼都懂\n作者 Malcolm Robinson\n''與其說操作是一門學問,不如說是一種技術;與其說是一種技術,還不如說是一種藝術。''\n\n''當我們讓自己光芒四射時,無意中也鼓勵別人這樣做。當我們從恐懼中解脫時,我們的行爲也自動地解脫了別人。——尼爾森-曼德拉''\n\n我在倫敦期貨交易市場裏的第一年,作為一個現場獨立操盤手,我買賣了8,804份英國股指期貨合同,平均每天大約40份合同。\n結果是我損失了61,620英鎊~平均每個交易日損失267英鎊。我有55%的時間是賺錢的, 那些日子平均每天賺1,009英鎊的利潤。而其他賠錢的日子,我平均每天虧損1,780英鎊。我收入最多的一天是8,730英鎊,而我損失最大的一天是賠 22,426英鎊。因而,你可以想像得出來,那時是我非常困難的時候。\n我一直努力地去尋找怎樣能穩定地賺錢的方法。但穩定性似乎是最難做到的。如同你所見到的,我有賺錢的成功經驗,然而我的失敗令我窒息。好像每次在一、兩週的時間內,我賺得了約6,000英鎊,幾天後,我就會損失全部所得,乃至更多的錢,約幾千英鎊。那個時候,我對自己的業績非常不滿,因而不願花時間去分析。如果我去做了分析,我就會發現,在那段時間,我只要避免那麼十來天的損失,我就可以達到年終少量的盈利,而不是61,620英鎊的虧損,在那10天裏,我損失了90,169英鎊!\n那段時間的最後的日子裏,我感覺非常失落和煩躁。我決定退出操盤這個戰場,找一份更穩定、可靠的工作。但僅過了幾個星期,我就放棄了不再操盤的想法,又回到了交易市場。我認定我有著成為一個穩定盈利的成功操盤手的才能,我想我所需要的是一些贊助。\n我希望有人能幫助我不再有那些巨大虧損的日子,這些虧損使我經濟狀況趨向崩潰。我接觸了一家公司,這家公司願意支持一些有背景的操盤手,他們同意借給我20,000英鎊的啟動資金。我們六、四分成。''我答應必須把每天的虧損控制在500英鎊以內。''如果一天中我的虧損達到了500英鎊 ,公司的現場經理就會來叫我回家。才第三天,我就損失了約500英鎊,但是什麼也沒發生,沒人來叫我停止交易。''我覺得自己很愚蠢'',然而在那一週剩下的日子裏我繼續交易,同時避免同經理接觸。\n在接下來那個星期一(那一週的損失總共達到了6,000英鎊左右),我被告知,去和我簽協議的主管見面(在上週,他碰巧出差了)。我以為他要停止我們的合同。然而,令我驚訝的是,他告訴我,能夠信任我是多麼的重要。他說他需要知道,當市場不穩定的時候,他可以相信我不會堆起巨大的損失。他建議我重新來過。不用說,我倍感欣慰,並感激他。就這樣,我又回到了交易廳。那個上午,我下定決心把損失控制在500英鎊以內。接下來的兩週成了我職業生涯中最艱難,但確是最有價值的時期。''在賠錢時停手是件很困難的事情。''我意識到了,''過去遭受巨大損失的根源在於:難以接受賠錢的結果。''對於我來說,賠錢是不可接受的。\n正是因為我不願接受損失,我連續十天都虧損了。但隨著時間的推移,雖然我繼續每天500英鎊的損失,我發現我的情緒開始好轉。事實上,''我開始感覺虧損沒什麼了不起了,只要它在我的限制之內''。在這十天過去後,奇蹟出現了,我開始獲利了。\n''我的目標是每天賺2,000英鎊,然後不要把其中20%以上的錢賠回去。''所以,當我開始獲利時,每天賺800-2,000英鎊,平均一天約1,200英鎊。我不僅開始盈利,而且接連十五天都是,三個星期無任何損失!這標誌著我操盤生涯新篇章的開始。回顧以往,我想我曾經是心懷恐懼在操盤,害怕我真的是一個失敗者。那嚴酷的兩週中,''嚴格地將損失控制在規定限度內讓我重新評估我自己。''\n我開始對控制好''有底限的損失''感覺良好起來。以前,只要我虧了,情緒就很糟;現在,''只有當損失超出了我的限度,我才會感覺不好''。以前,我從來不知道我會賺2,000英鎊,或損失5,000英鎊;''現在,最壞的結果是500英鎊的虧損,但這沒什麼大不了的''。\n我開始注意到,''把虧損一直控制在我的允許範圍,這是能力的象徵''。我的自信心增強了。回顧我操盤損失慘重的第一年,如果我嚴格限定我的虧損在每天 500英鎊,那麼61,620英鎊的虧損也許會變成63,525英鎊的盈利。不僅這樣,我想在那段期間,''如果我的虧損一直被控制在我的底限,我的自信就能更多一些,我盈利的日子也會更多一些''。\n''害怕時絕對贏不了'',假如我們害怕,那到底是害怕什麼呢?''我們最大的恐懼不是自己的能力不足,而是低估了自己''。往往是我們潛在的能力,而不是黑暗嚇倒了自己。我們問自己:“我怎麼可能那麼才華橫溢,無限風光?”實際上,為什麼我們不行?你是上帝的孩子。你的自我藐視對這個世界並不是有益的。把自己貶低,使得周圍其他人不會感到不安,這並不能算是明智的選擇。我們應該將上帝賦予的光輝放射出來,不是我們中一些人,而是每一個人。\n無論什麽是我們恐懼的根源,''要成爲一名成功的操盤手,我們必須建立自信,並克服恐懼''。要相信自己能夠採取最好的行動。當我們帶著害怕的心理去操盤時,我們的恐懼心理就會讓我們採取會給我們造成損失的行動。問題是怎樣才能建立不可動搖的信心?\n我們相信自己和我們信任他人的過程是類似的。假如他人總能說到做到,我們就可以相信他。同樣地,''我們越多地忠於自己成爲一個成功操盤手的目標,總是保持言行一致地去遵守我們的操盤計劃和規定,那麽就越能相信自己''。\n這聽起來有些模棱兩可,如果你像我當初那樣不能控制自己,那怎樣去採取正確的行動來建立自信?\n在某種程度上說,我很幸運,我明白我沒有後路,如果我超過底限,我將被開除出局。因此,我不得不控制自己。我這樣做的結果,使得我有機會直接面對內心的恐懼,最終擺脫了成爲一個失敗者的恐懼心理。''從一個徹頭徹尾總在虧損的操盤手到一個穩定盈利的操盤手,我們需要設定一些可望而又可及的目標''。\n我當初的問題是讓那些小小的損失變成大賠的日子,因此,把底限定在損失500英鎊就停止交易,在當時是一個對我很恰當的目標。\n對於其他人,首要的問題可能會是操盤時不能在該採取行動時果斷出擊。對此我們可以做這樣一個練習:''採用一個簡單明瞭的操盤系統,定下這麽一個目標,當操盤系統給出買賣信號時,立刻毫不遲疑地採取行動,不管自己心裏在怎麽猶豫''。\n我們需要一項一項地培養自己的操盤技巧。當我們能確信我們能''控制損失''的時候,我們就培訓自己''執行操盤指令''的技能。然後,我們再培訓''增加盈利''的技巧…等等。\n就好比網球明星那樣,他們不是僅僅靠參加比賽就成了明星,他們在練習場上一項一頂地訓練各種技能,在整個職業生涯中都要不斷地訓練自己。作爲一個操盤手,我們也要弄清楚自己所需要的各項技能,然後集中精力,一項一項地做針對訓練。\n網球新人不會指望一開始打球就能贏得比賽,他們知道他們首先得花相當一段時間學習和練習。操盤於金融市場,像打網球一樣,需要技能。而這些相應技能,要通過不斷的學習,訓練,才能最終掌握。
尺蠖之屈以求信也,龍蛇之蟄以存身也
不可為典要,唯變所適
<<list tagged txtGTDSomedayContext any>>\n
/***\n!Personal preferences\n***/\n\n/*{{{*/\n/* make input fields in viewer (options) show up in correct size */\n.viewer input { font-size: 0.9em; }\n/*}}}*/\n\n
/*{{{*/\n\n@media print {\n#mainMenu, #sidebar, #messageArea {display: none !important;}\n#displayArea {margin: 1em 1em 0em 1em;}\n\n\n/* LAYOUT ELEMENTS ========================================================== */\n*\n{\n margin: 0;\n padding: 0;\n}\n\nbody {\n background: #fff;\n color: #000;\n font-size: 6.2pt;\n font-family: "Lucida Grande", "Bitstream Vera Sans", Helvetica, Verdana, Arial, sans-serif;\n}\n\nimg {\n max-width: 2.2in;\n max-height: 4.3in;\n}\n\n#header, #side_container, #storeArea, #copyright, #floater, #messageArea, .save_accesskey, .site_description, #saveTest, .toolbar, .footer\n{\n display: none;\n}\n\n#tiddlerDisplay, #displayArea\n{\n display: inline;\n}\n\n.tiddler {\n margin: 0 0 2em 0;\n border-top: 1px solid #000;\n page-break-before: always;\n}\n\n.tiddler:first-child {\n page-break-before: avoid;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n margin-bottom: .3em;\n padding: .2em 0;\n border-bottom: 1px dotted #000;\n}\n\np, blockquote, ul, li, ol, dt, dd, dl, table\n{\n margin: 0 0 .3em 0;\n}\n\nh1, h2, h3, h4, h5, h6\n{\n margin: .2em 0;\n} \n\nh1\n{\n font-size: 1.5em;\n}\n\nh2\n{\n font-size: 1.3em;\n}\n\nh3\n{\n font-size: 1.25em;\n}\n\nh4\n{\n font-size: 1.15em;\n}\n\nh5\n{\n font-size: 1.1em;\n}\n\nblockquote\n{\n margin: .6em;\n padding-left: .6em;\n border-left: 1px solid #ccc;\n}\n\nul\n{\n list-style-type: circle;\n}\n\nli\n{\n margin: .1em 0 .1em 2em;\n line-height: 1.4em; \n}\n\ntable\n{\n border-collapse: collapse;\n font-size: 1em;\n}\n\ntd, th\n{\n border: 1px solid #999;\n padding: .2em;\n}\n\nhr {\n border: none;\n border-top: dotted 1px #777;\n height: 1px;\n color: #777;\n margin: .6em 0;\n}\n}\n/*}}}*/
|review|k\n|!Overdue actions|!All reminders for the next week|\n|<<showReminders leadtime:-365...-1 tag:"action !done" format:"DATE: @@color:red;TITLE@@ [ TIDDLER ]">>|<<showReminders leadtime:0...7 tag:"!done" format:"DIFF: @@color:red;TITLE@@ [ TIDDLER ]">>|\n|!Actions for today/tomorrow|~|\n|<<showReminders leadtime:0...1 tag:"action !done" format:"DIFF: @@color:red;TITLE@@ [ TIDDLER ]">>|~|\n|!Project Review|!Action Review|\n|<<tiddler "Project Review">>|<<tiddler "Action Review">>|\n
/***\n|''Name:''|TWUpdatePlugin|\n|''Description:''|Plugin to enable quick update of TW core|\n|''Version:''|1.0.2|\n|''Date:''|December 15, 2006|\n|''Source:''|http://www.dcubed.ca/|\n|''Author:''|Tom Otvos|\n|''~CoreVersion:''|2.0.7|\n|''Browser:''|Firefox 1.5+; InternetExplorer 6.0+|\n***/\n//{{{\n\nversion.extensions.twupdate = {major: 1, minor: 0, revision: 2, source: "http://www.dcubed.ca/"};\n\nconfig.macros.twupdate = { \n label: "update",\n sourceUrl: "http://www.tiddlywiki.com/empty.html", \n lingo: {\n prompt: "Update this TiddlyWiki from TiddlyWiki.com", \n warning: "Are you sure you want to update this document with the latest version of TiddlyWiki (and do you know that all your plugins are compatible)?\sn\snIf you want to continue, your document will first be saved with a backup.",\n success: "Update was successful. Click on 'OK' to reload the document",\n errNoHttp: "Unable to allocate an HTTP request object for the update",\n errIncompatible: "This version of TiddlyWiki cannot be updated by this plugin. Sorry.",\n errIncompatible2: "This version of TiddlyWiki is the last version that can be updated by this plugin. Sorry.",\n progressLoading: "Getting update from TiddlyWiki.com...",\n progressLoadSuccess: "File successfully loaded",\n progressLoadFailure: "File was not loaded successfully (%0)",\n progressMerging: "Merging with existing document..."\n }\n}\n\nconfig.macros.twupdate.handler = function(place,macroName,params)\n{\n if(!readOnly) {\n var label = params[0] ? params[0] : this.label;\n createTiddlyButton(place, label, this.lingo.prompt, this.onClick, null, null, null);\n }\n}\n\nconfig.macros.twupdate.onClick = function(e)\n{\n if (version.major != 2 || version.minor > 1 || (version.minor == 0 && version.revision < 7)) {\n alert(config.macros.twupdate.lingo.errIncompatible);\n return;\n }\n \n //if (version.major != 2 || version.minor != 0 || version.revision == 11) {\n // alert(config.macros.twupdate.lingo.errIncompatible2);\n // return;\n //}\n \n if (!confirm(config.macros.twupdate.lingo.warning)) return;\n\n try {\n // force a save with backup\n var saveBackups = config.options.chkSaveBackups;\n config.options.chkSaveBackups = true;\n saveChanges();\n config.options.chkSaveBackups = saveBackups;\n \n var ajax = new AjaxHelper();\n displayMessage(config.macros.twupdate.lingo.progressLoading);\n ajax.getText(config.macros.twupdate.sourceUrl, config.macros.twupdate.performUpdate); \n }\n catch (e) {\n alert(e);\n }\n\n return false;\n}\n\n// Courtesy of http://www.worldtimzone.com/res/encode/...\nfunction utf8(wide) {\n var c, s;\n var enc = "";\n var i = 0;\n while(i<wide.length) {\n c= wide.charCodeAt(i++);\n // handle UTF-16 surrogates\n if (c>=0xDC00 && c<0xE000) continue;\n if (c>=0xD800 && c<0xDC00) {\n if (i>=wide.length) continue;\n s= wide.charCodeAt(i++);\n if (s<0xDC00 || c>=0xDE00) continue;\n c= ((c-0xD800)<<10)+(s-0xDC00)+0x10000;\n }\n // output value\n if (c<0x80) enc += String.fromCharCode(c);\n else if (c<0x800) enc += String.fromCharCode(0xC0+(c>>6),0x80+(c&0x3F));\n else if (c<0x10000) enc += String.fromCharCode(0xE0+(c>>12),0x80+(c>>6&0x3F),0x80+(c&0x3F));\n else enc += String.fromCharCode(0xF0+(c>>18),0x80+(c>>12&0x3F),0x80+(c>>6&0x3F),0x80+(c&0x3F));\n }\n return enc;\n}\n\nconfig.macros.twupdate.performUpdate = function(emptyHtml, status, statusText)\n{\n // note that this is begin called from a callback from an event handler, so\n // "this" is most definitely not defined!\n \n if (status == 200)\n displayMessage(config.macros.twupdate.lingo.progressLoadSuccess);\n else {\n displayMessage(config.macros.twupdate.lingo.progressLoadFailure.format([statusText]));\n return;\n }\n displayMessage(config.macros.twupdate.lingo.progressMerging);\n \n // very important...convert the response to UTF-8 to be fully TW-compatible\n var re = /[^\su0000-\su007F]/g ;\n emptyHtml = emptyHtml.replace(re, function($0) {return(utf8($0));});\n \n // the bulk of this is cribbed from saveChanges()...\n var originalPath = document.location.toString();\n // Check we were loaded from a file URL\n if (originalPath.substr(0,5) != "file:") {\n alert(config.messages.notFileUrlError);\n if (store.tiddlerExists(config.messages.saveInstructions))\n displayTiddler(null,config.messages.saveInstructions);\n return;\n }\n var localPath = getLocalPath(originalPath);\n\n // Locate the storeArea div's\n var posOpeningDiv = emptyHtml.indexOf(startSaveArea);\n var limitClosingDiv = emptyHtml.indexOf("<!--POST-BODY-START--"+">");\n var posClosingDiv = emptyHtml.lastIndexOf(endSaveArea,limitClosingDiv == -1 ? emptyHtml.length : limitClosingDiv);\n if ((posOpeningDiv == -1) || (posClosingDiv == -1)) {\n alert(config.messages.invalidFileError.format(['empty.html']));\n return;\n }\n\n // Save new file\n var revised = emptyHtml.substr(0,posOpeningDiv + startSaveArea.length) + \n convertUnicodeToUTF8(allTiddlersAsHtml()) + "\sn\st\st" +\n emptyHtml.substr(posClosingDiv);\n var newSiteTitle = convertUnicodeToUTF8((wikifyPlain("SiteTitle") + " - " + wikifyPlain("SiteSubtitle")).htmlEncode());\n revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");\n revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPreHead","") + "\sn");\n revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPostHead","") + "\sn");\n revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPreBody","") + "\sn");\n revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPostBody","") + "\sn");\n var save = saveFile(localPath, revised);\n if (save) {\n displayMessage(config.messages.mainSaved, "file://" + localPath);\n store.setDirty(false);\n alert(config.macros.twupdate.lingo.success);\n document.location.reload();\n }\n else\n alert(config.messages.mainFailed);\n}\n\nfunction AjaxHelper()\n{\n this.http = null;\n \n try\n {\n this.http = new XMLHttpRequest()\n }\n \n catch(e)\n {\n // if we don't get an internal object, try allocating it using ActiveX, with successive\n // fallbacks to earlier MSXML versions as necessary\n try\n {\n this.http = new ActiveXObject("Msxml2.XMLHTTP.4.0")\n } \n catch(e) \n {\n try\n {\n this.http = new ActiveXObject("MSXML2.XMLHTTP")\n } \n catch(e) \n {\n try\n {\n this.http = new ActiveXObject("Microsoft.XMLHTTP")\n } \n catch(e) \n {\n this.http = null\n }\n }\n }\n }\n \n if (!this.http) throw 'Unable to allocate an HTTP request object';\n}\n\nAjaxHelper.prototype.getText = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("GET", url, callback, async, true, false);\n}\n\nAjaxHelper.prototype.getXML = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("GET", url, callback, async, true, true);\n}\n\nAjaxHelper.prototype.getHead = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("HEAD", url, callback, async, false, false);\n}\n\nAjaxHelper.prototype.abort = function()\n{\n if (this.http) this.http.abort();\n}\n\nAjaxHelper.prototype.setRequestHeader = function(name, value)\n{\n if (this.http) this.http.setRequestHeader(name, value);\n}\n\nAjaxHelper.prototype._request = function(method, url, callback, async, hasResponse, hasResponseXML)\n{\n if (!this.http) return;\n \n // get reference to request object so we can use it in closure\n var xmlHttp = this.http, helper = this;\n xmlHttp.onreadystatechange = function()\n {\n if (!async) return;\n if (xmlHttp.readyState == 4)\n callback((hasResponse ? (hasResponseXML ? xmlHttp.responseXML : xmlHttp.responseText) : null), xmlHttp.status, xmlHttp.statusText, helper._parsedResponseHeaders());\n }\n \n try {\n // need some cross-domain privileges for Firefox\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n } \n catch (e) \n {\n }\n \n xmlHttp.open(method, url, async);\n xmlHttp.send(null);\n if (!async) callback((hasResponse ? (hasResponseXML ? xmlHttp.responseXML : xmlHttp.responseText) : null), xmlHttp.status, xmlHttp.statusText, this._parsedResponseHeaders());\n }\n \n catch (e)\n {\n alert(e);\n }\n}\n\nAjaxHelper.prototype._parsedResponseHeaders = function()\n{\n if (this.http) {\n var headersArray = new Array();\n var headers = this.http.getAllResponseHeaders().split("\sn");\n for (var i = 0; i < headers.length; i++) {\n var h = headers[i].trim();\n if (h.length == 0) continue;\n // value can have ':' so do not use split here!\n var sep = h.indexOf(':');\n headersArray[h.substring(0, sep).trim()] = h.substr(sep + 1).trim();\n }\n return headersArray;\n }\n else\n return null;\n}\n\n//}}}\n
/***\nDescription: Contains the stuff you need to use Tiddlyspot\nNote, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy\nfrom http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.\n***/\n//{{{\n\n// edit this if you are migrating sites or retrofitting an existing TW\nconfig.tiddlyspotSiteId = 'monkeygod';\n\n// make it so you can by default see edit controls via http\nconfig.options.chkHttpReadOnly = false;\nwindow.readOnly = false; // make sure of it (for tw 2.2)\nwindow.showBackstage = true; // show backstage too\n\n// disable autosave in d3\nif (window.location.protocol != "file:")\n config.options.chkGTDLazyAutoSave = false;\n\n// tweak shadow tiddlers to add upload button, password entry box etc\nwith (config.shadowTiddlers) {\n SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';\n SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");\n OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");\n DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");\n MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");\n}\n\n// create some shadow tiddler content\nmerge(config.shadowTiddlers,{\n\n'WelcomeToTiddlyspot':[\n "This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",\n "",\n "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",\n "<<tiddler TspotControls>>",\n "See also GettingStarted.",\n "",\n "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ You can edit this ~TiddlyWiki right now, and save your changes using the \s"save to web\s" button in the column on the right.",\n "",\n "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// @@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \s"upload\s" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",\n "",\n "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// @@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",\n "",\n "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."\n].join("\sn"),\n\n'TspotControls':[\n "| tiddlyspot password:|<<option pasUploadPassword>>|",\n "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",\n "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"\n].join("\sn"),\n\n'TspotSidebar':[\n "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"\n].join("\sn"),\n\n'TspotOptions':[\n "tiddlyspot password:",\n "<<option pasUploadPassword>>",\n ""\n].join("\sn")\n\n});\n//}}}\n
If you are connected to the Internet, you can always get the latest version of this application. There are ''three'' ways you can do this:\n\nClick the following button if you simply want to get the latest changes to any of the core tiddlers that make up this application. These tiddlers are tagged "gtd", and updating in this way will not overwrite any of the core tiddlers that you may have changed unless the core tiddlers are even newer than your changes. This is the recommended way to get updates:\n**<<importUpdates "http://www.dcubed.ca/gtd-update.html">>\n\nClick the following button if you would like to get the latest changes to any of the core tiddlers, but to interactively approve each and every updated tiddler as it is loaded into your system. If there are no updated tiddlers, you will not be prompted and the update will exit quietly:\n**<<importUpdates "http://www.dcubed.ca/gtd-update.html" updates "Update interactively" "Click here to interactively update the application" confirm>>\n\nClick the following button if you want to download all of the core tiddlers, regardless of their modification date. Use this to absolutely ensure that you are running with the core application as it was originally written:\n**<<importUpdates "http://www.dcubed.ca/gtd-update.html" all "Update everything">>\n\n''For your safety, your file will be saved and a backup file will be automatically generated before any update is performed.''\n\n!!Update ~TiddlyWiki\nAs a convenience, you can easily update the ~TiddlyWiki core used by this application by clicking on the following button:\n**<<twupdate "Update TiddlyWiki">>\n\nNote that you do not //need// to use this to update ~TiddlyWiki; you can always use [[this technique|http://www.tiddlywiki.com/#HowToUpgrade]]. But a single click seems a whole lot easier!\n\n!!Import and export\nIf you want finer-grained control over moving tiddlers in and out of this system, the following tools will do the job:\n\n** +++[Import...|Import selected tiddlers from another wiki]<<importTiddlers inline>>===\n\n** +++[Export...|Export selected tiddlers from this wiki]<<exportTiddlers inline>>===\n
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |\n| 22/10/2008 12:36:37 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/10/2008 13:0:53 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/10/2008 13:4:35 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/10/2008 13:13:20 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/10/2008 13:57:29 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/10/2008 14:2:29 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/10/2008 14:16:32 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 22/10/2008 14:24:35 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/10/2008 14:36:37 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/10/2008 17:17:55 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2008 11:19:2 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/10/2008 11:29:57 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/10/2008 12:7:43 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/10/2008 12:19:4 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/10/2008 17:44:40 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2008 17:46:29 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2008 23:18:16 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/10/2008 9:56:46 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/10/2008 17:19:5 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/10/2008 22:46:17 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/10/2008 22:49:34 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/10/2008 23:31:54 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/10/2008 8:8:0 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/10/2008 10:44:52 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/10/2008 10:47:18 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/10/2008 10:57:57 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 28/10/2008 11:4:13 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html#%E7%9C%9F%E6%AD%A3%E7%9A%84%E6%84%9B]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 28/10/2008 11:12:10 | monkeygod | [[index.html|http://monkeygod.tiddlyspot.com/index.html#%E7%9C%9F%E6%AD%A3%E7%9A%84%E6%84%9B]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/10/2008 11:16:13 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/10/2008 11:58:7 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/10/2008 12:15:29 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 28/10/2008 14:52:10 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 28/10/2008 14:52:42 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/10/2008 17:24:34 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 28/10/2008 18:0:33 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 28/10/2008 18:1:6 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 28/10/2008 18:39:1 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 28/10/2008 18:50:2 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/10/2008 9:45:52 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/10/2008 11:28:36 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/10/2008 11:38:59 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 29/10/2008 11:41:59 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/10/2008 13:58:43 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 29/10/2008 14:43:39 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 29/10/2008 15:1:45 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 29/10/2008 15:31:36 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 29/10/2008 16:23:5 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 29/10/2008 17:54:47 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/10/2008 22:46:5 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/10/2008 10:4:24 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 30/10/2008 11:29:16 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 31/10/2008 11:44:1 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 31/10/2008 11:57:49 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 31/10/2008 12:22:27 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 31/10/2008 12:54:27 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 31/10/2008 12:59:42 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 31/10/2008 13:1:40 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 31/10/2008 14:1:58 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 31/10/2008 14:49:24 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 31/10/2008 15:57:55 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 31/10/2008 16:11:20 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/11/2008 0:13:26 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/11/2008 23:15:38 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/11/2008 14:53:15 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/11/2008 23:11:15 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/11/2008 12:40:12 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 4/11/2008 17:43:56 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/11/2008 21:55:44 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/11/2008 0:8:31 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/11/2008 10:16:53 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/11/2008 22:39:42 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/11/2008 23:40:8 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/11/2008 8:53:58 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/11/2008 11:36:22 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/11/2008 12:22:22 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/11/2008 18:27:40 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/11/2008 22:42:49 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/11/2008 9:9:50 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/11/2008 0:46:43 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 8/11/2008 0:48:28 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/11/2008 0:54:42 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 8/11/2008 1:0:27 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/11/2008 2:28:34 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 9/11/2008 17:8:50 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/11/2008 17:8:56 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/11/2008 17:9:29 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 9/11/2008 17:14:37 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 9/11/2008 17:17:40 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 9/11/2008 23:18:20 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 9/11/2008 23:34:4 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/11/2008 23:34:22 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/11/2008 17:41:54 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/11/2008 9:6:40 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/11/2008 11:24:11 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/11/2008 15:28:55 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/11/2008 8:53:8 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 12/11/2008 9:4:11 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 12/11/2008 16:3:23 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/11/2008 23:56:12 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 15/11/2008 16:47:44 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/11/2008 23:0:28 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 20/11/2008 11:58:4 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/11/2008 16:49:12 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/11/2008 9:18:43 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/11/2008 17:39:17 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/11/2008 8:52:55 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/#%5B%5B%E5%90%9E%E7%B6%AD%E4%BB%96%E5%91%BD%EF%BC%A5%E5%8F%8A%E7%A1%92%20%E6%94%9D%E8%AD%B7%E8%85%BA%E7%99%8C%E6%9B%B4%E6%83%A1%E5%8C%96%5D%5D]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/11/2008 17:16:12 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/11/2008 18:56:51 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 29/11/2008 19:5:17 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/11/2008 19:5:59 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 29/11/2008 21:18:56 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/12/2008 9:42:5 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/12/2008 16:3:12 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/12/2008 9:20:55 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/12/2008 15:48:59 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/12/2008 0:6:54 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/12/2008 0:17:3 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/12/2008 12:18:39 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 15/12/2008 11:0:2 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/12/2008 15:18:47 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/12/2008 10:31:51 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/12/2008 10:13:46 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/12/2008 17:25:32 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/12/2008 15:46:57 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/1/2009 11:14:23 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/1/2009 11:50:30 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/1/2009 16:55:55 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 20/1/2009 22:11:30 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 22/1/2009 22:26:26 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/1/2009 10:31:30 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/#%E6%9D%8E%E7%99%BD%E3%80%8A%E9%9D%9C%E5%A4%9C%E6%80%9D%E3%80%8B%E6%97%A5%E7%89%88%E6%9C%AC%E6%89%8D%E6%98%AF%E5%8E%9F%E6%96%87]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/2/2009 22:45:51 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/2/2009 9:27:52 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/3/2009 10:13:56 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/3/2009 10:17:40 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/3/2009 10:23:3 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/3/2009 10:24:47 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/3/2009 9:20:29 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 20/3/2009 22:33:20 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/3/2009 21:21:18 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/5/2009 15:27:11 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/5/2009 15:38:6 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 5/5/2009 15:44:12 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 5/5/2009 16:16:4 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/7/2009 14:26:52 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 2/7/2009 14:49:49 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/8/2009 11:36:56 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/8/2009 11:50:59 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/8/2009 11:57:30 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/#DIY%E7%B6%93%E7%B5%A1%E9%A4%8A%E7%94%9F%E3%80%8B%E8%A7%A3%E6%B1%BA%E6%9C%80%E5%B8%B8%E8%A6%8B%E7%9A%84%EF%BC%98%E5%A4%A7%E6%AF%9B%E7%97%85]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/8/2009 11:44:56 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/8/2009 12:31:1 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/8/2009 16:13:41 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/5/2010 21:12:27 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 2/5/2010 21:14:3 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/5/2010 22:36:53 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/5/2010 10:20:10 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/5/2010 10:20:26 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/5/2010 11:6:58 | monkeygod | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/5/2010 23:9:30 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/5/2010 22:35:38 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/5/2010 20:4:42 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/5/2010 20:6:2 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 16/6/2010 11:28:14 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/11/2010 23:17:27 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/11/2010 0:16:15 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/1/2011 22:46:4 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/3/2011 9:10:59 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 1/3/2011 9:12:24 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/3/2011 14:30:17 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/8/2011 23:22:25 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/8/2011 23:23:37 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/8/2011 23:26:35 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/9/2011 0:15:21 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/9/2011 0:19:10 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/9/2011 9:37:4 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/9/2011 22:57:4 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html#DIY%E7%B6%93%E7%B5%A1%E9%A4%8A%E7%94%9F%E3%80%8B%E8%A7%A3%E6%B1%BA%E6%9C%80%E5%B8%B8%E8%A6%8B%E7%9A%84%EF%BC%98%E5%A4%A7%E6%AF%9B%E7%97%85]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/9/2011 20:45:3 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 4/9/2011 21:6:44 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 4/9/2011 21:11:22 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 4/9/2011 21:23:29 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 4/9/2011 22:20:17 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/9/2011 18:29:23 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2011 8:30:58 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2011 8:38:23 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/9/2011 16:22:42 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/9/2011 16:25:25 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/9/2011 16:34:44 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/10/2011 20:17:5 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/10/2011 11:42:24 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/10/2011 14:9:31 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/10/2011 21:48:49 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 13/10/2011 23:13:7 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/10/2011 15:47:40 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2011 12:0:40 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/11/2011 22:52:29 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/11/2011 22:57:27 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html#%E4%BA%BA%E7%B8%BD%E6%98%AF%E9%81%B2%E7%96%91%E4%B8%8D%E6%B1%BA%EF%BC%8C%E5%BF%83%E6%87%B7%E5%83%A5%E5%80%96]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 27/11/2011 22:35:56 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/12/2011 16:23:23 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/12/2011 16:24:10 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/12/2011 18:3:25 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 15/12/2011 22:1:35 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/12/2011 7:32:48 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/12/2011 9:49:15 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 19/12/2011 9:49:44 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/12/2011 15:2:37 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/1/2012 23:42:59 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 29/1/2012 23:55:24 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/2/2012 23:42:21 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/2/2012 9:40:17 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/2/2012 23:41:27 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/3/2012 23:56:30 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/3/2012 9:4:42 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/3/2012 22:41:47 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/3/2012 7:39:12 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/3/2012 9:50:17 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/3/2012 1:9:44 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/3/2012 23:32:56 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/3/2012 23:34:48 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok | Ok |\n| 19/3/2012 23:43:36 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/3/2012 11:7:26 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 22/3/2012 11:21:41 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/4/2012 8:54:24 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/4/2012 14:59:20 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/4/2012 23:8:52 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/5/2012 9:3:15 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/5/2012 9:6:51 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/6/2012 21:7:42 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/6/2012 21:8:6 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 1/6/2012 21:21:44 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 1/6/2012 21:22:26 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 13/6/2012 21:8:53 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/10/2012 16:51:0 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 13/1/2013 21:45:4 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/3/2013 9:17:9 | Tommy D. Lucas | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/4/2013 21:22:51 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/8/2013 21:6:0 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 16/10/2013 0:49:10 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 16/1/2014 8:40:32 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 16/1/2014 8:41:0 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/4/2014 16:32:51 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/4/2014 14:53:21 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/4/2014 14:53:54 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 30/4/2014 14:55:51 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/4/2014 14:58:0 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/5/2014 22:45:24 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/7/2014 23:7:17 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 27/7/2014 0:38:54 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/10/2014 18:25:32 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/10/2014 20:29:5 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/11/2014 13:16:5 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/11/2014 13:39:30 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/11/2014 14:7:7 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/11/2014 14:43:25 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/11/2014 15:15:1 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 16/11/2014 22:13:47 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/1/2015 0:41:43 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/1/2015 18:20:52 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/6/2015 21:36:10 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 19/6/2015 21:47:37 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 15/7/2015 0:37:4 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/7/2015 23:54:37 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 19/7/2015 23:56:50 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/7/2015 0:46:18 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/8/2015 20:35:48 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2015 22:48:31 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/9/2015 20:34:24 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/10/2015 22:32:8 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 15/10/2015 17:39:5 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 15/10/2015 17:39:51 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2015 23:10:35 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/11/2015 14:22:2 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/12/2015 22:40:2 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/1/2016 23:40:7 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/2/2016 8:48:54 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/2/2016 8:50:32 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/6/2016 16:0:59 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 20/8/2016 20:44:13 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/9/2016 11:35:11 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/11/2016 9:57:21 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/11/2016 9:50:43 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/2/2017 0:40:43 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/6/2017 23:4:36 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/6/2017 8:38:10 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/2/2018 11:14:30 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 20/6/2018 9:58:14 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 31/7/2018 22:34:21 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 20/9/2018 8:55:22 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 16/10/2018 8:15:33 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/2/2019 17:22:48 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/3/2019 23:44:21 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 15/5/2019 9:32:37 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 15/5/2019 9:42:23 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/5/2019 11:43:55 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/6/2019 16:57:0 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/8/2019 14:49:16 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 4/10/2019 8:32:45 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 15/10/2019 15:53:51 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/11/2019 11:17:37 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/1/2020 8:45:9 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 9/1/2020 11:50:39 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/2/2020 16:29:33 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 13/8/2020 17:12:13 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/10/2020 11:16:24 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 16/4/2021 9:57:8 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 16/4/2021 10:4:47 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 16/4/2021 10:6:39 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 27/8/2021 14:59:38 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/10/2021 18:42:32 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/12/2021 9:24:5 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/12/2021 13:36:20 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/1/2022 11:55:18 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/5/2022 19:9:52 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 16/3/2023 21:15:7 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/4/2023 19:46:46 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/4/2023 22:29:18 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 20/4/2023 7:46:25 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/4/2023 7:48:49 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/5/2023 16:42:28 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/7/2023 22:48:30 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/9/2023 19:49:35 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/10/2023 22:13:5 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/10/2023 22:13:19 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/10/2023 22:15:12 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/11/2023 23:48:55 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/11/2023 23:52:38 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/12/2023 22:24:6 | YourName | [[/|http://monkeygod.tiddlyspot.com/]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 16/5/2024 8:17:23 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/10/2024 21:30:52 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/10/2024 21:31:21 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/10/2024 21:31:26 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/10/2024 21:31:46 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/10/2024 22:1:43 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/1/2025 22:47:9 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/1/2025 22:47:9 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/4/2025 20:39:15 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/5/2025 16:58:52 | YourName | [[index.html|http://monkeygod.tiddlyspot.com/index.html]] | [[store.cgi|http://monkeygod.tiddlyspot.com/store.cgi]] | . | index.html | . |
/***\n|''Name:''|UploadPlugin|\n|''Description:''|Save to web a TiddlyWiki|\n|''Version:''|3.4.5|\n|''Date:''|Oct 15, 2006|\n|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|\n|''Documentation:''|http://tiddlywiki.bidix.info/#UploadDoc|\n|''Author:''|BidiX (BidiX (at) bidix (dot) info)|\n|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|\n|''~CoreVersion:''|2.0.0|\n|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|\n|''Include:''|config.lib.file; config.lib.log; config.lib.options; PasswordTweak|\n|''Require:''|[[UploadService|http://tiddlywiki.bidix.info/#UploadService]]|\n***/\n//{{{\nversion.extensions.UploadPlugin = {\n major: 3, minor: 4, revision: 5, \n date: new Date(2006,9,15),\n source: 'http://tiddlywiki.bidix.info/#UploadPlugin',\n documentation: 'http://tiddlywiki.bidix.info/#UploadDoc',\n author: 'BidiX (BidiX (at) bidix (dot) info',\n license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',\n coreVersion: '2.0.0',\n browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'\n};\n//}}}\n\n////+++!![config.lib.file]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.file) config.lib.file= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.file.dirname = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(0, lastpos);\n } else {\n return filePath.substring(0, filePath.lastIndexOf("\s\s"));\n }\n};\nconfig.lib.file.basename = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("#")) != -1) \n filePath = filePath.substring(0, lastpos);\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(lastpos + 1);\n } else\n return filePath.substring(filePath.lastIndexOf("\s\s")+1);\n};\nwindow.basename = function() {return "@@deprecated@@";};\n//}}}\n////===\n\n////+++!![config.lib.log]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.log) config.lib.log= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 1}, \n date: new Date(2006,8,19)\n};\nconfig.lib.Log = function(tiddlerTitle, logHeader) {\n if (version.major < 2)\n this.tiddler = store.tiddlers[tiddlerTitle];\n else\n this.tiddler = store.getTiddler(tiddlerTitle);\n if (!this.tiddler) {\n this.tiddler = new Tiddler();\n this.tiddler.title = tiddlerTitle;\n this.tiddler.text = "| !date | !user | !location |" + logHeader;\n this.tiddler.created = new Date();\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[tiddlerTitle] = this.tiddler;\n else\n store.addTiddler(this.tiddler);\n }\n return this;\n};\n\nconfig.lib.Log.prototype.newLine = function (line) {\n var now = new Date();\n var newText = "| ";\n newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";\n newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";\n newText += config.options.txtUserName + " | ";\n var location = document.location.toString();\n var filename = config.lib.file.basename(location);\n if (!filename) filename = '/';\n newText += "[["+filename+"|"+location + "]] |";\n this.tiddler.text = this.tiddler.text + "\sn" + newText;\n this.addToLine(line);\n};\n\nconfig.lib.Log.prototype.addToLine = function (text) {\n this.tiddler.text = this.tiddler.text + text;\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[this.tiddler.tittle] = this.tiddler;\n else {\n store.addTiddler(this.tiddler);\n story.refreshTiddler(this.tiddler.title);\n store.notify(this.tiddler.title, true);\n }\n if (version.major < 2)\n store.notifyAll(); \n};\n//}}}\n////===\n\n////+++!![config.lib.options]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.options) config.lib.options = {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\n\nconfig.lib.options.init = function (name, defaultValue) {\n if (!config.options[name]) {\n config.options[name] = defaultValue;\n saveOptionCookie(name);\n }\n};\n//}}}\n////===\n\n////+++!![PasswordTweak]\n\n//{{{\nversion.extensions.PasswordTweak = {\n major: 1, minor: 0, revision: 3, date: new Date(2006,8,30),\n type: 'tweak',\n source: 'http://tiddlywiki.bidix.info/#PasswordTweak'\n};\n//}}}\n/***\n!!config.macros.option\n***/\n//{{{\nconfig.macros.option.passwordCheckboxLabel = "Save this password on this computer";\nconfig.macros.option.passwordType = "password"; // password | text\n\nconfig.macros.option.onChangeOption = function(e)\n{\n var opt = this.getAttribute("option");\n var elementType,valueField;\n if(opt) {\n switch(opt.substr(0,3)) {\n case "txt":\n elementType = "input";\n valueField = "value";\n break;\n case "pas":\n elementType = "input";\n valueField = "value";\n break;\n case "chk":\n elementType = "input";\n valueField = "checked";\n break;\n }\n config.options[opt] = this[valueField];\n saveOptionCookie(opt);\n var nodes = document.getElementsByTagName(elementType);\n for(var t=0; t<nodes.length; t++) \n {\n var optNode = nodes[t].getAttribute("option");\n if (opt == optNode) \n nodes[t][valueField] = this[valueField];\n }\n }\n return(true);\n};\n\nconfig.macros.option.handler = function(place,macroName,params)\n{\n var opt = params[0];\n if(config.options[opt] === undefined) {\n return;}\n var c;\n switch(opt.substr(0,3)) {\n case "txt":\n c = document.createElement("input");\n c.onkeyup = this.onChangeOption;\n c.setAttribute ("option",opt);\n c.className = "txtOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\n break;\n case "pas":\n // input password\n c = document.createElement ("input");\n c.setAttribute("type",config.macros.option.passwordType);\n c.onkeyup = this.onChangeOption;\n c.setAttribute("option",opt);\n c.className = "pasOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\n // checkbox link with this password "save this password on this computer"\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option","chk"+opt);\n c.className = "chkOptionInput "+opt;\n place.appendChild(c);\n c.checked = config.options["chk"+opt];\n // text savePasswordCheckboxLabel\n place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));\n break;\n case "chk":\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option",opt);\n c.className = "chkOptionInput "+opt;\n place.appendChild(c);\n c.checked = config.options[opt];\n break;\n }\n};\n//}}}\n/***\n!! Option cookie stuff\n***/\n//{{{\nwindow.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;\nwindow.loadOptionsCookie = function()\n{\n var cookies = document.cookie.split(";");\n for(var c=0; c<cookies.length; c++) {\n var p = cookies[c].indexOf("=");\n if(p != -1) {\n var name = cookies[c].substr(0,p).trim();\n var value = cookies[c].substr(p+1).trim();\n switch(name.substr(0,3)) {\n case "txt":\n config.options[name] = unescape(value);\n break;\n case "pas":\n config.options[name] = unescape(value);\n break;\n case "chk":\n config.options[name] = value == "true";\n break;\n }\n }\n }\n};\n\nwindow.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;\nwindow.saveOptionCookie = function(name)\n{\n var c = name + "=";\n switch(name.substr(0,3)) {\n case "txt":\n c += escape(config.options[name].toString());\n break;\n case "chk":\n c += config.options[name] ? "true" : "false";\n // is there an option link with this chk ?\n if (config.options[name.substr(3)]) {\n saveOptionCookie(name.substr(3));\n }\n break;\n case "pas":\n if (config.options["chk"+name]) {\n c += escape(config.options[name].toString());\n } else {\n c += "";\n }\n break;\n }\n c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";\n document.cookie = c;\n};\n//}}}\n/***\n!! Initializations\n***/\n//{{{\n// define config.options.pasPassword\nif (!config.options.pasPassword) {\n config.options.pasPassword = 'defaultPassword';\n window.saveOptionCookie('pasPassword');\n}\n// since loadCookies is first called befor password definition\n// we need to reload cookies\nwindow.loadOptionsCookie();\n//}}}\n////===\n\n////+++!![config.macros.upload]\n\n//{{{\nconfig.macros.upload = {\n accessKey: "U",\n formName: "UploadPlugin",\n contentType: "text/html;charset=UTF-8",\n defaultStoreScript: "store.php"\n};\n\n// only this two configs need to be translated\nconfig.macros.upload.messages = {\n aboutToUpload: "About to upload TiddlyWiki to %0",\n backupFileStored: "Previous file backuped in %0",\n crossDomain: "Certainly a cross-domain isue: access to an other site isn't allowed",\n errorDownloading: "Error downloading",\n errorUploadingContent: "Error uploading content",\n fileLocked: "Files is locked: You are not allowed to Upload",\n fileNotFound: "file to upload not found",\n fileNotUploaded: "File %0 NOT uploaded",\n mainFileUploaded: "Main TiddlyWiki file uploaded to %0",\n passwordEmpty: "Unable to upload, your password is empty",\n urlParamMissing: "url param missing",\n rssFileNotUploaded: "RssFile %0 NOT uploaded",\n rssFileUploaded: "Rss File uploaded to %0"\n};\n\nconfig.macros.upload.label = {\n promptOption: "Save and Upload this TiddlyWiki with UploadOptions",\n promptParamMacro: "Save and Upload this TiddlyWiki in %0",\n saveLabel: "save to web", \n saveToDisk: "save to disk",\n uploadLabel: "upload" \n};\n\nconfig.macros.upload.handler = function(place,macroName,params){\n // parameters initialization\n var storeUrl = params[0];\n var toFilename = params[1];\n var backupDir = params[2];\n var uploadDir = params[3];\n var username = params[4];\n var password; // for security reason no password as macro parameter\n var label;\n if (document.location.toString().substr(0,4) == "http")\n label = this.label.saveLabel;\n else\n label = this.label.uploadLabel;\n var prompt;\n if (storeUrl) {\n prompt = this.label.promptParamMacro.toString().format([this.toDirUrl(storeUrl, uploadDir, username)]);\n }\n else {\n prompt = this.label.promptOption;\n }\n createTiddlyButton(place, label, prompt, \n function () {\n config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password); \n return false;}, \n null, null, this.accessKey);\n};\nconfig.macros.upload.UploadLog = function() {\n return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );\n};\nconfig.macros.upload.UploadLog.prototype = config.lib.Log.prototype;\nconfig.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {\n var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";\n line += uploadDir + " | " + toFilename + " | " + backupDir + " |";\n this.newLine(line);\n};\nconfig.macros.upload.UploadLog.prototype.endUpload = function() {\n this.addToLine(" Ok |");\n};\nconfig.macros.upload.basename = config.lib.file.basename;\nconfig.macros.upload.dirname = config.lib.file.dirname;\nconfig.macros.upload.toRootUrl = function (storeUrl, username)\n{\n return root = (this.dirname(storeUrl)?this.dirname(storeUrl):this.dirname(document.location.toString()));\n}\nconfig.macros.upload.toDirUrl = function (storeUrl, uploadDir, username)\n{\n var root = this.toRootUrl(storeUrl, username);\n if (uploadDir && uploadDir != '.')\n root = root + '/' + uploadDir;\n return root;\n}\nconfig.macros.upload.toFileUrl = function (storeUrl, toFilename, uploadDir, username)\n{\n return this.toDirUrl(storeUrl, uploadDir, username) + '/' + toFilename;\n}\nconfig.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)\n{\n // parameters initialization\n storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);\n toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);\n backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);\n uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);\n username = (username ? username : config.options.txtUploadUserName);\n password = config.options.pasUploadPassword; // for security reason no password as macro parameter\n if (!password || password === '') {\n alert(config.macros.upload.messages.passwordEmpty);\n return;\n }\n if (storeUrl === '') {\n storeUrl = config.macros.upload.defaultStoreScript;\n }\n if (config.lib.file.dirname(storeUrl) === '') {\n storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;\n }\n if (toFilename === '') {\n toFilename = config.lib.file.basename(document.location.toString());\n }\n\n clearMessage();\n // only for forcing the message to display\n if (version.major < 2)\n store.notifyAll();\n if (!storeUrl) {\n alert(config.macros.upload.messages.urlParamMissing);\n return;\n }\n // Check that file is not locked\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n if (BidiX.GroupAuthoring.lock.isLocked() && !BidiX.GroupAuthoring.lock.isMyLock()) {\n alert(config.macros.upload.messages.fileLocked);\n return;\n }\n }\n \n var log = new this.UploadLog();\n log.startUpload(storeUrl, toFilename, uploadDir, backupDir);\n if (document.location.toString().substr(0,5) == "file:") {\n saveChanges();\n }\n var toDir = config.macros.upload.toDirUrl(storeUrl, toFilename, uploadDir, username);\n displayMessage(config.macros.upload.messages.aboutToUpload.format([toDir]), toDir);\n this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);\n if(config.options.chkGenerateAnRssFeed) {\n //var rssContent = convertUnicodeToUTF8(generateRss());\n var rssContent = generateRss();\n var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";\n this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password, \n function (responseText) {\n if (responseText.substring(0,1) != '0') {\n displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));\n }\n else {\n var toFileUrl = config.macros.upload.toFileUrl(storeUrl, rssPath, uploadDir, username);\n displayMessage(config.macros.upload.messages.rssFileUploaded.format(\n [toFileUrl]), toFileUrl);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n });\n }\n return;\n};\n\nconfig.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var original;\n if (document.location.toString().substr(0,4) == "http") {\n original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);\n return;\n }\n else {\n // standard way : Local file\n \n original = loadFile(getLocalPath(document.location.toString()));\n if(window.Components) {\n // it's a mozilla browser\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]\n .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);\n converter.charset = "UTF-8";\n original = converter.ConvertToUnicode(original);\n }\n catch(e) {\n }\n }\n }\n //DEBUG alert(original);\n this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password);\n};\n\nconfig.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it\n var endSaveArea = '</d' + 'iv>';\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n {\n alert(config.messages.invalidFileError.format([document.location.toString()]));\n return;\n }\n var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + \n allTiddlersAsHtml() + "\sn\st\st" +\n original.substr(posClosingDiv);\n var newSiteTitle;\n if(version.major < 2){\n newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();\n } else {\n newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();\n }\n\n revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");\n revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPreHead","") + "\sn");\n revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPostHead","") + "\sn");\n revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPreBody","") + "\sn");\n revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPostBody","") + "\sn");\n\n var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir, \n username, password, function (responseText) {\n if (responseText.substring(0,1) != '0') {\n alert(responseText);\n displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));\n }\n else {\n if (uploadDir !== '') {\n toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);\n } else {\n toFilename = config.macros.upload.basename(toFilename);\n }\n var toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n if (responseText.indexOf("destfile:") > 0) {\n var destfile = responseText.substring(responseText.indexOf("destfile:")+9, \n responseText.indexOf("\sn", responseText.indexOf("destfile:")));\n toFileUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + destfile;\n }\n else {\n toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n }\n displayMessage(config.macros.upload.messages.mainFileUploaded.format(\n [toFileUrl]), toFileUrl);\n if (backupDir && responseText.indexOf("backupfile:") > 0) {\n var backupFile = responseText.substring(responseText.indexOf("backupfile:")+11, \n responseText.indexOf("\sn", responseText.indexOf("backupfile:")));\n toBackupUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + backupFile;\n displayMessage(config.macros.upload.messages.backupFileStored.format(\n [toBackupUrl]), toBackupUrl);\n }\n var log = new config.macros.upload.UploadLog();\n log.endUpload();\n store.setDirty(false);\n // erase local lock\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n BidiX.GroupAuthoring.lock.eraseLock();\n // change mtime with new mtime after upload\n var mtime = responseText.substr(responseText.indexOf("mtime:")+6);\n BidiX.GroupAuthoring.lock.mtime = mtime;\n }\n \n \n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n }\n );\n};\n\nconfig.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir, \n username, password, callbackFn) {\n var boundary = "---------------------------"+"AaB03x"; \n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n if (window.netscape){\n try {\n if (document.location.toString().substr(0,4) != "http") {\n netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}\n }\n catch (e) {}\n } \n //DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");\n // compose headers data\n var sheader = "";\n sheader += "--" + boundary + "\sr\snContent-disposition: form-data; name=\s"";\n sheader += config.macros.upload.formName +"\s"\sr\sn\sr\sn";\n sheader += "backupDir="+backupDir\n +";user=" + username \n +";password=" + password\n +";uploaddir=" + uploadDir;\n // add lock attributes to sheader\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n var l = BidiX.GroupAuthoring.lock.myLock;\n sheader += ";lockuser=" + l.user\n + ";mtime=" + l.mtime\n + ";locktime=" + l.locktime;\n }\n sheader += ";;\sr\sn"; \n sheader += "\sr\sn" + "--" + boundary + "\sr\sn";\n sheader += "Content-disposition: form-data; name=\s"userfile\s"; filename=\s""+toFilename+"\s"\sr\sn";\n sheader += "Content-Type: " + config.macros.upload.contentType + "\sr\sn";\n sheader += "Content-Length: " + content.length + "\sr\sn\sr\sn";\n // compose trailer data\n var strailer = new String();\n strailer = "\sr\sn--" + boundary + "--\sr\sn";\n //strailer = "--" + boundary + "--\sr\sn";\n var data;\n data = sheader + content + strailer;\n //request.open("POST", storeUrl, true, username, password);\n try {\n request.open("POST", storeUrl, true); \n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if (request.status == 200)\n callbackFn(request.responseText);\n else\n alert(config.macros.upload.messages.errorUploadingContent + "\snStatus: "+request.status.statusText);\n }\n };\n request.setRequestHeader("Content-Length",data.length);\n request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);\n request.send(data); \n};\n\n\nconfig.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir, \n username, password) {\n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n try {\n if (uploadUrl.substr(0,4) == "http") {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n else {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n }\n } catch (e) { }\n //request.open("GET", document.location.toString(), true, username, password);\n try {\n request.open("GET", document.location.toString(), true);\n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\n \n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if(request.status == 200) {\n config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl, \n uploadToFilename, uploadDir, uploadBackupDir, username, password);\n }\n else\n alert(config.macros.upload.messages.errorDownloading.format(\n [document.location.toString()]) + "\snStatus: "+request.status.statusText);\n }\n };\n request.send(null);\n};\n\n//}}}\n////===\n\n////+++!![Initializations]\n\n//{{{\nconfig.lib.options.init('txtUploadStoreUrl','store.php');\nconfig.lib.options.init('txtUploadFilename','');\nconfig.lib.options.init('txtUploadDir','');\nconfig.lib.options.init('txtUploadBackupDir','');\nconfig.lib.options.init('txtUploadUserName',config.options.txtUserName);\nconfig.lib.options.init('pasUploadPassword','');\nsetStylesheet(\n ".pasOptionInput {width: 11em;}\sn"+\n ".txtOptionInput.txtUploadStoreUrl {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadFilename {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadDir {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadBackupDir {width: 25em;}\sn"+\n "",\n "UploadOptionsStyles");\nif (document.location.toString().substr(0,4) == "http") {\n config.options.chkAutoSave = false; \n saveOptionCookie('chkAutoSave');\n}\nconfig.shadowTiddlers.UploadDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadDoc ]]\sn"; \n\n//}}}\n////===\n\n////+++!![Core Hijacking]\n\n//{{{\nconfig.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;\nconfig.macros.saveChanges.label = config.macros.upload.label.saveToDisk;\n\nconfig.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;\n\nconfig.macros.saveChanges.handler = function(place)\n{\n if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))\n createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);\n};\n\n//}}}\n////===\n\n
WINDOWS藍色當機畫面解讀\n\n錯誤代碼說明一覽表\n數 值 敘 述\n\n0 0x0000 作業完成。\n1 0x0001 不正確的函數。\n2 0x0002 系統找不到指定的檔案。\n3 0x0003 系統找不到指定的路徑。\n4 0x0004 系統無法開啟檔案。\n5 0x0005 拒絕存取。\n6 0x0006 無效的代碼。\n7 0x0007 儲存體控制區塊已毀。\n8 0x0008 儲存體空間不足,無法處理這個指令。\n9 0x0009 儲存體控制區塊位址無效。\n10 0x000A 環境不正確。\n11 0x000B 嘗試載入一個格式錯誤的程式。\n12 0x000C 存取碼錯誤。\n13 0x000D 資料錯誤。\n14 0x000E 儲存體空間不夠,無法完成這項作業。\n15 0x000F 系統找不到指定的磁碟機。\n16 0x0010 無法移除目錄。\n17 0x0011 系統無法將檔案移到 其他的磁碟機。\n18 0x0012 沒有任何檔案。\n19 0x0013 儲存媒體為防寫狀態。\n20 0x0014 系統找不到指定的裝置。\n21 0x0015 裝置尚未就緒。\n22 0x0016 裝置無法識別指令。\n23 0x0017 資料錯誤 (cyclic redundancy check)\n24 0x0018 程式發出一個長 度錯誤的指令。\n25 0x0019 磁碟機在磁碟找不到 持定的磁區或磁軌。\n26 0x001A 指定的磁碟或磁片無法存取。\n27 0x001B 磁碟機找不到要求的磁區。\n28 0x001C 印表機沒有紙。\n29 0x001D 系統無法將資料寫入指定的磁碟機。\n30 0x001E 系統無法讀取指定的裝置。\n31 0x001F 連接到系統的某個裝置沒有作用。\n32 0x0020 The process cannot access the file because it is being used by another process.\n33 0x0021 檔案的一部份被鎖定, 現在無法存取。\n34 0x0022 磁碟機的磁片不正確。 請將 %2 (Volume Serial Number: %3) 插入磁碟機%1。\n36 0x0024 開啟的分享檔案數量太多。\n38 0x0026 到達檔案結尾。\n39 0x0027 磁碟已滿。\n50 0x0032 不支援這種網路要求。\n51 0x0033 遠端電腦無法使用。\n52 0x0034 網路名稱重複。\n53 0x0035 網路路徑找不到。\n54 0x0036 網路忙碌中。\n55 0x0037 The specified network resource or device is no longer available.\n56 0x0038 The network BIOS command limit has been reached.\n57 0x0039 網路配接卡發生問題。\n58 0x003A 指定的伺服器無法執行要求的作業。\n59 0x003B 網路發生意外錯誤。\n60 0x003C 遠端配接卡不相容。\n61 0x003D 印表機佇列已滿。\n62 0x003E 伺服器的空間無法儲存等候列印的檔案。\n63 0x003F 等候列印的檔案已經刪除。\n64 0x0040 指定的網路名稱無法使用。\n65 0x0041 拒絕存取網路。\n66 0x0042 網路資源類型錯誤。\n67 0x0043 網路名稱找不到。\n68 0x0044 超過區域電腦網路配接卡的名稱限制。\n69 0x0045 超過網路 BIOS 作業階段的限制。\n70 0x0046 遠端伺服器已經暫停或者正在起始中。\n71 0x0047 由於連線數目已達上限,此時無法再連線到這台遠端電腦。\n72 0x0048 指定的印表機或磁碟裝置已經暫停作用。\n80 0x0050 檔案已經存在。\n82 0x0052 無法建立目錄或檔案。\n83 0x0053 INT 24 失敗\n84 0x0054 處理這項要求的儲存體無法使用。\n85 0x0055 近端裝置名稱已經在使用中。\n86 0x0056 指定的網路密碼錯誤。\n87 0x0057 參數錯誤。\n88 0x0058 網路發生資料寫入錯誤。\n89 0x0059 此時系統無法執行其他行程。\n100 0x0064 無法建立其他的系統 semaphore。\n101 0x0065 屬於其他行程專用的 semaphore 。\n102 0x0066 semaphore 已經設定,而且無法關閉。\n103 0x0067 無法指定 semaphore 。\n104 0x0068 在岔斷時間無法要求專用的 semaphore 。\n105 0x0069 此 semaphore 先前的擁有權已經結束。\n106 0x006A 請將磁片插入 %1。\n107 0x006B 因為代用的磁片尚未插入,所以程式已經停止。\n108 0x006C 磁碟正在使用中或被鎖定。\n109 0x006D Pipe 已經中止。\n110 0x006E 系統無法開啟指定的 裝置或檔案。\n111 0x006F 檔名太長。\n112 0x0070 磁碟空間不足。\n113 0x0071 沒有可用的內部檔案識別字。\n114 0x0072 目標內部檔案識別字不正確。\n117 0x0075 由應用程式所執行的 IOCTL 呼叫 不正確。\n118 0x0076 寫入驗證參數值不正確。\n119 0x0077 系統不支援所要求的指令。\n120 0x0078 此項功能僅在 Win32 模式有效。\n121 0x0079 semaphore 超過逾時期間。\n122 0x007A 傳到系統呼叫的資料區域 太小。\n123 0x007B 檔名、目錄名稱或儲存體標籤語法錯誤。\n124 0x007C 系統呼叫層次不正確。\n125 0x007D 磁碟沒有設定標籤。\n126 0x007E 找不到指定的模組。\n127 0x007F 找不到指定的程序。\n128 0x0080 沒有子行程可供等待。\n129 0x0081 %1 這個應用程式無法在 Win32 模式下執行。\n130 0x0082 Attempt to use a file handle to an open disk partition for an operation other than raw disk I/O.\n131 0x0083 嘗試將檔案指標移至檔案開頭之前。\n132 0x0084 無法在指定的裝置或檔案,設定檔案指標。\n133 0x0085 JOIN 或 SUBST 指令 無法用於 內含事先結合過的磁碟機。\n134 0x0086 嘗試在已經結合的磁碟機,使用 JOIN 或 SUBST 指令。\n135 0x0087 嘗試在已經替換的磁碟機,使 用 JOIN 或 SUBST 指令。\n136 0x0088 系統嘗試刪除 未連結過的磁碟機的連結關係。\n137 0x0089 系統嘗試刪除未替換過的磁碟機的替換關係。\n138 0x008A 系統嘗試將磁碟機結合到已經結合過之磁碟機的目錄。\n139 0x008B 系統嘗試將磁碟機替換成已經替換過之磁碟機的目錄。\n140 0x008C 系統嘗試將磁碟機替換成已經替換過之磁碟機的目錄。\n141 0x008D 系統嘗試將磁碟機 SUBST 成已結合的磁碟機 目錄。\n142 0x008E 系統此刻無法執行 JOIN 或 SUBST。\n143 0x008F 系統無法將磁碟機結合或替換同一磁碟機下目錄。\n144 0x0090 這個目錄不是根目錄的子目錄。\n145 0x0091 目錄仍有資料。\n146 0x0092 指定的路徑已經被替換過。\n147 0x0093 資源不足,無法處理這項 指令。\n148 0x0094 指定的路徑這時候無法使用。\n149 0x0095 嘗試要結合或替換的磁碟機目錄,是已經替換過的的目標。\n150 0x0096 CONFIG.SYS 檔未指定系統追蹤資訊,或是追蹤功能被取消。\n151 0x0097 指定的 semaphore事件 DosMuxSemWait 數目不正確。\n152 0x0098 DosMuxSemWait 沒有執行;設定太多的 semaphore。\n153 0x0099 DosMuxSemWait 清單不正確。\n154 0x009A 您所輸入的儲存媒體標 元長度限制。\n155 0x009B 無法建立其他的執行緒。\n156 0x009C 接收行程拒絕接受信號。\n157 0x009D 區段已經被捨棄,無法被鎖定。\n158 0x009E 區段已經解除鎖定。\n159 0x009F 執行緒識別碼的位址不正確。\n160 0x00A0 傳到 DosExecPgm 的引數字串不正確。\n161 0x00A1 指定的路徑不正確。\n162 0x00A2 信號等候處理。\n164 0x00A4 系統無法建立執行緒。\n167 0x00A7 無法鎖定檔案的部份範圍。\n170 0x00AA 所要求的資源正在使用中。\n173 0x00AD 取消範圍的鎖定要求不明顯。\n174 0x00AE 檔案系統不支援自動變更鎖定類型。\n180 0x00B4 系統發現不正確的區段號碼。\n182 0x00B6 作業系統無法執行 %1。\n183 0x00B7 檔案已存在,無法建立同一檔案。\n186 0x00BA 傳送的旗號錯誤。\n187 0x00BB 指定的系統旗號找不到。\n188 0x00BC 作業系統無法執行 %1。\n189 0x00BD 作業系統無法執行 %1。\n190 0x00BE 作業系統無法執行 %1。\n191 0x00BF 無法在 Win32 模式下執行 %1。\n192 0x00C0 作業系統無法執行 %1。\n193 0x00C1 %1 不是正確的 Win32 應用程式。\n194 0x00C2 作業系統無法執行 %1。\n195 0x00C3 作業系統無法執行 %1。\n196 0x00C4 作業系統無法執行 這個應用程式。\n197 0x00C5 作業系統目前無法執行這個應用程式。\n198 0x00C6 作業系統無法執行 %1。\n199 0x00C7 作業系統無法執行 這個應用程式。\n200 0x00C8 程式碼的區段不可以大於或等於 64KB。\n201 0x00C9 作業系統無法執行 %1。\n202 0x00CA 作業系統無法執行 %1。\n203 0x00CB 系統找不到輸入的環境選項。 \sr\n205 0x00CD 在指令子目錄下,沒有任何行程有信號副處理程式。\n206 0x00CE 檔案名稱或副檔名太長。\n207 0x00CF ring 2 堆疊使用中。\n208 0x00D0 輸入的通用檔名字元 * 或 ? 不正確,或指定太多的通用檔名字元。\n209 0x00D1 所傳送的信號不正確。\n210 0x00D2 無法設定信號處理程式。\n212 0x00D4 區段被鎖定,而且無法重新配置。\n214 0x00D6 附加到此程式或動態連結模組的動態連結模組太多。\n215 0x00D7 Can't nest calls to LoadModule.\n230 0x00E6 The pipe state is invalid.\n231 0x00E7 所有的 pipe instances 都在忙碌中。\n232 0x00E8 The pipe is being closed.\n233 0x00E9 No process is on the other end of the pipe.\n234 0x00EA 有更多可用的資料。\n240 0x00F0 作業階段被取消。\n254 0x00FE 指定的延伸屬性名稱無效。\n255 0x00FF 延伸的屬性不一致。\n259 0x0103 沒有可用的資料。\n266 0x010A 無法使用 Copy API。\n267 0x010B 目錄名稱錯誤。\n275 0x0113 延伸屬性不適用於緩衝區。\n276 0x0114 在外掛的檔案系統上的延伸屬性檔案已經毀損。\n277 0x0115 延伸屬性表格檔滿。\n278 0x0116 指定的延伸屬性代碼無效。\n282 0x011A 外掛的這個檔案系統不支援延伸屬性。\n288 0x0120 意圖釋放不屬於叫用者的 mutex。\n298 0x012A semaphore 傳送次數過多。\n299 0x012B 只完成 Read/WriteProcessMemory 的部份要求。\n317 0x013D 系統找不到位於訊息檔 %2 中編號為 0x%1 的訊息。\n487 0x01E7 嘗試存取無效的位址。\n534 0x0216 運算結果超過 32 位元。\n535 0x0217 通道的另一端有一個行程在接送資料。\n536 0x0218 等候行程來開啟通道的另一端。\n994 0x03E2 存取延伸的屬性被拒。\n995 0x03E3 由於執行緒結束或應用程式要求,而異常終止 I/O 作業。\n996 0x03E4 重疊的 I/O 事件不是設定成通知狀態。\n997 0x03E5 正在處理重疊的 I/O 作業。\n998 0x03E6 對記憶體位置的無效存取。\n999 0x03E7 執行 inpage 作業發生錯誤。\n1001 0x03E9 遞迴太深,堆疊滿溢。\n1002 0x03EA 視窗無法用來傳送訊息。\n1003 0x03EB 無法完成這項功能。\n1004 0x03EC 旗號無效。\n1005 0x03ED 儲存媒體未含任何可辨識的檔案系統。請確定以載入所需的系統驅動程式,而且該儲存媒體並未毀損。\n1006 0x03EE 儲存該檔案的外部媒體發出警告, 表示該已開啟檔案已經無效。\n1007 0x03EF 所要求的作業無法在全螢幕模式下執行。\n1008 0x03F0 An attempt was made to reference a token that does not exist.\n1009 0x03F1 組態系統登錄資料庫毀損。\n1010 0x03F2 組態系統登錄機碼無效。\n1011 0x03F3 無法開啟組態系統登錄機碼。\n1012 0x03F4 無法讀取組態系統登錄機碼。\n1013 0x03F5 無法寫入組態系統登錄機碼。\n1014 0x03F6 系統登錄資料庫中的一個檔案必須使用記錄或其他備份還原。已經還原成功。\n1015 0x03F7 系統登錄毀損。其中某個檔案毀損、或者該檔案的 系統映對記憶體內容毀損、會是檔案無法復原。\n1016 0x03F8 系統登錄起始的 I/O 作業發生無法復原的錯誤。 系統登錄無法讀入、寫出或更新,其中的一個檔案內含系統登錄在記憶體中的內容。\n1017 0x03F9 系統嘗試將檔案載入系統登錄或將檔案還原到系統登錄中,但是,指定檔案的格式不是系統登錄檔的格式。\n1018 0x03FA 嘗試在標示為刪除的系統登錄機碼,執行不合法的操作。\n1019 0x03FB 系統無法配置系統登錄記錄所需的空間。\n1020 0x03FC 無法在已經有子機碼或數值的系統登錄機碼建立符號連結。\n1021 0x03FD 無法在臨時機碼下建立永久的子機碼。\n1022 0x03FE 變更要求的通知完成,但資訊 並未透過呼叫者的緩衝區傳回。呼叫者現在需要自行列舉檔案,找出變更的地方。\n1051 0x041B 停止控制已經傳送給其他服務 所依峙的一個服務。\n1052 0x041C 要求的控制對此服務無效\n1053 0x041D The service did not respond to the start or control request in a timely fashion.\n1054 0x041E 無法建立服務的執行緒。\n1055 0x041F 服務資料庫被鎖定。\n1056 0x0420 這種服務已經在執行。\n1057 0x0421 帳戶名稱錯誤或者不存在。\n1058 0x0422 指定的服務暫停作用,無法啟動。\n1059 0x0423 指定循環服務從屬關係。\n1060 0x0424 指定的服務不是安裝進來的服務。\n1061 0x0425 該服務項目此時無法接收控制訊息。\n1062 0x0426 服務尚未啟動。\n1063 0x0427 無法連線到服務控制程式。\n1064 0x0428 處理控制要求時,發生意外狀況。\n1065 0x0429 指定的資料庫不存在。\n1066 0x042A 服務傳回專屬於服務的錯誤碼。\n1067 0x042B The process terminated unexpectedly.\n1068 0x042C 從屬服務或群組無法啟動。\n1069 0x042D 因為登入失敗,所以沒有啟動服務。\n1070 0x042E 在啟動之後,服務在啟動狀態時當機。\n1071 0x042F 指定服務資料庫鎖定無效。\n1072 0x0430 指定的服務已經標示為刪除。\n1073 0x0431 指定的服務已經存在。\n1074 0x0432 系統目前正以上一次執行成功的組態執行。\n1075 0x0433 從屬服務不存在,或已經標示為刪除。\n1076 0x0434 目前的啟動已經接受上一次執行成功的 控制設定。\n1077 0x0435 上一次啟動之後,就沒有再啟動服務。\n1078 0x0436 指定的名稱已經用於服務名稱或服務顯示 名稱。\n1100 0x044C 已經到了磁帶的最後。\n1101 0x044D 到了檔案標示。\n1102 0x044E 遇到磁帶的開頭或分割區。\n1103 0x044F 到了檔案組的結尾。\n1104 0x0450 磁帶沒有任何資料。\n1105 0x0451 磁帶無法製作分割區。\n1106 0x0452 存取多重容體的新磁帶時,發現目前區塊大小錯誤。\n1107 0x0453 載入磁帶時,找不到磁帶分割區資訊。\n1108 0x0454 無法鎖住儲存媒體退帶功能。\n1109 0x0455 無法解除載入儲存媒體。\n1110 0x0456 磁碟機中的儲存媒體已經變更。\n1111 0x0457 已經重設 I/O 匯流排。\n1112 0x0458 磁碟機沒有任何儲存媒體。\n1113 0x0459 目標 multi-byte code page,沒有對應 Unicode 字元。\n1114 0x045A 動態連結程式庫 (DLL) 起始常式失敗。\n1115 0x045B 系統正在關機。\n1116 0x045C 無法中止系統關機,因為沒有關機的動作在進行中。\n1117 0x045D 因為 I/O 裝置發生錯誤,所以無法執行要求。\n1118 0x045E 序列裝置起始失敗,會取消載入序列驅動程式。\n1119 0x045F 無法開啟裝置。這個裝置與其他裝置共用岔斷要求 (IRQ)。至少已經有一個使用同一IRQ 的其他裝置已經開啟。\n1120 0x0460 A serial I/O operation was completed by another write to the serial port. (The IOCTL_SERIAL_XOFF_COUNTER reached zero.)\n1121 0x0461 因為已經過了逾時時間,所以序列 I/O 作業完成。(IOCTL_SERIAL_XOFF_COUNTER 不是零。)\n1122 0x0462 在磁片找不到任何的 ID 位址標示。\n1123 0x0463 磁片磁區 ID 欄位與磁片控制卡追蹤位址 不符。\n1124 0x0464 軟式磁碟機控制卡回報了一個軟式磁碟機驅動程式無法識別的錯誤。\n1125 0x0465 軟式磁碟機控制卡傳回與暫存器中不一致的結果。\n1126 0x0466 存取硬碟失敗,重試後也無法作業。\n1127 0x0467 存取硬碟失敗,重試後也無法作業。\n1128 0x0468 存取硬碟時,必須重設磁碟控制卡,但是 連重設的動作也失敗。\n1129 0x0469 到了磁帶的最後。\n1130 0x046A 可用伺服器儲存空間不足,無法處理這項指令。\n1131 0x046B 發現潛在的鎖死條件。\n1132 0x046C 指定的基本位址或檔案位移沒有適當 對齊。\n1140 0x0474 嘗試變更系統電源狀態,但其他的應用程式或驅動程式拒絕。\n1141 0x0475 系統 BIOS 無法變更系統電源狀態。\n1150 0x047E 指定的程式需要新的 Windows 版本。\n1151 0x047F 指定的程式不是 Windows 或 MS-DOS 程式。\n1152 0x0480 指定的程式已經啟動,無法再啟動一次。\n1153 0x0481 指定的程式是為舊版的 Windows 所寫的。\n1154 0x0482 執行此應用程式所需的程式庫檔案之一毀損。\n1155 0x0483 沒有應用程式與此項作業的指定檔案建立關聯。\n1156 0x0484 傳送指令到應用程式發生錯誤。\n1157 0x0485 找不到執行此應用程式所需的程式庫檔案。\n1200 0x04B0 指定的裝置名稱無效。\n1201 0x04B1 裝置現在雖然未連線,但是它是一個記憶連線。\n1202 0x04B2 嘗試記憶已經記住的裝置。\n1203 0x04B3 提供的網路路徑找不到任何網路提供程式。\n1204 0x04B4 指定的網路提供程式名稱錯誤。\n1205 0x04B5 無法開啟網路連線設定檔。\n1206 0x04B6 網路連線設定檔壞掉。\n1207 0x04B7 無法列舉非容器。\n1208 0x04B8 發生延伸的錯誤。\n1209 0x04B9 指定的群組名稱錯誤。\n1210 0x04BA 指定的電腦名稱錯誤。\n1211 0x04BB 指定的事件名稱錯誤。\n1212 0x04BC 指定的網路名稱錯誤。\n1213 0x04BD 指定的服務名稱錯誤。\n1214 0x04BE 指定的網路名稱錯誤。\n1215 0x04BF 指定的資源分享名稱錯誤。\n1216 0x04C0 指定的密碼錯誤。\n1217 0x04C1 指定的訊息名稱錯誤。\n1218 0x04C2 指定的訊息目的地錯誤。\n1219 0x04C3 所提供的條件與現有的條件組發生衝突。\n1220 0x04C4 嘗試與網路伺服器連線,但是 與該伺服器的連線已經太多。\n1221 0x04C5 其他網路電腦已經在使用這個工作群組或網域名稱。\n1222 0x04C6 網路沒有顯示出來或者沒有啟動。\n1223 0x04C7 使用者已經取消作業。\n1224 0x04C8 要求的作業無法在已經開啟使用者對應區段的檔案執行。\n1225 0x04C9 遠端系統拒絕網路連線。\n1226 0x04CA 關閉網路連線。\n1227 0x04CB 網路傳輸端點已經有相關連的位址。\n1228 0x04CC 位址尚未有相關的網路端點。\n1229 0x04CD 嘗試在不存在的網路連線作業。\n1230 0x04CE 在作用中的網路連線上執行無效的作業。\n1231 0x04CF 無法傳輸到遠端網路。\n1232 0x04D0 無法連線到遠端系統。\n1233 0x04D1 遠端系統不支援傳輸通訊協定。\n1234 0x04D2 遠端系統的目的地網路端點沒有作何執行中的服務。\n1235 0x04D3 要求已經中止。\n1236 0x04D4 進端系統已經中斷網路連線。\n1237 0x04D5 無法完成作業,請重試。\n1238 0x04D6 無法與伺服器連線,原因是這個帳戶已經到達同時連線數目的上限。\n1239 0x04D7 嘗試在這個帳戶未授權的時間登入網路。\n1240 0x04D8 這個帳戶無法從這個地方登入網路。\n1241 0x04D9 網路位址無法用於這個要求的作業。\n1242 0x04DA 服務已經登記。\n1243 0x04DB 指定的服務不存在。\n1244 0x04DC 作業無法執行,原因是使用者尚未授權使用。\n1245 0x04DD 要求的作業無法執行,原因是使用者尚未登入網路。 指定的服務不存在。\n1246 0x04DE 傳回要求呼叫者繼續工作的訊息。\n1247 0x04DF 在完成起始作業之後,嘗試再執行起始作業。\n1248 0x04E0 沒有其他的近端裝置。\n1300 0x0514 並未指定所有的參照權限給呼叫者。\n1301 0x0515 帳戶名稱與安全識別碼之間尚有未執行完成的連線。\n1302 0x0516 此帳戶並未設定特別的系統配額限制。\n1303 0x0517 沒有可用的加密機碼。傳回一個已知的加密機碼。\n1304 0x0518 NT 密碼太複雜,無法轉換成 LAN Manager 密碼。傳回的 LAN Manager 密碼是一個空字串。\n1305 0x0519 修正層次不詳。\n1306 0x051A 表示兩個修訂階層不相容。\n1307 0x051B 此安全識別碼無法指定為這個物件的擁有者。\n1308 0x051C 此安全識別碼無法指定為主要的物件群組。\n1309 0x051D An attempt has been made to operate on an impersonation token by a thread that is not currently impersonating a client.\n1310 0x051E 不可以關閉群組。\n1311 0x051F 目前沒有可登入的伺服器,所以無法處理登入要求。\n1312 0x0520 指定登入作業階段不存在。該作業階段可能已經 結束。\n1313 0x0521 指定的權限不存在。\n1314 0x0522 用戶端未列出要求的權限。\n1315 0x0523 所提供的名稱格式與帳戶名稱不符。\n1316 0x0524 指定的使用者已經存在。\n1317 0x0525 指定的使用者不存在。\n1318 0x0526 指定的群組已經存在。\n1319 0x0527 指定的群組不存存。\n1320 0x0528 指定的使用者帳戶已經是指定群組的成員,或指定的群組因為內含成員而無法刪除。\n1321 0x0529 指定的使用者帳戶不是指定的群組帳戶成員。\n1322 0x052A 上一次留下來的管理帳戶無法關閉或 刪除。\n1323 0x052B 無法更新密碼。所輸入的密碼不正確。\n1324 0x052C 無法更新密碼。所輸入的新密碼內含不符合 密碼規定。\n1325 0x052D 因為違反密碼更新規則,所以無法更新密碼。\n1326 0x052E 登入失敗: 無法辨識的使用者名稱或密碼錯誤。\n1327 0x052F 登入失敗: 使用者帳戶限制。\n1328 0x0530 登入失敗: 違反帳戶登入時間限制。\n1329 0x0531 登入失敗: 使用者不可登入這部電腦。\n1330 0x0532 登入失敗: 指定的帳戶密碼過期。\n1331 0x0533 登入失敗: 帳戶目前無效。\n1332 0x0534 帳戶名稱與帳戶識別碼不符。\n1333 0x0535 一次要求太多的近端使用者識別碼 (local user identifiers, LUIDs)。\n1334 0x0536 沒有可用的近端使用者識別碼 (local user identifiers , LUIDs)。\n1335 0x0537 安全識別碼的轉授權部份對這個特殊用法無效。\n1336 0x0538 無效的存取控制清單結構。\n1337 0x0539 安全識別碼結構無效。\n1338 0x053A 安全敘述子結構無效。\n1340 0x053C 無法建立繼承的存取控制清單或存取控制項目。\n1341 0x053D 伺服器目前無效。\n1342 0x053E 伺服器目前可以使用。\n1343 0x053F 所提供的值是無效的識別碼授權值。\n1344 0x0540 沒有可供安全資訊更新使用的記憶體。\n1345 0x0541 指定的屬性無效,或指定的屬性與整個群組的 屬性不相容。\n1346 0x0542 Either a required impersonation level was not provided, or the provided impersonation level is invalid.\n1347 0x0543 Cannot open an anonymous level security token.\n1348 0x0544 所要求的認可資訊類別無效。\n1349 0x0545 The type of the token is inappropriate for its attempted use.\n1350 0x0546 無法在沒有相關連安全性的物件執行安全作業。\n1351 0x0547 指示無法連到 Windows NT 伺服器,或網域中的物件受到保護,所以無法擷取所需的物件。\n1352 0x0548 安全帳戶管理程式或區域安全授權伺服器狀態不正確,所以無法執行安全作業。\n1353 0x0549 網域狀態錯誤,所以無法執行安全作業。\n1354 0x054A 只有網域的主網域控制器才能使用這項作業。\n1355 0x054B 指定的網域不存在。\n1356 0x054C 指定的網域已經存在。\n1357 0x054D 嘗試超過每個伺服器的網域數目限制。\n1358 0x054E 因為磁碟上發生嚴重的儲存媒體錯誤或是資料結構毀損,所以無法完成所要求的作業。\n1359 0x054F 安全帳戶資料庫內有內部不一致的狀況。\n1360 0x0550 通用的存取類型包含在某一存取遮罩中, 這個遮罩已經對應到非通用的類型。\n1361 0x0551 安全敘述子的格式不正確 (absolute or self-relative)。\n1362 0x0552 所要求的動作只能給登入使用。而目前呼叫該動作的處理並未登錄為登入。\n1363 0x0553 無法利用已經在使用的識別碼來啟動新的作業階段。\n1364 0x0554 無法識別指定的確認包裝。\n1365 0x0555 登入作業階段不是在與要求的作業一致的 狀態。\n1366 0x0556 登入作業階段識別碼已經在使用中。\n1367 0x0557 登入要求包含無效的登入類型值。\n1368 0x0558 Unable to impersonate via a named pipe until data has been read from that pipe.\n1369 0x0559 The transaction state of a Registry subtree is incompatible with the requested operation.\n1370 0x055A 內部安全資料庫毀損。\n1371 0x055B 無法在內建帳戶執行這項作業。\n1372 0x055C 無法在這個內建的特殊群組執行這項操作。\n1373 0x055D 無法在這個內建的特殊使用者執行這項作業。\n1374 0x055E 因為群組目前是使用者的主要群組,所以不能 從群組移除使用者。\n1375 0x055F The token is already in use as a primary token.\n1376 0x0560 指定的區域群組不存在。\n1377 0x0561 指定的帳戶名稱不是區域群組的成員。\n1378 0x0562 指定的帳戶名稱已經是區域群組的成員。\n1379 0x0563 指定的區域群組已經存在。\n1380 0x0564 登入失敗: 使用者無權在這部電腦以要求的登入類型登入。\n1381 0x0565 The maximum number of secrets that may be stored in a single system has been exceeded.\n1382 0x0566 The length of a secret exceeds the maximum length allowed.\n1383 0x0567 本區安全性授權資料庫內含的資料不一致。\n1384 0x0568 在登入時,使用者的安全內容累積太多的 安全識別碼。\n1385 0x0569 登入失敗: 使用者尚未被許可在這個台腦使用要求的登入類型。\n1386 0x056A 交叉加密的密碼需要變更使用者的密碼。\n1387 0x056B 因為成員不存在,所以無法將新的成員新增到 區域群組。\n1388 0x056C 因為成員的帳號類型不正確,所以無法新增到區域群組。\n1389 0x056D 指定的安全 ID 太多。\n1390 0x056E 需要用到交互加密的密碼才能變更這個使用者的密碼。\n1391 0x056F 表示存取控制清單沒有可繼承的元件\n1392 0x0570 檔案或目錄已毀,無法讀取資料。\n1393 0x0571 磁碟結構已毀無法讀取。\n1394 0x0572 沒有指定之登入作業階段的使用者作業階段機碼。\n1395 0x0573 正在存取的服務僅授權特定數目的連線。 而目前連線數目已達上限,所以無法再建立服務連線。\n1400 0x0578 視窗代碼無效。\n1401 0x0579 功能表識別碼無效。\n1402 0x057A 游標控制碼無效。\n1403 0x057B 加速鍵表格控制碼無效。\n1404 0x057C Invalid hook handle.\n1405 0x057D 無效的多重視窗位置結構控制。\n1406 0x057E 無法建立最上層的子視窗。\n1407 0x057F 找不到 window class。\n1408 0x0580 無效的視窗,屬於其他的執行緒。\n1409 0x0581 快速鍵已經登記。\n1410 0x0582 Class 已經存在。\n1411 0x0583 Class 不存在。\n1412 0x0584 Class 仍然有開啟的視窗。\n1413 0x0585 無效的索引。\n1414 0x0586 圖示控制碼無效。\n1415 0x0587 使用專用的 DIALOG 視窗文字。\n1416 0x0588 清單方塊識別碼找不到。\n1417 0x0589 找不到任何通配字元。\n1418 0x058A 執行緒 (thread) 沒有開啟剪貼簿。\n1419 0x058B 快速鍵沒有登記。\n1420 0x058C 不是有效的對話視窗。\n1421 0x058D Control ID 找不到。\n1422 0x058E 清單方塊的訊息無效,因為沒有任何的編輯控制碼。\n1423 0x058F 視窗不是一個清單方塊。\n1424 0x0590 高度必須小於 256。\n1425 0x0591 裝置範圍 (DC) 控制碼無效。\n1426 0x0592 鎖定程序類型無效。\n1427 0x0593 鎖定程序無效。\n1428 0x0594 沒有模組控制碼就不能設定非本區的鎖定。\n1429 0x0595 This hook procedure can only be set globally.\n1430 0x0596 The journal hook procedure is already installed.\n1431 0x0597 The hook procedure is not installed.\n1432 0x0598 無效的單一選擇清單方塊訊息。\n1433 0x0599 LB_SETCOUNT 傳送到 non-lazy 清單方塊。\n1434 0x059A 這個清單方塊不支援跳格停駐。\n1435 0x059B 不可毀損由其他執行緒所建立的物件。\n1436 0x059C 子視窗不能有功能表。\n1437 0x059D 視窗沒有系統功能表。\n1438 0x059E 無效的訊息方塊樣式。\n1439 0x059F 無效的 system-wide (SPI_*) 參數。\n1440 0x05A0 螢幕已經鎖定。\n1441 0x05A1 All handles to windows in a multiple-window position structure must have the same parent.\n1442 0x05A2 視窗不是子視窗。\n1443 0x05A3 GW_* 指令無效。\n1444 0x05A4 執行緒識別碼無效。\n1445 0x05A5 無法處理多重文件介面視窗的訊息。\n1446 0x05A6 即現式功能表已在作用中。\n1447 0x05A7 視窗沒有捲軸。\n1448 0x05A8 捲軸範圍不可以大於 0x7FFF。\n1449 0x05A9 無法以指定的方式顯示或移除視窗。\n1450 0x05AA 系統資源不足,無法完成所要求的服務。\n1451 0x05AB 系統資源不足,無法完成所要求的服務。\n1452 0x05AC 系統資源不足,無法完成所要求的服務。\n1453 0x05AD 配額不足,無法完成所要求的服務。\n1454 0x05AE 配額不足,無法完成所要求的服務。\n1455 0x05AF 這項作業的 paging 檔太小,無法完成作業。\n1456 0x05B0 找不到功能表項目。\n1500 0x05DC 事件記錄檔壞掉。\n1501 0x05DD 無法開啟事件記錄檔,因此事件記錄服務沒有啟動。\n1502 0x05DE 事件記錄檔已滿。\n1503 0x05DF 事件記錄檔已經變更。\n1700 0x06A4 字串連結錯誤。\n1701 0x06A5 連結控制碼 (binding handle) 的類型錯誤。\n1702 0x06A6 連結控制碼 (binding handle) 無效。\n1703 0x06A7 不支援 RPC 通訊協定順序。\n1704 0x06A8 RPC 通訊協定順序無效。\n1705 0x06A9 字串 universal unique identifier (UUID) 無效。\n1706 0x06AA 端點格式錯誤。\n1707 0x06AB 網路位址無效。\n1708 0x06AC 找不到端點。\n1709 0x06AD 逾時數值無效。\n1710 0x06AE 找不到物件的 universal unique identifier (UUID)。\n1711 0x06AF 物件的 universal unique identifier (UUID) 已經登記。\n1712 0x06B0 類型的 universal unique identifier (UUID) 已經登記。\n1713 0x06B1 RPC 伺服器已經在聽候。\n1714 0x06B2 沒有登記通訊協定順序。\n1715 0x06B3 RPC 伺服器沒有聽候指令。\n1716 0x06B4 管理員類型不詳。\n1717 0x06B5 介面不詳。\n1718 0x06B6 沒有連線。\n1719 0x06B7 沒有通訊協定順序。\n1720 0x06B8 無法建立端點。\n1721 0x06B9 資源不足,無法完成作業。\n1722 0x06BA RPC 伺服器無法使用。\n1723 0x06BB RPC 伺服器太忙,無法完成這項作業。\n1724 0x06BC 網路選項無效。\n1725 0x06BD 這個執行緒 (thread) 沒有任何執行的遠端程序呼叫。\n1726 0x06BE 遠端程序呼叫失敗。\n1727 0x06BF 遠端程序呼叫失敗,所以沒有執行。\n1728 0x06C0 遠端程序呼叫 (remote procedure call,RPC) 通訊協定發生錯誤。\n1730 0x06C2 RPC 伺服器不支援轉送語法。\n1732 0x06C4 不支援 universal unique identifier (UUID) 的類型。\n1733 0x06C5 封籤 (tag) 無效。\n1734 0x06C6 陣列無效。\n1735 0x06C7 連結中沒有項目名稱。\n1736 0x06C8 名稱語法無效。\n1737 0x06C9 名稱語法不被支援。\n1739 0x06CB 沒有任何網路位址可以用來建立全球唯一的識別碼 (UUID)。\n1740 0x06CC 端點重複。\n1741 0x06CD 授權類型不詳。\n1742 0x06CE 呼叫次數的上限太小。\n1743 0x06CF 字串太長。\n1744 0x06D0 找不到 RPC 通訊協定順序。\n1745 0x06D1 程序號碼超出範圍。\n1746 0x06D2 連結中沒有包含任何確認資訊。\n1747 0x06D3 確認服務不詳。\n1748 0x06D4 確認層次不詳。\n1749 0x06D5 安全內容無效。\n1750 0x06D6 確認服務不詳。\n1751 0x06D7 項目無效。\n1752 0x06D8 伺服器端點無法執行這個作業。\n1753 0x06D9 端點對應程式沒有其他的端點。\n1754 0x06DA 沒有匯出任何的介面。\n1755 0x06DB 項目名稱不完整。\n1756 0x06DC 版本選項無效。\n1757 0x06DD 沒有其他的成員。\n1758 0x06DE 沒有任何資料可以取消匯出。\n1759 0x06DF 介面找不到。\n1760 0x06E0 項目已經存在。\n1761 0x06E1 項目找不到。\n1762 0x06E2 名稱服務無法使用。\n1763 0x06E3 網路位址系列無效。\n1764 0x06E4 要求的作業不受支援。\n1765 0x06E5 沒有可用來模擬的安全內容。\n1766 0x06E6 遠端程序呼叫 (RPC) 發生內部錯誤。\n1767 0x06E7 RPC 伺服器嘗試用整數除以 0。\n1768 0x06E8 RPC 伺服器發生位址設定錯誤。\n1769 0x06E9 RPC 伺服器的浮點作業導致除以 0 的運算。\n1770 0x06EA RPC 伺服器發生浮點 underflow。\n1771 0x06EB RPC 伺服器發生浮點 overflow。\n1772 0x06EC 清單中可供連結自動代碼 的 RPC 伺服器已經用完。\n1773 0x06ED 無法開啟字元轉換表檔案。\n1774 0x06EE 包含字元轉換表的檔案少於 512 位元組。\n1775 0x06EF 在遠端程序呼叫時,將空的 context 代碼從 用戶端傳送到主電腦。\n1777 0x06F1 在遠端程序呼叫時內容處理改變。\n1778 0x06F2 傳送給遠端程序呼叫的連結代碼不符。\n1779 0x06F3 The stub is unable to get the remote procedure call handle.\n1780 0x06F4 A null reference pointer was passed to the stub.\n1781 0x06F5 The enumeration value is out of range.\n1782 0x06F6 位元組計數太小。\n1783 0x06F7 The stub received bad data.\n1784 0x06F8 所提供的使用者緩衝區對要求的作業無效。\n1785 0x06F9 無法辨識磁碟儲存媒體。磁碟儲存媒體可能還沒有製作格式。\n1786 0x06FA The workstation does not have a trust secret.\n1787 0x06FB The SAM database on the Windows NT Server does not have a computer account for this workstation trust relationship.\n1788 0x06FC The trust relationship between the primary domain and the trusted domain failed.\n1789 0x06FD The trust relationship between this workstation and the primary domain failed.\n179
Tommy D. Lucas
<div class='toolbar' macro='toolbar projectify +saveTiddler -cancelTiddler deleteAction'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view gtd.project'></span></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div>\n<div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='toolbar' macro='toolbar changeContext changeProject deleteAction closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view gtd.project link'></span></div>\n<div class='subtitle'><span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>) <span macro='gtdActionCompleted'></span>complete</div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div><br/>\n<div macro='newReminder'></div>\n
http://jbaccweb/Mrop/Logon.aspx?ReturnUrl=%2fMROP%2fMain.aspx\nhttp://jbdts.jsidc.com/AMSDCI/logon.aspx?ReturnUrl=%2fAMSDCI%2fMain.aspx\nhttp://jstr02/ST/logon.aspx?ReturnUrl=%2fST%2fMain.aspx \nhttp://jbdts.jsidc.com/AMSIRS/Main.aspx\nhttp://jstr02/CB/logon.aspx?ReturnUrl=%2fCB%2fMain.aspx\n"http://jbdtsweb01/CBAS/main.aspx\n "\nhttp://jbdtsweb01/FXAMSBOND/Main.aspX\nhttp://jbdtsweb01/FXOption/Main.aspx\nhttp://jbdts.jsidc.com/amsirf/main.aspx\nhttp://jbdtsweb01/AMSBondOptions/logon.aspx?ReturnUrl=%2fAMSBOndOptions%2fMain.aspx\n
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteContext'></div>\n<div class='title' macro='view title'></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='toolbar' macro='toolbar newAction closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='tagging'><span class='subtitle'><span macro='gtdToggleState chkGTDActionListReviewMode'></span>Review next actions only</span></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>
Completed document conversion. Do not delete this tiddler unless you want to rebuild the action metadata.\n\nThis tiddler also contains document-specific preferences which, if deleted, will revert to default settings.
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteProject deleteProjectAll'></div>\n<div class='title' macro='view title'></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='toolbar' macro='toolbar newProjectAction archiveProject deleteProject deleteProjectAll closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><!-- <span macro='view modifier link'></span>, --><span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>) <span macro='gtdToggleTag important'></span>important <span macro='gtdToggleTag someday'></span>defer</div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div><br/><div macro='newReminder'></div>
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div><div class='subtitle' macro='today "DDD, MMM DD, YYYY hh:0mm"'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>
約翰.羅斯柴爾德 2009/02/25\n有人說,在擁有財富之前,你必須先想要擁有財富。我得在這兒先跟大家懺悔,以前我常會出現「金錢不代表一切」的危險想法;尤其是當我投資賠錢之後,我總會說,有錢人很「悲哀」、「生命空虛」,或者「貪婪自私」\n\n【前言】\n\n作者約翰.羅斯柴爾德是暢銷財經作家,曾經與彼得‧林區共同完成超極暢銷大書《One Up on Wall Street》、《打敗華爾街》等。經常受邀上電視節目談理財,並且是滾石、君子等雜誌的固定專欄作家。\n\n我要變有錢!\n\n有人說,在擁有財富之前,你必須先想要擁有財富。我得在這兒先跟大家懺悔,以前我常會出現「金錢不代表一切」的危險想法;尤其是當我投資賠錢之後,我總會說,有錢人很「悲哀」、「生命空虛」,或者「貪婪自私」。我也會反覆告訴自己,「開心就好,不要貪心」、「他們不過是命好」,以及「至少我還擁有健康」等等。在我遭遇投資挫敗之後,電視上那些豪門貴婦的身影,在我看來更顯得憂鬱與孤獨。\n\n除了有著「金錢不代表一切」的觀念,我也認為愚蠢的投資者,在道德上比那些聰明的投資者高尚許多。假使金錢害人們六親不認、生活悲慘,那麼我遭遇的金錢損失,反倒能讓我一步步臻於完美的靈性與無上的智慧。當Skyes Datatronics的股價從十一美元變成壁紙,我覺得自己清高得不得了;當Anacomp從二十美元跌剩兩塊錢,我簡直快成了聖人。\n\n我這種反璞歸真的態度,源頭可以追溯到大學時代,當時,我們許多人深信自己永遠不願意發財致富。一九六○年代中晚期的大學生,很多人甚至刻意拒當有錢人。那個時代,在政治哲學拿A,遠比在會計學拿A更光榮。多數人對歷史與哲學瞭若指掌,卻對最基礎的財務觀念一無所知。我們盡可能避開和商業相關的學位,儘管那是致富的第一步。\n\n畢業以後,我們這些人不是躲到鄉下小鎮、加入非營利組織,就是進入手工業、投入晦澀難懂的學術研究、從事收入少得可憐的藝術工作以及當社工。對於那些一開始就抱著發財夢、畢業之後直接進入華爾街工作的可憐人,我們自始至終抱著憐憫的心情。這些可憐的靈魂何其痛苦、何其狹隘啊!我們這麼想。\n\n這群可憐靈魂,如今成了高盛(Goldman Sachs)或所羅門兄弟(Salomon Brothers)的執行董事,每年賺進數百萬白花花的鈔票,而且居然同樣親切、樂善好施、謙恭有禮、父慈子孝,不遜於我們這些剛開始掙扎致富的人──這些太遲發現經濟學的好處勝過我們早已忘光光的前哥倫布時期政治學的人。\n\n由於相信「成功需要被激勵」,我鞭策自己,一連好幾個晚上熬夜,收看那種教人如何致富的電視節目。這類節目大多在午夜以後播出,白白浪費在半夢半醒的觀眾身上,真是太可惜了,若非如此,我們的國家會比今日更富裕繁榮。\n\n在節目當中,俊男美女們踏出他們的勞斯萊斯,或步出他們的私人飛機,爲財富的好處做見證,然後承諾會揭露已被證實有效的賺錢方法。他們多半偏好房地產,而且照他們的說法,你甚至可以完全不拿一毛錢出來。有個男人形容,自己如何利用信用卡購買賤價的房地產,短短幾個月從快餐廚師升格成百萬富翁。他現在當然不再缺錢,不過為了服務大眾,他要大家付錢聽他講課。\n\n另一名電視富翁是科斯曼先生,他會站在美國國旗旁,告訴觀眾他如何靠販賣金屬馬鈴薯槍和塑膠螞蟻農場而發財。他的想法是取得業餘發明的專利權,然後用符合常識的行銷手法進行促銷。他深信在他的協助之下(附帶說明,他可不是免費幫忙),所有人都做得到。\n\n我覺得,在這些夜半富翁當中,最激勵人心的非戴多頭(Dave Del Dotto)先生莫屬。他的節目是在夏威夷豪宅陽台上拍攝的,從陽台上還可以看到太平洋。戴多頭先生說,他從小就在口袋裡擺著一張夏威夷的照片,這張照片鼓舞他發財致富,然後搬到這個島嶼天堂來。不過他究竟定居何處,倒有點說不清楚,因為有時他說自己住在夏威夷,有時又說他只是常常來這裡。但願他有朝一日能說明清楚。\n\n戴多頭先生穿著條紋休閒衫、棉質休閒褲,雙手各戴了兩枚尾戒和一只金表,雖然身在夏威夷海濱,這副派頭卻更適合待在內華達州的雷諾賭城。他的致富格言很多,其中最令人難忘的包括「我的夢想實現了,現在該你」、「別再隨波逐流」、「先想好你究竟要什麼」,最後那句他說是引述自達文西,但我翻遍參考書卻怎樣也找不到達文西什麼時候說過這句話。\n\n為了幫助大家圓夢,戴多頭研究出一套在家學習的課程,其中有書也有錄音帶,內容則含括其他深夜富翁也會提供的東西,例如如何分析現金流量、如何預測房地產行情、如何申請更多信用卡等等,一應俱全。除此之外,他還會額外贈送一張前往夏威夷的折價券,憑券坐遊輪、搭飛機、住旅館都可以享受優惠,不過,這得透過戴多頭的旅行社安排才行。整套課程只要兩百八十九美元,也就是說,只需花這麼少的錢,你就能學到相當於價值一千四百七十五美元的賺錢訣竅,還不包括附贈的假期呢。\n\n雖然我沒有趕忙寄出我的兩百八十九元(老實說,我居然忘了那個免費電話號碼,也搞丟了他的地址),但卻從他的節目受益良多。例如,我知道戴先生在高中時成績一定很爛,以至於他到現在都把「分析」說成「分解」,但成績爛並沒有阻礙他致富;還有一個盲胞現身說法,聲稱自己聽了戴先生的錄音帶、照著戴先生的指導,果然成功致富;另外還有一位來自芝加哥的黑人女孩,不久前才窮得走投無路,如今卻已經成了房地產大亨。\n\n戴多頭先生苦口婆心再三強調,在擁有財富之前,必須先想要擁有財富。事實上,這是我這星期收看的每一位深夜理財顧問的共同信念。\n\n我是那種死都不肯承認自己過去觀念大錯特錯的人,但戴多頭先生讓我茅塞頓開。在電視上看了他好幾次之後,我腦海中「金錢不代表一切」的想法已經一掃而空,我羨慕死了戴先生今天的成就,也想變得和他一樣富有。這趟旅程若要繼續走下去,這樣的認知是不可或缺的,因此,我要在這裡提出我的第二條祕訣:\n\n認為金錢不代表一切的人,永遠無法擁有足夠的金錢。\n\n(本文轉載自約翰.羅斯柴爾德新書《散戶流浪記》,中文譯本由早安財經出版)
一覺醒來身體還是很疲累,小心「隱性失眠」上身。很多人睡前有玩手機的習慣,反而導致睡眠品質不好,不是不好入睡,就是睡三四個小時就醒來睡不著,日本專家指出,這就是「隱性失眠」的症狀,如果長期下去,可能真的導致失眠,更可能罹患糖尿病和高血壓。\n七點下班到家,總是要摸到凌晨兩點才甘願去睡,躺下床沒辦法一下子就睡著,睡不著,數羊越數越清醒,很多人會玩玩手機,甚至爬起來看漫畫,拖到凌晨三點才睡著,睡不到幾個小時,又得起床,這是許多年輕人的生活寫照,不過這樣爆肝的作息,小心「隱性失眠」上身。\n隱性失眠患者三嶋典子:「每天不管累或不累,總是沒辦法馬上睡著,一覺起來根本沒有睡過的感覺。」近5年來,日本罹患失眠的患者暴增1.5倍,其實這些人老早就出現「隱性失眠」的症狀,像是分段式睡眠,或是放假整天都在睡覺,都是警訊,醫生歸咎於現代人五光十色的夜生活,大腦在還沒放鬆的狀態下就進入睡眠時間。\n杏林大學精神神經科醫生:「大腦對於睡眠時間的認定開始變得模糊,所以睡覺時大腦還在持續運作,受到影響。」醫生說,晚上運動,晚餐吃太辛辣,或是太亮的燈光,都會影響晚上睡眠品質,「隱性失眠」有多可怕,研究指出,最後可能導致糖尿病和高血壓,甚至睡眠出現障礙,想要一覺到天亮,醫生建議睡前泡澡,喝個花草茶放鬆一下,還有早早鑽入被窩,逼自己趕快睡著,都是不錯的辦法!\n\n東森新聞 – 2011年12月14日 下午8:05
!許哲修女,生於1900年,今年108歲,身材瘦小,行動敏捷;銀絲如雪、耳聰目明;心懷大愛,一生助人。\n\n*她是天主教的老修女,於今年一月二十九日禮請淨空法師為證明師,皈依三寶。並應新加坡佛教居士林李木源林長之邀,為大家講述她的生活與修學理念。當時以問答的方式進行,編者為方便閱讀,以第一人稱將內容分為十一類,但儘量保持其原話,並融合淨空老法師曾親身至居處訪談之重點,以饗讀者。\n\n此段專訪,已製成影音專輯,歡迎至華藏淨宗學會索取。\n\n''食''\n我的飲食很簡單,早上喝一杯牛奶,中午吃一些青菜和水果。有時青菜用水燙過,不煮不炒,不加油、鹽,切了就吃。生吃能完全保持蔬菜的養分,水煮過養分就少了一半。晚餐喝一杯酸奶(優酪乳),若不餓就不吃。我從小吃素,因為吃海鮮類,全身會發紅、發癢。\n我覺得人不需要吃很多東西,吃東西很浪費時間,先要去買,還要煮、洗,吃完了又要洗碗。假如吃生的,只要洗乾淨,吃了就算了,節省的時間,可以看書,可以做有益他人的事情。\n淨空法師告訴我,阿羅漢心地清淨七天吃一餐,我聽到就說:「我來學學看。」淨空法師教我要慢慢的學,現在一天吃一餐,可以學兩天吃一餐,再一段時間,三天吃一餐,這樣時間就更多了。\n\n''衣''\n我從來不買衣服,穿的衣服都是從垃圾筒撿回來的。能穿的,洗一下就穿;不能穿的就修改。我看到世間還有很多窮人沒有飯吃,沒有衣穿,我要去買一件新衣服太浪費了,覺得對不起那些苦難的人。\n\n''住''\n我自己住一個房子,我除了在書桌及床頭櫃上放一張母親的相片,其他的什麼擺設都沒有。廚房多半是燒水用的。有些社會人士送紀念品表揚我,有的收起來,有的丟掉。有人跟我照相,照了就撕掉,留這個沒有用,這些東西是累贅。\n\n''運動''\n我每天早上四點鐘起床,第一件事是靜坐,其次做瑜珈運動,然後到外面散步,練腳力,下雨天就拿著雨傘行走,從不間斷。現在一星期有兩天出去教人靜坐,我的生活就是這樣簡而有序。\n\n''閱讀''\n我每天一定讀書,有時晚上看到一、兩點,或三點多,如果好看就忘了睡覺。我讀書是有取捨的,好的內容就留下來,不好的就當作陌生人走過一樣,完全不為所動。\n\n''修身''\n我從來不發脾氣,因為發脾氣,第一、傷害自己,第二、傷害對方,第三、其他人聽到也受影響,這個不好。生氣害自己,也害很多人,發一分鐘的脾氣,要三天才能恢復得過來,浪費時間,浪費精神,所以不要生氣。\n在養老院裡,如果跟同事們處不好,我總認為是自己不會做人、不會做事,做得讓別人不歡喜。決不說別人的過失。\n看到社會上有惡人惡事,就像平常在馬路上看到一些陌生人一樣,完全不落印象。看到好事善人,我會記住,向他學習。\n\n''服務''\n我常講我是一百零一歲的年輕人,我不帶眼鏡,眼不花,耳不聾。我們想老就會老,想年輕就會年輕。假如你腦筋不要想老,一百多歲還是可以做很多事情。我每天都在為眾生做事,我自己不需要照顧自己,我只要照顧別人,我相信老天會照顧我。我這個身體是為一切老人、病人、苦難人服務的工具,天天要利用這個工具。今年一百歲了,還是利用這個工具,這個工具還很好,還沒有壞。\n有時人家會給我錢,我自己不需要錢,我就拿這些錢去做好事。我現在照顧二十幾個很窮的老人,每個月送一些米、油、糖和罐頭給他們。如果有人捐錢給我,我就拿這些錢,替這些老人付房租、電費、水費,甚至付醫藥費。我對待每一個窮人,就像對待總統一樣的恭敬。\n他們送錢不是給我用的,送這些米、糧食也不是給我吃的,是叫我替他們幫助一些苦難的貧窮人、老人、病人,我是善心人的義工,我替他們送,替他們布施。\n\n''慈善事業''\n我五十歲到英國去學護士,可是年齡太大了,我打了一次妄語,把年齡報小了十二歲。學成之後,幾十年來全心全力照顧病人、老人,把他們都看作是自己的父母,自己的親人。目前在南非、印度、馬來西亞及尼泊爾等地,已有十多所老人院。我目前希望辦一個家庭式的老人院,不是機關、醫院的性質。來到這裡的老人,我們照顧他,就像照顧自己的婆婆、母親、父親一樣,讓每個老人都感到像在自己家裡一樣的溫暖。\n\n''進修''\n我從小受英文教育,中文程度不是很好,但我仍堅持看中文佛經。我讀了佛經以後,認為佛的教誨很好,值得學習。目前正在看淨空法師講述的《認識佛教》。\n\n''信仰''\n我的宗教是「愛」的宗教,永遠愛世人,大家都是兄弟姊妹,這是我的宗教信仰。天主教的教友們,看到我看其他宗教的書,問我為什麼看魔鬼的東西?我說:「我看世界上所有的宗教都是一片光明」。\n\n''皈依''\n我問淨空法師:「我有資格作佛陀的弟子嗎?」法師說:「有!」我說:「我給你做學生。」淨空法師給我皈依證,還有五戒證書,為我作證明,正式皈依佛門。\n\n\n''許哲居士人生精華語錄''\n\n* 心靈平和,給人安樂是健康快樂的祕方。\n* 不開心的人總是傷害別人。\n* 不做的事: 不惡口,不生煩惱心,不猛火煮食,不食肉,\n*不沾咖啡,茶,酒。\n* 必做的事: ''靜坐,布施,閱讀,運動'',吃大量生果蔬菜。\n* 吃只是維持好身體來做事。\n* 健康快樂的密訣:只是「給」。\n* 我不知道什麼叫悲傷。\n* 最開心的是31年之後,我重回檳城見到微笑的媽媽。\n* 我們曾經孤苦無依過,我希望沒有人會再受那種苦。\n* 常有人問我,我從不存錢,以後誰給我買棺材?我說我會散步到\n\n''一個山丘,再跳進一個洞里自埋自了。''\n* 我一直在照顧大自然的「兒女」,相信大自然也在照顧\n\n''我,給我健康。''\n* 我保持健康不是因為求長壽,我只是不想因病而連累他人。\n*在宇宙中我們是幼稚兒,宇宙之母會給我們最好的安\n\n''排,我接受一切。''\n* 千禧年對我沒有什麼特別,不管是坐在那裡和誰談話,\n\n''我享受每一天每一刻。''\n* 生命意義在於真誠,不貪。如果要我現在閉目而去,我也知道我沒有留下什麼,我對生命無悔無憾。
一根火柴棒的價值不到一毛錢,一幢房子的價值數百萬元,但是一根火柴棒卻可以摧毀一幢房子……,一根火柴棒是什麼?\n無法自我控制的情緒,不經理智判斷的決策,頑固不冥的個性和狹隘無情的心胸。\n~王永慶語錄~
''一秒鐘,兩秒鐘,三秒鐘,一切就已成定局!這裡說的,並不是快乾三秒膠,而是你的外在形象。''\n\n這是日本最有名的生涯規畫講師與作家箱田忠昭最新的理論,他在新作中寫著,「外在形象,也就是別人對你的第一印象,如同拿破崙說,『軍服製造軍人』,在短短的三秒鐘內,別人就會透過你的外表把你定型了,你想翻轉別人對你的既定印象,則是難上加難。」\n\n''高級外表看來更有實力''\n\n箱田補充指出,有的業務員帶著印有卡通人物圖案的手表、穿白襪、廉價皮鞋……你覺得如何?當你去拜訪客戶時,你覺得對方會產生「這個人看起來很厲害的樣子,很佩服」的想法嗎?\n\n因此在業務員訓練課程中,他總是不斷地耳提面命:務必穿著高一個層級的衣服!箱田主張,基層員工要穿得像組長,組長要穿得像課長。往上提升一個職位地做適當的「打扮」,這樣一定會看到具體的效果。\n\n提著老舊的公事包?一看就是業務員的裝扮?還是全身都是名牌,讓人覺得「看起來很貴」的套裝?如果外在等於內在的話,那麼百分之百高級的外表會讓別人認為你也是有實力的人。\n\n「這個業務員看起來很有能力的樣子」,先從外在一決勝負吧!\n\n這個理論雖然會讓一切主張「內在美至上」的人很洩氣,但是,看看一休和尚的機智故事吧:\n\n一休和尚小時候曾穿著一身破爛到大財主家中化緣,被誤認為是乞丐,給他一個飯團打發他走;他回到禪寺換上華麗的袈裟再去一次,結果大財主將他奉為上賓,附贈一頓豐盛佳餚。這時一休脫下袈裟,放在飯菜前面,自己坐在一邊,大財主覺得疑惑,一休這時說道,「你們不是尊重僧侶,而是重視這套衣服,所以這頓飯應該是請衣服的。」\n\n''外貌至上已成世界趨勢''\n\n自古以來,人就很容易以外在來評斷一個人的內在,在忙碌、人與人交際淺薄的現代社會,這種情況只有變本加厲。日本研究宅男文化、最近才因減肥 五十公斤聲名大譟的社會觀察家岡田斗司夫就指出,日本社會已經由「學歷至上」改變為「外貌至上」了,足以影響商業政治或經濟動向,「長相」在社會上的重要性,已遠比你我想像得更多。\n\n岡田斗司夫表示,過去強調的學歷至上價值觀,現在雖仍有效力,但是地位已降到了「附加資訊」。舉例來說,胖胖的他過去常聽到,「他是東大畢業,不過是個胖子,有點可惜」;如今卻演變成,「他是個胖子,虧他還是東大畢業,不值一提」,這就是典型「外貌社會主義」的特徵。\n\n可不只有日本如此,外貌至上是世界趨勢,政壇更是如此,長得好看、外在形象佳的人,比較容易勝選。\n\n在美國,年輕的歐巴馬打敗比較年長的希拉蕊;今年初台灣的帥哥總統馬英九也大贏了對手二百多萬票;日劇《CHANGE》裡,木村拓哉更生動地詮釋出這個現象,由原本一頭蓬鬆鬈髮的小學教師,在拿掉不合時宜的大眼鏡、穿上合身西裝,再梳高梳直頭髮後,一位個儀容整潔又俐落的「國會王子」,儘管什麼都不懂,卻很輕易獲得媒體矚目,甚至擔任首相。\n\n「歐巴馬每次舉手投足間展現的自信,為他帶來群眾的人緣,頗 有過去美國總統甘迺迪的味道。」服裝設計師林國基表示,改善自己的形象也可以是一個簡單的心理治療,得體的穿著可以在任何情況下有好的表現。\n\n''溝通訣竅「like=like」''\n\n台灣「外表至上」的現象也愈來愈明顯,根據本刊委託TMS民調公司調查結果,七一%的人,認為形象好的人會因此人緣較好;六九%的人覺得可以增強自信心;也有高達四四%的人認為這樣能得到長官的重視。\n\n贏得三秒鐘的外表形象後,箱田提醒,接下來的三十秒鐘和三分鐘則是「形象up up學」的關鍵。\n\n箱田舉例,如果有人對你說,「今天天氣很好。」該怎麼回應呢?「哪有!」「什麼?也還好吧。」這麼回答的話,大家都很清楚後面的對話很難繼續下去。\n\n想要在三十秒之內給人好印象,箱田提醒務必記住「like=like」法則,英文中的like有「喜歡」和「相似」的意思,我們喜歡跟自己相似的人,所以,在這個溝通階段中,讓對方徹底產生「這人與自己類似」的想法,這是使溝通順暢無礙的訣竅。\n\n「天氣好冷喔!」當對方說這話時,就算你不覺得那麼冷,也該說「是呀,真的滿冷的。」箱田還推薦「再加一句」的小技巧,也就是回話時再多講一句話。\n\n假設對方問:「請問現在幾點鐘?」不要只回答現在三點就結束對話,而是多加一句話,「現在三點,要不要喝杯茶呢?」效果是不是好很多呢?\n\n''三分鐘內發自內心稱讚''\n\n從良好的「外在」、「打招呼互動」後,箱田提醒大家,在對話中要養成「稱讚對方」的習慣,最簡單的方法,就是使用「三真回應法」─「真有你的」、「真了不起」、「真的,就像你說的那樣」,會話中只要不斷重複這三真句子,特別是對長輩與上司使用,就可以獲得良好的效果。\n\n稱讚時,切記要發自內心,卡內基副總黃德芳強調,「對上司誠心的讚美與拍馬屁有很大的不同,誠心的讚美,就是本質上不求取任何回饋心理的祝福,而且不會聽起來讓人感覺很不舒服。」\n\n箱田則提出實用的「稱讚的四個步驟」:一、先稱讚對方,「田中課長,貴公司的員工都很熱情呢。」只這樣說會讓人覺得是奉承;二、提出稱讚的理由,「因為剛剛走廊上迎面而來的員工非常熱情地對我微笑,且大聲的說你好。」;三、從其他角度詢問,「請問你們是否有辦特殊的禮儀訓練呢?」四、再一次稱讚,「真了不起,不愧是持續成長的公司,對員工的教育也不遺餘力呢。」他強調,這稱讚四步驟要在開始對話的三分鐘之內說出來,沒有人會因為他人稱讚而生氣的,可說是重要技巧。\n\n''依膚色由腳往上選衣服''\n\n話說回來,贏得好形象的「三三三法則」,如果沒有一開始那三秒鐘的良好外表包裝,後面關鍵的三十秒和三分鐘的表現機會,可能根本不存在。\n\n無論是初入職場的新鮮人,或者是遇到重大場合、各種會議,時常不知該如何挑選衣服的上班族,北京清大講師及新世紀形象學苑創辦人石詠琦建議,購買衣服前,應該先判定自己的膚色,膚色一般而言大致可分為暖色系、冷色系兩種,屬於暖色系的人應穿冷色系衣服,冷色系膚色應穿暖色系,之後再從腳往上購買衣服。\n\n所謂從腳往上買,就是先買鞋子再買裙子、褲子,最後才是買上衣,由於大部分的人會先挑選上衣,但買了一件好看的上衣,才發覺沒有適合顏色的鞋子可配,因此又得再多花一筆錢去買適合的鞋子,但通常這雙鞋被穿的機率極低,在縮衣節食的年代,上班族應該謹慎治裝,才不會花了許多冤枉錢。\n\n此外每個人也應當選最適合自己膚色的三個顏色,這三個顏色分別代表自己會出現在不同場合的區別,例如藍色裝扮適合職場,綠色、白色適合休閒活動,黑色、紫色適合出席晚宴,顏色服裝區別有助於個人形象的建立。\n\n此外,體形的維持也很重要,由於肥胖會予人「控制力不足、懶散、不健康、不專業」的感覺,體重管理也是現代人必修的一課;維持良好的體態,也可以避免不斷採購新衣服的窘境。\n\n''穿對衣服可藏拙不顯胖''\n\n力行日走萬步的王品集團董事長戴勝益最近就有感而發表示,「多數人都不願面對自己豐滿身材的事實,明明是三十一吋的腰身,卻偏要買三十吋的褲子。肉塞在褲腰裡,就像肉粽爆開了,也像蒸得很圓胖的饅頭把皮撐破了!」\n\n他認為,真正聰明的人應該買三十二吋的褲子才是,比實際身材多了一吋,剛好看不出身材的圓胖,也可以藏拙。\n\n李雅費登(Leah Feldon)的著作、創下全球近百萬美元銷售紀錄的《我穿起來胖嗎?》,書中提到許多修飾身形的小技巧,像是穿著單色的服裝會有神奇的修飾效果,例如奧黛莉赫本深諳單色穿著之美,曾在演出《甜姊兒》時,因導演要她黑色舞衣搭配白色襪子而淚灑片場,因為她認為單色穿著會顯得修長而優雅,也會增添垂直感、拉長身形。\n\n布料的選擇也很重要,硬挺厚重和亮面的布料都會使人顯胖,選擇飄逸舒適的材質才正確,如輕巧的斜紋織布、皺織布、針織衫、人造纖維、人造絲、萊卡等,都可以修飾身形,這些輕材質還具有垂墜性的修飾效果。造形師黃淑琦也建議,上班族若嫌整燙麻煩,要避免如棉麻等容易皺褶的材質,可以考慮混紡纖維。\n\n''效法名人穿出俐落專業''\n\n幾位名人的穿著,則是造形師林國基建議參考的對象。像陳敏薰一貫的黑色套裝加上珍珠項鍊或絲巾,因為「黑色最簡單」而優;若想要凸顯職場女強人特質,首選殷琪的Armani套裝,林國基形容,「殷琪家的衣櫥堪稱是Armani的專櫃」,她改良式的西裝外套、加上微微的墊肩,就是俐落專業的象徵。\n\n台灣型男代表則非嚴凱泰莫屬,天生衣架子的他,一身Armani西裝、偏好的銀灰色是穩重的象徵,設計師黃淑琦認為他穿什麼都很好看,是最值得企業人參考的;此外,亞都麗緻飯店總裁嚴長壽也拿到高分,林國基指出,他每次亮相,西裝上的袋巾最有畫龍點睛之效,「因為很多男士都會選擇和西裝顏色相近的領帶,這時候袋巾就能凸顯出變化。」\n\n宅男、干物女們不要再怨自己「懷才不遇」了,因為這本來就是個「以貌取人」的社會,想要給人家留下好印象,要掌握好與人最初接觸的三十秒、三分鐘,但最重要的,人家喜不喜歡你,三秒鐘內就決定了;請記得,這三秒鐘,決定你的一輩子。
!''服務力Case Study 旺達電池''\n\n在一個僅10坪大的房間裡,整齊地礎C了一千八百多種電池產品,光靠三個人就能應付網路上數萬個客戶需求,旺達電池被稱為「電池達人」,絕非浪得虛名。\n\n這是個晴朗無雲的豔陽天,全台夏日溫度再創新高時,旺達電池的老闆何青樺承受酷熱在自營的辦公室裡,忙到下午三點半才準備開始吃「午餐」。\n\n位在台中縣大里市某條街巷中的一棟樓房裡,其實是網站上人人皆知的電池基地。「沒有找不到的電池」是網友們對旺達電池的評價,這樣一家沒有店面,沒有精緻的裝潢,卻可以靠賣手機電池達到單月營收破新台幣二十五萬元。\n\n走進旺達電池的辦公室,沒有華麗的隔板,只有幾排辦公桌,卻空無一人,正當我們好奇詢問時,何青樺笑著表示:「下午三點半後,辦公室就沒人了,因為都出去跑業務了。」走過空無一人的業務區,看到另一間辦公室坐著幾位小姐正忙著接電話。\n\n 走上二樓,映入眼簾的是一排排的電池零組件,無論成品還是半成品,都被整整齊齊地排放在十坪大小的房間裡,並且每個盒子外面都清楚標示著每個手機型號的電池。很難想像在這麼小的空間裡,有多達一千八百多種電池產品,光要將這些林林種種的電池歸類就是一件大工程,更不用說其他手機的周邊商品,包括皮套、充電器、吊繩、記憶卡、保護貼等。「我們網站只有三個人,」何青樺靦腆地笑著,這麼複雜又龐大的業務量,就是透過他和兩名助手完成。\n\n*''低單價高品質~副廠貨用料講究還比較便宜''\n\n何青樺是道地的台中縣子弟,早期他在台北從事汽車零件進出口貿易,方正黝黑的臉讓人覺得他很「古意」(台語:老實)。不過不要看他古意的外表,其實他擁有全球走透透的經歷,因為工作的關係,年輕的時候還曾經在西非奈及利亞待過五、六年,因此講起做生意,何青樺像個滿腹生意經的老江湖。\n\n現在旺達電池有高達八成的回購率,但是回想當初自設網站的時候,卻乏人問津,一個顧客也招攬不到。「在實體店面要創立品牌已經不容易了,在網路就更難,旺達電池可以有今天的成績,是因為我們事必躬親。」從何青樺的臉上看到汗水滴落的勤奮。\n\n旺達電池在網路上賣電池跟其他業者不同的是,他們並不是大盤商或批發商,嚴格講起來,旺達電池從尋找電池蕊心的原物料到電池外殼,再到交給組裝廠組裝成電池成品,旺達除了不負責生產製造之外,其餘零組件採購都是自己來。\n\n由於何青樺早年曾轉戰手機電池的進出口批發貿易,因此對電池原物料蕊心的品質好壞相當了解,這也是為什麼旺達電池跟其他網路賣手機電池商家有極大的區隔性。\n\n「我們生產的雖是副廠電池,但是用的電池蕊心比原廠的還要講究,」何青樺有信心地表示。目前旺達電池蕊心來自日系與韓系品牌,包括日本六大品牌的三洋、松下、NEC,或者韓國三星、樂金(LG)等大廠的蕊心。「許多原廠的電池目前大多都已在中國生產製造,就算同樣的品質,我們的電池比原廠便宜三分之二以上。」\n\n*''讓顧客超安心~幫每顆電池投保千萬責任險''\n\n許多消費者都對在網路上買電池有疑慮,尤其看到價格這麼便宜的情況下,更擔心會是劣等品。由於電池這類商品關係到電源,萬一電池品質不良,可能傷害手機本身,甚至有爆裂問題。為此旺達電池還替消費者所購買的每顆電池保了一千萬至兩千萬的產品責任險。「我們不只賣商品,還要賣安心,」何青樺認真地表示。\n\n當然,除了產品責任險之外,旺達電池還有半年保固,若非人為破壞因素,半年內電池使用有問題或故障,一律免費換新。「我對自己推出的電池有信心,目前故障率還不到一%呢!」何青樺開懷看著羅列在桌面上的各式電池。\n\n在旺達裡沒有找不到的電池也是成功關鍵之一。何青樺回憶:「曾經有位客人在網站上留言要尋找當年小海豚機的電池,由於手機已停產,電池當然也就難找,連原廠都沒有了,但是我們還是透過模具商,替客人找到他所需要的商品。」\n \n再舊的手機,只要電池外殼模具還有業者開模,旺達就有把握可以幫消費者找到電池。「就怕該款電池外殼已經在市場上斷貨,不可能為了單顆電池請工廠開模,因為開模少說也要五、六萬至二、三十萬成本。」不過,旺達電池從營運至今,客人要求尋找的偏門電池達成率都在九成以上,所以說「沒有找不到的電池」,並非浪得虛名。\n \n*''快速滿足需求~供貨比同業至少快上十天 ''\n\n由於手機推出市場的速度快,周邊商品推出速度也得相對因應,旺達電池支援新手機電池的推出速度,比其他商家要快上十天以上。\n\n由於旺達電池與電池組裝廠密切合作,這些組裝廠也同時替某些手機原廠組裝電池,因此旺達可更快得知新手機推出市場的時程,自然在配合周邊產品時,有更快速的上市反應。\n\n旺達電池所經營的網路商店平均每月可達到新台幣二十五萬元的營業額,毛利率在20%至30%之間。\n\n在台中縣大里市的這棟自營辦公室裡,我們看到旺達代表著台灣中小企業旺盛的生命力,就算是透過網路平台沒有實體店面,也可以營造出如此強大的影響力。\n\n\n《數位時代》撰文=薛怡青\n\n
上課睡覺的女人(馬任重╱板橋社區大學講師)\n\n我搞不懂,有人「敢」在我的歌唱課上,趴在桌上呼呼大睡!這是「我的」課ㄟ!我是「名師」ㄟ!這真是過分!怎麼可以這樣! \n\n這個四十出頭的她在剛開學沒多久,就開始睡給我看,而且每次上課必睡。於是乎我開始想些對策,阻止這麼荒謬的情形繼續下去。\n\n再次上課時,我展現出氣質高尚的微笑,似有似無的說:接下來,我請幾位同學出來唱唱剛教過的歌!\n\n然後她自好夢中被我點名點叫醒,昏昏的站了起來,一臉惺忪,撥撩臉頰因汗水沾濕的微亂的頭髮,撥弄不掉的是趴睡桌面所擠壓出來隱約的暗紅痕跡,一種怪怪的紅色。班上的同學訥訥的望向她,場面頗不安的!她低著頭,用一種極微弱的音量,訕訕的說:老師,不好意思…………。\n\n我一時之間也不知該說些甚麼?雖然是有著這麼一點抓到現行犯的感覺!我心想,她以後不會再睡了吧!\n\n接下來的課,她又來睡覺了。我又回去思考「對付」她睡覺的各種策略,其中包括臨時點名、說笑話、關愛的眼神、說靈異事件、要學生一個個出來獨唱……… 。 \n\n可是她依舊昏睡!\n\n最後我還想了一個自己覺得不錯的「妙計」,讓學生做自我介紹,社區大學的學生來自社會的四面八方,認識這些不同領域的人,我覺得挺快樂有趣的!\n\n我想,經過自述,這樣也許能對她上課睡覺的行為多一些了解。\n\n輪到她自我介紹了,我注意的聽。\n\n她說:我不太會說話,請大家多多指教!\n\n沒了,就這樣。我依然沒有得到任何的線索及答案。\n\n一學期的課,她就這麼昏睡而過。\n\n我心裡想:一定是她不喜歡唱歌,或者別的班名額已滿,所以她才「淪落」到我的班上,下學期應該就看不到她了吧!\n \n第二學期,她又報名了,又在課堂中呼呼睡去。\n\n我那魔羯座打破沙鍋個性,決定私下找她好好談談!\n\n纖細的身軀,低垂著頭,她羞赧說:真的很抱歉,我太累了,所以上課經常忍不住睡著,請不要生氣!\n\n一時之間,我好像也沒有立場不高興,這些社區大學的學生白天都有工作,晚上還願意抽時間學習,真的不容易!\n\n她不再多說,我也暫時收起我的好奇心!就讓她繼續睡吧,這一睡又是一學期!\n\n第三學期報名前,她問我說:您還願意教導我嗎?真是不好意思,我常常撐不住而睡著,希望沒有打擾到你教課的情緒。\n\n我笑著說:沒關係!那沒什麼!\n\n可是心中卻為她上課睡覺的行為思索著種種合理的解釋。\n\n她又再次參加了我的歌唱班。\n\n不同的是,雖然她依舊昏睡,但是她似乎願意多透露一些訊息。\n\n七點的課她會提早半個鐘頭到,而且會貼心的替我帶來晚餐!\n\n為了解開她的怪異行為,我吃著她所帶來的晚餐,一邊小心翼翼卻又裝作漫不經心的樣子詢問著關於她的狀況!\n\n但是她總是避重就輕,所有的答案都是一聲聲的長嘆,無法舒展的眉宇之間好像埋葬了垂死邊緣的掙扎。看了讓人心酸。\n\n她看著夕陽餘暉問我說:一到黃昏心就慌,你了解嗎?\n\n我埋頭的吃著晚餐,似懂非懂!心理想著,為甚麼今天夕陽的顏色那麼詭異! \n\n在一個下著雨的寒冷傍晚,她搭著我的便車說要去榮總看病,這次我沒開口問她任何事,也許是能承受的壓力已經到了燃點吧!她眼睛無神看著雨刷,從板橋到天母的路途上,隨著滴滴答答的雨聲,平靜而緩緩的說出了她的故事:\n\n她幽幽卻又沉重的帶我回到 1999年的921,在天崩地裂一瞬間,「博士的家」震碎成了一堆廢土,浩劫中她奇蹟似的獲救,在沙塵石塊的層層覆蓋下,重見家人是支撐她唯一生還的理由。\n\n她跌跌撞撞在廢墟來回尋找,試圖用受傷的手扳開層層的瓦礫,雙眼無神祈禱著奇蹟也會降臨在生命與共的三個人身上,孱弱的身體無法再負擔無止無休盲目的挖掘。\n\n她還是不放棄,繼續悽厲呼叫著他們的名字。黑夜降臨,其他受難者的哀嚎回應了她對家人的聲聲呼喚!最後,她雙腿發軟,倒了下來,於是「天人永別」的枷鎖自此緊緊的箍著她。\n\n她美滿的家庭被撕裂成一面面的招魂幡,淒慘的三面白旗上是她的先生、兒子、女兒。所殘存的是破碎的冰冷身軀!\n\n在香煙嫋嬝中凝視著牌位,她是個被詛咒的遊魂,孤單的在世間來回飄蕩著,沒有目的地,無法輪迴。\n\n她用平淡的聲調說:我想自殺,這是最好的解脫方式。有一次上課時,你要大家自我介紹!你知道嗎?我幾乎當場崩潰,每個同學都可以聊聊他們美滿的家庭,我呢?要我說甚麼?我要如何告訴別人我的遭遇?\n\n事發的當時還有人說是我帶煞才會剋死了我的丈夫及一對兒女。剛開始的日子,我幾乎夜夜無法入眠,兩眼一閉就看到他們,感覺好真實,彷彿又回到從前,隨著夢醒卻是更錐心的痛,痛到發狂,痛到無法呼吸。\n\n最近我開始接受心理輔導,固定去榮總接受「憂鬱症」的治療。雖然事情過了六年,雖然我也服用大量的安眠藥,雖然 ………。\n\n我到現在還是懼怕夢醒的現實。有一天上課時,突然間懼怕的感覺不見了,或許因為有許多人圍繞在我周圍吧!我發覺我可以安心的睡覺,那種感覺好好,我幾乎都忘記了我也曾經擁有這樣的感覺。 \n\n我很喜歡上你的課,可是你懂我的意思嗎?我如果睡著了老師,請你不要叫醒我,讓我繼續睡吧!我真的好累!她喃喃的說!\n\n我將車上的音樂關掉,點點頭表示答應!雨還是滴滴答答的下著,落在車頂上發出輕輕的節奏!好吵也好安靜。\n\n我目送著她下車,雨刷來回的跑,似乎要將她從我視線上擦拭掉。可是不僅擦拭不去,反而更清楚。我發呆似的注視著她無助的背影遠去。老天啊!一個身軀要載這許多愁?\n\n我惆悵想著她在被我叫醒時,因趴睡桌面所擠壓出來的暗紅痕跡,那種怪怪的紅色在我腦中混亂交織成一幅不安的潑墨,不斷的暈染開來。\n\n她看著餘暉問我說:一到黃昏心就慌,你了解嗎?化成了陣陣的回音,如潮水般襲向我的耳膜,越變越大聲!一到黃昏心就慌,你了解嗎? 一到黃昏心就慌,你了解嗎?\n \n旅歐聲樂家馬任重目前在台北縣板橋社區大學兼任講師,教導聲樂、歌唱等課程,近來他在自己的部落發表一篇「上課睡覺的女人」文章,內容在網路上被一再轉載,引發熱烈討論,原來背後有著一段感人的事。 \n \n故事女主角蔡麗香是921大地震受災戶,原先住在新莊市博士的家社區,一夕之間面臨摯愛的先生、一雙兒女驟逝的悲慘際遇,曾有好幾年,她無法安睡,直到在馬任重的音樂課中,她開始能安然入睡;也因音樂的治療效果,讓蔡麗香重拾對人生的希望。\n\n''一個人背後都有不為人知的故事,如果可以,還是要多一點寬容吧!''\n
不二法門\n \n耕雲先生講述\n一九八八年十月三十日於台北巿師範大學\n \n一、對不二法門的認知\n二、不二法門的修學要領\n三、證入不二法門的方法\n四、禪是不思議的「不二法門」\n \n每個人從母胎降臨到世間以後,便面對一個多元的世界,過著相對的人生和生活。由於我們離不開好惡、得失、取捨、利害.....因此,我們的心也隨著多元的外在而扭曲,迷失了自我。一個分裂、多元的心,不統一又不集中,當然也就不能發揮力量了。\n \n一開始我們就經常受到外在的得失、毀譽、好惡....相對觀念的影響,而萌生出恐懼、憂慮、不滿的心態,並經常被這些因素所牽制、干擾、使我們活得很不自在、不自由、不解脫;乃至於不論如何偉大的人,或多或少,也都活在無奈之中,常常感覺到心有餘而力不足,力不從心。誇張一點說,這樣不調和、不安祥的生活,對於我們人生而言,毫無疑問的是一種煎熬;對我們生命來說,也顯然是一種懲罰。多數人幾幾乎從生到死很少有愜意的時候,所以,佛法的根本認知就是:人生是苦。\n \n確立了此一認知,我們應該感謝佛陀的慈悲,施予眾生以心靈救濟的法門。什麼是心靈救濟的法門?扼要地說,就是不二法門。我們只要進入這不二法門,當下就能證得自性,當下就是自在無礙,當下是個海闊天空任遨遊的解脫境界。所以,六祖大師說「佛法是不二之法。」\n \n事實上,一切聖賢都是由這不二法門誕生的,離開不二法門,就沒有真實法,就沒有自在瀟灑的解脫生活。\n \n研究不二法門有幾個層次,首先我們要討論的是對不二法門的基本認知。\n \n一、對不二法門的認知\n \n(一)自他不二\n \n首先要認清楚的是自他不二──自己與別人原本是一體的,用自他不二的認知來泯除人我的對立,才能達到人際關係的調和。\n \n煩惱從哪裏來?煩惱從人來。自己看別人常常不順眼;不論是別人的語言、動作和做事的方法,往往會覺得不合自己的意,於是就會厭惡、生氣、煩惱、不滿;別人講話,也許不是講我,但總覺得在影射自己、諷刺自己,這樣怎能不生煩惱?倘若肯泯除主觀,把人際關係調和好了,煩惱自然就會減少,而調和人際關係,首先就必須確認自他不二。這話怎麼說呢?\n \n就一個「社會人」而言,人是不可能孤立、單獨活在這個世界上的,因為不開紡織廠而有衣服穿,不是農人卻有米飯吃....這證明人是生活在互存、互助關係上的。\n \n就佛法而言,首先我們要探討生命的本來面目,由此肯定一真法界是個大圓覺海的生命之海。個體存不存在呢?個體是存在的;整體存不存在呢?整體也是存在的。沒有整體的生命本源,就沒有個體生命的派生,因此個體可顯示本源,由本源流注出河沙世界、無量眾生。萬殊一本、一多不二、你就是我、我就是你、本來面目完全相同;也就是說,父母未生前的生命基因,生命的原態完全相同。\n \n個體生命的差異,只顯示在父母生我以後的社會人上。從出胎、誕生、嬰兒到成為社會人,其間眼、耳、鼻、舌、身、意等六根接觸色、聲、香、味、觸、法等六塵,眼晴對色,耳朵對聲....不斷地錄音、錄影、見取、造業而形成了分別意識。我常說我們的眼晴就像錄影機,拍過照片後就保存有資料。我們的耳朵像是錄音機,聽到聲音就錄成磁帶,人腦也頗類似電腦,裝入軟體後就會發生作用,而每個人不同之處就在於所裝的軟體不同。\n \n試看婦產科醫院嬰兒房裏,那些還沒有裝「軟體」之前的嬰兒,人人不都是一樣嗎?他們簡單到只會餓了就哭,飽了就睡,以後的差異是由每個人在生長過程中的生活條件不同、生活環境不同、遺傳因子不同、接觸半徑的性質不同所產生的。\n \n我常說我們每一個人,當出生的那一刻,就決定了他的未來。為什麼?他的家庭背景、父母職業特性,決定著他童年接觸、認知的活動半徑,決定他從一歲到十歲所接收的影響的內涵,從而構成了他人格、性格的雛型與人生的方向,但是在這以前,人完全是相同的。\n \n我常譬喻說:如果你把一個水分子,丟在污水池裏,然後坐飛機到世界任何一個角落,乃至到北冰洋,再取出任何一個水分子,你說:它就是原來的那一個。準沒錯,因為它不只是相似或相等,而是絕對的全同。\n \n個體的生命來自生命之海也是一樣的,由大圓覺海流注出來的生命支流,有動的生命、準動的生命、不動的生命。不動的生命,就是器世間。在這生命的洪流裏所流露出來的現象雖各殊,但其本質卻不變。\n \n竺道生法師在虎坵山對石頭說法,頑石竟然也會點頭,這絕非誇張之詞;如果你的生命力夠、親和力夠,器世間不動的生命偶爾也會動。\n \n你、我、他就像三個水分子,是全同,是不二的。若說有差別、若說是異化,那只不過是假象罷了。\n \n當我們徹底確認了自他不二,的確無可疑時,對於人我的界限,自然就不會那麼凸顯,自我意識也不會那麼突出了,從此對於任何人,乃至任何生命現象,都會油然產生一份親切感,而不會有強烈的疏離感和排斥性,這樣人際關係就會自然地改善,人際關係調和了,社會就會祥和、世界就會安寧,國際關係調和了,世界就會息爭止戈,而漸進大同。\n \n所以我們要想證入不二法門,首先就必須建立自他不二的基本認知,不僅不要把人我之際分得太清楚,更要有人饑己饑、人溺己溺的情懷,「象憂亦憂,象喜亦喜」的情感,我們活得才會更瀟灑,才會獲得更多的友情。\n \n(二)色空不二\n \n第二個基本認知是色空不二。有很多人認為色是質礙和現象,空就是什麼都沒有,這樣認知就大悖不二法門了。其實萬生萬物都是由空裏來,又融歸到空的母體裏去的。對於原本的真實,有些哲學家主張唯心,有些哲學家主張唯物;唯心主義說是認識決定存在──沒有我心識的認知,客觀存不存在,根本就不是問題;唯物主義者說是存在決定意識──若是沒有客觀的物相,我的心靈就沒有內涵,就不起作用。\n \n像這些爭論,只能說是很滑稽,也讓我們聯想到盲人摸象的譬喻,這都是邊見──各執一邊,既是邊見,顯然都違反了中道。\n \n在信心銘中,三祖老早就說「境由能境,能由境能。」能夠產生認知,能夠產生作為,是因為有客觀假象存在;沒有假象的存在,表層意識的分別心就沒有辦法形成,全體是真心獨照,這是「能由境能」。\n \n什麼是「境由能境」呢?客觀的假有,藉表層意識的分別認知而顯現,如果沒有分別取相的認知,客觀的假象根本就沒有存在的實體。什麼是表層意識?這是我們由無明生見取,而形成的一種能夠感知、分別外在事物的意識。\n \n人們的腦子裏所裝的一切知識,都是透過六根的見取而獲得的,其實質也不過是六塵的堆積而已,因為這些都是原本不有的。真實的必是原本的,而且最初的就是最後的。\n \n一切的現象只是個「諸行無常」的過程,你看到的一切運作、一切的形色,完全如佛所說是「諸行無常、諸法無我、畢竟寂滅。」除了「一真法界」,沒有任何事物是真實永恆的。因為原本不有,所以畢竟寂滅。\n \n水結成冰,誰能說水是永恆的?如果說水與冰是不二的話,色與空亦復如是。我們瞭解了這些,就不會執幻為真,認現象為實質而對外認同了,也不會堅持說地球是天長地久了。\n \n我們應該透視萬物的真實相,而不應妄自取相認同。要知道人生最大的障礙和不自在,就是受外界的牽制,就是來自對外在虛假的認同,從而破壞了我們心靈的統一。我們能夠肯定色空不二,就會明白有與無在實質上不是兩回事;有的原本沒有,原本沒有的最後畢竟歸空。如果說它原本是有而歸於沒有,那是斷見;能明瞭有原本就不有,眼前只是現象,就能夠擺脫相對,契入不二,得大自在了。\n \n(三)死生不二\n \n要想打破生死關,首先就必須了解死生不二。什麼是死生不二?\n \n人活著與死亡只是肉體的異化,而這種異化只限於生命的現象,實質上並沒有異化。這話怎麼講?一個人出生了,法界──大宇宙並沒有增加什麼;人死亡了,乃至一個星球殞滅了,大宇宙也沒有減少什麼。就像煮一鍋肉,肉爛到看不見了,它還在鍋裏嘛!它只是煮爛了而已,它並沒有消失;我們的生與死也是如此。\n \n所謂「方生方死」,是說我們生的起點,也正銜接著死的那一剎那,這兩個點是可以重疊的。「方死方生」,就是說我們死的那一刻,也就是新生命的開始,這兩個點也是可以重疊的。當我們下班休息時,休息的起點也就是工作的終點,這兩點一樣可以重疊。所以佛法往往用「O」來表示。\n \n我們了解到人無所謂生,也無所謂滅。生是緣生,條件的組合;滅是緣滅,條件的解體。我們如能認知生是責任的開始,而死是任務的解除,就不再認為生是一種權利,死是一種斷滅了。真實的是永恆的,大圓覺海是不生不滅的。整個的法界是個永恆的大生命,它是無欠無餘,不生不滅的。勘透了這些,還有什麼生滅、死生的問題呢?\n \n二、不二法門的修學要領\n \n(一)解行不二\n \n在修行過程中,我們理解多少,就要實踐多少;如果只求理解而不重實踐,只努力求知,而不重實證,不能讓知見與行為融成一體,不管你累積多麼淵博的知識,那也只是廢知識。\n \n什麼叫做廢知識?就跟酒精一樣,所含的只是沒有營養的廢熱量;空有知識而不去行,它既不能抵抗煩惱,也不能有所裨益於你的生活;因為就業考試不考這些廢知識。若想學能致用,就必須由解行相應,做到解行不二。\n \n人是萬物之靈,人的高明在什麼地方?最突出之點在於人能以認識指導行為。如果我們的行為脫離了認識,就成了盲行妄作、胡作非為了。如果我們解行不能相應,那就是知行分裂,也就是雙重人格,這種人一定是說得很好,做得很糟;人前很好,人後很糟。一個人格分裂的人,最後必然會陷於精神分裂,乃至精神崩潰而喪失了自己。\n \n因此修行者,首先要確定一個基本認知—-我們不只是求知道而已,而是要藉力行去證實的。如果知而不行,驢年也到不了家。所以修學不二法門,首先要能做到解行不二,也只有以認知和理解來指導、支配、主宰行為,才能突出人的價值,提昇人的品質,修行也才不會落空。\n \n(二)理事不二\n \n道理說得再好,一旦與生活脫節,就成了戲論。理論和認識如果跟生活行為無關,就是理事分立,分立就不是不二了。\n \n修學佛法最偉大的目標,在於完成法的人格化;也就是說,以法為生命的內涵,構成生活的特色和獨特的風格,那才是真正完成了法身的熔鑄。如果理是理,事歸事,一個理,一個事,分明是兩個,顯然背離了不二法門。因此修行者必須把握的要領是理事不二,這樣才能因理成事,以事證理,也才能證入不二法門。\n \n(三)苦樂不二\n \n苦是苦,樂是樂,分明是兩種覺受,怎麼說是不二呢?\n \n我們如果到廣東館子去吃飯,菜是比較甜的。到了四川、湖南館子則是帶有辣味的。如果你要廣東人吃辣椒,無疑對他是一種懲罰,他受不了嘛!但是在覺受的性質上沒有什麼兩樣,因為苦與甜、鹹與酸都只是一種味覺,都是感官功能的刺激與反應。\n \n就覺受的當體而言,是苦樂不二的。所謂「煩惱即菩提」,此話怎講?試想看,你若沒有菩提,就沒有覺性,沒有覺受,就跟石頭一樣,怎會有煩惱的感覺?在你感受到煩惱的同時,便彰顯了你的覺性,故說「煩惱即菩提」;因為煩惱能彰顯覺性,在煩惱與苦痛的當下就呈現出自性的功德。更何況煩惱無自性,若離我執,無有受者,一真法界,法海一味,有什麼煩惱可得?所以修行的第三個要領是苦樂不二。\n \n不論逆境、順境,稱心如意,或者窮途潦倒,都與自性無關,只要保持秒秒安祥,便是「若能相續,名主中主」了。\n \n三、證入不二法門的方法\n \n我們修行要證明的是什麼?光說空話是沒有用的,我們要證明的是自己心靈的淨化和人格的轉化,驗證自己是否完成了法的人格化?通俗一點說,自己是否已成為真理的化身?這是需要實證的。\n \n證入不二法門的方法如下:\n \n(一)能所不二\n \n平常我們對禪所知道的,都只是能知,除了能知沒有所證。只有開悟才會達到能所不二的境界──能知與所知合一,最顯著的感受是心不再對外認同,不再被境所轉,被緣所縛。能做到能所不二──能即所、所即能,當下就是自性圓融契入無執和漏盡了。\n \n(二)定慧不二\n \n真實的禪者,沒有甚麼入定、出定的事。一般所說的入定有很多流弊,例如打坐,就有很多的法門:有的守丹田、有的守黃中、有的守中丹田、有的守海底輪,各有不同。如果你當時的心態與法的要求不吻合,就會走火入魔。什麼叫做走火入魔?心智走錯了方向,而入魔也不是說變魔鬼,只是因錯誤而遭受折磨而已。有的人半身不遂,有的人精神分裂.....顯然是受到折磨,這樣的定是有為法。\n \n佛法最上一乘法門的定是無為法。什麼是無為法呢?不守什麼,也不執著坐相,只打「牛」不打「車」,只修心不執身;只保持內心一貫的安祥,不讓它出現斷層,不管其他的事情,因為只有安祥的心態才是定慧不二的現量與證量。\n \n什麼是定慧不二?六祖壇經開示得很明白:即定之時慧在定,即慧之時定在慧。又說:定慧等持,雙修是正。\n \n如果偏慧就會滋長分別,偏定易淪於無記。無記是坐禪最大的弊病,比掉舉更壞;因為掉舉只是你的表面意識在作怪,覺性還沒有被壓抑;定到偏於無記的程度,一切不知不覺時,就像沒有主的空房子,魔就有奪舍的機會可乘,所以打坐而冥然不覺,非僅不好,也是很危險的事。除非是具有大功德,大修行,戒行淨潔精嚴,有護法守護,才不會入魔;一般人坐到那種情況,是非常危險的。所以只有定慧不二,定慧等持,才能臻於定慧圓明之境。若要臻於「定慧圓明不滯空」的境界,那就唯有甚深安祥的心態,才能到達了。\n \n什麼是安祥的心態?我說話你聽得清清楚楚,我不說你也沒聽時,內心歷歷明明、明明歷歷、空空朗朗、沒有妄想、沒有煩惱、沒有過去、沒有未來,是「一念不生全體現」的甚深安祥心態。安祥是法的正受、法的現量,除了安祥以外,任你見個什麼,統名邪見,不管你有任何覺受,都是惡覺受。\n \n若想證得定慧圓明,能保持秒秒安祥一百天,就會脫胎換骨,轉凡成聖。反之,不論偏定或偏慧,都是邊見,都不契合中道。\n \n我們只要努力保持內心的安祥,且能秒秒相續不斷,加上由衷地反省懺悔,不出一年、兩年就會證入不二法門的。\n \n(三)體用不二\n \n如能做到一切時中不離安祥,則所作所為悉同無為,自然智鑑無缺,不起分別而生活在觀照般若中。既然體是安祥,用是安祥,秒秒安祥而不執不離現實人生,就是體用不二的證量。\n \n證道歌說「常獨行,常獨步,達者同遊涅槃路。」獨行、獨步並不一定是到曠野荒郊,只要你能保持體用不二的安祥心態,雖然你在西門町散步,卻好像是一個人在獨行、獨步一樣,外面的一切,對你不會構成干擾。整個禪定的歷程,就安祥禪來說,這就是離執禪定,也必須是六根對六塵不起粘滯,不生干擾,才有少分受用。倘使一個人獨處的時候,能夠如如不動,一旦面對社會五光十色,立刻心起分別,那是不行的;不能匯歸不二,打成一片,是無法修行成功的。必須如證道歌所說「行亦禪,坐亦禪,語默動靜體安然」,才是體用不二。\n \n(四)心法不二\n \n一般人多忽略了自己那無價珍寶的心,向外覓法,縱使是找到了也是假的,因為心外無法嘛!若執著心外有法,顯然是個典型的外道。我們要確認心即是法,唯求明心,屬於內明,內明明個什麼?內明明心見性;若謬認心外有法,那是外道,外道是什麼?類似孟子的學生告子,主張真理在心以外;外道並不是個壞名詞,只是說明他謬認真理是在自心以外而已。\n \n我們明白這點以後,就知道心即是法,不假外求,真實法只在你的自心。古德說得很好:一切佛法,自心本有,將心外求,捨父逃走。謬執心外有法,就像連自己的父親都背棄了一樣的愚昧無知,所以說心法不二──心即是法,法即是心。認知了原本的心,就證得了「法本法無法」,如果連自己原本的心都被埋沒了,還能求個什麼?釋迦牟尼傳法偈說得很清楚:\n \n法本法無法──法,原本的法是無可分別的。\n無法法亦法──那個不可思議的法就是真實而永恆的法了。\n今付無法時──今天我把不能言詮、無有方所的法付給了你時。\n法法何曾法──你向我學法,學到了什麼?何嘗得到什麼可計量,分別的法啊!\n \n他雖然沒有學到什麼,且喜無所得也無可失。我們每個人的心,原本無欠無餘,是圓滿具足,恰到好處的。所以,我們要珍惜自己的心,守住自己的心,不要讓它迷失和受到污染,只要肯自淨其意,始終保持著原本清淨的本心,就會直了成佛的。\n \n我們唱自性歌:菩提自性,本來清淨。重點就在這「本」字上。因為真實的是原本的嘛!原本清絕點埃,絕諸相對,是個定慧圓明、寂然不動的大覺心。「但用此心」,就是說只要用那本來清淨、本不動搖的心,就直截了當地圓成佛道了,這就是心法不二的最好說明。\n \n本心就是法,法就是本心;本心就是本法,本法就是本心。能夠修到心法不二,就直截了當地圓成佛道了。\n \n四、禪是不思議的「不二法門」\n \n說到這裏,有人會問:不二法門大概是一了?須知不二法門,一也不立;若有所立,就是能立與所立,就成了二法,就不是不二法門了。不二法門的真實法要只有一句話──不思議。為什麼?因為起心即妄,動念即乖,才生分別,已背本真,但有言說,都無實義故。\n \n一般人往往認表層意識為自己原本的真心,殊不知這表層意識只是我們過活一趟人生的工具,以工具當主人,結果不僅反客為主,而且是尊卑不分,心國也就不太平了。我們習慣用分別心去認知法,而見取、執著,這叫做惡見取。不二法門是直截了當,一法不立的,而最直截、最了當的就是一個「歇」字。為什麼?經上說:狂心若歇,歇即菩提。把一切妄想全部放下,放到一念不生,當下即是。\n \n佛經很清楚地告訴我們不可思議,果能解行相應,多麼省事!反之,不管你怎麼去思惟、探索,都得不到真實的結論與實證。可知最近的不二法門就是放下妄心,不起一念。\n \n講到這裏,忒地囉嗦,最直截了當莫過於信心銘中所說「要急相應,唯言不二,不二皆同,無不包容,十方智者,皆入此宗。」換一句話說,禪就是不二法門,要想快速相應,疾速成就,只有證入不二法門,把好惡、是非、人我....一切相對的邊見,統統泯滅,一體涵攝,不生分別,當下圓成。\n \n以上略舉了十個不二,若具體地講,一切都是不二,百個千個列舉不盡,例如得失不二、時空不二....本質上都是不二的。願各位全體證入不二法門,涵泳大圓覺海。\n\nhttp://book.bfnn.org/books2/1562.htm\n\n報佛恩網:http://www.bfnn.org/
工商時報20081026\n【薛翔之、彭禎伶、孫彬訓/台北報導】 \n\n 富邦金只想要日盛證券,不想要日盛銀行。據悉,富邦金併購日盛金案,考量到日盛證券的實力,更能補足富邦的證券版圖,因此,傾向只買證券子公司,對於是否購買日盛銀,態度保留。 \n\n 富邦金近來購併動作積極,上周甫宣布吃下ING安泰人壽,又傳出在金管會大力支持下,擬推動金控併購金控的首例,與日盛金合併。不過,對於2金控整併,或是買方傾向只整合證券子公司的說法,金管會都不願證實。 此外,宏利香港資產管理公司昨(28)日公布,正式完成併購金復華投信。 \n\n 未來將為台灣宏利人壽現有的投資型商品,增加7檔新投信基金,提供宏利現有客戶更多投資商品的選擇,同時也為宏利金融在台灣,增加20個銀行與券商通路。金復華投信也將改名為宏利投信。 \n\n 宏利同時也公布併購案後的人事新布局。謝誠晃將擔任總經理,負責帶領金復華投信的業務團隊、產品及通路開發。謝誠晃加入宏利之前,是富達投信總經理。 \n\n 王彥傑將擔任宏利金融集團台灣投資主管,負責整合金復華投信與宏利的亞洲投資作業,管理金復華投信在台灣的前、中、後檯投資操作。\n\n
一個小朋友問一位富翁說:「叔叔,你為什麼這麼有錢?」\n富翁摸摸小朋友的頭道:「小時候,我爸給了我一個蘋果,我賣掉它,再想方法用低價買了兩個蘋果,後來我又這樣賺了四個蘋果。」\n⋯⋯小朋友若有所思地說:「哦…叔叔,我好像懂了。」\n⋯⋯富翁說:「你懂個屁阿!後來我爸死了,我繼承了他全部的財產。」\n⋯⋯⋯⋯\n給創業者提個醒,不要癡迷於從閱讀成功人士的傳記中需找經驗,這些書大部分經過了精致的包裝,很多重要的事實都不會告訴你。\n\n例如,比爾蓋茨的書不會告訴你他母親是IBM董事,是她給兒子促成了第一單大生意,巴菲特的書只會告訴你他8歲就知道去參觀紐交所,但不會告訴你是他國會議員的父親帶他去的,而且是高盛的董事接待的。
*為其他人許願是無效的:唯有當事人自身發出的意念、觀想,才能引發切身感受,進而啟動吸引力。\n*少用「別」、「不要」、「不是」等字眼:這些字一旦在腦中出現,你的心念反而會聚焦在不想要的事物。\n*不可「想到才做」:請每天花一些時間觀想你的心願,讓它成為一種生活習慣。\n*不要一直追問願望何時才能實現:當你專注在時間點上,你只會感覺時間總是不夠用,散發出焦慮、懷疑的負面能量。\n*不要畫地自限:毋須將時間浪費在藉口上,當腦中浮起「我做不到是因為……」的念頭時,請想想與你有相同狀況但卻達到目標的人。例如,你說:「我無法瘦下來,因為遺傳了家中的肥胖基因」時,請想想是否有人出身胖子家族但依然苗條。\n
《素食養生美顏社》寫於 2011年6月27日 12:13\n\n有個小和尚,每天早上負責清掃寺廟院子裡的落葉。 \n \n在冷颼颼的清晨起床掃落葉實在是一件苦差事,尤其在秋冬之際,每一次起風時,樹葉總隨風飛舞落下。 \n \n每天早上都需要花費許多時間才能清掃完樹葉,這讓小和尚頭痛不已。他一直想要找個好辦法讓自己輕鬆些。 \n \n後來有個和尚跟他說:「你在明天打掃之前先用力搖樹,把落葉統統搖下來,後天就可以不用辛苦掃落葉了。」 \n \n小和尚覺得這真是個好辦法,於是隔天他起了個大早,使勁的猛搖樹,這樣他就可以把今天跟明天的落葉一次掃乾淨了。一整天小和尚都非常開心。 \n \n第二天,小和尚到院子一看,他不禁傻眼了。院子裡如往日一樣是落葉滿地。 \n \n老和尚走了過來,意味深長的對小和尚說:「傻孩子,無論你今天怎麼用力,明天的落葉還是會飄下來啊!」 \n \n小和尚終於明白了,世上有很多事是無法提前的,唯有認真的活在當下,才是最真實的人生態度。\n\nhttp://www.facebook.com/notes/%E7%B4%A0%E9%A3%9F%E9%A4%8A%E7%94%9F%E7%BE%8E%E9%A1%8F%E7%A4%BE/%E4%B8%8D%E8%A6%81%E9%A0%90%E6%94%AF%E6%98%8E%E5%A4%A9%E7%9A%84%E7%85%A9%E6%83%B1/10150241432198934
[img[http://sphotos.ak.fbcdn.net/hphotos-ak-snc3/hs295.snc3/28407_10150186954845471_304564155470_12357413_5686332_n.jpg]]\n[img[http://www.prof2000.pt/users/cfqfespan/sistema%20solar.jpg]]
''保持清醒,独立判断''\n\n大多数交易者的刚进入这个市场的时候,都是听你的朋友或者你认识的人——或者是你的经济人——或者是电视、电台里面各种分析师的分析,说投机能够赚大把的钞票。可能同时,你又厌倦了单位上的简单枯燥的,而且工资不高的工作。你长时间这种环境的感染下,你鼓起勇气在工作之时偷空学习投机是如何来赚钱的。你希望得到市场中所有的信息,而最后就情不自禁的加入了欺骗和被欺骗的投机市场。\n\n一般我们都说新手往往能够赚钱,并且让有经验的交易员眼红。\n\n开始你自己操作的成绩比你所认识的朋友都好,但是你还有许多必须学习的技巧。而为了获得更大的利益,你的学习兴趣比以往要大的多。你把所有有关的期刊、杂志、书籍都订,所有的电视、广播评论都听、所有的市场的研讨会都参加。当有电视评论说:专门为60万的客户量身设定的100万目标限额会员,第一目标增长33.3%到80万,第二目标增长25%到一百万,你毫无顾及的报名参加。\n\n专家讲解到他如何判断行情的反转点。他展示各种图形、指标,说明如何在2005年中国股市破1000点的时候是如何赚钱,又如何预测以后的大牛市。他的交易记录无法令人怀疑。\n\n随之而来的交易你却是一单不如一单,你把你以前赚的钱全赔了,最后你自己原有的资本也所剩无几。这时,你开始紧张,但是你知道——富贵险中求。你最后把自己的棺材本也押上,再次进入市场。这时,你进行的不再是交易了,你是在进行一场赌博。结果——你空手而归。\n\n上面的那个故事不知道是否有你的身影呢?初入投机市场的投资者向书本学习、向老师学习是必经之路。但是经过一定时间的实盘操作过程以后,离开书本、离开别人是成熟投资者的标志。如果你在瞬息万变的投机中感到轻车熟路、轻松愉快的时候,你就会深刻体会“自己比别人更重要”。(1)因为婴儿总有断奶的一天,小孩都要经历学翻身、学爬行、学站立、跌跌撞撞学走路的过程,没有一个健全的人因为惧怕摔交而永远依赖拐棍的。一旦一个人能够独立地走稳路,就再也不需要别人搀扶帮助和借助拐棍,也不会跌撞摔交了。投机也不例外,也是这么一个过程。(2)市场是微妙的和充满悬念的,是一场欺骗与反欺骗的竞局。市场没有救世主,只有自己救自己。所以,相信别人不如相信自己。(3)兵法讲“知己知彼、百战不殆”,自己才最了解自己,才知道怎样以己之长应对彼方之短。如果你还在依赖股分析师这根拐棍,就一定是股市里还经常摔交的人\n一个简单的童话故事\n\n相信大多数人都看过安童生的《皇帝的新装》。在这个童话里面,除了揭穿谎言的小女孩,所有的人都认为自己看到了皇帝穿上了新衣服。其实他们自己都看到皇帝没有穿上衣服,但是都不敢相信自己看到了真实的事实,都怕自己是一个愚蠢的人,他们就在脑海中联想皇帝穿上了世界上最美丽的衣服。\n\n市场是一个乐园,是一个的迷人的地方。人们从早到晚都在玩一种叫做市场游戏,这个游戏是这样的:每天他都会上涨或下跌,玩游戏的人的去赌结果。这是一场很简单的游戏。但这也有复杂的地方,主要是因为市场乐园里玩游戏的每一个人,对于市场走向都有自己的意见。玩游戏的人还弄出了一大堆系统,方法,证据,和分析,用来证明自己的意见是对的。他们都用各种高深的技术指标,技术指标给你锦囊妙计,给你出谋划策。玩游戏的人有许多教人叹为观止的法宝。不过问题出在,有时他们用自己的方法研判市场会往某个方向走,而事实上,市场的走势却恰恰相反,这种事情从来不会叫身处其中的每一个人清醒,他们会花很长的时间,讨论和以市场会有这种“违背常理的”走法。但是他们通常会同意,这只是市场的暂时脱轨现象,他们所用的方法,所作的分析,完好如昔。\n\n有一天下午,有个东郭先生的玩家碰到一件怪事,从此之后,他整个人都变了。“东郭先生曾经花了很多时间,深入研究所谓系统指标,而且成为市场乐园中这方面公认的行家。现在系统指标显示,市场非涨不可,所以,东郭先生迈进了不少股票,建立了不小的多头 。不幸得很,这位东郭先生买入后不久市场就开始下跌。这件事情并没有叫东郭先生太过忧虑,因为他很笃定,相信市场终究会上涨。然而市场却不理他那一套(正是造化弄人),一跌再跌又跌。东郭先生十分焦虑和消极(这种事情不难理解,因为我们都经历过这种时候)。但是他还是认为事情很快就会好转,市场很快就会反转,走他应该走的路。既然所有的童话故事都有小孩子——就像《皇帝的新装》里面,这里也不例外。我们发现东郭先生居然有一个叫做“诚实”的五岁的小男孩。正当他为自己悲惨的遭遇仰天长叹时,“诚实”走了进来。他发现气氛有点不对劲,开口就问到底发生了什么事情。\n\n“哦,没什么,乖儿子,这种事情你不会懂的,简单的说,市场本该上涨,结果没有。”\n\n“爸爸,这就是你说的市场吗?是不是电脑屏幕上这根线吗?”\n\n“对”\n\n小“诚实”走过来,专著的看着屏幕上那条歪来歪去的线。过了一阵子,他说:“喂,爸爸,我根本不知道市场是什么,但从这根线来看,似乎只跌不涨阿”\n\n“乖儿子,这就是你不懂的地方,你看,指标显示,市场铁定要涨到这里。”\n\n“我知道,爸爸,但现在看起来就是往下走嘛!”\n\n“宝贝,不止这样,连MACD都一口咬定,市场非涨到这里不可。”\n\n“我知道,但现在看起来就是往下走嘛!”\n\n“你不懂的,宝贝,当MACD和KDJ吻合时,市场就非得往那个方向走不可,并且市场跌了这么久了,肯定会涨起来的。”\n\n小“诚实”一脸糊涂,他又走过去,仔细看着屏幕。\n\n“你说的东西,我全不懂,爸爸,我也不了解市场。但现在看起来就是往下走嘛。你看,不是吗?”\n\n求是先生一时语塞,眼睁睁的看着儿子:\n\n“诚实,你再说一遍好吗?”\n\n“爸爸,就是现在,市场看起来就是往下走。我说错了吗?”\n\n就在这时,某种灵感迅速闪入东郭先生脑中。那些年来苦研MACD和KDJ,以及其他种种都历历浮现眼前。他看了看女儿,拿起电话来把所有的多头仓平掉。而且,不止如此,他还大肆放空。现在,求是先生已经不是以前的东郭先生了,以前的他,一有时间就钻研MACD和KDJ,还有其他理论。现在,一有时间他就去打高尔夫,而且腾出很多时间跟家人共享天伦。朋友们都认为,他变得很奇怪,因为他不再对那些与市场有关的迷人技术指标。但是东郭先生一点都不在乎,因为他正大赚其钱,而且钱多得不像话。\n\n东郭先生投机的故事,告诉了我们:市场价格是最真实的,我们必须遵循市场的现状:不预测,幻想,随市场而动;未来既不能幻想出来,也不能被预测出来;市场的真实表现,全部写在成交之中,反映在价格里面;任何预测和幻想,都是交易者主观形成的,不是市场的真实写照;在任何时候,采取正确的交易策略是长期稳定获利的唯一途径;预测和幻想是交易的最大障碍\n收益、风险是孪生兄弟\n\n这是一件残酷的事实: 90%的交易者始终亏损;约5%-7%的交易者可以扯平;真正能够稳定获利的交易者仅有3%-5%。而世界上顶尖的交易员的成功率也就是34%,并不是我们想象的80%、90%的高成功率。当你听到上述骇人听闻的事实你现在也许就不想进入投机行业,但是事实上我们只要控制好自己资金的安全,我们依然可以从中获得收益的,就像世界顶尖的交易员一样,只需要34%的成功率。\n\n有一句名言具有真意。依我的看法,他是有始以来,有关操作的最重要声明。这句话是:认赔小钱,坐赚大钱。这八个字说明一切。如果我们谈的是以小博大、信用交易比率甚高,和持有头寸时间限制的期货操作,除此之外,别无良方。即使你是短线可,你也必须在赚大钱的同时,认陪小钱。操作股票时,信用交易比率较低,而且也不需要抢着平仓,这种事情虽不关生死但为了获得最高的利润,仍有必要奉行这句名言为法宝。你是不是曾经读过报章杂志上的买卖建议专栏中,有用投飞镖的方式列出该买该卖的市场建议?他们的做法是,透出飞镖,看它的落点,从而决定卖出公债、买进小麦等等。我相信,投资人如果以投飞镖的方式选择他的操作,只是在起初的止损处反向操作,并单纯地遵守以上良言,那么到年底的时候一定可以赚到钱。也有人在电脑上使用随机数产生器,制定模式,作为操作选择的依据。不管怎么样,从这八个字可以看出,要在市场上(任何市场)获利,它们是如何重要。\n\n 我们现在花一些时间,了解这八个字的真正意思。\n\n 有一件事是几乎所以成功的操作者(他们持有的头寸超过一天)都同意的。这件事是:要不是市场偶尔有大波动,除了短线客外,没有人到年底结算时能够赚钱。换成另一种方式来说:如果你不追随大波动操作,你就赚不到足够的钱来弥补其他小损失——因为你损失的次数很可能多余赚钱的次数。因此,获胜的唯一方法是,利润高于亏损。我们先谈谈亏损。以正确的眼光来看待亏损,是件很重要的事。操作是一种事业。他可能是一种兼职,但就跟其他事业一样,他有收入,也必须付出费用。这项事业的收入是你操作创造的利润。费用则是所缴的经纪商佣金、收集资料的花费。操作事业可以是非常赚钱的事业。但在人们心中,他也是一种很危险的事业。所以必须支付的损耗相当高。金额不大的操作损失,就是你必须付出的一定的损耗,为的是防备巨额损失。避免发生巨额损失的唯一方法,就是承受小损失。小额损失是从事这一行的成本。我们不应该因为发生小额损失而感到痛心。我们应该把它们视为营业费用。如果我们不愿付出这种损耗,那么我们实在应该从事分析较低的事业。操作时只有一种无法原谅的错误——那就是让小的损失演变成大损失。稍后你会知道,N字操作法会告诉你怎样设定止损点。对不同的操作则来说,止损点也许不尽相同,因为止损点要依据这个问题:“到那一点的时候,我不再要这笔操作?”我们这里所要讨论的不是止损点,因为到时候你自然知道要在哪里设止损。这里我们所说的要点是:你愿意一直做这种事吗?如果你不去做它——只要你不做一次——就有全军覆灭的风险。在市场中,“如果有什么事会出差错的话,就会出差错,那一次伤害你最深。”在市场中,这是很要命的行为。在市场中,我们可能做对一千次,只错一次——而就是这次差错,我们的财富将减半,或甚至一扫而光。因此,投资者光是积极缩减亏损是不够的。他们应该了解,认赔小钱是每天日出日落之间、进场出场之间,永远必须身体力行的事。不管有什么理由,都不能例外,不能偶尔不做。我们一旦想开先例,让亏损扩大,我们就一定会找理由这么做,而这些理由又看似冠冕堂皇和合情合理。\n\n 所以说,我们必须记住,永远都不能有例外。我们总是要只赔小钱,不让它们扩大。即使诱惑很大,我们也不容许有一次出轨。我们还没提到,成功的操作者在任何情况下,都不会“摊平”,也就是在原本亏损的部位再加码。为什么原本亏损的部位还要再加码?我们怎能用那种方式来应对市场呢?我们唯一要增加进货的部位就是那些已经赚钱的部位。如此,我们才算是随势操作、跟着市场所走的方向而走、乘胜追击、臣服于大势之下。你有没有看过下列的现象?操作者建立了某个部位,然后才发现市场走势对他很不利,于是他抱紧部位,期待市场不会恶化,同时死也不肯承认市场已经恶化。\n\n在我们发现自己正在期待市场出现某种事时,立即平掉部位,会是最保险的做法。\n\n 唯心运做的方式很奇怪。往往大势不利某个部位时,我们心理还是不觉得自己真的赔了钱,除非我们拿起电话,把头寸平掉。这还用说吗?钱早就赔掉了。由于我们不肯轻易承认自己的错误,而且不肯在错误时放手,所以我们几乎不可能一直在市场中获利。当代一位最伟大的操作者说过下面这些话:“你可以做错很多事,但只做对一件事——也就是赔小钱——便能在这一行中赚很多钱。”\n\n 有位操作非常成功的朋友告诉我,他最初的两年只是学习了一件事情——怎么样迅速脱手赔钱的部位,而且这种部位出现一百次,就做一百次。在我们这个时代可算是最伟大的一位操作者这么说道:“操作的秘密——在于你怎么出来错误的部位,而不在于你怎么处理赚钱的部位。”另一位极其成功的操作者也说过:“最重要的事情上保本——赚钱的方法是认赔许多小钱。”认赔大钱会让我们万劫不复,认赔小钱却不会。如果我们针对这么想,而且市场对我们很不利,为什么我们还要待在里面?如果它又会对我们有利,我们总有机会再回去。这件事情看起来似乎连五岁小孩也懂,但是你一定会跌破眼睛,因为我看过许多操作者一再违背认赔小钱的法则。\n\n 说穿了,就是这么一句话:别烦恼所赚的钱,该注意的是损失。\n\n 如果你能照料赔钱的部分,赚钱的部分便会照例自己。根据我的经验,我只认识一位非常成功的操作者,他不使用止损点,而且作风有点像是营业厅里的快枪手。\n\n 其他我所认识的人,则是使用止损而经常获利。我相信,其中一定有什么道理存在。\n\n 曾经在市场中持有头寸的每一个人都知道,一旦你拥有了头寸,你就会变得无理智和不客观,而显得比较情绪化和主观、唯心。一旦我们进场,我们就困在其中;我们会开始找证据来证明自己是对的。我们被那个头寸牵着鼻子走;恐惧和贪婪会爆发。我们在场外的时候,头脑会十分清醒,如果我们错了,这是决定退出的最好时刻。因此,设定止损点的目的,是要在激战当中,强迫我们在必要时做出退场的决定。如果没有止损点,则在头寸开始变得对我们不利时,我们会受到很大的诱惑,抱持“观望”态度。然后我们便不再去对市场有任何反应;接着我们会说,自己的意见比发生的事实还重要。灾难随之而来。如果没有止损点,我们就像处在狂风巨浪中,一艘没有指南针的小船——我们很容易成为情绪和推理的牺牲者。\n\n 使用止损点的第二个重要理由是,它们在市场中行动的速度要比我们快很多。即使我们只花十五秒便能在营业厅中执行单子,碰到市场瞬间对我们不利时,几秒钟的时间会像几小时那么难熬。而这又假设,我们最好不要碰到延误或有问题的状况。在市场突然暴涨或暴跌的场合中,设定十分妥当的止损单不知救了我多少回。”设定好的止损单是无偿之宝。操作时千万不能没有止损单。没错,营业厅操作员知道在何处设止损,而且,他们也到处找止损。这没关系,止损的好处远超过它的坏处。没错,当市场真的开始发动时(而这也正是我们想进场的时候),营业厅操作员的确很难找到止损点。这时,市场的动力太强,设定止损不易。\n\n 我见过有些操作者不设止损的理由,是因为“我不想止损出场”。但这也正是止损的要点,也就是在价格对我们不利时,赔点小钱出场。如果价格又转而对我们有利,我们总有机会再度进场。操作者所犯的最严重错误,就是让小损失变成大损失。不设止损的话,这种情形发生的可能会高出许多。止损一旦设定,就应永远维持。除非市场是朝操作的方向,否则止损点不应该移动。要不然,当初何必设顶止损点?如果你使用的是当交易周期止损(也就是在当交易周期结束时消失),那么你在隔天开盘前,就应设定下一天的新的止损,价格相同或更好(也就是朝操作所需的方向移动停损)。千万别往后调整止损点,或取消止损。\n\n 止损所设的位置应该在损失发生时,金额不足除处。所设止损如果会发生大损失,就失去设定止损的本意。我们这个时代一位最聪明的操作者说:“损失不能大到令人心痛的地步。”\n\n 操作时最武断的事情,莫过于太早获利了结。我们这么做,应该赚的没有赚到。我们这么做,等于是说涨了这么多,“应该”足够了,此处“应该”会反转,“应该”马上掉做头。因此,我们的问题是:“何时获利了结?”最不武断的方法,是让市场告诉我们怎么做。曾经有多少次你在获利了结之后,眼睁睁地站在场外看着大盘上涨?如果我们只是设法对市场做出正确的反应、追随市场,那么在应该退场之时,事情会变得很明朗。我们必须一直往上设止损,直到市场反转对我们不利,把我们带出场为止。记住——使用止损,而且从不冒大风险,我们的亏损次数会跟获利次数一样多,甚至于损失次数多余获利次数。但是到年底结算时,我们能够获利的唯一方式是,平均获利高于平均损失。这种事之所以发生,只能靠几次非常赚钱的操作。只有追随长期趋势直到趋势结束,才能大赚一笔。\n\n我们应该在何处退场?答案似乎很奇怪:别去决定何时退场,等待市场给出的信号。我们所犯的最大错误是,每次都不肯认赔小钱。如果我们不这么做,我们根本无法生存下去。我们所犯的第二个错误是,不肯随势逐流。我们所犯的第三个错误是,不去赚大钱。\n\n有时我们跳进突然形成趋势的市场之后,由于走势十分强劲,反转不够严重,不足以把我们甩下列车,因而我们乘风扶摇而上,直到头部反转后才把我们逐出场。但是,即使十分良好的趋势,也经常有相当显著的转折,让我们跳下列车。这时候我们该怎么办?\n\n这是N字操作法的美妙之处——他就是那么简单。只要不断更新市场每天的信号,市场就会告诉你何时或应不应该重新上车。如果信号情形显示,市场最有可能的方向是继续原来的方向,那么请再上车。别害怕太快下车,或太快重新上车。增加头寸好不好?头寸要不要增加,应以原先建立头寸时的方式思考。你怎么知道价位该不该增加?只要看看你的双重映像图,并依据市场告诉我们他的情形为依据,而问这个问题:我要不要增加头寸?\n\n我们真的想增加头寸的时刻,应该是市场出现结构时。那么,我们怎么知道那些波动算是难得一见的大波动?要知道这件事,我跟我们知道市场正在上涨的方法一样——因为他正在上涨。我们之所以知道市场发生大波动,是因为他本身就是个大波动。我们发觉大波动出现时,应该加码操作,尽量从中获利。当然,我们希望每一个新部位设定不同的停损点。\n\n 我们必须知道市场什么时候给出我们信号了,我们必须冒着小的风险去接受更大的利益。当然我们也不能太贪婪了,市场给出了我们平仓的信号,我们就应该遵守自己的纪律,不要多市场有更多的幻想,平掉手中的头寸,等待下一个信号\n趋势为王\n\n 趋势不是在一个单独的时点能够看出来的,是在连续的时间下的价格变化的方向。不同的时间结构下有着不同的趋势,而你能在什么时间结构的趋势中稳定赚钱,这是最关键的。如果你习惯了半小时图,那你就在半小时图中交易,没有必要改变你的习惯。因为赚钱是你在市场中交易的唯一目的。(如果你最主要的目的不是为了获利的话,你现在就不用再看这本书了。)当你选择好了时间结构,你也应该知道趋势是在发生、发展还是结束,并且在每个阶段都有可以交易的位置。市场波动的越快,越有可能一直下去,因为在快速移动的市场,反映人们对市场向这个方向认同度的意愿最强。市场本身会不会告诉我们,何时上车的呢?会的,我寻找市场给我们的提示。这各种提示中,每一种都会很明显地出现你的K线图上。每一种都显示市场正在做某件事,而这些事会指出它正朝既定的方向前进,而且在前进的背后,具有某种力量。\n\n 提示1、突破提示。\n\n 市场涨到图形中以往许多高点或所有高点之上。或相反的,在做空时,市场跌破图上可见的许多低点或所有低点。两种情况都显示,这波移动的背后,有足够的力量推动价格进入新的境界。突破前的盘整时间愈长,移动愈显著。换句话说,市场突破近六个月的所有高价,比突破近三个月的所有高价还显著。\n\n 提示2、趋势改变。\n\n 市场突破明确的长期下跌趋势,而且新的上升趋势又攻克以前几个高价。要使市场从长期确立的下跌趋势扭转,需要很大的力量。新的上升趋势因市场一再涨愈新高价时,这是很显著的行为。放空时,则要寻找上升趋势扭转为下降趋势的情形。\n\n 提示3、缺口或当日高低价差大。\n\n 市场本来相当沉闷,但突然之间跳空向上,或当日高低价差显著增加,显示市场已经苏醒,某种事情正在发生。特别是如果与提示1 和提示2 一起发生时,尤为重要。做空时,则要留意跳空向下的情形。\n\n 记住,我们所求的无非是每天赚钱。我们不希望只运用N字操作法于任何市场,而是想运用他在发生某种情形的市场中操作。我们之所以知道市场正在做某些事,是因为他们已经在做某些事了。有时候,你会见到这些线索出现,然后无疾而终,让你赔了些小钱。我们早知道,这是必要的费用就相当于“保险费”,但你会发现,只要你有足够的耐心,而且谨慎选进场时机,你会使每天赚的前达到最高水准\n战略与战术的关系\n\n 赔钱的部位绝不要加砝码或者“摊平”。如果你操作的是赚钱的部位,那么在那个时点你是对的。如果你操作的是赔钱的部位,那么你在那个时点你是错的。如果你错的话那么唯一的问题是“你会错多久?”唯一的答案是你会错到部位转为赚钱,或直到止损触发为止。事情就是这么简单。如果你已经错了,只有两种做法使你错得比目前更离谱。其中之一是增加错误的部位,其二除非是朝操作所要的方向,否则绝不取消或移动停损。你会想朝操作反方向移动止损的唯一时刻,是操作部位发生亏损,而且市场对你不利时,在这个时点你是错的。你会错得更离谱的第二种方式,即是移动止损,导致你的操作赔更多钱。请记住,你最后一次真正客观的时候,是在进场之前,决定止损的时候。如果你移动止损,那么期待之情便完全压制住你冷静且算计妥当的客观性,而且你不再是个理性的操作者。恐惧可以发挥很好的效用,贪婪可以构成障碍,但期待之情一旦占上风,却会使人万劫不复。\n\n在开始操作或加码时,绝不能不同时设止损,以便在你万一差错时,你能出场。 在你开始操作之前,先决定你愿意错多久。这句话的另一种说法是:“这笔操作我愿意赔多少钱?”在你进场之前,必须做这个决定,因为只有在进场之前,才能做出客观的决定。一旦你处在市场之中,你就不再客观的了。你已经建立了头寸。现在,期望跟你冷静而计算妥当的客观性相互缠斗。这世界上绝没有精神上的止损这回事。除非把止损放进市场中,否则止损就不算是止损。\n\n我们战略必须得当,而战术允许失误;不能让战术失误演变成战略失误。绝不让合理的小损失演变成一发不可收拾的大损失。情况不对,立即退场,留得青山在,不怕没柴烧。万劫不复的亏损都可能发生,只要一次。只要你有一次“犯规”那么就是这一次。市场会严重烧伤你。真正的答案是,市场是个强敌,是在竞技场中与你搏斗的勇士。跟真正的斗士一样,你一犯错,它就会趁虚而入。只要你松懈一次,它就会攻击你脆弱的部位,让你血流如注。许多优秀的操作者日进日出,严守这些成律,时时保持警觉。然后突然有那么一次,他们肯定自己是对的时候,而违反其中一条守则,丢下警戒,开始期待,然后就是血流如注。短短几天内赔掉的,可能比一年赚的还多。我所知道有许多操作者,包括我自己在内,只因此一次的松懈,便赔掉所有的钱。我从没有见过,有人因遵守这些戒律,把裤子也赔掉的。从没有人因被小针刺一下而流血致死的;要命的伤口才会如此!深长的伤口才会要人命。\n\n将交易损失控制在战术的范围内。一笔操作或任何一天,不要让自己亏操作资金赔的大伤元气。由于建立头寸占的仓位很重,即使止损点很接近,许多,一天之内,这仍可能导致交易资金的安全。由于仓位太重,所以这种事情可能发生。有时候,你买的所有东西都齐步下跌,你卖的每样东西都并肩上杨。请记住,操作应该是一件快乐的事。为了享受快乐,任何时刻都不要冒着亏大钱的险去博取收益。也许你对99次,第100次你就赔掉99次赚来的钱,甚至把原始资本都赔到一分不剩。\n\n别去抓头部和底部,让市场把它们抓出来。想去抓的人也抓不准。多数操作者都想抓头部和底部。多少操作者也都赔了钱!多少操作者之所以想抓头部和底部,理由有二——自负和贪婪。抓住头部和底部,准确的几率比你去买彩票还要小。每个人都知道这种事。你的敌人也知道到这种事,他偶尔会让你抓准一两次头部和底部,好让你上瘾,继续做这种事。这是种自负的旅程,好让你能告诉朋友:由于你敏锐地研判市场,你在低档买进了黄豆。这全是自负心里在作祟。你曾经有多少次买到最低点,而且真的抱着头寸,直到最高点才脱手?为什么不等反转确立呢?为什么要丢掉确立之前的所有利润呢?这全是贪婪在作祟。你有多少次因为不肯等候而赔了钱?即使你格遵循前面的所有守则,但不顾这条守则,你仍然会赔钱。\n\n别挡在列车前面。如果市场往某个方向爆炸性发展,千万别逆市操作,除非有强烈的证据,显示反转也已发生(请注意,是已经发生,而不是将发生或应发生)。超买的市场绝没有不能再涨的理由。卖超的市场绝没有不能再向下的理由。这是敌人喜欢布置的陷进。把一张非常具有方向性的市场图拿给五岁的小孩看,问他明天要站市场的那一边。这位小孩根本不懂什么叫买超、卖超,什么叫支撑、阻力,更别提更高深的技术分析。他不知道是曾经涨得躲高,曾经跌得多低。拖对什么叫基本面一无所知。他没有操作者背景和经验。那么他会怎么告诉你,说他要站在市场的那一边?这就是那么简单——别战争列车前面。\n\n保持弹性。记住你可能会错,世界上任何事情可能出差错。但你接受少数大的收益,将远远大于你止损所带来的损耗。做对的次数愈多就愈容易失去弹性。你连续赚六、七笔操作之后,这时你难免洋洋自得,使做法失去弹性。这就是你的大敌(也就是市场)等候你这么做的时候。他会跟你要回以前所赚的钱,外加一点“鲜血”(原始资本)作为利息。\n\n操作不顺时,不妨缩手休息。如果你一再发生亏损,请退场到别的地方去度假,让你的情绪冷静下来,不要孤注一掷,等头脑变得清醒再说。多数操作者之所以会赔钱,其中一个理由是,不受约束的途径走起来最轻松。当你的资本刚刚暴跌时,要放手一段时间是件相当难的事。这种时候来临时人们往往会坚守城池,奋战到底,直到反败为胜——谁笑到最后,谁才笑到最甜。你不愿承认自己最近所做的每件事都错了。你会告诉你自己,战斗还没有结束,这只是一时的挫败而已。以前你也曾经迅速扭转乾坤,这次你可以再来一次。现在就放手不等于承认失败,而且从头再来时,本钱会少很多。敌人喜欢更有这种心态的操作这玩游戏。现在,操作者处于劣势。由于操作者受到很大的压力,必须迅速反败为胜,所以他比较难以保持客观的态度。他会冒平常时候自己不肯冒的险。现在他非常可能舍弃十大守则中的一些守则。不管操作者自己有没有想到,他现在的心态不是真的相信自己会赢,而是希望自己能赢。在这种情况下,很难要他缩手、度假、承认失败。但这是极少操作者能赢的理由之一。这也是最难走的路\n学会放弃\n\n头部和底部是技术操作者永远没办法抓准的东西。为什么?因为所以的操作者都想抓准头部和底部。操作者都想抓住头部和底部,造成一败涂地的人俯拾皆是。他是一种武断的做法;是一种唯心的思维;而且不甘臣服于市场。抓头部和底部,等于宣告:“我懂得比市场懂得还多……我懂得比其他操作者还多。我比其他人聪明。”这未免太自大了。夜郎自大的人可以赢一阵子,但随后他们就跌得鼻青脸肿。到年底算总帐而赚钱的人,都是那些对市场抱着谦卑态度的人。\n\n 开门见山地说,务必请忘掉头部两个字,忘掉底部两个字。操作的时候,务必把目前的趋势看作永远不会结束!这教你钳口嚼舌吗?用另一种方式来说:你应该让市场证明他已经做头部或见底反弹。N字操作法总是猜不准头部和底部……但是头部或底部真的发生时它会告诉你赶快建仓和平仓。\n\n 我认识一些操作者,他们偶尔能够抓对头部和底部,并因此沉迷其中。他们真可说是陶醉于其中。他们没有办法不去做这种事,就好像他们的生命全部都系于此。请你扪心自问:我在操作的时候是不是能够忘掉头部和底部?如果答案是不能,那么请帮自己一个忙;现在就放下这本书,缩手别去操作。除非你十分富有,否则你不能养成这种习惯。良好的操作这会善为掌握方向和期间,而不是转折点。\n\n \n\n “我们来谈谈头部和底部。(也就是反多为空或反空为多的时点)请看下图:\n D\n\n\n E\n\n\n\n\n A\n\n\n C\n\n\n B\n\n\n\n事实上,我们所有的钱都是在c 和E 之间赚到的,为什么?首先,我们绝不会想在A 买进。当价格仍在下跌的时候,我们就做多?操作者就像流浪汉。现在他想去一个目的——是现在位置的西边,他会不会搭上往东的火车?却又希望他回头。当然火车不会往西开的。他一定得搭上往西的火车。这位流浪汉怎么才最能知道火车是往西开?无疑的,火车正在开动时,他最能确定。等火车正往西驶离月台时跳上火车。\n\n流浪汉想要搭乘一列往西的火车,如果他不幸搭上往东的火车,那么势必要等火车慢下来、停止、掉头,然后加速往西走。但是这事未免太荒谬。为什么他一开始就跳上正在往西走的火车。\n \n再笨的流浪汉也不会做这种事,但是我看过许许多多操作者却是那么做,也就是在A 点做多。我自己就曾经做过许多次,而且许多次都付出了代价。我之所以会那么做,是因为我听过,你应该逢低买进,可是这绝对很荒唐。我之所以会那么做,是因为一些分析师告诉我,价格即将反弹。我之所以会那么做,是因为我觉得,价格已经“跌够了”或“跌得够多”。如果我们能够十分肯定底部B 已经不远那么在A 点买进还不算太坏,但事实上在许多例子中,B 仍然离得很远。我们曾经由多数在市场下跌时做多,然后只能祈求市场见底反弹?”在B 点做多不见得好,因为在大盘涨到C 之前,我们无法肯定B 就是底部。B 或许是底部,但大盘可能又再次长期下滑。我自己就碰到过许久这种情形。\n\n 即使后来证实B 的确是底部,这种操作还是很烂,因为只有在大盘涨到C 时才证明B 时底部,因此,在B做多,不就是预测大盘的走向,而这并不是聪明的做法。(是的,有时候可以预测得很准,但这仍不是明智的做法,因为追随市场更为有效。想去预测市场,心态已然不正。)顺势操作的意思是指“见强买进,见弱卖出”。\n\n 因此,正确的做法是在C 做多,也就是说,等到市场完成反转,并且已经往我们所希望的方向蓄力前进之后再买进。(火车已经往西开动,我们才跳向移动中的火车。为什么?因为确实知道市场准备上涨的最好方式,就是看到它已经在上涨。)\n\n因此,别去抓头部和底部。且让它们自己去抓自己。为了帮助我们清楚地记得这一点,不妨记住下列说法:想抓头部和底部的人,最后都会抓到大白鲨。\n\n 除了骗子之外,我不相信有人能抓到头部和底部。我们只需要设法赚一波中间的一段。如果能做到这一点,我认为以及足够了。这件事情,换成另一种说法是:绝不要寻找市场的反转点,也不需要去试图交易到所有的趋势。你只要跟随价格目前的走失就可以了。顺势而为。连寻找反转点的念头也不能有。我曾经弄了一大对数字拿去电脑分析,这些数字都跟以往赚了很多钱的操作有关,我设法把自己曾经有过的投资点子明确化,并用电脑来测试。我发现,人们认为管用的事,很少好到可以赚钱。现在,如果要我向你解释市场上什么管用、所跑出来的数字有什么意义,我要说:“趋势是你的朋友。”\n\n 前文所述的一切,其意义是,唯一要紧的是价格。我们在看市场的时候,其他恭喜根本无关紧要,因为所以东西都反映、总结、吸收在价格之中。没错,就是所以的东西。\n\n 如果流浪汉要搭上开往西部的火车,他所要看的唯一件事,就是火车正朝哪个方向走,以及速度是不是够快,显示它真的往西走。他不需要知道火车是怎么制造的、它载了多少旅客,或是它用何种动力。这些事都无关紧要。他所要看的,只是它的移动状况而已。交易就是这么简单,只要看到火车开的方向\n摈弃赌徒思想\n\n 在市场上成功的所以必要知识,我们都可以拥有。我们能够知道,做那些事才是对的。一百次里面,我们可以又九十九次做出对的事。但是,我们会有一次松懈警戒,连以前所赚的赔完了还不够。这就跟错误的思想观念有关。我们必须摈弃错误的思想观念。他可以明确的判定谁输家。任何人带有错误的思想都不可能在市场中长期获利。操作时,他不能保证你赢利,但是他可以决定你最终一定失败。\n\n 你可以长时间严守纪律,但仅仅有一次发现了绝佳的操作机会,也就是千载难逢的机会,价格一定回到某的位置,于是你操作时难免意气用事。你自己认为这是一笔赚大钱的绝佳机会。你希望自己一战成名,从此可以傲视群雄。在这种你所认为的利益和你自己的虚荣心下,你决定背水一战。如果你自己认为为了名誉去拼一把,你最终会把投机当成一种赌博。你应该知道从赌场出来的人,口袋都是空的。往往这时价格和你开始确定的位置越来越远,你此时的心情是价格一定还会回头的,并且摊平成本,等到价格到了我的成本价格时,就平仓。事与愿违,价格仍然向着你操作相反的方向大步前进。当你的头寸彻底毁掉之后,你两眼无神,自怨自艾,宣称整个环境不是你所能控制,你的命运将有市场来决定。你会像中风般盯着屏幕,一有人过来便大吐苦水。你会在一个下午全数输光。这种事情迟早会呈现在每一个操作者面前,包括我自己。但是很幸运的是我醒悟的比较早,到现在我的财富是如此的多。所以,敬请各位在我身上吸取宝贵的经验。\n\n 在我当初摈弃了不留退路,希望一战成名或背水一战的思想之后。我就希望得到没有任何风险的机会——就是一种去抢银行也没有的风险的机会。为此我错过了一次又一次的机会,有的时候我只赚到少的可怜的钱。我通过交易赚的钱还维持不了我正常的生活。以前我欠别人的一屁股债怎么办,我现在的生活怎么办?我有开始思索,发现一个再简单不过的道理——天下没有免费的午餐。我必须冒着风险,才能够获得大的收益。我学会了如何在市场中保存自己的实力——止损,如何选择进场的机会——判断价格结构\n转贴』巧用均量线和KDJ\n\n 在股市操作中,一直存在着技术派和基本面派两大操作流派,因各自的优势不同而表现出不同的使用价值。私募基金的出色成绩已经证明他们对以价、量、形、时为核心的技术理论的神奇领会。如果说市场处于熊市时,挖掘一些基本面好,能够更好地规避大盘下跌的风险,那么,市场转折步入牛市,要想捕捉涨得快、涨得高的股票,就要借助技术分析了。 \n\n 这里面给大家介绍一招最简单,也最实用的捉牛术:均量再破顶、KD两金叉,巧用均量线和KDJ。 \n\n 用KDJ指标+成交量均线去把握个股的短期走势,成功率极高,而且收益也相当不菲。使用方法:首先看成交量,5天成交均量线下穿10天均量线,在10天均量线下方蓄势,KDJ指标出现第一次低位金叉, K值越低准确率越高。此时,只要一根阳量柱向上顶破5天均量线,就要注意,买入机会即将出现。但需要指出的是,有时候量能持续不够,那么短期之内还可能第二次出现一根阳量突破5天均量线,KDJ在低位二次金叉,这时往往是最佳的买入时机,随后就是拉升。 \n\n 例如,中国国贸(600007),该股在2005年7月19日至9月初出现了一次中级行情,启动前就出现了这种特征。7月12日KDJ第一次在低位形成金叉,K值只有6,同时当天的成交量放大突破了5天成交均量线,但是和前期相比放大并不明显,所以随后股价出现二次回落,埋下爆发伏笔。7月21日再次低位形成金叉,成交量迅速放大,最佳的介入良机出现,随后股价连续上扬,最高上摸5元以上,涨幅35%。 \n\n 去年的大牛股G天威(600550)在出现翻倍行情前也出现这种特征。2005年1月21日,该股跌破年线后,KDJ在低位形成金叉,K值从22到44快速向上,量能也突然放大,向上突破了5天均量,一阳吃三阴,与中国国贸不同的是,量能持续放大,强势必现,没有二次回压,一年几倍的行情从此启程\n\n\n
2008-12-09*作者/朱芷君《康健》\n\n人人都會過敏?其實這不是危言聳聽。\n每天早上起床就打噴嚏,臉上帶著不會消褪的黑眼圈?這是過敏。\n不小心吃到某些食物,立刻上吐下瀉,腫成豬頭?這是過敏。\n新搬了辦公室,突然長出一大片蕁麻疹,癢到不行?這是過敏。\n咳嗽咳了幾個月,時好時壞?這不是感冒,是過敏。\n過敏背後,是身體內一連串複雜的免疫機制,依據免疫反應異常的類型,導致的症狀和疾病大不相同。有些過敏只會短暫出現,有些則可能持續一輩子,即使同是天涯過敏人,嚴重度和病程也不會一模一樣。\n遺憾的是,目前能一舉殲滅所有過敏的神藥還沒發明。\n「那《康健》能幫我甚麼忙?」或許你會質疑。\n的確,我們不能替你止癢消腫、不打噴嚏,但在尋訪專家、研究各方資料後,我們確信能做到:\n#釐清過敏的真相。分辨哪些人說的是真話,哪些人只想賣你產品。\n#比較各種療法,在能力範圍選擇適合自己的抗敏對策。\n#了解減少過敏的生活方式,更有信心與過敏和平相處。\n就算你是極少過敏的幸運兒,也能獲得在這大過敏時代的明哲保身之道。\n通常提到「過敏性鼻炎」時,我們會認為過敏是一種「疾病」,但在形容「對海鮮會過敏」時,過敏又成為一種「體質」。\n為什麼過敏的定義這麼曖昧?得先了解過敏在免疫系統主演的故事:\n每個人體內都有個免疫王國,負責抵禦外來物質如入侵。王國由Th1、Th2淋巴球細胞共同統治,下面統領著一群軍隊(包括B細胞、殺手細胞等),主要的武器則是抗體(即免疫球蛋白immunoglobulin,簡寫為Ig)。\n正常狀態下,免疫軍隊是由Th1主導,當有細菌病毒入侵,Th1就發號施令,讓B細胞製造IgG展開一連串的防禦行動,消滅敵人。通常這個過程並不會造成傷害,還能讓人免於生病,所謂「抵抗力好」,其實就是Th1免疫反應的功勞。\n如果Th1力不從心,換Th2當家作主時,問題就來了。相較於Th1,Th2就像昏君一般分不清敵我,即使對身體無害的灰塵、花粉、塵蟎等進入體內,Th2卻以為它們是敵人,不但下令進攻,武器還換成殺傷力更大的抗體IgE。 \n當過量IgE刺激化學物質釋放,造成微血管擴張、平滑肌收縮,便會引發皮膚、呼吸道、腸胃等不適。\n這種由IgE引起的過度免疫反應稱為第一型過敏(全身性過敏反應),一般人熟知的異位性皮膚炎、氣喘、過敏性鼻炎等,都是第一型過敏的臨床症狀。\n特別容易被過敏原影響,出現第一型過敏反應的人被稱為異位性體質,他們通常Th2免疫反應\n比Th1強,體內IgE濃度較高,對外來物質很敏感。\n\n''過敏全是天注定?''\n\n異位性體質和遺傳有關,根據統計,父母其中之一過敏,小孩過敏的機率約為48%,如果父母都過敏,機率將升高到70%。\n不過有異位性體質,未必一定會出現過敏症狀,還需要其他條件配合。\n先進國家過敏人口激增的現象顯示(台灣過敏兒20年間增加8倍),「環境對過敏的影響可能超過基因,」台大醫院小兒部主任、台大醫學院臨床醫學研究所教授江伯倫指出,包括過敏原增加、環境污染、壓力、飲食生活西化等,都可能促使免疫系統失衡,引發過敏。\n他並觀察到,台灣年輕女性罹患慢性蕁麻疹有增加的趨勢,即使沒接觸到過敏原,情緒緊張、溫濕度不適應就會發作,和遺傳性過敏的機轉不盡相同,反而受內分泌失調的影響較大,「未來的過敏免疫研究朝這個方向走。」\n因此小時候不是過敏兒,不代表一輩子高枕無憂。相反的,就算遺傳了過敏體質,只要盡量避開誘發因子、做好保養,將大大降低過敏的風險。\n\n''追查蛛絲馬跡,找出防禦工事''\n\n如果突然出現過敏反應,可從以下方向檢視,提供醫生診斷參考:\n*季節:症狀是否隨著季節變化出現(常見於昆蟲或花粉過敏的人)。\n*食物:吃哪些食物會產生過敏症狀,食用多久後會出現。\n*寵物:是否有養寵物,及飼養什麼寵物後出現過敏症狀。居住環境:密閉性高、潮濕的集合式住宅,比較容易孳生塵蟎。\n*職業:有些職場容易接觸到化學物品、油漆、香料等過敏原,長期接觸下來易誘發過敏反應。 \n\n''經過7變化,發生過敏''\n\n#過敏原入侵:外界過敏原如灰塵、毛屑等從眼、鼻、口進入體內。\n#淋巴球細胞認識過敏原:第一次接觸過敏原時,免疫系統的淋巴球細胞會記住它們,但不會出現過敏反應。\n#淋巴球細胞Th2敏感起來,加速B細胞製造IgE抗體:IgE抗體能存在體內相當久不會分解,準備對抗下一次過敏原入侵。\n#IgE抗體附著在肥胖細胞上:肥胖細胞內的顆粒含有豐富的媒介物質,在疾病和發炎反應上扮演重要角色。\n#過敏原再次入侵:當同樣的過敏原出現,很快就會和肥胖細胞上的IgE抗體結合。\n#肥胖細胞被活化:肥胖細胞大量釋放化學媒介物質包括組織胺。\n#織胺及發炎物質造成各種過敏反應:\n##微血管擴張→黏膜發紅、充血、腫脹。\n##感覺神經亢奮→打噴嚏。\n##黏液腺分泌亢進→流鼻水。\n##平滑肌收縮→氣喘發作,拉肚子。
大家知道美國有感恩節:也叫火雞節。 紀念印地安人用火雞拯救第一批從歐洲抵達北美快餓死的英國人。 野火雞當年在美國是很多的。\n\n以前北美有這樣一種捕捉火雞的方法:獵人置一籠子於曠野之中,門是捲起的:獵手先用玉米舖條路,讓火雞自然地順著玉米舖成的路跑進籠子裡。 通常籠子裡放的玉米比較多,火雞進籠子後不會馬上跑出來。 一旦進入籠子的火雞夠了,獵人就觸動機關,放下籠門,火雞就被關在籠子裡了。\n\n以下是一個真實的故事。\n\n一天,一位獵人早上去查看他的籠子,發現籠子裡有12隻火雞。 在他放下籠門之前,1隻火雞溜出了籠子。 “喳,我手慢了些:讓我等等看,看那隻火雞會不會自動跑回籠子來!”\n\n在他開著籠門等那隻火雞回籠的時候,又有2隻火雞跑了出去。 “見鬼,11隻火雞已不錯了,我怎麼會讓那2隻也跑走吶?現只要外出的3隻火雞有1隻回來,我就關門。”\n\n很快,又有3隻只火雞昂然地離開了籠子,接著又是3隻! 當籠子裡只有最後1隻火雞的時候,獵人毛了:“要麼1隻都不要,但如果有1隻回籠,我就關籠子,拎2隻火雞回家。”\n\n最後,這位獵人空手回家!\n\n有一定炒股經驗的股友讀這個故事里大約會發出會心的微笑! 這一心理過程對他們而言是非常熟悉的,每個炒股人都會經過這個過程。\n\n20無買好股票,定好18元止損,當股票跌倒18元時,你有沒有想想再等等? 或許股票馬上反彈! 股票又跌到16元,你會不會拍自己的腦殼說:“真該按定好的規矩辦!18元時就走人;現若股票反彈5毛錢我就一定說再見。”\n\n現在股票跌到10元了,你準備怎麼辦? 你會發毛嗎? 你會不會發狠:“老子這次拼了!現在就是不走,我倒要看看你最低會跌倒什麼地方?”\n\n當然,最後的結局很少例外,通常是股票學校又多了位交了學費畢不了業的炒股人。\n\n想知道這種情況應該怎麼辦嗎? 耐著性子往下讀! 我會一點點解釋人給你聽。\n\n以上我們討論了一些股市的特點及人性的弱點。 坦率地說,除了你自己必勝的信念之外,其他的一切幾乎都是反對你在股市成功,就算你的親朋好友,有多少人會鼓勵你靠炒股為生? 對那些只想在股市賺幾個零花錢的朋友來說,股市在開始時或許很慷慨,隨著時間的推移,你就會明白它向你討債是何等兇惡。 你在和一位巨人搏鬥,蠻幹是不成的,你要學習技巧,永不和它正面衝突。 你要了解這位巨人,熟悉它的習性,在適當的時機,攻擊它的要害。 只有這樣你才有勝利的機會。\n\n股市這位巨人很笨重,作為獨立炒手的你很靈巧,一旦發現你的攻擊無效,你就必須逃離,防備巨人的報復。\n\n炒股是很古老的行業,成功的先例非常多,這是不需要天才的行業。 最重要的是鍥而不捨的精神和戰勝自己的勇氣。 可以這麼說,識不識字和能否在股市成功沒有必然的聯繫。 當然,識字的總有那麼點優勢。\n\n你如果能在股市熬10年,你應能不斷賺 到錢;如果你熬了20年,你的經驗將極有借鑒的價值;如果你熬了30年,那麼你退休的時候,定然是極其富有的人。 要達到這些成就,必須有個前提,那就是你應當成為一位真正的炒股專家。 只有在你成為專家之後,你才可能不斷地從股市賺到錢。\n\n摘自陳江挺《炒股的智慧》
“投机小子”出道\n杰西.劳里斯顿.里弗莫,1877年出生于美国麻省西鲁斯伯提一个贫苦的农民家庭,他是父母的独子。14岁时(1891年)他离家前往波士顿在一家股票经纪行当行情报价员。里弗莫在学校只学习了三年算术,然而却对数字很敏感,心算尤为出色。每天行情报价后,里弗莫都要做大量心得笔记。15岁时,在对赌行(不进行股票实际交易只买卖行情数据)赚到了第一个1000美元。因为,善于在对赌行赚钱,人们奉他绰号“投机小子”。里弗莫20岁时在对赌行赚到了第一个10000美元,如果按5%贴现与现在204万美元相当。里弗莫赢利完全靠经验、灵感、直觉,或则说是天赋。\n由于,当地再没有对赌行让里弗莫交易,21岁时(1898年)里弗莫带2500美元独往纽约。仅仅6个月,在股票实际交易中输光全部资金。原因是买卖实际交割较行情数据传递慢,不能像在对赌行那样即时交割。游戏规则的不同,原有经验无济于事。短线交易的里弗莫为经纪行贡献不少佣金。不甘心就此认输的里弗莫向经纪行老板借了500美元,特意到圣路易斯对赌行交易,两天内赚了2800美元。圣路易斯对赌行意识到善于赚钱陌生年轻人非“投机小子”莫属,拒绝再让里弗莫交易。回到纽约,里弗莫立即归还了500美元借款。稍后,里弗莫在对赌行又赚5100美元,担心被对赌行人认出引起不必要的麻烦,让其他人出面按其指令交易在对赌行里又赚取了2800美元。\n\n再次赔光\n1901年5月9日,里弗莫拥有5万美元。当时两大金融巨头正在多空搏杀,市场震荡剧烈。里弗莫惊人地预料了行情演变,然而却赔光了。又是场内成交与行情报价不同步造成的。为什么不限价报单呢?里弗莫懊恼极了。秋天,里弗莫返回了家乡。“投机小子”是无法进入当地对赌行的。里弗莫故伎重演,让朋友替他进行交易。很快,当地对赌行发现了里弗莫的秘密。\n不能在对赌行赚钱,里弗莫只好到一家以侵吞客户保证金的骗子经纪行进行交易,里弗莫有意多次小额输钱使骗子们放松了警惕。里弗莫特意买了部电报机指令纽约场内买卖一只流动性极差的小盘股,里弗莫的虚拟交易立即获利颇丰。里弗莫马上跑到交易大厅在人群中大喊大叫要求兑现赢利。担心骗局戳穿,骗子们违心的极不情愿地付给了里弗莫赢利。一年后,里弗莫又回到纽约。\n\n第三次翻身\n1906年,里弗莫拥有的资金已经可以随意花消了。里弗莫喜欢研究股市行情,对交易报表、铁路收支及各种金融和商业统计感兴趣,仔细研究了1906年的形式,里弗莫认为资金市场前景堪忧。因为,国外几个地方在打仗,国内旧金山大地震以及其它灾难┅┅到处需要资金。做空无疑是正确的选择。股市跌了又涨,再跌,里弗莫入场了。股市稍微下跌,竟然来了个大反弹。无乃,里弗莫只好平了空头头寸。否则,只能清仓出局。里弗莫只剩下微薄的保证金。终于,股市再一次暴跌,里弗莫倾囊投入。老天再一次开了个玩笑,股市又一次反弹。这回,里弗莫破产了。趋势!还是趋势!让里弗莫终生刻骨铭心。多年的信誉,里弗莫知道经纪行还会给他一次交易机会。里弗莫在市中心广场散步时无意间看到了两家蓝筹铁路股增发股票的广告,竟然允许投资者分期付款──资金匮乏的信号!机会是否开临?几天之后,有人拿一家新股发行的告示,交款时间要比已经宣告的两家蓝筹铁路股还要早──意味着市场资金匮乏确凿无疑,里弗莫毫不犹豫行使了唯一的交易权。无论是否偶然,转瞬之间里弗莫恢复了声誉和信用。在以后的空头交易中,里弗莫赚了75万美元。\n\n青史流名\n1907年9月,里弗莫的股票保证金有50万美元。当时的情景,资金越来越紧张,贷款利率越来越高,股票价格越来越便宜。1907年10月24日,资金市场挤满了拆借资金的人们,里弗莫握有大量空单并有数额不少的保证金,在其他人拆借资金无门的情况下有人愿借款给里弗莫。只要里弗莫再轻轻一击,多头将全部破产,股票市场将陷入瘫痪。有德高望重的资深人士善意规劝里弗莫,不要再出击了。然而,出人意料的是里弗莫已经悄然回补。里弗莫的回补行为立即使市场价格回升。里弗莫仅仅赚了一百多万美元,要知道这次时机可能赚上千万美元。在以后的9个月里弗莫再也没有做空。在这次由亨茨操纵联合铜矿股票引发金融危机事件中,里弗莫认为:最大的收获并不在于赚了多少钱,而是摆脱了赌博游戏,学会了如何计划,能理智地交易。是生命中最有意义的一天。\n里弗莫说:“如果我们认识到了自己的错误,那么比我们分析成功的原因更有好处。”\n\n狡猾的一次期货交易\n1907年10月前,里弗莫在已研究很长时间的谷物期货上,各持有1000万蒲式耳的小麦和玉米空单。当里弗莫股票全部清盘,准备旅行度假时发现小麦暴跌有很多浮赢,而玉米却有更多的浮亏。原来有人在操纵玉米价格,当时尽管有大量的玉米在农民手中,可是就是运不出来。里弗莫收集了大量谷物新闻和小道消息,发现玉米做多操纵者还持有大量燕麦多单,而另一金融巨头持有大量燕麦空单,两人素有积怨。于是,里弗莫在几家经纪行抛出几笔燕麦空单。市场其他参与者认为里弗莫要同其他金融巨头联手做空燕麦和玉米,便纷纷抛出燕麦和玉米多单。结果,里弗莫顺利地平了玉米空单,在小麦和玉米上总体而言略亏。\n\n煎熬岁月\n里弗莫的交易方法,只在赢利的时候才投更多的资金,而错的时候只亏一点试探性的资本。\n1908年秋天,里弗莫在小麦和棉花作多。结果,市场小麦上升棉花下跌。鬼使神差,里弗莫在期货小麦上止赢离场,在期货棉花下跌过程中加量买进。当里弗莫意识到与自己的交易理念相拧时已经太迟了,90%的资产付之东流。可是,祸不单行,时运不济的里弗莫突然生病。对市场缺乏灵感的里弗莫频频失手,债台高筑。大名鼎鼎的里弗莫破产了!\n里弗莫离开纽约到芝加哥寻求资金。一天,接到朋友电报,说纽约有人想马上见他。\n里弗莫又回到纽约见到一位经纪商──丹•威廉森。威廉森说有几位大客户买卖交易量很大容易引起市场注意,如果里弗莫能在这充当经纪人,就能够避免市场人士猜想,并且威廉森愿意提供给里弗莫交易资金。望着卷土重来的机会,里弗莫能拒绝吗?在以后的日子,匪夷所思的是威廉森有时平掉里弗莫的股票并不计较输赢。而事实证明里弗莫判断并没有错,交易一段时间后,里弗莫恍然大悟。原来威廉森的背后老板有一大笔2亿美元的金融资产需要在市场兑现,担心善于做空的里弗莫在其他地方交易会影响其资产兑现,于是将里弗莫笼络在可控制范围内。知道了事情真相的里弗莫有被戏耍的味道,只好泱泱不快地离开威廉森。缺乏激情的里弗莫竟然连续四个月没有挣到钱。万般无奈,只好把债权人召集到一起协商归还债务问题。除两名债主外,一名代表已破产的经纪行6万美元,一名只有800美元的债务,其他债权人表示宽限里弗莫直到有能力时。报纸对“投机小子”——里弗莫连篇累牍的报道,令里弗莫每每出门深感羞涩。接下来,煎熬的四年,1911年、1912年、1913年、1914年。\n\n东山再起\n直到1915年2月, 里弗莫感觉时机来临在数次求助他人出资无望的情况下,找到威廉森请求支持。里弗莫得到500股的行使权──作为股票投机者生涯中最关键时候到了。离开威廉森,里弗莫研究了一下形势,并特别研究了自己存在的问题。里弗莫认为:一个投资者,除了研究基本情况,牢记市场先例,把外界公众心理和自己的局限性铭记于心,还必须认识自己和清楚自己的弱点。里弗莫特意到了另一家经纪行,以免手痒草率入场。在以后的六个星期, 里弗莫一直静静观察贝恩勒黑姆钢铁公司股票──不断上涨的股票,一个又一个阻力位被突破,直觉告诉里弗莫,股票价格即将进入扬升阶段。里弗莫出击了,整整5年时间第一次品尝到了甜蜜的果实。到1915年底, 里弗莫的保证金已有14万美元。1916年,股市上升做多,股市回调做空, 里弗莫赚得300万美元。1917年初, 里弗莫还清了所有债务并希望补上利息,可是所有债权人坚决不要。\n\n 失败人生?\n里弗莫以卖空闻名,实际上也因卖空而聚积了大量财富。尽管美国证券交易委员会早就针对卖空制定了详尽的限制规定,但是里弗莫正当强大,就连他即将入市卖空的谣言也会真的引起股价下挫。到1925年,里弗莫的家当已超过2500万美元。他拥有豪华的曼哈顿公寓、欧洲别墅、长岛的度假房产、私人专列,还有当时鲜有耳闻的私人座机。\n 既富有又出名,他成为众矢之的。报界频频攻讦,称他为滥赌之徒、职业大熊、专事逆市掠夺的强盗。更糟的是他逆市操作却连连得手,加上他放荡不羁的生活方式,使他招致众人更多的嫉妒。\n 整个20年代,他出入市场,以卖空敛财。1929年,里弗莫预测到即将发生有史以来最伟大的熊市。9月,他完成了一次劫掠的预演。10月24日,市场出现裂痕;29日市场崩塌,财富在升腾的蘑菇云中瓦解、消散。里弗莫和其他几个人一直在放空。\n 拥有足够支持他再过几辈子长寿生活的财富,里弗莫继续留在市场游戏中。不幸的是,他的好时光流走了。\n1930年,情况改变了。说不清什么变化了,也说不清他头脑中发生了什么,里弗莫开始上手就赔。他有许多家务问题,也许影响了他。或者也象优秀的运动员,一旦到达顶峰,下坡路就快了。总之,里弗莫突然变成进入冬眠的大熊。证券交易委员会也改变了许多关于卖空的规定。以前这是一场“让买家小心”的游戏,现在却变成“让卖家小心”。又是:游戏规则的不同,原有经验无济于事。1931年底,里弗莫的一半江山易手。1933年,另一半也葬送了。3000多万看似稳操胜券的交易,竟然就这样亏掉了。\n里弗莫泥潭深陷。到1934年,他已酗酒成性。3月,里弗莫申请破产保护。他的债务高达226万,而财产却只剩下令人诧异的18.4万。\n为了应付难关,里弗莫于1940年出版了一本指导股票交易的书——《股票大作手操盘术》,但是显然晚了十几年。当他风头正劲时,可能会卖出几百万册,现在却没有人会喜欢输家。1940年11月的一天,里弗莫走进雪利-尼德兰酒店的洗手间,从口袋里摸出手枪,子弹从他的脑子打飞出去。里弗莫留下的字条上写道:我的一生是个失败。\n\n後記:據我們現在所理解的事實是:杰西里弗莫之所以會選擇自殺一途,並非投機事業上的失敗所導致。里弗莫在市場上的興衰史如此精彩,絕非是市場所能擊倒。據信里弗莫係因為患有嚴重的憂鬱症等因素,不能走出人生的陰霾所致。\n
*要說「我決定……」:例如「我決定要擁有一個健康、快樂的關係」、「我決定要升官加薪」。當你說出「我決定……」時會散發出強大的正面能量。\n*用「現在進行式」取代「現在式」:與其說「我擁有百萬財富」,不如說「我正朝向擁有百萬財富的方向前進」。因為當你說了一件不真實的事,會感覺自欺欺人,同時會產生懷疑的負面能量。\n*啟用「反問法」:當你聽到自己說「不」時,反問自己「那我要什麼?」與其想著「我不要過著貧窮、買不起奢侈品的生活」,不如告訴自己「我希望過著富裕,總是買得起各種東西的生活。」\n
文/洪蘭(陽明大學神經科學研究所教授)\n 朋友跟我抱怨,她畢業出來做事沒兩年的兒子,現在把工作辭了要出來自己開業。她擔憂地說:「現在不景氣,吃人頭路穩穩當當,每個月時間過去就有薪水拿。現在他要自己創業,我不能袖手旁觀不幫忙,又擔心我的退休金血本無歸,臨老要流落街頭,沿門托缽。」\n 我看她真的很憂心,就去找她兒子談。她兒子說他每天上班就頭痛、下班雙肩僵硬,他知道是壓力的關係,老闆喜怒無常,他覺得不只是把時間賣給了老闆,連靈魂都賣給他了,所以想來想去,決定自己出來創業當老闆,不必聽命別人。我問他風險,他說:「沒有失,哪有得?人總是去闖一下,才不負少年頭。」\n 我兩邊的話都聽了以後,決定回頭來勸母親,因為在實驗上有看到自主權對健康的重要性,很多研究都顯示在同一個緊張、快速、壓力大的辦公室中,職員得心臟病、高血壓的機率比經理高,愈有主控權的人,得病的機率愈少,人必須覺得自己是情境的主人,對情境有操作權而不是聽命於情境,身體才會健康、心情才會快樂。\n 有一個經典實驗 是去一個老人院,跟東廂房的老人說:這裡有一盆花,你搬回去房間養,養死了要賠;你每天早晨有一個蛋可吃,你可以選擇要煎蛋還是煮蛋;每周有兩次電影可看,你可以自由選擇看愛情片還是西部片。\n 實驗者跟西廂房的老人說:這裡有一盆花,請搬回房間去欣賞,你不必照顧它,護士會每周來澆水;你每天早晨有一個蛋,一、三、五是煎蛋,二、四、六是煮蛋;每周有兩次電影可看,星期三是愛情片,星期六是西部片。\n 一年以後,實驗者回來看老人的健康情況,發現西廂房的死亡率高於東廂房。這兩個廂房生活飲食、條件都相同,唯一的差別是東廂房的老人有主控權而西廂房的沒有。這是第一個實驗顯示心理上的主控感覺對生理的影響。\n 所以父母在某個程度之內,可以給孩子一些對他自己身體、行動的主控權,只要把後果告訴他,讓他自己做主,他若甘願冒風險,請他自承後果。孩子會告訴你,失敗的感覺還是比不曾試的感覺好,錦衣玉食無法彌補不能做自己的痛苦。\n 我勸同事老本留著不要給出去,但是鼓勵孩子去創業。''人只有做自己才會自在,有主控權才會健康,停在港口的船是最安全的,但是那不是造船的目的。''
''停在港口的船是最安全的,但那不是造船目的''\n \n文/洪蘭(陽明大學神經科學研究所教授)\n 朋友跟我抱怨,她畢業出來做事沒兩年的兒子,現在把工作辭了要出來自己開業。她擔憂地說:「現在不景氣,吃人頭路穩穩當當,每個月時間過去就有薪水拿。現在他要自己創業,我不能袖手旁觀不幫忙,又擔心我的退休金血本無歸,臨老要流落街頭,沿門托缽。」\n 我看她真的很憂心,就去找她兒子談。她兒子說他每天上班就頭痛、下班雙肩僵硬,他知道是壓力的關係,老闆喜怒無常,他覺得不只是把時間賣給了老闆,連靈魂都賣給他了,所以想來想去,決定自己出來創業當老闆,不必聽命別人。我問他風險,他說:「沒有失,哪有得?人總是去闖一下,才不負少年頭。」\n 我兩邊的話都聽了以後,決定回頭來勸母親,因為在實驗上有看到自主權對健康的重要性,很多研究都顯示在同一個緊張、快速、壓力大的辦公室中,職員得心臟病、高血壓的機率比經理高,愈有主控權的人,得病的機率愈少,人必須覺得自己是情境的主人,對情境有操作權而不是聽命於情境,身體才會健康、心情才會快樂。\n 有一個經典實驗 是去一個老人院,跟東廂房的老人說:這裡有一盆花,你搬回去房間養,養死了要賠;你每天早晨有一個蛋可吃,你可以選擇要煎蛋還是煮蛋;每周有兩次電影可看,你可以自由選擇看愛情片還是西部片。\n 實驗者跟西廂房的老人說:這裡有一盆花,請搬回房間去欣賞,你不必照顧它,護士會每周來澆水;你每天早晨有一個蛋,一、三、五是煎蛋,二、四、六是煮蛋;每周有兩次電影可看,星期三是愛情片,星期六是西部片。\n 一年以後,實驗者回來看老人的健康情況,發現西廂房的死亡率高於東廂房。這兩個廂房生活飲食、條件都相同,唯一的差別是東廂房的老人有主控權而西廂房的沒有。這是第一個實驗顯示心理上的主控感覺對生理的影響。\n 所以父母在某個程度之內,可以給孩子一些對他自己身體、行動的主控權,只要把後果告訴他,讓他自己做主,他若甘願冒風險,請他自承後果。孩子會告訴你,失敗的感覺還是比不曾試的感覺好,錦衣玉食無法彌補不能做自己的痛苦。\n 我勸同事老本留著不要給出去,但是鼓勵孩子去創業。人只有做自己才會自在,有主控權才會健康,''停在港口的船是最安全的,但是那不是造船的目的。''\n\nhttp://tw.myblog.yahoo.com/jw!Shma0UOVAh5lSeU7m1oKU7QmOw--/article?mid=52650&prev=52651&next=-1
*[[人人都會過敏的時代來了]]\n*[[DIY經絡養生》解決最常見的8大毛病]]\n*[[吞維他命E及硒 攝護腺癌更惡化]]\n*[[睡五分鐘等於六鐘頭的方法]]\n*[[「隱性失眠」上身 恐致糖尿高血壓]]\n*[[愛睡覺是遺傳的 人體發現「睡眠基因」]]
*[[鷹揚]]\n*[[當個獨行俠好嗎?]]
商業周刊 第1054期 2008-02-04 撰文者:何飛鵬\n一九九四年,開始嘗試學習使用電腦,電腦雜誌是自學者的重要工具,可是買了電腦雜誌之後,我發覺看不懂,當然也學不會,而這樣的學習過程更是痛苦不堪。\n\n受到這樣的教訓,我決定辦一本讓大眾看得懂、學得會的電腦入門學習雜誌,這本雜誌就是《PC home電腦家庭》月刊,當時創刊時喊出的「無痛苦學習」的口號,幾乎成為學習商品的經典宣傳文字。\n\n同樣的劇情,我第一次買了房子,在新房裝修的過程中,我買了本土的雜誌參考,但十分不滿意,只好再買英文的雜誌、圖書參考,我發覺感覺好多了。裝修完新屋之後,我決定辦一本裝潢家居的刊物,這就是台灣現在十分受歡迎的《漂亮家居》月刊。\n\n「讀者有困難,我們提供解決方案」這句話成為我經營媒體的核心理念,可是身為讀者、身為芸芸眾生的一分子,我之所以會創業,原因在於我感受到不足、體會到不滿,而當不足與不滿更強化為憤怒時,我就決定要改變、要創業,因此創業從「憤怒」開始。\n\n這樣的想法,支持我創辦了許多雜誌,但這樣的觀念從來沒有在腦中清晰而完整的呈現。一直到二○○七年,我出版了日本知名設計大師村上隆的《藝術創業論》,在台北小巨蛋的演講中,村上隆說出了「創作從憤怒開始」的理論,瞬間創作連上創業,藝術家的創作來自不滿、來自憤怒;企業家、生意人的創業也一樣來自不滿、來自憤怒、來自決定以自身之力改變社會的決心。\n\n當「創業從憤怒開始」的觀念靈光乍現之後,我開始仔細的檢視一生的創業歷程,發覺憤怒幾乎無所不在,一直在內心深處觸動我的改變動機。\n\n當我是小老闆,發覺政治權威與商業利益扭曲了新聞專業時,我決定有一天我要辦一份獨立、中性、客觀的媒體。當我是小職員時,發覺公司內是非不明、組織混亂,我告訴自己,有一天我要創立一個公正、公平、公開的組織,讓所有工作者安心工作。當我覺得老闆唯利是圖、苛扣員工時,我期待未來我的公司能和所有夥伴互利分享。當然更多的是,我看到大眾有困難、有需求,而未被滿足時,那是機會、那是市場、那是生意人千載難逢的良機!\n\n憤怒與單純看到生意機會完全不一樣。生意機會是生意人天生的賺錢動機,目的在改造個人的財富與生活狀況,那是一種生意人精準而理性的計算。而憤怒不同,我們看到社會的不平、不足、不滿,而決定挺身而出,嘗試改變,有時候那不只是理性分析,而是一種發願,而是一種捨我其誰的反應。\n\n沒有憤怒的生意會賺到錢,但未必完成個人的自我實踐;沒有憤怒的生意,只是籌碼的增減,不會讓人尊敬;沒有憤怒的生意,只是個人賺錢的工具,跟社會的改變沒關聯。從事沒有憤怒的生意,你只是個生意人,多幾個錢罷了!
取材自《老闆要的就是你!》,平安文化出版\n\n!「姓名+優點」,創造三贏的讚美妙招\n\n在許多場合裡,難免會碰到要將同事、部屬與朋友介紹給其他人認識的時候,身為「介紹者」,該如何讓對方能夠迅速了解「被介紹者」、留下深刻印象,同時也為介紹者自己加分呢?\n\n''話術1:具體讚美「被介紹者」在職場上的重要性''\n\n欲向對方凸顯「被介紹者」在工作上「不可或缺」「派得上用場」的重要性,可以這麼說:\n\n「這位是○○○,我們公司最近熱賣的商品XXX,就是出自她的idea喔!」\n\n「○○是XX通,關於XX的事情,他都很熟悉。」\n\n''話術2:具體讚美「被介紹者」的人格優點''\n\n除了讚許工作上的表現之外,也可誇讚「被介紹者」的風格或特質:\n\n「只要○○○在辦公室,整個氣氛就會很好喔!」\n\n「不曉得為什麼,○○煮的咖啡就是很香!」\n\n至於要如何培養上述「不僅介紹姓名,而且能說出一句具體讚美他人的介紹詞」的能力,可參考下列3個做法:\n\n''做法1:平時多觀察''\n\n每個人都渴望被讚美,因此平日可多觀察同事、部屬與朋友希望被稱讚的事情是什麼,然後記住他們的工作單位、職位與專長。能夠適時地以一句「○○○(被介紹者)在XX方面如何優秀」,具體地指出對方優點,將會讓人印象深刻。\n\n''做法2:樂於傾聽''\n\n在將自己的同事、部屬與朋友介紹給其他人認識時,只說「○○○很優秀」是不夠的,一方面是天底下優秀的人已經很多,二方面是「很優秀」只是抽象的形容詞,如果不夠具體,根本無法讓人印象深刻。\n\n因此,藉由平常多傾聽,了解對方的優點,將有助於為同事、部屬與朋友找到一句標語(slogan)具體形容他們的優點,在介紹時派上用場。\n\n''做法3:「你好、我好、他也好」的三贏''\n\n如果你(介紹者)對同事、部屬與朋友(被介紹者)觀察入微,那麼你在介紹他們時,自然就能在第三方面前道出他們的優點,這樣一來,不但可以在他人面前,提升被介紹者的形象,還可以讓被介紹者因為獲得你(介紹者)的具體讚美與肯定,進而體認到自己的價值。\n\n更重要的是,被介紹者可能會基於感謝介紹者將自己描述成很優秀或不可或缺,而對介紹者產生進一步了解的興趣,而第三方在觀察到介紹者對於被介紹者的優點有如此深入的認識時,也會感覺到你與同事、部屬與朋友之間的互動良好,因此對你印象良好,更願意將你再介紹給其他人,形成良性循環。\n
*2008-12-30【南方朔】\n\n教科書或後代評價,都會把當時簡化,甚至神化。今天全球經濟大衰退,人人都開始談起小羅斯福的「新政」,就有將其簡化或神化之嫌。「新政」其實一點都不輕鬆,它是個且戰且走,不斷受到左右夾擊的艱苦過程。\n\n「新政」如果有功勞,最主要的乃是小羅斯福那過人的熱情,他用熱情帶領當時的人們做著歷史性的實驗,他是「亂世領袖」第一人!\n\n當時美國大蕭條,小羅斯福的前任胡佛總統有理論,沒行動,情況快速惡化,人民流離失所。各種社會失穩漸盛,最慘的一九三二年五月美退伍軍人及勞工「饑餓大行軍」到華府,沿街搭簡陋帳篷霸街霸市,最後是七月廿八日出動軍隊鎮壓,後來的戰爭英雄麥克阿瑟及艾森豪將軍,都是那次鎮壓的劊子手,史稱「星期四屠殺」。\n\n由此可知小羅斯福就職前形勢的嚴峻程度。他就職後,在沒有理論的情況下且戰且走救失業救經濟,他早期的多項「新政」立法被最高法院裁定違憲,美國的左右兩翼也都趁勢崛起,路易士安那州州長,聯邦參議員輝龍(HueyLong)以「民粹領袖」姿態崛起,若非他於一九三五年遇刺身亡,美國的天下誰屬恐不可知。\n\n在那個動盪的時代,小羅斯福之所以可取,乃是:\n\n一、原本右派的他,由於一九二一年因小兒麻痺致殘,使他對弱者開始有感覺。\n\n二、他相信實用主義,因而主張「美國如今需要採取某種方法,做大膽果決的試驗,如果失敗,便坦承其失敗,再覓求其他方法,總之,得去試驗」。\n\n三、那個時代收音機興起,他是第一個利用這種新興媒介,透過堅定的言辭,感動的表達,將信心散播出去的領袖,因而能夠在分歧中逐漸凝聚成共識;也能帶動出整個國家機器。\n\n當時英國民粹領袖莫斯雷(OswaldMosley)主張「英國動起來」,他的主張在英國沒見到成果,真正動起來的反而是大西洋另一邊的小羅斯福政府。\n\n四、放在全球看,大蕭條改變了全球政治,小羅斯福、希特勒、史達林等都在同樣的背景下崛起,這更顯露出他的非凡意義。 \n\n而今全球經濟大衰退又告出現,二○○八年只是開始,它的後續發展仍難逆料。各國只顧救自己,是否會救成保護主義抬頭?各國的的利率匯率競爭,是否會讓經濟失穩更趨嚴重?\n\n除了這些結構性問題,最值得警惕的,仍在於關廠關店裁員後的失業潮,以及因此而造成的社會及政治失穩。\n\n目前,全球具有預兆性的失穩已告出現,計有:國家破產的冰島已出現要求政府下台的群眾示威,希臘則爆發主張推翻政府的暴亂;美國已陸續出現霸廠事件;義大利有全國鐵路總罷工;匈牙利和香港等則有機場罷工。\n\n而失業潮到二○○九年勢必加重,如何防範及緩和社會失穩,已成了各國最大的考驗。\n\n而台灣當然也不能倖免。目前失業、減薪、無薪休假等問題所引發的爭議事件已日增,特別是尾牙及開年過後,第二波失業潮將可能更趨惡化。\n\n目前這些問題或許可藉消費券這個議題所營造出的氣氛暫時緩和,估計到第二季,這個問題不無可能出現暴衝。因此,面對可能出現的社會失穩,政府已必須以真正苦民所苦,戒慎恐懼之心,未雨綢繆了。\n\n全球目前都在談小羅斯福和凱因斯。其實小羅斯福採用凱因斯學說已是到了一九三八年。\n\n他的整個「新政」有大半都是他用自己的信心去做摸索的試驗過程。他知道人民對他有期望,他不敢讓這種期望落空。\n\n他知道全球經過虛浮的一九二○年代,政府機構的領導功能早已形同廢弛,只有透過救經濟才可能救政府,也只有政府才可救經濟。他是第一個把救經濟搞成政府運動的領袖。\n\n後來的人談新政,都用大量公務員上山下海工程,做社會服務的照片為證。其實也等於稱讚他把整個政府帶動起來的那種驚人魅力!他那種信心與熱情,或許才是後代人最該體會的。
* 2008-12-26*文/跟狄龍 Cantillon《萬寶》】\n!巴菲特名言:「在別人恐懼時貪婪,在別人貪婪時恐懼。」應用最普遍的案例是危機入市,但實際交易操作上,如何定義「危機」卻有很多爭議。再者,危機發生時,提供的可能只是短線交易的機會,絕不能忽略巴菲特另一名言:「投資股票的第一原則,不要賠錢;第二原則:不要忘記第一原則。」一定要有停損的規畫。\n\n危機(crisis)在美國傳統大字典的定義為:「一個關鍵性或決定性的情形,或轉折點。」又可闡釋為「不穩定的情形,發生在政治、國際或經濟事務,面臨突然及決定性的改變。」\n\n''2008年10大新聞''\n咬文嚼字去定義危機,並無太多實際投資交易上的用處,關鍵是從眾人的眼光去思考,若眾人不視為危機,就不會有恐慌性的賣壓,也就沒有撿便宜的機會。是否被眾人視為危機,成為談論的話題,最簡單是從媒體報導去得悉,記者就是目擊現場的第一線「群眾」。\n危機新聞平常即充斥在報紙版面,當能躍上國際新聞媒體被廣泛報導,這代表著其傷害性及恐慌性具有一定規模,相對地,危機入市的報酬率也跟著較大。而台灣的媒體若能跟進報導,更代表該則危機新聞的重要性。\n若以《時代雜誌》選出的年度10大新聞來看,先提第1名的美國金融動盪新聞,2008年3月間發生的貝爾斯登事件及7月間「二房」事件,都有較大的波段漲幅(參閱本刊769期拙文〈似曾相識的美官方護盤手法〉),但9月15日雷曼破產事件後,股市卻沒有像樣的反彈,一路重挫至11月20日,3個案例意謂著危機入市確實提供了一個入市的交易機會,然並不一定會有百分之百的勝算,且一旦股市明確跌破重大危機事件發生時點的位置,就表示後面還有更壞的事情即將發生,投資決策需有停損的準備。\n其餘3則危機事件,很巧合的,我與我的重要戰友無役不與,實際進行操作後,提供下列的相關經驗及心得。\n\n''印度孟買恐怖襲擊事件''\n很多投資者經常把恐怖事件,當作是股市下跌的「因」,但這恐怕是倒果為因。比較合理的解釋是,當股市不斷下跌過程,代表著社會集體意識的負面情緒加重,最後就會發生重大的不幸事件,如恐怖攻擊(美國911事件)或者流行疾病(SARS、禽流感),甚至戰爭(1990年波斯灣戰爭、2003年波斯灣戰爭)。\n至於發生重大危機事件時,股市是不是出現較長時間的重要底部,無人可以預料,因為之後可能發生更大的災難,但發生重大危機事件時,至少具有短線操作的機會。 \n孟買恐怖襲擊事件,係發生於2008年11月26日晚間,恐怖份子持機槍闖入火車站、醫院等至少10個著名地標掃射並投擲手榴彈,闖入知名五星級飯店挾持英美人士為人質。印度股市於11月27日休市,28日恢復交易。\n當時國際間尚有泰國黃衫軍癱瘓機場事件,但未聞流血。股市俗諺是:「在街頭流血時,進場買進。」所以我選擇買進印度股市,我的重要戰友對兩地股市都有興趣,選擇都買,但持股印度的金額較高。\n印度股市(BSE SENSEX)於2008年1月10日盤中創上歷史高點21206點,接著一路下挫,於11月20日盤中創下今年最低點8316,跌幅高達60%。在距離 11月20日股市創下本年最低點的6天後,在11月26日晚間發生恐怖事件之前,當天印度股市收盤為9026點。印度2008年股市最低點與恐怖事件時間僅隔6日並非偶然,如前所述,恐怖事件是社會集體意識負面情緒達到極端的結果。\n11月27日印度休市,11月28日恢復交易,當天印度股市開低走高,開盤為8889點,收盤仍高於11月27日,11月29日(週六)恐怖事件仍持續上演,直到11月30日(週日)才告落幕,接著股市雖有震盪,但未跌破今年的最低點8316,顯示大盤經過恐怖事件測試後,能夠守穩。從11月28日開盤迄12月19日收盤,期間漲幅為13.6%,這也就是說,投資者只要勇於危機入市,在發生事件後、股市開盤時就買進,短短15個交易日就有13.6%的報酬。\n拜全球資本市場「蓬勃發展」之賜,使得投資者參與全球投資的管道便利許多,我於11月28日美股開盤時,市價買進在美掛牌的印度ETF(代碼INP),迄12月19日的報酬率高達18.6%,幸運地比印度股市的大盤表現更佳。\n\n''中國大陸毒奶粉事件''\n北京奧運過後不久,去年9月中旬中國爆發黑心奶粉案,甘肅等9個省分陸續傳出嬰兒疑似食用問題奶粉,出現罹患腎結石或腎衰竭病例,河北奶粉廠家三鹿集團被證實,奶粉生產時遭三聚氰胺汙染。 \n我初看此則新聞時並不以為意,直到9月17日台灣媒體報導大陸其它牛乳公司的產品也被驗出含有三聚氰胺時,赫見知名上市公司伊利、光明乳業及蒙牛也名列其中。\n於十餘年前,我曾在上海工作過,市面上看得到的鮮奶以光明乳業最大宗,印象較深;另蒙牛於2004年在香港IPO,據投資銀行界的朋友稱是個十分成功的案例。故我鎖定的標的是光明乳業及蒙牛,坦白而言我未作大陸乳業任何基本面及產業面的研究。\n當時投資的理由,主要是過去類似案例如口蹄疫、狂牛病發生時,相關的肉類期貨市場都是先重挫而後有很大波段的多頭走勢。理由是因撲殺病豬或病牛,且檢疫將變得更嚴格,造成供給開始變得短缺,需求面雖然短期內消費者會有恐懼,但中長期而言,這類牲畜是人類重要食物來源,消費者的飲食習慣並不會有太大改變,故需求變化不大,而供需的失調,造成這類發生疫情牲畜的期貨市場,有大波段的多頭行情。就個別公司而言,只要公司基礎穩固,應可安然撐過風暴。\n而牛乳亦是消費者日常重要的飲品,且各國的鮮乳很少是進口的,讓中國大陸的境內消費者不得不仰賴本地公司,因此我猜測,上市公司光明、蒙牛都是大型企業,應可度過危機。\n光明乳業(600597.SS)9月17日開盤價位為4.56元,當日收盤價為4.22元,相較前一天收盤價跌了9.6%。其後股價最低曾跌到3.20 元,最高曾漲至5.33元,至12月19日收盤為4.97元。我的重要戰友,對光明的建倉成本在4元上下,迄今的報酬約25%。\n另在香港掛牌的蒙牛乳業(02319.HK)在公司涉及販售毒奶粉的消息曝光後,於9月17至22日停牌,9月23日恢復掛牌,當日開盤8.47元,最低曾跌至6.85元,當日收盤7.95元,相較停牌前跌幅近40%。其後股價最低曾跌至6元,最高11.06元,12月19日收盤為10.26元。我的重要戰友陸續建倉,其成本在7元附近,迄今報酬率約46%。 \n\n''中國大陸四川地震''\n2008年5月12日下午2時28分,四川發生大地震。在此之前,中國大陸亦發生一個重大事件,西藏於3月10日起發生大規模暴動事件。我的重要戰友見西藏暴動新聞,不管三七廿一,開始買進有「西藏」兩個字的股票,當時我也頗認同,並看好西藏旅遊(600749.SS),他打的如意算盤是買進這類公司,然後放至8月8日奧運開賽時,逢高賣出。\n西藏暴動新聞3月16日在台曝光後,第一個交易日(3月17日)買進西藏旅遊的開盤價是14.37元,若從此不再作任何的買賣動作,直至8月8日收盤賣出,其收盤價為6.55元,跌幅高達55%。戰友在此役慘遭滑鐵盧。\n事後檢討失策的理由,可能是西藏暴動的新聞在中國大陸並未廣為人知,反而是國際媒體在旁湊熱鬧,位處台灣的投資者看到媒體報導,誤以為中國大陸的投資者也跟著恐慌,其實並不盡然。不管此推論是否正確,反正就是失利,沒有任何藉口。\n另四川大地震發生時,當日中國大陸股市並未有太大的反應,隔天5月13日上海股市開盤3688點,相對前一日收盤跌了3.1%,之後大陸股市幾乎一路下挫。當時我的戰友選擇的個股標的之一是受災股,希望能買到便宜貨,特別是因地震而被停牌的個股,其中一檔是岷江水電(600131.SS),停牌近兩週後,該公司於5月27日恢復交易,連續兩天跌停,於5月29日打開跌停,價位在7元附近,若持有至8月8日奧運開賽時賣出,損失約35%。此危機入市的操作,與西藏旅遊一樣,都是失利。\n幸運的是,作多失利,但作空方面卻有斬獲。當時台灣的四川地震受益股以亞泥最受到大家的注意,其子公司亞洲水泥(中國)控股公司設廠在四川,被媒體稱為地震受益股,而亞洲水泥(中國)控股公司正巧於5月20日在香港掛牌上市,且5月20日又是馬英九就職日,亞泥在此三項重大「罕見」的利多下,果然於5月20日創下近幾年來的最高點後,幾乎一路下挫迄今。 \n\n''危機入市的考量''\n危機入市是個十分有趣的交易策略,提供投資者極佳進場時點,但選擇標的最關鍵的是要避開盛傳有財務問題的公司。一旦公司出現財務危機,其往來的銀行、供應商及客戶都會十分緊張,很少人會願意伸出援手,落井下石才是常態。\n其實「危機入市」的想法每個投資者都琅琅上口,但實際上很少有投資者具備這樣的勇氣及膽識,大多數的人在發生危機時,手上若沒有該危機事件市場或個股的部位,多是觀望,裹足不前。投資者若手上不幸擁有多頭部位,多是認賠殺出,或者是把巴菲特的名言:「在別人恐懼時貪婪。」作選擇性的解讀,自我安慰,繼續逢低加碼攤平,結果陷入更大的危機。\n而更可看到不少只會作多的人士,不斷高喊著:「在別人恐懼時貪婪。」這更使我堅定的相信長期的底部絕不會這麼快地到來,因為真正底部時,那些多頭陣營恐怕將失望到無力再喊出那句口號了。
陳世豪 2008/12/04\n!對於價值導向投資者來說,持有企業的基本經濟特質和財務狀況持續惡化,才是代表真正的風險,因為價值減損會提高資本損失的機率…\n大多數人在追求成功投資的路上,經常會問的一個問題是「我要如何做才能擁有快樂又成功的投資績效?」如何成功(投資)本質上就是一個非常複雜的問題,因為每個人的條件都不同,有些人是投資的菜鳥,有些人則是經驗老到,有些人只是小散戶,有些人則是擁有雄厚的資金。起跑點不一樣,再加上所處的時空環境也不盡相同,這麼多複雜的因素摻雜在一起,讓這個問題很難有一個簡單的答案。\n\n當面對這種複雜的問題,有時光是正向思考問題反而看不清楚全貌,換個角度,運用反向思考把問題倒過來看,有時反而會豁然開朗。\n\n巴菲特的夥伴查理‧孟格(Charles Munger)經常提到19世紀著名的數學家雅可比(Carl Jacobi)所說的一句話:「反向,永遠反向思考(Invert, always invert)。」\n\n孟格於一九八六年在哈佛西湖高中的畢業典禮上演講(他兒子是當年的畢業生),他運用反向思考的方式來告誡學生-《如何確保擁有悲慘又失敗的人生》。因為他不確定畢業生將來要怎麼做,才能真正擁有快樂又成功的人生,但是他從相反的方向告誡畢業生,只要做了某些事,將來肯定會有一個悲慘又失敗的人生。\n\n他解釋一個人只要照著下列的事情去做,保證會給你一個悲慘的人生:\n#藉由吸食化學品來改變自己的心情和感受\n#嫉妒 (Envy)\n#陷入忿恨不平(Resentment)的情緒\n以上三種行為,任一種都會導致一個不愉快的人生。接著他補充四種可以保證失敗的習性:\n#做個不可靠(Unreliable)的人\n#只從自己的經驗中學習,不以他人為借鏡\n#歷經少數挫折就放棄\n#不要反向思考\n\n孟格的《確保悲慘人生的七大祕訣》非常容易了解,隨便從一些明星的例子,我們就可以知道,很多有天份的人,最後都毀在酗酒或是吸毒上。\n\n接著,我們就借用孟格的題目來探討-《如何確保擁有悲慘又失敗的績效》。\n\n''確保悲慘績效的七大祕訣''\n\n仿效孟格的《確保悲慘人生的七大祕訣》,我們整理出七大確保悲慘績效的祕訣:\n\n#專買自己不懂的東西-對一些可以穩健獲利的簡單投資標的視而不見,覺得這些投資對象實在是太無聊了,價格有如牛皮一般動也不動,一點都不刺激。喜歡複雜的金融商品,最好是層層包裝都搞不清楚內容是什麼,尤其要用到連財經專家都搞不清楚的數學公式計算,這樣的商品更是最愛。\n#專找不勞而獲的機會-尋找那種可以不用自己努力做功課的標的,最好是每天都有人報明牌,可以天天賺個一支漲停板。如果有內線消息的話那就更棒了,配合作手的拉抬,可以連續賺好幾根漲停板,什麼事情都不用做,只要躺著幹就賺翻了。\n#盲目從眾-喜歡待在人多的地方,尤其是市場上最熱門的金融商品,每天都有媒體及電視報導它們的前景有多麼看好,而且大家都已經搶進了,自己怎麼可以缺席呢。因為大家都這麼做,所以一定沒有問題。\n#高度槓桿,不留安全程度-只用自己的錢來賺錢是多麼笨,如果自己出資的越少,最後的報酬率就會越高,最好是自己一毛錢都不用出,這樣獲利就無限大了。\n#只從自己的經驗中學習,不以他人為借鏡-只有自己的真實經驗最可靠,其他人的教訓都不可取,尤其是經典書上的東西,誰會想要去看呢,有一句話不是說:「盡信書不如無書嗎?」\n#歷經少數挫折就放棄-只要投資的商品遇到一兩次價格下跌,或是投資策略遭遇一兩次帳面虧損,就沒有必要再堅持下去了,因為還有其他更眩的替代品不是嗎?\n#不要反向思考-反向思考,什麼反向思考?根本不用思考,跟著大家走就不會錯了。\n\n''避凶為先,趨吉次之 (First risk, then return)''\n\n上面的《確保悲慘績效的七大祕訣》實際上是《[[投資第一要務:隨時保護自己]]》一文觀念的延續,如果大家有特別留意,很多都是「保護自己原則」的反例。在上一篇文章中,我們特別強調投資人在面對投資標的時,應該先釐清會有哪些風險,然後再來關心可能獲得的報酬。\n\n那麼,風險到底是什麼呢?\n\n一般財務金融教科書將價格的波動(標準差σ)視為風險,也就是股價的上下震盪越劇烈,就認為這家企業的風險越高。\n\n價值導向投資者則用比較直覺的概念來定義風險:「永久的資本損失」(Permanent capital loss)或「損失的可能性與幅度大小」。\n\n對於價值導向投資者來說,持有企業的基本經濟特質和財務狀況持續惡化,才是代表真正的風險,因為價值減損會提高資本損失的機率。實際風險也取決於你購買股票所付出的成本,也就是所支付價格與內在價值之間的差額是否夠大。\n\n另外,他們並不會把價格的波動視為風險,反而是將價格的波動視為機會。股價大幅地震盪,只是提供給價值導向投資者更好的買進和賣出機會而已,他們會趁群眾恐慌大舉殺低時買進,然後趁群眾瘋狂追高時賣出。\n\n巴菲特甚至對風險有一個更簡潔易懂的定義:「風險來自不知道自己在做什麼。」\n\n身為價值導向投資人,主要的工作就是購買財務金融理論認為不存在的便宜貨。他們不像財務理論所建議的:要獲取更高的報酬就要承擔更高的風險。他們是靠慎重地避開或預防風險,並趁著股價遠低於內在價值時再買進的方式,來獲取合理穩健的報酬。\n\n''避免犯重大錯誤''\n\n大部分人都希望有一個成功的獲利公式,可以讓自己輕鬆、快速地致富。很不幸地,現實中並不存在這樣一個數學公式或是電腦程式,可以讓你不用花什麼腦筋就可以迅速致富。\n\n我們並不知道「如何才能擁有快樂又成功的投資績效?」的正確答案是什麼,我們也沒有一個放諸四海皆準的成功策略,但我們試著從另一個方向來切入這個問題-「如何才能避免悲慘又失敗的績效?」\n\n我們相信先從大多數人最常犯錯的地方開始,避免犯下同樣的錯誤,是邁向成功投資之路非常重要的一步。雖然無法保證你一定可以投資成功,但是努力避開《確保悲慘績效的七大祕訣》,盡量不要去做一些愚蠢的事情,至少可以讓你在市場上少交許多昂貴的學費。\n\n就如同巴菲特在1992年寫給股東的信上所說:『對大部分的投資人而言,重要的不是到底知道多少,而是要確實地了解自己到底有多少是不知道的。只要投資人可以避免犯下重大的錯誤,他們其實只需要做對少數幾件事就夠了。』
工商時報2008.12.24【朱漢崙、黃怡錦/台北報導】\n 日盛金向合庫求親,日盛金最大股東─日系私募基金新生銀行態度,與合庫內部的綜效評估,將是能否成功的2大關鍵。原先富邦金與日盛金合併幾成定局,最後時刻被大股東新生銀喊卡,據悉,新生銀對日盛金的併購案有絕對主導權,近來更相中經營穩定度高,手上也不缺現金部位的合作金庫,後續進展引人矚目。\n 據了解,財部持股達37%的合庫,較傾向以換股方式進行,但新生銀則青睞以現金佔大部分的交易條件,這將成為首宗公股行庫合併民營金控成功與否的關鍵。\n 合庫上下對此案不願證實,僅重申:「已授權董事長談判併購案,各種好案子,都會把握機會。」不過據悉,近來確有「中間人」擬牽成此一合併案,知情人士透露,金管會也評估明年金融市場經營情況艱困,因此各類金融機構,包括金控在內,都希望以推動整併的方式,讓目前經營較吃力的機構退場。\n 擁有302家分行,並與巴黎銀行合資成立壽險、投信公司,但現在獨缺證券布點的合庫,若與日盛金合併,旗下經營績效良好的日盛證,就能帶給合庫現成的50多處證券據點,還附贈金控執照,確有合併綜效。\n 金融圈人士分析,儘管日盛銀一直是併購市場上,買方慎重評估的問題所在,但合庫302家銀行據點,有足夠的經濟規模可以處理問題。\n 上月底,日盛金董事會通過百億元現金增資案,新生銀行更表態將全數認購,鞏固主導地位,也等於宣示日盛金的併購案,「只有新生銀說了算」;日盛金在重訊中同時指出:「除進行現增外,亦授權董事長與其他金融機構洽商併購。」代表新生銀行的介入,非代表日盛金不賣,而是繼續尋找更適合的買家!\n 對於日盛金對外尋求併購買主,日盛金發言人鍾芳程昨(23)日晚間回應指出,完全沒聽說;他並重申,日本新生銀將再投資日盛金百億元。鍾芳程表示,日盛金將取得新生銀增資,至於與合庫接觸一事,他完全沒有聽說,應該不可能。\n
2008-11-20*張翠芬/台北報導\n\n硒元素及維他命E一向被視為有益攝護腺的保健,但美國一項大型研究發現,額外補充這些營養素「弊多於利」,不但無法預防攝護腺癌,甚至可能導致血糖升高、癌症惡化。這項大型研究計畫在今年十月喊停。\n\n美國國家癌症研究院(NationalCancerInstitute,NCI)針對三萬五千名五十歲以上男性進行補充硒元素、維他命E試驗,為期十年,到第七年發現可能無法發揮預防攝護腺癌效果,反而可能導致其他副作用,在今年十月底提前喊停。\n\n和信泌尿科醫師張樹人表示,這項研究顯示,不管是單獨使用二百微克的硒元素、四百國際單位的維他命E或兩者併用,都無法有效預防攝護腺癌。研究還發現,單獨使用硒元素可能增加糖尿病風險,單獨使用維他命E可能增加罹患攝護腺癌風險,但數據不具統計學上的意義。\n\n攝護腺癌病友接受治療後,醫生通常建議補充硒元素及維生素E,張樹人說:「根據這個大型試驗的結果,我們已不再建議男性額外補充任何營養品來預防攝護腺癌,這是攝護腺癌防治上非常重要的宣誓。」\n\n三總副院長、泌尿外科主治醫師于大雄強調,攝護腺癌友應保持平常心,只要飲食均衡,適度休息,維持規律運動習慣,不需要刻意補充其他營養素。\n\n張樹人指出,我國攝護腺癌的早期診斷率從七、八年前的三八.八%,提高到目前的四八%,但美國的比率高達八、九成,台灣還有相當大的努力空間。\n\n根據統計,目前攝護腺癌患者中,無論新增病例、死亡人數都已超越子宮頸癌,高居國人十大癌症的第六位。醫師指出,攝護腺癌是最常見的男性癌症之一,與遺傳、荷爾蒙、環境及微生物、病毒感染有關,生活習慣和日常飲食也有影響。\n\n攝護腺癌早期大都沒有症狀,須靠肛門檢查(指檢)、血中攝護腺特異性抗原或超音波進行早期診斷。若有家族性攝護腺癌病史、嗜吃油脂性食物者,出現排尿困難、骨頭疼痛等症狀,最好立即就醫徹底檢查。
* 2009-01-17 * 【王良芬/紐約十六日電】\n全美航空公司(U.S.Airways)一架客機,十五日下午在紐約拉瓜底亞機場起飛不久,疑因吸入鳥群,兩具引擎同時故障,從三千呎高空迫降哈德遜河。當天溫度僅華氏十八度(約攝氏零下七.七度),但乘客及機組員全都獲救,此事被稱為「哈德遜河上的奇蹟」。\n\n全美航空空中巴士A320型一五四九航班十五日下午三時廿六分,從皇后區拉瓜底亞機場起飛,前往北卡羅來納州夏洛特,機上有一百五十名乘客、兩名機師和三名空服員。\n\n才起飛就「遭兩隻鳥撞擊」\n\n飛機起飛後才五分鐘,機長沙林伯格向紐約塔台控制中心報告「遭兩隻鳥撞擊」,必須飛回機場。當塔台指示他返航時,機長看到新澤西州的「蒂特波羅機場」(Teterboro),又要求允許降落,但接著他不得不緊急迫降在哈德遜河上。\n\n艙內的乘客當時也察覺不對,大家先突然聽到一聲巨大爆裂,靠窗的乘客看到引擎冒出濃濃黑煙。接著,就聽到廣播傳來機長嘶吼著「要衝撞了,抱緊!」許多乘客驚慌大叫,有些默念禱告。不久,飛機落入河面,機身劇烈震盪。\n\n在飛機迫降哈德遜河後,驚魂未定的乘客此刻都默默無聲,目睹灰暗的河水拍打機窗,冰冷的河水隨即流入機艙,乘客及機組人員趕緊穿上黃色救生衣,迅速走出艙門,小心翼翼地站在機翼上等候救援。但此時機身開始漸漸下沉,人人心情凝重。\n\n水上計程車、渡輪趕來救人\n\n哈德遜河位於曼哈頓和新澤西之間,河上有不少水上計程車、渡輪和遊艇,他們都被飛機從空中落河的景象嚇到,隨後主動趕來把乘客救起。渡輪船長隆巴迪說,有些乘客站在機翼上,一些坐在充氣橡皮艇上,還有人泡在河水裡,憂心地等待援助。\n\n紐約正逢十四年來最冷寒流,氣溫僅華氏十八度,即攝氏零下七.七度,有位乘客兩腿骨折,還有乘客因驚嚇體溫過低而送醫治療。醫生指出,人體暴露於華氏四十度以下超過三十分鐘,便可能會失去知覺。 \n\n紐約水路公司(NewYorkWaterway)派出至少五艘渡輪,超過一百名消防員趕到現場,救助機上乘客,美國海岸防衛隊也到場救援。因地點鄰近曼哈頓第十一大道,警察管制交通,許多人擠在高樓上或隔著大馬路遠遠觀看。\n\n機長傑出表現 救了所有乘客\n\n紐約州長帕特森和市長彭博稱讚機長沙林伯格表現出色救了所有人的性命。帕特森說,這場可能成為悲劇的事故最終演變成「哈德遜河上的奇蹟」。\n\n這起事故發生後,國土安全部發言人立刻表示,該意外和恐怖襲擊無關,以迅速去除疑慮。\n\n「邋遢鬼」有夠酷! 大英雄 以前開戰鬥機的\n\n【王良芬/紐約十六日電】\n\n全美航空客機墜河事件中,臨危不亂冷靜救回所有人性命的機長傑斯利.沙林伯格(Chesley B. Sullenberger)一夕爆紅,受到各方肯定和稱讚。飛航專家和機師工會說,能將故障飛機安穩降在河裡,同時沒有人喪生,可說創下紀錄。\n\n沙林伯格現為媒體追逐的大紅人,外界稱他創造了「哈德遜河奇蹟」,其事蹟將成為教材。沙林伯格現年五十七歲,自一九八○年起服務於全美航空。\n\n沙林伯格過去為空軍戰機飛行員的往事,一再被媒體重提,人們把他當成英雄,電郵信箱也一夕塞爆,都是各方仰慕者來函。新澤西籃網隊計畫邀請這位「英雄」出席周六籃網對抗波士頓塞爾蒂克隊之戰。\n\n儘管成了全美的大英雄,但沙林伯格的家人看他,不過是「邋遢鬼」(sully),但這家務不整的機長,卻在危機情況下,從容有序指揮乘客逃生。紐約市長彭博說,沙林伯格在艙內來回走了兩次,確定所有人都逃出機外。\n\n意外事件後,他在紐約水岸碼頭大樓接受調查員約談。一名紐約警員稱,沙林伯格實在很酷,他坐在渡輪等候區裡,依然戴著機長帽子,神情悠閒喝著咖啡,一點都不像才死裡逃生的人。 \n\n在一九七○年代,沙林伯格曾是美國空軍F-4戰機飛行員,後來在飛機失事調查委員會就職。副駕駛為四十九歲的斯基里斯,除機師專業外,他還經營一家風險管理顧問公司。
(2008/11/07 01:17)財經中心/綜合報導 \n\n富邦金傳出要併購日盛金,震撼金融圈,因為如果合併順利,這將是國內首宗的金控合併案,富邦金也將躍升為金控龍頭,金管會主委陳樹不但親口證實,也表示樂觀其成,但如果合併順利,日盛金是不是就得精簡人力,日盛金則是澄清,絕無此事。 \n\n富邦金如果順利併購日盛金,不但創下國內第一宗金控合併金控的例子,富邦金在金融版圖上,更是躍升金控龍頭寶座,而面對這麼大宗的合併案,陳樹不但親口證實,也表示樂觀其成。 \n\n金管會主委陳樹表示,「原則上,我們都會用一個比較樂觀其成的態度來看,但是因為任何的一個併購,它有它一定的程序,所以大家不要給一個過高或過低的期待。」 \n\n金管會主委陳樹話說的保守,但是富邦金董事長蔡明忠、日盛金董事長陳國和似乎已經達成共識,如果這合併案順利完成,富邦金不但能擴大版圖,日盛集團也能拿這筆錢來改善日盛銀行的財務狀況,這樣對雙方來講,可以說是達到雙贏的局面。 \n\n不過,富邦和日盛合併成功,勢必也會調整內部人員的分配,市場更傳言日盛金控及日盛投信,將合計精簡250人,但對於這消息,日盛則是澄清:絕無此事!日盛金控發言人鍾芳程表示,「沒有!沒有這回事!……,我曾經問過我們主管人事的主管,就是我們行政部門主管,他們說沒這回事。」 \n\n對於精簡人力的事情,日盛金極力澄清,不過,市場會有這麼多傳言,就因為金融業在這波不景氣中,是受創最慘的行業。光是10月份,銀行壽險業裁員比率,就高達4成,壽險業主管的年薪,也從原本140萬元,被大砍2/3,證券股票營業員收入也被大減3成。 \n\n大環境不好,已經造成上萬名的金融從業人員丟了飯碗,面對薪水被砍,工作又難保的局面,大家也只能咬牙硬撐,畢竟這波不景氣,不知道要到什麼時候才會結束。(新聞來源:東森新聞)\n
!6分鐘DEMO秀~人的注意力頂多只能維持6分鐘\n#人們只記得三件新的事情(超過三件,觀眾會一件都記不得)\n#永遠別插入與主題無為的事情\n#主題是公司產品,不是CEO\n#別隨便表達幽默感(因為文化隔閡)\n#大量練習(台上6分鐘,台下60天)\n#準備出錯時的方案(人與電腦都會出錯)\n#祈禱\n*''知彼''\n先瞭解簡報的對象(他們需要什麼?)\n*''知己''\n找出自己的強項與限制\n*''張力''\n把觀眾情緒推高,低頭思考如何感動人\n*''表達''\n說重點就好,你可以表演魔術,但不需要告訴大家魔術是怎麼變的\n*''自信''\n相信自己是最棒的
2008-12-15*撰文/李國芬《30雜誌》\n\n德國知名投資大師安德烈.科斯托蘭尼(Andre Kostolany)說:「會影響股市行情的,是投資大眾對重大事件的反應,而非重大事件本身。」\n\n這個說法套用在個人面對重大事件的情緒反應,似乎也成立,「會影響個人心情的,是人們對重大事件的反應,而非重大事件本身。」\n\n本期封面故事的受訪者中,太平洋自行車董事長林正義、遊戲橘子董事長劉柏園都曾在事業經營中遭遇挫折,但是,他們都以剛強的意志力、努力自我調整的彈性,剛柔並濟度過難關,並從中確立自己最在意的人生價值。\n\n肯夢國際創辦人朱平是另一類型經營者,他善於建立制度、未雨綢繆,總在第一個高峰即將到來之前,事先規畫下一個高峰,降低事業風險。\n\n3人面對風險、從挫折中學習的真實故事,恰好對應目前低迷的時代氛圍,提供另一種看待人生低谷的觀點。\n\n''人人都需要的一堂課:不求完美 保持彈性''\n\n五年級後段班的振興醫院身心科醫師嚴烽彰,明顯感受這一次經濟不景氣帶來的壓力,他的門診病患人數較往常增加一至兩成,其中有房子租不出去的房東、期貨交易一夕間產生巨額損失的投資客、瀕臨失業的上班族。\n\n從身心科求診患者對事件的反應,也可看出世代差異。嚴烽彰認為,較年輕的七、八年級及六年級後段班,比較能夠坦率說出自己的問題,在門診的占比也較低。\n\n五年級、六年級前段班就較令人擔心,「他們多半是完美主義,被自己的責任感壓垮。」\n\n嚴烽彰信手拈來就是令五、六年級難以放鬆的教導:「一失足成千古恨」,讓人怕犯錯;「不進則退」是中年男子最大的罩門,當發展受阻,就認為自己是「loser」(失敗者),然後懊悔「當初如果做某件事就好了」,不斷後悔自責。\n\n「教科書上很少教人『安份』,只是不斷倡導要從優秀到卓越、要追求更多。」但在經濟衰退時,與現況和平共處,是對個人很好的保護,嚴烽彰認為,保有隨環境自我調整的彈性,是現代人必需培養的能力。 \n\n遊戲橘子董事長劉柏園就是很好的例子,遠道法國設攤參展,一張訂單也沒有拿到,在聽到外國同業表示永不對商場絕望時,即使負債2000萬元,還是立刻受到感染,堅定繼續努力的決心。\n\n太平洋自行車董事長林正義則展現過人的挫折忍受力,他在大一第一堂英文課無法聽懂「What’s your name?」但並未因此沮喪,放棄努力,他隨即調整自己,利用寒假發奮背字典,英文反而成為他日後工作、創業的最大助力。\n\n''自助天助 盡其在我就夠了''\n\n劉柏園與林正義在面對事業低潮時展現過人毅力,但是兩人也都承認,自助天助者,機運也很重要。\n\n哀鴻遍野的亞洲金融風暴,竟意外成為支撐遊戲橘子谷底反彈的力道,劉柏園甚至認為,運氣的影響占70%,「但是一定要努力,自身的努力要做到百分之百。」\n\n1992年事業面臨考驗,林正義回憶過往,「事業要倒或不倒,往往就在幾百萬元。」他的長子、太平洋自行車總經理林鳴皋透露,當事業看似無以為繼時,父親曾尋求將公司賣給一位同業,當這位同業弄清楚林正義不過只缺3百萬元時,「立刻開了一張支票借給父親,其實他跟父親並不熟。還有客戶擔心我們倒了,先匯貨款過來。」\n\n或許這可解釋為林正義長期建立值得信賴的形象,「但是並非人人都有這樣的好運氣,結果公司還是倒了,重點是,盡力就好。」嚴烽彰說。\n\n嚴烽彰以自己的工作為例,「剛執業前幾年,我常為了病人不聽話、導致療效不彰而生氣。」後來,他「以病人為師」,終於了解醫療結果需要醫病共同努力,「你出一半,他出一半。努力給出自己的一半,但不要過度誇大這一半。」\n\n這樣的認識,不會削減個人努力的動機,但努力過後,就別想太多了!\n\n''蕭條與憂鬱 都是Depression''\n\n經濟學的「蕭條」與心理學的「憂鬱症」,英文都是「Depression」,嚴烽彰認為,蕭條引發憂鬱,是因為人們繼續以經濟蓬勃時的標準,「要求」經濟蕭條,「但是,擴張與蕭條的生活方式應該是不同的。」 \n\n經濟繁榮的時候,人們努力外求,追求卓越,蕭條時則向內求,例如回歸家庭,與家人建立更緊密的關係;趁此機會將自己從工作中拉出來,檢視所從事的行業是不是『好』行業,為下一步預做準備。\n\n如果能從這個角度思考,景氣不好未必是壞事,反而是讓一切回歸基本面、重新自我整理的好機會。 \n
*華頓投信通知\n由於近期市場波動極為劇烈,暫時停止【環球沛智基金I-新興市場債券基金】、【環球沛智基金I-新興市場債歐元避險】【環球沛智基金I-全球新興市場短期券債】、【環球沛智基金I-新興市場低存續債】基金所有交易【包含申購(單筆申購及定期定額續扣)、轉換、贖回】及基金淨值報價。\n\n*華頓投信通知\n新興市場債券基金、新興市場低存續期債券的十月份配息將會如期發放,新興市場短債由於流動性尚未恢復,所以暫不配息,但一旦恢復流動性後,將會發放。 \n\n*安本國際證券投資顧問(股)公司通知\n安本環球系列基金自97年10月20日起移轉由安本國際證券投資顧問有限公司擔任總代理,但礙於法令規定,本行於移轉生效日(97年10月20日)後,終止擔任銷售機構,且經金管證四字第0970057824號函同意,為維護投資人權益,投資人可於移轉生效日後3個月內,原以定期定額方式投資者可繼續定期定額續扣至98年1月19日止)。 \n \n
商業周刊 第1059期 2008-03-10 撰文者:林亞偉、呂燕智\n\n祝你心想事成!是祝福朋友很棒的吉祥話。然而,很多人「心想」,卻無法「事成」:「我每天都很想中樂透,為什麼還是發不了財?」「我很想減肥,可是體重還是天天增加!」「物價上漲,我跟老闆要求加薪,卻換來一頓臭罵!」……心想,要如何事成?現在,讓二十五位名人教你,打破三大迷思,簡單做到心想事成!\n你看了《秘密》(The Secret)沒?\n\n去年六月開始,很多人以此互相問候,其中有外資分析師、創投董事、麥肯錫主管等。甚至,台大EMBA同學聚會,都以該書的DVD為主題進行探討。在短短一年內,這本書在美國發燒,並一路紅到台灣。從董事長、奧斯卡影后到計程車司機,都在探索它。\n\n在美國,它短短一年就賣出將近八百萬本,是二○○七年亞馬遜書店暢銷書第二名,僅次於《哈利波特》完結篇。該書作者朗達‧拜恩(Rhonda Byrne),更因此被《時代》雜誌選為二○○七年最有影響力人物之一。在台灣,該書去年中出版後,連印四十三刷,銷售逾三十三萬本。\n\n雖然書名為「秘密」,但翻成白話文,就是教大家「心想事成」;翻成英文就是:「Thoughts become things」。\n\n該書大意如下:\n一、生命的偉大秘密就是「吸引力法則」 (Law of Attraction)。\n它是宇宙最有力量的法則,就像阿拉丁神燈的巨人一樣,對我們有求必應,可以帶給你任何你想要的幸福、健康、財富、人際關係。\n\n二、所謂「吸引力法則」就是,思想具有磁性,並且有著某種頻率;當你思考時,那些思想\n就會送到宇宙中,然後吸引所有相同頻率的同類事物。 因此,你當下的思想,正創造你的未來。不論你心中想什麼,你都會把他們吸引過來。\n\n三、如果你想改變生命中任何事,就藉由改變你的思想來轉換頻率。\n更進一步來說,你的生命掌握在自己手中,不管你身在何處,曾發生什麼事,你都可以開始有意識的選擇你的思想,改變你的生命,根本沒有所謂的絕境。\n\n「秘密」的概念,其實並不新,它強調思想的力量,與古人的論述殊途同歸。 \n\n譬如,儒家也曾說:「存乎中,行於外」;兩千五百多年前的佛陀訓示:「我們現在的一切,都是過去思想的結果。」二十世紀中盛行的新思想運動(New Thought Movement)也告訴人們:「勿輕忽思想的力量,因為心念、想法會帶來後果,影響一個人的身體與心理。」\n\n然而,為什麼二十一世紀的今日,「秘密現象」如此發燒呢?\n\n心靈工作室負責人王浩威分析,人們時時刻刻需要激勵。而這種激勵,在當今的不景氣年代,來得正及時。他還記得,一九七○年代的石油危機,台灣同樣有一本暢銷書《人生的光明面》,當時印行將近一百刷。該書作者是一位牧師,他相信,所有的問題,都能透過積極思考,透過信仰來解決。這是更早版本的「秘密」,教大家相信心想事成的力量。「《人生的光明面》熱潮,就像今天的《秘密》。」\n\n美國哈佛大學心理系教授韋格納(Daniel M. Wegner)說,對缺乏自信、憂慮大環境的人們來說,「神奇的想法」(magic thinking),很容易被埋單。\n\n而《秘密》,就是把古老的論述包裝成一種神奇的想法。它告訴你,心想事成一點都不難,只要你去「想」,你就做得到。因此,它迅速成為人人渴求的解藥。美國最有影響力的電視主持人歐普拉(Oprah Winfrey),她的一生,就是心想事成的標準教案。\n\n出身美國南方貧苦家庭的歐普拉,十三歲因被性侵產下一子(嬰兒出生不久即夭折)。三十歲的某一天,她翻開了甫獲普立茲獎的小說《紫色姊妹花》(The Color Purple)。書中描述一位黑人女性,勇敢反抗丈夫欺凌,毅然走出家門獨當一面,最終贏得美好人生,當下,她被震懾住了。\n\n*心想事成標準教案——歐普拉 從貧苦黑人女子,躍上銀幕變紅人\n\n她想像著,自己終究也能如書中人物一般,打破先天的障礙、美夢成真。她的「想」,不是空想,而有著十分具體的畫面,並且持續不斷。「我完全著迷了,無論吃飯、睡覺,腦子裡想的只有《紫色姊妹花》」。她一遍又一遍的閱讀這本書,揣摩書中人的心境,說著書中的對白。\n\n因為不斷的想,吸引力法則在她身上啟動了!\n\n隔年,「我接到生平第一通製片公司打要我參加試鏡的電話,果真,就是《紫色姊妹花》!」雖然試鏡後,幾個月都沒有消息,但她每天都向上天祈求自己能參與演出。\n\n「然後有一天,我接到了史蒂芬‧史匹柏(Steven Spielberg,好萊塢名導演)的電話,他要我隔天就到他加州的辦公室報到。」 她回憶,「從那一刻開始,就是那一刻,我的人生從此改變……因為我知道是我自己將《紫色姊妹花》吸引到生命中的。」\n\n「吸引力法則」在歐普拉身上迅速發酵,她不但因該部電影被提名奧斯卡最佳女配角,所主持的「歐普拉秀」(The Oprah Winfrey Show)也開始在全美聯播。她更從二○○四年開始,連續四年獲選為美國《時代》雜誌全球最有影響力的人物之一。\n\n一個思想,可以迸發出如此巨大的力量!\n\n歐普拉在脫口秀中兩度採訪《秘密》作者,更在創辦的《歐普拉雜誌》中推薦,「過去二十一年來我希望與觀眾分享的想法,其實就是這個,只是我沒有稱它為『秘密』罷了。」這本書也在她加持下,知名度迅速打開。\n\n心想事成,到底難不難?仔細探究,只要你能打破三大迷思,其實,一點都不難。 \n\n*第一大迷思:不知該想什麼、如何正確的想\n\n心想事成的關鍵在於「想」。\n\n你的想法必須符合兩大前提:「一、這是現實中可以達成的願望。二、這是可操之在己的。」台北市立聯合醫院中興院區精神科主治醫師詹佳真提醒。\n\n換句話說,中大樂透這種心願,並非操之在己,因此,無論意念多麼強烈,很抱歉,也無法成真。「必須回到現實感的層面,」王浩威也指出。\n\n然而,符合上述前提後,許多人的願望清單可能一張A4紙也列不完,你每天的念頭也可能有上千百個,你想要哪一個?\n\n「當你每天在想的時候,你就會知道,你本身的天賦,或是你本身的才能在哪裡,每個人都知道自己內在的心裡,都知道什麼是最適合自己的。」詹佳真強調,重點是要清楚、重複不斷的在腦海裡跟自己對話,才能夠清楚找到自己的願望標的。\n\n「你最常想的,最常把焦點放在上頭的,將會出現在你的生命中,成為你的人生。」\n\n誠如《秘密》一書所說:「你所吸引的,正是你意識中最主要的思想。」\n\n根據統計,大腦每秒鐘會處理高達四千億位元(bit)的資訊,但人們只能意識到其中大約兩千位元!因此,如果你無法從無窮的欲望中,釐清自己最強烈的願望,那麼,抱歉,你的想法,很快就會被淹沒在一堆資訊裡,你所發出的吸引力頻率也將是混雜的,無法成事。\n\n因此,想,並非只是空想、妄想、天馬行空的想,而是專注、認真的想。\n\n*第二大迷思:光會想,卻沒有執行力\n\n找到正確的願望標的後,不代表你就會起而行。事實上,許多人卡在第二關:執行力。\n\n英國健身協會曾統計,許多會員立下「瘦身」、「維持健康」等新年新希望,而在一月份加入俱樂部,並預繳一年會費。但到了第二個月,竟有三成的人連一次都沒到;到了年底,四成的人再也沒有出現過。這,正代表欠缺執行力!\n\n因為,「改變是困難的,」詹佳真說。根據舒適圈理論,要讓一個人走出舒適圈,樂於改變,必須要有夠強的動機。而這個動機,也要透過「想」。\n\n當你確定願望標的後,必須不斷去想像你已經擁有它的美好。因為你的力量繫於你的思想,唯有時刻感受這個美好,你的大腦頻率才會放在正確的事物,指揮全身朝這方向前進,並因美好的感覺,產生源源不絕的執行力。\n\n在腦神經學上,這也是有所據的。當人們不斷重複想某件事時,腦中某些神經細胞,就會建立起長期且固定的關係。例如,如果你每天的情緒都樂觀積極,就會刺激該模式的神經突觸生長,不斷為該模式的神經網絡進行接線和整合,長期下來就成為固定的情緒模式及思考慣性;大腦若能建立正向的連結模式,就可全力督促執行。\n\n換句話說,腦裡的所思所想,是否持續與專注,將決定你的執行力強弱。沒有執行力,再會想,都是空談。\n然而執行的過程並非總是一帆風順,遇到挫折時,若不及時調整,將使自己越挫越低落。\n\n*第三大迷思:受挫時,不懂得調整負面情緒\n\n從心想,到事成,這是最後一關。多數人遇到挫折後,可能陷入負面情緒,一旦你的想法聚焦在負面事物上,也將吸引負面事物向你襲來,最後功敗垂成。\n\n從大腦構造來看,這個推論也是成立的。詹佳真指出,當你憂鬱的時候,你的大腦右前額葉會有較強的電流活動,這是掌管你退縮、負面情緒的樞紐。此時,你的認知功能會因此變差,注意力、思考力、判斷力會降低。反之,當你心情好時,掌管積極情緒的大腦左前額葉,就會比較活躍,產生積極正面的思考。\n\n然而,「激勵理論」學者寇菲(Cofer)研究指出,人們遇到挫折時,正面思考者的比率低於10%。 \n\n「因為創傷經驗,讓自己一接觸相關的挫折,就會潛意識的拒絕。」詹佳真解釋。此時,你需要利用重播、秘密移轉物等心理學上的小技巧(見第一百零五頁圖「步驟4」),讓自己重新調整到正向的頻率,才能心想事成。\n\n今年一月底,管理大師彼得‧聖吉(Peter Senge)來台演講,為了證明信念的力量,他準備了一支支仿製孔雀毛的長條羽毛,要求聽眾用一根指頭,把這根羽毛給立起來。\n\n怎麼可能呢?聽眾納悶著,多數人失敗了。但彼得‧聖吉說,「再試一次!這次,你專心只看眼前美麗的花紋,是不是比較容易持久呢?」結果,很多人成功了!「不要只看你立著羽毛的那根指頭,要把眼光專注在美麗的遠景、美麗的羽毛上,比較容易持久。這,就是正面的能量在發生。」彼得‧聖吉這樣說。\n\n管理大師口中的「正面能量」,正是讓每個人得以心想事成的最後一哩路。\n\n清華大學社會學研究所教授王俊秀,也常教導學生要敢於做夢,相信「心想事成」。他認為,在不斷的「心想」過程中,你會持續的解構自己的缺點,並進一步建構自己突破缺點的能力,逐漸接近自己設定的心願。\n不止歐普拉、彼得‧聖吉是心想事成的提倡者,在台灣,我們也找到七個心想事成的例子,他們因為知道這個秘密,而獲得他們想要的財富、關係、成就、健康。\n\n儘管物價上漲,景氣不佳,然而,請你勇敢為自己許願,大聲向宇宙下訂單,祝自己今年心想事成吧!\n\n*[[心想事成的簡單步驟]]\n\n*[[你要這樣說--心想事成造句法]]\n\n*[[不要這樣做——心想事成的5大禁忌]]\n\n*[[好事吸引力》心想事成三部曲]]\n\n
【好事吸引力】這是一個古老理論,卻是新顯學\n祝你心想事成!是祝福朋友很棒的吉祥話。\n然而,很多人「心想」,卻無法「事成」:\n「我每天都很想中樂透,為什麼還是發不了財?」\n「我很想減肥,可是體重還是天天增加!」\n「物價上漲,我跟老闆要求加薪,卻換來一頓臭罵!」\n心想,要如何事成?心想事成三部曲,簡單做到心想事成!\n\n!【心想事成首部曲】大聲說出「我要!」\n你知道,你想要什麼嗎?你確定,這真的是你最想要的嗎?\n這是兩個關鍵題,如果答不出來,\n你的人生可能處於混亂的次序中,更別提心想事成了。\n心想事成的第一關,就是要釐清自己的想望,且不斷提醒自己這個想望。\n不然,就會淹沒在腦海中的千萬條想法裡。沒錯,是千萬條!\n根據統計,每秒鐘,大腦會處理高達四千億位元的資訊,\n但我們只能意識到其中的兩千位元!\n換句話說,如果你的想望,沒有不斷在腦海裡重複出現,很快,就會被淹沒。\n你,要非常清楚向宇宙下的「訂單」內容;越清楚,越容易「事成」。\n如果你的想法很模糊,甚至邏輯打架,\n你發出的頻率也將如此,回應你的,也是混雜的結果。\n!【心想事成二部曲】勇敢踏出舒適圈\n你明明知道自己很胖,運動很重要,卻總是挪不出時間嗎?\n你很清楚負利率時代來了,錢會越變越薄,\n但你寧願窩在沙發看電視,也不把證件準備好,\n去銀行開基金帳戶?\n你的心想已經夠清楚了,為什麼總是沒有執行力?\n要改變,你得先學會不斷想像自己改變後的模樣,\n讓這幅美好的藍圖,強化你的改變動機,\n督促自己離開舒適圈,建立全新習慣,成就新願望!\n當你試著改變,新的驚奇、新的喜悅,\n會伴隨著你的執行過程一塊來到。\n勇敢踏出舒適圈,前進!\n!【心想事成三部曲】用正向頻率導航\n眼看著快要跑到終點,怎麼,偏偏被路上的石頭絆倒呢?\n明明,你快要升官了,怎麼總部突然殺出個程咬金,擠掉你的位置呢?\n心想事成,不等於一帆風順。\n當你跌倒時,千萬不能懷疑自己,因為負面頻率一出現,\n就會相對吸引負面的人、事、物,讓自己越挫越低落。\n雖然心理學研究,人們遇到挫折時,九成以上的人會陷入負面情緒,\n但你仍然要學習調整自己,當那一○%正向面對挫折的人。\n因為這是可以練習的,在腦神經學上,人的思考模式是可以被塑造出來的。\n你可以被途中的石頭絆倒,但絕不能放棄!\n如何面對挫折,其實只是一念之間。這已經是最後一哩路了,加油!
商業周刊 第1093期 2008-11-03 撰文者:吳怡萱\n\n好市多舵手張嗣漢的3D哲學\n一般對運動員的印象,多是「頭腦簡單、四肢發達」,但在身高一百九十八公分的好市多總經理張嗣漢(見圖)身上,你看到的卻是數十年如一日的紀律。\n\n張嗣漢有一個三D哲學,一是Define,定義問題;二是Differentiation,追求產品差異化;三是嚴格遵守Discipline(紀律)。\n\n你必須先定義你的消費者是誰,他需要什麼?如果你不知道,就很難做生意;二是要針對消費者需求進行差異化研究,假如他需要讓人眼睛一亮的折扣,以及媲美百貨公司的高品質,就該設為目標;最後是紀律,也是最重要的,只要認為前二D正確無誤,就不能放棄。 \n\n*''Define定義''\n定義消費者是誰,他的需要是什麼?如果不知道,就很難做生意\n*''Diffentiation追求產品差異化''\n針對消費者需求進行異差化研究\n*''Discipline紀律''\n只要認為以上二者正確無誤,就應堅持到底
《兌》\n說以先民,民忘其勞,說以犯難,民忘其死,說之大,民勸矣哉!\n一、孫子兵法:道者,令民與上同意,可與之生,可與之死,而不(畏)危也\n二、湯姆歷險記中,湯姆鼓動玩伴油漆籬笆\n《賁》\n初九象曰義弗乘也,義或有「時」之意,「時行則行,時止則止」。初九雖當位、有應,惟與六二逆比,且初爻應為「潛」之時,故止,而有車亦舍。\n朱熹言「君子之取舍,決於義而已。」
【時報-各報要聞】繼併購ING安泰人壽後,富邦金 (2881) 與日盛金 (5820) 的招親聯姻案,也可望於本月底定案;一旦董事會順利通過,將成為國內第一樁金控併購案,並開啟國內第三次金改序幕。屆時,富邦金旗下壽險、證券實力將分別直逼國壽、元大證券的龍頭寶座。\n\n富邦金、日盛金上半年每股淨值各為20.3元、9元,昨日收盤價各為19.05元、2.49元。據悉,日盛金已與富邦金簽署併購草約,雙方將以100%換股方式,展開併購。由於日盛金帳上約40億元負債,加計累計虧損、資產品質調整及據點價值因素後,雙方換股比例約為3.5至4.5股的日盛金換取富邦金1股。\n\n富邦金董事長蔡明忠於10月中旬前,多次和日盛金董事長陳國和,赴金管會報告、商討整併細節。對此,富邦金僅以「不與置評」低調回應。(新聞來源:工商時報─記者彭暄貽台北報導)\n\n2008/10/21 07:52時報資訊
【經濟日報╱記者蔡靜紋/台北報導】2008.11.29 02:57 am\n\n富邦金控併購日盛金控破局。富邦金與日盛金下半年重啟合併談判,但在新生銀行允諾將再大舉認購日盛金現增100億元後,已經悄然劃下休止符。\n\n對於前後傳出的各種併購傳言,富邦金控總經理龔天行昨(28)日評論是「烏龍一場」。\n\n對於是否可能在日盛銀行完成增資、體質改善後,再進一步併購日盛金?龔天行說,「既然新生銀行已經認購,當然我們不可能(併購)」。\n\n日盛金董事長陳國和一直有意為日盛金控找個好婆家,去年12月時便曾與國泰金、永豐金、AIG、SAC等接觸,原本有機會促成,日系大股東新生銀行不滿換股比例,加上當時日盛內部評估總統大選後,或有機會再等到更好的價格,暫停對外招親。未料520後台股一蹶不振,又逢金融大海嘯,日盛金股價在11月24 日創下2.34元的新低。\n\n對於昨日市場再度傳出「富邦金併日盛金」的說法,富邦金控在證交所公開資訊觀測站,以「並非事實」強烈字眼否認。\n\n【2008/11/29 經濟日報】
【聯合晚報╱記者葉憶如/台北報導】 2008.11.28 03:12 pm \n\n今日市場盛傳「富邦金(2881)擬以1:5的換股比例合併日盛金(5820)」,且富邦金內部高層已就相關換股比例事情進行細部討論,似乎已接近定案,上午日盛金買盤簇擁下一路開高走高,盤中急攻漲停,亮燈價2.83元,但富邦金反而開低走跌,一路跌落20元附近震盪,以目前市價來看,富邦是以溢價約40%左右價格買下日盛金,不過若日盛金持續漲、富邦金跌,雙方的溢價就會逐漸縮小。\n\n據了解,富邦金、日盛金上半年每股淨值各為20.3元、9元,若以1比5為換股比例,。據悉,日盛金已與富邦金簽署併購草約,雙方將以100%換股方式,展開併購。由於日盛金帳上約40億元負債,加計累計虧損、資產品質調整及據點價值因素後,雙方換股比例約為3.5至4.5股的日盛金換取富邦金1股,今日市場上即傳出雙方已敲定1比5的換股比例,且用換股的方式,富邦金又不用出一毛錢現金。不過據傳雖然富邦金與日盛金對換股比例已有合併的共識,但日商大股東方面似乎仍有不同的意見,是目前合併案卡住遲遲未決的主要原因之一。\n\n而市場也相當關心富邦金才於10月20日宣布併購ING安泰人壽,接下來又要合併日盛金,口袋是否夠深,且要承接日盛金債務與營運資產,加上才剛獲大陸銀監會獲准投資入股廈門商銀,銀行拓展從台灣到兩岸三地,10月下旬再大舉吞下ING人壽擴展保險版圖,現在又要買下日盛金,擴展速度之快台灣金融業無人能及,同時市場也傳聞富邦金董事長蔡明忠已向金管會報告過此事,金管會主委陳樹雖不願證實,並他強調,如果沒有的事,也一定會告訴大家,此番談話耐人尋味,因此市場也就認為富邦金與日盛金合併案應該近日內有譜,市場傳聞也就一直甚囂塵上,推升日盛金股價近期表現也相對抗跌。\n\n市場認為富邦金與日盛金招親聯姻案,也可望於本月底定案;一旦董事會順利通過,將成為國內第一樁金控併購案,並開啟國內第三次金改序幕,屆時,富邦金實力將分別直逼國壽、元大證券龍頭寶座。
富邦金 (2881-TW下單)昨(21)日甫宣布併購ING安泰人壽,今日再傳出將併日盛金 (5820-TW),一但董事會通過,將成為台灣第一樁金控併金控的併購案,對此,富邦金今天發布重大訊息表示「不予置評」,日盛金發言人鍾芳程則表示,確有增資案進行中,但主要交由高盛擔任財顧,所以到底富邦金是否來「談親」,鍾芳程表示「不知道」。 \n\n富邦金這幾年在董事長蔡明忠的帶領下,不斷靠著併購擴大事業版圖,從台北銀行、港基銀行、到廈門商銀,一路將旗下機構,從台灣擴張到兩岸三地;昨日併購ING安泰人壽後,總資產規模達2.5兆元,一舉躍上第二大金控。 \n\n富邦金在成功買下 ING安泰人壽並沒有因此滿足,在成功擴展銀行、壽險版圖後,今日再傳出富邦金再鎖定證券起家的日盛金,而且雙方已簽署併購草約,將以100%換股方式,展開併購,而且最快可能10月底就會定案。對此,富邦金發布重大訊息表示「不予置評」。 \n\n富邦金今天的回應,相較於與日前市場傳出金管會有意促成富邦金與台新金合併時,富邦金斬釘截鐵表示「從未金管會討論合併台新金一事,亦未與台新金有任何接觸」來看,似乎有為富邦金併日盛金預留發展空間的可能性。 \n\n而日盛金部分,發言人鍾芳程表示,「增資案確實還在進行中。」他說,去(2007)年 4月股東會時通過增資40億元,以強化日盛銀的資本水準。此增資案在去年股東會時雖授權一年,但一直增資未成,所以今年 6月股東會時曾宣告增資停止,但其實此增資案仍在進行中。 \n\n日盛金表示,近來美國雷曼兄弟等金融機構發生破產或經營危機事件,並因此造成國內外金融機構面臨相當程度衝擊。只有日盛金並未因此須提列鉅額損失,或發生資金不足情形。 \n\n為持續改善財務結構與提昇經營績效,日盛金表示,經董事會委任高盛擔任財務顧問,積極與相關機構進行接洽並研擬各項策略,以維護股東權益。目前該增資案仍依既定程序進行中,只是尚未有任何結論。至於富邦金是否與日盛金簽署併購草約?日盛金表示:「純屬媒體之臆測。」 \n\n日盛金去年就數度傳出多家金控有意比價,與之結親,除了富邦金當時就名列「緋聞主角」,其餘包括:國泰金、永豐金都曾在名單上,但在一連串金融風暴肆虐後,滿手現金的富邦金在此刻傳出再度與日盛金談聯姻,確實不無可能。 \n\n鉅亨網記者陳慧琳‧台北 2008/10/21星期二15:30\n\n永豐金證券表示,原本富邦金資本過剩造成營運效率不彰的問題,在景氣不佳時則得以平反。富邦金收購ING安泰人壽的價格相當便宜,且大幅提升人壽保費市占率至第二名的位置。今日又傳出,富邦金將進一步購併日盛金,將使富邦金資產規模進一步擴大。 \n\n不過,永豐金證券研究處認為,富邦金若在短時間內進行一連串的購併行動,恐造成未來整併初期人力及資源調整困難度的提高,因此研究處以保守方式看待。\n\n
富邦金併日盛金?陳樹語帶保留:「回答有無都會影響股價」\n鉅亨網記者陳慧琳‧台北\n2008 / 11 / 05 星期三 21:24\n富邦金 (2881-TW下單)甫於10月20日宣布併購ING安泰人壽,市場盛傳接下來富邦金將併日盛金 (5820-TW),外界關心富邦金董座蔡明忠是否向金管會報告過此事,對此,金管會主委陳樹今 (5)日不願證實;但陳樹強調,「如果沒有的事,一定會告訴大家」,陳樹此番談話耐人尋味。\n富邦金這幾年在董事長蔡明忠的帶領下,不斷靠著併購擴大事業版圖,從台北銀行、港基銀行、到廈門商銀,銀行拓張從台灣到兩岸三地;10月下旬再大舉吞下ING人壽擴展保險版圖。\n\n之後,市場再盛傳,富邦金接下來鎖定證券起家的日盛金,雙方已論及婚嫁,只等著看好日子就可宣布成親。\n\n外界關心富邦金董座蔡明忠是否向金管會報告過此事,對此,陳樹表示,由於涉及兩金控合併,無論回答有或沒有,都會引發各界揣測,進而影響股價,因此不願證實;但陳樹強調,如果沒有的事,也一定會告訴大家,陳樹此番談話耐人尋味。
【經濟日報╱記者李淑慧、雷盈/台北報導】2008.11.06 03:22 am \n\n富邦金控董事長蔡明忠與日盛金控董事長陳國和,上月聯袂拜訪金管會主委陳樹,陳樹昨(5)日對此表示,對於市場自發性的併購案都樂觀其成。此外,若金控想要分割出售,金管會也不反對。\n\n外傳富邦金只想要併購日盛證券,不準備併購日盛銀行,若金管會不反對日盛金分割出售,很有可能促成富邦金併購日盛證券,日盛集團也能拿這筆錢來改善日盛銀行的財務狀況。不過,雙方是否能順利合併,仍有變數。\n\n富邦金總經理龔天行對此表示,不會對任何個案發表任何評論。\n\n原本市場盛傳富邦金併購日盛金一案,在上月底富邦金董事會通過後將可定案,不過,龔天行說,上月30日富邦金的確召開董事會,不過,並未討論特別的案子。\n\n陳樹昨天下午與杜拜金融主管機關簽訂金融監理合作備忘錄(MOU)之後與媒體會談,不僅暢談亞洲金融中心的理念,也提到他對金融市場整併的看法。\n\n盛傳上月中旬蔡明忠與陳國和赴金管會向陳樹報告整併的計畫,記者向陳樹求證時,他尷尬地微笑,不否認地說,「業者有任何意見,都可以向主管機關反映」。\n\n由於市場傳出富邦金只想要購買日盛證,不想買日盛銀,不過,台灣過去並未有金控出售的案例,法規中也沒有明文規定。對此,陳樹說,除非併購案損及大眾權益,或影響金融市場的安定,否則金管會都會盡量予以尊重,會給業者足夠的彈性與空間去做,「金管會樂觀其成,會給他們機會。」\n\n由於日盛銀的虧損已經超過資本的三分之一,觸及銀行法第64條的警戒線,金管會上月底已經發函要求日盛銀限期增資。\n\n【2008/11/06 經濟日報】
2014年日本动漫《海贼王》连载至1126[BT下载/迅雷下载]\nhttps://www.btdx8.vip/torrent/hzw1999_1999.html\n\nhttps://weibo.com/n/%E6%9E%AB%E9%9B%AA%E5%8A%A8%E6%BC%ABdaphnetd?tabtype=feed\n\nhttp://www.yyets.com/php/resourcelist?channel=movie&area=&category=&format=&sort=\nhttp://www.yayaxz.com/movie\nhttp://www.yyets.cc/\nyayaxz\n\nBT世界網\nhttps://www.btsj6.com/\n看劇網\nhttps://www.kanju5.com/\n\n《行尸走肉》第3季连载中\nhttp://www.yyets.com/php/resource/11057\nhttp://www.yayaxz.com/resource/11057\n【英剧】《新福尔摩斯》\nhttp://www.yayaxz.com/resource/11133\n《福尔摩斯:演绎法》第1季连载中 \nhttp://www.yyets.com/php/resource/26898\nhttp://www.yayaxz.com/resource/26898\n\n【美剧】《识骨寻踪》第8季连载中\nhttp://www.yayaxz.com/resource/11097\n《疑犯追踪》第2季连载中\nhttp://www.yyets.com/php/resource/11009\n《蓝白红三部曲》已上映\nhttp://www.yyets.com/php/resource/28509\n\n楓雪動漫\nhttp://bbs.opfans.org/forum.php\n\n漫遊\nhttp://share.popgo.org/\n海贼王\nhttp://share.popgo.org/search.php?title=%E6%B5%B7%E8%B4%BC%E7%8E%8B\n\n如何下載 VeryCD 資源\nhttp://www.verycd.com\nhttp://www.verycd.gdajie.com\nhttp://www.yyets.cc/verycd 網址的 verycd 和 .com 中間加個 .gdajie 就可以看到下載連結\nhttp://fhchen2002.blogspot.tw/2013/02/verycd.html\n\n小電驢\nhttp://www.xiaodianlv.com/\n电驴备份网\nhttp://xverycd.com/\n\nhttp://www.ed2kers.com/\n古典音乐\nhttp://www.ed2kers.com/%E9%9F%B3%E4%B9%90/%E5%8F%A4%E5%85%B8%E9%9F%B3%E4%B9%90\n豬豬字幕組官方論壇:http://bbs.jumpcn.com/\nhttp://bbs.jumpcn.com/forum.php\nLine Offline 第1 - 92集 高畫質 繁體中文 (其他集數和Line town看說明,8/10更新)\nhttp://www.youtube.com/watch?v=zfNLKPm9Waw\nLine Offline 下載:\n\n\n\n\nhttp://goo.gl/MOUD6\nLine Town 下載:\nhttp://goo.gl/K8lIO\nhttps://drive.google.com/folderview?id=0BzGo24kl6pLGbWcySldMRHB4MDg&usp=sharing
穆西納被認為是最睿智的洋基球員,就連高掛球衣退休,他都選擇以自認最睿智的方式急流勇退。\n\n洋基球迷一定還記得,穆西納在去年季末表現就像溜滑梯,屢屢上演「爆爆樂」,最後當他被拉下先發輪值時,穆帥的自尊心讓他一度與當時的總教練托瑞關係緊張,也曾拒絕接受訪問。\n\n所以,當穆西納選擇在20勝球季後退休,也就不太讓人意外。要留要走,他都希望自己是做決定的那個人,而不是有天老得投不動了,需要有人勸他退休。\n\n穆西納習慣「操之在我」,就像昨天「福斯運動網」搶先披露穆帥將退休時,他的經紀人聲明中強調「穆西納希望能親自宣布他的決定」。\n\n洋基隊友戴蒙佩服這個決定「他選擇在攀上最高峰時離開,我知道這有多困難。」穆西納的17年好友、名人堂球星帕默(Jim Palmer)則表示:「他能在此時放手,這是最佳劇本。」\n\n穆西納擁有史丹佛經濟學學位,「紐約每日新聞」如此形容他,「每個與他交談的人,都不會忘記他來自史丹佛。」穆帥出了名的討厭笨問題,當媒體發問太愚蠢時,他「酸人」也會不留情面。換個角度來看,懂得如何與穆西納相處的人,習慣在他身上得到最真實也最漂亮的答案,面對每一個認真的問題,他也會認真思索一段時間,再慢慢傾吐他的答案,而不是虛應幾句。\n\n【2008/11/21 聯合晚報】 【聯合晚報╱記者陳宛晶/綜合報導】
繼碰購ING安泰人壽後,富邦金 (2881) 與日盛金 (5820) 的招親聯姻案,也可望於本月底定案;一旦董事會順利通過,將成為國內第一樁金控併購案,並開啟國內第三次金改序幕,屆時,富邦金旗下壽險、證券實力將分別直逼國壽、元大證券的龍頭寶座。\n\n富邦金、日盛金上半年每股淨值各為20.3元、9元,昨日收盤價各為19.05元、2.49元。據悉,日盛金已與富邦金簽署併購草約,雙方將以100%換股方式,展開併購。由於日盛金帳上約40億元負債,加計累計虧損、資產品質調整及據點價值因素後,雙方換股比例約為3.5至4.5股的日盛金換取富邦金1 股。~工商時報2008年10月21日頭版頭條\n\n2008/10/21 08:24中央社
http://monkeygod.tiddlyspot.com/index.html\n比邱治無明\nhttps://groups.google.com/g/jimmy-upasaka\nGmail\nhttps://mail.google.com/mail/?ui=2&shva=1#inbox\n漢語多功能字庫\nhttps://humanum.arts.cuhk.edu.hk/Lexis/lexi-mf/\n訂便當\nhttps://www.dinbendon.net/do/\n日盛入口網頁\nhttp://jsidc.jihsun.com.tw/jsun/\n鉅亨網\nhttp://www.cnyes.com/\n聯合新聞網\nhttp://udn.com/NEWS/mainpage.shtml\n經濟日報\nhttps://money.udn.com/money/index\n蕃薯藤\nhttp://www.yam.com/\nyahoo\nhttp://tw.yahoo.com/\n周易文化研究會\nhttp://www.iching.url.tw/\n易經與管理Minder Chen's Web Site\nhttp://faculty.csuci.edu/minder.chen/china/\n易學網\nhttp://www.eee-learning.com/\nfacebook\nhttp://www.facebook.com\n憂患九卦(temp)\nhttp://mypaper.pchome.com.tw/faerysky/post/1321179005\n手工皂-精油-美容討論區 » 首頁\nhttp://www.soap-diy.com/forum1/\n新色調手工香皂坊\nhttp://lisa-web.myweb.hinet.net/index.htm
人們喜歡用「順著竿子往上爬 」去諷刺那些對上司唯惟諾諾、附庸風雅的人,退休了的老年人當然不會去經營此道,但是,如果反其意而用之,「順著竿子往下滑」將會怎樣呢? 章老,去年剛退休。他到兒子家去小住,選穿了自己滿意的夾克和皮鞋。兒媳一見卻不滿意,說:「 爸,瞧你那個寒酸樣!出去豈不惹人笑話?」他一聽,心裡頓生反感:媳婦教訓起公公來了!正待發作,兒子向他使眼色。他忍了,轉而問:「那我該穿什麼樣子的?」兒媳機靈,抓起皮包邀他一起上街選購,換他一套渾身上下的高級時裝、黑亮皮鞋。回來,左鄰右舍一見,誇上了:「 好帥的章老!」「 好巧的兒媳!」公媳倆受到如此讚揚,雙方的陌生感、戒備心一下子消除殆盡。章老一住數月,長了一身精神,活了一張笑臉,他那兒媳也乖了一張巧嘴,相處得好不開心。前天,見到章老,問他的體會。他說:「家務事可有學問。當時我要是逆了她,戰爭一打,不知要拖到何年何月。現在一家和睦不說,我還受到『開通、大度,能適應潮流』的讚揚。順著竿子往下滑,好啊!」 順著竿子往下滑,滑掉了老人倚老賣老、處處看不慣、嘮嘮叨叨的陋習;滑得了兒媳增進孝道,願意與公婆閒談,加深了相互的了解;滑得兩代人拉近了距離,沒有隔閡,這是一舉幾得的好事。「下滑」,是一件謙讓作風,不是丟人的事。清代黃宗羲說:「骨肉之間,多一分渾厚,便多一份天性,是非上不必太明。」老年人要放下架子,親切待人,年輕人釋放暖意,善待老人,共同享受滋潤的天倫之樂。彎的下腰才是成熟,放得下身段才是高手。
1.釐清願望\n弄清楚你到底要什麼?這真是你想要的嗎?\n如果不清楚自己要什麼,你將發出混雜的頻率,吸引的也將只是混雜的結果。 不過願望必須是:1.人生中可實現的;2.操之在己的。 \n\n2.向宇宙下訂單\n確定願望後,請大聲且明確提出要求。\n神經語言程式學(Neuro-Linguistic Programming,NLP)認為,人們使用的語言模式會影響心念,進而影響個人所散發出的能量。善用正確造句法(見第108頁表),你也可以讓自己的話更動聽、成為正向頻率的發射器。\n\n3.專注自己的願望\n必須透過注意力的提升,才能增強你對願望的頻率、能量。\n許願文:將心願寫下來,並詳加描述希望它帶給你的感覺,如有自信、受人重視、富足等。\n願景板:將自己希望擁有的東西(名車、情人等)的照片,貼在海報或是布告板上,放在經常看得見的地方,並進行觀想。\n觀想:在腦海中想像一個「你已經實現夢想」的畫面,並且仔細體會它帶給你的愉悅感受。\n\n4.重新調整頻率\n一旦事與願違,焦點就會轉移到負面想法。你必須隨時維持在正向頻率。\n\n樂觀的現實感:允許自己從實現小心願著手,再逐步調高難度,關鍵是一路保持樂觀,發揮正向吸引力。\n\n聚焦在美好的事物:例如不要將焦點放在「減重」,而是放在你理想的「完美體重」上,試著感受你擁有完美體重時的感覺。\n重播一次:想想一天中是否有讓你感到洩氣時,請改用讓你感到滿意、舒坦的方式,在心中「重播」一次。\n準備「秘密移轉物」:預想或寫下可輕易改變你感覺的事物,如美好的回憶、愛的人、未來憧憬等。當沮喪時,讓焦點改變,就能轉變頻率。\n\n5.感覺即將擁有\n你必須感覺很好:你已經上路了,感覺你正在接收你希望擁有的東西,或是正逐漸成為你希望的形象。接收的感覺將加速讓你心想事成。\n\n模擬未來生活:以減重的人來說,既然你已向完美體重邁進,就不應該再去購買目前體型所穿的衣服。想要更富裕的人,應該刻意去看喜歡的東西,並且對自己說:「我付得起,我可以買下它。」
鉅亨網記者陳慧琳‧台北2008 / 11 / 14 星期五 18:45\n\n惠譽國際信用評等公司今(14)日將日盛金 (5820-TW)及子公司日盛銀與日盛證券的長期外幣發行人違約評等(IDR)展望及國內長期評等展望由「穩定」調整為「負向」。惠譽同時調降日盛金控集團大多數的評等,並調降其發行在外之次順位債券國內長期評等。完整的評等結果列示於新聞稿下方。\n\n日盛金控集團的評等調降主要反映日盛銀薄弱的獲利能力與長期偏弱的資產品質可能對集團的資本水準造成壓力。惠譽認為,改善的獲利能力與資產品質、或是大額的資金挹注將為提高信用評等的正面因素。反之,若日盛銀因遭受大額虧損,使集團的資本水準嚴重減弱,將對該集團的評等造成調降的壓力。\n\n日盛銀的發行人違約評等(IDR)主要反映來自集團主要子公司日盛證的支援。日盛銀的個別評等則反映其趨弱的獲利能力與較差的資產品質,以及受到該行致力維持合理的流動性水準影響而削弱的資本水位。\n\n在不利的經濟環境下,日盛銀2008上半年的獲利表現,持續受到核心盈餘趨弱與壞帳提存費用增加的不利影響。日盛銀的放款品質雖已改善,惟仍偏弱。日盛銀 2008上半年底的逾放比率為3.7%,較業界平均的1.5%為高,而該行2008上半年底的壞帳覆蓋率則仍為相對低的35%(2007年底該比率為 26.8%)。\n\n日盛銀2008上半年底第一類資本比及資本適足率分別為7.9%與8.8%,是惠譽可接受的水準。但若將逾放比降低並對其逾期放款採用較高的放款損失準備標準納入資本比率計算,日盛銀的資本比率將明顯降低。該行的流動性允當,係有鑑於其相對高的流動性準備以及較低的存放比率。\n\n日盛證的評等因日盛銀持續的資本需求而受到負面影響。然而日盛證的個別評等則反映其持續良好的獲利表現、在可控制範圍內的風險承受部位、允當的資本水準、以及良好的資產負債表的流動性。\n\n日盛證的評等亦一併考量該公司業務本質上波動性較大的收益來源。儘管在不利的股票市場環境下,日盛證2008上半年的年化股東權益報酬率仍達3.1%。惠譽預期,該公司來自投資組合的風險有限,由於日盛證已大幅降低其自營投資部位,股票投資僅佔該公司整體投資部位的15%。日盛證有允當的資本水準,該公司 2008上半年底的資本適足率為405%。\n\n市場普遍猜測,富邦金融控股公司(富邦金)可能與日盛金進行購併。富邦金在國內跨足的金融事業領域相對廣泛,包括:銀行、保險、證券、及投信等業務。\n\n若富邦金與日盛金的合併案順利完成,惠譽認為日盛金將受惠於富邦金較大規模的市場地位,以及由富邦金所提供的潛在流動性與資本水準支援,此支援將取決於富邦金最終的集團資本配置,並可能因此提升日盛金與其子公司的評等水準。\n\n日盛金於2002年2月成立,為一家以證券公司為集團主體的金融控股公司。日盛金擁有多家子公司,包括一家規模較大的證券公司—日盛證以及一家小型銀行— 日盛銀。日盛證2008年6月底的經紀業務市佔率為4%,以股票經紀業務排名為國內第四大證券公司。日盛銀為國內小型的銀行,截至2008年8月底,存款市佔率為0.9%。
李雪雯 2009/02/12 \n「成功」的定義是可大可小,並非只有富可敵國的企業主,才能算是了不得的成就,就算是開一間小小的賺錢店舖、年薪千萬的超級業務員,或者僅僅是對自己的結果及所有滿意,都可以算是一種成功。\n最近,筆者與一位年過半百的朋友聊天。言談中,盡是這位朋友的失意及挫折。他認為過去自己並不是沒努力過,但似乎成功的腳步,卻從未降臨在他身上。\n\n這讓筆者想到了採訪過的許多成功人物。當然,「成功」的定義是可大可小,並非只有富可敵國的企業主,才能算是了不得的成就,就算是開一間小小的賺錢店舖、年薪千萬的超級業務員,或者僅僅是對自己的結果及所有滿意,都可以算是一種成功。\n\n仔細觀察這些成功者的背後,其實可以發現他們具有相當類似的特質。以下歸納整理出八項,希望能與許許多多,認為「自己距離成功還很遠,或者是覺得還有再努力空間」的讀者一同勉勵。\n\n''一、火一般的熱情。''有熱情的人,才會有積極樂觀的態度,以及奮鬥努力的目標,更有助於激發龐大的潛能,想辦法讓個人事業更上一層樓,或者是開創出恢宏的新局。\n\n''二、設定正確目標。''有了目標,所有的努力才會有方向。當然,目標不是一蹴可幾的。以全球首富巴菲特為例,其財產的累積也是經過數十年的堆疊,才有今日的規模。\n\n同樣的,目標也不一定是那麼高深遠大,但其核心重點卻是:一旦設定了目標,才能訂出每個階段達成的時間表。如此按表操課,也才有可能步上成功的坦途。\n\n''三、有所本的充足自信。''這種特質在許多企業主,或是超級業務員身上都可以發現。這些成功人士總有充足的信心:只要照著設定好的正確目標,持續不間斷地努力下去,就一定可以達到。\n\n''四、長期的紀律。''有了目標、自信及熱情之後,最大的絆腳石可能就是「三分鐘熱度」地無法持續。愛因斯坦曾經說過:「天才是一分的天份,加上九十九分的努力」。這中間的努力,也必須靠著不斷鞭策自己的紀律來完成。\n\n''五、選擇適合自己的策略。''多數成功人士多半會先仔細觀察其他成功人士的優點,並且選擇一個最適合自己的策略。正因為每一個人的優、缺點不同,成功人士總是懂得找出一條「隱藏缺點,發揚個優點」的策略,讓自己輕鬆地達到成功。\n\n''六、善用「人脈」的槓桿效果。''開店找點有一個鐵則是:「人潮就是錢潮」,這在成功人士身上一樣適用。在成功人士的背後,不論他是有權或有錢,都是許許多多人脈所累積出來的結果。\n\n''七、正確解讀資訊。''資訊的正確解讀,關係到正確目標的設定、投資的準確度,以及對趨勢、潮流的掌握程度。不管是投資理財、創業開店,其實都相當依賴這項能力。\n\n''八、心存正念及善念。''假設走旁門左道,或是心念不正,儘管也曾有人大富大貴過,但事後證實,成功也只不過是曇花一現,來得快,去得也快的紙上富貴一場罷了。
Capriccio brillant for Piano and Orchestra in B minor, Op.22/為鋼琴及管弦樂團譜寫的B小調光輝奇想曲\n作曲家:Mendelssohn-Bartholdy, Felix/孟德爾頌/18\n演奏者:Serkin, Rudolf/塞爾金/Piano/鋼琴 ; Ormandy, Eugene/奧曼第/Conductor/指揮 ; Band: Philadelphia Orchestra/費城管弦樂團 ;\nCD編號:SONY :SBK48166\nCD名稱: 布拉姆斯、舒曼鋼琴協奏曲集\n收錄這首樂曲的其他CD\nhttps://www.google.com.tw/search?hl=zh-TW&biw=1073&bih=673&tbm=vid&sa=X&ei=fBECULWdFM_OmAWN9MXrCQ&ved=0CDoQBSgA&q=Capriccio+brillante+for+Piano+and+Orchestra&spell=1\nMENDELSSHON: Capriccio Brillante op. 22 - Paolo Restani, piano\n\nhttp://www.youtube.com/watch?v=osI65tDBK-U\nhttp://www.youtube.com/watch?v=mNZp5DzFUyY\nhttp://www.youtube.com/watch?v=tAyvdttygGw\n\n\nSilvery Waves(銀波)\nhttp://www.youtube.com/watch?v=226j4yHO6Pw\nhttp://www.youtube.com/watch?v=1LWwp-HPkC4&feature=related\nhttp://www.youtube.com/watch?feature=endscreen&NR=1&v=V1lvI6NDrhs\n\nScottish Fantasy for Violin and Orchestra, Op.46/蘇格蘭幻想曲,作品46\n作曲家:Bruch, Max/布魯赫/1838/1920\n演奏者:Midori, Violin Israel Philharmonic Orchestra Zubin Mehta/Conduct\nCD編號:Sony :SK58967\nCD名稱:Midori plays Sibelius & Bruch五島 綠演\n收錄這首樂曲的其他CD\n《創作背景及特色》\n蘇格蘭的「粉絲」\n布魯赫創作「蘇格蘭幻想曲」的動機,據說是因為他讀了蘇格蘭作家華爾特‧史考特的書,並且深受感動而興起了創作音樂的念頭。布魯赫一向對英國和蘇格蘭有濃厚的興趣,在他擔任利物浦愛樂的常任指揮之前,他就已經到英國旅行過兩次了,在旅行中,布魯赫採集了許多民謠曲調,這些音樂後來就運用在「蘇格蘭幻想曲」當中。\n「為小提琴、豎琴與管弦樂團合奏的幻想曲」\n這首曲子是運用蘇格蘭古謠完成的幻想曲。曲子獻給當時的小提琴大師薩拉沙泰,並由他進行首演。除了小提琴家之外,豎琴家也被安排在舞台的前方,所以整體上就像是小提琴和豎琴的雙重協奏曲一樣。\n\n《全曲導聆》\n序奏:\n極緩板,序奏的音響,感覺悽涼,又帶有濃厚的幻想性,主奏小提琴猶如說故事一般地演奏。\n第一樂章:\n如歌的行板。序奏之後,弦樂引導一股帶有宗教氣氛的旋律,隨後豎琴和小提琴的加入,演奏出親切的主題。這是根據蘇格蘭民謠「Aold Rob Morris」所作的改編。\n第二樂章:\n第二樂章主要的樂段,是由小提琴主奏的快活主題,這是來自蘇格蘭民謠「Dusty Miller」而來。\n第三樂章:\n持續的行板,主奏小提琴拉奏另外一個可愛的主題,這是來自於蘇格蘭民謠「可愛的強尼」。在這一段音樂之後,樂曲再轉為生氣蓬勃的氣氛。\n第四樂章:http://www.youtube.com/watch?v=FndeCs9Nrfk\n戰鬥性的快板,這個雄壯威武的主題,改編自蘇格蘭古老的戰歌「Scot wha hae wi Wallace bled」。之後小提琴便有複雜而華麗的演奏技巧出現。\n\nhttp://www.youtube.com/watch?NR=1&feature=endscreen&v=-WKUaqr9A6w\n\nMozart, Sonata for piano and violin KV 454 - Ojstrach, Badura-Skoda 1/2\nhttp://www.youtube.com/watch?v=PCqDjQwPfFc\n\nhttp://www.youtube.com/watch?feature=endscreen&v=ahBp5pZLO8U&NR=1\n\nTchaikovsky: Piano Concerto No.1 - Argerich&Dutoit/OSR(1973Live)\nhttp://www.youtube.com/watch?v=aU2mZSUPXk4&feature=related\n\nW.A. Mozart Concerto in re min. K.V. 466 (completo) Martha Argerich in Giappone video -\nhttp://www.youtube.com/watch?v=Zo3tK2k0A60&feature=endscreen&NR=1\n\nMozart: Piano concerto n. No. 21 in C major, K.467 Pollini-Muti\nhttp://www.youtube.com/watch?v=i2uYb6bMKyI&feature=related\n\n\nGlenn Gould: Bach Goldberg Variations 1981 Studio Video (complete)\nhttp://www.youtube.com/watch?v=N2YMSt3yfko&feature=youtu.be\n舒曼 兒時情景\nhttp://www.youtube.com/watch?v=ec_g_M-VNNo\nRubinstein Mozart Concerto 17, 20, 21, 23 & 24.wmv\nhttp://www.youtube.com/watch?feature=player_embedded&v=3J38vad2DVs\nTchaikovsky: Piano Concerto No.1 - Evgeny Kissin - Seiji Ozawa 1995\nhttp://www.youtube.com/watch?v=OnWDTqJCXhw\n\nPhilippe HIRSCHHORN @ PAGANINI Violin Concerto No.1 (complete) R.Defossez, 1967\nhttp://www.youtube.com/watch?v=vPsG9kCcJJU\nViolin Concerto No.1 in D major, Op.6 M.S.21/D大調第一號小提琴協奏曲 (原作為降E大調),作品6 \n《經典名曲導聆》帕格尼尼:第一號小提琴協奏曲\n作曲家:Paganini, Nicolo/帕格尼尼/1782/1840\n演奏者:Hirshhorn, Philippe/菲利浦‧赫胥宏/Violin/小提琴 ;\nDefossez, Rene/荷內‧德佛賽斯/Conductor/指揮 ;\nBand: National Orchestra of Belgium/ 比利時國家管弦樂團 (1967.5.27 Live at Final of Queen Elisabeth Competition) ;\nCD編號:Cypres :\n\n\nJazz Suite No.1/第一號爵士組曲 \nhttps://www.youtube.com/watch?v=3tGOFEgDzug\n\nJazz Suite No.2 (Suite for Promenade Orchestra)/第二號爵士組曲(為逍遙管弦樂團而作)*\nhttps://www.youtube.com/watch?v=rkXQXAvMICs\n\n1 March\n2 Dance I\n3 Dance II\n4 Little Polka\n5 Lyric Waltz\n6 Waltz I\n7 Waltz II\n8 Finale\n\nBEETHOVEN Symphony No.6 (Pastoral) OTTO KLEMPERER\nhttps://www.youtube.com/watch?v=bz8Fp-Wm0U4\n\nBEETHOVEN Symphony No.7 in A,Op.92 OTTO KLEMPERER\nhttps://www.youtube.com/watch?v=fiIh80jYeGE\n\nBeethoven, Sinfonía Nº 8 en Fa mayor, Opus 93. Otto Kemplerer\nhttps://www.youtube.com/watch?v=4wEjYmfvym0\n\nBeethoven, Sinfonía Nº 9 "Coral". Otto Kemplerer\nhttps://www.youtube.com/watch?v=jz5AJwbn6uU\n\nWaltz 'The waves of the Danube'/「多瑙河的微波」圓舞曲\n伊凡諾維契:「多瑙河的微波」圓舞曲\nhttps://www.youtube.com/watch?v=bME0yvDcCzY\n\nBeethoven Piano Concerto No.3 Annie Fischer \nhttps://www.youtube.com/watch?v=_01wd8wc0IM\n\nAnnie Fischer - Mozart - Piano Concerto No. 20. in D minor \nhttps://www.youtube.com/watch?v=SN8fUfchcFI\n\nOld Russian Waltzes/懷舊俄羅斯圓舞曲\n作曲家:Various\nhttps://www.youtube.com/watch?v=CY298YD2kZw\n\n Concerto for Two Mandolins(Guitars), Strings & Basso continuo in G major, RV.532/G大調雙曼陀林(吉他)協奏曲,作品532\n 作曲家:Vivaldi, Antonio/韋瓦第/1678/1741\n 演奏者:Ugo Orlandi, Dorina Frati / Mandolines, I Solisti Veneti / Claudio Scimone\n CD編號:APEX :256461264-2\n CD名稱:- \n\n The Piano Album\n 作曲家:Various\n 演奏者:Hough, Stephen/史蒂芬‧霍夫/Piano/鋼琴 ;\n CD編號:Warner :\n CD名稱:- \n\n 5 Minuets and 6 Trios for String Quartet, D.89/五首為四重奏演奏的「小步舞曲」*\n 1. Minuet and Trios in C Major\n 2. Minuet in F Major\n 3. Minuet and Trios in D Minor\n 4. Minuet in G Major\n 5. Minuet and Trios in C Major\n 作曲家:Schubert, Franz/舒伯特/1797/1828\n 演奏者:Kremer, Gidon/基頓‧克萊曼/Violin/小提琴 (收錄D小調第三號小步舞曲及中段) ;\n Band: Kremerata Baltica/波羅的海合奏團 ;\n CD編號:Nonesuch :755979969-9\n CD名稱:Gidon Kremer De Profundis Kremerata Balt\n 收錄這首樂曲的其他CD\n\n Cello Concerto in D minor/D小調大提琴協奏曲\n 《經典名曲導聆》拉羅:大提琴協奏曲\n 作曲家:Lalo, Edouard/拉羅/1823/1892\n 演奏者:Starker, Janos/亞諾斯‧史塔克/Cello/大提琴 ;\n Skrowaczewski, Stanislaw/史坦尼斯勞‧史克洛瓦切夫斯基/Conductor/指揮 ;\n Band: London Symphony Orchestra/倫敦交響管弦樂團 ;\n CD編號:Mercury :478675-4\n CD名稱:- \n\n
一天到底要睡幾個小時才夠?其實睡眠時間因人而異,有人只要睡3小時就精神飽滿,有人睡10小時都還嫌不夠,睡眠專家最近發現,其實人體內有一個特殊基因,決定你的睡眠時間,換句話說,「愛睡覺」其實是基因遺傳的,專家也提出一個克服失眠的好方法,不是數綿羊,而從300依次「減3」一直數下去。\n新聞主播:「嘿,早安,哈利,哈利,你該起來了。」\n瞌睡蟲來襲,擋都擋不住,即使現場節目正在連線,來賓怎樣都醒不來,到底人一天該睡幾小時?民眾:「我大概要睡8小時吧,不過事實上我需要睡10小時。」民眾:「我一個晚上只睡3小時,因為其他時間,我要在學校念書。」\n有的人就算睡滿8小時,還是很愛睏,有人只睡3小時,依舊生龍活虎,很有可能是他們身上,少了一種睡眠基因。睡眠專家布魯斯:「沒有睡眠基因的人,會睡少一點,他們的身體,會在自已覺得快睡飽時醒來。」\n但是身上就算有條「愛睡基因」,睡眠時間也有可能受到外在環境影響。布魯斯:「睡眠時間會隨著季節改變,也會隨著生長週期而不同,年輕的小朋友需要睡多一點,大人睡少一點就好。」\n專家建議,睡滿7個半小時最健康,不過有時候,卻是怎樣都睡不著,這時候,可以來試試另類「數羊」法!布魯斯:「大家應該要從300倒著數,每次要減3。」\n原來數羊也不能亂數,邊做減法邊數回來,才會讓人越數越睏,一覺到天亮。\n\nTVBS – 2011年12月6日 下午7:37
Type the text for '成功'
#''主動積極'':主動接受挑戰,承擔更多責任,具有高度責任心。\n#''以終為始'':先預想最終的結果,選好正確道路。\n#''要事第一'':對工作優化排序,分清主次。\n#''雙贏思維'':在人際交往中尋求對雙方都有利的方案。\n#''知彼解己'':先學會理解他人,而後尋求被他人理解,培養耐心傾聽的技巧。\n#''博採眾長'':不拘泥于「你的」或「我的」解決方法,而是善于利用他人智慧。\n#''不斷更新'':在情感、心智、生理和心靈4個方面提高自己,使自己信心百倍地迎接未來挑戰。\n''[[白骨觀]]''\n[img[http://big5.jiexieyin.org/upload/2006_02/060209185582468.jpg]]
成功投資者絕對不會犯的8個錯誤\n鉅亨網新聞中心 (來源:和訊網) 2015-09-19 09:53 \n\n\n 想要獲得成功,除了需要學會使用已經證明行之有效的方法外,還需知道如何避免通往成功的路上可能會犯的錯誤。但我們沒有未卜先知的能力,因此,我們需要向已經取得成功的人學習,除了學習他們成功的方法,也需知道他們曾走過的彎路和犯過的錯。\n\n 對於剛剛入門的投資者來說,想要在投資上獲得成功,必須向已經取得成功的投資者學習。只有這樣,才能幫助我們更好地做出正確的投資選擇,避免犯低級的錯誤。\n\n 那么,成功的投資者絕不會犯的錯誤有哪些呢? 國內知名第三方理財機構嘉豐瑞德的理財師認為,以下這8個錯誤是絕對要避開的。\n\n成功投資者絕對不會犯的8個錯誤\n\n ''1、妄想一夜暴富''\n\n 聰明的投資者都知道,投資需要有耐心,懂得放長線釣大魚。然而,很多人都是懷抱著“一夜暴富”的夢想來進行投資的,他們想在短時間內獲得暴利。因此,總是傾向於短線投資,選擇一些像股票、外匯、期貨這樣的高風險投資方式。\n\n 但是,眾所周知的是,投資皆有風險,不可能投入就會有回報,況且高收益的背后往往是高風險。因此,妄想用高風險投資來一夜暴富基本是不可能的,除了需要巨額的投資成本,還需冒很大的風險,一招不慎,很可能就會滿盤皆輸。\n\n ''2、濫竽充數''\n\n 投資者中,總有這樣一群愛“濫竽充數”的“東郭先生”,明明肚子里沒什么知識積累,卻偏愛裝出一副很懂的樣子,總愛在交流討論時給出自己的意見。然而,到了實戰中,卻沒有什么主見,只能選擇隨大流做選擇。\n\n “濫竽充數”是成功投資者絕不會犯的錯誤之一,對於他們而言,不懂並不是什么有失面子的問題。他們只知道,不懂就要問明白,如果不弄明白,很可能會導致投資失誤。 \n\n ''3、不了解自身的財務狀況''\n\n 經常有人會犯這樣一個錯誤,那就是,在對自身財務狀況沒有仔細了解的情況下,聽到某項投資能賺錢就迫不及待地投入了。對於這樣的現象,嘉豐瑞德理財師提醒,成功的投資者是絕對不會這樣做的,因為他們都知道,只有對自身的財務狀況有充分的了解,才能制定最為適合的投資方案,才能在投資中賺到錢。\n\n ''4、不關注國家宏觀經濟政策''\n\n 很多投資者都認為,國家的宏觀經濟政策離自己太遙遠,對自己的生活沒有直接的影響,因此,經常會忽視甚至是不關注它們的變化。然而,這樣的做法,很明顯是錯誤的,成功的投資者都知道國家的宏觀經濟政策無疑是非常重要的,因為它們的稍微變動,很可能就會改變整個投資市場的格局。 \n\n ''5、無投資規則''\n\n 所謂“胸有成竹”,就是指做某事前心中早已規劃好了,顯得有把握成功的樣子。成功的投資者認為,投資沒有規則肯定是不可以的,盲目投資只會導致最終的慘敗。相比於盲目投資,有規則地進行更利於降低風險,獲得更高的收益。很簡單的例子,假設在你的資金較少,風險承受能力不高的情況下,你是愿意盲目選擇投資對象呢,還是愿意選擇“股票+固定收益類理財產品”這樣規則性組合投資呢?嘉豐瑞德理財師認為,組合投資的方式能有效分散風險,對於資金較低的投資者而言,是比較合適的選擇。\n\n ''6、投資過於集中或分散''\n\n 在投資成功者看來,投資過於集中或分散都不是什么好的規則。過於集中則風險太高,過於分散則可能讓投資者力不從心,管不過來,導致損失。所以,成功的投資者在版面投資時,這兩種情況都是盡力避免的。 \n\n ''7、冒險賭一把''\n\n 對於成功的投資者而言,“放手一搏”這種“賭博式投資”是非常幼稚的。他們認為,“賭博式投資”風險太大,只有那些不信市場只信自己的投資新手才會做這樣毛躁的選擇。對於他們而言,投資比的不是運氣,除了需要認清自己,還需要看清市場,這種“要么贏要么輸”的投資想法是非常不可取的。\n\n ''8、貪得無厭''\n\n “見好就收”是投資成功者立於不敗之地的秘訣,他們懂得什么時候該出手,也知道什么時候該收手,到了該收手的時候絕對不會存有類似“再賺一點”的想法。因為他們知道,一旦動了“貪念”,很可能就會錯過最好的時機,從而導致資金“被套”,損失慘重。所以,貪得無厭這樣的錯誤,他們是絕對不會犯的。\n\n 投資好比博弈,在這諾大的一盤棋局中,每走一步,都需要從整體格局出發,一步走錯,很可能全盤皆輸。所以,嘉豐瑞德理財師認為,投資需要步步小心,除了要知道對方(市場)的風格變化,還需警惕自己犯錯。
[[富邦要併日盛金,月底可望定案]]\n[[工商頭條~再出擊 富邦金要併日盛金]]\n[[金融股》日盛金:富邦併購一案,尚未有任何結論]]\n[[富邦金併日盛金?富邦金:不予置評 日盛金:增資案確進行中]]\n[[不想要日盛銀 富邦金傾向只買日盛證]]\n[[富邦金併日盛金?陳樹語帶保留:「回答有無都會影響股價」]]\n[[惠譽信評:調降日盛金控集團評等 調整評等展望至負向]]\n[[日盛集團創辦人之子? 率黑道爭產]]\n[[日盛金與同業合併 年底前明朗]]\n[[富邦金併日盛金 傳換股比例1:5]]\n[[富邦金 併購日盛金破局]]\n[[日盛金董事會重大決議事項]]\n[[日新生銀砸百億 入主日盛金]]\n[[日盛金董事長陳國和 忍痛割愛]]\n[[日盛金百億現增 新生銀通吃]]\n[[日盛金擬現增100億元 並啟動併購 現增案日本新生銀全買單]]\n[[日盛金百億現增,新生銀通吃,預計資金明年Q1前到位]]\n[[合庫併日盛金 先問新生銀?]]\n[[金融搬風 日盛金總座求去]]\n[[日盛金總座 陳國和暫代]]\n[[花旗拆解警訊!合庫併日盛金可望受催化]]\n<<tag 小太陽>>\n
<<showReminders leadtime:60 format:"|DIFF|TITLE|" >>
*[[投资与投机的区别]]\n*[[赌博和投机的区别(一)]]\n*[[赌博和投机的区别(二)]]\n*[[赌博加投机 “职业赌徒”是合格的投资者吗?]]\n*[[投资与赌博--浅析外汇交易操作技巧]]\n*[[令人感慨的杰西里弗莫]]\n*[[交易员的生命——交易的基本原则]]\n*[[罗杰斯演讲全录]]\n*[[投資第一要務:隨時保護自己]]\n*[[反向思考:如何確保悲慘失敗的績效]]\n*[[執著、彈性勝出 基本面贏家]]\n*[[危機入市?等大家再悲觀一點]]\n*[[想要成功,記得這8大特質]]\n*[[「金錢非一切」 超危險投資想法]]\n*[[Saving, Earning, and Enjoying – 一個英國期貨操盤手的自白]]\n*[[談期貨之「破窗效應」]]\n*[[提醒自己的一些問題]]\n*[[關於張小姐]]\n*[[期貨天王張松允每天歸零 隨時推翻自己]]\n*[[身後有餘忘縮手,眼前無路想回頭_股市老手杜總輝 爆發台灣期貨史上最大違約案]]\n*[[人總是遲疑不決,心懷僥倖]]\n*[[成功投資者絕對不會犯的8個錯誤]]
\n\n\n''愛上天然 ○ 愛上自然美''\nhttps://bonhw.wordpress.com/\n*[[植物油脂特性與功效《一》]]\n*[[植物油脂特性與功效《二》]]\n*[[植物油脂特性與功效《三》]]\n*[[植物油脂特性與功效《四》]]\n*[[植物香脂和蠟脂的特性與功效]]\n''ninahome手工皂坊''\nhttp://blog.xuite.net/ninahome0803/twblog\n''手工皂-精油-美容討論區''\nhttp://www.soap-diy.com/forum1/\n\n''皂香工作室''\nhttp://www.shop2000.com.tw/%E7%9A%82%E9%A6%99%E5%B7%A5%E4%BD%9C%E5%AE%A4/\n''EP'S Exotics風天然''\nhttp://www.eps-exotics.com.tw/shop/\n''鴻裕國際''\nhttp://www.hungyu-greenforest.com/\n\n''手工皂配方計算表 Helen's Aromatherapy Lye calculator''\nhttp://www.soap-diy.com/Soap_Calculators.php\n''Helen's手工皂配方百分比計算表Aromatherapy Lye calculator''\nhttp://www.soap-diy.com/Soap_Calculators-PCT.php
只有三五%執行長 能重返一級戰場\n商業周刊 第1097期 2008-12-01 撰文者:鄭凱達\n!蘋果賈伯斯、Gap前執行長,都曾在人生高峰時丟了飯碗,幸運的是,兩人後來都東山再起,共同原因就在於:勇敢面對。\n阿根廷有句格言:「最瞎的人,是那些不想看見的人。」耶魯大學教授桑能菲爾德(Jeffery A. Sonnenfeld)和喬治亞大學助理教授華德(Andrew J. Ward)也在《哈佛商業評論》(Harvard Business Review)為文提醒大家,重新出發最重要的步驟之一,就是要面對並承認自己的失敗。唯有如此,才能走向下一個人生高峰。\n\n你會覺得自己很糟嗎?全球高高在上的執行長和你一樣要面對壓力、業績、家庭等各方面的煎熬,才能走出下一步。其實,你只要敢面對、敢跨出一步,找出新的動力,你的表現不會比那些執行長差。
陳世豪 2008/11/06\n!投資人在面對投資標的時,應該先釐清會有哪些風險,然後再來關心可能獲得的報酬(First risk, then return)… \n《登峰造擊》(Million Dollar Baby)是我很喜歡的一部電影,它拿下2005年美國奧斯卡電影金像獎的最佳影片、最佳導演、最佳女主角和最佳男配角四項大獎,同時也提名最佳男主角、最佳改編劇本和最佳剪輯。導演克林伊斯威特以拳擊做為故事背景,描述拳擊訓練師法蘭克(克林伊斯威特飾演)、退休拳手艾迪(摩根費里曼飾演)、和女主角瑪姬(希拉蕊史旺飾演)之間的故事。\n\n片中的女主角瑪姬出身破碎貧窮的家庭,30歲時她決心脫離永遠當女侍的命運,決定藉拳擊來實現自己的夢想。沒受過正規拳擊訓練的瑪姬,憑著堅韌與執著終於獲得了法蘭奇的指導,在自己的努力及法蘭克的訓練下,不到幾年的時間就踏上世界女子拳王擂台,向外號“藍熊”的拳王挑戰。\n\n比賽前幾回合,瑪姬不斷地取得優勢,後來惱羞成怒的藍熊竟在鈴響的休息時間,從背後偷襲,造成她全身癱瘓倒地不起。瑪姬醒來後,充滿悔意地對教練說:『我忘了你再三的告誡—最重要的是,要隨時保護自己。』\n\n在目前金融市場和股市動盪如此激烈的時空環境下,這一幕讓我感受尤其深刻。\n\n''隨時保護自己(Always protect yourself)''\n\n『身體知道你所不知道的事情,那就是如何保護自己…請隨時謹記這個守則,隨時要保護自己!』教練法蘭克不斷地叮嚀著瑪姬。\n\n投資人在金融市場進行各種投資買賣,就像瑪姬在拳擊場上打拳一樣,要隨時留意外在的變化,千萬不可因為一時的勝利,而忘卻了險惡的現實。\n\n常有投資人問巴菲特:投資人最重要的守則是什麼?他總是如此回答:『第一條原則:永遠不要虧錢。第二條原則:永遠不要忘記第一條原則。(Rule No.1: Never lose money. Rule No.2: Never forget rule No.1)』\n\n這句話乍聽之下會讓人覺得似乎是一句廢話,但我們要關注的不只是表面上的含意,而是背後所隱含的思考方式。\n\n大部分投資人在看到某項金融商品時,通常都會先看它的潛在獲利空間,而忽略了可能下跌的風險。價值導向投資則是從安全第一的原則出發,強調投資的安全程度(Margin of Safety),也就是只購買那些價格大幅低於內在價值的東西,並持有這些標的直到價值被市場發現為止。價格與價值之間的安全程度是整個投資過程的關鍵因素。\n\n另外,巴菲特所說的不要虧錢,指的並不是表面上的帳面損失(外在市價低於買進成本),他所關注的是內在價值是否真的惡化、是否產生實質損失 (內在價值低於成本)。因此當市場價格大幅下跌,而企業內在價值其實並沒有太大變化時,他不但不會驚慌,反而會認為此刻正是加碼買進的好時機。\n\n因此投資人在面對投資標的時,應該先釐清會有哪些風險,然後再來關心可能獲得的報酬(First risk, then return)。投資人不應先為報酬率設定目標,哪怕是一個極其合理的目標,重要的是要先為風險設定目標。就像在拳擊場上,不能只是一心想要擊倒對手,而忽略自己的防守動作,要時時記住法蘭克對瑪姬耳提面命的那句話:「隨時保護自己!」\n\n''保護自己的基本原則''\n\n在金融市場上,有幾項簡單保護自己的基本原則:\n\n''‧不要碰自己不懂的東西'':在投資之前,投資人一定要自己先做足功課,對於一些複雜到連專家都無法輕易計算出價值的金融商品,更是碰都不要碰。巴菲特選股的第一條件就是依照自己的能力範圍來選擇簡單易懂的企業,我們在挑選投資標的時,也應該遵循同樣的原則。\n\n''‧不要隨便聽信別人的建議'':巴菲特的老師葛拉漢曾經說過:『只因為大家與你意見不同並不能決定你是對或錯。唯有你的資料與推理都正確時,才能決定你是對的。』金融市場上充滿著各式各樣的訊息,其中大部分其實都是雜訊,投資人必須培養自己獨立判斷的能力,從大量的資訊中過濾雜訊,找出真正有意義的訊號,選擇自己關注的焦點,不要隨便聽了別人的意見,就隨之起舞,人云亦云。\n\n''‧不要過度槓桿'':在這次金融風暴中,大家應該可以體會到財務槓桿過大會有什麼樣淒慘的後果。所以投資人最好不要借錢投資,一方面你投資的金融商品通常就會使用槓桿(例如企業通常都有負債經營),另一方面財務槓桿就像是雙面刃,投資人通常都只看到加速獲利的那一面,而忽略了它同樣也有加速崩跌的另一面。巴菲特曾經說過:『會讓聰明人破產的唯一方法就是槓桿。你可能一路以來都做對,也賺了不少的錢,但是如果你使用槓桿,只要出了一次大差錯,就會讓你完全出局,因為任何再大的數字乘上零,結果還是零。』\n\n''‧不要過度樂觀'':如同前面提到的,我們應該先關注風險而不只是報酬,對於未來的結果更不可有不切實際的預期,而是要用保守的心態來面對投資標的。巴菲特曾經在CNBC的專訪中被問到關於金融危機的看法,他說:『你可以責怪這些促銷金融商品的人,你也可以怪罪整個華爾街,但是根本的問題還是因為投資人的期望太高,人們以為他們什麼都不懂就可以賺大錢。』\n\n''‧沒有足夠的安全程度不輕易出手'':巴菲特是個棒球迷,他常用打擊好手泰德.威廉斯(Ted Williams)在《打擊的科學》(The Science of Hitting)一書的觀念來比喻投資。威廉斯認為,投得不好的球,千萬不要打—你應該等到好球才揮棒(Wait for the right pitch),這樣才能成為厲害的打擊手。巴菲特把同樣的道理運用在投資上,耐心等待,直到價格與價值之間的安全程度夠大,才大舉出手投資。\n\n''先求不敗,再求必勝''\n\n「拳擊是一種很不自然的運動,它裡頭所有事情都是相反的,當你要攻擊時,你得退後幾步,可是假如你退得太遠,卻又再也無法出手…;拳擊是一種很不自然的運動,它裡頭所有事情都是相反的,當你要移步左側,不是向左跨步,而是用右腳尖施力,…不像頭腦清醒的人避開痛苦的來源,反而是迎向它。」飾演退休拳手的摩根費里曼以淡淡的口白說著。\n\n價值投資的本質就像拳擊運動一樣,其實就是和大眾做相反的事情。就像大家常聽到巴菲特講的:『當別人恐懼時我開始貪婪,而當別人貪婪時我開始戒慎恐懼』這樣的概念雖然清晰易懂,但也如同他所形容的:『它很單純但並不容易(It's simple but not easy.)。』\n\n在金融市場中,追求獲利是投資人的主要目標,但別忘了股市就像是《登峰造擊》中的藍熊,它兇險狡詐,我們無法預料它會在何時從背後偷襲,造成我們莫大的損害。拳擊的首要規則就是:隨時要保護自己,這規則用在投資中也是一樣,投資人應該依循這種安全第一的精神,面對任何的投資決定,都要先考慮怎麼不虧錢,然後再想怎麼賺錢。先使自己立於不敗之地,然後在這個基礎上,尋找勝利的契機,這種「先求不敗,再求必勝」就是價值導向投資的核心思想。\n
在股市常有股民,在套牢后就以投资者自居,其实,他根本没有弄清投资者与投机者的区别。事实上,进入资本市场的人,不只是投资者与投机者,这种划分是不准确的。这种划分其实是三种不是两种,它包括投资者、交易者,而交易者又分为投机者、赌博者。投资者是一个资产管理者,他买入一定的资产,是为资产的保值与升值。他买入债券关心的是债券的利率收益,买入股票,应关注的是股息。当所买入的股票股息超过同期银行利率与通货彭胀率之和时,他所购入的资产就是优良的资产了,他计算的是他投入多少钱,带来的收入是多少,这个百分比若大于5%以上就是很好的投资了,若超过10%则是优秀的资产。至于他买入的资产价格上涨,则是意外收入,若这种意外收入超过一定的幅度就会诱导他卖出所购入的资产。而他所购入的资产价格下跌时,只要他的利息或股息收入不会减少,则不会卖出资产。投资者买入前考查资产的依据是股息与利息。而交易者则不同,他买入股票,其实是为了以更高的价格卖给别人,从中收益差价。他相入以后会有人以更高的价格买走他手中持有的股票。而交易者中的投机者,则是根据''知识面、技术面、操作技巧''等,以适合的价格买入,以更高的价格卖出,这种交易者注重的是股价运动的趋势,他应关心的是股票的今天与明天,是股价的未来而不是过去!至于赌博者,在《赌博与投机的区别》中已有说明。\n 其实,股市中的多数人,是交易者而非投资者,你入市的目的就是投机(只不过大多数人自已并不知道而矣),你一开始就没有投资的心态,你希望的是通过买卖差价获利,可是,在实盘操作与分析中却是一个投资的思维,这怎么能操作好呢?当你的目的、心态、思维、操作相互矛盾时,你也就错误百出,损失也就会接踵而来。所以,弄清自已到底应当是做一个投资者、投机者、赌博者是很重要的。到于到底是投资者适合你,还是投机者适合你,甚至你或许适合当一个赌博者,这都需要朋友们对自我有一个清楚明白的分析与了解。这三种人没有谁优谁劣,成功与失败都有可能,只是概率不相同、收益率不相同而矣。你是什么,入市前就该想明白!\n
本文摘要:投资与投机在道德判断上不存在好与坏的区别,而主要是在持有时间长短上的分别。如果以长期操作为主要目地则称之为投资;如果以短期操作为主要目地则称之为投机。\n投资与赌博有许多相似的地方,但仔细比较两者却有着本质的区别:\n\n 投资:指按照事先周密设计的具有正期望值盈利率的博弈计划;\n赌博:指缺乏事先严密设计的具有正期望值盈利率的博弈计划,而在单纯利益心里驱动下的进场下注。\n\n 这里我再介绍一下投资与投机的区别:\n\n 投资与投机在道德判断上不存在好与坏的区别,而主要是在持有时间长短上的分别。如果以长期操作为主要目地则称之为投资;如果以短期操作为主要目地则称之为投机。\n\n 投资与赌博的本质区别:在于是否依据一个具有正期望值盈利率的博弈计划或操作系统,如果投资者具备这样的计划,赌场也可以成为真正意义上的投资场所(有过类似案例)。\n\n 我认为投机市场是世界上最符合公平竞争原则的完美市场,这里没有出身、家庭背景、学历以及人际关系等社会上那些错综复杂的问题,只要你自己通过努力就一定会获得回报。\n\n 首先对自己要有一个正确的评价,投机市场中大多数投资者都有一个误区,就是将赢钱的经历等同于赢钱的能力。投资者在其它领域获得的成功并不能证明在投资领域同样会获得成功。以我国改革开放后首先富裕起来的人为例,相当多的成功者是靠拥有与其竞争对手不具备的某种优越条件而获取第一桶金的。但在投资市场里,帮助他们在那些领域获得成功的条件却在投资市场中不起作用甚至起反作用。俗话说一分耕耘一分收获,任何领域要想获得成功都要付出努力没有任何投机取巧的捷径可走,投机市场更是如此。\n\n 其次要做到自律与耐心,在千变万化的市场面前要始终坚持自己的投资原则。在作交易前首先要做好功课(参见我的《如何从图表中选择入市时机》一文中关于中长期、短期图表如何分析以及顺势交易的好处),做到知己知彼才能百战不殆。交易计划好了就不要轻易改变,对投资者而言,每一次符合其交易计划失败(亏损)的投资都是对的;每一次偏离其交易计划成功(盈利)的投资都是错误的。耐心是指要有忍耐寂寞的心里素质,虽然市场每天都有盈利的机会,但真正有60%以上盈利把握机会的价位却不是很多。例如:市场每天有100点波动,扣除银行手续费20点;你不可能买一个当天最低卖一个当天最高(如果有也是运气,但我们不能每次都有这么好的运气),再刨去20点(上下个10点),如果您能每天都盈利60点您已经是一个高手了。我的操作经验是,大部分时间盯盘是在寻找和等待入市时机的出现,一旦出现立即交易。我自己的格言是:机会是等出来的不是追出来的。\n\n 第三要有敏锐的观察和预测能力(第六感),能够在众多的市场信息中提前嗅到市场主要趋势即将逆转的信号,并在行情改变前采取行动。这种能力主要来源于投资者在长期的投资实践中不断总结成功和失败的经验而来。至于第六感我是这样认为的,如果没有这种灵感,投资者达到一定水平后就很难再有一个大的飞跃。\n\n 最后是克服人性四大弱点:“懒”“贪”“愿”“怕”。懒:天下没有免费的午餐(如果有一定是剩餐),任何职业技能的掌握都需要很长的一段学习时间,投机行业是这其中最难的一个,况且影响投机市场的因素包罗万象,所以更需要我们不断地学习。贪:过渡投机或者为了赚小钱最终导致赔大钱。愿:一厢情愿,只愿听对自己有利的消息或者输了不认赔继续加码。怕:成功的投资者怕(敬畏)市场但不怕(自信)自己。失败的投资者正好相反,他们对市场毫不畏惧(追涨杀跌),却怕自己在市场一涨再涨接近高位时误了班车,在市场一跌再跌接近低点时怕自己跑不出来。\n\n 相传武林中有本《葵花宝典》是任何人学武之人毕生的追求,投机行业有种技术分析方法,是投资者的毕生追求。拥有《葵花宝典》不一定能练成绝世武功、掌握技术分析方法不一定能够战胜市场。其实武林与投机的最高境界不是绝世武功与战胜市场,而是如何挑战自我。武功是可以学到头的、市场也是可以战胜的,最难的是如何战胜自己的“懒”、“贪”、“怨”、“怕 ”。只有克服这四个字的人才能笑傲江湖、拥有市场。\n\n 介绍有关交易规则以及如何选择入市点的方法有很多,如江恩的十二条买卖规则;约翰·墨菲在期货市场技术分析一书中的交易策略等等都是非常经典的文章,有兴趣的朋友不妨可以参考借鉴。下面我就简单介绍一下我的操作经验以及如何寻找、确定入市价位(请先参考我写的《如何看待基础分析与技术分析的区别》一文)。\n\n 俗话说条条道路通罗马,在投机市场中正确的投资方法不是唯一的,但正确的思维方法却是唯一的。首先要掌握正确的思维方法,其中包括正确的分析方法(如:反转形态与持续形态的根本区别);正确的交易方法(如:顺势交易)以及正确的资金管理方法。\n\n 投机市场是一个高风险的市场,资金管理最重要。资金管理是一个系统工程,包含了所有分析方法和交易方法的内容,并在此基础上如何正确合理安排使用资金的过程。资金管理做好的话,即使分析和交易都发生严重错误也不会出现太大风险;反过来如果资金管理的不好,即使分析的在准确、成交价位在好,终究会有一次亏损导致将以前所有的利润全部回吐。\n\n 本金10万美元\n\n 损失百分比 剩余本金(万) 需追回本金(万) 获利百分比\n\n 10% 9 1 10%\n\n 20% 8 2 25%\n\n 30% 7 3 42.9%\n\n 40% 6 4 66.7%\n\n 50% 5 5 100%\n\n 60% 4 6 150%\n\n 70% 3 7 233%\n\n 80% 2 8 400%\n\n 90% 1 9 900%\n\n 95% 0.5 9.5 1900%\n\n 下面我简单介绍一下分析支撑位、阻力位的方法和交易技巧(注:技术分析方法的基础知识请参看约翰·墨菲写的《期货市场技术分析》、艾略特的《波浪理论》和黄柏中写的《江恩理论》)。\n\n (一)支撑位和阻力位\n\n 要想找到比较准确的支撑位和阻力位,就要从中长期走势图(天图、周图、月图)入手。(1)找成交密集区,也就是盘整区间。此区间是市场买卖双方成交量最多并且多空双方分歧最大的地方(参考《四度空间》一书)。市场流动性是以市场操作难易程度和价值判断难易成反比关系的,成交越容易越密集,市场流动性就越高,价值判断就越难;反之成交越难越稀少,市场流动性就越低,价值判断就越容易。一旦突破(跌破)成交密集区,空头(多头)止损盘+新多(新空)+老多(老空)的加码买盘(抛盘)就会使汇价加速前进。在随后的回调(反弹)中此价位就是非常强的支撑位(阻力位)。支撑位(阻力位)的重要成度与突破该价位后行进的时间长短、价位行进的远近成正比关系。(2)找前期的头或底。市场前期的头(底)是此轮反弹(回调)的阻力位(支撑位)。阻力位(支撑位)的重要成度与此轮反弹(回调)所需时间长短、价位高低成正比关系。(3)找对称关系。市场在前期上涨(下跌)过程中没有遇到任何阻挡(支持),反过来在下跌(上涨)时也一定不会遇到支持(阻挡)。并且汇价在前期上涨(下跌)过程中运行了多少天,在下跌(上涨)时也同样会运行多少天。(4)找黄金分割位。菲波纳奇数列(1,1,2,3,5,8,13,21,34,55,89,144等致无穷)是波浪理论的基础,黄金分割(0.382,0.5,0.618等)在大自然中随处可见(有兴趣的朋友可以深入研究)。选择一段走势的高点和低点做黄金分割,支撑位(阻力位)就在黄金分割点附近(黄金分割在期货市场使用的准确程度要高于外汇市场)。\n\n (二)交易技巧\n\n (1)在成交密集区上线(下线)抛空(买入),突破(跌破)后止损并追买(追卖)。\n\n (2)在前期头部(底部)抛出(买入),突破(跌破)后止损并追买(追卖)。\n\n (3)计算上升(下跌)走势的黄金分割价位,在回调(反弹)过程中的0.5和0.618处买入(卖出)。\n\n (4)在整数价位之上(之下)买入(卖出)。\n\n 总之,如何寻找支撑位和阻力位以及操作时的交易技巧很难用一两句话解释清楚,这主要靠从长期的交易过程中吸收总结经验,培养市场感觉。\n
#''是否順著主要趨勢方向進行交易''\n#''如果在這裡進埸,是否有追價之虞''\n#''目前的走勢看起來是否會停頓''\n#''行情已經折返多少幅度了''\n#''此處進場的風險有多大''\n#''支撐區在那裡''\n#''就追蹤行情的時間架構而言,目前走勢是否過度延伸''\n#''目前行情還有多少發展空間''\n#''在每個時間架構上,我對行情的看法是否都很清楚''
【經濟日報╱記者呂淑美、洪凱音/台北報導】2008.11.29 02:57 am\n\n日盛金控昨(28)日召開董事會,通過將募資100億元,全數由日本新生銀行吃下,持股將逾五成,遠超過日盛金董事長陳國和家族;在股本稀釋後,陳國和家族持股比率將降為約15%。這將是國內第一家被外資入主的金控。\n\n至於富邦金與日盛金合併計畫是否繼續?日盛金財務長王芝芳表示,外界的揣測,不予置評。\n\n日盛金副總經理鍾芳程表示,新生銀行原持有日盛金約33%持股,挹注100億元資金後,持股將一舉攀升至逾五成,預計明(98)年第一季資金到位,全數將挹注子公司日盛銀,將召開股東臨會通過上述增資案,有關增資額度及每股價格,有待後續磋商。\n\n日盛金昨天股價一度奔上漲停,抵2.83元,最後則以2.76元收盤,成交量並放大至6,369張,較前一天的1,336張大幅放大。到今年10月底止,每股淨值為8.52元。\n\n為解決日盛銀行累積虧損達淨值三分之一的問題,日盛金控昨日董事會達成共識,通過辦理新台幣100億元現金增資案,並授權董事長陳國和與其他金融機構洽商併購事宜。\n\n以日盛金目前股本217.08億元推估,新生銀行若要從持股33%達到五成以上,未來日盛金股本增加約14-15億股,每股價格約7元,持股就會超過五成;屆時陳國和家族合計持股也將由目前的三成多,降到約15%。\n\n至於未來董事長、總經理是否異動,鍾芳程表示,還未確定。不過,以過去幾家外資機構入主台灣的金融機構案例來看,新生銀行應會全面入駐日盛金。\n\n日盛金昨天召開記者會宣布,目前現增計畫已有本公司大股東之一SIPF,B.V.(新生銀行在荷蘭登記的公司)或SIPF, B.V.領導的投資人集團表達全額認購意願。\n\n王芝芳表示,增資100億元的計畫,大股東日本新生銀行已表達「全數」認購的意願,明年3月底前,資金到位應該不成問題,對銀行財務結構的改善,將有很大幫助。\n\n【2008/11/29 經濟日報】
【鉅亨網記者陳慧琳‧台北】 日盛金 5820(TW) 為快速強化銀行子公司資本結構,於今(28)日董事會決議通過擬辦理新台幣100億元現金 增資案,同時亦授權董事長與其他金融機構洽商購併事宜,以維護本公司最大利益,日盛金副總暨發言人鍾芳 程表示,目前現增計劃已有該公司大股東新生銀行願意 全數認購,此現增案預計明(2009)年第 1季前資金完全 到位,完成增資。\n\n日盛金表示,目前現增計劃已有本公司大股東之一 荷蘭商SIPF,B.V.,或SIPF, B.V.領導的投資人集團表達 全額認購之意願,鍾芳程說明,SIPF,B.V.公司其實就是 大股東日本新生銀行轉投資的公司。\n\n日盛金控表示,面臨全球金融海嘯侵襲產業環境, 公司仍致力充足銀行子公司資本,預估此資金挹注於銀行子公司後,銀行子公司逾放比率減降至1%以下,覆蓋 率提升至80%以上,資本適足率達13%以上,達到Tier 1 銀行水準(依9月底同業資料估算,資產品質將名列同業 第5名,資本適足率,依6月底同業資料估算名列同業第 3名)。\n\n在獲利方面,由於資產品質已拋除呆帳提存壓力, 將有助於銀行子公司轉虧為盈;在業務擴展方面,針對 不同客群修訂經營模式,提升客戶滿意度,並積極強化 業務動能,增加收入貢獻。\n\n另外,日盛金也表示,證券旗下週邊子公司除繼續 維持穩定獲利外(截至10月底日盛證券獲利排名於同業第 4名,日盛期貨亦名列同業第4名),也將積極開發新業務 ,增加獲利貢獻。
*2008-11-29\n*工商時報\n*【彭暄貽/台北報導】\n\n 為強化銀行子公司資本結構,日盛金(5820)昨(28)日董事會決議通過辦理現金增資100億元,同時亦授權董事長與其他金融機構洽商購併事宜;預估本次增資,可望由日盛大股東新生銀行全數認購,預計資金將在明年第一季前到位。\n\n 法人表示,目前日盛金資本額達261億元,新生銀行持股達33%,儘管本次增資溢價尚未敲定,但若本次增資以票面金額發行,新生銀行股權將過半,恐有主客易位之虞。\n\n 據悉,日盛金招親案受制新生銀行每股成本10元,遠低於當前市價水準,使得併購案遲遲未能拍版定案,昨日董事會在董事長陳國和與新生銀行達到最終協商後,日盛金礙於明年2月現金增資的限期壓力下,新生銀表態願加碼投資100億元,除了藉此降低每股成本外,更因此取得超越陳國和股權的營運主導性。\n\n 日盛金發言人、副總鍾芳程表示,增資後,未來資產品質、經營體質將大幅改善,並達Tier 1銀行水準:逾放比率減降至1%以下,覆蓋率提升至80%以上,資本適足率達13%以上。\n\n 據悉,日盛金目前銀行BIS達8%,金控資本適足率也高達150%,但因旗下銀行虧損逾三方之一股本,而大股東、經營高層除不願以證券閒置資金,轉向支持銀行增資,也不願加碼參與增資,進而啟動金控招親案。不過,由於招親對象每股開價遠低於新生銀每股10元成本價,而新生銀持股也有股權閉鎖限制,導致招親案一再延宕。\n\n 雖然大股東之一董事長陳國和傾向以自有30%股權,協助買方以過半主導股權,推動併購案,但因陳國和的30%股權距離51%目標仍遠,加上原先否決併購案的新生集團日本領導人10月底撤換,日盛金招親案買方高層因而表態,期待併購案採和平狀態推動,並寄望儘速與新生集團新領導人重啟協商。\n\n 11月來,新生集團積極重新評估日盛金投資案,考量併購買賣雙方對價格條僵持不下,新生一旦支持併購案,將立即對每股價差及資金利息造成不小認賠壓力,因而決定加碼全數認購日盛銀的增資需求。\n\n 如此一來,不僅可在每股價格明顯下滑,降低平均投資成本外,又可一舉超越陳國和,取得主導協商權,透過本次財務重新改革,提昇日盛金招親身價,為提高併購價格,爭取緩衝空間。
【時報-台北電】為強化銀行子公司資本結構,日盛金 (5820) 昨(28)日董事會決議通過辦理現金增資100億元,同時亦授權董事長與其他金融機構洽商購併事宜;預估本次增資,可望由日盛大股東新生銀行全數認購,預計資金將在明年第一季前到位。\n\n法人表示,目前日盛金資本額達261億元,新生銀行持股達33%,儘管本次增資溢價尚未敲定,但若本次增資以票面金額發行,新生銀行股權將過半,恐有主客易位之虞。\n\n據悉,日盛金招親案受制新生銀行每股成本10元,遠低於當前市價水準,使得併購案遲遲未能拍版定案,昨日董事會在董事長陳國和與新生銀行達到最終協商後,日盛金礙於明年2月現金增資的限期壓力下,新生銀表態願加碼投資100億元,除了藉此降低每股成本外,更因此取得超越陳國和股權的營運主導性。(新聞來源:工商時報─記者彭暄貽台北報導)
【經濟日報╱記者洪凱音/台北報導】2009.01.01 02:52 am \n\n日盛金控昨(31)日表示,總經理戴瑞宏已經請辭,自今日起,總經理職務將由日盛金董事長陳國和暫時代理。戴瑞宏同時辭去日盛證券總經理職務,也由日盛證券董事長蔡淑媛代理,直到董事會選任、通過新總經理為止。\n\n據了解,日本新生銀行預計今年第一季完成100億元募資計畫後,陳國和才會卸下日盛金總經理的階段性任務;屆時,新生銀行對日盛金的持股,也將從現有的33%提高到50%以上,新任總經理也將由新生銀行指派。\n\n至於戴瑞宏是否轉任康和證券執行長,日盛金發言人鍾芳程說,單純是他個人職場生涯規劃,日盛金不便評論。\n\n鍾芳程強調,增資100億元的計畫,大股東日本新生銀行已表達「全數」認購的意願,預計明年3月底前,資金才會到位,對銀行財務結構的改善,有很大幫助。\n\n日盛銀行增資,主要是累積虧損達淨值三分之一,金管會完成金檢後,勒令要求限期增資;日盛金控日前召開董事會,通過將募資100億元,全數由日本新生銀行吃下,持股將逾五成,遠超過日盛金董事長陳國和家族。陳國和家族的股本稀釋後,持股比率將降至15%;若新生銀投資計畫進行順利,將成為國內第一家被外資入主的金控。\n\n【2009/01/01 經濟日報】
【經濟日報╱記者洪凱音、邱金蘭/台北報導】 2008.11.26 02:53 am\n \n日盛金與多家金控業者洽談合併案,年底前可望明朗。據了解,金管會已發函要求日盛金旗下的日盛銀行年底前完成增資,此舉可能促使日盛金加速洽談合併案,以挹注資金。 \n\n過去與日盛金談合併的金融機構,除了富邦金,還包括國泰金、私募股權基金SAC等國內外機構。 \n\n對於金管會是否通知要求限期增資,日盛金昨(25)日表示,並未收到金管會限期增資等相關訊息。對於金控合併案,日盛金發言人鍾芳程也低調表示,完全不知情。 \n\n立法院財委會前天(24日)審查銀行法修正案,立委關切目前國內銀行經營情況,銀行局副局長林棟樑答覆立委質詢時表示,目前淨值呈負數的銀行只有慶豐銀行一家,至於虧損逾資本三分之一的銀行也只有一家。 \n\n據了解,虧損逾資本三分之一的銀行是日盛金旗下的日盛銀,且金管會已依銀行法規定,發函要求日盛銀限期增資,以符合銀行法規定。 \n\n金管會高層表示,確實已要求日盛銀限期增資,但限期在多久前完成增資,不便進一步透露。但根據有關官員了解,金管會是希望日盛銀能在年底前完成增資。 \n\n金管會高層表示,金管會是依法令規定辦理,至於限期增資期限屆滿後,會否再像往例,延長增資期限,金管會高層說,會視銀行提出計畫情況審酌,也希望銀行能努力順利完成增資。 \n\n日盛金近來已積極與國內外金融業者洽談合併,金管會限期增資會否加速合併案進行,備受市場關注。 \n\n金融人士認為,雖然日盛銀有增資壓力,由於國際金融局勢波動仍大,有意願的潛在投資人會否趨於觀望仍待觀察,增資案具體進度在年底應會較明朗。 \n\n金融人士透露,去年8月間,金檢局已對日盛銀查核,日前金檢局官員再度進行檢查。 \n\n金檢局官員強調,這次是「例行性」檢查,主要是關心日盛銀的營運狀況,內容包括銀行授信、提列呆帳、相關投資與財富管理業務等,檢查工作已於近日內完成。 \n\n根據金管會最新統計,到今年第三季止,日盛銀行的存款餘額有1,996.2億元,放款餘額有1,546.5億元,逾放比率則是3.62%,壞帳覆蓋率則為36.13%,淨值94.2億元。 \n\n【2008/11/26 經濟日報】
#事實發生日:97/11/28\n#公司名稱:日盛金融控股股份有限公司\n#與公司關係[請輸入本公司或聯屬公司]:本公司\n#相互持股比例:無\n#發生緣由:為解決銀行子公司累積虧損三分之一問題,擬辦理現金增資新台幣壹佰億元。辦理方式採私募或公開招募方式擇一辦理,並儘速提報董事會決議。如採行公開招募方式而在程序上依法得洽特定人時,擬授權董事長決定之。目前已有本公司大股東之一SIPF,B.V.或SIPF, B.V領導之投資人集團表達全額認購之意願。除進行前述現金增資計劃外,亦授權董事長與其他金融機構洽商併購之方案,以確保本公司最大利益。\n#因應措施:無\n#其他應敘明事項:無
【經濟日報╱記者 呂淑美】2008.11.29 02:57 am\n\n日盛金控董事長陳國和原本希望日盛金待價而沽,喊價一度超過13元、15元。但這波次貸風暴、金融風暴狂襲,股價愈盤愈低,陳國和最後只能忍痛割愛;二年多前入股33%、一直希望取得主導權的日本新生銀行,也終於抱得美人歸。\n\n陳國和所創的證券事業版圖─日盛證,過去一直是市場第二把交椅,過去還曾與龍頭元大短兵相接,有坐二望一之勢。未料為了圓金控夢,吃下寶島銀(後來改名為日盛銀),使日盛銀的財務窟窿愈來愈大,導致如今必須將日盛金經營權拱手讓出。\n\n曾有意併購日盛金的金控人士私下表示,大家只對日盛證有興趣,對於日盛銀則沒太興趣。今年初,市場一度傳出日盛金要以高價13元、15元,甚至更高的價格出售予金控,當時傳出的有富邦金、國泰金、永豐金、元大金等,但最後都因陳國和開出高價,最後合併案乃無疾而終。\n\n這幾個月台股一路重挫,不但日盛金股價大跌,讓談判失去優勢,再加上股市大跌、成交量能急凍,日盛證營運更出現虧損。\n\n【2008/11/29 經濟日報】
* 2008-10-18 * 【廖嘯龍/台北報導】\n\n自稱是已故日盛集團創辦人陳士元獨子的陳永霖,為了爭家產,十七日中午帶著六十多名黑衣人到日盛證券前丟雞蛋抗議,轄區中山分局趕往驅散,帶回廿三人清查,發現有天道盟、竹聯幫份子,其中七人未成年,勸導後飭回。\n\n日盛員工私下向警方表示,陳家對陳永霖身分存疑,曾要求作親子鑑定未果。\n\n廿六歲的陳永霖,在抗議現場發散一份傳單,指稱自己是陳士元唯一的合法繼承人,要求日盛集團返還他父親的三百億資產,在離開警局前,陳永霖並表示,如果對方沒有善意回應,他將持續抗爭行動,爭取合法權益。\n\n市警中山分局昨日中午接獲報案,指稱有大批幫派份子將前往松江路、南京東路口的日盛證券前鬧事,警方火速派員趕往,在現場發現有六十多名頭綁白布條的黑衣人聚集,這些黑衣人見到警方一哄而散,把好幾箱雞蛋都丟在巷內,但還是全數被警方查獲。\n\n此時,市議員林瑞圖也趕到,表示係受其中一名陳永霖的男子委託,要幫忙調解家產糾紛,由於該批黑衣人並沒有明顯違法行為,警方最後僅將其中未帶證件的廿三人帶回分局清查,陳永霖也自願到案說明。\n\n經警方清查,陳永霖有槍砲、洗錢、詐欺、逃兵等前科,陳某則出示身份證及戶口名簿,證明生父是陳士元,母親則是卓金鳳〈藝人丁黛〉。\n\n據陳永霖表示,他日前向現任日盛集團總裁的叔叔陳國和表達返還父親資產的要求,對方避不見面,只派秘書推稱要考慮三天,但遲遲沒有消息,才邀集朋友到日盛去抗議,但他也不曉得會來了那麼多人。\n\n警方私下詢問日盛集團內部員工,得到的答覆是,陳士元晚年長期洗腎,對於陳永霖到底是否為陳士元親生?家族持懷疑態度,先前他們曾要求進行親子DNA鑑定,但對方不肯,所以才會質疑陳永霖爭產的動機。\n\n警方在逐一清查黑衣人身份後,發現其中有竹聯幫、天道盟份子,還有七人未成年,警方已通知家屬前來領回,並告誡陳永霖,爭取家產應循合法的法律途徑,動輒率眾包圍金控公司,不僅造成社會混亂,萬一發生事故觸法,更將得不償失。 \n\n
''其有天命乎?天命不可違乎?''\n[[學易雜記]]
景氣黑暗期 金融業擴大裁員 \n聯合新聞網 2008/11/06\n \n \n因應營運黑暗期,金融業人力縮編動作增多。許多民營銀行傳出進一步的人力縮減動作,銀行業者指出,財富管理市場人力原先超過5000多人,在這波人力縮編後,可能會減少2成。\n\n預期景氣會一路走差到明年下半年,為撙節開支,降低成本,金融業人力縮編動作變大。部分民營銀行,日盛、元大、台新銀行都傳出人力縮編動作。\n\n台新金控總經理林克孝表示,台新銀行每年都會進行固定的人力盤點,因為今年及明年景氣比較差,銀行各營業單位由於採利潤中心制,的確會再對人力做進一步考慮,再加上現金卡業務今年確定停止,這部分釋出的人力也會比較多。\n\n日盛銀行也傳出裁員動作,並凍結新人事錄用,從上周起,陸續有日盛員工對外表示,銀行內部已開始裁員。外傳日盛催收人員已減少20 、30人,還有日盛銀行員工,臨時被通知明天不用來上班。不過,日盛金控表示,日盛銀行目前沒有大規模裁員動作。元大金控則表示,銀行部分有例行性的組織調整,但人數不多。\n\n不過,各大財管銀行幾乎都凍結新人力錄用,尤其是遇缺不補。中國信託目前有700多名理專人員,目前維繫現有人力,遇缺不補。富邦金控旗下的台北富邦銀行也表示,維持近700多名理專部隊,並加強人力培訓動作。\n\n但人力緊縮並非只有壞消息,如果能獲得優離優退條件也不錯。\n\n像萬泰銀行在外資入主後,今年6、7月有兩波優退資深員工作動,優退條件都有2N(N為年資),優退條件不錯,吸引不少員工申請,不景氣時,先求落袋為安。\n\n【聯合報/記者孫中英報導/20081106】
鉅亨網編譯郭照青.綜合紐約外電2008 / 12 / 02 星期二 00:05\n\n汽車業冀望2010年需求能見反彈。然而,這份期待只恐不切實際,因為過去幾年,美國三大車廠創造出的,只是「汽車泡沫」。\n 融資利率偏低,貸款條件寬鬆,以及過剩產能造成汽車價格誘人,使得本世紀的前幾年,汽車銷售創新了記錄高點。\n但是專家同意,未來幾年,這三項條件都將不復存在,至少到2011或2012年,銷售將持續較正常水準疲弱。\n這項黯淡的展望,使得通用,福特與克萊斯勒的主管們於本周稍後再度要求華盛頓提供250億美元過渡性貸款時,將更難提出一項具體可行的扭轉乾坤計劃。三大車廠將於周二提交營業計劃予國會,周三於參院委員會進行聽證會,周五再於眾院進行聽證會。\n自1999至2006年,美國汽車銷售平均一年為1690萬輛。而在這段時間之前,僅有一年銷售達到了1600萬輛。\n在這段汽車銷售強勁的幾年裡,有駕照的駕駛人每年僅溫和增加1.1%,顯示銷售的增加超過了基本面。亦即,民眾購買新車,是因為有能力,而非有必要。\n分析師說,有幾年時間的汽車銷售都超過了趨勢水準,部份原因在於家庭財富出現了難以置信的成長,然而隨後卻又發覺這些財富一切只是虛幻。\n還有幾年,是因為促銷越來越誘人,人為拉高了銷售量。現在回顧以往,才恍然見到了泡沫。\n由於長期強勁的銷售,使得汽車廠錯誤地擴大了產能,現在因而嚐到了苦果。\n偏高的銷售量,為通用,福特與克萊斯勒公司帶來了豐厚的獲利,也導致他們與汽車工會簽下了今日所承擔不起的勞工福利合約。\n隨著進口車開始蠶食美國汽車市場,美國三大車廠獲利變得困難許多。到了2005年,通用與福特公司的北美業務已出現虧損。一年後,克萊斯勒也落入了賠錢的行列。\n為了力挽狂瀾,他們關閉了工廠,進行了裁員,讓產能降至需求水準。但是做得卻有所不足。\n這三大車廠目前都進一步降低產能,尤其是休旅車與其他輕型卡車。這顯示,這些公司均未曾預料,一旦汽車泡沫破滅,需求的降幅會有多麼慘烈。\n不只底特律的車廠誤判了情勢,豐田與其他亞洲與歐洲車廠也於本世紀初期,增加了美國車廠的產能。\n由於美國經濟疲弱,豐田已調降了銷售與獲利展望。該廠與其他亞洲車廠也被迫依賴較大的現金折價與其他促銷措施,以提升銷售。\n分析師預期,至少在2012年之前,美國年度汽車銷售難再攀上1600萬輛水準。而在近來銷售量崩跌之前,許多汽車業人士還認為,年度銷售1600萬輛是相當低的水平。\n即使通用公司執行長Wagoner近來在國會的聽證會中也承認,在榮景幾年所達到的汽車銷售水準,在可見的未來,可能再也無法見到。\nWagoner說:「回顧以往,我們認為當時的銷售量高出了正常的趨勢,因為當時的能源成本價格低廉,貸款利率也偏低。」
丁菱娟:最大的風險,就是不冒險\n\n2010-03 Web only作者:丁菱娟\n長大以後知道做任何事都有風險,不做反而最沒有風險。\n於是發現很多組織中總有一群這樣的人,抱著「不做不錯,多做多錯」的心態,於是拖累組織效率,由於沒有人願意擔責任,這種組織只能靜態地老去,直到被市場淘汰為止。\n''人生若是沒有冒險,保守的好處是什麼事也不會發生,但一生可能就一成不變地過去了。''我有位朋友說得好,他最怕的就是十年、20年後再看看自己時,發現還在原地踏步,想要做的事,20年過了還是沒做。這樣的人生令人捏把冷汗。\n我到現在十分慶幸我年輕時決定拋下優渥的年薪與頭銜,決定創業。雖然過程艱苦挫折,當時也沒人看好,但是我現在到達的山丘,相遇的人和看到的風景卻十分豐富,相對起來真是值得。倘若我當時不敢冒險,現在可能還在為退休金打拚吧!\n安逸足以使人軟弱。''安逸的生活中最容易讓人喪失鬥志。''\n在一份世界調查報告中,發現有75%的人最後悔的事,就是年輕的時候沒有好好努力,以致於一事無成。\n一個40歲的中年人被醫師告知患了絕症,最多再活三年,他為了使自己最後的生命更有意義,擬出「三年要做十件事」的計畫。其中包括寫一本書、學一門外語、搞一項發明、辨一個工廠、遊30座名山、看50個城市等等,而且立即付諸行動。\n過了二年又八個月的時候,十項目標全都完成。當他再到醫院複診時,發現是醫師拿錯了病歷,自己根本未得絕症;這個誤診讓他因禍得福,也改變了他的人生,意外變成暢銷作家以及成功的實業家。\n冒險可能成功當然也可能失敗,但是''不冒險就永遠沒有機會成功。''\n''人生最大的風險就是不冒險'',不改變的人生在原地踏步,讓時間在指縫中溜走,然後年老時只好加入那75%後悔者的一群。\n''冒險不見得是創業或是做自己能力之外的事,有時它只是個存在已久的夢想,或是想做卻一直沒做的事情。''只要踏出一步,啟動了一個動作,就會有連鎖效應,我們的人生就截然不同。試著踏出一步吧!\n(作者是世紀奧美公關董事長,原文轉載自2010.03.17經濟日報)
腳下踩過污泥,手上採得清蓮。\n\n佛界往往要經過魔界才能達到。\n\n「知錯」和「知對」是一體的兩面;知道錯,等於找到對。\n\n問題是知錯的人有沒有勇氣和決心,立刻朝對的方向走去。\n\n20110506讀書心得<劉墉>《尋找心靈深處的感動》\n\n(網路文章)
期貨天王張松允每天歸零 隨時推翻自己\n\n~ 應變力 ~ 應變力 ~ 應變力 ~ ~ 期貨天王張松允每天歸零 隨時推翻自己 ~ \n\n張松允把看不見的5% 當成是機會也是風險,所以能在多變的市場上,\n縱橫20多年,永保平常心 就是他應變的最佳心法。 \n\n\n\n看不見的五%,對期貨天王、力武電機董事長張松允來說有兩面:\n一面是機會,另一面是風險。 \n\n二○○四年之前,身價從二十萬元累積到十億元,主要抓住三個五%機會。 \n\n第一個機會出現在一九九○年,\n台股在半年內從一萬二千點狂瀉到兩千多點。\n全世界除了一九二九年美國大崩盤,\n沒有見過這麼快、跌幅八成的跌勢,\n當時台灣幾乎沒人預測到,市場也倒了一大堆老主力,\n因為大家都不相信,賺了四年多頭的錢,半年就全部吐回去了。 \n\n大家都不相信的事,卻成為張松允擴大財富的好機會。\n台股在一九九○年達到一萬二千點時,\n張松允剛賺到人生的第一桶金(一百萬元),\n沒多久,他便感受到盤面氣氛異常,強勢股都漲不動,儘管一片榮景,\n但他立即反手做空,不久台股便開始狂瀉到兩千多點,\n同年底,他的財富激增到三百萬元。\n\n\n第二個機會則是一九九一年美伊戰爭爆發當天,\n台股暴跌,一開盤幾乎全面跌停,\n市場的第一個反應是「慘了,可能是第三次戰爭開打了!」\n但是沒多久,張松允卻發覺 指標股 敲開跌停,出現利空不跌,\n於是立刻回補空單、反手做多,\n這一年他的財富從三百萬元倍增為一千萬元。\n\n\n第三個機會是一九九九年九二一大地震。\n在九二一大地震之前,台股已歷經一九九七金融風暴和兩國論\n(編按:一九九九年總統李登輝指出台灣與大陸,\n自一九九一年起已是國與國的關係),連續走了三年空頭;地震之後,\n台股跌至七千四百點,張松允開始進場揀股票,\n布局網路、IC設計、被動元件等產業,一路做多,\n等二○○○年總統大選後,台股站上萬點,\n他的身價也從一億元成長到四億元。 \n\n這三個預測不到的動盪告訴張松允一件事,越是沒有人想到的動盪,\n越是賺錢的好機會。掌握了三次機會,財富倍增,他信心滿滿。 \n\n\n機會變危機!常勝軍也因三一九賠三億 \n\n二○○四年總統大選,當時張松允已有十億身價,他看好選後後勢,\n在選擇權市場重壓多頭這一邊,結果千想萬想,\n都不會預測到台灣的總統選舉會出現槍擊事件。\n三一九兩顆子彈事件發生後,台股連跌兩天,張松允慘賠三億元,\n是他到目前受傷最重的一次。\n這也是他第一次認清,預測不到的動盪也會帶來預測不到的風險。 \n\n儘管在槍擊案發一個月內,張松允又賺回慘賠的三億,\n但這件教訓讓張松允深刻體認到五%機會的另一面:風險。\n此後,張松允在統一證券貴賓室裡的桌子上,多放了一個座右銘:\n逐水草而居,看天時而動。\n\n\n張松允思考了三個月,就在當年六月、他的新書出版上架的同時,\n他也決定逐漸淡出股市,將資金轉進較穩當的房地產和企業經營,\n市投資部位僅留下兩成。「三一九之後,我了解天下沒有不敗這回事。\n如果再遇到一次,自己是不是能活下來。」\n張松允說,「既然如此,我該做更踏實、更長久的事。」 \n\n寶來曼氏期貨前副董事長李文興與張松允有七年同事情誼,\n他認為張松允能夠在市場上存活至今,最大的關鍵 在於不執著。\n「只要看到盤中與原先預估的狀況不一致,\n他(張松允)立刻推翻自己、重新來過。」\n\n\n張松允自己歸納,現在台股結構改變,經常漲好幾天,然後連跌好幾天\n要因應經常出現的黑天鵝事件,\n基本心態就是「每天歸零、每天平常心」。\n真是重要的一句話 意思就是 每天要如何 無壓力的做單 ?\n「股市的迷人就是一直變,昨天是昨天,今天是今天,明天是明天。\n有平常心才能理性,才能反應迅速。」 \n\n即便股市部位減少,張松允的行動力二十年如一日,\n他的字典裡只有「賺錢」和「賠錢」,沒有「套牢」這個詞;\n說穿了就是「提得起,放得下」。 [ 意即 善設停損 ... 嚴格執行 ... ]\n\n\n敢投也敢收!買強勢股,狀況不對就賣 [ 不錯的方法 ]\n\n一、提得起:指的是「看到機會,先買再說」。何謂「機會」?\n就是具有未來性的強勢股;\n「我從來不買最便宜的,只買會漲的強勢股,」張松允說。\n[ tina 我就是 學這個觀念的 有做股票的朋友 也可以參考看看 ]\n\n\n二○○四年張松允資金從股市分散後,\n最關鍵的一次投資,便是投資太陽能產業。 \n\n二○○五年,當時油價從每桶五十美元起漲,節能呼聲高漲,\n媒體一直報導太陽能,吸引企業和個人投資。\n當時台股中,只有茂迪一家掛牌,股價一百多元,\n張松允認為太陽能產業有機會,開始少量投資茂迪;\n「一開始你不知道買到的夠不夠強,\n一定要先試單,試個兩、三天就知道方向了。」 \n\n接著他觀察到油價持續上漲,開始一百張、兩百張的加碼茂迪,\n此時環保議題被大量討論,各國開始研擬替代性能源法案。\n張松允最多手上握有一千張茂迪股票,\n股價破五百元時,他獲利了結一次;\n後發覺話題持續發酵,股價有反映,\n迅速再買進,最終獲利了結時股價是八百元。\n\n\n二、放得下:指的是「狀況不對,先賣再說」。\n這是張松允從唯一一次套牢中學到的教訓。 \n\n一九九○年,身價兩、三百萬的張松允誤信市場主力,\n在股價兩百元時融資買進泰豐輪胎,結果股價不漲反跌,\n一路連挫十根跌停,賣都賣不掉,\n帳面虧損已超過一百萬,每天欲哭無淚。\n從此,他只要嗅到股市氣氛有異,無論手上股票狀況如何,先賣再說。 \n\n張松允有個朋友,因為砍不下股票,手上握著兩百檔賠錢貨,\n其中有十幾檔已經下市了,還是不賣。「捨不得砍,到最後還是會砍,\n只是砍在最低價而已;忍得住的人,賠更多而已。」他說。\n\n\n股市教了你什麼? 張松允想都不想便說,\n一是不要因貪婪忘記風險,\n二 是不要自以為是先知,可以掌握趨勢。\n「大家都是平凡人,只能順勢,才輕鬆快樂。\n買在最低點,賣在最高價,那都是意外,不需要求那麼苛刻。」
* 2009-01-27\n *【朱建陵/綜合報導】中國時報\n\n一個三年前從河北轉到日本就學的中學生相木將希發現,他在中國讀到的唐朝詩人李白《靜夜思》版本和日本流通的版本不同,他在積極尋找答案之後發現,日本流通的版本才是李白詩作的原文,目前大陸和台灣流通的版本,都是後人的改寫。\n\n目前大陸和台灣流通的《靜夜思》版本,都是「床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉」。但根據日本版本,則是「床前『看』月光,疑是地上霜。舉頭望『山』月,低頭思故鄉。」\n\n《BBC》報導,相木將希發現版本不同之後,先是詢問出版社,未能求得解答。其後,他透過網路查找、寫信給中國學者等方式得知,日本的表述是李白詩作的原文,中國的表述則是明朝後為普及詩詞而改寫的。\n\n據稱,中國大陸學者一般都同意,日本版本的《靜夜思》和現存最早的宋蜀本《李太白文集》一致,應當是李白原詩。現今中國通行的版本,最初見於明朝李攀龍的《唐詩選》,並出現在清乾隆年千蘅塘退士所編的《唐詩三百首》,流傳至今。\n\n去年五月,中國國家主席胡錦濤訪問日本期間,曾前往橫濱中華山手學校參觀,並走上講台,為學生講解《靜夜思》。胡錦濤當時用的也是「床前明月光」的中國版本。\n\n事實上,「床前明月光」版本很早就引起懷疑,首先是在室內的床前,如何能「舉頭望明月」,有學者認為,此「床」非指「睡床」,而是「井欄」。再有,一首五言絕句出現兩次「明月」,是件很奇怪的事。\n\n此詩後來也被大陸好事者編入「政治段子(笑話)」。說某領導詩興大發,賦詩一首:「看見床前明月光,懷疑地上起了霜。抬起頭來望明月,低下頭去想故鄉。」領導祕書聽後激動不已,讚領導比李白更勝一籌。
百年強震夜半撼蓬萊,\n千計家庭夢醒碎天倫,\n斷層上鐵軌扭月台裂,\n大壩裡地殼隆閘門毀,\n九二一,豈能忘,\n自然造弄眾玄莫可奈,\n妄言獨尊無常只一撇。\n\n2008年日盛銀行會計處員工旅遊見九二一地震遺址有感
油脂為肌膚提高養分,在護膚品與手工皂的配方中都是不可或缺的重要角色.每種油脂都具其獨特的特性,可以針對不同的膚質打造出個人的專屬配方.\n以下列出常用的油品,簡單地介紹油脂的特色與其功能 :\n\n''●荷荷芭油 Jojoba Oil''\n荷荷芭是一種生長在美國西南部和墨西哥西北一帶乾旱沙漠地區的野生植物, 被冠"世界油料之王"之稱.\n\n荷荷芭油實際上是一種液態植物蠟, 是將其種子經壓榨後, 再以有機溶劑萃取的方法精製而得的, 其穩定性高, 不易腐壞, 能夠耐高溫且保持結構不變, 是可以久藏的油.\n\n荷荷芭油含有豐富的蛋白質、礦物質、膠原質, 維生素D、E, 成分很類似人體皮膚的油脂, 能在肌膚形成一種保濕薄膜, 卻不會阻礙肌膚呼吸, 能抗菌也能夠輕易滲入肌膚, 改善發炎、濕疹、面胞等肌膚, 對維護皮膚水份, 預防皺紋與軟化皮膚也特別有效.\n\n因荷荷芭油與肌膚相容性高, 容易被皮膚吸收, 被視為肌膚保養品與抗老化產品的上等原料, 廣泛應用在各種化妝護膚品裡.\n\n手工皂特性 : 荷荷芭油是液態蠟, 應用在手工皂上能做出泡沫穩定、洗感極住的香皂, 適合作超脂(Superfatting)使用.\n建議使用量 : 5-10%\n皂化值\nNaOH : 0.066\nKOH : 0.092\nINS 值 : 11\n\n''●堅果油(澳洲胡桃油) Macadamia Nut Oil''\n堅果油也稱為"澳洲胡桃油", 屬常綠性喬木, 山龍眼科, 原產地在澳洲新南威爾斯、昆士藥蘭等地.\n\n堅果油油性溫和, 不刺激肌膚, 延長性良, 使用時不會有油膩之感, 加上具有很強的滲透力, 能很快被肌膚吸收, 因棕櫚酸含量較高, 可以促進細胞新生, 使老化的肌膚得到很好的滋潤, 對於老化肌膚的復原有很大的益處, 此外, 堅果油也含有肌膚所必須的豐富脂肪酸, 有良好的保濕功能, 能讓肌膚常常保持水嫩明亮.\n\n入皂特性 : 堅果油屬軟性油脂, 雖說價格較昂貴, 但保質期很長, 起泡細小, 滋潤度一般, 但保濕效果強, 配搭橄欖油/甜杏仁油能製作出很好的手工皂, 適合作超脂(Super Fatting)使用.\n建議使用量 : 15-30%\n皂化值\nNaOH : 0.139\nKOH : 0.192\nINS 值 : 119\n\n''●開心果油 Pistachio Nut Oil''\n開心果(Pistachio Nut)也稱"萬壽果", 因其核果似心形, 且會裂開, 而得此名.\n\n開心果, 原產於敘利亞、伊拉克、伊朗、前蘇聯西南部和南歐(地中海地區)、中國新疆亦有栽培.\n\n開心果油含有豐富養份如脂肪、蛋白質、糖、磷、鉀和鈣, 還含有維生素E, 有抗衰老的作用, 能增強體質, 因此歷代波斯國國王視之為仙果.\n\n開心果油由開心果仁壓榨取得, 富含維生素E, 大量不飽和脂肪酸, 不但可抗老化, 對皮膚的軟化功能有顥著的效果, 還具有防曬的功用, 質地清爽, 沒有油膩感, 能被皮膚迅速吸收, 屬滋養油品, 很適合用來製作洗髮皂, 可防曬、防老化, 保護肌膚及髮絲, 尤其對粗糙肌膚的修復效果非常好.\n\n開心果油也是受歡迎的媒介油之一, 因能輕易與其他油品混合, 故在調配按摩油、護膚保養品中都是很重要的油品之一.\n\n入皂特性 : 開心果油屬軟性油脂, 可產生清爽且細緻的泡沫和洗感, 起泡力低且因亞油酸高故不耐放.\n建議使用量 : 20-72%\n皂化值\nNaOH : 0.133\nKOH : 0.186\nINS 值 : 92\n\n''●蘆薈油 Aloe-Vera Oil''\n\n蘆薈油是由蘆薈中透明膠狀物加上為乳化(Liposome)製作而成, 內含保濕劑、稠化劑及濕潤劑. 其中所含的純油性蘆薈凝液,能給予灼傷、擦傷以及日曬後失去水份的肌膚更深層的滋潤與養份, 並迅速修復受損的細胞組織, 促使細胞再生, 並使您的肌膚恢復健康.\n\n蘆薈油含天然膠性物質, 保水木質素(Lignin), 具有強滲透物質, 能幫助營養素滲透進入肌膚皂角(Saponons), 具有強力清潔、抗菌力作用, 為天然皂素含Anthraquinone Complex, 具有消炎、消腫、抑制細菌生長、止癢、止痛等效果, 適用於各種膚質, 尤其對油性皮膚及易發炎皮膚很有助益.\n\n蘆薈油是一種很好的化妝護膚品添加劑, 能對以此製作的產品起到抑制自由基引起的脂質過氧化作用, 對於入皂方面, 建議作超脂(Super Fatting)使用.\n\n''●芝麻油(冷壓) Sesame Oil''\n芝麻油也稱為"麻油"、"香油", 冷壓芝麻油是不經炒熟, 以低溫烘培使芝麻中的蛋白質變性凝固, 轉化成穩定性的油脂, 在完全冷卻的溫度下壓榨而成的, 與一般市面上的食用級芝麻油不同, 沒有經過高溫焙炒, 故沒有濃郁的麻香味, 顏色也較清淡,但所含有的營養則版完全保留.\n\n芝麻油富含蛋白質、礦物質、維他命、卵磷脂、胺基酸等營養素, 有優良的保濕效果和使皮膚再生的功能, 非常適合老化與乾燥肌膚, 其所含有的豐富脂肪酸、天然維他命E和芝麻素, 具有優異的抗氧化和抗自由基功效, 能保護肌膚免受紫外線傷害.\n\n芝麻油安定、耐久藏, 除含有天然抗氧化物維生素E外, 尚含有其他油脂沒有的特定成分「類木酚素(Lignans)」, 它是一種強有力的天然抗氧化物質, 對改善乾癬、濕疹都有一定的幫助, 是一款滋潤性油脂, 也常被用於製作口紅、晚霜、膏霜等原料.\n\n入皂特性 : 芝麻油屬軟性油脂, 保濕性佳, 泡沫豐富, 皂體略為透析, 洗感清爽.\n建議使用量 : 3-5% (若比例使用量高, 皂極容易軟爛糊化, 建議不超過10%)\n皂化值\nNaOH : 0.133\nKOH : 0.188\nINS 值 : 81\n\n''●亞麻籽油 Flaxseed Oil''\n亞麻籽油是由亞麻籽經過壓榨製取的油脂, 含有豐富的a-亞麻酸,Ω-3,-必需不飽和脂肪酸, 是對人體極其重要,但自身又無法合成.\n\n亞麻籽油內含脂肪酸Ω3, 是主要癒合皮膚的因素, 改善皮膚脂肪含量,促進細胞健康, 改善細胞膜的水份和彈性,增加細胞呼吸和營養交換功能,並加強身體細胞修補及癒合能力 能令肌膚嬌柔亮澤, 使肌膚更幼滑、滋潤、柔軟富有彈性, 同時令皮膚呼吸及排汗正常, 減輕種種皮膚問題, 對指甲, 毛髮生長, 減少頭皮都很有幫助.\n\n亞麻籽油有天然的抗炎因子,能舒緩風濕性關節炎、過敏與其它發炎性疾病引起的症狀 .\n\n入皂特性 : 亞麻籽油屬軟性油脂, 起泡細小, 滋潤度高.\n建議使用量: 不高於8% (使用太多會令手工皂容易酸敗)\n皂化值\nNaOH : 0.135\nKOH : 0.19\nINS值: -6 (必需配搭硬性油脂使用)\n\nhttps://bonhw.wordpress.com/2012/04/04/%E6%A4%8D%E7%89%A9%E6%B2%B9%E8%84%82%E7%89%B9%E6%80%A7%E8%88%87%E5%8A%9F%E6%95%88%E3%80%8A%E4%B8%80%E3%80%8B/
''●蓖麻油 Castor Oil''\n蓖麻又名草麻子或是紅大麻子,是典型的不幹性液體油,主要成分是蓖麻酸酯. 是一種很滋潤的油脂,有極佳的保濕效果,有緩和及潤滑皮膚的功效,具傷護作用同時能提高肌膚的水份吸收率.\n\n特有的蓖麻酸醇有其顥著功效,對髮膚有特別的柔軟作用,可以柔軟肌膚和髮絲,用於傷口感染和皮膚病,也能治療眼睛發炎.\n\n蓖麻油是由蓖麻籽壓榨而成的, 為透明或淺黃色黏稠液態, 是一種保濕存高又溫和的油脂, 具有使肌膚嫩柔的功效,能讓肌膚得到充分的滋潤和保濕效果. 在醫療用品以及化妝品領域應用甚廣, 脂肪酸的組成與其他油脂大有不同, 其蓖麻酸的脂肪酸含量高達90%, 因此黏度高而且能吸收空氣中的水份.\n\n此外, 蓖麻油具有非常溫和的鎮靜效果, 特別適合疲勞、壓力大或肌膚異常敏感的人, 可以有效減少肌膚敏感的情形,也很適合用於在烈日灼傷後的肌膚.\n\n對於用在手工皂而言, 使用蓖麻油製作出來的香皂, 對頭髮、肌膚有特別的柔軟作用, 香皂的泡沫多而且具有透明感,所以蓖麻油也是製作透明皂基的主要油脂. 其溫和和穩定的特性, 更可以幫助維持精油的香氣.\n\n手工皂建議使用量 : 20%以下\n皂化值\nNaOH : 0.1286\nKOH : 0.178\nINS 值 : 95\n\n''●酪梨油 Avocado Oil''\n酪梨油含豐富的蛋白質、維他命A、B群及維他命D. 其營養價值高,保濕力強.可滲入肌膚深層,對肌膚具有深層清潔及柔軟滋潤的效果, 親膚性極佳,溫和、不刺激,可改善皮膚炎與過敏現象,很適合嬰兒、乾性或敏感性肌膚.\n酪梨是世界紀錄中所記載為營養最高的水果, 酪梨樹的主要產地是以色列、南美、美國、英國等.\n\n酪梨油是從酪梨果肉經脫水後用壓榨法或溶劑萃取法而製得的, 尚未精煉的酪梨油呈現自然的淺綠色, 而精煉(Refined)過的則是淡黃色的, 且在精煉過程中大約會損失20-30%的原油料.\n\n酪梨油營養度極高, 富含維他命A、E和C, 屬於能滲透較深層的基礎油, 其滲透力僅次於荷荷芭油, 用在肌膚上可以潔淨肌膚的深層, 能幫助淡化皺紋、黑斑、雀斑, 可有效改善皮膚乾燥及老化現象, 對炎症、粉刺有一定的療效, 適合中性、乾性、混合性偏乾性和敏感性的肌膚使用.\n由於酪梨油對皮膚無毒、無刺激, 對眼睛也無傷害性, 所以廣泛應用於化妝護膚產品, 亦因其含有各種維生素、甾醇、卵磷脂等有效成分, 具有較好的潤滑性、溫和性、乳化性, 穩定性良好, 對皮膚的滲透力比羊毛脂更強, 故酪梨油也是製作乳液、膏霜、洗髲水與香皂的原料.\n\n入皂特性 : 酪梨油屬軟性油脂, 是製作手工皂的高級素材, 起泡度穩定、滋潤度高、泡沫少、成皂質地較軟, 能製作出非常溫和滋潤的香皂, 最為適合嬰兒名過敏性肌膚使用.\n\n建議使用量 : 30%\n皂化值\nNaOH : 0.133\nKOH : 0.186\nINS 值 : 99\n\n''●琉璃苣油 Borage Oil''\n琉璃苣油(Borage Oil)是從琉璃苣種子所萃取出來的著名油脂, 琉璃苣的花色是美麗純淨的藍, 在英國, 這種紫草科的星狀花朵被稱呼為「星之花」.\n\n琉璃苣油是一種天然的油脂, 其中含有超過80%的多元不飽和脂肪酸,亞麻油酸、γ亞麻油酸是高品質的必需脂肪酸,其高貴的特質源自於它含有豐富的鈣、鉀和礦物質, 因為琉璃苣油含有豐富的Omega-6多元不飽和脂肪酸, 其中的迦瑪亞麻油酸GLA (Gamma-Linolenic Acid) 是只在母乳裡才能找到的必需脂肪酸, 濃度更高達25%-30%, 也是天然植物油中含GLA濃度最高的,具保濕、促進細胞再生的功能.\n\n琉璃苣油所含的必須脂肪酸GLA對皮膚最明顯的作用, 莫過於維持細胞膜的健康, 並讓細胞保留較多的水份, 而判斷GLA攝取是否充足的一個指標, 就是皮膚乾燥的程度, GLA轉化成前列腺素PGE1有抑制發炎、擴張血管的作用, 對於皮膚發炎敏感問題,如濕疹、乾廯、皮膚乾燥發癢、青春痘也有改善的作用.\n\n因此琉璃苣油對於維護健全的皮膚、舒緩乾燥發癢、改善皮膚異常症狀、預防掉髮及指甲的健康有很大的幫助, 其製成的化妝護膚品具有潤滑和滋養乾性與敏感性肌膚的功能, 有再生和化的特性, 常被用於抗老、緩皺的產品來抵抗肌膚失水、缺乏彈性的現象.\n\n琉璃苣油也在遺傳性過敏皮膚炎atopic dermatitis (eczema濕疹)臨床實驗中發現對皮膚發炎、乾燥、及皮膚癢有相當的療效而且完全沒有副作用.\n\n入皂特性 : 琉璃苣油屬軟性油脂, 泡沫穩定, 滋潤高, 適合作超脂(Super Fatting)使用.\n建議使用量 : 5-10%\n皂化值\nNaOH : 0.135\nKOH : 0.19\nINS 值 : 55\n\n''●杏核仁油 Apricot Kernel Oil''\n杏核仁油(Apricot Kernel Oil)是由杏桃的果仁莘取而成的油脂, 含有豐富的礦物質, GLA與維他命A、B1、B2、B6、C, 保濕效果強, 有幫助舒緩緊繃、軟化皮膚的功能, 能使疲勞的肌膚恢復生機, 適合熟齡肌膚 、乾燥脫皮肌膚及過敏膚質, 膚色蠟黃和問題肌膚也很適合使用.\n\n杏核仁油富含油酸及亞麻油酸, 油感細緻、清爽, 含有讓肌膚軟化, 滋養肌膚與恢復肌膚生氣的成分, 尤其對乾燥、脆弱、成熟及敏感皮膚特別有幫助, 油脂特性容易延展開來, 適合用作芳療產品的精油媒介油上, 而在在製作手工皂皂及化妝護膚品中可與甜杏仁油互相替代使用的,\n\n入皂特性 : 杏核仁油屬軟性油脂, 質感清爽, 能產生具有清爽,蓬鬆的泡沫.\n建議使用量: 10-50%\n皂化值\nNaOH : 0.134\nKOH : 0.188\nINS值: 108\n\n''●甜杏仁油 Sweet Almond Oil''\n甜杏仁油(Sweet Almond Oil)是從杏樹果實(甜杏仁)中提取的, 富含油酸(olein),是使用最廣泛植物油之一,除用作稀釋濃純精油外,更能保護、滋養、柔軟皮膚、紓緩濕疹之不適.\n\n甜杏仁油氣味清香, 質地輕爽柔軟、滋潤而不油膩, 富含多元不飽和脂肪酸、維他命D、E與蛋白質等物質, 具有滋養與保濕的神奇功效, 是一種保養皮膚及滋潤效果極佳的植物油,能柔軟肌膚、舒緩與抗過敏的作用, 對於乾性皮膚或因氣候變化而引起皮膚不適的問題極有益處, 更可促進細胞生長, 使肌膚恢復光滑柔細,如果長期使用可以有效地消除妊娠紋, 是一種天然的潤濕劑.\n\n甜杏仁油極為溫和, 易被肌膚吸收, 能有效地減輕皮膚發癢現象, 消除紅腫、乾燥和發炎, 適用於各種膚質, 連嬰兒都可以安心使用.\n\n此外, 對於運動過度引起之肌肉疼痛, 若以甜杏仁油按摩可加強細胞帶氧功能, 消除疲勞與碳酸累積, 具有鎮痛及減輕刺激的作用.\n\n入皂特性 : 甜杏仁油屬軟性油脂, 起泡細緻綿密、溫和滋潤, 有良好的頀膚效果.\n建議使用量: 15-30% (超脂Super Fatting – 5%)\n皂化值\nNaOH : 0.136\nKOH : 0.195\nINS值: 97\n\n''●沙棘果油 Seabuckthorn Oil''\n沙棘果油是以優質精選的沙棘果為原料, 經過榨汁、高速離心分離、壓濾而製得的棕紅色澄清透明油脂,具有特有的芳香氣味.\n\n沙棘果油富含100多種生物活性成分, 在臨床醫學觀察中具備了綜合的多方面療效功能。\n\n沙棘果油是由棕櫚酸、棕櫚烯酸、硬脂酸、油酸、亞油酸、亞麻酸等多種有益脂肪酸組成,其中不飽和脂肪酸高達70%,沙棘果油中類胡蘿蔔素和維生素E以及多種微量元素如人體不可缺少的維生素A、鎂、鋅、鐵、錳等含量亦較高, 除此之外,沙棘果油中的少量植物甾醇、兒茶素類、黃酮類化合物,這些活性物質多為人體細胞組成和維持生命活動不可缺少的物質,參與機體的生命活動的各個環節,由此可見沙棘的營養成份具有全面性,是其他油脂不可比擬的.\n\n此外,沙棘果油在消除自由基,抗氧化延緩衰老方面作用顯著,進而可減少由衰老而引起的各種問題, 而所含有的維生素E、黃酮類、微量元素類複合而成的多元體,在抗衰老作用中,互相補充,起到協同增效作用, 促進面部微血管的循環,沙棘果油的抗氧化功能可有效地除去面部色斑及皺紋,起到滋潤、美白、祛斑、除皺等多方面效果, 也常被應用在美容領域. 除此以外,沙棘果油還有一定的抗輻射作用和防治燙傷及凍傷的功效, 可廣泛應用於藥品、功能食品等領域。\n\n''●小麥胚芽油 Wheat Germ Oil''\n小麥胚芽油(Wheat Germ Oil)是由小麥最營養的精華部分經壓製或以溶媒提取而萃得的油脂 – 植物胚芽是種子發芬的部位,也就是植物的生命泉源.\n\n小麥胚芽油含豐富維他命E, 是著名的天然抗氧化劑,能穩定精油,使效果更加持久, 只要加入一點點於其它植物油,便可延長保存期限。\n\n小麥胚芽油的抗自由基的特性, 可延緩皮膚老化, 滋潤性強, 可淡化細紋、妊娠紋、疤痕, 增加肌膚濕潤力,對干燥、缺水、老化、皺紋肌膚極有幫助, 亦能減少青春痘所留下的痕跡, 適合各種膚質,對黑斑、乾癬、濕疹也有一定效果, 此外, 小麥胚芽油亦具有防曬功能.\n\n入皂特性 : 小麥胚芽油屬軟性油脂, 洗感清爽, 起泡度不錯, 能增加手工皂的保濕力和柔滑感.\n建議使用量: 5%\n皂化值\nNaOH : 0.131\nKOH : 0.183\nINS值: 58 (需配搭硬性油脂使用)\n\nhttps://bonhw.wordpress.com/2012/04/04/%E6%A4%8D%E7%89%A9%E6%B2%B9%E8%84%82%E7%89%B9%E6%80%A7%E8%88%87%E5%8A%9F%E6%95%88%E3%80%8A%E4%B8%89%E3%80%8B/
''●橄欖油(初榨特級) Extra Virgin Olive Oil''\n初榨橄欖油是橄欖油中品質最好的級別,是從橄欖中以低溫壓榨方式(冷壓法)獲取的第一度油脂,除了清洗或過濾外,不進行脫酸、脫色、脫臭等精製手續, 也因此初榨橄欖油才沒有被破壞其原有成分, 並保留所有天然的優點.\n\n橄欖油的甘油酯中, 不飽和脂肪酸成分類似人乳,其中多鍵亞油酸和亞麻酸含量幾乎與人乳相同, 因此容易被人體肌膚吸收, 橄欖油中還富含維生素A、B、D、E和K, 故有促進皮膚細胞及毛嚢的新陳代謝作用, 其中所含有的維生素E和非皂化物成分, 能促進皮膠原增生, 維護肌膚緊緻與彈性, 及具有抗老化功效.\n\n橄欖油除了具有優良潤膚養膚功效, 還有一定的防曬作用, 是製作天然化妝護膚品、手工皂的重要原料.\n\n入皂特性 : 橄欖油屬軟性油脂, 能製作出極溫和滋潤的皂, 其清潔力弱, 雖然起泡性不佳但能產生非常細緻穩定的泡沫.\n建議使用量 : 沒有限制(傳統老祖母皂是以100%比例製成的)\n皂化值 :\nNaOH : 0.134\nKOH : 0.19\nINS 值 : 109\n\n''●葡萄籽油 GrapeSeed Oil''\n葡萄籽油是由葡萄籽經常溫壓榨, 精製而得的一種油脂, 葡萄籽含有高量的OPC(原青花素 Oligo Proanthocyanidin)抗氧化劑, 主要存在於葡萄表皮和種子裡, 還含有豐富維生素B1、B3、B5、C、F、葉綠素、微量礦物元素、必須脂肪酸、果糖、葡萄糖、礦物質、鉀、磷、鈣、鎂和葡萄多酚, 是清爽不油膩的油脂.\n\n葡萄籽中所含有的亞麻油酸是一種人體必須而卻不祇自行合成的脂肪酸, 能抵抗自由基、抗老化, 幫助維生素C和E的吸收, 強代循環系統的彈性, 保護肌膚中的膠原蛋白, 預防黑色素沉澱, 減輕紫外線對肌膚的傷害.\n\n葡萄籽油含有多種抗氧化物質, 滲透力佳, 適合作面部按摩與芳療之用, 能增加肌膚保濕效果, 亦同時滋潤與柔軟肌膚, 對油性、暗瘡、粉刺等均有好的功效, 亦適用於細緻敏感肌膚.\n\n入皂特性 : 葡萄籽油屬軟性油脂, 起泡度細少, 滋潤度一般, 但具有抗氧化與高保濕效果, 油質清爽不油膩.\n建議使用量 : 不高於10%\n皂化值 :\nNaOH : 0.1265\nKOH : 0.191\nINS 值 : 66\n\n''●向日葵籽油 Sunflower Seed Oil''\n向日葵籽油也稱葵花籽油是從大型向日葵花的籽裡提煉出來的油脂.\n\n向日葵籽油質地細緻, 沒有油膩感覺, 有良好的保濕功能, 同時也因為高成份的維他命 E, 故是天然的抗氧化劑, 可防止油脂酸敗, 還因含有植物固醇、卵磷脂、胡蘿蔔素等, 可孕軟肌膚、防止肌膚老化, 對肌膚細胞有保護及重建的功效, 可強化細胞的緊密度, 使皮膚滋潤保濕、彈性有光澤, 因此也常被用於各種化妝護膚品原料, 也由於其半乾化的特性, 所以也適用作油性肌膚產品的柔軟劑、調理劑, 亦可改善濕疹及異位性皮膚炎, 敏感乾燥肌膚也適用.\n\n入皂特性 : 向日葵籽油屬軟性油脂, 泡沫少, 滋潤高、保濕效果好, 能替代橄欖油, 因含豐富維他命E, 是天然的抗氧化劑,能防止油脂酸敗, 延長手工皂的保存期.\n建議使用量 : 15-20%\n皂化值 :\nNaOH : 0.134\nKOH : 0.189\nINS 值 : 63 (建議配搭硬油使用)\n\n''●椰子油 Coconut Oil''\n是由椰子中的白色椰仁所提煉而成的油脂,主要成分為十二酸(月桂酸)及肉荳蔻等甘油脂,富含飽和脂肪酸. 可以為肌膚補充充足的油脂養分,特別有益於頭髮,使乾燥、黯淡的頭髮恢復光澤、亮麗,對於乾燥皮膚也有良好的滋潤效果.\n\n椰子油是製作手工皂不可缺少的油脂之一, 富含飽和脂肪酸, 可以製作出潔淨力強、泡沫豐富、顏色雪白且質地堅硬的皂.為避免潔淨力強帶來皮膚乾澀感, 所以用量不適宜過高.\n\n手工皂建議用量 : 20%\n皂化值 \nNaOH : 0.19\nKOH : 0.2660\nINS 值 : 258\n\n''●棕櫚油 Palm Oil''\n由油棕樹的果實精煉而成的油脂,主要成分為三棕櫚酸甘油脂及甘油三油酸脂的甘油酸脂. 含有40%多的油酸,有一定的保濕力,通常用於增加皂的堅固度.\n\n棕櫚油是從油棕樹上的棕果(Elaeis Guineensis)中榨取出來的. 主要來源是非洲油料棕櫚, 原產於熱帶非洲, 亦產於中美洲、馬來西亞及印度尼西亞等地.\n\n棕櫚油含有相當高的棕櫚酸和油酸, 是手工皂必備的油脂之一, 能製作出對皮膚溫和、潔淨力好且堅硬厚實的香皂, 不過起泡力不高, 所以一般都配搭椰子油使用.\n\n手工皂建議使用量 : 10-20%\n皂化值\nNaOH : 0.141\nKOH : 0.199\nINS 值 : 145\n\n''●白(硬)棕櫚油 Rbd Palm Stearin''\n精製硬質棕櫚油(Rbd Palm Stearin), 簡稱硬棕油, 是棕櫚油經過晶析分離之硬脂精製而成.\n\n棕櫚油是從油棕樹上的棕果(Elaeis Guineensis)中榨取出來的. 主要來源是非洲油料棕櫚, 原產於熱帶非洲, 亦產於中美洲、馬來西亞及印度尼西亞等地.\n\n棕櫚油含有相當高的棕櫚酸和油酸, 是手工皂必備的油脂之一, 能製作出對皮膚溫和、潔淨力好且堅硬厚實的香皂, 不過起泡力不高, 所以一般都配搭椰子油使用.\n\n手工皂建議使用量 : 10-20%\n皂化值 NaOH : 0.141\nINS 值 : 161\n\n''●棕櫚核仁油 Palm Kernel Oil''\n由棕樹果實的果核仁精煉而成的油脂,含有大量豐富的十二酸(月桂酸)及肉荳蔻酸,飽和程度達80%以上.\n\n其油脂特性與椰子油類似,但它的油酸和亞油酸的含量比椰子油高,故滋潤度比椰子油優及溫和.\n\n棕櫚核仁油是從油棕樹上的棕果(Elaeis Guineensis)中的果核榨取出來的. 主要來源是非洲油料棕櫚, 原產於熱帶非洲, 亦產於中美洲、馬來西亞及印度尼西亞等地.\n\n棕櫚核仁油是集椰子油和棕櫚油二者的優點, 製作出來的香皂, 起泡度和滋潤度高, 且比椰子油更溫和, 營養成分較棕櫚油高許多, 入皂不但能增加泡沫並提高堅硬度, 同時還能避免槨子油對肌膚的微弱刺激.\n\n手工皂建議使用量 : 20-30%\n皂化值\nNaOH : 0.156\nKOH : 0.218\nINS 值 : 227\n\n''●紅棕櫚油 Virgin Red Palm Oil''\n紅棕櫚油是直接以鮮紅棕櫚果肉壓榨而成的油脂, 是未經過脫色精製處理的.\n\n紅棕櫚油除了具有棕櫚油的特性外, 更是天然植物油當中含有胡蘿蔔素量最高的(700-1000ppm), 是胡蘿蔔的30倍. 由於本身含有非常大量的抗氧化物質維生素E, 有助於修復傷口或粗糙的肌膚, 對肌膚有很大效用的, 故此也適合應用在護膚品上,由於油質本身穩定性較好, 用於身體乳液、護唇膏方面也很適合.\n\n另外就是紅棕櫚油天然紅色的本質, 是一種天然的調色劑, 用在手工皂上, 能讓手工皂呈現天然的亮黃色或亮橘黃色.\n\n手工皂建議使用量 : 10-20%\n皂化值\nNaOH : 0.142\nKOH : 0.199\nINS 值 : 151\n\nhttps://bonhw.wordpress.com/2012/04/04/%E6%A4%8D%E7%89%A9%E6%B2%B9%E8%84%82%E7%89%B9%E6%80%A7%E8%88%87%E5%8A%9F%E6%95%88%E3%80%8A%E4%BA%8C%E3%80%8B/\n
''●印度苦楝油 Neem Oil''\n苦楝油是苦楝樹(Neem tree, Azadirachta indica)之種仁萃取物, 是先將印楝油的種子及果核壓碎,再以冷壓方式取得的,在常溫下顏色為咖啡棕色,溫度在14度以下的結晶為淺黃色塊狀, 嚐起來有苦澀味, 氣味像是結合花生和大蒜氣味的綜合體.\n\n苦楝油是一種極好的油品,其含有的印楝素(Azadirachtin)成分,有相當好的消炎、止癢作用,對異位性皮膚炎有很好的舒緩效果,也具有殺蟲及忌避作用, 可作為殺蟲劑使用. 也常用於寵物液體皂, 防蟲軀蚊噴霧.\n\n苦楝油具有強效的抗微生物活性, 同時具有殺蟲效果, 在芳療師的藥典裡, 經常用作與精油調和, 用於處理傷口,割傷與擦傷上, 所具有極佳的抗黴菌效果, 對抗香港腳十分有效. 而苦楝油的眾多用途中, 除包含了處理皮膚表面反應的病毒及細菌感染, 也是一種免疫系統的提振劑, 直接塗抹在頭皮上, 能有效對抗頭蝨的問題, 也可以利用它來進行動物的健康保養.\n\n入皂特性 :苦楝油屬軟性油脂,起泡綿密、滋潤高.\n建議使用量:10-20%\n皂化值\nNaOH: 0.139\nKOH: 0.195\nINS值:124\n\n''●月見草油 Evening Promise Oil''\n\n月見草油(Evening Promise Oil)也稱晚櫻草油, 是以月見草種子經冷壓榨方式萃取而得的一種油脂, 月見草(晚樓草)是源自於北美的一種草本植物, 因在傍晚見月的時候開花, 天亮後隨即凋謝而得其名.\n\n月見草油具有多項重要功能, 其中含有一種特殊脂肪酸- y-次亞麻油酸(Gamma Linolenic Acid, 簡稱GLA), GLA能維持人體細胞的健康, 能使肌膚細胞保留較多水份, 常用於改善肌膚的異常症狀,如舒緩濕疹、肌膚乾燥痕癢, 對維護健全肌膚具有很強的功效.\n\n月見草油亦富含近90%的多元不飽脂肪酸和亞麻油酸,也被稱維他命F, 是構成細胞膜的基本單位, 對肌膚細胞有保護及重建功效, 能滲透至細胞間, 來強化細胞的緊密度, 故非常適合成熟性肌膚, 此外, 月見草油還有抗炎的特性, 對過敏性皮膚炎亦適合.\n\n月見草油除了具有寶貴的頀膚功能外, 對於預防掉髲及保持指甲的健康也有很大的幫助.\n\n入皂特性 : 月見草油屬胾性油脂, 泡沫細小, 滋潤度高.\n建議使用量 : 5-10%\n皂化值\nNaOH : 0.135\nKOH : 0.19\nINS值: 30\n\n''●榛果油 Hazelnut Oil''\n榛果油(Hazelnut Oil)是由榛果樹果實中萃取而得的油脂, 擁有過濾陽光的功效.\n\n榛果油含有各種礦物質、 維生素A、B1、B2、D、E、卵磷脂和蛋白質 , 其擴散力和滲透力非常好, 而且不會在表面留下油跡,是評價很高的精油媒介油.\n\n榛果油有軟化滋潤的作用, 有助肌膚的再生, 有效防止老化, 擁有優異持久的保濕力, 也具有刺激循環系統的功效, 其質地清爽, 能夠迅速滲入皮膚, 防上水分流失, 還具有收斂、淨化肌膚的功效, 對於青春痘、粉刺都有改善效果.\n\n榛果油適合各種類型的肌膚, 特別是對於油性膚質、毛孔粗大者.\n\n入皂特性 : 榛果油屬軟性油脂, 泡沫少, 保濕力強, 洗感清爽.\n建議使用量: 20-60%\n皂化值\nNaOH : 0.139\nKOH : 0.195\nINS值: 94\n\n''●核桃油 Walnut Oil''\n\n核桃油(Walnut Oil)是從成熟的核桃仁經壓榨法而得的油脂, 與堅果油(澳洲胡桃油Macadamia Nut Oil)是不一樣的油脂.\n\n核桃油含有皮膚親和力極佳的角鯊烯、豐富的單不飽和脂肪酸、維生素A、B群、D、E、K等及酚類抗氧化物質, 可防止細胞老化, 能消除面部皺紋, 有效保持皮膚彈性和潤澤, 防止肌膚哀老. 此外, 亦有美白肌膚、潤澤頭髮、防止手足破裂等功效.\n\n入皂特性 : 核桃油屬軟性油脂, 泡沫細緻, 洗感清爽.\n皂化值\nNaOH : 0.1894\nKOH : 0.1353\nINS值: 45(需配搭硬性油脂使用)\n\n''●茶花籽油 Camellia Oil''\n茶花籽油(Camellia Oil)也稱『茶籽油』、『山茶花油』, 日本稱之為『樁花油』而台灣則稱為『苦茶油』, 是由山茶科植物油茶樹的成熟種子用壓搾法取得的植物油脂, 是世界四大著名木本植物油之一.\n\n茶花籽油是所有植物油中脂質最接近人體的植物油脂, 其油酸成份配比非常符合人體營養所需, 單元不飽和脂肪酸含量高, 還有ω(OMEGA)系列的必須脂肪酸和10幾種胺機酸等, 而茶花籽油中不含芥酸、膽固醇、黄曲霉素和其它添加劑, 經測試:茶花籽油中的不飽和脂肪酸(美容酸)高達90%以上, 油酸達到80-83%, 亞油酸達到7-13%, 並含豐富蛋白質和維生素A、B、D、E及鈣、鐵、鎂、硒等礦物質, 尤其是它所含的豐富的亞麻酸是人體必須而又不能合成的, 而它豐富的維他命E含量, 使它成為優良的抗氧化劑, 有抗衰老的功效.\n\n茶花籽油所含的油酸成分與人體皮膚所含油酸成分相近, 不會阻塞毛孔, 容易滲透入皮膚表皮及內層, 產生滋潤作用, 不油膩. 具有促進皮膚新陳代謝的作用, 使皮膚變得幼滑及富彈性、減少皺紋形成. 茶花籽油也是天然的防曬油, 可減低烈日紫外線對皮膚的傷害, 也可淡化暴曬後引起的黃褐斑。\n\n茶花籽油還有不錯的謢髲功效, 既能滋潤頭皮, 而能讓頭髮變得盈潤光澤, 同時還能預防斷髲和脫髲, 故很適合用於洗髲護髲產品.\n\n入皂特性 : 茶花籽油屬軟性油脂, 起泡少、滋潤度高, 特性與橄欖油差不多, 但洗感較清爽.\n建議使用量: 不多於72%\n皂化值\nNaOH : 0.134\nKOH : 0.188\nINS值: 108\n\n''●玫瑰果油 Rosehip Oil''\n玫瑰果油(Rosehip Oil)是從玫瑰果實(也稱薔薇果)經壓榨而成的油脂, 其主要成份有多種不飽和脂肪酸、 果酸 、軟硬酯酸、亞麻油、 棕櫚酸 、 檸檬酸 、 維生素 A、C、 類胡蘿蔔素等.\n\n玫瑰果油是南智利人的美膚法寶, 因其中最重要的成分是r-亞麻油酸, 這種必需脂肪酸能深層滋潤肌膚、提供養份, 對於皮膚有柔軟肌膚、美白、防皺的功效, 能增加皮膚組織活力, 避免鬆弛, 保持皮膚富有彈性, 對預防和改善妊娠紋也有療效, 具有組織再生的功能, 能有效改善疤痕、暗瘡、青春痘的問題, 和保持肌膚水分的卓越功效, 也可以預防日曬後的色素沉澱, 防止紫外線對皮膚造成傷害.\n\n玫瑰果油適用於各種膚質, 特別對改善疤痕、濕疹或乾裂髮質有顯著療效, 被廣泛應用於化妝護膚品、疤痕修復的護理產品和芳療上, 是一種能讓肌膚達到更完美狀態的油脂.\n\n入皂特性 : 玫瑰果油屬軟性油脂, 質地黏稠, 必須配搭質地較清淡的油脂使用, 適宜作超脂(Super Fatting)使用.\n建議使用量 : 5%以內\n皂化值\nNaOH : 0.133\nKOH : 0.182\nINS 值 : 16\n\n''●米糠油 Ricebran Oil''\n米糠油是由原始糙米外表的米糠中經壓榨法所煉製出來的, 含有豐富維他命E、維生素等物質, 與小麥胚芽油的特性很類似.\n\n米糠油的分子比較小, 很容易滲透到皮膚中, 除了能使肌膚的柔滑舒適外, 還具有美白、活化肌膚細胞再生、保濕的功能. 米糠油清爽, 能平滑適度的滲透到肌膚, 不會有沾手黏膩的油質感,非常適合做按摩油、化妝水, 也相當適合製作眼霜、嬰兒用品, 適合所有膚質, 是屬於臉部及身體乳液滋養霜的最溫和油脂之一, 用於液體皂液或液體化妝品中是相當好的, 也很適合用在護手霜以軟化、滋潤手部.\n\n入皂特性 : 米糠油屬軟性油脂, 含豐富的蛋白酶與維生素E, 是相當好的油脂, 起泡佳, 洗感清爽溫和, 可替代小麥胚芽油使用.\n建議使用量 : 20%以內\n皂化值\nNaOH : 0.128\nKOH : 0.187\nINS 值 : 70(建議配搭硬油使用)\n\nhttps://bonhw.wordpress.com/2012/04/04/%E6%A4%8D%E7%89%A9%E6%B2%B9%E8%84%82%E7%89%B9%E6%80%A7%E8%88%87%E5%8A%9F%E6%95%88%E3%80%8A%E5%9B%9B%E3%80%8B/
''草本浸泡油''\n浸泡油的成份很複雜, 不能將它視為精油的同等物.\n簡單地說, 浸泡油是把新鮮或乾燥的草本植物(一般建議使用乾燥的植物浸油, 因油中如含有水質會導致其穩定性下降,容易引起腐敗變質), 放在相應的植物油(基礎油)裡浸泡, 通過數星期甚至更久的浸泡, 不但釋出精油成份, 也同時釋出其他脂溶性物質, 如:以微量吸收的脂溶性維生素、蠟質、以及其他高活性的化學成份.\n很多植物本身很難透過蒸餾方法萃取精油, 而通過浸泡的方法, 卻能產生出較為便宜, 而且效果顯著的功效油.\n草本植物含有高活性的化學分子, 其中有些化學分子可以透過溶劑中的方式萃取出來, 不同的溶劑會吸引不同的活性分子, 如維生素C是屬於水溶性分子, 而維生素E則屬於脂溶性分子, 浸泡油便是透過這種原理來萃取植物的天然營養成份.\n\n''製作浸泡油''\n精油是利用蒸餾等方法直接從植物體萃取出來的物質, 在萃取過程中完全沒有添加任何物質.\n而浸泡油的製作方法則是將乾燥了的植物組織(葉子、花瓣或是枝幹), 放入裝有植物油的玻璃容器中, 再把其安置在日光下的溫暖地方, 讓光與熱幫助活性成份釋放出來, 在浸泡期間需不時搖晃容器, 讓植物能均勻地與油脂相接, 緩慢的萃取過程需要數周甚至更長的時間, 待容器中的植物油(基礎油)吸收了植物組織的活性成份和營養後, 就成了初步的浸泡油.\n在初步浸泡油製成後, 把已浸泡的植物組織從容器中移除, 再重新加入新的乾燥植物組織, 不斷重複上述步驟, 直到植物油(基礎油)吸收足夠的能量, 草本浸泡油便完成.\n草本浸泡油含有精油成份, 在古時曾是人們普遍使用的植物精華, 也曾是醫生常用的天然藥材, 對芳療師來說, 浸泡油具有極高的價值, 使用方便且安全.\n一般來說, 若按照精油的使用守則來使用草本浸泡油, 是絕對安全的, 同種類植物製成的精油和浸泡油, 效用並不完全相同, 但具有類似而互補的功效, 因為浸泡油中含有精油所缺乏的物質, (在浸泡過程中植物油能從植物組織中吸收某些精油在蒸餾中所被破壞了的物質), 而無法蒸餾出精油或精油產量低的植物, 都可以製成浸泡油, 使芳療法或自家製作保養品時能讓可被利用的植物範圍大增, 若在按摩油配方中同時混用浸泡油與精油, 別忘記把浸泡油的用量也算進精油的濃度裡面, 加以稀釋後才使用, 因為浸泡油內含許多活性成份, 加了過量精油很可能會造成傷害.\n某些植物中的特殊成份, 會在蒸餾過程中被破壞或流失, 或因其萃取不易且精油產量少, 此時我們可將其製作草本浸泡油, 以取得其珍貴成份.\n\n''山金車浸泡油 Arnica Montana Infused Oil''\n山金車浸泡油可有效治療瘀傷, 在美容保養上, 可改善皮膚黯沉.\n山金車最大的用途是刺激血液循環和具消炎作用, 近來的研究表現老還能刺激免疫系統, 是順勢療法中最常被使用的材料.\n山金車可使肌肉放鬆, 減輕肌肉酸痛, 適合用於拉傷或酸痛的肌肉, 例如關節炎、筋骨酸痛、腰酸背痛、扭傷、肌腱炎等, 也常用於膏藥, 治療瘀血和消腫, 亦可添加在眼部產品, 有助於減淡黑眼圈.\n◎如皮膚有傷口, 切勿使用.\n\n''金盞花浸泡油 Calendula Infused Oil''\n金盞花(又名萬壽菊)因為價格昂貴, 而且不易萃取出精油, 通常被製成浸泡油來使用.\n金盞花浸泡油,其中的亞油酸和胡蘿蔔素,含量豐富,能調理敏感性膚質,具有舒緩、消腫、抗菌、消炎等功效,亦具有優異抗氧化功效,能抵禦游離自由基在體內的造成的對細胞的傷害,具有抗自由基及強化細胞增殖的功效,能促進細胞再生, 具保濕、滋潤、舒緩、除皺、鎮靜等功效,亦能減退黑眼圈, 此外, 對青春痘、皮膚凍傷、尿布疹、皮膚病、皮膚疤痕、靜脈曲張以及擦傷都有特別效用.\n\n''胡蘿蔔浸泡油 Carrot Infused Oil''\n胡蘿蔔浸泡油是著名的基礎浸泡油, 如今在芳療法中已日益普及.\n胡蘿蔔含有豐富的維他命A、B群和維他命C, 尤其是維他命A與胡蘿蔔素, 是胡蘿蔔浸泡油的最大特性. 此外, 胡蘿蔔浸泡油還含有礦物質, 是一種十分滋潤的油脂, 特別有益於乾燥、老化、容易發癢的肌膚, 對於濕疹、牛皮癬等問題皮膚也有療效, 還具有促使皮膚再生, 保持肌膚光澤、彈性, 以及抑制皮膚發炎、淡化肌膚斑紋的功效, 也可以治療燒傷、燙傷, 特別適合春天時作修復因冬天乾燥所造成的傷害之用.\n◎胡蘿蔔浸泡油呈深橘黃色, 顏色會染污衣物與肌膚, 一般不適合單獨使用, 建議以2-10%的比例與其他基礎油調和稀釋後使用.\n\n''聖約翰草浸泡油 St.John Wort Infused Oil''\n聖約翰草浸泡油(又稱金絲桃浸泡油), 自古以來已是著名的藥草浸泡油, 也常在西方書籍裡被受推薦.\n聖約翰草浸泡油含有維他命A、B6、C、D、E、P和豐富的金絲桃素、黃酮、丹寧酸等等, 其中的維他命C、B6及P更是在其他植物油中所罕見的, 用於按摩可幫助緩和緊張的情緒,、解除壓力、放鬆緊繃的肌肉、緩和靜脈曲張, 同時可提振沮喪消沉的情緒, 而其中的活性成份能聯結到腦部的抗焦慮感受器, 就如同一般鎮靜劑的作用相同.\n聖約翰草浸泡油是具有消炎特性的植物油, 尤其是對神經方面的發炎特別有安撫效用, 例如神秘痛、坐骨神經痛、纖維組織炎、扭傷、灼傷和瘀傷等疼痛都有療效, 在對於皮膚創傷、青春痘和濕疹等皮膚問題也同時有療效.\n◎值得注意的是, 聖約翰草浸泡油的感光分子會使皮膚對陽光特別敏感, 所以使用後需相隔6小時左右, 才能讓肌膚接獲陽光.\n\n''迷迭香浸泡油 Rosmary Infused Oil''\n迷迭香的花與葉都有濃郁的香氣, 是最為人所知、最常用的草本植物之一.\n迷迭香浸泡油用途很廣泛, 具有抗老化、收歛肌膚、促進血液循環的功效, 能改善鬆垮的皮膚, 使肌膚緊實, 防止老化並可消除水腫、充血及腫脹, 其刺激的功能, 對頭皮失調也很有幫助, 能促進頭皮毛囊的血液循環, 刺激毛髮生長, 常用可改善禿頭、掉髲的現象, 對頭皮屑有清潔、殺菌等作用.\n\n''薰衣草浸泡油 Lavender Infused Oil''\n薰衣草是藥草園中最受喜愛的一種草本植物, 素有"芳香藥草之后"的稱譽.\n薰衣草浸泡油具有鎮靜舒緩、幫助肌膚新陳代謝、美化膚質並可舒緩情緒、改善睡眠品質, 驅蟲殺菌、清潔傷口等功效.\n在美容方面, 亦能促進細胞再生、平衡皮脂分泌, 因此, 對所有的皮膚狀態都很有價值, 對灼傷與曬傷也有很不錯的療效, 亦對改善面皰、濕疹和乾癬, 治膿腫、癤, 並能抑制黴菌生長, 使腫脹、疤痕、壞疽減至最低的程度, 亦是一種很好的護髲劑, 對禿頭也有些幫助.\n\n''洋甘菊浸泡油 Chamomile Infused Oil''\n洋甘菊也是自古以來就常被用來製作藥草及各種保養品的草本植物之一.\n洋甘菌浸泡油具有很好的鎮靜和安撫功效, 成份溫和, 特別適合嬰兒及敏感性肌膚. 能減輕燙傷、水泡、發炎的傷口,以及潰瘍和癤, 亦能消炎止痛, 傷護幫助改善濕疹、面皰、皰疹、乾癬與極度敏感肌膚, 及一般過敏症狀.\n洋甘菊浸泡油能平復破裂的微血管, 有效平衡肌膚中的水份和油脂, 增強彈性, 同時能抑制黑色素, 令肌膚更白晢細緻, 對乾燥易癢的肌膚極有幫助.\n\n''紫草根浸泡油 Radix Lithospermi Root Infused Oil''\n紫草根(又稱紅條紫草、紫芙)與紫草(又稱聚合草、康富利)是不同的植物, 雖然同是屬於紫草科, 但藥理效用卻是有所分別的.\n紫草根含有尿囊素(Allantoin)和天然的紫紅色色素(Shikonin),- 是讓其浸泡油能染成深紫紅色的成份.\n紫草根浸泡油裡的萘醌類化合物(Napthoquinone Compounds)具有抗腫瘤、抗菌、抗血栓、抗炎症、抑制真菌、促進傷口癒合過程中的肉芽組織再生等藥理效用.\n紫草根浸泡油因具有很好的抗菌、修復以及安撫功能, 固很適合痘瘡、發炎、濕疹等肌膚問題, 特別是暗瘡肌膚, 更能顯著感受其溫和療效, 其修復功能, 針對受傷肌膚能有癒合消炎功效, 也因含有尿囊素, 可以保濕除皺及增加肌膚彈性.\n\n''聚合草浸泡油 Comfrey Infused Oil''\n聚合草(又稱紫草、康富利)除了管狀花朵是呈淺紫藍色外, 其餘具有藥理療效的枝、葉、莖、根部位均是綠色的, 與中草藥的紫草根是截然不同的植物.\n聚合草浸泡油是呈橄欖綠色, 具消炎、促進紅血球再生、對傷口癒合有非常好的功效, 其療效是來自葉片所含有的尿囊素(Allantoin), 可以加速細胞再生與重建, 在傳統的醫療中, 常被使用於治療扭傷,肌肉和關節過度勞累、治療陳年舊傷或因傷處未癒合而造成的關節緊繃, 因其對骨折、扭傷後的細胞再生有非常良好的效果, 因此也被常用於加速骨折後的重建.\n聚合草浸泡油亦可修護瘀血腫脹、活化細胞、舒緩發癢乾裂及燒傷燙傷, 適用於濕疹與乾燥肌膚.\n\n\n茉莉花浸泡油 Jasmine Infused Oil\n茉莉花向來以氣質高雅的花香而聞名, 其香氣有使人極度放鬆的特性.\n茉莉花浸泡油是很好的美膚嫩白素材, 對皮膚的血管性擴張的紅斑有很好的收歛效果, 亦具有保濕、抗皺的細胞修護特性.\n茉莉花浸泡油可增加皮膚彈性, 對任何膚質均有幫助, 也常被用於淡化妊娠紋與疤痕, 是乾燥與敏感性肌膚的高效能聖品.\n\n\n''玫瑰花浸泡油 Rose Bud Infused Oil''\n玫瑰是一種美容價值很高, 而且很有療效的一種草本植物.\n玫瑰花浸泡油可養顏美容, 含高量維他命A、C、E, 能預防雀斑、美白肌膚、淡化斑痕, 具緊實、舒緩、收歛和滋潤等特性功效, 對發炎現象亦很有幫助.\n玫瑰花浸泡油既能活血散滯, 又能解毒消腫, 因而能消除因內分泌功能紊亂而引起的面部暗瘡等症狀, 其美容效果甚佳, 能有效地清除自由基, 消除色素沉著, 是一種天然美容護膚佳品.\n\n
Hello, Chicago.\n\n哈囉,芝加哥!\n\nIf there is anyone out there who still doubts that America is a place where all things are possible, who still wonders if the dream of our founders is alive in our time, who still questions the power of our democracy, tonight is your answer.\n\n如果外頭還有人懷疑,美國是否真的是任何事都可能發生的地方,懷疑我們開國先賢的夢想今天是否依然存在,懷疑我們民主的力量;今夜,就是你們要的答案。\n\nIt's the answer told by lines that stretched around schools and churches in numbers this nation has never seen, by people who waited three hours and four hours, many for the first time in their lives, because they believed that this time must be different, that their voices could be that difference.\n\n這是個用這個國家僅見,環繞學校、教堂的無數人龍,所說的答案。這些人,苦等三、四個小時,許多還是生平頭一次,因為他們相信,這次一定要不一樣,他們的聲音就是明證。\n\nIt's the answer spoken by young and old, rich and poor, Democrat and Republican, black, white, Hispanic, Asian, Native American, gay, straight, disabled and not disabled. Americans who sent a message to the world that we have never been just a collection of individuals or a collection of red states and blue states.\n\n這是個由不分老少、貧富、民主黨、共和黨;黑人、白人、拉丁裔、亞裔、美洲原住民;同性戀、異性戀人;肢障與四體健全者,大家共同訴說的答案。美國民眾向全世界發出訊息,我們絕非一盤散沙,也不是由紅州、藍州拼湊而成的集合體。\n\nWe are, and always will be, the United States of America.\n\n我們現在是,未來也永遠是,美利堅合眾國。\n\n感謝你們的支持\n\nIt's the answer that led those who've been told for so long by so many to be cynical and fearful and doubtful about what we can achieve to put their hands on the arc of history and bend it once more toward the hope of a better day.\n\n這個是引領國人把手放在歷史拱弧,再度讓它指向明天會更美好希望的答案。長久以來,這些國人一直被許多人灌輸,要嘲諷、害怕和懷疑我們自身的能力。\n\nIt's been a long time coming, but tonight, because of what we did on this date in this election at this defining moment change has come to America.\n\n這個答案遲遲未出現,但是今晚,由於我們在這個投票日關鍵時刻的所作所為,改變終於降臨美國。\n\nA little bit earlier this evening, I received an extraordinarily gracious call from Senator McCain.\n\n今晚稍早,我接到馬侃參議員打來,態度非常懇切的電話。\n\nSenator McCain fought long and hard in this campaign. And he's fought even longer and harder for the country that he loves. He has endured sacrifices for America that most of us cannot begin to imagine. We are better off for the service rendered by this brave and selfless leader.\n\n馬侃參議員已打完一場漫長艱苦的選戰。他為這個他所熱愛的國家所打的仗更久,更艱苦。他為美國的奉獻犧牲,是我們多數同胞難以想像的。因為有他這位勇敢無私的領袖的奉獻,我們才能過比較好的日子。\n\nI congratulate him; I congratulate Governor Palin for all that they've achieved. And I look forward to working with them to renew this nation's promise in the months ahead.\n\n我向他道賀;也向裴林州長道賀,為他們所成就的一切。我迫不及待想和他們攜手合作,在未來數月更新這個國家的許諾。\n\nI want to thank my partner in this journey, a man who campaigned from his heart, and spoke for the men and women he grew up with on the streets of Scranton ... and rode with on the train home to Delaware, the vice president-elect of the United States, Joe Biden.\n\n我要感謝我的選舉搭檔,這位先生全心全意競選,為與他在史克蘭頓街頭一起長大的男男女女代言。在前往德拉瓦州的路上,和我一起以火車為家,他就是副總統當選人,拜登先生。\n\nAnd I would not be standing here tonight without the unyielding support of my best friend for the last 16 years ... the rock of our family, the love of my life, the nation's next first lady ... Michelle Obama.\n\n如果沒有過去十六年來堅定支持的摯友,我今晚不可能站在這裡。她是我家庭的磐石,我一生的最愛,國家未來的第一夫人蜜雪兒‧歐巴馬。\n\nSasha and Malia ... I love you both more than you can imagine. And you have earned the new puppy that's coming with us ...to the new White House.\n\n莎夏和瑪利亞。我對妳倆的愛遠超過妳們想像。你們已贏得即將和我們一起到新白宮作伴的新小狗。\n\nAnd while she's no longer with us, I know my grandmother's watching, along with the family that made me who I am. I miss them tonight. I know that my debt to them is beyond measure.\n\n還有,雖然她已不在我們身邊,但是我知道我外婆,也和造就今日之我的家族一起在看。今晚,我想念他們。我知道,我欠他們的,無法衡量。\n\nTo my sister Maya, my sister Alma, all my other brothers and sisters, thank you so much for all the support that you've given me. I am grateful to them.\n\n我妹妹瑪亞、艾瑪、我的其他兄弟姊妹們,非常感謝你們給我的所有支持。我很感謝他們。\n\nAnd to my campaign manager, David Plouffe ... the unsung hero of this campaign, who built the best _ the best political campaign, I think, in the history of the United States of America.\n\n還有,我的競選經理普羅費,這次競選的無名英雄,我認為他營造了美國史上最佳的政治運動。\n\nTo my chief strategist David Axelrod ... who's been a partner with me every step of the way.\n\n感謝我的首席競選策略顧問艾索洛,一路走來,他一直是我的得力夥伴。\n\nTo the best campaign team ever assembled in the history of politics ... you made this happen, and I am forever grateful for what you've sacrificed to get it done.\n\n感謝這個政治史上無出其右的最佳競選團隊,你們造就了這項成果,我對你們的犧牲奉獻,永存感激。\n\n這是你們的勝利\n\nBut above all, I will never forget who this victory truly belongs to. It belongs to you. It belongs to you.\n\n總之,我絕不會忘記這個勝利真正屬於誰。它屬於你們大家。它是你們的。\n\nI was never the likeliest candidate for this office. We didn't start with much money or many endorsements. Our campaign was not hatched in the halls of Washington. It began in the backyards of Des Moines and the living rooms of Concord and the front porches of Charleston. It was built by working men and women who dug into what little savings they had to give $5 and $10 and $20 to the cause.\n\n我從來就不是這個職位最被看好的候選人。剛開始,我沒什麼錢,也沒什麼後援。我們參選的念頭,並非始於華府大廳,而是來自第蒙市後院,康科市客廳和查爾斯敦的門廊,再經由眾多男女,用他們從有限儲蓄中拿出,依法所能捐獻的五塊、十塊和廿塊美元,共同打造出來的。\n\nIt grew strength from the young people who rejected the myth of their generation's apathy ... who left their homes and their families for jobs that offered little pay and less sleep.\n\n經過那些拒絕承認他們是冷漠世代的迷思的年輕朋友加持,它成長茁壯,他們離開家,告別親人,投入待遇菲薄,永遠睡眠不足的工作。\n\nIt drew strength from the not-so-young people who braved the bitter cold and scorching heat to knock on doors of perfect strangers, and from the millions of Americans who volunteered and organized and proved that more than two centuries later a government of the people, by the people, and for the people has not perished from the Earth.\n\n經過那些年紀不算輕的朋友加持,它成長茁壯,他們冒著寒風酷暑,挨家挨戶向完全陌生的民眾敲門;經過數百萬民眾自發性的組織,證明這個民有、民治、民享的政府,在兩百多年之後,沒有從地球上消失,仍在成長茁壯。\n\nThis is your victory.\n\n這是你們的勝利。\n\nAnd I know you didn't do this just to win an election. And I know you didn't do it for me.\n\n我知道,你們這麼做,不只是為了勝選。我也知道,你們這麼做,不是為了我。\n\nYou did it because you understand the enormity of the task that lies ahead. For even as we celebrate tonight, we know the challenges that tomorrow will bring are the greatest of our lifetime _ two wars, a planet in peril, the worst financial crisis in a century.\n\n你們這麼做,是因為你們了解,橫在眼前的是千萬斤的重擔。因為即使我們今晚慶功,我們也明白,明天所要面臨的是此生最大的挑戰:兩場戰爭,一個處於存亡之秋的地球,及百年僅見的金融危機。\n\nEven as we stand here tonight, we know there are brave Americans waking up in the deserts of Iraq and the mountains of Afghanistan to risk their lives for us.\n\n即使我們今晚站在此地,我們也知道,為了我們,美國的勇士們正在伊拉克沙漠巡邏,在阿富汗山區出生入死。\n\nThere are mothers and fathers who will lie awake after the children fall asleep and wonder how they'll make the mortgage or pay their doctors' bills or save enough for their child's college education.\n\n許多父母,在子女進入夢鄉後,仍輾轉難眠,擔心房貸、醫療帳單該怎麼付,或該怎麼存,才夠支應子女的大學教育費用。\n\nThere's new energy to harness, new jobs to be created, new schools to build, and threats to meet, alliances to repair.\n\n新的能源要研發,新的工作機會要創造,新學校要建,不少威脅要對付,既有盟邦關係要修補。\n\nThe road ahead will be long. Our climb will be steep. We may not get there in one year or even in one term. But, America, I have never been more hopeful than I am tonight that we will get there.\n\n未來的路仍遙,路上的坡仍陡峭,我們可能沒辦法在一年,或一任內抵達。但是,美國,我從來沒有像今晚的我,對我們的使命必達,更充滿希望。\n\nI promise you, we as a people will get there.\n\n我向各位許諾,我們會團結一心,一齊抵達目的地。\n\nThere will be setbacks and false starts. There are many who won't agree with every decision or policy I make as president. And we know the government can't solve every problem.\n\n一開始,挫折和失誤在所難免。有許多人不會同意我以總統身分所做的每一個決定或每一項政策。我們也知道政府無法解決所有問題。\n\n我需要你們的協助\n\nBut I will always be honest with you about the challenges we face. I will listen to you, especially when we disagree. And, above all, I will ask you to join in the work of remaking this nation, the only way it's been done in America for 221 years _ block by block, brick by brick, calloused hand by calloused hand.\n\n但我永遠會把我們面對的挑戰坦白告訴各位。,尤其是在我們看法不同的時候。最重要的是,我會邀請各位加入重塑這個國家的工作,以美國兩百廿一年來採用的唯一方法:一磚一瓦,胼手胝足。\n\nWhat began 21 months ago in the depths of winter cannot end on this autumn night.\n\n廿一個月前發軔於隆冬的,不會就在這個秋夜結束。\n\nThis victory alone is not the change we seek. It is only the chance for us to make that change. And that cannot happen if we go back to the way things were.\n\n我們追求的改變,不僅僅是這個勝利。這個勝利只是給我們機會實現我們追求的改變。我們若走回頭路,改變便不會發生。\n\nIt can't happen without you, without a new spirit of service, a new spirit of sacrifice.\n\n少了你,少了新的服務精神,少了新的犧牲精神,改變就不會發生。\n\nSo let us summon a new spirit of patriotism, of responsibility, where each of us resolves to pitch in and work harder and look after not only ourselves but each other.\n\n所以,且讓我們喚起新的愛國心、新的責任感,人人挽起衣袖,更加努力,照顧自己之外,更要彼此照顧。\n\nLet us remember that, if this financial crisis taught us anything, it's that we cannot have a thriving Wall Street while Main Street suffers.\n\n我們不要忘記,如果這次金融危機給了我們任何教訓,那就是在尋常百姓生活困頓下,華爾街也不可能獨自繁榮昌盛。\n\nIn this country, we rise or fall as one nation, as one people. Let's resist the temptation to fall back on the same partisanship and pettiness and immaturity that has poisoned our politics for so long.\n\n在這個國度,不論興衰,都是全國與共,全民一體。我們一定要抗拒誘惑,不再靠已毒害我國政治許久的黨派之私、褊狹和幼稚。\n\nLet's remember that it was a man from this state who first carried the banner of the Republican Party to the White House, a party founded on the values of self-reliance and individual liberty and national unity.\n\n我們不可忘記,第一個把共和黨旗幟帶進白宮的男士,正是來自本州。共和黨的建黨根基則是自立、個人自由及全國統一團結等價值觀。\n\nThose are values that we all share. And while the Democratic Party has won a great victory tonight, we do so with a measure of humility and determination to heal the divides that have held back our progress.\n\n這些也是我們共享的價值觀。雖然民主黨今晚大勝,我們卻始終謙沖自持,並決心彌合阻撓我們進步的裂縫。\n\nAs Lincoln said to a nation far more divided than ours, we are not enemies but friends. Though passion may have strained, it must not break our bonds of affection.\n\n正如林肯向一個遠比今天更分歧的美國所說的,我們不是敵人,是朋友。激情或曾使選情緊繃,卻不容它破壞我們之間感情的連結。\n\nAnd to those Americans whose support I have yet to earn, I may not have won your vote tonight, but I hear your voices. I need your help. And I will be your president, too.\n\n我要向那些我仍須努力爭取支持的美國同胞說,或許今晚我沒能贏得各位的選票,但是我聽到諸位的聲音,我需要你們協助,我也會是你們的總統。\n\nAnd to all those watching tonight from beyond our shores, from parliaments and palaces, to those who are huddled around radios in the forgotten corners of the world, our stories are singular, but our destiny is shared, and a new dawn of American leadership is at hand.\n\n對那些今晚在海外、從各地國會和宮殿觀看美國選情的人士,在為世人遺忘的角落圍繞著收音機的人們,我要說我們的故事各不相同,命運卻是一體,美國新的領導就要出現了。\n\nTo those _ to those who would tear the world down: We will defeat you. To those who seek peace and security: We support you. And to all those who have wondered if America's beacon still burns as bright: Tonight we proved once more that the true strength of our nation comes not from the might of our arms or the scale of our wealth, but from the enduring power of our ideals: democracy, liberty, opportunity and unyielding hope.\n\n對那些想撕裂這個世界的人,我要說:我們會打垮你。對那些追求和平安全的人,我要說:我們支持你。而對那些懷疑美國這燈塔是否依然明亮的人,今晚我們再度證實,美國真正的國力不是來自船堅砲利、富甲天下,而是來自發乎我們理想、歷久不衰的力量,這些理想是民主、自由、機會和堅持到底的希望。\n\nThat's the true genius of America: that America can change. Our union can be perfected. What we've already achieved gives us hope for what we can and must achieve tomorrow.\n\n這正是真正的美國精神:也就是美國能夠改變。這個國家的結合可以更完善。我們已經成就的,讓我們勇於企盼我們明天能夠做到、也必須做到的。\n\nThis election had many firsts and many stories that will be told for generations. But one that's on my mind tonight's about a woman who cast her ballot in Atlanta. She's a lot like the millions of others who stood in line to make their voice heard in this election except for one thing: Ann Nixon Cooper is 106 years old.\n\n這次大選有許多創舉和故事足供世世代代傳頌。而今晚浮現在我腦海的,是在亞特蘭大投票的一位婦人。她和這次大選無數排隊投票以表達心聲的選民沒什麼差別,不同的只有一點,安.尼克森.庫柏已高齡一百零六。\n\n是的,我們做得到\n\nShe was born just a generation past slavery; a time when there were no cars on the road or planes in the sky; when someone like her couldn't vote for two reasons _ because she was a woman and because of the color of her skin.\n\n她出生於奴隸時代結束後那個世代;當時路上沒有汽車,天上不見飛機;而她這樣的人沒有資格投票,原因有二:其一,她是女人,其二,她的膚色不對。\n\nAnd tonight, I think about all that she's seen throughout her century in America _ the heartache and the hope; the struggle and the progress; the times we were told that we can't, and the people who pressed on with that American creed: Yes we can.\n\n但就在今晚,我想到她在美國這百年人生的閱歷:心傷和希望;掙扎和進步;那些人告訴我們我們不能的時候,和那些高舉著美國人「是的,我們做得到」的信念奮勇向前的人。\n\nAt a time when women's voices were silenced and their hopes dismissed, she lived to see them stand up and speak out and reach for the ballot. Yes we can.\n\n身處女性聲音受壓制、希望被漠視的時代,她這一生親眼看到女性站起來,表達心聲,並爭取到投票權。是的,我們做得到。\n\nWhen there was despair in the dust bowl and depression across the land, she saw a nation conquer fear itself with a New Deal, new jobs, a new sense of common purpose. Yes we can.\n\n就在塵盆地帶(指美國大草原的一部分,大致包括科羅拉多州東南部、堪薩斯州西南部、德州與奧克拉荷馬州鍋柄形突出地帶)陷入絕望,大蕭條席捲美國全境之際,她目睹一個國家以新政、新的工作機會、新的和衷共濟精神克服了恐懼本身。是的,我們做得到。\n\nWhen the bombs fell on our harbor and tyranny threatened the world, she was there to witness a generation rise to greatness and a democracy was saved. Yes we can.\n\n當炸彈落在我們的港口,暴政威脅世界之際,她親眼看見一個世代巍然挺身而起,拯救了一個民主體制。是的,我們做得到。\n\nShe was there for the buses in Montgomery, the hoses in Birmingham, a bridge in Selma, and a preacher from Atlanta who told a people that We Shall Overcome. Yes we can.\n\n在蒙哥馬利市(黑人)搭巴士抗爭,伯明罕市的水龍(警察以強力水龍對付抗議者),賽爾瑪城外的橋上(遭警察血腥鎮壓),來自亞特蘭大的一位牧師告訴一個民族「我們終必得勝」時,她都在場。是的,我們做得到。\n\nA man touched down on the moon, a wall came down in Berlin, a world was connected by our own science and imagination.\n\n一個人登上了月球,柏林一道牆倒了,一個世界被我們自己的科學和想像連結了起來。\n\nAnd this year, in this election, she touched her finger to a screen, and cast her vote, because after 106 years in America, through the best of times and the darkest of hours, she knows how America can change.\n\nYes we can.\n\n而今年,在這次選舉中,她用手指觸碰屏幕,投下她的一票,因為在美國生活了一百零六年,嘗遍酸甜苦辣之後,她知道美國能夠有什麼樣的改變。是的,我們做得到。\n\n這是我們的時刻\n\nAmerica, we have come so far. We have seen so much. But there is so much more to do. So tonight, let us ask ourselves _ if our children should live to see the next century; if my daughters should be so lucky to live as long as Ann Nixon Cooper, what change will they see? What progress will we have made?\n\n美國,我們已經走了這麼遠。閱歷了這麼多。眼前卻還有這麼多事要做。所以,今晚讓我們捫心自問,如果我們的子女能夠活到下個世紀;如果我女兒有幸如安.尼克森.庫柏般長壽,他們能看到什麼改變?我們又促成了什麼樣的進步?\n\nThis is our chance to answer that call. This is our moment.\n\n此際正是我們回應那個召喚的機會,這是我們的時刻。\n\nThis is our time, to put our people back to work and open doors of opportunity for our kids; to restore prosperity and promote the cause of peace; to reclaim the American dream and reaffirm that fundamental truth, that, out of many, we are one; that while we breathe, we hope. And where we are met with cynicism and doubts and those who tell us that we can't, we will respond with that timeless creed that sums up the spirit of a people: Yes, we can.\n\n就在此刻,我們大家要重新開始工作,為我們的孩子開啟希望之門;迎回繁榮並推展和平大業;重新擁抱美國夢並再次確立那基本的真理,也就是我們同舟一命,只要活著就懷抱希望。當旁人嘲諷、懷疑我們,告訴我們我們辦不到時,我們會回以那歷久不衰、總結一個民族精神的信念:是的,我們做得到。\n\nThank you. God bless you. And may God bless the United States of America.\n\n謝謝大家。願上帝祝福你,求上帝祝福美國。 \n\n【聯合報╱聯合報/編譯】\n \n2008.11.06 04:34 am
賈伯斯於2005年獲邀在美國史丹佛大學畢業典禮的演講全文\n\n我很榮幸能夠在這個世界最頂尖之一的學府見到各位。說實話,我從未從大學畢業,這是我最接近大學畢業的時候。今天,我想和各位分享我生命中的三個故事。就這樣,沒什麼大不了的,只是三個故事而已。\n \n第一個故事是關於「生命中每個點的關連」。\n \n我讀了六個月,就從Reed College休學,但是到我真正離開學校前,我仍在那裡旁聽了18個月。我為何要休學呢?這得從我出生講起。\n \n我的親生母親是一位年輕未婚的研究所學生,她決定讓我被別人收養。她強烈地希望我能夠有大學學歷,所以她安排好了一切,我出生時給一對律師夫妻收養;不料他們反悔,他們在最後一刻,決定他們想要一個女孩。\n \n所以我的父母(養父母)在半夜接到一通電話。電話那頭問他們:「我們有一個沒人要的男嬰,你們想要他嗎?」他們回答說「當然。」但是我的親生母親稍後發現,我的媽媽(養母)沒有大學學歷,而我的父親(養父)沒有高中學歷,她(生母)拒絕簽署收養文件;幾個月後,她妥協了,因為我的養父母保證,將來一定會讓我上大學,這就是我人生的開端。\n \n17年後,我真的考上大學,但我天真地選了一間和史丹佛一樣貴的大學。我工人階級的父母,將他們所有的積蓄,都花費在我的學費上。6個月後,我看不出它的價值,我不知道我想要做什麼,我也不知道大學如何能夠幫助我找到這個答案。\n \n但在這裡,我幾乎花光我父母一輩子節省下來的所有積蓄,所以我決定休學,我相信船到橋頭自然直。當時這段時間非常可怕,但那是我這輩子做過最好的決定之一。\n \n我休學之後,再也不用上那些我不感興趣的必修課,並開始投入那些我有興趣的課程。但這一點也不浪漫,我沒有宿舍住,所以我睡在朋友房間的地板上,我利用回收可樂瓶的5美分來買吃的,每個周日晚上,我會走7英里的路,穿越市區到廟裡去飽餐一頓,我喜歡這樣。\n \n我的好奇心和直覺,最後變成無價之寶。讓我為你們舉一個例子來說,Reed College那時的書寫課程,是全美國最好的,校園裡的每一張海報,每一個抽屜的標籤,都是漂亮的手寫字。\n \n因為我休學了,可以不用上正式的課程,所以我決定去上書寫課,學習如何做到這一點,我學到了serif和san serif字體,不同金額不同字母組合時的空間,什麼是活版印刷的偉大之處,這真美好,藝術精妙是科學永遠不能捕捉到的。我發現它很迷人,這是我在實際生活中完全用不到的。\n \n但十年後,當我們在設計第一台麥金塔電腦時,它又浮現到我心中,我們把這一切放進了MAC,這是第一台有漂亮字體的電腦。如果我當時沒有休學,沒有去上這門課,Mac就不會有各種間距與字體;而且因為Windows只是抄襲Mac,所以所有的個人電腦都不會有。如果我沒有休學,我絕對不會選這門書寫課,其他人做的個人電腦也不太可能有出色的字型。\n \n當然在我上大學時,不可能預知需要這些人生重點串聯起來。但十年後的今天回顧起來,這是非常非常清楚的。我再說一次,你不能預先串連起這些人生的重點,你只有在回顧時才會明白。所以你必須相信,這些片段,會在你未來的人生派上用場。\n \n你必須相信某些東西,直覺、命運、生命、緣份等,因為這些點點滴滴,終將串連在一起,讓你有信心去追求你想要的,帶來不同凡響的人生。\n \n我的第二個故事是關於「愛與失去」。\n \n我很幸運很早就發現自己愛做的事。Woz和我開始在我爸媽的車庫裡稿蘋果時,我才20歲。我們很努力地工作;十年後,蘋果已從我們兩個人在我爸媽車庫創立的公司,變成一家有4千多名員工、20億美元的公司。我們剛剛推出我們最棒的作品、麥金塔,那一年我才剛滿30歲,然後,我被開除了,\n \n你怎麼會被自己創立的公司開除呢?嗯,為了公司的成長,我僱用了一位我認為非常有才華的人,和我一起經營公司。在剛開始的第一年,一切都很順利,但後來我們對於未來的願景開始出現分歧,最後我們發生爭執,而董事會站在他那一邊,所以我30歲時被開除了,而且是非常公開地被開除。\n \n我整個成年後的生活重心因此遠離,這對我是毀滅性的打擊,我有好幾個月真的不知道該怎麼辦。我覺得我令上一代的企業家失望,我覺得我把他們傳給我的接力棒搞丟了。我去見了David Packard和Bob Noyce,試著向他們道歉說「我搞砸了」。\n \n我是一個公開的失敗者,我甚至想過逃離矽谷;但是我漸漸發現了曙光,我仍然愛我所做的。蘋果董事會的投票結果並沒有改變這件事,我雖然被拒絕、否定,但我還是愛,所以我決定重新出發。\n\n我當時不知道,但事實證明,被蘋果公司開除,可能是我人生中曾經發生過最棒的事情。成功的沉重,被創業的光明所取代了,對每件事不再自滿,解放了我,讓我進入一個最有創造力的時期。\n \n隨後的5年,我創立了Next公司與Pixar公司,還愛上了一位另我驚豔的女子,最後成為我的妻子。Pixar製作了世界上第一個用電腦製作的動畫電影、《玩具總動員》,現在是世界上最成功的動畫公司。\n \n風水輪流轉。後來蘋果與NeXT合併,我重回蘋果公司,我們在NeXT發展的核心,成為蘋果的復興;我和愛蜜莉也擁有美滿的家庭。\n \n我敢肯定,被蘋果開除,這是個苦口良藥,但我認為病人是需要它的。有時候人生的打擊,就像是被磚頭敲到頭一樣,不要因此失去信心。\n \n我確信唯一支持我往下走的原因是,我熱愛我所做的事情。你必須去找出你所愛的,工作上應該如此,愛人如斯。\n \n你的工作將填滿你大半的人生,唯一能真正獲得滿足的方法,就是做你相信這是件很好的工作;而讓工作表現很好的唯一方法,就是愛你所做的。如果你還沒有發現,繼續努力尋找,不要停下來,你知道你終將會找到所有事情的核心,就如何任何一個良好的關係,只會隨著光陰的流逝越變越好,所以請繼續尋找,不要停下來。\n \n我的第三個故事是「有關死亡」。\n \n我17歲時聽到一句嘉言:如果你把每一天都當成是你人生的最後一天,總有一天你會做對。這句話給我很深的印象,從那時候開始,在過去的33年裡,我每天早晨對著鏡子問我自己:如果今天是我人生的最後一天,我會想要做什麼?如果很多天的答案都是「不」時,我就知道我必須改變些什麼。\n \n當我生命終將做出重大抉擇時,提醒自己死期將近,是很重要的方法。因為幾乎所有的事情,所有外界的期望,所有的驕傲,所有對困窘或失敗的恐懼,面對死亡時,都會消失,只有真正重要的東西會留下。提醒自己死期將近,是我所知最好的方法,可以避免掉入自己會錯失什麼東西這類的陷阱。因為你已經是赤身裸體,所有就沒有理由不跟隨自己的心。\n \n大約一年前,我被診斷出罹患癌症。有一天早上做掃描檢查時,清楚地顯示我的胰臟的腫瘤,但我甚至不知道胰臟是什麼,醫師告訴我,幾乎可以肯定,這一類的癌症是無法治癒的,而且大概活不過3到6個月,我的醫師建議我回家去安排身後事。\n \n這是醫師叫我「等死」的代號。這意味,你要試著將所有的事情告訴孩子,你沒有十幾年的時間去講,只剩短短的幾個月;也意味著,你要把每件事處理好,讓家人輕鬆一點;這也意味,你要說再見了。\n \n這個診斷讓我想了一整天。後來有一天,我作了一個切片檢查,從喉嚨伸入一個內視鏡,從胃進腸子,插了根針進胰臟,取了一些腫瘤細胞出來。我打了鎮靜劑,不醒人事,但是我太太在場。她後來跟我說,當醫生們用顯微鏡看過那些細胞後,他們都哭了,因為那是非常少見的一種胰臟癌,可以用手術治好。所以我接受了手術,康復了。\n \n這是我最接近死亡的時候。我希望,那會繼續是未來幾十年內,最接近的一次。經歷此事後,我可以比之前死亡只是抽象概念時,更肯定地告訴你們:沒有人想死,即使那些想上天堂的人,也想活著上天堂。\n \n但是死亡是我們共同的目的地,沒有人逃得過,這是註定的,因為死亡,簡直就是生命中最棒的發明,是生命變化的媒介;送走老人們,給新生代留下空間。現在你們是新生代,但是不久的將來,你們也會逐漸變老,被送出人生的舞臺。抱歉講得這麼戲劇化,但是這是真的。\n \n你們的時間有限,所以不要浪費時間活在別人的生活裏。不要被信條所惑,盲從信條,就是活在別人思考結果裏。不要讓別人的意見,淹沒了你內在的心聲。最重要的,要擁有跟隨內心與直覺的勇氣,你的內心與直覺,多少已經知道你真正想要成為什麼樣的人,任何其他事物都是次要的。\n\n當我年輕時,有本令人激賞的雜誌《The Whole Earth Catalog》,是我這個世代的聖經之一。它是由住在離這不遠的Stewart Brand先生創立的,他營造出如詩一般的令人感觸。\n \n這是在60年代末,個人電腦與桌面排版系統尚未出現,它全部是用打字機、剪刀和拍立得相機製造出來的,它有點像紙本版的Google,但比Google早了35年。它充滿了理想主義,洋溢著新奇的觀念和偉大的想法。\n\nStewart和他的團隊發行了一段時間的《The Whole Earth Catalog》,當完成使命時,他們發行了最後一期,在70年代中期,我正是你們現在的年紀,在最後一期的封底,有一張照片,清晨的鄉間小路、那種當你想冒險時可以搭便車的小路,照片下有行小字,《求知若渴、虛懷若愚》,這是他們的告別語。\n \n《求知若渴、虛懷若愚》,我總是這樣自我期許。而現在,你們畢業即將開始新生活,我與各位共勉,《求知若渴、虛懷若愚》,謝謝大家。\n\nwww.youtube.com/watch?v=Ip0hG7FXVgs&feature=player_embedded
大風無法搖撼一座山! (很棒的觀念和想法) \n\n\n當別人對你說了一些刺傷你的話,批評你、羞辱你,你會怎樣?\n你會火冒三丈,氣呼呼地罵回去,或是忍氣吞聲地強壓下來?\n然後呢?你是否會愈想愈氣,整個情緒都大受影響?\n\n\n有天,佛陀行經一個村莊,一些前去找他的人對他說話很不客氣,甚至口出穢言。\n佛陀站在那裡仔細地、靜靜地聽著,然後說:「謝謝你們來找我,不過我正趕路,下一村的人還在等我,我必須趕過去。\n不過等明天回來之後我會有較充裕的時間,到時候如果你們還有什麼話想告訴我,再一 起過來好嗎?」 \n那些人簡直不敢相信他們耳朵所聽到的話,和眼前所看到的情景:這 個人是怎麼回事?\n其中一個人問佛陀:「難道你沒有聽見我們說的話嗎?我們把你說得一無是處,你卻沒有任何反應!」\n佛陀說:「假使你要的是我的反應的話,那你來得太晚了,你應該十年前就來的,那時的我就會有所反應。\n然而,這十年以來我己經不再被別人所控制,我己經不再是個奴隸,我是自己的主人。 我是根據自己在做事,而不是跟隨別人在反應。」\n是的,如果有人對你生氣,那是「他的」問題;\n如果他侮辱你,那是「他的」問題;\n如果他粗暴無禮,那仍是「他的」問題。\n因為他要怎麼說,怎麼做,那是「他的」修養,你能怎麼辦?\n\n\n讓我再重複一遍佛陀所說的:\n「我己經不再被別人所控制,我己經不再是個奴隸,我是自己的主人。我是根據自己在做事,而不是跟隨別人在反應。」\n你是情緒的主人,而不是奴隸。 \n\n\n曾聽過一則故事─有個人每天都固定向某報攤買一份報紙,儘管這個攤販的臉一向都很臭,但他還是每次都對小販客氣地說聲謝謝。有一次和他同行的朋友看到這情形,便問他:\n「他每天賣東西都是這種態度嗎?」\n「是的。」\n「那你為什麼還對他如此客氣?」\n那人回答:「我為什麼要讓他決定我的行為?」\n是啊!\n\n我們為什麼要讓別人的表現來決定自己的行為呢?
王永慶的「瘦鵝理論」\n\n鵝是台灣最常見的家禽之一,王永慶因為養鵝的經驗發展出一套獨特的「瘦鵝理論」,這套理論也是他給年輕人的第三堂課。\n\n''家禽的生命力''\n\n 一九四一年前後,台灣農村幾乎家家戶戶都飼養雞、鴨、鵝等家禽,並用吃剩的食物和雜糧來餵養。因為第二次世界大戰的緣故(當時台灣為日本的殖民地),物資極端匱乏,鄉村也嚴重缺糧,人都吃不飽了,當然也沒有剩餘食物和雜糧可飼養家畜,只好讓牠們在野外覓食,吃野菜和野草。\n\n 一般說來,農村飼養的鵝,在正常餵食之下,大約四個月就有五、六斤重;可是,當時一般人家飼養的鵝,由於只吃野菜和野草, 四個月下來,瘦得皮包骨,每隻都只有兩斤重。\n \n 看到這些瘦弱不堪、價值偏低的鵝群,王永慶心中盤算著:「兩斤重的鵝可說毫無用處,假如我能動腦設法找到鵝飼料的話,養鵝的難題必定迎刃而解。」\n \n 根據他的觀察與分析,當時農村採收高麗菜之後,都把菜根和外面一兩層的粗葉丟棄在菜園裡,而這些被丟棄的菜根和粗葉正是鵝的飼料,可是一般人並沒有察覺到。\n \n 於是,王永慶雇人到四處的菜園撿回菜根和粗葉,再向「共精共販」的統一碾米廠買回廉價的碎米和稻殼。把菜根和粗葉切碎,混合碎米與稻殼,就製成絕佳的鵝飼料。\n \n 接著,王永慶到處向農家搜購瘦鵝,農家見到養不肥大的瘦鵝竟有人搜購,正是求之不得。王永慶把四處搜購來的瘦鵝集中起來,並用自製的飼料餵食。瘦鵝飽受飢餓的折磨,看到食物就拚命吞食,一直到喉嚨塞滿了飼料才暫時停下來;幾個小時之後,等胃裡的食物消化完畢,立刻又狼吞虎嚥一番。\n \n 每天如此周而復始,原本只有兩斤重的瘦鵝,經過王永慶兩個月的飼養之後,重量高達七、八斤,非常肥大。究其緣故,因為瘦鵝具有強韌的生命力,不但胃口奇佳,而且消化力特強,所以只要有食物吃,立刻就肥大起來。\n \n 這一段飼養瘦鵝的寶貴經驗,讓王永慶深深體悟到,在日本人統治下居住於台灣的中國人,也要像瘦鵝一樣具有強韌的生命力,才能夠長期忍受折磨,度過重重難關生存下來。\n \n''「瘦鵝理論」的意涵''\n\n 他並且逐漸發展出一套運用在為人處世與經營管理的「瘦鵝理論」,這套理論包括了下列三個意涵。\n \n''一、要學習瘦鵝忍飢耐餓、刻苦耐勞的精神'' \n\n 一九七五年元月九日,王永慶在接受美國聖若望大學贈授榮譽博士學位的典禮上,說了一段發人深省的話。他說:「我幼時無力進學,長大時必須做工謀生,也沒有機會接受正式教育,像我這樣一個身無專長的人,永遠感覺只有刻苦耐勞才能補其不足。」\n\n 「而且,出身在一個近乎赤貧的環境中,如果不能刻苦耐勞,簡直就無法生存下去。直到今天,我還常常想到由於生活中受過的煎熬, 才產生了我克服困難的精神和勇氣,幼年生活的困苦,也許是上帝對我的賜福。」\n \n 從這一段話裡,我們可以知道, 刻苦耐勞不但是王永慶的座右銘,也是促使他成功的主要動力。事實上, 世界上每個人的聰明才智都相差無幾,可是為何有人成功,有人失敗呢?關鍵之一就在能否刻苦耐勞而已;天底下絕對沒有舒舒服服就會有成就的事,凡事都有前因後果,下苦功夫才會有好結果。\n \n 人人都在追求舒適與快樂,可是都忽略了追求舒適與快樂一定要付出代價。例如,如果一整個星期都很努力工作,遇到星期天休息, 一定覺得很舒服;相反的,如果整個星期本來就無所事事,星期天再休息,恐怕不但不覺得舒服,反而覺得很無聊。再例如吃東西,偶爾吃一頓大餐,會覺得是一種享受;如果天天吃大餐,非但不是享受, 反而是受罪。\n \n 王永慶強調說:「追求舒適與快樂的代價,就是刻苦耐勞。」\n\n 他又指出,時下的年輕人大都希望做有意義而又容易的工作。其實,容易做的工作是不會有多大意義的。所以,年輕人不要怕困難, 只要下決心去做,任何傷腦筋的事終必克服,任何乏味的工作也會苦盡甘來。\n \n 王永慶舉例說明吃苦的好處。譬如外行人去參觀別人的工廠,不是得其皮毛就是一無所得。但若是自己辛辛苦苦去鑽研一件新產品, 僅欠缺一點訣竅,在窮究之餘參觀別人的工廠,一眼看到,心領神會,完全吸收,這樣才會有所得。就像求道的人,要嘗盡苦頭,求得那份慧心,才能夠悟道。\n \n 再譬如去聽專家演講,任何問題若不先經過自己努力去研究分析,就很難有深刻的了解,在自己沒有深刻的了解之前,也很難從別人的演講當中去掌握講詞的精華所在,進而消化吸收,真正明瞭其中的奧妙而變成自己有用的知識。\n\n 王永慶說:「天下的事情,沒有輕輕鬆鬆、舒舒服服讓你能獲得的,凡事一定要經過苦心地追求、經驗有所收穫。」\n \n 王永慶不是教徒,卻說了一段頗富宗教哲理的話。他說:「神創造人,畢竟是很公平的,道理只有一個,那就是人必須先苦而後才有甘。天下事都是要經過相當辛苦才可以得到的,這個道理很淺,卻很難實踐,這是一般人的毛病。」\n \n 目前許多剛從學校畢業的年輕人,胸懷大志,自信滿滿,也勤奮努力,可是由於急功近利,結果大都失敗了。大家都知道,羅馬不是一天造成的,所以年輕人不論就業或創業,千萬不可操之過急,成功絕非一蹴可幾,一定要有先苦後甘的體認,學習瘦鵝忍飢耐餓、刻苦耐勞的精神,按部就班一步一步來,才會有成就。\n\n 王永慶說:「我常常喜歡以『瘦鵝理論』來形容台灣今天種種成就的由來。光復初期,台灣老百姓生活處境極為艱苦,為了求得生存,所以充分發揮了中國人刻苦耐勞的傳統美德,終於能夠突破重重困境,謀得成就。」\n\n''二、學習瘦鵝面對困境時的堅毅態度,等待機會到來''\n \n 任何人在走霉運時,要學習瘦鵝一樣忍飢耐餓,鍛鍊自己的忍耐力,培養毅力,等待機會到來。只要餓不死,一旦機會到來,就會像瘦鵝一樣,迅速地強壯肥大起來。\n \n 王永慶指出,中華民族具有傳統勤勞美德,以及非常強韌的耐力,長久以來如同飢餓的瘦鵝一般,忍受著極端艱苦的日子,可是一旦有了食物,就可以很快恢復體魄力量。\n \n 他說:「中國人就像瘦鵝,餓不死,也不會生病,一有機會,馬上起來,快得不得了。」\n \n 他又說:「人在困苦當中,往往會養成一種堅毅力,只要遇到適當的機會,有了環境的條件可以配合,成長就會很快,甚至超越一般人。」\n \n 王永慶更以「瘦鵝理論」來說明,為何中國大陸在短短數年之內各方面都有驚人的發展。他表示,鵝隻過去由於極端缺乏食物,所以瘦弱不堪,但是因為具有強韌的生命力,所以一旦有了足夠食物,很快就能夠健壯成長。過去大陸處在封閉的社會環境,思想守舊,人的潛力完全無法發揮,所以人民的生活貧窮困頓,也感到十分無奈。一旦環境改變,走向自由市場,等於是開展了活動的空間,一般人民的生活也很快獲得改善。\n \n 他這種瘦鵝面對逆境時展現的積極態度,與日本經營之神松下幸之助把壞運看成是好運的積極人生觀,非常神似。\n \n 松下幸之助從小因腸胃不好,經常把排泄物拉在褲子裡,弄得狼狽不堪;十一歲時因家境清苦,只好唸到小學四年級就輟學去當學徒;十三歲喪父,二十歲喪母;十七歲,搭乘汽船跌落海中,差一點淹死;二十歲,染上當時被認為是絕症的肺結核病;二十六歲,騎自行車與汽車相撞,自行車被撞得稀爛。\n\n 對於上述種種的打擊與噩運,松下幸之助全部當成好運。\n \n 他認為,因腸胃不好,為免於狼狽不堪,只得小心飲食,並更注意自己的健康;十一歲就輟學去當學徒,這樣才能比別人更早學到做生意的本事;年幼喪父母,未來的前途唯有靠自己的雙手去奮鬥;海水淹不死,病魔纏不死,汽車撞不死,大難不死必有後福。\n \n 王永慶在面對逆境時,當成是瘦鵝磨練自己的良機;松下幸之助把人生中所遭遇的壞運全部當成是好運。兩人的看法確實有異曲同工之妙。\n\n''三、瘦鵝之所以瘦,問題不在鵝,而在飼養的方法不當所致''\n \n 企業經營的道理也是一樣, 企業經營不善,問題不完全在員工, 而在老闆管理方法不當所致。\n\n 王永慶說:「我們雖然年年有些成長,但仍落伍,原因何在?我想責任不在被領導者,是在養鵝的人,不懂飼養,瘦鵝永遠是瘦鵝。」\n \n 他指出,效率差是領導者的問題,是管理的問題。工廠的生產管理沒做好,品質管理沒做好,是管理者沒有設定良好的制度,沒有教導、要求他們的工作人員,不是工人不守規矩、不用功或者是不重視品質效率。管理沒有做好,要怪動腦的人沒有用心去思考、研討,設定合理妥善的各項管理制度,進而教導、要求基層的工作人員 。\n \n 他進一步指出,企業要提高團隊的經營績效,必須要有一個能幹的領導人。\n \n 王永慶以獅子與羊做生動的比喻說:「如果讓一隻獅子來帶領一群羊,將來這群羊一定個個勇猛;而如果讓一隻羊來帶領一群獅子,最後很可能獅子變得很軟弱。」\n \n 他的意思是人,企業經營的成敗關鍵全看領導人。有能幹的領導,就能培養能幹的部屬,自然就能提高團隊的經營績效。\n\n''養鵝人的任務''\n \n 大同公司前董事長林挺生曾說:「英國古諺說『天下沒壞學生, 只有壞老師。』我相信這句話也可用在企業界:『沒有不良的員工, 只有不稱職的管理者。』」\n\n 美吾髮公司董事長李成家也說:「沒有打敗仗的士兵,只有不會帶兵的將軍;沒有不可用的人,只有不會用人的主管。」\n\n 林挺生與李成家的看法,正好與王永慶的「瘦鵝理論」不謀而合,道出了企業經營成功的奧秘。
田中千繪:甘巴爹!認真才能出頭\n\n * 2008-10-23\n * 文/鄭國強 攝影/鄭暐琪\n (更多詳細內容,請看本期《理財周刊》)\n\n\n從小演員到家喻戶曉,從苦日子到好日子,田中千繪始終懂得優雅過生活,從沒錢到有錢,不變的,是她認真的工作態度。\n\n本期《理財周刊》封面(圖/理財周刊提供)\n\n電影《海角七號》中,飾演一位苦情的日本小公關,把旅居台灣、發展不順遂的日本模特兒「友子」角色展現得入木三分、讓人有笑有淚的,正是田中千繪,她說,好像在演自己一樣。\n\n「台灣的演藝圈很辛苦,但是在日本也不是那麼容易。」用苦練8個月的中文,田中千繪娓娓道出在異國闖星途的艱辛。\n\n16歲就在日本出道的她,原本設定的目標是歌手,17歲以演出「美少女H」系列連續劇正式躍上舞台,但出道後星路並不順遂,從2002年到2007年演出「乒乓」、「Drug Store Girl」、「丹下左膳百万兩之壺」、「頭文字D」、「春之雪」等作品,片中多擔任配角,表現及知名度均遠不如同期演出「美少女H」的成員們。\n\n轉戰來台 異地求生\n\n2005年,有機會擔任周杰倫「頭文字D」中一角的田中千繪,看到了台灣影藝界工作環境的友善,讓她起了來台灣試一試的念頭,後來還被媒體開玩笑說「田中千繪來台,都是為了周董」。\n\n實際上,在台灣等著田中千繪的,可能是不穩定的收入,和未知的前途,沒有工作的時候,開銷就必須相當的節制,她1個月伙食費在3千元以內,「每天只吃一餐……但是別誤會了,沒有窮到這樣。」\n\n田中千繪笑著說,一方面自己食量不大,常常一餐就靠水煎包度過,另一方面是考量身材。相較於飲食,其實每個月最大的開銷還是交通費,為了工作南北奔波,要花到5千元以上。\n\n沒有收入的日子,會讓許多一心想進演藝圈的新人開始後悔,自我懷疑、放棄,《海角七號》也曾停拍過,沒有開工的5個月當中,田中千繪卻繼續熟背劇本,她願意堅守著這部電影,憑的又是什麼呢?\n\n在演藝圈要發展成功,如果沒有好的金錢習慣、自我獨立的能力,還在沒沒無聞的時候,就很難適應,更不用說走得長久,因為沒有人可以預期自己什麼時候會走紅。\n\n老爸6億身價 不向家裡拿一毛\n\n「爸媽希望從小就養成我獨立的個性。」因此身價6億元、在日本彩妝界有著重要地位的父親,並沒有提供田中千繪在台灣闖天下時的金錢支援,她一毛都沒有向家裡拿。 \n\n「因為父母都努力工作照顧我,所以小時候的日子不會很辛苦。」田中千繪並不諱言父親所給自己不錯的環境,但是,家裡面的開銷沒有因此而鋪張浪費。\n\n五光十色的演藝圈,讓人很容易將女明星和時尚、名牌、奢華聯想在一起,然而,田中千繪的生活習慣節儉但不吝嗇,「父母都做一些基本的開銷,不如外界想像的花很多的錢買名牌,我從他們身上學到這點。」\n\n不追求奢華 追求自我成長\n\n「很多像我這樣年紀的女生都喜歡名牌,也有很多人因為朋友都有買,所以才跟著買。」田中千繪所指的是日本女孩搞小團體的習慣,名牌包可能是團體認同的符號,如果朋友們都有而自己卻沒有,將會遭到排擠。\n\n「我只有為了特殊的紀念價值,才想去買名牌。」田中千繪在《海角七號》殺青之後回到日本,父親看到這是她在台灣的第一部作品,才送一個名牌包包給惟一的女兒做為鼓勵。「以後看到這個包包,就會想到我爸爸的心情,和我的第一部電影又有關,這樣才有意義。」\n\n物質上,田中千繪可以抗拒名牌包的迷思,但必須面對在異國發展的心理壓力,「為什麼你們要欺侮我……」《海角七號》中的這句台詞訴說了戲中人物友子的委屈,也表達出了田中千繪面對的挑戰─她必須在異國獲得成就,如果這部電影沒有成功,她支持得住嗎?\n\n堅持理念 出頭天的不二法門\n\n「父母因為在彩妝界的關係,看到很多日本的藝人為了錢的問題,而放棄了進演藝圈的初衷、理想,實在很遺憾,他們比我更擔心。」田中千繪是在父母質疑的情況下,決定留在台灣發展,但是她的堅持,似乎給自己帶來了幸運。\n\n「當初拍這部電影,導演也沒有談到錢的問題,我也沒有發現有很多的困難、挑戰。」田中千繪並不知道導演魏德聖四處借貸之下才有辦法開拍,而且拍到一半還因為錢燒光了,暫停拍攝,她沒有放棄跑回日本,反而繼續熟背劇本。\n\n「如果我開始太在意錢,就不會去演海角七號……哈哈哈。」從田中千繪的這句話可以聽出來,當初拍這部電影的確很辛苦,可是,在金錢和工作的價值之間,她選擇了後者。 \n\n若再遇到一次克難的導演找上門來,田中千繪還會抱持著同樣的熱忱嗎?「如果劇本好的話,我會很想接,就像當初看到海角七號的劇本時候,全身起了雞皮疙瘩,從來沒看過那麼令人感動的作品,當然,最後還是要尊重經紀公司的想法。」\n\n從異地發展、等待機會的小演員,一下子變成了家喻戶曉的電影明星,田中千繪現在已成了通告、廣告代言的熱門人選,據說已達到千萬年薪的等級,突然成為「暴發戶」,她最想完成的夢想是什麼?買名車還是豪宅?\n\n一路往前 追逐自己的夢想\n\n「如果我明天就變得很有錢,不會想買個房子或者車子,而是要出國旅遊。」尤其是在亞洲,從印度、泰國到越南,都是被田中千繪點名的地方,因為那裡充滿著自然的東西。\n\n旅遊對田中千繪來說並不是純粹的玩樂,「旅遊可以吸收新知,讓大家看到一個不斷成長的千繪。」她並沒有被錢沖昏了頭,而且已經對下一步有著更多的期待,「我現在會講中文,就想去國際上講中文的市場,試一試自己的實力,有機會的話,想去好萊塢看一看。」\n\n過去2年,她已經從「友子」變成了田中千繪,她對自己打氣的說,「甘巴爹,一直往前走,不能回頭看,相信自己的夢想。」\n\n水蛙只想有工作\n\n《海角七號》中飾「水蛙」的夾子小應:當初接這部電影,只是想有工作就好,那時日子過得不是很寬裕,但是老婆很不諒解,沒想到片子大賣。\n\n幕後功臣導演魏德聖\n\n在拍到一半的時候,資金枯竭而停拍,於是,他跑去找一名長輩求助5千萬元的資助。該長輩說自己也沒那麼多錢,就把房子抵押借出5千萬元給導演,出資人的太太聽到之後還罵「你瘋了?現在國片市場有那麼景氣嗎?」其實,出資人原本心裡也只打算回收1千萬元,以《海角七號》現在的票房收入,不但轉空成喜,可能早被周遭的人稱讚慧眼識英雄了吧。\n\n田中千繪要富少爺還是窮導演?\n\n「我不會覺得一個人要很有錢叫做成功。」田中千繪對於成功的定義,不和金錢、財力直接掛鉤。在日本,她看過周遭的朋友、藝人起起落落,有錢可能只是一時的,而且有父親努力工作為榜樣,她很清楚成就的定義。 \n\n令人好奇的是,這樣的想法是否也影響了田中千繪挑男朋友的原則?若同時面對一個窮導演和富公子,她會怎麼選擇?「看對方的個性。」\n\n田中千繪避開了二分法的答案,表示自己喜歡有才華、有想法的人,個性很溫柔而且懂得尊重她的想法,財富倒在其次,而且對方最好像爸爸一樣。因為在日本,還是個很重男輕女、大男人主義的社會。\n\n話才說完,已經有傳出田中千繪在代言婚紗廣告時,承認有一個「走得很近」的電子業小開,兩個人一同吃過飯,看過夜景,想必對方頗「懂得尊重女生的想法」,而且個性也相合吧。
''about:blank''\n金控EIP系統為富邦金控內部員入口網站。\n登入系統須使用富邦帳號與密碼。\nhttp://eip.fubon.com\n\n優率網\nhttps://www.twrates.com/bankrate/twfubon.html?date=2024-05-04#google_vignette\n稅籍登記資料公示查詢\nhttps://www.etax.nat.gov.tw/etwmain/etw113w1/ban/query\n地方稅網路申報作業\nhttps://net.tax.nat.gov.tw/PLRX/Lrx200d01/ \n\n新端末系統\nhttp://nbts.fb.com.tw/iBranchApp/\n\n\nhttp://rate.jihsunbank.com.tw/Rate/NTJumboRate.htm\n\n''《不能戳的秘密》完整版''\nhttp://www.youtube.com/watch?v=Jcs7hA5iwZE&feature=share\n''臺北市立圖書館館藏查詢系統''\nhttps://book.tpml.edu.tw/\n''新北市立圖書館''\nhttp://www.tphcc.gov.tw/\nPDF轉PPT轉換器\nhttps://smallpdf.com/zh-TW/pdf-to-ppt\n\nhttps://www.onlinevideoconverter.com/youtube-converter\nhttp://peggo.tv\n''耶魯大學5年神奇研究成果:一張圖分出你是用左腦還是右腦!''\nhttp://tw.myblog.yahoo.com/bear-two/article?mid=6061\n''有求必應:22個吸引力法則''\nhttp://tw.myblog.yahoo.com/jw!Gom64YKERUTH65m7vO4-/article?mid=11233&prev=11809&next=10470&l=f&fid=32\n''美食報報報 / 最愛好咖啡''\nhttp://mag.udn.com/mag/happylife/itempage.jsp?f_MAIN_ID=279&f_SUB_ID=2406\n''行家推薦》克立馬 非洲豆值得一試''\nhttp://mag.udn.com/mag/happylife/storypage.jsp?f_MAIN_ID=279&f_SUB_ID=2406&f_ART_ID=158657\n''蘇軾文選''\nhttp://xs3.tcsh.tcc.edu.tw/~fish/chinese/tang_song/su/new_page_14.htm\n''大匠不斲,大庖不豆,大勇不鬥,大兵不寇''\nhttp://blog.udn.com/chyi999/1670893\n''台灣Nokia發表N86手機,具有8百萬畫素的拍照能力''\nhttp://chinese.engadget.com/2009/06/11/nokias-n86-8mp-now-shipping-worldwide/\n''男人的女人<- -多體貼身旁的女人''\nhttp://space.atmovies.com.tw/space/space.cfm?action=data&sid=186631&type=clist&CID=HA\n''WINDOWS藍色當機畫面解讀''\nhttp://tw.group.knowledge.yahoo.com/honp-computer/article/view?aid=4\n''Various Artist -《立体声古典名厂RCA百张不朽名盘系列》(RCA RED SEAL BEST100)[100CDs 6.15更新至017][FLAC]''\nhttp://www.verycd.com/topics/2827880/\n''classical musics -《一些古典音乐的视频》(classical musics)''\nhttp://www.verycd.com/topics/129623/\n''中國哲學書電子化計劃''\nhttp://ctext.org/zh\n''數位經典''\nhttp://www.chineseclassic.com/\n''易學網''\nhttp://www.eee-learning.com/\n''台灣周易文化研究會''\nhttp://www.iching.url.tw/\n''毓老 紀念網頁''\nhttp://yulaomemorial.blogspot.tw/\n''中華民國易經學會''\nhttp://www.yihching.org.tw/index.htm\n''天行書苑''\nhttp://www.cosmosclassic.com/\n''銘仁算命網'':www.ai5429.com/168\nhttp://www.ai5429.com/17/8x/index.htm\n''漢典(辭典)''\nhttp://www.zdic.net/\n''芭樂園''\nhttp://www.guavafield.com/\n''Chartgame.com''\nhttp://chartgame.com/\n''維克斯討論區''\nhttp://www03.wahas.com/index.php\n''雜誌下載''\nhttp://qmag.org/\n''書籍、資料下載''\nhttp://ishare.iask.sina.com.cn\n''漫遊''\nhttp://share.popgo.org/\n''佛陀教育基金會出版品下載''\nhttp://www.budaedu.org/publish/\n''營火晚會、森林探險的「背景音樂」產生器(Free Nature Sounds)''\nhttp://briian.com/?p=7196\nhttp://naturesoundsfor.me/\n''哇!拍賣''\nhttp://www.wow-auction.com.tw/\n''《周易六十四卦详解》 > 按京房纳甲分宫查阅''\nhttp://www.64gua.com/ebook/zyj/html/02.html\n''周易_賁卦中蘊涵著丰富的美學思想''\nhttp://wenku.baidu.com/view/956c774c767f5acfa1c7cd78.html?from=related&hasrec=1\n\nhttps://tw.mobi.yahoo.com/tech/免外掛免安裝-youtube-影片線上下載-連-1080p-090000660.html\n''網路空間\nhttp://minus.com/\nhttp://minus.com/mKWB5dnb3#1\nhttps://www.mediafire.com/\nhttp://pogoplug.com/zh_TW/view\n''網路空間:Dropbox''\nhttps://www.dropbox.com/home\n''電子申報繳稅服務''\nhttp://service.etax.nat.gov.tw/etwmain/front/ETW144W\n''比例尺''\nhttp://pansci.tw/wp-content/uploads/2012/02/1ff.swf\n日盛問管系統\nhttp://jihsmartit.jsidc.com/smartit5/management/helpdesk/request_new_ticket.aspx
''當個獨行俠好嗎?(王小明與陳月坡的對話錄)''\n\n月坡:\n聽說你換工作了,新公司如何?\n小明:\n唉!別提了,上班才不到一個月的時間,就發現公司派系鬧的可兇了,兩方人馬經常動不動就鬥來鬥去的,看了就令人心煩,我又不喜歡那種派系的感覺,不想加入任何一方,也不想得罪任何一方。你覺得如何?\n月坡:\n你問這個問題也太大點,簡直可以寫論文兼出書了。\n小明:\n有那麼誇張嗎?\n月坡:\n一點都不誇張,派系問題不管到那都會遇到的,只是程度不同罷了,不是有句話說:一個單位只要超過三個人,就難免會有爭寵、排擠的事情發生。這大概是沒有辦法避免的,更何況像你們那麼大的一間公司。其實每個人的生長環境不同,造成每個人的思維模式差異,對於各種事情的認知、理解方法也必然會有所不同,加也上偏好的事物又各有不同,就像有人喜歡往外跑,有人喜歡宅在家裡一樣,所以每個人都是個獨特的個體(Unique)。只要在人一多的地方,可就會出現有些人因為種種原因,也許是來自同一學校、生活習慣類似等種種原因而比較聊得來,自然而然就會常形成一個個所謂的「小圈圈」,這是再自然不過的現實,不用去介意這樣的情況。\n小明:\n你說的我都明白,可是為什麼「小圈圈」之間為何會互看不順眼?\n月坡:\n小圈圈或許可以解釋為某些人的磁場比較合得來,自然也會有磁場比較合不來的情況,就會出現所謂互看不順眼的情況。這在任何團體裡,或多或少都會有這樣的情況。\n小明:\n打從小學以來就一直是這樣沒錯,可是大家也不會有太大的衝突啊。\n月坡:\n這情況在學核是還好,因為彼此之間沒有太多所謂的利害關係,因此也就會相安無事。可是一但到了職埸,加入了利害關係一切都會變了樣。水往低處流、人往高處爬是再自然也不過的了,畢竟組織架構是金字塔型的,愈往上爬,位置愈少,想要往更上層,就得踩別人的屍體往上爬才行。\n小明:\n踩著別人的屍體往上爬?好恐怖喔,你這樣的比喻未免太誇張了一點。\n月坡:\n一點都不誇張,歷史中這樣的例子太多了,如唐太宗李世民的玄武門之變,殺了大哥李建成與四弟李元吉後才當上皇帝。在他們爭奪皇位的過程中,形成了太子黨(李建成、李元吉)與秦王黨(李世民)的互相明爭暗鬥。當然成王敗寇的歷史只記載李世民的好話,而李建成自然就被寫成「資簡弛,不治常檢,荒色嗜酒,畋獵無度,所從皆博徒大俠」等語(性情鬆緩惰慢,喜歡飲酒,貪戀女色,愛打獵,交往的人大都是亡命之徒)。皇室的派系鬥爭才是真的是生死鬥爭呢,因為只要押錯邊,人頭可就不保了。另一個較有名的例子應該是清世宗雍正,康熙生前一直不能確立儲君,以致諸子間互有鬥爭,最後由雍正當上皇帝。不過話說回來,李世民也是鬥爭的成王中少數善待敵營的人,重用了原來太子黨中的人,最有名的就算是魏徵了。\n當然以現在的時空環境不會人頭不保,但是押錯邊的結果難免從此被冷凍,甚至是被迫離開組織。這樣一來,空有滿腔理想也無濟於世。\n小明:\n派系的鬥爭這麼可怕,那我想在組織當中當成自在的獨行俠,你覺得如何呢?\n月坡:\n我倒覺得順其自然就好了。我想以我本身的經歷來跟你說明,當我還在唸國中、高中的時候(當然那時並不能體會到現在我想跟你說的話),在心目中同學當中大概可以分成五類:\n第一類是很合得來的:平時有聊不完的話題,下課時玩在一起,放假時也會一起起出去玩,當然包括到彼此的家中玩。\n第二類是普通合得來的:也會一起玩或聊天,但沒有像第一類的那麼要好。\n第三類是互看不順眼的:覺得他們有點假,整個fu都不對,還覺得他們老是跟老師打小超告,只差沒有想打他們而已。\n第四類是仇家型的:基於某種原因起過衝突,雖然後來合好了,可是感覺上也是怪怪的。\n第五類是不喜歡也不討厭的:這種同學最陌生了,好像是空氣一樣,有些甚至已記不得名字了。\n第一類的同學有好多到現在還是我最要好的朋友。\n可是到了唸大學的時候,就起了變化,可能是因為大學同學來自各地方,思想觀念似乎存在比較大的差異,因此就比較少有談得來的同學(倒是有位談得來的異性同學,會常常約她泡茶、聊天,那時真的有點喜歡她),因此在我自班上就自然變成了獨行俠了,到現在反而幾乎沒有仍在聯絡的大學同學(不過透過臉書,現在有幾位大學同學重新建立關聯而偶有聯絡)。其實這此分類也不是刻意去區分的,以國中高中的學生在正常情況之下並不會有太多的心機,所有的情況只是自然而然形成的。\n我想說的是:不妨用最自然、最自在的態度來面對辦公室生態,不用刻意去與人交好,也不用刻疏離,如果有談得來,合得來的人,自然就會常聊天、常聚在一起,不要去管他派系或不派系、小圈圈或不圈圈。舉個假設的情況來說明,也許會某日會遇到一些跟你一樣不喜歡所謂派系、小圈圈的人,於是乎你們就會常聚在一起,或吃飯;、或聊天,漸漸地,你們也形成一個小圈圈了,這是在自然不過的事情,不用太再意,也不用刻意去迴避,這樣反而顯得做作。\n就這樣,也許你會成為某一派系,也許成為獨行俠,也許又與其他獨行俠形成小圈圈。就像是蘇東坡說的:大略如行雲流水,初無定質,但常行於所當行,常止於所不可不止。自由自在的去過生活。\n小明:\n可是這樣的話會不會太鴕鳥啊!我可是有理想、有抱負的有為青年耶,我來到這家公司,雖然是我從開始工作以來領的薪水最低的,那是因為我覺得來到這裡可以實現我的理想,才會忍受這公司,我可是還想有一番作為呢!\n月坡:\n別急,我當然知道你是個有為青年,容我繼續為你說明。\n我想用因果來解釋這個問題。凡事有因必有果,何謂因果呢?與舉來說:因為吃太飽,所以拉肚子。一般人遇到了不好的事情,通常是怨天尤人,大嘆倒楣,其實那只是果,當初在種下因的時候,他們可曾仔細思考過了?與其等到拉肚子時才後悔吃太多,何不在吃的時候想到適量的進食就好了,或是避免吃了下不潔的食物。這就是「以終為始」的概念。\n小明:\n「以終為始」?不是很明白這話的意思。\n月坡:\n以終為始是米國人史帝芬.柯維(Stephen R.Covey)在他的書「高效能人士的七種習慣(The 7 Habbits of Highly Effective People)」裡所提到的概念,借用胡適的話來說明就是:想怎收收穫,先那麼栽!\n成為組織中的派系的任何一方,或是獨來獨往的獨行俠,都是最困難的決定,不是嗎?\n你目前所面臨的問題,其實正是在種下「因」,也就是「始」。與其思考該如何種下「因」,倒不如思考什麼樣的「果」是你想要的?再舉前面的拉肚子來說明,不想要拉肚子的話,就小心的選擇食物來源,以及不要吃太多。\n你要自己去想想看到底在這家公司,你想達成什麼的目標,用什麼方法可以讓你達成這目標,就那麼去做吧,不要在乎別人的眼光,因為你不是為別人的眼光而活的,你是為你的目標而往前邁進的。如果加入某派系可以讓你加速達成目標,就去吧!如果成為獨行俠可以達成目標,就義無反顧的當為最快樂的獨行俠吧!\n當然做出任何決定,都一定有副作用,加入某一派系會被敵對派系仇視或被認為趨炎附勢;成為獨行俠的話,可能會被視為異類、怪胎。可是如果這些是你達成目標的副作用的話,為了你的目標,就勇敢的去承擔。\n正如同馬丁路德來在宗教改革時所說的:不擇手段,完成最高道德!最近有個開餐廳的朋友對我說,他決定要不擇手段、不計毀譽的賺錢,因為他的目標是要用賺來的錢來幫助有困難的單親家庭解決經濟上的問題,讓他們得以自立更生,而不是在陳光標帶著大把鈔票來臺灣撒錢的時候下脆嗑頭。當時我腦海就自然的飄出來這句話:不擇手段,完成最高道德。難然我沒機會對他說這句話,但我衷心祝福他能夠成功!\n想想你的目標,設定你的最高道德,然後慎選手段去完成(不擇手段聽起來好像太現實了)。在我看來,不擇手段包含你必須承受的副作用,在最高道德的目標下,就默默的承受吧!祝福你能早日達成你的目標。\n小明:\n謝謝月坡兄這麼詳細的解說。\n月坡:\n請容我再提醒你一點,在做任何決定之前,一定要先想清楚你所處環境,與你自己的相互關係,好好的分析其間的利弊得失,再做出決定。而且要有做最壞的打算、做最好的準備。否則在還沒達成目標,就先成為炮灰了。\n另外再給你一個日本戰時代故事:當鳥兒不叫時,用武力強迫它叫的是織田信長,想辦法逗它叫的是豐臣秀吉,而坐在一旁耐心等它叫的是德川家康!\n小明:\n謝謝月坡兄,我會好好的再次思考我的「最高道德」,也會好好的分析我的情況!\n月坡:\n加油,祝你成功!
[img[http://big5.jiexieyin.org/upload/2006_02/060209185582468.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/060209185582469.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/0602091855824613.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/0602091855824610.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/0602091855824614.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/0602091855824611.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/0602091855824612.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/0602091855824615.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/0602091855824616.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/0602091855824620.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/0602091855824617.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/0602091855824618.jpg]]\n[img[http://big5.jiexieyin.org/upload/2006_02/060209185582468.jpg]]
[img[http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash4/300800_10150296545023781_182727248780_7887423_6099874_n.jpg]]\n熬夜是很正常的事,但經常熬夜對身體會產生很壞的影響,無意中看到這篇文章 ,轉載過來,或許對經常熬夜的同行們會有所幫助。 睡覺的訣竅根據醫學和我的體驗、觀察,一個人真正睡著覺最多只有兩個鐘頭,其餘都是浪費時間,躺在枕頭上做夢,沒有哪個人不做夢。至於醒來覺得自己沒有做 夢,那是因為他忘記了。\n \n通常一個人睡兩個鐘頭就夠了,為什麼有人要睡七、八個鐘頭?那是你賴床躺在枕頭上休息的習慣養成的,並非我們需要那麼久的睡眠時間,尤其打坐做功夫的人曉得,正午只要閉眼真正睡著三分鐘,等於睡兩個鐘頭,不過要對好正 午的時間。夜晚則要在正子時睡著,五分鐘等於六個鐘頭。 就這個時間的學問又大了,同宇宙法則、地球法則、易經陰陽的道理有關係,而且你會感覺到,心臟下面硬是有一股力量降下來,與丹田(腎上)的力量融合,所謂 「水火既濟」,豁然一下,那你睡眠夠了,精神百倍。\n \n所以失眠或真要夜裡熬夜的人,正子時的時刻,哪怕二十分鐘也一定要睡,睡不著也要訓練自己睡著。\n \n過了正子時大約十二點半以後,你不會想睡了,這很糟糕。更嚴重的,到了天快亮,四、五點鐘,五、六點卯時的時候,你又困得想睡,這時如果一睡,一天都會昏頭。\n \n所以想從事熬夜工作的人,正子時,即使有天大的事也要擺下來,睡它半小時,到了卯時想睡覺千萬不要睡,那一天精神就夠了。\n \n不過失眠的人都挨過十二點,在床上翻來覆去睡不著,結果快天亮睡著了,到第二天下午都昏頭昏腦,因此你會感覺失眠、睡眠不足,實際上是你沒有經驗。\n \n睡眠與養生\n一、睡眠的規則\n \n戰國時名醫文摯對齊威王說:「我的養生之道把睡眠放在頭等位置,人和動物只有睡眠才生長,睡眠幫助脾胃消化食物,所以,所以睡眠是養生的第一大補,人一個 晚上不睡覺,其損失一百天也難以恢復。」 晚21點到凌晨5點為有效睡眠時間。人是動物,和植物同屬於生物,白天(凌晨5點到晚上21點)活動產生能量,晚上(21點到凌晨5點)開始進行細胞分 裂,把能量轉化為新生的細胞,是人體細胞休養生息、推陳出新的時間,也是人隨著地球旋轉到背向太陽的一面。陰主靜,是人睡眠的良辰,此時休息,才會有良好 的身體和精神狀態。這和睡覺多的嬰兒長得胖、長得快,而愛鬧覺的孩子發育不良是一樣的道理。\n \n睡覺是養生的一大功能,養就是用大量的健康細胞去取代腐敗的細胞,如一夜睡不著就換不了新細胞。如果說白天消亡一百萬個細胞,一晚上只補回來五十萬個細 胞,這時你的身體就會出現虧空,時間長了,人就糠了,像糠蘿蔔似的。為什麼世上有百歲老人呢?因為他們每晚都在21點鐘準時睡覺。\n \n植物吸收陽光的能量,夜裡生長,所以夜晚在農村的莊稼地裡可聽到拔節的聲音。人類和植物同屬於生物,細胞分裂的時間段大致相同,錯過夜裡睡覺的良辰,細胞 的新生遠趕不上消亡,人就會過早的衰老或患病,人要順其自然,就應跟著太陽走,即天醒我醒,天睡我睡。人在太陽面前小如微塵,「與太陽對著干」是愚蠢的選 擇,遲早會被太陽巨大的引力催垮。這是客觀真理。\n \n現實生活中,不少人有入睡難,睡眠質量不高的毛病。睡眠不好是一個綜合性的問題,如肝火過盛,睡覺警覺;胃火過剩,睡覺不安;肝陰不足,睡覺勞累。\n二、睡眠與疾病\n \n現代的生活習慣和生活方式給人們的身體帶來了很多負面影響形成「四大病」:水果病、冰箱病、電視電腦病、熬夜病。肝臟有一特點:臥則回血,坐立向外供血。\n \n子時(23:00—1:00),其實23點就是新的一天的開始,並不是0點開始的,這是我們犯的誤識。肝膽相表裡,互為一家,23點膽經開了,如若不睡, 大傷膽氣,由於十一臟腑皆取決於膽也,膽氣一虛,全身臟腑功能下降,代謝力、免疫力紛紛下降,人體機能大大降低,膽氣支持中樞神經,膽氣受傷易患各種精神 疾病,比如抑鬱症、精神分裂症、強迫症、躁動症等。子時膽要更換膽汁,膽經漸旺人如不臥,膽汁更替不利,過濃而結晶成石,久之即得膽結石,如果把膽給摘 了,一摘就膽怯了,全身的免疫力下降了50%以上,所以不能摘,要用它本系統的巨大潛能把它化掉。\n \n醜時肝經最旺,醜時(1:00—3:00)不眠,肝無法解除掉有毒之物,產生新鮮血液,因藏血不利,面呈青色,久之易患各類肝病,現在有些人肝不太好,特 別在歐洲平均4個人就有一個大三陽或是小三陽,大都是因為違反自然規律過了子時不睡覺造成的。甲肝比較好治,乙肝就很難治。乙肝病毒攜帶者,是由於晚上經 常不睡覺,人太虛弱了,也就是說秩序太亂了,病毒已經到了細胞裡了。也就是說乙肝的病毒已經到了細胞裡面,但是現在它還沒有能力造成肝炎,當人身體處於最 薄弱的時候就形成成肝炎,乙型肝炎就意味著將來40%——60%的肝硬化。聰明的人是應該瞭解天、地、人之間的關係,不聰明的人就是應該被淘汰的人。\n \n垃圾睡眠給肝臟帶來多大傷害?\n \n肝主疏洩,過子時不睡,可引起肝疏洩不利,肝氣鬱結,可見易怒,頭痛頭暈,眼紅,眼痛,耳鳴,耳聾,胸肋脹痛,女性月經不調,便秘,也可引起肝氣升發不足,人會目倦神疲,腰膝痠軟,暈眩,失眠,驚悸,精神恍惚,重則會暈倒在大街上,不省人事。\n \n肝有藏血、調節血液的功能,過子時不睡,會造成肝血不足,還會引起吐血、流鼻血、皮下出血、牙齦出血、眼底出血、耳出血等出血證狀。\n \n肝開竅於目,過子時不睡,易引起肝虛,則出現視力模糊、老花、夜盲、畏光、迎風流淚,等症狀,還會形成青光眼、白內障、眼底動脈硬化、視網膜病變等眼疾。\n \n肝主筋,其華在爪,過子時不睡覺,會引起肝血不足,就出現筋痛,麻木,屈伸困難,痙攣抽搐,易造成灰指甲,缺鈣,髕骨軟化,癲癇病,骨質疏鬆等症。 肝與心,過子時不睡覺,可引起肝血不足,由於心主一身之血脈,肝有儲藏和調節血液的功能,會造成心臟供血不足,引起心慌、心顫等症狀,嚴重的形成心臟病、 高血壓等心腦血管疾病。\n \n肝與脾,過子時不睡覺,會引起肝胃不和,由於肝助脾胃消化,由於肝氣太虛不能助脾胃消化,使人脾胃消化功能不好,表現為舌苔厚,長期以來會造成中氣塌陷。\n \n肝與肺,過子時不睡覺,無法滋陰潛陽,肝陰虧損,引起肝火過盛灼肺,出現乾咳、或咳嗽、咳痰血等木火刑金的證狀,易導致牛皮癬等各種皮膚病。\n \n肝與腎,過子時不睡覺,肝虛導致腎虧,由於肝腎同源,容易造成生殖系統疾病、不育、骨病、牙病、脫髮、糖尿病、腎衰竭等疾病。\n三、睡眠的方法\n \n交通規則——你不懂就容易出事故。比如說,23點至凌晨3點為子醜時,膽肝經最活躍的時候,肝膽要回血,「躺下去回血,站起來供血」。如果你每晚 22點鐘左右躺下,靜靜得不要說話,到23點的時候,也就睡著了。肝膽開始回血,把有毒的血過濾掉,產生新鮮的血液,到一百歲也沒有膽結石,也沒有肝炎、 囊腫一類的病。如果你天天熬夜到1點多,肝回不了血,有毒的血排不掉,新鮮的血生不成,膽又無法換膽汁,所以這些人容易得膽結石、囊腫、大三陽、小三陽各 種病症。\n \n在歐洲地區,平均四個人就有一個肝炎病毒攜帶者,這就叫不懂規則。睡前半小時最好不要講話,睡覺的時候更不要說話,如一說話,肺經動,然後心經又動,(因為心肺共為上焦)人就容易進入興奮狀態,所以就很難入睡。\n \n21:00—23:00為亥時。亥時三焦經旺,三焦通百脈。亥時入眠,百脈皆得濡養,故百歲老人得共同特點即21:00(亥時)之前入睡。女性若想長久的保持容顏嬌好,應做到早睡早期。\n \n睡覺要關窗,不能開風扇、不能開空調,人生病很多都與此有關,因為人在睡眠之中,氣血流通緩慢,體溫下降,人體會在表面形成一種陽氣層,這種陽氣層它使人 叫 「鬼魅不侵」,什麼意思呢,陽氣足的人,不做惡夢,就是這種陽氣,佔了上風。開空調,開風扇,情況就不一樣了,開窗戶,窗戶走的是風,風入的是筋,如果開 空調,也有風,風入筋,寒入骨,早上起來,身上發黃,臉發黃,脖子後面那條筋發硬,骨節痠痛,甚至有人就開始發燒,這就是風和寒侵入到了筋和骨頭裡的緣 故,這也就是氣受傷了。如果說晚上睡覺不開窗,不開空調,不開風扇,連房門也關上,效果最好,如果熱,把房門打開,把窗戶關上,效果就差了一點,但是他不 至於第二天早上起來渾身乏力,後背僵硬.\n \n有人把客廳的空調開開了,把臥室的門打開,和直接開空調睡覺是差不多的,開了空調以後,空調那個寒進了骨了,所以心裡發冷,心在哪,心在腦髓,腦為髓之海,骨髓裡有寒,那肯定心裡就寒了,怎麼辦,補腎陽、補中氣,什麼時候補到心裡不冷,燒就退了,寒走出去了。\n \n睡覺要儘量早睡,睡得晚,傷了少陽之氣,必然第二天是疲倦無力,要關上窗戶,不開空調、電扇,保護陽氣。\n \n肝膽在下焦,如果胃出現問題的時候,他就會出現寢睡不安,一個是胃寒,如果這個人胃陽本來就不足,過多的喝綠茶,就會出現胃寒,胃寒的時候人是睡不好覺的,或者吃帶泥沙之物過多,胃隱隱作寒,肯定是睡不好;\n \n再一個是胃熱,就是熱氣往上走,嘴裡喘的都是熱氣,像這種情況也睡不好覺;再一個是胃燥,口乾舌燥,胃裡感覺到燥; 還有一個就是胃厚,氣味的味,胃厚,這種情況就是吃了這種厚膩的味道,有人吃海鮮、吃魚、吃燉雞,味道好鮮美,吃多了,美味不可多用,這些東西在裡面 要稀釋它, 不稀釋它,它在裡面味太厚了,所以這個也睡不好覺;\n \n再一個腹漲,腹是漲鼓鼓的,也睡不著,翻來覆去也睡不著;再一個是胃氣太虛,冒冷汗,這也睡不好覺,這些原因都可能形成胃不寧,胃不寧就睡不好。\n \n睡覺時要肢暖,四肢要暖,因為四肢是陽之本,這個大家都知道了,四肢不暖,肯定是腎陽不足,應該在睡覺之前把手腳捂暖,手腳和肚臍、背後的命門都要蓋好。 睡眠法因人而異,下面介紹3種做法:\n \n1、睡覺前簡單的壓腿,然後在床上自然盤坐,兩手重疊放於腿上,自然呼吸,感覺全身毛孔隨呼吸一張一合,若能流淚打哈欠效果最佳,到了想睡覺時倒下便睡。\n \n2、仰臥,自然呼吸,感覺呼吸像春風,先融化大腳趾,然後是其他腳趾,接著腳、小腿、大腿逐漸融化。如還未醒著,再從頭做。\n \n3、入睡快的人可右側臥,右手掌托右耳。右掌心為火,耳為水,二者形成水火即濟,在人體中形成心腎相交。久之,養心滋腎。\n \n睡眠一定要早起,即使在冬天,也不可超過6點起床,春夏秋季儘量在5點之前起床,因為人在寅時(3點—5點)肺經旺的時候起床,能夠使肺氣得以舒展,以順 應陽氣的舒長,來完成新陳代謝,肅降濁氣,使肺氣清,這樣有助於養肺和順應太陽的天勢升起人體陽氣,使人一天陽氣充足,否則,就好像發動機,過了這段好時 機就很難發動人體陽氣,人體陽氣淤積在人體下部不能由命門向上發動升起,會形成淫氣,嚴重損害人的身心健康。\n \n早晨5點至7點是人體大腸經最旺的時候,人體需要把代謝的濁物排出體外,此時如果不起床,大腸得不到充分活動,無法很好的完成排濁功能,使濁物停留而形成 毒素,危害人體血液和臟腑百骸。早晨7點到9點人體胃經最旺,9點到11點人體脾經最旺,這時人的消化吸收運化的能力最好,如果這時還不起床,人體胃酸會 嚴重腐蝕胃粘膜,人體在最佳吸收營養時間得不到營養,長期以來會患脾胃疾病,造成營養不良、中氣塌陷。所以千萬不要賴床,賴床會造成頭昏、疲憊不堪、睡眠 不足的感覺,而應按時起床,歷史上許多偉人都是有三四點鐘起床的習慣,比如華盛頓、拿破崙、康熙皇帝、曾國藩等。另外早起能增加工作效益,俗話說:「三天 早起,一天工」。\n \n現代醫學證明,早睡早起的人精神壓力較小,不易患精神類疾病。早晨不要太早出去鍛鍊,因為早晨在太陽沒有出來之前,地下道的漳氣、濁氣正往上走(尤其是城市),這些氣對人體損傷是很嚴重的。\n \n養身三大事,一睡眠,二便利,三飲食,其餘起居、服裝等皆是輔助。\n \n三事中睡眠第一。然胃納不和者,夜眠不安,故以通便利為第二。而飲食無節,飢飽過度者,腸胃必受傷,而營養日減。睡以安神為主,神以心安為主,應配合年 齡,壯年至多七小時至八小時,多睡則智昏頭暈眼紅脹,四肢疲軟,童年必睡足八小時,或過九小時勿礙,老或病人至多六小時已足。 睡眠中不可忽視的疾病警告 應注意:\n \n(一)睡眠宜早,勿過十時,老年人以八點為正,勿過九點。凡交十一時,為陽生時,屬腎,此時失眠,腎水必虧,心腎相連,水虧則火旺,最易傷神。千萬勿以安眠藥片助睡。\n \n(二)枕上切忌思索計算未來事,睡時宜一切不思,鼻息調勻,自己靜聽其氣,由粗而細,由細而微細而息。視此身如無物,或如糖入於水,化為烏有,自然睡著。\n \n(三)如有思想,不能安著,切勿在枕上轉側思慮,此最耗神,可坐起一時再睡。\n \n(四)如在午時,即上午十一點至一點,為陰生之時,屬心,此時如不能睡,可靜坐一刻鐘,閉目養神,則心氣強。凡有心臟病者切宜注意,每日於此二時注意,則元氣日強,無心跳腹洩或小便頻速之病。\n \n(五)夏日起宜早,冬日起宜遲。居北方宜防寒氣,如在粵桂等省,早起防山嵐瘴氣中病。食後勿仰天睡,早起如在寅時三點至五點,此時切忌鬱怒,必損肺傷肝,萬望注意。\n素食養生美顏社寫於 2011年8月23日 20:11\nhttp://www.facebook.com/notes/%E7%B4%A0%E9%A3%9F%E9%A4%8A%E7%94%9F%E7%BE%8E%E9%A1%8F%E7%A4%BE/%E7%9D%A1%E4%BA%94%E5%88%86%E9%90%98%E7%AD%89%E6%96%BC%E5%85%AD%E9%90%98%E9%A0%AD%E7%9A%84%E6%96%B9%E6%B3%95/10150290587508934
''窮人的習慣''\n\n168創業聯盟寫於 2010年12月8日 12:59\n\n從前有一個窮人,很窮,一個富人見他可憐,就起了善心,想幫他致富。\n富人送給他一頭牛,囑他好好開荒,等春天來了撒上種子,秋天就可以遠離那個「窮」字了。\n窮人滿懷希望開始奮鬥。可是沒過幾天,牛要吃草,人要吃飯,日子比過去還難。\n窮人就想,不如把牛賣了,買幾隻羊,先殺一隻吃,剩下的還可以生小羊,\n長大了拿去賣,可以賺更多的錢。\n窮人的計劃如願以償,只是吃了一隻羊之後,小羊遲遲沒有生下來,日子又艱難了,忍不住又吃了一隻。\n窮人想:這樣下去不得了,不如把羊賣了,買成雞,雞生蛋的速度要快一些,雞蛋立刻可以賺錢,日子立刻可以好轉。\n窮人的計劃又如願以償了,但是日子並沒有改變,又艱難了,又忍不住殺雞,終於殺到只剩一隻雞時,窮人的理想徹底崩潰。\n他想:致富是無望了,還不如把雞賣了,打一壺酒,三杯下肚,萬事不愁。\n很快春天來了,發善心的富人興致勃勃送種子來,竟然發現窮人正就著鹹菜喝酒,牛早就沒有了,房子裡依然一貧如洗。\n富人看見眼前的景象嘆口氣什麼也沒說就失望搖頭轉身走了。\n窮人仍然一直窮著。\n很多窮人都有過夢想,甚至有過機遇,有過行動,但要堅持到底卻很難。\n據一個投資家說,他的成功秘訣就是:''沒錢時,不管再困難,也不要動用投資和積蓄,壓力會使你找到賺錢的新方法,幫你還清賬單。這是個好習慣。''\n\n''性格形成習慣,習慣決定成功。''\n\n【結論】\n\n好的習慣使人成功,壞的習慣使人失敗,如此一個不用成本卻能翻身的機會卻白白的喪失真是讓人為他覺的可惜。\n\n而成功者與失敗者最大的不同處在於,成功者訂立目標後勇往直前,碰到困難時改變方法再接再勵,而失敗者訂立目標後若一碰到困難則改變目標改變方法,計劃永遠趕不上變化。
商業周刊 第1093期 2008-11-03 撰文者:吳怡萱\n當同業都在衝毛利,好市多卻逆向壓低毛利率,寧願少賺的做法,在經濟環境不佳時異軍突起……。\n運動員出身的張嗣漢在經營管理上展現高度紀律的一面。\n金融海嘯席捲全球,大錢變成小錢;越不景氣,做生意就更要把小錢變成大錢。 \n「一公克牛肉賣0.925元,一張衛生紙省0.006元……,」別小看消費者省到千分之一位的小小小錢,它是好市多(COSTCO)總經理張嗣漢每天在辦公室按計算機,精算每一筆成本到萬分之一位,慢慢累積下來的成果。\n\n也因為錙銖必較到萬分之一,九十六年度好市多一口氣做了二百二十億元生意(編按:為美國會計年度,自九十六年七月至隔年六月),20%營收成長率是同業之最,單點經營效益驚人,平均一間店可締造同業單店2.5倍業績。今年前三季(編按:今年一月至九月),好市多營收仍比去年同期成長超過13%,高過前三大量販店平均5%的成長率。\n\n''第一招:固定毛利率\n上限14%,即使賠錢照樣做''\n\n不景氣,它究竟靠什麼策略逆勢突圍?\n\n一般零售業越不景氣,越要衝毛利擴大收益;但張嗣漢反其道而行,他的小錢變大錢第一招,就是不衝毛利衝價值,反而把毛利率固定在14%以下,為什麼?\n\n週六下午一點,好市多內湖店人潮洶湧,連中央走道都擠滿人。天花板上任管線暴露,水泥地板未鋪設任何磁磚,但是入口處十八台收銀機不停計帳,每台推車堆滿貨品,一筆交易平均消費額高達三千元,居全台業界之冠,是同業的三倍左右。\n\n一袋二十四包的衛生紙,要價三百六十九元,拿了三袋的陳姓主婦算得精,「這裡一包一百抽,但一抽有三層,別家只有兩層,」手指一掐,竟算出好市多的衛生紙,單一層價格比外面便宜0.006元,亦即,一袋可便宜四十三元!\n\n走到生鮮區,拿起一盒特選沙朗牛肉,三片要價一千二百一十二元。陳姓主婦卻分析,這一片可比兩個手掌厚度的牛肉,每公克單價其實才0.925元,比同業販售的特選牛肉便宜0.8元,而且品級是百貨公司販售的高檔貨。 \n\n「售價,要比別人便宜25%才叫價值,」張嗣漢說。\n\n別小看一張衛生紙便宜0.006元,一公克牛肉便宜0.8元,張嗣漢就是用萬分之一的思考嚴格控制每筆支出,才能讓產品價格比別人便宜千分之一。一般量販店的定價策略,多根據供應商進貨價再加成數,採用的是加法策略,毛利率至少15%到30%才划算。但好市多卻向下採取減法策略,毛利只要合理,能多低就多低,上限絕對不超過14%,而且即使不賺錢,亦可以接受。\n\n好市多的商業模式,核心價值就扎根在固定毛利率的思考邏輯,「我們的營運邏輯,不會只看(營收數字)上上下下,更重要是先為顧客算出他究竟獲得多少價值,」張嗣漢說。\n\n顧客不會管景不景氣,他只會看自己荷包省了多少?貨比三家又賺了多少?不景氣更要回到根本,就是顧客要的價值絕對不能妥協,即使賠錢也要做。與眾不同的思考,由固定毛利率衍生出來的策略,反而是業界最不敢做的延遲漲價、多進庫存。\n\n延遲漲價、多進庫存,直到撐不下\n\n說到延遲漲價,今年四月,麵粉、砂糖等原物料大漲,麵包價格也跟著漲價5%。「但別人漲,我們就更不能漲,為了顧客價值,我們必須把漲價吃下去,」張嗣漢說。即使沒有賣一個賠一個,可是好市多撐了四個月才調價。\n\n至於多進庫存,當衛生紙今年一月底全面漲價時,好市多反而大量進貨,幾乎到了有多少買多少,一樣撐了五個月不漲價。\n\n都是賠錢的生意怎麼做?「再賠錢,你都要替顧客每一分錢設想,」他說。\n\n雖然原物料漲價要吸收、衛生紙漲價也不能漲,但是「只要能省下萬分之一,累積的小小小錢就可以變大錢,去幫消費者省那千分之一,」張嗣漢說,「我們看業績,而不是看毛利率,毛利薄,就是衝量、衝量、衝量,整塊餅大了自動會賺錢,只是賺的比率大或小。」\n這種萬分之一的思考,說簡單很簡單,說難也很難。不過身為前籃球國手的張嗣漢,把每一天都當成一場比賽,一年三百六十五天,他都用萬分之一的思考幫消費者算帳。\n\n''第二招:減少品項 \n精選20%商品,反降低管銷成本''\n\n一般量販店為滿足顧客,多會陳列成千上萬種貨品,但是好市多卻逆向控制品項在四千項以下,「你要選擇,去抓20%的品項,創造20%的業績,」張嗣漢說。\n\n因為緊抓20%品項,創造80%業績,只有最好才能放上貨架。只放最好的品項在貨架上,看似壓寶,但回推到成本分析,捨去效益不彰的品項,反可以降低不必要的管銷成本。\n\n精選商品之外,更重要是這些20%的商品,如何創造驚人業績?關鍵就在量價設計。「廠商能給我一箱咖啡,就不要給我一杯,第一可以節省你的包裝費,第二節省你的運費,你把節省的價格壓下來給我,我就幫你衝業績,整體的cash flow(現金流)才會更好。」張嗣漢分析,量大,可捨去將產品拆解成單品的時間,同樣能節省供應商的成本。\n\n以馬芬蛋糕為例,同業一顆馬芬賣十七元,好市多只賣一份十二顆包裝,總價二百一十五元;但若將單位成本細算至公克,好市多一包蛋糕竟比其他賣場同樣公克數便宜九十二元!\n\n美廉社總經理邱光隆分析,「好市多執行產品差異化很徹底,它用四千種品項,每個需求只提供兩到三種熱銷產品,就捉住了金字塔頂端的消費者。」\n\n追求效率,更要設關鍵檢查點。\n\n''五分鐘追蹤一次,空了立即補貨''\n\n好市多的生鮮物流區,電腦上每五分鐘就會閃一下燈,可以清楚的追踪每一樣蔬果進出貨狀況,是否空了要立即補貨,「當你把單位檢查點切到越細,即時補貨進貨,就可以讓紅燈替你做生意,」這也是張嗣漢的心得。 \n\n不只用電腦追貨補貨,好市多的每一筆管理支出也是檢查點。張嗣漢拿出一份日報表,你可以清楚的看到,其中每一筆帳,一定記到0.0001,不管是一枝原子筆,或一瓶招待客人的可樂,因為萬分之一的計算標準,一年居然可以省下二百五十萬的費用。\n\n''貨架即倉庫,人力僅占業績1.3%''\n\n走進好市多,眼前就是一個大倉庫。它把貨架當倉庫,當貨卡車進了賣場,一次就把貨堆到貨架上,中間省去拆解每一項單品,盤點、補貨過程,一個人就能頂五個人的工作。\n\n在人力的運用上,好市多的人力支出僅占業績的1.3%,在同業眼中,更是不可能的任務。難的是,1.3%絕不是剋扣人力成本,而是人力價值的運用。\n\n說起來,好市多一間賣場,店長月薪至少比別家高出兩成。每兩年好市多會進行市場薪資調查,分析合理薪水範圍,該調漲或調降。張嗣漢舉例,最近公司才將臨時員工時薪調漲8%,一百二十九元的時薪,比業界高近三成。\n\n為何好市多敢給?因為他們是以每小時為單位檢視員工工作效能,一名收銀員幫顧客刷條碼、結帳、包裝,都有合理計算,就是每人每時能生產多少業績,主管必須依此調整員工工作內容。張嗣漢說,「你給合理的薪資,要求員工發揮最好的工作效率,才能產生價值。」\n\n''第三招:壓低進貨成本\n低價衝出的業績量,變成議價籌碼''\n\n不景氣,誰要和低毛利的業者一起打天下?\n\n但是好市多就是用看似賺不到什麼錢的固定毛利率,讓供應商賺合理的錢。\n\n要與好市多做生意,必須先要學會如何精算固定毛利率在14%的減法能耐。與好市多合作近十年,專門供應雞肉塊的碁富食品副董事長李長基表示,因為好市多本身在成本上就精打細算,「自己的成本也必須攤得清清楚楚,」供應商必須要清楚每單位雞肉塊的匯率、包裝成本和運輸費用,才知道如果增加一個單位的雞肉塊,包裝變大,可以節省多少包裝材料和人力運輸成本,才能正確算出在一四%毛利率下,還能賺錢的空間。\n\n固定毛利率不超過14%,在採購上,也形成有力的議價籌碼。好市多的業績就是用固定毛利率、降低開銷、拉高折扣後衝出來的,供應商若想分食,就要有本事幫賣場用低價及不打折的質量,為顧客創造價值。好市多的供應商要先學會好市多的固定毛利率公式,才能向下一項一項拆解,找出中間可以降低的成本。\n\n''現金給付貨款,減少資金利息''\n\n雖然錙銖必較,但是好市多視供應商為夥伴,不但票期三十日內一定付款,甚至直接給付現金,因為迅速週轉,還可以再省下不必要的資金利息,回饋給顧客。\n\n好市多追求物超所值的低價,但卻相信天下沒有白吃的午餐,開業十一年,令人訝異的是,至今堅持採付費會員制,「因為免費,就會沒有價值。」張嗣漢說。\n\n但不景氣,誰甘心掏一千元買一張會員卡?\n\n別以為付費會趕跑客人。人都一樣,要佔小便宜,又要省每一塊小錢,如果有價值,基於省錢心理,他反而會大幅利用,「關鍵在是否了解顧客心理,做到物超所值,」張嗣漢說。\n\n如何物超所值?今年九月,好市多抓住採購先機,一瓶原本賣五萬二千元的波爾多紅酒,好市多一瓶只賣二萬九千元,一口氣便宜二萬三千元,開賣第一天業績就達一千萬元,總共三千萬元的訂單,兩星期內銷售一空。\n\n「他抓住的客層,剛好是社會中消費力較強的民眾,付費會員制營造出這個客層對好市多的信任感,」大潤發公關何默真表示。好市多的會員多半留學英美,對有價值的舶來品接受度高,因此好市多客層雖然不比同業廣,銷售力道卻能很精準而集中。\n\n台灣好市多的續卡率不但居亞洲之冠,達八成五,比第二名的日本七成續卡率也高出許多;而今年十一月會員即將破百萬!\n\n看似微不足道的萬分之一小錢,已變成張嗣漢最好的生意經,他喜歡每天比別人早一小時上班,做好每一項準備,因為每天就像打一場籃球賽,他都是從萬分之一開始暖身,「不管景不景氣,只要有效率,有價值,自然就會有利潤,」張嗣漢說。\n\n
[[曾經全球霸主美國汽車業竟落寞成泡沫]]
罗杰斯演讲全录\n一、《POLITICAL, SOCIAL, AND ECONOMIC OBSERVATIONS FROM A 3-YEAR GINNESS WORLD RECORD, 245000 KILOMETER DRIVE THROUGH 116 COUNTRIES DURING THE TURN OF THE MILLENNIUM》\n(环游世界、女儿)\n感谢各位!\n我曾经两次环游世界,在游历世界的过程中学到很多东西,愿意和大家谈谈自己的经历。这次的旅行总计行程24万5千公里,游历116个国家,我到过中国、韩国、西伯利亚等亚洲国家,以及中东、澳洲、南美、中美洲和拉丁美洲,最后回到纽约,还作为唯一有此经历的对冲基金经理获得吉尼斯世界记录。在近一次环游全球以后,我有了一个女儿,以前我没有过孩子,她给我带来了很多乐趣,如果在座的各位还没有子女的话,我建议大家努力,象我一样享受天伦之乐!(播放两分钟周游世界时拍摄的录相)。希望有着周游世界的梦想的人能够实现你们的梦想,希望在路上见到大家。我在旅行途中见到的一些事情可能会有深远的影响。\n中国的崛起\n中国将成为21世纪最具影响力的国家。你可能不一定相信中国上升的动力。实际上,在中国开放之后,创业精神得到释放。中国是一个有着悠久历史的国度,有时辉煌,有时却陷入灾难,中国现在又将上升,大家都公认中国会统治这个世纪。目前中国的储蓄率和投资占收入的比重是35%,而美国只有2%,最好的时候过去属于美国,而现在属于中国,所以我会让我的女儿学中文,让保姆和她讲中文。但没有什么事情是一路上升的,19世纪的美国经历了十五次经济危机和一次内战,1907年的美国的整个经济几乎破产,但现在的美国还是最强大的。日本是另一个成功的例子,但也没办法避免成长中的倒退,1966年的日本金融体系崩溃,也没有阻止他成为世界上最富有的国家。经济上升的进程会有很多问题,我们可以把它作为机会,而不是失望的理由。\n未来二十年会有几个大变化\n一个是美圆地位的变化。美圆作为全球用于储备和交易的主流货币已经有六十年的时间,到今天存在很多问题,现在美国欠世界其他国家总共8万亿美圆,就是个大问题。现在美国的中央银行在有意识的贬低美圆,美联储执行的政策(当然也是美国政府的)是一个非常糟糕的政策,不管从长期还是中期看都对国家不利,我是美国人,非常痛恨这一点。美联储的老板和美国政府的老板都不聪明,因为他们控制着印钞机,可以随便印美圆。怎么想并不重要,重要的是作为国际投资者,应当重视美圆在国际上变化的事实,并据此计划你们未来的生活。我的女儿有个银行帐户,不是在美国,是在瑞士,这是我为她将来做的计划。1980、1990年代,欧美经济有个非常长期的成长,但在未来10到15年时间里却会来回震荡,如果想通过买入某些股票,然后长期持有以获取很大的收益,这已不太可能。\n但世界上也存在大牛市,如资源类的股票。资源类股票在上个世纪的八、九十年代经历了大熊市,在未来会有很大的上升。这是最简单的经济学,近35年来没有新发现大的油田,目前产能趋于下降,北海油田是这样,阿拉斯加已经过了顶峰、墨西哥也到顶了,油田和储量会逐渐消失,矿产也会用掉,未来25里石油供应会不断下降,而需求会不断上升,中国、欧洲、北美在未来25年里对能源的成长性需求,会导致世界能源供需结构的严重失衡。这样的事情在历史上发生过多次,资源类股票经历多次长期熊市和长期牛市交替。我在这次旅行之前,建立了一个资源类的指数基金,它由一揽子的资源类股票组成,不需要管理,因为只是指数而已,现在它涨了161%,你能看到,(投资于大趋势获利)这个已不是梦,它已经开始了。很多人认为这只是短期的,是由中国引起的,认为不能持久,但我认为这是长期的失衡。如果想成为成功的投资者,必须理解资源的基本面。\n第三个重要的事实。目前在美国有2.7亿人口,而亚洲有37亿人,这个事实会影响全世界。在亚洲,女人少于男人,这是个真实的事情,总有一天有人会为此后悔。韩国男女比例失衡,印度人找不到老婆。中国男女比例是117比100,这种情况在亚洲持续好多年了,这会产生深远的影响。毛主席说“女人能顶半边天”,现在女人完成了75%的工作,亚洲女性的地位在上升。一千年前的欧洲也出现过这种情况,女人非常重要,男女结婚都是男方家庭来付费。现在在亚洲发生的事情会影响政治、经济、教育、公司内部等方面,离婚率也会上升。这会产生很多投资机会,也会带来社会问题。当你的女儿从14岁变成24岁时,最好对她好一点,不好的话可能就没你的事了。现在已经有投资方法来投资于这种趋势,如果你发现有什么好的机会,不要在这里讲,请私下和我讲。\n二、自由问答\n问:请问您对在中国投资的看法?\n罗杰斯:中国正在经历一次挫折,中国政府也许想让经济放缓,我经常和政府的意见不一致,但这次我认为中国政府是对的,并相信放缓经济也会取得成功。我有中国的股票,但现在不会再买新的股票,未来一两年里会产生很多机会,我和女儿会买股票,但现在还不知道买什么。我已经讲过资源类股票的机会了,我女儿没有股票,但有金、铅和其它的矿产。中国未来二十年会成为一个非常大的资源类市场,如果我找到机会,我会全力投入。相信中国的旅游业也会具有很好的成长性,很多人还没有看过全中国,更不用说出国旅游,在过去的100年里,中国人要旅游是不太容易的,但这种情况正在改变,现在出国可以携带6万美金。另外在很多领域可以投资,但目前还未找到具体的投资方法。\n问:您的看法是基于什么形成的?\n罗杰斯:首先基于历史,了解历史如何走到了今天。我对中国充满信心的原因是我相信和了解中国的过去。我一生成功投资的经验,是用历史分析的方法来发现变化,当一个好的趋势来的时候,找到非常便宜的投资品种,然后长期持有。另外我对短期交易并不善长,肯定不如在座的每个人,也许是世界上最差的短期交易员。我的经验是找到发生变化的趋势,这种变化趋势往往会持续数年。方才讲到的资源,我了解过去持续的熊市,但我并不知道那是低点,如果我的看法正确,我认为上升趋势将会持续10至15年。我现在看到中国的变化也会持续相当多年,可能过程中会有调整和重组,但最终你会和中国一起成长。\n问:你好象不喜欢格林斯潘,最近美圆反弹是不是与他最近被任命继续担任美联储主席有关?\n罗杰斯:格林斯潘,我不是不喜欢,而是认为他不够聪明,我们是好朋友,但他不够聪明。在大选年,政客是不希望改变这种任命的,格林斯潘有非常好的公共关系,媒体形象很好,但就他一辈子事业上的道路是不成功的,这也是为什么政客很喜欢他的原因。\n美圆在过去几周是有非常强的回弹,但任何货币不可能一直上涨或一直下降。去年初时,所有的人都看空美圆,在一边交易的情况下,肯定会回弹的。我刚才讲的是长期趋势,而不是短期。\n问:诺贝尔奖得主,蒙代儿一直非常反对人民币会贬值,你怎么看?\n罗杰斯:怎么想并不重要,但投资者要正面事实。中国加入WTO时对于人民币浮动幅度放宽的承诺,具体我不是很清楚,好象是2007年。2008年举办奥运会,来自全世界的人进入中国,却不能兑换货币,这种情况可能谁多不想发生。到2010年的世博会,人民币还不能自由兑换,也是大家不想看到的。从来没有一个不能自由兑换货币的国家能称得上是伟大的国家。在未来的五到六年,实现人民币的自由兑换,这对中国是很好的事情。问题是上升还是下降,所有的人认为会升值,但当所有的人认为对的时候,我就要怀疑,现在中国是贸易赤字。人民币一旦自由兑换,我就会买入人民币,而不管它上升还是下降。人民币会成为世界上重要的货币。\n问:20内人民币会不会升值2倍、3倍甚至4倍,会有什么结果?什么货币会取代美圆?\n罗杰斯:人民币会是非常强势的货币,我说的是短期涨跌不定,但长期讲肯定上升。日圆已经上涨了500%,从它浮动开始,涨了4-5倍,日本的贸易还是顺差。就是人民币上涨,中国还会是有竞争力的。\n还有一个问题想谈一谈。如果我对美元的看法正确,哪种货币会取代美圆,欧圆我很喜欢,但欧圆有许多缺陷,搀杂了许多政治问题。欧圆和日圆都不能替代美圆。人民币可能取代美圆,中国有很大的市场,是个债权过而不是债务国。虽然现在这样说很可笑,因为人民币现在还不可以自由兑换。强调一点,这不是我的预测。世界上没有任何纸币可以作为一个非常好的货币。因为世界上的政客都是通过贬值货币来拉选票的。唯一的例外是新加坡,但如果其他国家的货币都贬值,新加坡也会面临很大的问题。所以没有一个健康的货币。\n(问:会不会是黄金?)\n我女儿有一些黄金,但它不是一种很好的金属,与其它金属不同,世界上有最大量的黄金存货。如果世界上存在一个很大的经济危机,黄金会很好,其它原材料价格上涨,黄金也会上涨。\n问:如果没有很好的一种货币,是否可选择一揽子货币或资源?\n罗杰斯:这是一个很好的观点。我喜欢原材料,因为原材料供求严重失衡,加上没有好的货币,就使原材料更具吸引力 。另外一个有吸引力但不是关键的一点是战争。战争对很多人来讲并不是好事,但未来几年会有很多战争,它唯一好的效果是会令原材料价格上涨。但是,就算没有战争,也有好的货币,我也要投资原材料。\n问:中国的投资机会?\n罗杰斯:我不知道,我不知道哪只股票降得最多,见底后就有投资机会,但不知道是下降15%还是35%是见底的时机,但是希望接近底部时能够看得出来,从而进行购买。我前面讲的原材料、男女比例失衡和旅游,有些是劳动密集型,但有些是资本密集型。如果中国持续25年的成长,会创造巨大的财富,出现非常大的投资机会。在教育领域,在健身领域(女人更会懂得保护自己),离婚率会更高,但我不知道如何投资离婚。可口可乐、丰田是世界级的消费品牌,未来有些世界级的品牌会在中国产生。\n问:如何评价澳大利亚、阿根廷和印度?\n罗杰斯:澳大利亚是资源密集型的国家,其面积与美国大陆48个州一样大,但只有1800万人,有很多的自然资源,我拥有一些澳大利亚的股票和其他投资。\n阿根廷也有很多资源,我在阿根廷没有投资,那里的政客比美国还差,相信阿根廷会有下一轮的下降,要等待2-3年,看他的债务问题、劳工问题的解决情况。\n印度有10亿人口,是世界第二大国。对此人们时常产生乐观的情绪,认为拥有10亿人口的国家总有成功的例子。但我认为作为投资者,这是个非常差的地方。因为他们没有在印度开车走过,对印度不了解。\n现在印度人很恨我,因为我在印度跟他们讲,应该离开。印度人的沙文主义和民族主义已经达到非常可怕的地步,我让他们把钱投资到中国,你很难想象他们有多么恨我。印度人非常嫉妒在中国发生的事情。1947年,印度还是个很伟大的国家,但情况发生了变化。当1979年邓小平领导中国改革的时候,印度的经济水平比中国高得多。我跟他们讲你们转来转去都这么多年了,他们非常生气。\n在印度国家最重要的主干道上,卡车司机只能开20公里/小时,世界上最好的公路在中国,中国的卡车司机至少能开60-70公里/小时。印度的IT为人称道,但在孟买、新德里和其他城市,我要用不同的手机,就是在坦桑尼亚我也只要用一部手机。90年代初,印度说要开放,因为全世界社会主义国家都在做,印度讲我们也来私有化,从91年到现在只私有化了一个公司,是一个面包房。只有60%的印度孩子到12岁还在上学,教育质量非常差,这是无法与中国相比的。印度是个伟大的国家,其文化、美食、旅游景点都值得称道。但印度实际上不是一个国家,他有不同语言、不同信仰和文化的地区拼凑在一起。我还可以讲出很多不投资于印度的理由。\n问:原材料的供需失蘅是不是也是个短期的问题,从“长期”来看,空间技术会解决材料问题,通过基因技术也可以用粮食来解决能源问题?\n罗杰斯:未来太阳能、风能会变得很好。如果油价涨到100-150美圆,你说的情况会发生。当价格上涨,人们会开始寻找替代品,这也是牛市向熊市转化的原因。当石油上涨到150美圆时,人们会在故宫下面找石油,当棉花涨到3美圆是,你可能看到会在天安门广场种棉花。但事实上很难发生这样的事情,在欧美,人们都在用石油能源用于开车、取暖,这要持续非常长的时间。在上世纪60年代,石油技术领域发生了非常大的进步,但到今天石油价格还是涨了15倍,技术要转变为生产力需要很长的时间。我再解释一下为什么牛市会非常长。例如,你需要先找到铅矿,通过融资获得资金,进行建设,将开采的铅矿运出来,然后再建造冶炼厂进行加工。经过这样的一个漫长的过程,供给再次失衡,才会进入熊市。而在这之前,我可以先获取十年的利润。\n问:房地产泡沫破灭将会带来什么样的影响?\n罗杰斯:世界上很多地方存在泡沫,英国的已经破了,澳大利亚的也正在破灭,美国部分地区也出现了这个现象。随着利率的增长,泡沫确实会存在。我对美国的房地产并不很乐观。如果我买第二处房产,不会选择马萨诸塞州,因为美国的金融业可能不会再象过去那样景气。如果在中国买房,也不会选择上海,因为上海作为金融中心,短期内可能会遭遇困难。我会在中国的西部某个城市投资房地产,那里的人们可能因为未来收入的上升而是促使地产上涨。\n问:美国八、九十年代出现了您和索罗斯这样的投资大师,但被动投资也有取得了成功的例子,请问您对此有何看法?\n罗杰斯:很多研究机构认为80%的被动式投资优于主动式,我建议大部分人最好选择被动式。但在有好的投资项目和好的投资管理者时,也可选择主动式。但关键是在早期找到这样的优秀投资管理人,当大家都知道他是好的投资管理者时,就为时已晚了。我的原材料指数基金收益是其他主动投资的3倍。美国的ETFs提供了更加便宜更加方便的交易方式,因此是更好的选择。但如果你能找到好的项目,可以做主动投资,如若不然,选择被动式投资。\n问:在80年代,市场印证了您的判断,价格从800狂泻到100,现在又涨到300,对黄金价格您如何判断?\n罗杰斯:我和我女儿都有黄金投资,黄金是不错的投资,但有更好的机会,如橙汁、咖啡豆等。我持有黄金的时候,黄金价格还会上升,但到800也许需要10年的时间。\n问:请问您对投资对象贵或便宜的判断依据是什么?\n罗杰斯:原材料和股票完全不一样,股票有很多指标如P/E及历史数据等。而对于原材料,我认为应该有供求平衡的价格。现在采油成本低于40美元,问题是没有足够的油,世界消费的原油大于生产,储藏量也在下降。如果油价达到100美元,风力发电等已经具有竞争力了。150美圆时,空间技术、用氢氧发电等新技术也会有竞争力。但在人们减少使用石油资源、在新技术及替代品进入前,价格仍然会上涨。\n问:过去20年美国长期利息下降,近期有加息的意向,您认为这对世界经济将会有什么影响?\n罗杰斯:美国是个巨大的债务国,1946年利率为低点,1981年利率达到高点,美国利率还将创新高,投资者应当避免购买美国的股票和资产,避免开立美国帐户。\n问:中国存在国有股的问题,请问您不投资是不是因为这些非流通股的存在?近期的中国股市下跌是否您的言论引起的?\n罗杰斯:我不希望市场做我所说的。成功的投资者应当做出自己的决定,而不是人云亦云。市场比我更大,也更聪明。就算市场一两天内对我注意了一下,也会很快将我遗忘。政府应当尽快解决国有股的问题。其他国家的市场也曾有过不能交易的股票,一旦卖掉这些股票之后,市场就会上升。中国是个伟大的国家,不需要搞出复杂而疯狂的A、B、H股、QFII这些花样。中国越快地对所有人都开放市场,结果就能够越好。中国会有挫折,这是一个原因。现在的系统对官僚来说是天堂,对其他人来说却是恶梦。\n问:目前的中国政府有很强的控制力,中央银行的决策并不独立,您对此如何看?\n罗杰斯:中国政府对央行有很强的控制力,任何国家开始时中央政府的控制力都非常强,但他们都在发展过程中发现必须有一个独立的中央银行,例如英国用了300年的时间来建立独立的中央银行。中国中央银行的独立,从历史上看终究会发生,不一定在2008年或者2010年,但会朝这个方向发展。\n\n
1、 道可道,非常道。名可名,非常名。無名天地之始;有名萬物之母。故常無欲,以觀其妙;常有欲,以觀其徼。此兩者,同出而異名,同謂之玄。玄之又玄,衆妙之門。\n2、 天下皆知美之為美,斯惡已。皆知善之為善,斯不善已。故有無相生,難易相成,長短相較,高下相傾,音聲相和,前後相隨。是以聖人處無為之事,行不言之教;萬物作焉而不辭,生而不有。為而不恃,功成而弗居。夫唯弗居,是以不去。\n3、 不尚賢,使民不爭;不貴難得之貨,使民不為盜;不見可欲,使民心不亂。是以聖人之治,虛其心,實其腹,弱其志,強其骨。常使民無知無欲。使夫智者不敢為也。為無為,則無不治。\n4、 道沖而用之或不盈。淵兮似萬物之宗。挫其銳,解其紛,和其光,同其塵。湛兮似或存。吾不知誰之子,象帝之先。\n5、 天地不仁,以萬物為芻狗;聖人不仁,以百姓為芻狗。天地之間,其猶橐籥乎?虛而不屈,動而愈出。多言數窮,不如守中。\n6、 谷神不死,是謂玄牝。玄牝之門,是謂天地根。緜緜若存,用之不勤。\n7、 天長地久。天地所以能長且久者,以其不自生,故能長生。是以聖人後其身而身先;外其身而身存。非以其無私耶?故能成其私。\n8、 上善若水。水善利萬物而不爭,處衆人之所惡,故幾於道。居善地,心善淵,與善仁,言善信,正善治,事善能,動善時。夫唯不爭,故無尤。\n9、 持而盈之,不如其已;揣而銳之,不可長保。金玉滿堂,莫之能守;富貴而驕,自遺其咎。功遂身退天之道。\n10、 載營魄抱一,能無離乎?專氣致柔,能嬰兒乎?滌除玄覽,能無疵乎?愛民治國,能無知乎?天門開闔,能為雌乎?明白四達,能無為乎?生之、畜之,生而不有,為而不恃,長而不宰,是謂玄德。\n11、 三十輻,共一轂,當其無,有車之用。埏埴以為器,當其無,有器之用。鑿戶牖以為室,當其無,有室之用。故有之以為利,無之以為用。\n12、 五色令人目盲;五音令人耳聾;五味令人口爽;馳騁畋獵,令人心發狂;難得之貨,令人行妨。是以聖人為腹不為目,故去彼取此。\n13、 寵辱若驚,貴大患若身。何謂寵辱若驚?寵為下,得之若驚,失之若驚,是謂寵辱若驚。何謂貴大患若身?吾所以有大患者,為吾有身,及吾無身,吾有何患?故貴以身為天下,若可寄天下;愛以身為天下,若可託天下。\n14、 視之不見,名曰夷;聽之不聞,名曰希;搏之不得,名曰微。此三者不可致詰,故混而為一。其上不皦,其下不昧。繩繩不可名,復歸於無物。是謂無狀之狀,無物之象,是謂惚恍。迎之不見其首,隨之不見其後。執古之道,以御今之有。能知古始,是謂道紀。\n\n\n15、 古之善為士者,微妙玄通,深不可識。夫唯不可識,故強為之容。豫焉若冬涉川;猶兮若畏四鄰;儼兮其若容;渙兮若冰之將釋;敦兮其若樸;曠兮其若谷;混兮其若濁;孰能濁以靜之徐清?孰能安以久動之徐生?保此道者,不欲盈。夫唯不盈,故能蔽不新成。\n16、 致虛極,守靜篤。萬物並作,吾以觀復。夫物芸芸,各復歸其根。歸根曰靜,是謂復命。復命曰常,知常曰明。不知常,妄作凶。知常容,容乃公,公乃王,王乃天,天乃道,道乃久,沒身不殆。\n17、 太上,下知有之;其次,親而譽之;其次,畏之;其次,侮之。信不足,焉有不信焉。悠兮,其貴言。功成事遂,百姓皆謂我自然。\n18、 大道廢,有仁義;慧智出,有大偽;六親不和,有孝慈;國家昏亂,有忠臣。\n19、 絕聖棄智,民利百倍;絕仁棄義,民復孝慈;絕巧棄利,盜賊無有。此三者以為文不足。故令有所屬:見素抱樸,少私寡欲。\n20、 絕學無憂,唯之與阿,相去幾何?善之與惡,相去若何?人之所畏,不可不畏。荒兮其未央哉!衆人熙熙,如享太牢,如春登臺。我獨泊兮其未兆;如嬰兒之未孩;儽儽兮若無所歸。衆人皆有餘,而我獨若遺。我愚人之心也哉!沌沌兮,俗人昭昭,我獨昏昏。俗人察察,我獨悶悶。澹兮其若海,飂兮若無止,衆人皆有以,而我獨頑似鄙。我獨異於人,而貴食母。\n21、 孔德之容,唯道是從。道之為物,唯恍唯惚。惚兮恍兮,其中有象;恍兮惚兮,其中有物。窈兮冥兮,其中有精;其精甚真,其中有信。自古及今,其名不去,以閱衆甫。吾何以知衆甫之狀哉?以此。\n22、 曲則全,枉則直,窪則盈,弊則新,少則得,多則惑。是以聖人抱一為天下式。不自見,故明;不自是,故彰;不自伐,故有功;不自矜,故長。夫唯不爭,故天下莫能與之爭。古之所謂曲則全者,豈虛言哉!誠全而歸之。\n23、 希言自然,故飄風不終朝,驟雨不終日。孰為此者?天地。天地尚不能久,而況於人乎?故從事於道者,道者,同於道;德者,同於德;失者,同於失。同於道者,道亦樂得之;同於德者,德亦樂得之;同於失者,失亦樂得之。信不足,焉有不信焉。\n24、 企者不立;跨者不行;自見者不明;自是者不彰;自伐者無功;自矜者不長。其在道也,曰:餘食贅行。物或惡之,故有道者不處。\n25、 有物混成,先天地生。寂兮寥兮,獨立不改,周行而不殆,可以為天下母。吾不知其名,字之曰道,強為之名曰大。大曰逝,逝曰遠,遠曰反。故道大,天大,地大,王亦大。域中有四大,而王居其一焉。人法地,地法天,天法道,道法自然。\n26、 重為輕根,靜為躁君。是以聖人終日行不離輜重。雖有榮觀,燕處超然。奈何萬乘之主,而以身輕天下?輕則失本,躁則失君。\n27、 善行無轍迹,善言無瑕讁;善數不用籌策;善閉無關楗而不可開,善結無繩約而不可解。是以聖人常善救人,故無棄人;常善救物,故無棄物。是謂襲明。故善人者,不善人之師;不善人者,善人之資。不貴其師,不愛其資,雖智大迷,是謂要妙。\n28、 知其雄,守其雌,為天下谿。為天下谿,常德不離,復歸於嬰兒。知其白,守其黑,為天下式。為天下式,常德不忒,復歸於無極。知其榮,守其辱,為天下谷。為天下谷,常德乃足,復歸於樸。樸散則為器,聖人用之,則為官長,故大制不割。\n29、 將欲取天下而為之,吾見其不得已。天下神器,不可為也,為者敗之,執者失之。故物或行或隨;或歔或吹;或強或羸;或挫或隳。是以聖人去甚,去奢,去泰。\n30、 以道佐人主者,不以兵強天下。其事好還。師之所處,荊棘生焉。大軍之後,必有凶年。善有果而已,不敢以取強。果而勿矜,果而勿伐,果而勿驕。果而不得已,果而勿強。物壯則老,是謂不道,不道早已。\n31、 夫佳兵者,不祥之器,物或惡之,故有道者不處。君子居則貴左,用兵則貴右。兵者不祥之器,非君子之器,不得已而用之,恬淡為上。勝而不美,而美之者,是樂殺人。夫樂殺人者,則不可以得志於天下矣。吉事尚左,凶事尚右。偏將軍居左,上將軍居右,言以喪禮處之。殺人之衆,以哀悲泣之,戰勝以喪禮處之。\n32、 道常無名。樸雖小,天下莫能臣也。侯王若能守之,萬物將自賓。天地相合,以降甘露,民莫之令而自均。始制有名,名亦既有,夫亦將知止,知止可以不殆。譬道之在天下,猶川谷之於江海。\n33、 知人者智,自知者明。勝人者有力,自勝者強。知足者富。強行者有志。不失其所者久。死而不亡者壽。\n34、 大道氾兮,其可左右。萬物恃之而生而不辭,功成不名有。衣養萬物而不為主,常無欲,可名於小;萬物歸焉,而不為主,可名為大。以其終不自為大,故能成其大。\n35、 執大象,天下往。往而不害,安平大。樂與餌,過客止。道之出口,淡乎其無味,視之不足見,聽之不足聞,用之不足既。\n36、 將欲歙之,必固張之;將欲弱之,必固強之;將欲廢之,必固興之;將欲奪之,必固與之。是謂微明。柔弱勝剛強。魚不可脫於淵,國之利器不可以示人。\n37、 道常無為而無不為。侯王若能守之,萬物將自化。化而欲作,吾將鎮之以無名之樸。無名之樸,夫亦將無欲。不欲以靜,天下將自定。\n\n\n \n\n38、\n上德不德,是以有德;下德不失德,是以無德。上德無為而無以為;下德為之而有以為。上仁為之而無以為;上義為之而有以為。上禮為之而莫之應,則攘臂而扔之。故失道而後德,失德而後仁,失仁而後義,失義而後禮。夫禮者,忠信之薄,而亂之首。前識者,道之華,而愚之始。是以大丈夫處其厚,不居其薄;處其實,不居其華。故去彼取此。\n39、 昔之得一者:天得一以清;地得一以寧;神得一以靈;谷得一以盈;萬物得一以生;侯王得一以為天下貞。其致之,天無以清,將恐裂;地無以寧,將恐發;神無以靈,將恐歇;谷無以盈,將恐竭;萬物無以生,將恐滅;侯王無以貴高將恐蹶。故貴以賤為本,高以下為基。是以侯王自稱孤、寡、不穀。此非以賤為本耶?非乎?故致數輿無輿。不欲琭琭如玉,珞珞如石。\n40、 反者道之動;弱者道之用。天下萬物生於有,有生於無。\n41、 上士聞道,勤而行之;中士聞道,若存若亡;下士聞道,大笑之。不笑不足以為道。故建言有之:明道若昧;進道若退;夷道若纇;上德若谷;大白若辱;廣德若不足;建德若偷;質真若渝;大方無隅;大器晚成;大音希聲;大象無形;道隱無名。夫唯道,善貸且成。\n42、 道生一,一生二,二生三,三生萬物。萬物負陰而抱陽,沖氣以為和。人之所惡,唯孤、寡、不穀,而王公以為稱。故物或損之而益,或益之而損。人之所教,我亦教之。強梁者不得其死,吾將以為教父。\n43、 天下之至柔,馳騁天下之至堅。無有入無間,吾是以知無為之有益。不言之教,無為之益,天下希及之。\n44、 名與身孰親?身與貨孰多?得與亡孰病?是故甚愛必大費;多藏必厚亡。知足不辱,知止不殆,可以長久。\n45、 大成若缺,其用不弊。大盈若沖,其用不窮。大直若屈,大巧若拙,大辯若訥。躁勝寒靜勝熱。清靜為天下正。\n46、 天下有道,卻走馬以糞。天下無道,戎馬生於郊。禍莫大於不知足;咎莫大於欲得。故知足之足,常足矣。\n47、 不出戶知天下;不闚牖見天道。其出彌遠,其知彌少。是以聖人不行而知,不見而名,不為而成。\n48、 為學日益,為道日損。損之又損,以至於無為。無為而無不為。取天下常以無事,及其有事,不足以取天下。\n49、 聖人無常心,以百姓心為心。善者,吾善之;不善者,吾亦善之;德善。信者,吾信之;不信者,吾亦信之;德信。聖人在天下,歙歙為天下渾其心,聖人皆孩之。\n50、 出生入死。生之徒,十有三;死之徒,十有三;人之生,動之死地,十有三。夫何故?以其生生之厚。蓋聞善攝生者,陸行不遇兕虎,入軍不被甲兵;兕無所投其角,虎無所措其爪,兵無所容其刃。夫何故?以其無死地。\n \n\n51、 道生之,德畜之,物形之,勢成之。是以萬物莫不尊道而貴德。道之尊,德之貴,夫莫之命而常自然。故道生之,德畜之;長之育之;亭之毒之;養之覆之。生而不有,為而不恃,長而不宰,是謂玄德。\n52、 天下有始,以為天下母。既得其母,以知其子,既知其子,復守其母,沒身不殆。塞其兌,閉其門,終身不勤。開其兌,濟其事,終身不救。見小曰明,守柔曰強。用其光,復歸其明,無遺身殃;是為習常。\n53、 使我介然有知,行於大道,唯施是畏。大道甚夷,而民好徑。朝甚除,田甚蕪,倉甚虛;服文綵,帶利劍,厭飲食,財貨有餘;是謂盜夸。非道也哉!\n54、 善建者不拔,善抱者不脫,子孫以祭祀不輟。修之於身,其德乃真;修之於家,其德乃餘;修之於鄉,其德乃長;修之於國,其德乃豐;修之於天下,其德乃普。故以身觀身,以家觀家,以鄉觀鄉,以國觀國,以天下觀天下。吾何以知天下然哉?以此。\n55、 含德之厚,比於赤子。蜂蠆虺蛇不螫,猛獸不據,攫鳥不搏。骨弱筋柔而握固。未知牝牡之合而全作,精之至也。終日號而不嗄,和之至也。知和曰常,知常曰明,益生曰祥。心使氣曰強。物壯則老,謂之不道,不道早已。\n56、 知者不言,言者不知。塞其兑,閉其門,挫其銳,解其分,和其光,同其塵,是謂玄同。故不可得而親,不可得而疎;不可得而利,不可得而害;不可得而貴,不可得而賤。故為天下貴。\n57、 以正治國,以奇用兵,以無事取天下。吾何以知其然哉?以此:天下多忌諱,而民彌貧;民多利器,國家滋昏;人多伎巧,奇物滋起;法令滋彰,盜賊多有。故聖人云:我無為,而民自化;我好靜,而民自正;我無事,而民自富;我無欲,而民自樸。\n58、 其政悶悶,其民淳淳;其政察察,其民缺缺。禍兮福之所倚,福兮禍之所伏。孰知其極?其無正。正復為奇,善復為妖。人之迷,其日固久。是以聖人方而不割,廉而不劌,直而不肆,光而不燿。\n59、 治人事天莫若嗇。夫唯嗇,是謂早服;早服謂之重積德;重積德則無不克;無不克則莫知其極;莫知其極,可以有國;有國之母,可以長久;是謂深根固柢,長生久視之道。\n60、 治大國若烹小鮮。以道莅天下,其鬼不神;非其鬼不神,其神不傷人;非其神不傷人,聖人亦不傷人。夫兩不相傷,故德交歸焉。\n61、 大國者下流,天下之交,天下之牝。牝常以靜勝牡,以靜為下。故大國以下小國,則取小國;小國以下大國,則取大國。故或下以取,或下而取。大國不過欲兼畜人,小國不過欲入事人。夫兩者各得其所欲,大者宜為下。\n\n \n\n62、 道者萬物之奧。善人之寶,不善人之所保。美言可以市,尊行可以加人。人之不善,何棄之有?故立天子,置三公,雖有拱璧以先駟馬,不如坐進此道。古之所以貴此道者何?不曰:以求得,有罪以免耶?故為天下貴。\n63、 為無為,事無事,味無味。大小多少,報怨以德。圖難於其易,為大於其細;天下難事,必作於易,天下大事,必作於細。是以聖人終不為大,故能成其大。夫輕諾必寡信,多易必多難。是以聖人猶難之,故終無難矣。\n64、 其安易持,其未兆易謀。其脆易泮,其微易散。為之於未有,治之於未亂。合抱之木,生於毫末;九層之臺,起於累土;千里之行,始於足下。為者敗之,執者失之。是以聖人無為故無敗;無執故無失。民之從事,常於幾成而敗之。慎終如始,則無敗事,是以聖人欲不欲,不貴難得之貨;學不學,復衆人之所過,以輔萬物之自然,而不敢為。\n65、 古之善為道者,非以明民,將以愚之。民之難治,以其智多。故以智治國,國之賊;不以智治國,國之福。知此兩者亦𥡴式。常知𥡴式,是謂玄德。玄德深矣,遠矣,與物反矣,然後乃至大順。\n66、 江海所以能為百谷王者,以其善下之,故能為百谷王。是以欲上民,必以言下之;欲先民,必以身後之。是以聖人處上而民不重,處前而民不害。是以天下樂推而不厭。以其不爭,故天下莫能與之爭。\n67、 天下皆謂我道大,似不肖。夫唯大,故似不肖。若肖久矣。其細也夫!我有三寶,持而保之。一曰慈,二曰儉,三曰不敢為天下先。慈故能勇;儉故能廣;不敢為天下先,故能成器長。今舍慈且勇;舍儉且廣;舍後且先;死矣!夫慈以戰則勝,以守則固。天將救之,以慈衛之。\n68、 善為士者,不武;善戰者,不怒;善勝敵者,不與;善用人者,為之下。是謂不爭之德,是謂用人之力,是謂配天古之極。\n69、 用兵有言:吾不敢為主,而為客;不敢進寸,而退尺。是謂行無行;攘無臂;扔無敵;執無兵。禍莫大於輕敵,輕敵幾喪吾寶。故抗兵相加,哀者勝矣。\n\n \n\n70、 吾言甚易知,甚易行。天下莫能知,莫能行。言有宗,事有君。夫唯無知,是以不我知。知我者希,則我者貴。是以聖人被褐懷玉。\n71、 知不知上;不知知病。夫唯病病,是以不病。聖人不病,以其病病,是以不病。\n72、 民不畏威,則大威至。無狎其所居,無厭其所生。夫唯不厭,是以不厭。是以聖人自知不自見;自愛不自貴。故去彼取此。\n73、 勇於敢則殺,勇於不敢則活。此兩者,或利或害。天之所惡,孰知其故?是以聖人猶難之。天之道,不爭而善勝,不言而善應,不召而自來,繟然而善謀。天網恢恢,疎而不失。\n74、 民不畏死,奈何以死懼之?若使民常畏死,而為奇者,吾得執而殺之,孰敢?常有司殺者殺。夫代司殺者殺,是謂代大匠斲;夫代大匠斲者,希有不傷其手矣。\n75、 民之饑,以其上食稅之多,是以饑。民之難治,以其上之有為,是以難治。民之輕死,以其求生之厚,是以輕死。夫唯無以生為者,是賢於貴生。\n76、 人之生也柔弱,其死也堅強。萬物草木之生也柔脆,其死也枯槁。故堅強者死之徒,柔弱者生之徒。是以兵強則不勝,木強則兵。強大處下,柔弱處上。\n77、 天之道,其猶張弓與?高者抑之,下者舉之;有餘者損之,不足者補之。天之道,損有餘而補不足。人之道,則不然,損不足以奉有餘。孰能有餘以奉天下,唯有道者。是以聖人為而不恃,功成而不處,其不欲見賢。\n78、 天下莫柔弱於水,而攻堅強者莫之能勝,其無以易之。弱之勝強,柔之勝剛,天下莫不知,莫能行。是以聖人云:受國之垢,是謂社稷主;受國不祥,是為天下王。正言若反。\n79、 和大怨,必有餘怨;安可以為善?是以聖人執左契,而不責於人。有德司契,無德司徹。天道無親,常與善人。\n80、 小國寡民。使有什伯之器而不用;使民重死而不遠徙。雖有舟輿,無所乘之,雖有甲兵,無所陳之。使人復結繩而用之,甘其食,美其服,安其居,樂其俗。鄰國相望,雞犬之聲相聞,民至老死,不相往來。\n81、 信言不美,美言不信。善者不辯,辯者不善。知者不博,博者不知。聖人不積,既以為人己愈有,既以與人己愈多。天之道,利而不害;聖人之道,為而不爭。\n\n
!這世界若沒有愛你的心與你愛的心,那你不過是一粒飄蕩的塵埃\n*[[為什麼要讓別人的表現來決定自己的行為]]\n*[[讓我前進的八句話]]\n*[[彎得下腰才是成熟,放下身段才是高手]]\n*[[Jonathan Livingston]]\n*[[三秒鐘形象UP學]]\n*[[創造三贏的讚美妙招]]\n*[[贏得好感的關鍵5分鐘]]\n*[[成功人士的七個習慣]]\n*[[田中千繪:甘巴爹!認真才能出頭]]\n*[[王永慶的「瘦鵝理論」]]\n*[[好事吸引力]]\n*[[創業從憤怒開始]]\n*[[精算到0.0001元才叫成本好市多營收成長2成的秘密]]\n*[[好市多舵手張嗣漢的3D哲學]]\n*[[上天下海調貨 停產電池也找給你]]\n*[[上課睡覺的女人]]\n*[[一根火柴棒]]\n*[[巔峰離開 穆西納最睿智]]\n*[[轉劣勢為特質 害羞也能上舞台]]\n*[[逼上梁山創業去]]\n*[[承認失敗是最難的關卡]]\n*[[一位學佛的修女]]\n*[[南方朔觀點:小羅斯福的功績:讓國家動起來!]]\n*[[讓你夢想成真的「正向思考術」]]\n*[[變革的最大挑戰:改變行為]]\n*[[2009改頭換面,9件非做不可的事]]\n*[[李白《靜夜思》日版本才是原文]]\n*[[窮人的習慣]]\n*[[麥可喬丹的十條人生信念]]\n*[[IF]]\n*[[朝對的方向走去]]\n*[[最大的風險,就是不冒險]]\n*[[不二法門]]\n*[[停在港口的船是最安全的,但那不是造船目的]]\n*[[零體罰害死台灣人(轉錄PTT)]]\n*[[不要預支明天的煩惱]]\n*[[求知若渴、虛懷若愚(Stay hungry Stay foolish)]]
2009/01/15 11:22 時報資訊\n【時報記者任珮云台北報導】金融海嘯衝擊,花旗集團拆解也讓「金融超市」的經營模式出現警訊!國內14家金控經過此波金融海嘯,是否可能掀起一波金控合併潮?據了解,合庫 (5854) 正和一家金控正洽談合併,揣測可能是國票金 (2889) 或是日盛金 (5820) ,合庫過去曾是國票金股東,一度釋股;而日盛金 (5820) 則一直有傳聞富邦金有意併購。但據近一個月的券商買超統計來看,透過永豐金買超日盛金及國票金的買單都超過1000張。\n\n日盛金最大股東─日系私募基金新生銀行較傾向和合庫合併,原先富邦金與日盛金合併幾成定局,最後時刻被大股東新生銀喊卡。據悉,新生銀對日盛金的併購案有絕對主導權,近來更相中經營穩定度高,手上也不缺現金部位的合作金庫,而金管會主委陳沖也公開表示金融合併應由公股行庫發動。\n\n目前財部持股達37% 的合庫,較傾向以換股方式進行,但新生銀則青睞以現金佔大部分的交易條件,這將成為首宗公股行庫合併民營金控成功與否的關鍵。
!@@color(red):''//帶你上天堂的好老師//''@@\n\n[img[http://byfiles.storage.live.com/y1pNoG-tKkUjfPl6kjPF4eoMFAWkVN1PC-by10j1JeoRwUdvC4z_5IexadOIkMKcTbx]]\n*''好的老師帶你上天堂,不好的老師帶你住套房!''\n[img[http://byfiles.storage.live.com/y1pyU4FwnOt-o7440X3R1knY7E_UPkFubRZIKKN2_17P1c4zdgCqGdr8uNoQ97YzBh_]]\n\n''[[導師的MSN布洛格|http://monkeygodtw.spaces.live.com/?lc=1028]]''\n\n''[[導師的天空布洛格|http://blog.yam.com/monkeygod]]''\n\n[img[http://byfiles.storage.live.com/y1pWTUtbMS31ms_AcY4bNXtQQb4GDhe9vBwI-UYs9PL2s9NJWNOYKHuhI4InHPIpeer]]
心理學有個現象叫做「破窗效應」,就是說,一個房子如果窗戶破了,沒有人去修補,隔不久,其它的窗戶也會莫名其妙的被人打破;一面牆,如果出現一些塗鴉沒有清洗掉, 很快的,牆上就佈滿了亂七八糟,不堪入目的東西。\n\n一個很乾淨的地方,人會不好意思丟垃圾,但是一旦地上有垃圾出現之後,人就會毫不猶疑的拋東西,絲毫不覺羞愧。\n\n這真是很奇怪的現象。\n\n心理學家研究的就是這個「引爆點」,地上究竟要有多髒,人們才會覺得反正這麼髒,再髒一點無所謂,情況究竟要壞到什麼程度,人們才會自暴自棄,讓它爛到底。古人說的:「毋以惡小而為之」, 一點小壞事,覺得沒有什麼關係, 但是開始做了以後,它就改變你的心態, 使你以後敢去作姦犯科。\n\n任何壞事,如果在開始時沒有阻攔掉,形成風氣,改也改不掉,就好像河堤,一個小缺口沒有及時修補, 可以崩壩,造成千百萬倍的損失。現在,由於全球經濟的重新組合,許多地區因為產業生態的改變,區域社群的活力慢慢流失,當人逐漸外流的過程中,一旦超越某個臨界點,就如同市容毀敗的破窗效應一樣,再也沒有內生的力量可以救起該區域的經濟活力..\n\n在期貨市場操作的生涯之中,你是否也潛伏著類似的心理「破窗效應」嗎?\n\n我親自經歷過並看過許多人正是因為無法抵禦心裡的破窗,所以在虧損發生時,就像開始有破窗一樣,如果不同立刻補正,''一旦破窗持續擴大,超越那個臨界點之後,就會產生消極不理的心裡,直到心裡的破窗一去再也不回頭''。\n\n第一:行情不如預期 ,虧損發生時,''你有立即停損嗎? 你有明確的處理方式嗎?''\n\n第二:你在處理虧損的過程中,''能當機立斷 ,積極面對破窗產生的速度嗎?'' 我認為每個人都應該設一個立即停止操作的虧損最低標準,這是瀕臨破窗臨界點之前的最後回頭之處。雖然,有了這樣的檢查,未必可挽回心裡破窗的走勢。但是至少給自己一個機會,平靜的面對現實的困境。\n\n有了這層基本防護措施,自己會更小心謹慎的看待風險,這不僅是財務的風險而已,更是我個人認為一切市場風險的最高結構心理風險。因為,這是一場心智遊戲,如果不能保持自己的清明之心,豈有獲勝之機?\n
EMBA雜誌編輯部 \n所謂領導,歸根究柢就是要改變人們的行為。改變行為有多難?科學研究顯示,平均每十個人中只有一個人能有效改變行為,過去幾十年,儘管醫療科技發展進步顯著,醫學專家表示,導致健康危機的最主要原因卻沒有改變,而且是醫療專家們幾近束手無策的問題,那就是人們的生活型態與習慣難以改變。 \n所謂領導,歸根究柢就是要改變人們的行為。改變行為有多難?科學研究顯示,平均每十個人中只有一個人能有效改變行為,過去幾十年,儘管醫療科技發展進步顯著,醫學專家表示,導致健康危機的最主要原因卻沒有改變,而且是醫療專家們幾近束手無策的問題,那就是人們的生活型態與習慣難以改變。\n\n哈佛大學商學院教授科特(John Kotter)研究許多組織後的心得結論是:「企業的核心問題並不是策略、組織結構、文化或系統,而是難以改變人們的行為。」\n\n快速企業(Fast Company)雜誌最近分析,傳統智慧之見認為,危機是促成變革的強力激勵因子,事實不然,罹患心臟病或動過心臟手術的病人,很少會顯著改變其生活型態。寇特教授的洞察是:「當你能打動人們的心,影響他們的情緒時,最能有效改變他們的行為。」\n\n葛斯納(Lou Gerstner)於一九九○年代領導IBM轉型成功的重要關鍵之一,在於他發現這種情感訴求的重要性,他清楚哪些策略(賣掉一些資產、刪減成本)可以重振IBM,但是他也發現,光憑這些並不夠,他在回憶錄中寫道:「必須把他們從沮喪的僵呆中震醒,提醒他們:不要忘了你們是IBM人哪!」因此,他投入最多時間的工作,不是談買賣及分析財務數字,而是親自到各處和員工接觸、搖醒他們、重新激發他們的熱情。\n\n要影響人們的情感,光告訴他們事實是沒有用的,你必須改變他們看待世界、事物的心智思維模式。例如,把公司當成一個組織、軍團,和把公司當成一個大家庭或社群,在這兩種不同的思維模式下,人們展現的行為也顯著不同。\n\n第二個重要洞察也和傳統智慧之見相背:急劇的、全面的、徹底的變革,其實比小而漸進式的變革,更容易做到且更有效,因為快速顯著的改善是非常有力的激勵因子。減肥是一個好例子,採取緩慢、漸進式減肥的人,多半難以持之以恆並成功。\n\n貝恩顧問公司(Bain & Co.)研究二十一家最近成功進行轉型的公司,發現絕大多數都是採取急劇的變革,並在不到兩年內完成轉型,幾乎所有公司都下猛藥,執行長把大多數管理高層炒魷魚,立竿見影。當然,並非所有企業的情況都適合採取急劇變革,但是,最要掌握的基本原則是:設法在短期內獲致一些顯著勝利,以作為激發動力。\n\n第三個洞察是提供人們所需要的多層面支援,若未能提供各種層面的必要支援,在變革中,人們很容易產生焦慮、挫折、無助感,這是許多變革失敗的主要原因之一。\n\n最後,企業領導者必須擬出一個可以使人們的心智持續回春、持續新學習的事業策略,例如有些公司讓每位員工每星期有一天在其他部門工作(譬如軟體工程師到行銷部門工作),因為持續接觸與學習新東西也有助於改變根深蒂固的行為與思維模式。\n\n文章來源:EMBA雜誌第225期(2005年5月出版)\n\n[img|http://www.emba.com.tw/ShowArticleCon.asp?artid=1083]
作者:謝明玲 出處:天下雜誌 364期 2007/01\n除了努力和運氣,新的一年要實現心願,只要正向思考,就能心想事成。賓州大學心理系教授賽利曼最新提倡的「正向心理學」,將讓「心想事成」這句中國俗諺,真的成真。\n\n\n台灣人愛許願。根據今年初AC尼爾森一項調查結果顯示,亞太地區是僅次於拉丁美洲最愛許新年願望的地區;而台灣人有七七%許下新年心願,其中又有九七%的人表示會遵從並努力實現新年新期許。其實,除了努力和運氣,新的一年要實現心願,只要轉個想法,就能心想事成。\n\n提倡「正向心理學」(positive psychology)的賓州大學心理系教授塞利曼(Martin Seligman)早在一九八八年的研究就曾對美國泳將麥特.畢昂迪(Matt Biondi)做過實驗。實驗是故意請教練對隊上謊稱畢昂迪表現不佳,但畢昂迪不受影響,保持樂觀,當其他隊友表現失常時,他表現反而更出色。這種樂觀的特質,使他在當年奧運前兩項比賽被第二名超前的壓力下,仍拿下接下來的五面金牌。\n\n樂觀的態度還與健康有關。一篇在梅約醫學中心論文集的研究發現,北卡羅萊納大學在一九六○年代評估六九五八位成年人的樂觀程度,然後四十年後,發現最悲觀的一組的死亡率,比最樂觀的一組,高了近四二%。此外,研究還發現正向的態度能啟動身體的免疫系統,甚至能降低血壓、減少焦慮。\n\n儘管在某些情況中,心理學家認為悲觀謹慎的想法能提醒可能的風險,讓人預作準備;但理性而有邏輯的正向思考仍不容忽視。從認知、情緒和行為下手,為自己創造正面的循環和連動,新的一年,就能「想出健康,想出快樂」。\n\n1、情緒面\n\n和信醫院身心科主治醫師吳佳璇發現,有的人不習慣察覺自己的負面情緒,或者文化上要求壓抑,而不懂得偵測自己的負面情緒。\n\n政大心理系副教授楊建銘建議,不只要學會「偵測」到負面情緒,還要能找到發洩出口,例如大叫、大笑,甚至是看喜劇、與人談談等,都有幫助。\n\n2、行為面\n\n正面的行為會刺激正面情緒。楊建銘建議要多做「接觸世界的行為」,走出自己侷限的世界;或多做「滿足需求的行為」:如吃一點甜點、睡一個好覺,這些正面行為都能引發正面情緒和想法。\n\n有的人則會對自己使用「自我暗示」的方法,甚至用錄音的方式,向自己不斷描繪成功的情境。台北市立聯合醫院中興院區精神科主治醫師詹佳真表示,這屬於心理學上「自我實現的預言」:以正面的印象和語彙在腦中挖掘出正面的路徑,不分心去想其他情境,專注投入在練習或準備上,自然也就提高了成功的機率。\n\n3、認知面\n \n詹佳真指出,負面思考的人有三項特徵:第一,覺得自己是失敗者,對自己否定;第二,對別人否定,認為別人對自己的失敗一定幸災樂禍;第三,全面性、整體性的類化,認為這次不成功,將來,或者做其他事也不可能再有改善。\n\n她指出,當負面事件發生時,我們常忽略掉自己已經「理所當然」地詮釋過一次,這種自然而然的詮釋,是負面情緒的主要來源。\n\n「怎樣用能掌握的思考來控制『自動化』的想法,這是重點,」楊建銘也點出。\n\n他建議學會問自己幾個問題:\n\n我是否掉入了全有全無的狀態?(是否全盤否定自己,或者過度推演到未來的情境)\n\n這件事會怎樣嗎?最壞的情況是如何?(事情常不如想像糟糕)\n\n如果朋友遇到同樣的事,我會怎樣安慰他?(抽離出情緒,站在別人的角度看事件)\n\n這件事過了一個星期、一個月,甚至一年之後是如何?\n\n「問問題」的練習不能只在大的負面事件發生的時候才做,而需要從小事情開始,就持續的練習。\n\n吳佳璇會要求她的個案回家做功課,學會分析事件ABC:把前因(antecedent)、行為(behavior)和對應(consequence)寫下來,自己的哪些行為和情緒的來源,想法有什麼道理和邏輯?自己又如何處理?並嘗試釐清這些元素中,內外部的因素各是什麼?避免過度的往內歸因。\n\n詹佳真還會進一步鼓勵個案對自己寫下來的想法做辯論,例如,今天自己沒有得到拔擢,而覺得很挫折,就可以反問自己:升官就代表成功嗎?不升官生活就變得更差嗎?「用哪一種角度詮釋都沒有絕對的對或錯,」她說。「而是你要怎樣的結果,就必須怎樣的改變你的詮釋方式。」\n\n中國俗諺的「心想事成」其實是有西方心理學的依據,有了正向樂觀的心理,一年之始所許下的願望就容易達成。\n
#''如果你不喜歡現在的工作,要麼辭職不幹,要麼就閉嘴不言。''初出茅廬,往往眼高手低,心高氣傲,大事做不了,小事不願做。不要養成挑三揀四的習慣。不要雨天煩打傘,不帶傘又怕淋雨,處處表現出不滿的情緒。記住,不做則已,要做就要做好。 \n#''每個人都有孤獨的時候。要學會忍受孤獨,這樣才會成熟起來。''年輕人嘻嘻哈哈、打打鬧鬧慣了,到了一個陌生的環境,面對形形色色的人和事,一下子不知所措起來,有時連一個可以傾心說話的地方也沒有。這時,千萬別浮躁,學會靜心,學會忍受孤獨。在孤獨中思考,在思考中成熟,在成熟中昇華。不要因為寂寞而亂了方寸,而去做無聊無益的事情,白白浪費了寶貴的時間。 \n#''不要像玻璃那樣脆弱。''有的人眼睛總盯著自己,所以長不高看不遠;總是喜歡怨天尤人,也使別人無比厭煩。沒有苦中苦,哪來甜中甜?不要像玻璃那樣脆弱,而應像水晶一樣透明,太陽一樣輝煌,臘梅一樣堅強。既然睜開眼睛享受風的清涼,就不要埋怨風中細小的沙粒。 \n#''管住自己的嘴巴。不要談論自己,更不要議論別人。''談論自己往往會自大虛偽,在名不副實中失去自己。議論別人往往陷入雞毛蒜皮的是非口舌中糾纏不清。每天下班後和你的那些同事朋友喝酒聊天可不是件好事,因為,這中間往往會把議論同事、朋友當做話題。背後議論人總是不好的,尤其是議論別人的短處,這些會降低你的人格。 \n#''機會從不會“失掉”,你失掉了,自有別人會得到。''不要凡事在天,守株待兔,更不要寄希望于“機會”。機會只不過是相對于充分準備而又善於創造機會的人而言的。也許,你正為失去一個機會而懊悔、埋怨的時候,機會正被你對面那個同樣的“倒楣鬼”給抓住了。沒有機會,就要創造機會,有了機會,就要巧妙地抓住。 \n#''若電話老是不響,你該打出去。''很多時候,電話會給你帶來意想不到的收穫,它不是花瓶,僅僅成為一種擺設。交了新朋友,別忘了老朋友,朋友多了路好走。交際的一大訣竅就是主動。好的人緣好的口碑,往往助你的事業更上一個臺階。 \n#''千萬不要因為自己已經到了結婚年齡而草率結婚。''想結婚,就要找一個能和你心心相印、相輔相攜的伴侶。不要因為放縱和遊戲而戀愛,不要因為戀愛而影響工作和事業,更不要因一樁草率而失敗的婚姻而使人生受阻。感情用事往往會因小失大。 \n#''寫出你一生要做的事情,把單子放在皮夾裡,經常拿出來看。''人生要有目標,要有計劃,要有提醒,要有緊迫感。一個又一個小目標串起來,就成了你一生的大目標。生活富足了,環境改善了,不要忘了皮夾裡那張看似薄薄的單子。
賈伯斯有一句名言:「如果你是個木匠正在打造一個漂亮的五斗櫃,你不會在櫃子後面用三合板,哪怕永遠沒人看到它。」他對工作的熱愛,加上追求完美的性格,到了吹毛求疵的地步,有時令人抓狂。賈伯斯十大令人抓狂事件,整理如下:\n\n1. 賈伯斯在矽谷是出了名的暴君,他面試高階主管,常發生10分鐘不到,就把對方轟出門的狀況,部屬準備多時的報告,如果第一頁的字體不對,或是排版美感有問題,賈伯斯就會暴跳如雷。\n\n2. 賈伯斯甚至有點瘋狂,他長年吃素,因為對世上所有的家具都不滿意,據說有段時間,他家裡只有一張床墊。他甚至不顧交通法規,把汽車的牌照拆掉。有人說,他之所以56歲就辭世,遠低於美國平均76歲的壽命,是因為他堅持用另類療法。\n\n3. 賈伯斯會在週末緊急打電話給Google的工程師,只為了iPhone螢幕上的Google商標,一個黃色字母的顏色濃淡不太對。\n\n4. 1985年初,由於Lisa電腦的失敗,加上麥金塔電腦銷售不佳,在強大壓力下,賈伯斯開始出現一些令員工難以忍受的行為;他經常召集員工開會至凌晨,發出冗長的傳真給每個人;然後,隔天一早7點繼續開會。\n\n5. 2001年,賈伯斯為在台上示範iDVD軟體,提前幾個月準備,不只撰稿自己來,連燒錄軟體裡展示、要燒成家用DVD的影片內容,一般人會用現成的樣板代替,賈伯斯卻自己選這段影片,他就親自向所有公司員工徵求家用錄影帶,花好幾個星期時間,從上千個影帶片段裡找出最適合的一個,絕大部分會被視為「不合格的爛貨」,直到他從中找到「既溫馨、又酷的影片」,才會罷手。\n\n6. Macbook Air剛推出時,有一批產品運轉時會產生雜音,一般台灣工程師會直接拆開檢修,但蘋果不是,他們用核磁共振加X光,先在不破壞電腦的情況下找出問題,才動手開始修理。\n\n7. iPhone裡面的軟板,原色是黃的,台灣塗料廠認為,軟板藏在產品內,不打開看不到,但賈伯斯堅持要改塗黑色,因為比較好看。當時黑色軟板是美國國防部的指定色,不准隨意出口。蘋果為此找了廠商向美國國防部說明,才獲准出口。\n\n8. 在iPod推出的前一晚,賈伯斯要求員工徹夜加班替換耳機插頭,因為他認為:用起來不夠順暢。\n\n9. 蘋果早期設計電腦時,賈伯斯要求工程師設計電路板時,要考慮電路布局好不好看,甚至連機殼內部都要打磨成像藝術品一般光滑。\n\n10. 「每天醒來,我都迫不及待的想要去工作。」賈伯斯說。\n\n最後一點,對大多數的上班族來說,可能才是最瘋狂的吧!
2008-10-28 文/盧智芳 《CHEERS》雜誌\n@@color(#c03):沒有人不期待伯樂跟貴人出現。是什麼決定有人得到青睞,有人卻只留下嘆息?是「禮貌」。它是企業家看人、用人的線索,它在第一時間決定留給對方的關鍵印象。什麼樣的禮貌只有50分,什麼樣的禮貌卻有120分?職場上,如何透過好禮貌種下機會與成功的種子?@@\n\n沒有人否認專業與內涵是職場最重要的通行證,但問題是,往往還來不及亮出來,對方已「砰!」地一聲將大門關上。沒有人不渴望遇見伯樂或貴人,但事實可能不是他不來,而是明明已走到跟前,卻被你自己擋駕。\n\n有一張無形的網,比學歷、能力更早橫跨在機會之前,它決定你是廣結善緣,四處播下好運的種子;或是連舞台出現都渾然不覺,還把它拒之門外。\n\n這是讓人意外的兩個字、記憶中久違的兩個字、有些「八股」的兩個字,但卻是威力驚人、效果神奇無比的兩個字。它是小學教的第一課,卻也是最多老闆抱怨員工不及格的科目-它的名字叫做:「禮貌」。\n\n今年8月,《Cheers》雜誌針對超過4千位上班族進行調查,結果發現「禮貌」高居主管眼中「七年級表現最需加強的部份」第2名(49.0%),僅次於「抗壓性」(58.1%),甚至遠超過「執行力」(21.1%)、「應變能力」(16.5%)與「國際觀/外語能力」(6.7%)。\n\n!!!沒有「不拘小節」這回事\n\n耐人尋味的是,七年級生自己也同意這項觀察。在他們自我評估「有待改進」的特質上,「沒禮貌」同樣排名第2。禮貌的影響力有多大?在關鍵時刻,它造成的結局差異,可能遠超過你的想像。\n\n去年勞委會職訓局調查492家企業,其中33%表示,即使條件再好,都不會把「自以為是狂妄自傲」的求職者列入任用考慮;27%與20%的企業更明白表示,不會錄用「表達遲鈍不知所云」及「不懂禮貌」的人。\n\n美國人力資源顧問公司Vault剛完成今年度的面試禮儀調查,數字也顯示:70%的企業主管只要對方遲到超過15分鐘,就會自動將他貼上「不合格」標籤。同樣高的比例還包括面試中撥打手機、突然離席超過10分鐘等等。\n\n反過來說, 禮貌與成就間的正向關係,則愈發明確。去年底, 美國《財星》雜誌(FORTUNE) 引述佐格比國際公司(Zogby International)對7,590位美國人的統計說,年薪超過10萬美元的高收入者與人爭執或犯錯後,道歉的比率是年薪2萬5千美元者的兩倍。\n\n這不是風格至上、特色當道的年代嗎?為什麼「小節」突然又變得如此重要?\n\n當每個人每天見面的人愈來愈多、平均一人被分配到的時間愈來愈短;當愈來愈多企業家體會用才決策中,「人品」更甚於能力時,禮貌好壞自然成為底定第一印象的要素,是能夠最快「見微知著」,判別人才的線索。 \n\n!!!沒禮貌比沒專業更糟\n\n例如台積電董事長張忠謀在不同場合都談過「收訊力」──傾聽的力量:「常常有人問我成功的原因為何,我想我『收訊』的能力已培養了很多年,」他歸納成功之道時指出。\n\n10年前,張忠謀在交通大學對高階經理人授課時,特別提到他與人對話時進行的「收訊力測驗」:「第一個看我講話時,他會不會打斷我?」張忠謀說:「打斷話的人既不禮貌也對自己不利,因為他打斷我,以為知道我接著要講什麼,可是90%他都猜錯。」\n\n統一企業董事長高清愿是另一個善於從小處識人品的例子。統一企業內部文化非常講究守時,過去擔任董事長的台南幫大老吳修齊在世時,即使90高齡,出席任何場合仍必定準時到場。就算因為突發狀況晚到,也一定會事前通知對方,細心致歉。\n\n以他為表率,包括高清愿、統一超商總經理徐重仁,在企業界都以準時知名。「守時就是人與人相處的一種信用,代表的是言而有信、說話算話,」高清愿曾這麼說,「慣常遲到的人,行事風格也可能較為懶散、馬虎,個人的信用,一定常被人打折。」\n\n正因為可以「由小窺大」,一個人禮貌好,經常比刻意演出的成績更容易讓人記住。\n\n台灣聯想總經理歐明哲今年8月上任後,外界多以「科技界最年輕的總經理」看他。但低調的歐明哲很少對外透露,為了重新塑造台灣聯想的企業形象,他實際上下了不少功夫,從同仁的禮貌著手,正是其中一環。\n\n他讓總機接待徐婕瑜從公司伺服器後台,直接進入總經理電腦看到每天行程,因此訪客一到,門口的LCD螢幕已經出現歡迎字樣,細心的徐婕瑜還會自動更新來客頭銜。這麼做,無非是讓對方從踏入門口第一刻,就出現「你怎麼知道?!」的驚訝,進而重新認識台灣聯想。\n\n反過來說,「禮貌差」透露給人的負面訊息,殺傷力也遠超過「專業不夠」。\n\n曾任新聞主播、目前是電台節目主持人、美食作家的吳恩文自己開設了一家顧問公司,他選人時,禮貌權重甚至排到第一。因為站在老闆的立場,「我可以教你技能,沒辦法教你教養,」吳恩文指出,一句話道破許多企業主共同的心聲。\n\n其實,很多人之所以會誤沾「沒禮貌」的標籤,未必真是人格本質不好,有時是不小心,有時是輕忽,認為「沒有也無所謂」,有時則根本是因為「不知道」。\n\n!!!永遠不會有「下一次」\n\n暢銷書作家吳若權最近到南部一家企業授課,每次到高鐵站接他的都是同一個小夥子,臉色愛理不理、態度冷淡。這反而激起吳若權的好奇,因此總會刻意和他攀談幾句,看看他有什麼反應。\n\n前兩次,吳若權都覺得「碰到釘子」,直到第3次,這個年輕人才突然冒出一句:「吳老師,我覺得你人很好。」\n\n對年輕的世代,吳若權發現他們普遍不習慣主動與人互動、不擅長「察言觀色」,反正「有事你來問我就好」。另一個心理因素則是認為「第1次不熟、不需要」。「但職場上很多事是沒有第2次、第3次的,」吳若權語重心長地說。\n\n台灣大哥大副總經理莊財安也有類似經驗。開車載下屬出去,「他們不管你,上車直接坐上後座,突然間我就變司機了。」或是面談時大剌剌癱在沙發裡、吃飯時用叉子插起麵包就啃,新生代不知道、也不覺得這樣做失禮,受到提醒時還會非常驚訝。\n\n有個故事,莊財安整整記了30年,一直讓他自我惕勵。當年他從台灣師範大學畢業時,校長對所有應屆畢業生說:「有同學寫信給我,請我幫他介紹工作,我看到信就不想幫他了,因為信上寫著『某某某校長敬啟』。哪有人叫別人看信,還得恭恭敬敬?」\n\n從這個故事出發,莊財安分析,建立禮貌得經過3個階段:第1,先「知道」,具備通用禮儀的知識,才不會誤用鬧笑話;再來是「觀察」,注意別人、尤其是前輩如何待人接物;最後才是「練習」,透過生活具體實踐。\n\n只要有心,學會「禮儀」並不難,至少可以做到「不失禮」,但一個人會被認為「有禮」、「好禮」,甚至成為一種個人魅力與人際競爭力,絕對是來自更高的境界。簡單地說,就是5個字:「心中有別人」。\n\n有趣的是,這層含意早默默藏在英文字「禮節:etiquette」的字源由來裡。"etiquette"出自法文,原意是「牌子」。為了保護凡爾賽宮美麗的花園,法國人特別立牌提醒民眾不要隨意破壞。久而久之,本來的「請勿進入」開始擴大內涵,除了指稱「合宜的應對進退」外,更進一步解釋為「不要輕率踐踏人們內心的花園」、「舉止言行讓人感受親切與溫暖」。\n\n!!!頭銜愈高,愈有禮\n\n確實,愈成功的企業家,在禮貌上嚴以律己的程度,反而愈讓人吃驚。\n\n像亞都麗緻集團總裁嚴長壽,他寫紙條交辦部屬工作,從來都用「請您」開頭,平時極少疾言厲色。即使訓斥,語氣都非常和緩。從擔任嚴長壽特助開始,已共事12年的亞都麗緻大飯店營運副總經理范希平由衷說:「非常佩服他的修養。」\n\n說是「修養」,因為嚴長壽待人接物的細節裡,處處可以見到對人性的理解和尊重。\n\n范希平剛當上嚴長壽特助時,與另外兩位助理在辦公室裡接電話,總習慣先說「請問您哪裡找?」先確認來人身分後,再轉接給嚴長壽。\n\n有一天嚴長壽聽到,突然慎重交代:「不要問對方『哪裡找』,不管是誰,都先說我不在。」\n\n「知道你是誰,再告訴你總裁不在,你會怎麼想?」范希平頓時學到一課:就算說話再客氣,多了這個「打量身分地位」的動作,都等於在傷害對方。\n\n長期在嚴長壽身邊耳濡目染,後來甚至因此左右范希平的生涯抉擇。\n\n曾經有位企業家大老想來挖角,約范希平吃飯,整個過程都非常禮遇客氣,卻在最後對方叫司機到車上拿資料時,不經意破口大罵:「你這腦袋裝大便啊!跟你講放在裡面,怎麼會找不到?比豬還笨!」\n\n「要是我為你做事,你罵我不也這樣罵?」這一念讓范希平決定繼續留下,如今這位大老的企業王國已然崩塌,范希平卻在亞都麗緻一路歷練到獨當一面,又何嘗不是另一種「以小窺大」!\n\n在嚴長壽帶領下,禮貌早已成為亞都麗緻的DNA,但他要求的不僅止於「顧客至上」,更是「客人至上」:「即使沒光顧,只要踏進亞都麗緻,就是客人。」即使明知道他只是進來借廁所、吹冷氣,仍然必須以禮相待。\n\n我們經常問:「有禮」跟「虛偽」有什麼不同?答案並不複雜,禮貌的「動機」與「一致性」,就是檢驗的準則。\n\n!!!有禮,貴人自動上門來\n\n大家都知道對大人物要有禮貌,但是面對跟業務不相關、看來不起眼的小人物呢?\n\n真正見過世面的人都知道:「山水有相逢」。今天再微不足道的某人,都有可能在未來某個時刻變成你的「貴人」,扮演「臨門一腳」的角色。\n\n在東方,最傳神的詮釋莫過於兩千多年前,張良為「圯下老人」黃石公撿鞋的故事。若不是張良三番兩次、耐著性子忍受黃石公的無理喝斥為他服務,又怎會贏得青睞,得到《姜太公兵法》,成為漢朝的開國功臣?\n\n在西方,一樣因此出現戲劇性的歷史轉折。19世紀,有一對老夫婦專程到哈佛大學拜訪校長,兩人衣著樸素廉價,祕書馬上判定不可能帶給哈佛什麼「好處」,當下冷冷回答:「校長很忙。」\n\n「我們可以等,」老婦人回答。幾小時過後,校長總算不耐煩地出現。老婦人說:「我們的兒子曾在哈佛讀過一年,很喜歡哈佛。但他去年因為意外過世,因此我們想在校園中為他留下紀念。我們想捐棟大樓給哈佛。」\n\n「你們不知道建棟大樓要多少錢嗎?我們學校的建築物超過750萬美元,」校長輕蔑地說。同時心想,這樣應該可以把兩人打發走了吧?\n\n「只要這麼多?那我們為什麼不乾脆自己蓋棟學校?」只見老婦人轉頭對老先生說。老先生正是當時著名的鐵路大亨史丹福,而後來這個學校,就是孕育無數人才、成為矽谷創新引擎的史丹福大學(Stanford University)。\n\n誰說貴人、機會不來敲門?當你這樣抱怨的時候,不妨想想,是不是哪天因為自己的粗魯無禮,不知不覺把他們趕走? \n\n!!!低標要比別人高\n\n在美國銷售超過百萬冊、掀起討論風潮的《優秀是教出來的》(The Essential 55)一書作者隆.克拉克(Ron Clark),是唯一被美國總統接見過3次的小學老師。他最為人稱道的,莫過於不論本來成績、操行如何,他都能讓學生脫胎換骨,從問題小孩變成優等生。\n\n克拉克的55條規則中,第1條是「遇到人要主動稱呼」; 第2條是「當別人說話,看著他的眼睛」;第3條是「如果別人有出色表現,不要吝嗇鼓掌恭喜他,應該持續3秒,角度要剛好」......。瞧,這些原則放在職場上,不是一樣適用?\n\n禮貌的極致回歸到的是做人態度與價值觀,「高標」自然沒有盡頭,不過,一般人至少可以自我要求:「『低標』要比別人高,」吳恩文認為。\n\n「很多生意是來自於信任,很多信任是來自於尊重,」吳恩文說。為什麼有些人就是人緣好、運勢佳?說穿了,無非是透過這些點點滴滴。\n\n用心當個「好禮人」,讓身邊多點貼心的感激,少點「你那什麼態度啊!」的抱怨,受用無窮的絕不是別人,最終還是你自己!\n\n
作者:徐慎之 发布日期:2008-9-9 查看次数: 次\n\n 显然,一个有知识、有经验的职业赌徒已不再是赌徒,而是合格的投资者。因为,他赢钱的秘诀和运气一点关系都没有。他不仅知道所玩那个游戏的胜负几率,而且只会在胜负天平必然倾向于他时才下注。\n\n 曾经看到有股评人士如是预测行情:“明天上涨的概率和下跌的概率分别是××%和××%……”。\n \n于是,有人大骂:这不等于没说吗?\n\n 事实上,我倒很欣赏这种预测方式,这恰恰是一种有自知自明的表现。因为,每天都能准确预测出指数涨跌的,那是神,而不是人。如果一定要让我来预测,我也只能是根据现有的知识和信息,判断未来涨跌的概率,而不是绝对的结果。\n\n 很多人没有自知自明,每天都在看涨、看跌,每天都在据此下注,结果必然因频频看错而遭致惨败。这种人受“运气之神”摆布,是给别人送钱的傻瓜,很少能成为赢家。他们所获回报也只是玩游戏的刺激。当然,他们中间也不乏高智商、高学历、高水平的人,自负和冲动使这些人变得和赌徒无异。\n\n 界定赌博和投资的关键并不在于你是玩骰子,还是玩股票,也不在于地点是在大西洋赌城,还是证券市场。正如彼得·林奇所说,投资只不过是一种能够想方设法提高胜算的赌博而已。无论是大盘蓝筹股,还是小盘成长股,无论是债券、基金,还是期货、期权,无论是房地产、实业,还是梭哈、赌马、六合彩,参与对象并不是投资与赌博的分界线,关键在于参与者的技巧、投入的程度以及事业心。\n\n 一轮熊市过后,人人视股票为赌博,把它当毒品一样排斥;一轮牛市过后,股票又会再次被大众认可为一种投资。如此周而复始,大众所得出的看法却次次都是错误的。因为,熊市过后的市场严重低估(比如股指1000点时),风险很小,买股票应该是谨慎的投资而不是赌博;相反,牛市过后的市场已经过度高估(比如股指6000点时),风险很大,买股票恰恰更像是在赌博。\n\n 其实,利率、汇率及通货膨胀率的波动甚至会使持有货币、债券这样貌似安全的行为成为变相赌博。\n\n 相反,一个老练的赌马者如果能严格遵守一定的系统方法进行下注,那么赌马也能够为他提供一个相对安全的长期收益,这种行为对他来说和持有共同基金或者通用电气的股票并没有什么分别。\n\n 在赌场中,不确定的结果就意味着赌博;靠出老千获得确定性结果的,则不是赌博,是诈骗;靠知识和经验得到确定性结果的,也不是赌博,而是投资、营生。\n\n 比如,债券之王比尔·格罗斯在进入华尔街之前,曾带着200美金和满脑子的数字在拉斯维加斯昏天黑地赌了4个月,最终他带着从赌桌上赢到的1万美金离开,这笔钱足以让他读完MBA。这段经历同时又让他学到了大学里未教过的东西:怎样投资。\n\n 显然,一个有知识、有经验的职业赌徒已不再是赌徒,而是合格的投资者。因为,他赢钱的秘诀和运气一点关系都没有。与投资者一样,职业赌徒并非单纯受利益驱动才进场下注,他们有一个具有正期望值盈利率的博弈计划或操作系统——就像投资大师一样。这个系统的一部分就足以让他立于不败之地。他不仅有丰富的专业知识,知道所玩那个游戏的胜负几率,而且有强大的自控能力,只会在胜负天平必然倾向于他时才下注。\n\n 职业赌徒不会“怀着获得巨大利益的希望冒大险”,他会不断重复小额投入。因此,从数学上来看,从长期来看,他的收益必然大于损失。当然,50%的概率是没有意义的,尤其是扣除了交易成本之后。55%对45%,就不一样了。因为你的平均利润期望值已经上升到了0.1——你投入的每一元钱都有望变为 1.1元。\n\n 索罗斯的标准是:成功概率超过70%就下注,而且是动用高杠杆的。\n\n 价值投资者则显得更为保守,经历过1929年美国股崩的格雷厄姆“只买那些价格是真实价值的2/3或更低的中等企业股票”,而且他会购买数十只这类股票,以期平均利润值成为正数。\n\n “成功跨过横杆的秘诀是只选择那些较低的横杆”。巴菲特把自己的理念概括为“只投资高概念事件”:回报确定性接近国库券的投资。几乎所有的工作都是在投资之前完成的,回避不确定性就是在回避风险。巴菲特说,“你在买的时候就盈利了”。\n\n 由此可见,赌博与投资的本质区别在于结果的确定性。确定性越高,就越接近于投资;确定性越低,就越接近于赌博。\n\n 杰西·利弗莫尔说过一句发人深省的话:''赌博和投机的区别在于前者对市场的波动押注,后者则等待市场不可避免的升和跌,在市场中赌博是迟早要破产的''。\n\n 然而,大多数投资者都有一个误区,就是将赢钱的经历等同于赢钱的能力。当他们靠运气获得成功时,就会把偶然当做必然,把赌博当做投资。\n
赌博和投机的区别\n1、在于前者对市场的波动压注;\n2、后者则等待市场不可避免的升和跌;\n 自从有了股票市场,人类就多了一个无形而残酷的争夺利益的战场,各种关于如何在这个战场作战的理论也就应运而生,正统的如学院派、基本分析派和技术分析派,边缘的如混沌理论、星象理论、周易八卦。如此等等,不一而足。\n 我尊重并也曾沉湎于这些理论,但作为一个市场实战交易者,现在我更看重对市场语言本身的解读与感悟。\n 为什么那么多人沉湎于股市?难道全部是受金钱的诱惑?不!潜意识地陶醉于人类“赌性”本能也是很多人滞留于市场的一个重要原因。\n 追求刺激、惧怕无聊、盲目自信、屡败屡战等“赌性”特征是人性使然,而股市几乎天天波动的“日间杂波”确也提供了很多貌似可以“行动”可以“赢利”的机会,于是,受制于本能的赌性,很多交易人只是将自己的精力和热忱放在希望能够迅速获利的侥幸心理上,对真正冷静地观察市场,对如何建立能够确保自己稳定赢利的投资风格、投资策略、投资心理反而关注不多,并往往频繁地情绪性地交易而很难耐心地等待“进退有据”的入场和出场时机。\n 难怪交易大师威廉姆斯说:“我对交易的艺术的兴趣,远远超过对最近一两笔交易本身的兴趣”。\n 华尔街的大炒家杰西·利物莫说过一句发人深省的话:“赌博和投机的区别在于前者对市场的波动压注,后者则等待市场不可避免的升和跌,在股市赌博是迟早要破产的”。\n 多年前,我就已经把这句话贴在自己用于交易的电脑上!\n 在股票市场,我们碰到最多的问题是诸如“能涨到哪里去”或“能跌到哪里去”此类的疑问,这些问题或许是不经意地提出的谈资,或许是认真地求索的课题,却常常在实实在在地强化着我们的一些思维,即:市场的未来到底会如何?如何预测或猜测的未来?\n现实生活中乐此不疲地探询这类问题的人也如过江之鲫,我们就常常听到有人为某次对市场正确的猜测而引以为豪。\n 这是非常正常也非常可以理解的思维,为了探询和猜测市场未来趋向的“奥秘”,我自己也不时对市场的未来进行一些猜测,我自己也曾研习过从“易经八卦、紫微斗数”到“混沌理论、神经网络”、从“星相假说和周期假说”到“波浪理论和江恩理论”乃至正统的“宏观经济预测”等各种各样的千奇百怪的关于预测的知识,当然,这些知识对猜测市场的走向多少都有帮助和教益.。\n 但作为一个职业炒手,我早已不把最主要的精力放在对这类问题的探询上。\n 我认为,职业炒手更应该做的工作是“识别不同的市场态势,根据不同的市场态势制订不同的交易计划,并以严格的纪律来执行交易计划”。\n 因为,且不去讨论人类是否有能力精确预测未来这一哲学命题(道氏理论就认为“日间杂波”是不可预测的),单就“风险管理、心理控制”等这些成功投资的重要因素而言,后一种思维方法会使我们对市场和交易考虑得更为周全。\n 而从我自己的交易实践来看,若根据前一种思路进行交易,投资成绩可能起伏波动很大,而后一种思维方法所指导下的交易则能够使我持续稳定地赚钱。\n 我常常告戒自己,一个职业炒手,在市场好的时候一定要勇猛果断,在市场不好的时候就一定要谨慎小心,鲁莽和胆怯都不应该是我的性格。\n 预测未来是人类千百年来的梦想,预测市场是投资人的自然欲求,掌握一定的分析方法和技巧、具有一定市场直觉和感受后,我们是能够一定程度上预测市场趋向。\n 但是,就我个人的市场经验来看,要持续稳定地赚钱的话,还是要更多地讲究“在不同的环境下做适当的事情”,换句话说,“识别不同的市场态势,根据不同的市场态势制订不同的交易计划,并以严格的纪律来执行交易计划”对职业炒手而言是一件比预测市场重要得多的工作。\n 正确的投资方法可以有很多很多,但正确的思维方法却应该基本一致。很多投资人,把太多的时间耗费在前者,对更本质的后者却所思甚少!\n 我见到过很多成功的投资人,他们尽管风格各异,但有一点却是共同的,那就是,他们都具备“每逢大事有静气”和“进退有据”的心理特质。(能进能出)或许,在股票市场成功,与在别的领域取得成功相比,有着不同的成功哲学。我们该形成自己什么样的投资哲学呢?
在当今股市,投机被人误解为赌博,与赌博相提并论,这是个错误的观点,或者说他根本不明白什么是投机,什么是赌博。投机,从字面上解释,投是瞄准的意思,机,当然是机会,赚钱的机会,那合起来就是瞄准赚钱的机会的意思,这有什么不好呢?赌博,就象抛枚硬币,你猜它是正面还是反面,如此而矣,胜负都可能是50%的机率。在股市中投机与赌博究竟有何区别呢?\n\n如果一个股民,仅仅依赖盘面迹象,天天快进快出地赚取一两个点的利润的炒作方法,就是赌博,因为股价的短期波动极为频繁,也会受到许多偶然因素的影响,没有人能准确无误预测股价的短期波动,那种试图利用短线的快速波动而获利的人,其实是赌客。赌客需要运气与天赋,也许你一、二次或几次蒙对了股价的短期波动,而获得了几个点的利润,但你千万不要以为,你真的是神,能预测股价的短期波动,不定那一天,你就会被市场逮个正着,而不仅把以前赚得的几个点的利润全部吐回去,还把你的本金亏掉一大块。\n\n而投机,则是要综合地分析股价的中长期变化趋势,分析股市供求关系的变化,根据市场价格的中长期变化趋势,进行顺势交易的操作。投机主要依赖的是你的知识与技巧。真正的投机客,是不会在股市中天天买进与卖出的,他们在多头市场中就是持有仓位,直到多头趋势结束,在空头市场中,他们就会持空仓或一直持币等到空头市场结束。杰西。李莫佛,是个天才的投机家,也是个天才的赌徒。论在股市中对赌,恐怕没有人能超过他,可是他却说:“我之所以赚大钱,从来跟我的思想无关,有关的是我稳如泰山的功夫,明白吗?我稳坐不动。看对走势没什么了不起。在多头市场你总能找到很多早就看涨的人,在能市很早就看跌的人。我认识很多看盘高手,他们也总是在最佳位买股票,但是,他们却没真正赚到钱。看对市场而且紧握寸头不动的人难得一见。”其实,这真是最难的事情。\n\n赌博,是毁灭股民最快的工具,而投机,则是获取大利的人所必备的。(投资则是长期持有公司股票,通过上市公司盈利分红而获得回报,这个,恐怕在现在的中国股市,没有那个能为赚取那点可怜的利润而进入股市)必需明确说明的是,你投机持仓或持币不动,必须是对股价中长趋势认识明确的基础上
''出來混總是要還的''\n\n股市重挫,就連縱橫股市三十年的大戶也認栽。八月五日、八日連續兩天長黑,讓統一證券前總裁、也是股市名嘴杜總輝及其關係人發生台灣期貨史上最大違約案,這堂「六億元的一堂課」,投資者可從中學到什麼?\n《今周刊/劉俞青 2011/09/21》\n\n■統一證券前總裁慘賠六億元的教訓\n\n試想,如果一條危險的小徑連走七年,每次都平安度過,一點事都沒有,會不會讓你因此卸下心防?但悲劇往往就在撤下心防的那一刻發生。\n\n八月以來的這波股災,讓許多投資人受傷慘重,就連在股市翻滾三十年的老手也摔跟頭。\n\n■股市好手 帶領統一證殺進台灣前五大\n\n八月中旬,台灣期貨市場爆發有史以來最嚴重的大戶違約交割事件,這位讓市場人士跌破眼鏡的違約大戶,就是股市老手、前統一證券總裁杜總輝。\n\n只要股市資歷超過十年以上的投資人,幾乎都耳聞過杜總輝的名字。一九九○年代,他曾帶領統一證一路殺進台灣前五大券商,寫下美好的時光,也因此受到統一集團大家長高清愿的重用,將他聘為統一證的總裁。後來他還跳槽到建弘投信擔任董事長、第一金的官股董事;之後雖然退下來,但自己成立富林投顧,在代操界也頗有斬獲,一度還上電視成為股市名嘴。\n\n但這樣資歷豐富的老手,竟然也在這次股災中滅頂。據悉八月五日,大盤一天狂瀉四六四點,當天已經重創杜總輝的老本,三億本金賠光還不夠,還要倒貼數千萬元。\n但股市殺紅了眼,也讓「老杜」誤判情勢,當天他不僅沒有停損平倉,還決定再加碼五千萬元新部位;沒想到下個交易日八月八日,又是一根三百點的黑棒,杜總輝因此大賠二億八千萬元。如果加上原本本金約三億元,等於在這次股災中賠盡五.八億元,兩根長黑棒,恐怕就此終結他的投資生涯。\n\n根據了解,三天后的八月十一日,已經確定有兩家期貨商同時向主管機關提報違約紀錄,分別是凱基期貨與元富期貨,金額分別是一.○七億元與一.三億元,但提報的紀錄中似乎沒有出現「杜總輝」的帳戶,而分別是兩位杜姓投資人的名字。根據主管機關私下表示,應該都是與杜總輝極為密切的關係人。\n\n■「全壓」心態 斷送砍倉停損的最後機會\n\n事實上,這波股市急殺,受重傷的當然不只杜總輝一人。據了解,近期共提報五十六個帳戶違約,其中還有股市浮沉多年的林姓金主等,也都是最近期貨市場的違約戶,只是金額沒有杜總輝龐大、知名度不若杜來得高,因此相對沒有受到外界注意。\n\n但這次會讓杜總輝在兩個交易日內,賠盡本金還不夠,還要掏錢倒貼的投資工具,其實就是「台指選擇權」。台指選擇權是這幾年,在寶來證券的積極造勢下,成為台灣股市廣受投資人青睞的工具。\n\n以這次杜總輝的操作方式為例,其實就是賣一個買權(call)同時賣一個賣權(put)的「賣出勒式交易」,這個方式,就是等於賭「只要在一段時間內,大盤指數在賣出買權和賣出賣權的指數區間內震盪,投資人就可以安穩賺取權利金」。\n\n但換言之,一旦指數突然大漲或大跌,跳出這個區間之外,如果沒有立即平倉,或建立期貨部位避險,投資人就會有數十倍甚至數百倍的虧損。\n\n不但如此,杜總輝為了賺取更多的權利金,還去交易遠月分的選擇權,雖然時間價值較高,但卻面臨流動性不足的風險,以致事件發生後,連期貨商都難以砍倉停損。\n因此,事後市場人士指稱,當八月五日大盤大跌四百多點之後,儘管已經重傷,但如果當天杜總輝忍痛平倉出場,還不至於發生重大違約。\n\n但人性也在此刻面臨最殘酷的考驗,賭桌上的輸家,永遠想要在最後一把「全壓」的心態,讓杜總輝誤判情勢;他不僅未平倉,還加碼新部位,才會於隔天再一次殺盤中,被狠狠地「請出」市場。\n\n嚴格說來,台指選擇權並不能算是所有期貨相關商品中,風險指數非常高的投資工具;但一般講解期貨的教科書上,仍會要求投資人應該在買進一口時,準備多口資金的方式投資,例如三口到九口現金,以隨時提防不測。但這次杜總輝顯然沒有嚴守這項準則,才會如此重傷。\n\n根據熟悉杜總輝操作模式的資深期貨人士表示,最近七年來,即使在○八年的金融海嘯時,「老杜幾乎都沒有錯過,手氣很順。」也就是每次的交易,至少都是小賺出場。但連走七年的險徑沒有出事,就能保證下一次也贏?還是因為連續七年的勝利,才讓杜總輝輕忽了風險的存在,因而種下這次慘賠的結果?答案恐怕只有他自己知道。\n\n但也許就是這幾年手風很順,收穫頗豐,因此杜總輝的財力一點都不差。他在台北市敦化南路二段的凌雲通商大樓樓上,擁有一整層三百多坪的商辦樓層,市價將近三億元;但這筆房產名下已設定銀行貸款,是否已動支,還須杜總輝自己說分明。此外,在台北市青田街的巷子裡,他還有一戶八十多坪的住宅,雖是二十年的老房子,但附近環境清幽,以目前市價估算,至少也有六千萬元的行情,並非毫無還款能力。\n\n只是,如果杜總輝的違約金額都不在自己名下,作為違約苦主的期貨商縱使想藉由法律求償,也未必能有明確的結果。\n\n■拚賭個性 曾遭「內線交易」罪名起訴\n\n但杜總輝如今落得如此下場,很多他的老友聽聞,除了替他嘆息,卻也坦承「不意外」。\n\n事實上,一路走來,杜總輝在股市上的一席之地,全是靠他敢拚敢賭的個性衝出來的。他是統一證的開國元老,當時為剛開張的統一證很快衝出市占率,擠進台灣前五大券商,功勞簿上的確記上一筆;高清愿因此同意他為自己掛上「總裁」的稱號,這是統一集團內部除了高清愿、林蒼生之外的第三位「總裁」,可見高清愿當時對他的重視。但很快地,他的作風也在集團內部惹來兩極評價。\n\n最有名的,當屬九四年,統一集團的金雞母統一超剛要掛牌上市,杜總輝聞之立刻利用統一證自營部大力買進擁有不少統一超的統一公司股票,不到一個月獲利近億元,在當時普遍各家券商自營部部位都不高的年代,已經是相當驚人的獲利數字,但也因此被以內線交易起訴,雖然最後判決無罪,卻已為當時統一超的上市案帶來波折,讓高清愿頗為頭痛。\n\n■能否再起 看如何向被違約期貨商交代\n\n其後,杜總輝陸續又在統一集團內部引發不少人事上的爭議,例如他引進許多「自己人」任居要職,因此讓當時統一證副總王貞海、高樹煌等大將出走,最後,高清愿痛定思痛,才在一九九七年,將杜總輝請出統一集團。\n\n杜總輝離開統一證之後,又陸續任職建弘投信、第一金,但時間都不長;而後他自己成立富林投顧,從事代操業務,但代操在台灣始終伸展不開,最後他連富林投顧都賣掉。\n\n隨著年歲漸長,年逾六十之後,杜總輝可說已經淡出投資界;據了解,現在只剩下設籍在自己青田街住家的「聯翔投資」,每天幾乎只有自己和弟弟杜貴雄兩人一起操盤。\n\n這一次,杜總輝算是栽了,這一跤,摔得很重,能不能重新爬起來?外界不敢樂觀看待,恐怕還須看他後續如何向被違約的期貨商交代,才能決定。\n\n台指選擇權\n\n台指選擇權其實是一種賭注大盤指數的選擇權工具。當大盤陷入盤整時,投資人可以藉由同時站在賣方,賣一個買權與賣權,來鎖住指數區間,確保獲利。但一旦大盤出現跳空急殺時,就有可能導致極大虧損,這次的事件即是在此前提下發生。\n\n■兩大苦主 元富期貨與凱基期貨受累最深\n\n台灣期貨史上爆發最重大違約事件,被賴帳不還的兩位苦主——元富期貨與凱基期貨已是苦不堪言;但更慘的是,台灣的《期貨商管理規則條例》今年初剛修法完畢,新的管理規則不再要求期貨商提列違約損失準備。這項改變,將直接影響被違約的期貨商當期損益,形同雪上加霜。\n\n根據原來的《期貨商管理規則條例》第16條規定,期貨經紀商每個月必須從營收中提撥2%作為「違約損失準備」,以預防類似杜總輝這種突發的重大違約事件,影響期貨商的獲利。\n\n但這項風險控管的規定,卻在今年1月16日修法中,完全被刪除。根據金管會證期局局長李啟賢表示,期貨商的風險控管有許多環節,提存準備只是其中一環,最重要的,還是期貨商自己隨時管控,像這次事件,就是期貨商沒有急踩煞車導致。但取消提存準備,讓這次的違約金額,將完全展現在該期貨商的當期損益上,毫無緩衝空間,也是不爭的事實。\n\n事實上,期貨本屬高風險產業,應該有比股票現貨市場更高的風險機制,儘管這次事件後,期貨交易所表示將督導期貨商加強風險管控,而且近期內已經兩次提高保證金的金額,但期貨商的「自律」,恐怕才是真正的釜底抽薪之道,例如杜總輝在前一個交易日慘賠之後,還能再買進新的部位,是否期貨商沒有善盡風控把關的責任?恐怕才是這次「6億元的一堂課」真正的意義所在。
* 2008-11-25\n* 【文/祝康偉《cheers》】\n!不景氣,人一害羞,前途就受限!所以,試著跳出你的框架,面對個性中的害羞因子吧!你將發現一旦找出對應之道,凸顯獨特能力後,害羞,竟也可以成為一種個人魅力。\n面對經濟寒冬,企業為了逆勢求生,莫不忙著調整組織,背水一戰。\n\n因此,職場的角色,都遭逢「不能不變」的空前壓力。\n\n除了帶兵打仗的中高階主管,對鬥志與應變能力的要求,更甚以往,位居第一線的業務員,當然更得想盡辦法衝鋒陷陣,把不可能變成可能。甚至,連後勤的會計人員,都不再只埋首帳款、單據,關鍵時刻還得跳上火線,給予前線最迅速的支援。\n\n此時,要逼出潛力、強壯自己,離開過往的「舒適區」,似乎是最有效的方法,但在習慣使然下,性格往往頑強地橫阻在前,讓人瞻前顧後。\n\n尤其,被看作退縮的「害羞」個性,在需要躍居檯面領導、跨部門溝通或與顧客貼身肉搏銷售時,常是許多人心中難以言說、裹足不前的一抹陰影。\n\n但有趣的是,這抹掙扎難解的陰影,看似十分嚴重,卻是人性皆有的普世經驗。\n\n因為根據美國印地安那大學東南分校害羞研究中心(The Shyness Research Institute at Indiana University Southeast)調查,40%的人承認自己天生害羞,60%的人則有過害羞經驗,而且害羞不分國籍,只有輕重之分,排列依序是日本人與台灣人最害羞,英國和美國人居間,以色列人則最不害羞。\n\n該中心研究害羞超過20年的教授貝納多‧卡爾杜奇(Bernardo Carducci)指出:「害羞並不是一種病,也不是性格上缺陷,而該被當作一個中性的字眼。」\n\n因為個性害羞,並不等於沒有衝勁跟企圖,只是他們不習慣鋒芒外顯、引人注目。更進一步分析,害羞這項特質往往同時伴隨其他獨特能力,只要善加利用,一樣能出類拔萃,打破角色扮演的框架,建立屬於自己的領導魅力。\n\n抓重點,讓客戶甘心多付4%\n\n比方說:我很害羞,我能當業務嗎?\n\n43歲當上住商不動產總經理,陳錫琮用自己的故事回答:「絕對可以。」\n\n退伍後,從未離開過宜蘭的陳錫琮帶著「沒參加過社團,回家只會幫忙種田」的經歷和一副「憨膽」,隻身來到台北,從信義房屋的經紀人做起。單純加上不諳世面,讓他很快就面臨性格的瓶頸,上班第3天,就已強烈萌生退意。 \n\n當時一位比他活潑又晚他兩個星期進來,業績卻能更耀眼的「學弟」,在半年後突然遞上辭呈,陳錫琮震驚之餘,捫心自問:「他做得這麼好卻要說再見,那我不是應該更早離開?」沒想到「學弟」反過來勸他:「我不是做不來,只是想實踐自己的理想。反倒是你,無論個性與態度都很適合信義房屋的文化,你待在這個產業,一定會有出頭的一天!」 這一席話點醒陳錫琮,他開始思索,究竟自己的優勢是什麼,「活潑外向」一定是業務成功的要素嗎?雖無搶眼外表與機伶反應,但是他發現自己邏輯清晰、條理分明,而且能站在顧客角度思考,應該發展出一套自己的說服技巧。\n\n他觀察到許多人因安全考量,願意把房子交給仲介賣,但另外一群人卻寧願承擔風險也要自己賣,關鍵在於他們跨越不了4%仲介費的心理障礙。\n\n抓到這個「重點」,陳錫琮知道憑哈啦套交情毫不管用,必須真的說出點道理,讓他們相信花這4%,實在是「物超所值」,才可能打開心房。\n\n所以,他先「勤能補拙」地靠拜訪敲開大門,等對方願意坐下來談,陳錫琮善用邏輯分析的優勢就派上用場。\n\n他會站在屋主立場,設想自售可能會遇到的問題,例如,得犧牲假日留守,無法掌控銷售速度,缺乏客源與行銷技巧,工資、行銷與時間花費也是筆可觀的潛在成本。\n\n當對方認同他的觀點,他便會逐一凸顯多花4%仲介費的價值,包括有龐大的客源,行銷子彈充沛,較有安全保障,更重要的是,不僅賣得更快,憑著專業的出價技巧,還能幫屋主賣到較佳的價錢,讓他賺得更多。\n\n這一番說法,加上誠懇老實的態度,讓猶疑的陳錫琮開始跨出步伐,嘗到業績長紅的甜美果實。「真正替對方著想,幫他想出賺錢之道,常比一陣熱絡後,讓人看破不過想做生意的手腳,來得有效與長久,」陳錫琮強調。\n\n幾乎不應酬的他,因為這樣的功力,讓他從業務轉任管理職,一路晉升到信義房屋的人力資源部協理,更受董事長周俊吉的信賴,將他推薦給策略聯盟的夥伴,43歲就當上總經理,登上生涯高峰。 \n\n更謙虛,反而人人愛\n\n被稱「時尚八爪女」,服務過卡地亞(Cartier)、萬寶龍(MONTBLANC)、蒂芙尼(TIFFANY)等國際品牌,在時尚公關界赫赫有名的意傑品牌行銷總經理詹麗樺是另一個例子。根據台灣蒂芙尼行銷經理龍怡君多年的觀察,詹麗樺不僅裝扮低調、態度謙和,還是客戶眼中百分之百「真心交陪」的老朋友。\n\n若說「真心交陪」是詹麗樺的特色,還不如說是害羞使然的「人際策略」。\n\n在公關界創業,置身眾多公關高手之中,詹麗樺常覺得自己「不會說話,不夠幽默,也不知道如何帶動氣氛。」這或許也跟她台灣大學政治學系高材生的學歷有關,她坦白地說:「我並不是上不了檯面,而是太過要求完美,若沒有最好的表現,就不敢拋頭露面,說明白點就是,我怕出醜,我很害羞!」\n\n為了順應個性,又能兼顧事業,詹麗樺不走「花蝴蝶」路線,而以「鴨子划水」姿態,在公關圈裡努力經營綿密的人脈。\n\n既然對社交場合散發名片感到羞澀,詹麗樺就把多年公關經驗化成文字,以出版書籍方式介紹自己,如此,一方面可以與年輕世代分享,一方面又能凸顯公關專業,以「深度」吸引潛在客戶。\n\n此外,她還特別鍾愛極具人情味的讀書會,像以中小企業負責人為主、已有60個會員的「美好生活會」,她就是創始人之一,明年還將從和泰興業董事長蘇一仲手中接下執行長一職。\n\n正因為商業氣息極淡,加上樂於與不同領域的朋友深交,又能提出出人意表的好創意,因此她蓄積了一群遍布各行各業、相交20年以上的老朋友。詹麗樺的獨特作風,不僅讓客戶死忠,像萬寶龍在她創業10年間就合作了9年;甚至有些品牌出走一、兩年,試了幾家公司後,仍選擇回過頭來再度與她合作。\n\n同理心與細節,搏得信任\n\n事實上,古今中外很多卓越領導人都有「個性內向、不善社交」的一面。但透過轉化,原來的劣勢在管理上反而變為強項與個人特色。\n\n卡爾杜奇教授發現,害羞的人自我要求較高,常常限制了他們展現自己的時機,在會議上鮮少發言的他們,容易換來能力較差的印象,「說來委屈,他們需要的不過是較長的『熱機』時間罷了。」如何不大肆張揚,又能技巧性地凸顯自我特色,抓住緊要關頭上場表現?關鍵在於一套「知己知彼」的自我經營策略。 \n\n身為香港商愛馬仕(HERMES)太平洋鐘錶台灣分公司總經理,李文嬌靠的是從同理心出發的激勵能力,讓團隊願意真心付出,屢屢刷新亞太地區銷售紀錄,因而多次在HERMES集團全球大會被當作範本讚揚。\n\n「我知道害羞的人,十分在乎老闆的肯定,相對也比較忠誠,所以,為了鼓勵他們,在公開的場合,對業績的表現,我一定會強調是『我們』這個團隊所創造的,而非『我』個人的功勞,」李文嬌感性地說。另外,香港商御木本真珠寶(MIKIMOTO)台北分公司副總經理周美娟則是專擅在細節的掌握。「我覺得害羞的人,自尊心都很強,因為怕被別人傷害,所以,總要把事情做到完美,讓別人挑不出毛病,」周美娟描述自己性格說。因此,一改日本人對台灣人做事輕率的印象,她對待珍珠的認真精神,標準比日本還嚴格。\n\n譬如,在接待上,她要求員工在客人踏進門時,招呼時要有嘴角上揚,三分的笑意,當目光相對時,則報以五分的笑容。個人身上的配飾,盡量簡單,以免搶了客人風采。另外,像是不能畫濃妝,抽菸、吃完飯後一定刷牙,都是為了保持親切感與乾淨的氣息。周美娟不僅對小地方要求一絲不苟,對自己的穩定性更是在乎,當年離開唱片公司企劃一職,從MIKIMOTO店員做起,一待就待了17年,成為亞太地區資歷最深的高階主管。\n\n正因為既細心又忠誠,讓受「龜毛」文化薰陶的日本老闆,也不由自主地送她一句:「佩服!」\n\n不景氣時,在管理上更得求效率,外顯型的老闆雖然節奏明快,但快人快語有時衝過頭,會對組織造成傷害,反而是「熱機較慢」的內顯型,比較能夠體恤下屬,面面俱到。\n\n以柔克剛,培養帶人的廣度\n\n台大醫院精神科專科醫師王浩威分析,害羞的人,比較容易受傷,所以,在職場歷練的過程,經驗的獲得,都是從無數傷口中鍛鍊而來。因此,當他們身居管理職時,會比一路順遂的人多了敏感度,講話時多半會留餘地,不會以聲勢逼人,即使出手也會顧慮輕重,以避免傷人自尊。 \n\n若對照台灣微軟前後任總經理黃存義與蔡恩全,就可看出其中有趣的差別。\n\n黃存義是狂放不羈,喜歡開跑車的「硬漢」;蔡恩全則是行事低調,看似以和為貴,但有所堅持的「書生」。\n\n黃存義的外顯性格,讓他有大老闆的魅力,但在領導上卻也比較直接,譬如,當員工的簡報表現不佳,他會直言:「請你不要低估台下觀眾的智慧。」若報告得好,他便會改口:「這是我為什麼請你來的原因!」\n\n但換作蔡恩全,即使下屬的表現不如預期,他多半婉轉地勸告,面對衝突盡量做到有禮貌且不傷人。他的貼心更表現在每年的績效考核上,為了「符合現實,又要讓對方滿意」,他總是像寫作文一樣,兩張表格寫滿了他的觀察與建議,讓收到的人既感動又受教。\n\n蔡恩全有一個擷自孔孟名言的座右銘:「君子不器;得道者多助。」正是破除害羞者常有「害怕衝突」與「不求表現」缺點的處世哲學。\n\n所謂「君子不器」,指的是君子不像器皿一樣,只有一種用途,而在於你如何開放心胸接觸不同事物,願意和不同環境接觸。而「得道者多助」,「道」是思考、溝通、品格3種能力,當你得「道」,又能「君子不器」,很自然地在人生過程中將比更多人擁有更多機會,得到貴人相助與環境的幫助。\n\n此外,害羞的主管若能發揮「安靜的力量」,也就是真正做到「言行一致」、「以誠待人」,儘管平日沉默少言,像是信義房屋董事長周俊吉、聯發科董事長蔡明介,以及宏達基金會董事長卓火土,他們那股精神感召的魅力,照樣能吸引各路英雄好漢投效。\n\n所以,害羞其實不是一件壞事,關鍵在於你是面對還是逃避。\n\n當你被職場滾動的巨石磨礪時,能將這個上天的禮物,當作性格的潤滑,不僅能從中獲得能量,還能在事業的頂峰,因為害羞學會謙遜,看見更恢弘的風景。
故事是這樣開始低~~\n\n\n\n\n有個老魔鬼看到人間的生活過得太幸福了,\n\n\n\n\n他說:「我們要去擾亂一下,要不然魔鬼就不存在了。」\n\n\n\n\n他先派了一個小魔鬼去擾亂一個農夫。\n\n\n\n\n因為他看到那農夫每天辛勤地工作,可是所得卻少得可憐,但他還是那麼快樂,非常知足。\n\n\n\n\n小魔鬼就開始想,要怎樣才能把農夫變壞呢?\n\n\n\n\n他就把農夫的田地變得很硬,讓農夫知難而退。\n\n\n\n\n那農夫敲半天,做得好辛苦,但他只是休息一下,還是繼續敲,沒有一點抱怨。\n\n\n\n\n小魔鬼看到計策失敗,只好摸摸鼻子回去了。\n\n\n\n\n老魔鬼又派了第二個去。\n\n\n\n\n第二個小魔鬼想,既然讓他更加辛苦也沒有用,那就拿走他所擁有的東西吧!\n\n\n\n\n那小魔鬼就把他午餐的麵包跟水偷走,他想,農夫做得那麼辛苦,又累又餓,卻連麵包跟水都不見了,這下子他一定會暴跳如雷!\n\n\n\n\n農夫又渴又餓地到樹下休息,想不到麵包跟水都不見了!\n\n\n\n\n「不曉得是哪個可憐的人比我更需要那塊麵包跟水?\n\n\n\n\n如果這些東西就能讓他得溫飽的話,那就好了。」\n\n\n\n\n又失敗了,小魔鬼又棄甲而逃。\n\n\n\n\n老魔鬼覺得奇怪,難道沒有任何辦法能使農夫變壞嗎?\n\n\n\n\n這時,第三個小魔鬼出來了。\n\n\n\n\n他對老魔鬼講:「我有辦法,一定能把他變壞。」\n\n\n\n\n小魔鬼先去跟農夫做朋友,農夫很高興地和他作了朋友。\n\n\n\n\n因為魔鬼有預知的能力,他就告訴農夫,明年會有乾旱,教農夫把稻種在濕地上,農夫便照做。\n\n\n\n\n結果第二年別人沒有收成,只有農夫的收成滿坑滿谷,他就因此而富裕起來了。\n\n\n\n\n小魔鬼又每年都對農夫說當年適合種什麼,三年下來,這農夫就變得非常富有。\n\n\n\n\n他又教農夫把米拿去釀酒販賣,賺取更多的錢。\n\n\n\n\n慢慢地,農夫開始不工作了,靠著經濟販賣的方式,就能獲得大量金錢。\n\n\n\n\n有一天,老魔鬼來了,小魔鬼就告訴老魔鬼說:「您看!我現在要展現我的成果。這農夫現在已經有豬的血液了。」\n\n\n\n\n只見農夫辦了個晚宴,所有富有的人都來參加;喝最好的酒,吃最精美的餐點,還有好多的僕人侍候。\n\n\n\n\n他們非常浪費地吃喝,衣裳零亂,醉得不省人事,開始變得像豬一樣癡肥愚蠢。\n\n\n\n\n「您還會看到他身上有著狼的血液。」\n\n\n\n\n小魔鬼又說。這時,一個僕人端著葡萄酒出來,不小心跌了一跤。\n\n\n\n\n農夫就開始罵他:「你做事這麼這麼不小心!」\n\n\n\n\n「唉!主人,我們到現在都沒有吃飯,餓得渾身無力。」\n\n\n\n\n「事情沒有做完,你們怎麼可以吃飯!」\n\n\n\n\n老魔鬼見了,高興地對小魔鬼說:「唉!你太了不起!你是怎麼辦到的?」\n\n\n\n\n小魔鬼說:「我只不過是讓他擁有比他需要的更多而已,這樣就可以引發他人性中的貪婪。」
''東方微笑''\n[img[http://www.tianshui.com.cn/Files44/BeyondPic/2006-5/21/6_006.jpg]]\n[img[http://www.rakuten.co.jp/keitai/img10063964829.gif]]\n*''about:blank''\n*[[常用網頁]]\n*[[留存網頁]]\n*[[金融]]\n*[[小劇場]]\n*[[愛樂點播]]\n*[[手工皂]]
商業周刊 第1097期 2008-12-01 撰文者:何飛鵬\n在百年一遇的金融海嘯及全世界的不景氣風暴之下,台灣失業率又創新高,無數人在一夜之間喪失工作,要重新找一份工作,在百業蕭條的狀況下,很可能再也找不到合適的工作,許多人因此不自覺的走上創業之路,未來一年台灣可能發生「逼上梁山」的創業熱潮。\n\n做為一個永遠的創業者,看到可能的創業熱潮,我憂喜參半,少數人可能因此展開夢幻人生旅程,但大多數會陷入更痛苦的深淵。在這十字路口,該如何趨吉避凶呢?以下是一份創業性格的自我檢查表,這是一個九宮格(見圖),分屬三個構面,中間的三個是核心價值構面,由誠信向上向下延伸至儉樸與自律,右列三個是冒險性格的構面,分別是好奇、樂觀與挑戰;左列三項則是工作構面,分別是學習、努力與堅持。\n\n能不能創業,首先要檢查你的核心價值正確與否,從九宮格最中間的誠信開始,你是否擁有最基本的做人原則,這是你能否被人信賴的關鍵,創業是要賣產品或服務別人,沒有人會向自己不相信的人買東西,因此創業最重要的核心要素就是誠信。接著從誠信向下延伸到自律,你懂得做人的道理,還要能夠自律,能控制自己的行為,嚴謹遵守所有的規則,從道德,到法律,到公司組織規章,到職位工作準則,讓自己變成一個有紀律的人。自律之所以重要,因為創業是自己做老闆,不會有他律,如不能自律,你創辦的事業一定亂成一團。儉樸也是另一種自律,對生活方式,對錢與資源運用的節省與效率,這也是創業的另一種核心價值。\n\n創業的冒險性格構面從好奇開始,好奇是天生的特質,看什麼都有趣、都想瞭解、都有研究之心,創業一定是創新,不創新的創業成功的機會極低,創新源於好奇而引發探索。樂觀也是另一種天性,看任何事都美好,都相信會成功。即使面臨困境,也不會喪失信心,能持續努力。創業是想像、是作夢,沒有樂觀不會有夢想、有實踐。而樂觀會延伸到挑戰,對自己有信心,相信自己能完成,願意嘗試更困難的工作,願意測試自己能力的極限,這就是挑戰。創業最不缺的就是挑戰,每天、每件事都是新事物,都是挑戰,更何況「獲利是風險的報償」,沒有挑戰,風險不高,也就獲利不大,所以面對挑戰是創業重要的要素。
<<importTiddlers>>
\nhttp://www.jihsun.com.tw/JssFHCWebnet//JsStockInfoTop.aspx?server_name=/z/zc/zcw/zcw1_&stockno=0050\n台北富邦銀行\nhttps://ebank.taipeifubon.com.tw/B2C/common/Index.faces\nhttps://www.fubon.com/banking/personal/index.htm\n有價證券競價拍賣系統\nhttps://scas.twse.com.tw/SCAS/Account/Login\n日盛證券\nhttps://www.jihsun.com.tw/\n康和期貨\nhttps://www.concordfutures.com.tw/default.aspx\n中國信託\nhttps://www.ctbcbank.com\n臺灣銀行\nhttps://ebank.bot.com.tw/\n世華銀行\nhttps://www.mybank.com.tw/mybank\n玉山銀行\nhttps://ebank.esunbank.com.tw/index.jsp\n土地銀行\nhttps://www.landbank.com.tw/\n郵局\nhttps://ipost.post.gov.tw/pst/home.html\n
2008-12-26工商時報【朱漢崙、黃怡錦、彭禎伶/台北報導】 \n 農曆年前,金融圈將再度吹起人事大搬風,日盛金總座戴瑞宏及永豐金總稽核陳碧雲均將離職!據了解,已由日系私募基金新生銀,取得主導權的日盛金,如今與陳國和家族有親戚關係的戴瑞宏,已提出辭呈,外界預期,除另有高就之外,「可能也與日盛金已經確立未來歸屬走向有關!」 \n\n 據悉,戴瑞宏可能在明年元月份,轉任康和證券執行長。此外,永豐金今日也將召開董事會,正式受理金控總稽核陳碧雲辭呈,本月底前,陳碧雲就會離開金控,接任人選也將在今日董事會上通過。 \n\n 永豐金控今日董事會上也將通過證券、信用卡、投信等子公司的組織改造方案,並且在明年4月之前,證券子公司包括自營等目前以金控總部中崙大樓為據點的部門,全部「歸艦」回原本的據點─台開大樓。 \n\n 日盛金控總經理戴瑞宏請辭,不免讓市場揣測是否與併購案有關。據悉,新生銀行方面視之為私人因素,擬再增資日盛金百億元的計劃,新生銀與日盛金財顧─高盛投資銀行,都還在努力推動中,外資圈這1-2周的休假期間,也不得閒。 \n\n 外資核心人士指出,新生銀尚無意放手日盛金控投資案。至於日盛金控總經理戴瑞宏請辭,外資圈並不震撼,因為消息傳了大半年,新生銀行方面視其為私人因素,與日盛金控的投資細節,日後可與日盛金控董事長陳國和直接接觸。 \n\n 外資主管指出,陳國和仍握有主導權,但新生銀也是外資大股東,日盛金出售須取得兩大主要股東共識,出價與交易形式(堅持現金交易原則),仍是關鍵。 \n\n 據悉,戴瑞宏可能在明年元月份,轉任康和證券執行長(CEO)\n
【時報-台北電】針對工商時報「富邦要併日盛金,月底可望定案」報導,日盛金 (5820) 出面公告表示,近來因美國雷曼兄弟等金融機構發生破產或經營危機事件,造成國內外金融業相當程度衝擊,但日盛金並未提列鉅額損失或發生資金不足情形,表現相對穩健。\n\n日盛金指出,為持續改善財務結構與提昇經營績效,經董事會委任投資銀行擔任顧問,積極與相關機構進行接洽並研擬各項策略,以維護股東權益。此項作業之進一步訊息,依法須待董事會決議通過後,始可對外公開揭露,目前仍依既定程序進行中,尚未有任何結論,有關媒體報導已與富邦金簽署併購草約等情形,純屬媒體之臆測。\n\n除此之外,報載日盛金大股東私下相關情事,日盛金表示與公司經營無關,不予評論。(編輯整理:張涵婷)\n\n2008/10/21 13:46時報資訊
用39萬操作期貨3年賺千萬\n\n說期貨市場是最迷人的賭場,一點也不為過,它可以讓你連棺材本都輸光,也可以讓你在短期間內賺到千萬財富。只要你有本事、心臟夠強,一旦抓準趨勢,用幾十萬元去賺上千萬並非Mission Impossible。只是這條致富捷徑並非人人可走,沒做好準備的人,還是少輕易嚐試為妙。\n\n期貨是10倍槓桿的投資工具,以今年台股從4000點漲上6000點約50%的漲幅,如果你大膽用100萬元為本錢,買進10口期指多單,每個月不停的轉倉,抱到現在可以增值為500萬元。若能一年掌握一次2000點行情,兩年不就能累積千萬元財富了嗎?\n\n這種想法乍聽成理,實際操作起來可又是另外一回事。如果你多年省吃儉用,只存有百萬元積蓄,誰敢把錢全押在期貨市場裡,每天漲跌50點,就是10萬元輸贏,心理煎熬有多大?一點風吹草動,就能把你嚇的半夜睡不著覺,就算僥倖賺到錢,神經怕也出了問題。\n\n3年內用39萬元賺到1200萬元\n\n不過,難做到並不代表做不到,曾當過電視投顧老師,現任中信證券業務經理的李天仁,雖然本身也是期貨專家,但他表示,他的客戶張莉美(化名)才是令他佩服的高手。因為張莉美在2000年阿扁上台時才開始接觸期貨,以39萬元起家,累積到今年已接近1200萬元,報酬率高達30倍。\n\n大學唸外文系的張莉美,為了幫先生創業,開始摸索會計事務,因為本身是老闆娘,工作時間很彈性,因此從會計基礎出發,開始對「業外收益」的操作產生興趣。張莉美1975年起,即開始投資股票,28年的股市經驗,讓她對順「勢」操作有很深的體會。也因此,張莉美雖然不是期貨老手,但卻能在短期間內繳出過人的成績單。\n\n對趨勢的研判,張莉美頗有自信,均線、外資、融資融券變化是她主要分析的依據。她微笑的說:「2000年從萬點下來的大空頭行情,我手中一張股票都沒留,一點都沒傷到。正因為看空股市,才開始學習多空都能操作的指數期貨。而這三年來,不論漲跌,比較大的波段行情幾乎從未缺過席,也因此39萬元的本錢,在今年初就增值到900萬元,10月分則增加到1200萬元」。\n\n資金控制是必練的基本功\n\n可別以為張莉美是靠把把豪賭、手風順,才能賺到千萬財富,事實上她在期貨操作的資金控管哲學,可是把會計人精打細算的精神發揮到最極致。\n\n「當時就抱定主意,只以39萬元為本錢,如果輸光了就證明我無法在期貨市場裡獲利,那我會完全死心離開」,張莉美在進入期貨市場前,已經做了最壞的打算,把最大損失鎖定在不影響生活的39萬元。不過,除了在第一天繳了5萬元「學費」外,28年的股市經驗開始發揮作用,張莉美很快就步上坦途。\n\n值得借鏡的是,她有種子基金的概念,當一個戶頭金額超過300萬元後,她會撥出100萬元到其他期貨帳戶。張莉美表示,她不希望單一帳戶金額太大,會讓她對小虧損失去警戒心,而且每個帳戶最多只用到六、七成資金,不會全部買滿。只要每顆種子細心照顧,自然而然就能結實纍纍。\n\n好EQ才能有好績效\n\n為何張莉美能有如此傲人的績效?張莉美先聲明︰她不是那種押對一波就大賺的樂透型贏家,因此沒有什麼值得大書特書的特別戰役,只是不斷地積小勝為大勝穩定獲利罷了。不過她在順勢做對、關始獲利的時候,敢押、敢追是最大關鍵,但每天收盤會留倉的口數並不多,大約只是資金的兩成,畢竟隔天會不會反向跳空,誰也不知道。\n\n她的營業員則有更深入的觀察,接張莉美單子的另一位營業員、群益證券副理陳慧純表示,曾經有一天張莉美做單不順虧了10幾萬元,兩人依然興高采烈的去泡湯吃火鍋。李天仁補充道,期貨市場輸贏甚大,情緒難免會受到市場氣氛影響,但張莉美投入期貨市場的三年間,歷經911、美伊戰爭等重大事件,他發現不論當時氣氛是如何樂觀或恐慌,張莉美期指停損或加碼的電話,聲音卻平靜的像置身事外,「不僅是冷靜,甚至可以說是冷漠」。\n\n更令李天仁折服的是,一般期貨投資人不論賺錢或停損平倉,即使發現賣錯了,多半會觀望等待下一個買點,但張莉美有股霸氣,發現原先預期的高點,並非真正高點時,會果斷的把部位全部買回。\n\n以今年10月16日大盤再度衝過6000大關的急漲行情為例,她先以前波高點6039附近,預先掛價獲利出場,不過當發現上漲氣勢強勁時,即使才剛賣掉,她也會再付出多幾點的代價,很快向市場認錯再買回來。因此要比照張莉美用不到40萬元,從期貨市場賺到千萬元,除了技術分析的基本功外,強悍的心理特質,更是關鍵所在。\n\n張莉美累積千萬財富的5大成功關鍵\n\n1.設定最大損失上限39萬元\n\n2.28年股市實戰經驗\n\n3.隨時保持冷靜,情緒不隨輸贏起舞\n\n4.設定最大投資上限,單一帳戶300萬元\n\n5.趨勢研判準確,順勢獲利即勇敢加碼\n\n用期貨賺千萬財富的操盤心法\n\n期貨與股市不同,股票投資會隨著企業成長、盈餘配股,使每個股東都賺錢,但期貨則是標準你虧我賺的零和遊戲。這就好像是場擂台賽,每個人要繳交報名費當賞金,前幾名的贏家才能將賞金通吃。想從別人口袋裡淘金,技術分析的功力只是基本配備,更需要正確的觀念與心態,以下提供贏家心法供有心者參考:\n\n心法一:累積實戰經驗\n\n經驗是投資或投機能否獲利的重要關鍵,累積經驗難免要繳學費,為了避免學習過程中虧損過大,建議可以採取模擬下單(可參考www.fs-exchange.com金融模擬交易網站)或小台指做為起步。\n\n心法二:賺錢前先學停損\n\n停損也是基本課程,除了用技術指標、均線、前波高低點做為停損依據外,資金停損更是關鍵。例如100萬元的資金,實際下單不能超過20萬元,虧損30或50點就先砍出再說,如果累積虧損達五成還不能掌握獲利之道,最好自認不是這塊料,尋求其他致富管道比較妥當。\n\n心法三:攤平只能一次\n\n以做多為例,有時擔心行情已啟動,會追價搶建第一口基本倉,價位或許不太理想,如果後來又有回測支撐到原先想進場的理想價位,是可以用股票攤平的觀念,增加多單攤平成本。不過,這種攤平動作頂多只有一次,再跌破表示看錯,先出場為宜。\n\n心法四:沒有獲利避免押大倉\n\n即使對行情再怎麼有把握,也不要抱著孤注一擲的心態押大倉。說起來容易,但筆者也曾犯下這種錯,在今年10月8日認為賣壓很重,許多現象與7月28日的回檔下跌相似,誤判應該有100點以上的回檔,在盤整的過程中,不斷加碼放空,後果自然是被迫停損出場。\n\n心法五:用賺來的錢加碼\n\n加碼技巧是期貨操作的藝術,也是門大學問,無法在此一語道盡。但有一個大原則,加碼主要是要將波段行情的利潤放至最大,但行情上漲之初,誰也不知道這是波段行情抑或只是區間的震盪,因此最好是處於獲利狀態才加碼,心理壓力才不會太大。加碼時不要一口氣加足,而是一口一口慢慢加,可參考15分鐘、30分鐘或60分鐘K線圖,每根K線收盤價不破前低(以做多為例),才可加碼,否則觀望即可。\n\n心法六:想想趨勢向哪走\n\n投資人可以將季均線視為大方向的趨勢,像目前指數處於季均線之上,盤勢一直屢創新高,但未聞屢創新低,所以儘可能採先買後賣的策略。只是現在漲了2000多點,創新高後追高風險大,儘可能在拉回急跌時,找重要支撐買進做多比較適合。\n\n心法七:賺錢要適時落袋為安\n\n一旦成為能獲利的期貨贏家,守住獲利是門新學問,可以採取帳戶定額制,如張莉美般設定300萬元的最高投資金額上限,超過部分即提領存至銀行。或是每個月設定只能投入50萬元,賺到錢的部分才拿來加碼。【2003/11/22 Smart智富月刊63期】\n\n 李珮芹用7.5萬 賺300多萬\n\n今年以來,行情不小,靠選擇權致富的還真不少,但短短四個月內用7.5萬元滾到300多萬元,這種40倍的報酬,除了天時地利外,還是需要良好的策略才能賺得到。\n\n用小錢致富,是每個市井小民的夢想,過去或許難如登天,但自從選擇權出現後,提供了小錢致富的可能性。李佩芹(化名)就是一個好例子,今年5月下旬大盤位於4300~4400的時候,她以7.5萬元為本錢,買進20口履約價為4400與4500的買權,陸續將獲利轉加碼價外一檔的買權,到6月19日以5048點結算時,已經成長為150多萬元,報酬率超過20倍。\n\n6月之後的行情漲幅雖然漸緩,但多頭波段力道仍持續,已經掌握選擇權投資訣竅的李佩芹,繼續沿用其成功的模式,截至10月底,當初7.5萬元的本錢,已經如滾雪球般變成300多萬元。\n\n選擇權容易把小錢滾大\n\n為何今年這一波能賺的如此精彩?曾於1994~1998年在國內某大投信公司擔任研究員的李佩芹表示,趨勢判斷準確是先決條件。在投信的訓練本來就是先研判趨勢,然後在多頭行情來臨時買進與緊抱多頭部位。\n\n今年SARS這種非經濟因素的利空,她就預期只要止跌就是買點,18元的友達(2409)她就買了不少,預計要抱到多頭市場結束,跌破季均線才會獲利了結。選擇權因為每個月都會到期,策略上自然要有所調整。\n\n李佩芹選擇權投資的起步,頗值得初學者參考,剛開始她也只打算用7.5萬元練習,恰好是一口大台指的保證金。但李佩芹表示選擇權可以把最大損失鎖定在7.5萬元,比較不會像期貨操作般容易患得患失。她進一步強調說:「一開始資金不宜過大,以免因選擇權損失有限而掉以輕心,其實只要做對方向,並掌握操作訣竅,選擇權賺錢是很快的,不愁沒有本錢再去錢滾錢」。\n\n每月限定本金上限,三星期分批進場\n\n李佩芹以自己為例,5月底剛開始因金額不多,她看準時機一次全押,賺了3~5倍就獲利平倉,當她發現每次回檔5日均線都沒破,就警覺到這波多頭十分強勁,應該不止2、300點的行情,可能會有千點行情。因此調整策略,每上漲100點,即將獲利已達三倍的價內選擇權賣出,再買進價外一檔或兩檔的買權,例如大盤從4500漲過4600時,她即賣掉4400的買權,同時買進4700或4800的買權,除維持原有的持有口數外,可以再增加口數提高報酬率。\n\n6月結算後,她靠選擇權已獲利150萬元了,就將100萬元先存起來,留下的錢才繼續操作選擇權。此時本錢多了,玩法也有所不同,她一個月準備30萬元本錢,分成三部分,分三星期、每星期找時機進場。\n\n由於她心中已預先擬好該月分的區間上、下位置,當第一個星期盤勢續強時,她就會進場試單建立基本部位。但若是不漲反跌,跌到她心目中的區間下緣時,她也會進場布局,不過該星期的配額用完即打住。李佩芹認為,選擇權有時間價值耗損的問題,如果一開始就把本錢用光了,會導致後面兩星期選擇權權利金較便宜時,沒有本錢攤平。\n\n統一期貨營業部副理謝佩玲就很佩服李佩芹的資金管理哲學,因為大部分投資人都是憑感覺決定下單部位,也缺乏適當的獲利鎖住機制,賺錢時往往想拗更大,像玩梭哈一樣,中間雖然賺了不少,往往最後賠了夫人又折兵。\n\n設定結算目標,決定進場履約價\n\n適度攤平與拼結算價,也是李佩芹成為選擇權贏家的兩大關鍵。她認為多頭行情下,台期指結算以拉高結算的機率較大,因此前三星期是分批布局時點,當大盤急跌時大部分持有多單的散戶忙著停損,她卻可以好整以暇的慢慢吃貨,因為她賭的是結算結果。至於攤平的技巧,則是日線出現不再破底的止跌跡象,才開始進行攤平。\n\n何謂結算價?\n\n台灣期指市場每月第三個星期三是當月合約的最後交易日,次營業日即為結算日,期交所會採取結算日的加權指數開盤後15分鐘,依其公式計算出結算價,所有尚未平倉的合約依此價位結算損益。\n\n讀者或許會問,萬一遇到盤整盤,抱到結算不是也會虧損嗎?這問題筆者當然也向李佩芹請教了,她坦誠9月分合約結算價5744,確實被咬了一口,不過因為資金是分月限額使用,單月虧損對整個波段獲利不致有大影響。\n\n但隨著指數愈來愈高,向上6198、6484的壓力重重,區間盤整的機率也愈來愈大,所以現在她進場的履約價挑選也愈嚴格。例如她預測11月20日結算有機會挑戰6200點,如果履約價6100的買權權利金為110點,結算時需超過6210才能獲利,就不太值得投資。但若是大盤回測5900,價外一檔履約價6000的買權權利金降至100點以內,結算價超過6100即可獲利,超過6200就能有倍數獲利,自然比較划算。\n\n何謂價外一檔履約價?\n\n如果現在加權指數為6030點,最接近6030點的百位整數履約價即為6000點,稱之為價平。對選擇權買權(call)而言,高出一檔(100點)的履約價6100,即為價外一檔,同理6200即為價外二檔。但對選擇權賣權(put)而言,價外一檔指的是5900點。\n\n李佩芹累積財富的5大成功關鍵\n\n1.設定最大損失上限7.5萬元\n\n2.趨勢研判偏多,以買進買權單向操作\n\n3.波段行情展開,獲利了結價內,加碼買價外一檔選擇權\n\n4.每月設定最大投資上限,不同時間點分批布局\n\n5.善用選擇權虧損有限特性,逢低敢買\n\n用選擇權賺千萬財富的成功心法\n\n帆船要能跑的快,除了有張好帆之外,還需要足夠的風勢。要靠選擇權賺到鉅額財富,首先一定要有波段行情,否則再好的技巧,也只能小獲利。就現階段而言,大盤已經漲過2000點,要期待能再賺數十倍的大行情,可能要等到明年。\n\n事實上,不論是漲或是跌,每年起碼會有1~2次千點以上的波動空間,就怕起風時,投資人來不及張帆。選擇權的操作心法其實與期貨大同小異,這裡針對當前的盤勢,補充選擇權操作的務實建議:\n\n心法1:認清當前盤勢的位置\n\n2000點的大波段行情已屆強弩之末,出現300點以上較大幅度回檔的機率愈來愈大,不過多頭才開始半年,回檔整理後再漲個500點以上的中波段,是就目前資訊所作的最有可能預期。如果能掌握住這個波段,選擇權要賺個5、6倍應不是難事。\n\n心法2:儘可能做單邊\n\n現在是多頭,但回檔300~500點的行情要不要賺?說實在話,這種錢是高手、老手賺的,他們反應快,隨時能表演緊急剎車回轉的特技。一般人手中有空單,心態難免希望愈跌愈多,不過當多頭趨勢力量開始發威時,往往錯失建立多單的好時機。現在大方向仍屬多方占優勢,回檔時就空手吧,視為能再次買到便宜貨的好機會。讓自己的心態像守株待兔的獵人,耐心等待重要均線發揮支撐效力,以及起漲訊號的出現。\n\n心法3:不急著獲利\n\n職業球員打棒球,不是試圖把任何球路打出安打,而是等待最「呷意」的球出現,給對方投手致命一擊。同樣的,選擇權有時間價值耗損的問題,就算大盤不漲或小漲,投資人仍可能全軍覆沒,所以不必每天都想如何從當天盤勢中獲利,等待你最有把握打出安打的好球吧!\n\n心法4:不急著想賺大錢\n\n愈急著想賺大錢的人,愈容易賠大錢,雖然以打造千萬財富為目標,但目光望遠,仍需從小處著手。既然眼前沒有千點大行情,但若能從200~300點的小波段中,靠選擇權賺取50%以上的報酬率,實屬難能可貴,也是好的開始。一方面累積實戰經驗,另一方面也為明年的千點行情,多預備些子彈。\n\n心法5:找出最有自信的武器\n\n相信大家都學了不少指標或均線的用法,但哪一個是讓你最有信心的進出依據?什麼的訊號,讓你最有把握掌握波段行情?找出屬於你自己的答案,你才有可能在訊號出現時,毫不猶疑的買進賣出。2003/11/22 Smart智富月刊63期\n\n Q1:5月底買進6月19結算,在4400點買履約價4400要150-200點、4500要110-120點。若4400、4500各買進20,則成本為150×20×50=15萬、110×20×50=11萬,共26萬。\n\n結算(5048-4500)×20×50=54.8萬、(5048-4400)×20×50=64.8萬,共119.6萬。6月19日以5031點結算\n\n Q2:陸續將獲利轉加碼價外一檔的買權?選擇權之獲利不能提出,要先平倉才可當加碼的本金。
![[茫茫苦海中指引方向的心靈導師]]
作者 beliarken (永遠18歲海姐姐) 看板 Gossiping \n \n標題 Re: [轉錄]零體罰害死台灣人(轉錄)\n \n其實,台灣目前不能算是零體罰……\n \n如果,台灣能像外國一樣真正落實零體罰,\n \n老師們也很高興呀........\n \n台灣目前所推行的 ,根本不是零體罰,\n \n而是『無法無天、養虎遺患、率獸食人』\n \n台灣目前的教育政策不只是畸形,根本是異形!\n \n畸形沒關係,只是看起來怪怪,於人無損,\n \n異形卻大有問題!它是會殺人,是會破壞社會根本,製造動亂未來的怪獸。\n \n而目前台灣教育正在複製無限的怪獸,\n \n我相信絕大部分的國中小教師都在自己的身邊看到目前有多少恐怖的事情發生……\n \n你聽過有國小六年級的男生因為看一個四年級智障男生不順眼, 就把他衣服脫光,叫他趴在地上學狗叫,叫他肛門夾根樹枝當尾巴, 張嘴舔他的腳踏車車輪, 然後再叫一堆女生來圍觀,吐口水在他身上嗎?\n \n你聽過有國中二年級的男生三個人直接闖到人家客廳輪姦一個五年級女生嗎?\n \n你聽過有五年級女生在老師的茶杯裡面下藥,要讓老師流產嗎?\n \n你知道有小孩因為跟同學爭吵,拿美工刀砍人一刀然後嗆聲: 『大不了我賠他醫藥費嘛!!!』\n \n很多事情,社會大眾不會知道,因為,我們的新聞是被選擇過的,\n \n如果把現在的少年犯罪率、未婚生子率和城鄉學業能力差距數據貨真價實的拿出來,\n \n社會大眾會真正瞭解,什麼叫做真正的恐慌!\n \n在20年前,這些是特例,但在20年後,這些特例卻在日漸繁衍,快要變成日常!\n \n當一個孩子不會因自己的錯事受到代價,\n \n當一個社會只會保護惡人的權利時,\n \n怪物就會開始成長。\n \n台灣人習慣言必稱國外,\n \n那我們就拿外國的零體罰來談談,\n \n照台灣人X的標準,全世界都是體罰的罪惡之國!都是殘害天使兒童的邪惡成人!\n \n我們來看現在最夯的芬蘭好了,\n \n芬蘭確實制定零體罰,但是他們怎麼處理孩子?\n \n天下雜誌的『芬蘭教育』這本書提到:\n \n『學校最常見的處罰方式為放學後留在教室裡罰坐,反省不當行為或補寫功課, 如果有學生危及其他學童安全或嚴重影響教學,則可面臨最長三個月的停學處分。』\n \n零體罰,可以呀~~~我們照芬蘭規矩來做。\n \n可是不行,台灣人X集團會說\n \n:『反省行為是思想箝制!留校罰坐是限制人身自由!違反憲法!!停學是教師規避教育 責任!!這學校和老師統統該死呀!!』\n \nOK,那我們知道了,芬蘭,在台灣人X集團的眼中是該死的罪惡之國。 \n \n那我們看紐西蘭,\n \n紐西蘭不扁小孩,也是零體罰國家唷, 那我們照紐西蘭的規矩來做事吧。 紐西蘭處罰學生的方法通常有 1. 社區服務撿垃圾(處罰小孩身心,造成痛苦) 2. 假日穿制服到學校進行校園服務(思想箝制,威權再現) 3. 罰寫作業(這是體罰體罰體罰!!無意義的抄寫!!) 4. 環境清掃(體罰體罰體罰~~~~~~應該解聘這個教師!!!!) 5. 停學(剝奪孩子教育權利!教育部長下台!!)\n \nOK,那我們知道了,紐西蘭,在台灣人X集團的眼中也是該死的罪惡之國。\n \n連最文明最進步的芬蘭和紐西蘭都在這樣傷害學生了,\n \n我們還要談有貴族公學和私立學院的英國嗎? \n \n我們要談從小訓練文法和禮儀教育的法國嗎? \n \n我們要談規矩嚴謹的德國奧地利嗎?\n \n我們要談設有懲戒室的美國嗎?\n \n我們要談比台灣更瘋狂更有錢的日本嗎?\n \n我們要談現在超越台灣的南韓嗎?\n \n我們要談鞭刑的新加坡嗎?\n \n我們要談商業之都香港嗎?\n \n在世界的洪流裡,只有台灣人X依然堅持真正教育大愛\n \n不罵、不站、不打、不關、不罰、不做事。\n \n台灣有人X,我該說啥呢?\n \n零體罰很好,但是,世界各國都有取代體罰的懲戒策略,\n \n為甚麼大家都要忽略這件事情?\n \n而只會要求老師要愛!要宣導!要溝通!!\n \n若一切只要用心靈就能解決,全世界的人早就得道成佛了!!\n \n還有一個數據,這是澳洲雪梨晨鋒報(雪梨最大報)的報導\n \n『國際數學與科學教育趨勢研究(Trendof International Mathematics and Science Study)對全世界大約40個國家的學校進行了調查,澳洲小學生受到欺凌的比例,比國際 平均值高約50%,是全世界小學生受欺凌最嚴重的國家之一。接受抽樣調查的36個國家的4 年級學生中,只有科威特、卡達、台灣和紐西蘭的調查結果不及澳洲。』\n \n『澳洲的維克多利亞州警方資料也顯示,數百起嚴重犯罪案件是由年齡不到9歲的孩子犯下 的。這些案件包括性侵犯、搶劫和縱火。據警方透露,一些年紀輕輕的孩子甚至還涉及非 法擁有和使用毒品、偷竊汽車、擅闖民宅。』 這就是零體罰的人間仙境,紐西蘭、澳洲、台灣。\n \n如果,這是我們教育所追求的最終人權人本景象,我也只能講天佑台灣。\n \n因為,我已經看到許多令我發毛的怪獸正在成長。\n \n零體罰,很好,但是台灣,根本不是零體罰,而是瘋狂! PS:在外國人眼中,停學是非常嚴重的事情, 他不是讓孩子放假在家打混,而是家長需一人向公司請假陪孩子反省改錯 而損失的金錢與薪水或因時常請假而被資遣, 當然是家長自己承擔,因為,那是你的小孩, 在他無行為能力之前,你需要對你的小孩負責, 若你不請假,放小孩一人在家,那麼社會局會介入暫時剝奪親權, 因為你沒有盡到父母責任,同時還會吃上官司。\n \n這才是真正的教育,而非像台灣現在這樣,\n \n老師毫無權力,卻有無限義務!!而家長就放任責任專出一張嘴。\n \n零體罰,很好,我們老師雙手贊成。如果真的按照,\n \n外國那『先進』的『人本教育』政策和優良的『人權處罰』措施,\n \n我想,先哭的應該不是老師,而是家長。 \n \n【板主曰】\n人本集團,我想出發點是愛\n \n但是懲處也是愛的一種,小孩如果犯錯反而有糖果\n \n我想這裡的愛不是愛,而是下半輩子的悔恨\n(對孩子及父母而言都是)\n \n許多朋友正在小學教書\n(在幾乎不能打不能罵不能管教的環境下,只能放任孩子我行我素的真實情況\n甚至會被小學生恐嚇!!這世代真的是變了~)\n \n給個【讚】與【分享】\n幫助我們把這篇文章分享出去\n如果你願意看見一個新的世代~\n \n閱讀粉絲團\nhttp://www.facebook.com/read.life\n\n[img[http://a3.sphotos.ak.fbcdn.net/hphotos-ak-snc4/67676_10150317138695057_403142035056_15365648_2264413_n.jpg]]\n人本譴責校園暴力,卻要老師去管理校園暴力,因到後面吃官司的反而是老師自己,這真是一種悲哀與無奈...\n\nhttp://www.facebook.com/note.php?note_id=454384324719&id=403142035056
步出花蓮航空站印入眼簾的-是山。不是大崗山那種受到水泥廠長期污染,弄得灰濛濛一片的山。而是未受文明污染、青翠鮮綠的那一種。是如此的切近、舒適,在烏煙瘴氣的城市中所累積的鬱悶全部拋諸腦後,取而代之的是「我見青山多嫵媚,料青山見我應如是」的愉悅。抬頭望見一隻老鷹盤旋空中,剎那間時空交錯,彷彿回到了孩提時代。在家門口仰望老鷹天空翺翔,把自己幻化為老鷹邀遊天空、俯瞰大地,青山綠水盡收眼底。人世間的喜怒哀樂、是非黑白盡拋腦後。遺世獨立,悠遊於蒼茫天地。想起齊豫的一首歌「世界如果沒有空間,鳥兒會在我心裡飛;世界如果沒有鳥兒,天空會有我在翺翔」是何等豁達。\n印象最深刻也是最近距離的看老鷹是在國中時代,在往學校途中某家窗口上發現。一副王者的氣派,臨風顧盼,好不威風。只可惜被愚妄的人類禁錮。那段時間是最喜歡上學的日子。只是見到老鷹的時間並不多,一、二個月後再也沒看到那隻老鷹。即使多年之後,經過那房子時總會習慣的抬頭看一看老鷹是否還在窗口。\n看到老鷹盤旋已是遙遠又模糊的記憶,因為人類過度開發,除了老鷹之外,尚有其他生物的棲息地遭受極大的破壞,以致活動範圍大為縮小。長久以來,妄言「人定勝天」,對於各種資源強取豪奪,視一切為己有,認為理所當然。以征服者的姿態來面對自然;過度開發大肆破壞,藉口改善環境、增加休閒活動空間;大量開發高爾夫球場,破壞了水脈;北宜高速公路坪林隧道工程更破壞上千年的水脈,至今仍舊不斷滲水;過度開發山坡地,使得山坡地失去涵養水源的功能,以致不雨則旱、大雨成澇。難道人類非得等到大自然全面反撲的時候才會覺醒!\n記得這樣一句話:「世間一切暫時為我所用,非我所有;暫用請善用,非我所有勿占有。」或許我們應該認真學習如何跟大自然和諧相處。\n\n原作於1998年刊載於國華航空內部刊物「國華一家」
麥可喬丹的十條人生信念\n1.付出實踐 Make It Happen\n2.充滿激情.Passion\n3. 敢於嘗試Try\n4.全心投入Work\n5.面對失敗 Fail\n6. 磨練和預備Go Around\n7. 態度 The Mind\n8.改變視野 Perspective\n9. 忠誠和責任Loyalty and Responsibility\n10. 期待與夢想Expectations\n~~我們的人生信念是什麼呢?~~