Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
/***
|Name|CalendarPlugin|
|Source|http://www.TiddlyTools.com/#CalendarPlugin|
|Version|1.5.0|
|Author|Eric Shulman|
|Original Author|SteveRumsby|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|display monthly and yearly calendars|
NOTE: For //enhanced// date popup display, optionally install [[DatePlugin]] and [[ReminderMacros]]
!!!Usage:
<<<
|{{{<<calendar>>}}}|full-year calendar for the current year|
|{{{<<calendar year>>}}}|full-year calendar for the specified year|
|{{{<<calendar year month>>}}}|one month calendar for the specified month and year|
|{{{<<calendar thismonth>>}}}|one month calendar for the current month|
|{{{<<calendar lastmonth>>}}}|one month calendar for last month|
|{{{<<calendar nextmonth>>}}}|one month calendar for next month|
|{{{<<calendar +n>>}}}<br>{{{<<calendar -n>>}}}|one month calendar for a month +/- 'n' months from now|
<<<
!!!Configuration:
<<<
|''First day of week:''<br>{{{config.options.txtCalFirstDay}}}|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|
|''First day of weekend:''<br>{{{config.options.txtCalStartOfWeekend}}}|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|
<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//
|''Week number display format:''<br>{{{config.options.txtWeekNumberDisplayFormat }}}|<<option txtWeekNumberDisplayFormat >>|
|''Week number link format:''<br>{{{config.options.txtWeekNumberLinkFormat }}}|<<option txtWeekNumberLinkFormat >>|
<<<
!!!Revisions
<<<
2009.04.31 [1.5.0] rewrote onClickCalendarDate() (popup handler) and added config.options.txtCalendarReminderTags. Partial code reduction/cleanup. Assigned true version number (1.5.0)
2008.09.10 added '+n' (and '-n') param to permit display of relative months (e.g., '+6' means 'six months from now', '-3' means 'three months ago'. Based on suggestion from Jean.
2008.06.17 added support for config.macros.calendar.todaybg
2008.02.27 in handler(), DON'T set hard-coded default date format, so that *customized* value (pre-defined in config.macros.calendar.journalDateFmt is used.
2008.02.17 in createCalendarYear(), fix next/previous year calculation (use parseInt() to convert to numeric value). Also, use journalDateFmt for date linking when NOT using [[DatePlugin]].
2008.02.16 in createCalendarDay(), week numbers now created as TiddlyLinks, allowing quick creation/navigation to 'weekly' journals (based on request from Kashgarinn)
2008.01.08 in createCalendarMonthHeader(), 'month year' heading is now created as TiddlyLink, allowing quick creation/navigation to 'month-at-a-time' journals
2007.11.30 added 'return false' to onclick handlers (prevent IE from opening blank pages)
2006.08.23 added handling for weeknumbers (code supplied by Martin Budden (see 'wn**' comment marks). Also, incorporated updated by Jeremy Sheeley to add caching for reminders (see [[ReminderMacros]], if installed)
2005.10.30 in config.macros.calendar.handler(), use 'tbody' element for IE compatibility. Also, fix year calculation for IE's getYear() function (which returns '2005' instead of '105'). Also, in createCalendarDays(), use showDate() function (see [[DatePlugin]], if installed) to render autostyled date with linked popup. Updated calendar stylesheet definition: use .calendar class-specific selectors, add text centering and margin settings
2006.05.29 added journalDateFmt handling
<<<
!!!Code
***/
//{{{
version.extensions.CalendarPlugin= { major: 1, minor: 5, revision: 0, date: new Date(2009,5,31)};
//}}}
//{{{
if(config.options.txtCalFirstDay == undefined)
config.options.txtCalFirstDay = 0;
if(config.options.txtCalStartOfWeekend == undefined)
config.options.txtCalStartOfWeekend = 5;
if(config.options.chkDisplayWeekNumbers == undefined)
config.options.chkDisplayWeekNumbers = false;
if(config.options.chkDisplayWeekNumbers)
config.options.txtCalFirstDay = 0;
if(config.options.txtWeekNumberDisplayFormat == undefined)
config.options.txtWeekNumberDisplayFormat = 'w0WW';
if(config.options.txtWeekNumberLinkFormat == undefined)
config.options.txtWeekNumberLinkFormat = 'YYYY-w0WW';
if(config.options.txtCalendarReminderTags == undefined)
config.options.txtCalendarReminderTags = 'reminder';
config.macros.calendar = {
monthnames:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
daynames:['M','T','W','T','F','S','S'],
todaybg:'#ccccff',
weekendbg:'#c0c0c0',
monthbg:'#e0e0e0',
holidaybg:'#ffc0c0',
journalDateFmt:'DD MMM YYYY',
monthdays:[31,28,31,30,31,30,31,31,30,31,30,31],
holidays:[ ] // for customization see [[CalendarPluginConfig]]
};
//}}}
//{{{
function calendarIsHoliday(date)
{
var longHoliday = date.formatString('0DD/0MM/YYYY');
var shortHoliday = date.formatString('0DD/0MM');
for(var i = 0; i < config.macros.calendar.holidays.length; i++) {
if( config.macros.calendar.holidays[i]==longHoliday
|| config.macros.calendar.holidays[i]==shortHoliday)
return true;
}
return false;
}
//}}}
//{{{
config.macros.calendar.handler = function(place,macroName,params) {
var calendar = createTiddlyElement(place, 'table', null, 'calendar', null);
var tbody = createTiddlyElement(calendar, 'tbody');
var today = new Date();
var year = today.getYear();
if (year<1900) year+=1900;
// get journal format from SideBarOptions (ELS 5/29/06 - suggested by MartinBudden)
var text = store.getTiddlerText('SideBarOptions');
var re = new RegExp('<<(?:newJournal)([^>]*)>>','mg'); var fm = re.exec(text);
if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }
var month=-1;
if (params[0] == 'thismonth') {
var month=today.getMonth();
} else if (params[0] == 'lastmonth') {
var month = today.getMonth()-1; if (month==-1) { month=11; year--; }
} else if (params[0] == 'nextmonth') {
var month = today.getMonth()+1; if (month>11) { month=0; year++; }
} else if (params[0]&&'+-'.indexOf(params[0].substr(0,1))!=-1) {
var month = today.getMonth()+parseInt(params[0]);
if (month>11) { year+=Math.floor(month/12); month%=12; };
if (month<0) { year+=Math.floor(month/12); month=12+month%12; }
} else if (params[0]) {
year = params[0];
if(params[1]) month=parseInt(params[1])-1;
if (month>11) month=11; if (month<0) month=0;
}
if (month!=-1) {
cacheReminders(new Date(year, month, 1, 0, 0), 31);
createCalendarOneMonth(tbody, year, month);
} else {
cacheReminders(new Date(year, 0, 1, 0, 0), 366);
createCalendarYear(tbody, year);
}
window.reminderCacheForCalendar = null;
}
//}}}
//{{{
// cache used to store reminders while the calendar is being rendered
// it will be renulled after the calendar is fully rendered.
window.reminderCacheForCalendar = null;
//}}}
//{{{
function cacheReminders(date, leadtime)
{
if (window.findTiddlersWithReminders == null) return;
window.reminderCacheForCalendar = {};
var leadtimeHash = [];
leadtimeHash [0] = 0;
leadtimeHash [1] = leadtime;
var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);
for(var i = 0; i < t.length; i++) {
//just tag it in the cache, so that when we're drawing days, we can bold this one.
window.reminderCacheForCalendar[t[i]['matchedDate']] = 'reminder:' + t[i]['params']['title'];
}
}
//}}}
//{{{
function createCalendarOneMonth(calendar, year, mon)
{
var row = createTiddlyElement(calendar, 'tr');
createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon]+' '+year, true, year, mon);
row = createTiddlyElement(calendar, 'tr');
createCalendarDayHeader(row, 1);
createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}
//{{{
function createCalendarMonth(calendar, year, mon)
{
var row = createTiddlyElement(calendar, 'tr');
createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon]+' '+ year, false, year, mon);
row = createTiddlyElement(calendar, 'tr');
createCalendarDayHeader(row, 1);
createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}
//{{{
function createCalendarYear(calendar, year)
{
var row;
row = createTiddlyElement(calendar, 'tr');
var back = createTiddlyElement(row, 'td');
var backHandler = function() {
removeChildren(calendar);
createCalendarYear(calendar, parseInt(year)-1);
return false; // consume click
};
createTiddlyButton(back, '<', 'Previous year', backHandler);
back.align = 'center';
var yearHeader = createTiddlyElement(row, 'td', null, 'calendarYear', year);
yearHeader.align = 'center';
yearHeader.setAttribute('colSpan',config.options.chkDisplayWeekNumbers?22:19);//wn**
var fwd = createTiddlyElement(row, 'td');
var fwdHandler = function() {
removeChildren(calendar);
createCalendarYear(calendar, parseInt(year)+1);
return false; // consume click
};
createTiddlyButton(fwd, '>', 'Next year', fwdHandler);
fwd.align = 'center';
createCalendarMonthRow(calendar, year, 0);
createCalendarMonthRow(calendar, year, 3);
createCalendarMonthRow(calendar, year, 6);
createCalendarMonthRow(calendar, year, 9);
}
//}}}
//{{{
function createCalendarMonthRow(cal, year, mon)
{
var row = createTiddlyElement(cal, 'tr');
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);
row = createTiddlyElement(cal, 'tr');
createCalendarDayHeader(row, 3);
createCalendarDayRows(cal, year, mon);
}
//}}}
//{{{
function createCalendarMonthHeader(cal, row, name, nav, year, mon)
{
var month;
if (nav) {
var back = createTiddlyElement(row, 'td');
back.align = 'center';
back.style.background = config.macros.calendar.monthbg;
var backMonHandler = function() {
var newyear = year;
var newmon = mon-1;
if(newmon == -1) { newmon = 11; newyear = newyear-1;}
removeChildren(cal);
cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
createCalendarOneMonth(cal, newyear, newmon);
return false; // consume click
};
createTiddlyButton(back, '<', 'Previous month', backMonHandler);
month = createTiddlyElement(row, 'td', null, 'calendarMonthname')
createTiddlyLink(month,name,true);
month.setAttribute('colSpan', config.options.chkDisplayWeekNumbers?6:5);//wn**
var fwd = createTiddlyElement(row, 'td');
fwd.align = 'center';
fwd.style.background = config.macros.calendar.monthbg;
var fwdMonHandler = function() {
var newyear = year;
var newmon = mon+1;
if(newmon == 12) { newmon = 0; newyear = newyear+1;}
removeChildren(cal);
cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
createCalendarOneMonth(cal, newyear, newmon);
return false; // consume click
};
createTiddlyButton(fwd, '>', 'Next month', fwdMonHandler);
} else {
month = createTiddlyElement(row, 'td', null, 'calendarMonthname', name)
month.setAttribute('colSpan',config.options.chkDisplayWeekNumbers?8:7);//wn**
}
month.align = 'center';
month.style.background = config.macros.calendar.monthbg;
}
//}}}
//{{{
function createCalendarDayHeader(row, num)
{
var cell;
for(var i = 0; i < num; i++) {
if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, 'td');//wn**
for(var j = 0; j < 7; j++) {
var d = j + (config.options.txtCalFirstDay - 0);
if(d > 6) d = d - 7;
cell = createTiddlyElement(row, 'td', null, null, config.macros.calendar.daynames[d]);
if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))
cell.style.background = config.macros.calendar.weekendbg;
}
}
}
//}}}
//{{{
function createCalendarDays(row, col, first, max, year, mon) {
var i;
if (config.options.chkDisplayWeekNumbers){
if (first<=max) {
var ww = new Date(year,mon,first);
var td=createTiddlyElement(row, 'td');//wn**
var link=createTiddlyLink(td,ww.formatString(config.options.txtWeekNumberLinkFormat),false);
link.appendChild(document.createTextNode(
ww.formatString(config.options.txtWeekNumberDisplayFormat)));
}
else createTiddlyElement(row, 'td');//wn**
}
for(i = 0; i < col; i++)
createTiddlyElement(row, 'td');
var day = first;
for(i = col; i < 7; i++) {
var d = i + (config.options.txtCalFirstDay - 0);
if(d > 6) d = d - 7;
var daycell = createTiddlyElement(row, 'td');
var isaWeekend=((d==(config.options.txtCalStartOfWeekend-0)
|| d==(config.options.txtCalStartOfWeekend-0+1))?true:false);
if(day > 0 && day <= max) {
var celldate = new Date(year, mon, day);
// ELS 10/30/05 - use <<date>> macro's showDate() function to create popup
// ELS 05/29/06 - use journalDateFmt
if (window.showDate) showDate(daycell,celldate,'popup','DD',
config.macros.calendar.journalDateFmt,true, isaWeekend);
else {
if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;
var title = celldate.formatString(config.macros.calendar.journalDateFmt);
if(calendarIsHoliday(celldate))
daycell.style.background = config.macros.calendar.holidaybg;
var now=new Date();
if ((now-celldate>=0) && (now-celldate<86400000)) // is today?
daycell.style.background = config.macros.calendar.todaybg;
if(window.findTiddlersWithReminders == null) {
var link = createTiddlyLink(daycell, title, false);
link.appendChild(document.createTextNode(day));
} else
var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);
}
}
day++;
}
}
//}}}
//{{{
// Create a pop-up containing:
// * a link to a tiddler for this date
// * a 'new tiddler' link to add a reminder for this date
// * links to current reminders for this date
// NOTE: this code is only used if [[ReminderMacros]] is installed AND [[DatePlugin]] is //not// installed.
function onClickCalendarDate(ev) { ev=ev||window.event;
var d=new Date(this.getAttribute('title')); var date=d.formatString(config.macros.calendar.journalDateFmt);
var p=Popup.create(this); if (!p) return;
createTiddlyLink(createTiddlyElement(p,'li'),date,true);
var rem='\\n\\<\\<reminder day:%0 month:%1 year:%2 title: \\>\\>';
rem=rem.format([d.getDate(),d.getMonth()+1,d.getYear()+1900]);
var cmd="<<newTiddler label:[[new reminder...]] prompt:[[add a new reminder to '%0']]"
+" title:[[%0]] text:{{store.getTiddlerText('%0','')+'%1'}} tag:%2>>";
wikify(cmd.format([date,rem,config.options.txtCalendarReminderTags]),p);
createTiddlyElement(p,'hr');
var t=findTiddlersWithReminders(d,[0,31],null,1);
for(var i=0; i<t.length; i++) {
var link=createTiddlyLink(createTiddlyElement(p,'li'), t[i].tiddler, false);
link.appendChild(document.createTextNode(t[i]['params']['title']));
}
Popup.show(); ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return false;
}
//}}}
//{{{
function calendarMaxDays(year, mon)
{
var max = config.macros.calendar.monthdays[mon];
if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) max++;
return max;
}
//}}}
//{{{
function createCalendarDayRows(cal, year, mon)
{
var row = createTiddlyElement(cal, 'tr');
var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first1 < 0) first1 = first1 + 7;
var day1 = -first1 + 1;
var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first2 < 0) first2 = first2 + 7;
var day2 = -first2 + 1;
var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first3 < 0) first3 = first3 + 7;
var day3 = -first3 + 1;
var max1 = calendarMaxDays(year, mon);
var max2 = calendarMaxDays(year, mon+1);
var max3 = calendarMaxDays(year, mon+2);
while(day1 <= max1 || day2 <= max2 || day3 <= max3) {
row = createTiddlyElement(cal, 'tr');
createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;
createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;
}
}
//}}}
//{{{
function createCalendarDayRowsSingle(cal, year, mon)
{
var row = createTiddlyElement(cal, 'tr');
var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first1 < 0) first1 = first1+ 7;
var day1 = -first1 + 1;
var max1 = calendarMaxDays(year, mon);
while(day1 <= max1) {
row = createTiddlyElement(cal, 'tr');
createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
}
}
//}}}
//{{{
setStylesheet('.calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }', 'calendarStyles');
//}}}
[[御我個人檔案]][[動機來源和心得]] [[資料來源]]
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
major: 1, minor: 1, revision: 0,
date: new Date("mar 17, 2007"),
source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};
if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};
bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){
url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
}
return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
<<tag 御我>>
<<tag 御我的作品>>
<<tag 其他>>
<<tag 簡毓伶>>
<div class='header' macro='gradient vert #FFF #FFF '>
<div class='gradient'>
<div class='titleLine' >
<span class='searchBar' macro='search'></span>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
</div>
</div>
<div id='bodywrapper'>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<div id='displayFooter'></div>
</div>
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 19, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.2.0 (Beta 5)'
};
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");
merge(config.macros.option.types, {
'pas': {
elementType: "input",
valueField: "value",
eventName: "onkeyup",
className: "pasOptionInput",
typeValue: config.macros.option.passwordInputType,
create: function(place,type,opt,className,desc) {
// password field
config.macros.option.genericCreate(place,'pas',opt,className,desc);
// checkbox linked with this password "save this password on this computer"
config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
},
onChange: config.macros.option.genericOnChange
}
});
merge(config.optionHandlers['chk'], {
get: function(name) {
// is there an option linked with this chk ?
var opt = name.substr(3);
if (config.options[opt])
saveOptionCookie(opt);
return config.options[name] ? "true" : "false";
}
});
merge(config.optionHandlers, {
'pas': {
get: function(name) {
if (config.options["chk"+name]) {
return encodeCookie(config.options[name].toString());
} else {
return "";
}
},
set: function(name,value) {config.options[name] = decodeCookie(value);}
}
});
// need to reload options to load passwordOptions
loadOptionsCookie();
/*
if (!config.options['pasPassword'])
config.options['pasPassword'] = '';
merge(config.optionsDesc,{
pasPassword: "Test password"
});
*/
//}}}
現在時間是@@<<today>>
[img[http://www.easycounter.com/counter.php?dream3139]]<<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<tiddler TspotSidebar>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
/***
Inspired by k2
!General
***/
/*{{{*/
body {
background: #EDEDED;
}
#contentWrapper{
background: #fff;
border:1px solid #DDD;
margin: 0 auto;
width: 780px;
padding:0;
}
/*}}}*/
/***
!Links
***/
/*{{{*/
a,
a.tiddlyLink,
a.button,
a.externalLink,
#sidebarOptions .sliderPanel a{
color: #1D65BC;
text-decoration: none;
background: transparent;
border: 0;
}
a:hover,
a.tiddlyLink:hover,
a.button:hover,
a.externalLink:hover,
#sidebarOptions .sliderPanel a:hover
{
border: 0;
color: #1D65BC;
text-decoration: underline;
background:transparent;
}
.button:active {background:#1d65bc; border:0;}
.viewer .button:active, .viewer .marked, .viewer .highlight {
color: #fff !important;
background: #3371a3;
border: 0;
}
/*}}}*/
/***
!Header
***/
/*{{{*/
.gradient {margin-top:20px; background:#3371A3;}
.titleLine{padding: 80px 40px 32px 40px;}
.titleLine a:hover{color:#fff; border-bottom:1px dotted #eee; text-decoration:none;}
.titleLine a{color:#fff; border-bottom:1px dotted #ccc;}
.siteTitle {
font-size: 2.2em;
font-weight: bold;
color:#fff;
}
.siteSubtitle {
font-size: 1.0em;
display: block;
margin: .3em auto 1em;
color:#fff;
}
/*}}}*/
/***
!TopMenu
***/
/*{{{*/
#topMenu br {display:none; }
#topMenu { background: #3371A3; font-size:1em; }
#topMenu { padding:5px 32px; }
#topMenu .button, #topMenu .tiddlyLink {
margin-left:0.1em; margin-right:0.1em;
padding:0.5em;
color:white; font-weight:normal;
}
#topMenu a.button:hover, #topMenu a.tiddlyLink:hover { background:#fff; color:#333; text-decoration:none;}
.searchBar {float:right; font-size:0.9em;}
.searchBar .button {display:block; border:none; color:#ccc;}
.searchBar .button:hover{border:none; color:#eee;}
.searchBar input{
border: 1px inset #1d65bc; background:#dbdee3;
}
.searchBar input:focus {
border: 1px inset #3371a3; background:#fff;
}
/*}}}*/
/***
!Display
***/
/***
!!!Display General
***/
/*{{{*/
#displayArea { margin: 0em 15.7em 0em 1em; }
#displayFooter {
clear: both;
}
#displayFooter {
clear: both;
}
#tiddlerDisplay{padding-top:1em;}
/*}}}*/
/***
!!!Tiddler
***/
/*{{{*/
.tiddler {margin-bottom:1em; padding-bottom:1em;}
.tiddler {padding-left:2em;}
.title {color:#333; font-size:1.8em; border-bottom:1px solid #333; padding-bottom:0.3px;}
.subtitle { font-size:90%; color:#bbb; padding-left:0.25em; margin-top:0.1em; }
.shadow .title {
color: #aaa;
}
h1,h2,h3,h4,h5 { color: #333; background: transparent; padding-bottom:2px; border-bottom: 1px dotted #666; }
* html .viewer pre {
margin-left: 0em;
}
.viewer hr {
border: 0;
border-top: solid 1px #333;
margin: 0 8em;
color: #333;
}
.viewer a.button {color:#000; border:1px solid #1D65BC; font-weight:bold;}
.viewer a.button:hover{color:#fff; background:#3371a3; text-decoration:none;}
.tagClear {clear:none;}
.toolbar .button {color:#bbb; border:none;}
.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active {background:transparent; color:#111; border:none; text-decoration:underline;}
.tiddler {border-bottom:3px solid #EEF1F3; padding-bottom:2em; padding-top:0em;}
.title {border-bottom:none; margin-right:8em;}
h1,h2,h3,h4,h5 { color: #333; background: transparent; padding-bottom:2px; border-bottom: none; }
.viewer pre, .viewer code {
border: 1px solid #B2B6BE;
background: #EBEEF1;}
.tagging, .tagged {
border: 1px solid #dbdee3;
background-color: #ebeef1;
}
.selected .tagging, .selected .tagged {
background-color: #dbdee3;
border: 1px solid #B2B6BE;
}
.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}
.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #014;
}
.tagging .button:hover, .tagged .button:hover {
border: none; background:transparent; text-decoration:underline; color:#014;
}
.tagged .highlight, .tagged .marked, .tagged a.button:active {text-decoration:underline; background:transparent; color:#014;}
.tagging .button, .tagged .button {
color:#bbb;
}
.selected .tagging .button, .selected .tagged .button {
color:#014;
}
.viewer blockquote {
border-left:7px solid #ebeef1;
}
.viewer table {
border: 1px solid #3371a3;
}
.viewer th, thead td {
background: #3371a3;
border: 1px solid #3371a3;
color: #fff;
}
.viewer td, .viewer tr {
border: 1px solid #3371a3;
}
/*}}}*/
/***
!!!Editor
***/
/*{{{*/
* html .editor textarea, * html .editor input {
width: 98%;
}
.editor input, .editor textarea {
border: 1px solid #1d65bc; background:#ebeef1;
}
.editor {padding-top:0.3em;}
.editor textarea:focus, .editor input:focus {
border: 1px inset #3371a3; background:#fff;
}
/*}}}*/
/***
!Sidebar
***/
/*{{{*/
#sidebar{
position:relative;
float:right;
margin-bottom:1em;
display:inline;
width: 16em;
}
#sidebar .tabSelected, #sidebar .tabSected:hover {
color: #000;
background: #dbdee3;
border-top: solid 1px #B2B6BE;
border-left: solid 1px #B2B6BE;
border-right: solid 1px #B2B6BE;
border-bottom:solid 1px #dbdee3 !important;
padding-bottom:1px;
text-decoration:none;
}
#sidebarOptions, #sidebarTabs {border-left: 1px solid #B2B6BE;}
#sidebarTabs {border-bottom: 1px solid #B2B6BE;}
#sidebar .tabUnselected, #sidebar .tabUnselected:hover {
color: #F0F3F5;
background: #B2B6BE ;
border: solid 1px #B2B6BE ;
padding-bottom:1px;
}
#sidebarTabs .tabContents {border:none; background:#DBDEE3; }
#sidebarTabs .tabContents {border-top:1px solid #B2B6BE;}
#sidebarTabs .tabContents .tabContents {border-left:1px solid #b2b6be;}
#sidebarOptions .sliderPanel {
background: #EBEEF1; border:none;
}
#sidebarOptions input {
border: 1px solid #1d65bc;
}
#sidebarOptions input:hover, #sidebarOptions input:active, #sidebarOptions input:focus {
border: 1px inset #3371a3;
}
#sidebar {background: #EBEEF1 ; right:0;}
#sidebar .button:active, #sidebar .marked, #sidebar .highlight {color:#014; background:transparent;text-decoration:none}
/*}}}*/
/***
!!Popups
***/
/*{{{*/
.popup {
background: #3371a3;
border: 1px solid #333;
}
.popup hr {
color: #333;
background: #333;
border-bottom: 1px;
}
.popup li.disabled {
color: #333;
}
.popup li a, .popup li a:visited {
color: #eee;
border: none;
}
.popup li a:hover {
background: #3371a3;
color: #fff;
border: none;
text-decoration:underline;
}
/*}}}*/
/***
!!Message Area
***/
/*{{{*/
#messageArea {
border: 2px dashed #3371a3;
background: #dbdee3;
color: #fff;
font-size:90%;
}
#messageArea .button {
color: #1d65bc;
background: #ebeef1;
text-decoration:none;
font-weight:bold;
border:none;
}
#messageArea a.button {color:#1d65bc;}
#messageArea .button:hover {text-decoration:underline;}
/*}}}*/
/***
!!Tabs
***/
/*{{{*/
.viewer .tabSelected, .viewer .tabSelected:hover{
color: #014;
background: #eee;
border-left: 1px solid #B2B6BE;
border-top: 1px solid #B2B6BE;
border-right: 1px solid #B2B6BE;
}
.viewer .tabUnselected, .viewer .tabUnselected:hover {
color: #fff;
background: #B2B6BE;
}
. viewer .tabContents {
color: #014;
background: #ebeef1;
border: 1px solid #B2B6BE;
}
/*}}}*/
.blog h2, .blog h3, .blog h4{
margin:0;
padding:0;
border-bottom:none;
}
.blog {margin-left:1.5em;}
.blog .excerpt {
margin:0;
margin-top:0.3em;
padding: 0;
margin-left:1em;
padding-left:1em;
font-size:90%;
border-left:1px solid #ddd;
}
#tiddlerWhatsNew h1, #tiddlerWhatsNew h2 {border-bottom:none;}
div[tags~="RecentUpdates"], div[tags~="lewcidExtension"] {margin-bottom: 2em;}
#topMenu .fontResizer {float:right;}
#topMenu .fontResizer .button{border:1px solid #3371A3;}
#topMenu .fontResizer .button:hover {border:1px solid #fff; color:#3371A3;}
#sidebarTabs .txtMainTab .tiddlyLinkExisting {
font-weight: normal;
font-style: normal;
}
#sidebarTabs .txtMoreTab .tiddlyLinkExisting {
font-weight: bold;
font-style: normal;
}
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{
// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'dream3139';
// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too
// disable autosave in d3
if (window.location.protocol != "file:")
config.options.chkGTDLazyAutoSave = false;
// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}
// create some shadow tiddler content
merge(config.shadowTiddlers,{
'WelcomeToTiddlyspot':[
"This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
"<<tiddler TspotControls>>",
"See also GettingStarted.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// @@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Help!// @@ 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]].",
"",
"@@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."
].join("\n"),
'TspotControls':[
"| tiddlyspot password:|<<option pasUploadPassword>>|",
"| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
"| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),
'TspotSidebar':[
"<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),
'TspotOptions':[
"tiddlyspot password:",
"<<option pasUploadPassword>>",
""
].join("\n")
});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 11/06/2009 00:35:17 | 某絳 | [[/|http://dream3139.tiddlyspot.com/]] | [[store.cgi|http://dream3139.tiddlyspot.com/store.cgi]] | . | [[index.html | http://dream3139.tiddlyspot.com/index.html]] | . | ok |
| 11/06/2009 00:58:39 | 某絳 | [[/|http://dream3139.tiddlyspot.com/]] | [[store.cgi|http://dream3139.tiddlyspot.com/store.cgi]] | . | [[index.html | http://dream3139.tiddlyspot.com/index.html]] | . | ok |
| 11/06/2009 01:06:32 | 某絳 | [[/|http://dream3139.tiddlyspot.com/]] | [[store.cgi|http://dream3139.tiddlyspot.com/store.cgi]] | . | [[index.html | http://dream3139.tiddlyspot.com/index.html]] | . |
| 11/06/2009 01:22:28 | 某絳 | [[/|http://dream3139.tiddlyspot.com/]] | [[store.cgi|http://dream3139.tiddlyspot.com/store.cgi]] | . | [[index.html | http://dream3139.tiddlyspot.com/index.html]] | . |
| 11/06/2009 01:47:17 | 簡毓伶 | [[/|http://dream3139.tiddlyspot.com/]] | [[store.cgi|http://dream3139.tiddlyspot.com/store.cgi]] | . | [[index.html | http://dream3139.tiddlyspot.com/index.html]] | . |
| 11/06/2009 02:06:15 | 某絳 | [[/|http://dream3139.tiddlyspot.com/]] | [[store.cgi|http://dream3139.tiddlyspot.com/store.cgi]] | . | [[index.html | http://dream3139.tiddlyspot.com/index.html]] | . |
| 11/06/2009 02:16:24 | 某絳 | [[/|http://dream3139.tiddlyspot.com/]] | [[store.cgi|http://dream3139.tiddlyspot.com/store.cgi]] | . | [[index.html | http://dream3139.tiddlyspot.com/index.html]] | . |
| 11/06/2009 11:45:22 | 某絳 | [[/|http://dream3139.tiddlyspot.com/]] | [[store.cgi|http://dream3139.tiddlyspot.com/store.cgi]] | . | [[index.html | http://dream3139.tiddlyspot.com/index.html]] | . |
| 11/06/2009 12:17:18 | 某絳 | [[/|http://dream3139.tiddlyspot.com/]] | [[store.cgi|http://dream3139.tiddlyspot.com/store.cgi]] | . | [[index.html | http://dream3139.tiddlyspot.com/index.html]] | . | ok |
| 11/06/2009 12:29:46 | 某絳 | [[/|http://dream3139.tiddlyspot.com/]] | [[store.cgi|http://dream3139.tiddlyspot.com/store.cgi]] | . | [[index.html | http://dream3139.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 3,
date: new Date("Feb 24, 2008"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
if (!params) params = {};
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
options: [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine"
],
refreshOptions: function(listWrapper) {
var opts = [];
for(i=0; i<this.options.length; i++) {
var opt = {};
opts.push();
opt.option = "";
n = this.options[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
};
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
var rssString = generateRss();
// no UnicodeToUTF8 conversion needed when location is "file" !!!
if (document.location.toString().substr(0,4) != "file")
rssString = convertUnicodeToUTF8(rssString);
bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == 404)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
//}}}
!劇情簡介
這是一個不殺人的殺手與他很衰的夥伴一起愉快的旅程的故事。
凱司,天下第一懶鬼,生平最愛的就是錢和睡覺,除非有好處不然絕不會動手去做事情。某天,常在新聞上報導到不想報導的異世界人出現事件居然就出現在他打掃的時候,本來嫌麻煩想把他隨便交給安容所,卻發現,原來他們天性相剋,湊在一起就會惹出他最最討厭的超級大麻煩。
利奧拉,在原本世界中是人人聞風喪膽的第一殺手,個性冷酷無情,卻在遇到某名女性後出現感情而被追殺,逃亡途中意外掉入了異世界,本來以為憑他的能力也能在異世界中好好生存,沒想到,這個毫無紀律、紛亂又充滿未知事物的世界,加上一個愛利用他的懶鬼,他比逃亡還要累。
這兩個麻煩組合被人騙進了阿卡蘭學院後,想從此低調過日子的錢鬼和想過著普通學園生活的殺手,沒幾天後便知道,阿卡蘭應該是最可怕的地方。
!相關介紹
這是御我另一個成名代表作,在冒險者天堂裡的排名也非常高,跟《1/2王子》不同的是,此部多了許多嚴肅的劇情,甚至有人死掉,而那名角色死掉的片段讓很多人掉下眼淚。儘管如此,這部的笑點依舊非常多,主角凱司雖然說話老是帶髒字,卻也增加了許多韻味,搞笑的性格讓他人氣非常高。除了搞笑劇情外又添增了許多嚴肅和傷心的劇情,讓不殺這本書也十分受歡迎,使御我的人氣更加提升。
這部冒險者天堂封面還是亞砂畫的,本來也要出完全版的口袋書,但繪製的封面的戰部露因為人物設定和亞砂版本的不同而遭受批評,最後放棄,口袋書計畫也告終,但在他把人物設定公開後,獲得的正面評價反而比負面多很多。
此部作品在2009年2月4日出了精裝版,除了包裝和書質較為精緻外,整部書也從新修過,文筆和用詞更加成熟,更添加了外篇,繪者也相當有名,是幫遊戲「風色幻想」畫過人物的小鐵,他在《不殺》出外傳時就畫過封面,精裝版目前也是在出版中,在2009年5月11日出了第三集。
!我對這部作品的看法
我很喜歡這部,就御我姐目前出過的作品中,這部可以說是我最愛的前三名。背景設定讓我很喜愛,凱司在的世界中,科技非常發達,甚至因為開發太過而導致他們有些地方的樹木是人造樹,但發達歸發達,卻還是由帝國所統治,西方色彩非常重,利奧拉所待的世界就是東方色彩十足了。故事劇情非常有趣,就架構來說很完整,伏筆也埋的很好,感覺每個事件都是必要的,到後面緊湊的劇情非常得我心。我也喜歡裡頭的騎士設定,或許是因為我對騎士本來就很有愛吧,我很推薦這部小說。
!各集封面
[img[http://ebook.ezla.com.tw/photo/05401M.jpg]][img[http://ebook.ezla.com.tw/photo/05402M.jpg]]
[img[http://ebook.ezla.com.tw/photo/05403M.jpg]][img[http://ebook.ezla.com.tw/photo/05404M.jpg]]
[img[http://ebook.ezla.com.tw/photo/05405M.jpg]][img[http://ebook.ezla.com.tw/photo/05406M.jpg]]
[img[http://ebook.ezla.com.tw/photo/05407M.jpg]][img[http://ebook.ezla.com.tw/photo/05408M.jpg]]
[img[http://ebook.ezla.com.tw/photo/05409M.jpg]][img[http://ebook.ezla.com.tw/photo/05410M.jpg]]
[img[http://ebook.ezla.com.tw/photo/05411M.jpg]][img[http://ebook.ezla.com.tw/photo/05412M.jpg]]
[img[http://ebook.ezla.com.tw/photo/05413M.jpg]][img[http://ebook.ezla.com.tw/photo/05414M.jpg]]
!相關介紹
這是御我確定會出版的作品,接續在《吾命騎士》後出版。是部跟御我以往風格非常不一樣的作品,但也同樣讓人期待。
本部作品的主角是花(性別為男),所以便是由花的角度去看世界,著重於劇情,筆風較為嚴肅,算是御我的挑戰作,預定會出三集,天使出版社出版。
御我的網誌中有[[對公華做一些介紹|御我論《非關英雄》和《公華》]],大家可以去看。這部前三章也有在御我的網誌中連載。
!我對這部作品的看法
這部的筆風真的很特殊,完全感受不到歡樂的氣氛,從一開始就很嚴肅。一朵黑色不被大家喜愛的花,一直以為葉們會待在他的身邊,沒想到,葉們最後還是離他遠去,他在回到住所的途中還被人類抓走,最後因住所(世界樹)毀滅而抓狂殺了抓住他的人類,最後被兩個人類撿了回去,暫時過了快樂的生活,也學會了很多事情。
總覺得,公華他漸漸的像人類了,一朵花現在要漸漸變成人類,感覺還挺有趣的,不過,我想快樂的日子應該不會過很久,畢竟這不是部歡樂的小說,但我很期待他的後續發展,御我的嚴肅筆風還挺讓我喜歡的。
這次想主題想很久,因為一直很喜歡御我這個作者,所以就做了關於她的介紹。說真的,我這次查完資料後才發現,我對御我其實也不是說非常了解,所以得到挺多心得的。
周邊朋友幾乎都看過御我的書,所以收集資料遇到瓶頸時都能問他們,很感謝他們替我做解答,不管是對那部作品的心得,或是什麼評論,對我來說都很重要,雖然因為怕寫太多字所以沒有加到內容中,不過我都有謹記在心。
其實在寫的過程中,我也曾想過要不要換主題,因為御我其實挺有名的。所以就想介紹宇峻奧汀的遊戲,像是「新絕代雙驕」系列或是「幻想三國誌」系列,不過相關的資料我都放在家裡,加上一直想換主題就會永遠做不完,所以我就繼續把這個主題做完了,要不然我又要再花好幾天去收集資料。
其他有名作家像是護玄,我也非常喜愛,要從幾個愛中選一個介紹,真的還挺猶豫的就是。
不過我很喜歡御我,所有買的書中,有一半以上都是他的,介紹和收集資料比較輕鬆一些,畢竟本來就比較了解。
!劇情介紹
這是個一個不會用劍的聖騎士之首與比他會用劍的十一聖騎士之間的友情故事。
我是一名騎士,正確來說,是光明神殿的太陽騎士。
光明神殿侍奉的是光明神,也是這塊大陸上,勢力排得上前三大的信仰。
全大陸的人都知道,光明神殿有十二位聖騎士,每一個聖騎士都有自己該有的個性和特徵。
太陽騎士就是得有一頭燦爛的金髮,蔚藍的眼睛,悲天憫人的個性和璀璨的笑容。
「仁慈的光明神會原諒你的罪惡的。」
這句話在我的騎士生涯中至少說過上百萬次。
但我這輩子最大的期望就是能在全大陸面前大吼:「去你媽的『全大陸都知道』,
我這個太陽騎士就是不爽笑!
我就是不想原諒那些人渣!
我就是想說每一句話的時候都帶『幹」字!」
可惜,到目前為止,我還是帶著笑容繼續在說:「仁慈的光明神會原諒你的罪惡的。」
!相關介紹
從這部開始,御我轉向春天出版社底下的天使出版社,名小說家像是九把刀也是這個出版社的。
比較早認識御我的人,幾乎會說他是看了《1/2王子》才愛上御我的,而比較後期認識御我的人,大部份會說他是看了《吾命騎士》才認識御我的。《吾命騎士》又為御我帶來許多購買潮,每次出版,總會登上金石堂的排行榜,預購時登上好多次,出版後又繼續在排行榜上逗留,最新的《吾命騎士五-不死巫妖(上)》更進軍蘋果日報的排行,先是第六名,又提升到第三名。2008年的漫博會更推出周邊商品,導致春天出版社的攤位大排長龍,大家花了幾個小時排隊就為了買到周邊商品,最後甚至造成缺貨。
此部目前還未完結,但御我的預定是八集就完結。
因為這部本來就是以歡樂的氣氛吸引人的,後期的劇情卻越來越沉重,御我也說過,雖然大家都覺得要搞笑才是吾命,但御我覺得,光會搞笑是沒有辦法將一本書完結的,有些人不太贊同御我的作風,有朋友就跟我說過,一部因為歡樂而吸引他的書,到後來變得不歡樂了、變得沉重了,就因為作者覺得他不想一直搞笑,而就我來說,是不反對沉重劇情出現的。
而針對這方面的事情,[[御我有在網誌上說明|御我論《吾命騎士》四、五]]。
另外,御我有一部作品跟這部相關,叫做[[尋找羅蘭|尋找羅蘭]],不過這部填完坑的機率有點低……
!我對這部作品的看法
當初看完《不殺》後我就喜歡上了御我的筆風,《吾命騎士》更是經典,看第一集時,我笑到肚子痛,第二集也不例外,裡頭當然有嚴肅些的劇情,但整部真的就是以笑點取勝,我當初馬上就愛上這部作品。
但如果以嚴肅的角度來看,這部帶有挺深的悲哀感,從主角必須帶著面具面對世人就開始感到悲哀了,雖然他表面上優雅到不行,實際上相反的個性總是會讓人發笑,卻也讓人不免感到難過,明明他私底下的個性也很棒,他把底下的聖騎士看的非常重要,有著自己的一套正義,這樣的太陽騎士更加吸引人,可是他不能展現給世人,因為他們要的,是一個舉止優雅、笑容燦爛的太陽騎士,其他的聖騎士也必須戴上屬於自己的面具,據說故事後面便會著重的描寫這部份了。
這部的第四集罵聲最多,因為主角喪失記憶而傷害了聖騎士,使大家非常氣憤,大家都以為,喪失記憶的他也不會傷害聖騎士了,加上爆字讓後段的描寫不夠完整,這部就讓大家開始感覺到,吾命的歡樂要開始減少了。第四集對我造成的影響真的很多,可是我不反對沉重劇情出現,總覺得,從看到設定開始,就開有這種自知了。
!各集封面
[img[http://farm4.static.flickr.com/3385/3614459038_4188be07e2_o.jpg]][img[http://farm4.static.flickr.com/3299/3613640257_cd7ff855a3_o.jpg]]
[img[http://farm3.static.flickr.com/2427/3614460128_d3efdabb9a_o.jpg]][img[http://farm3.static.flickr.com/2465/3614460820_12881b9fca_o.jpg]]
[img[http://farm3.static.flickr.com/2460/3614461330_f4e623384a_o.jpg]]
!相關介紹
這是御我一個預定會寫完但出版日遙遙無期的作品。在網路上也只連載兩篇便沒有後續。這是跟《吾命騎士》相關的作品,裡頭的羅蘭就是指《吾命騎士》中有出現過的羅蘭˙魔獄,而那位尋找羅蘭的人,說法不一,有人說是《吾命騎士》的主角──格里西亞˙太陽,又或者,就是羅蘭本人,也有其實他是新角色的推測。
本來這本書是有要出版的,後來改出版《非關英雄》,這部就沒有辦法排入出版進度,被御我放到封印區,目前似乎沒有接續的打算。但《吾命騎士》越來越有名,很多人也一直要求能夠出版,或許後來真的會出版也說不定。
!我對這部作品的看法
嗯,就跟我前頭所說,這部只有出兩篇,那兩篇的篇幅也不長,所以關於劇情走向什麼的都沒有辦法很清楚,只知道主軸是尋找羅蘭。
當初看完的心情很沉重,因為裡頭給的線索,讓我覺得他就是格里西亞,一個人人景仰的太陽騎士。他喜歡黃色和藍色,而格里西亞就有著燦爛的金髮和藍色的眼睛;他很會使用魔法,格里西亞的魔法能力甚至可以超過教皇,最後再加上他脖子上的項鍊跟他時常掛著的「永恆的寧靜」很像,讓我更加懷疑他就是格里西亞。
但是,格里西亞是個太陽騎士,不是死亡領主,沒錯,他在《尋找羅蘭》中的造型無疑就是死亡領主,而死亡領主其實是羅蘭,這樣那個主角是羅蘭的推測就又成立了,雖然也有人說是太陽之後變成了死亡領主。項鍊上刻著的名字也很讓人好奇,可是羅蘭最擅長的是劍術而不是魔法。這樣我就會又懷疑他只是個新角色……
總覺得這部作品還沒出來,大家就會自行想像很多劇情了……這個謎也無法解開。
!基本資料
|性別|女|
|生日|1984年4月29日|
|血型|O型|
|年齡|25歲|
|身高|比喬登矮比三個蘋果高(出自[[御我自白書|http://www.wretch.cc/blog/kim1984429]])|
|體重|比戎祥瘦比蔡依琳胖(出自[[御我自白書|http://www.wretch.cc/blog/kim1984429]])|
|學歷|成功大學外文系|
!出版歷史(出版日期不包含完全版和精裝版)
[[1/2王子|1/2王子]](2004/10/04~2005/08/15,共八集+歪傳)
[[不殺|不殺]](2005/07/04~2008/03/06,共十三集+外傳)
[[戀愛RPG|戀愛RPG]](2006/03/07,共一集)
[[玄日狩|玄日狩]](2006/08/12~2008/08/09,共五集)
[[GOD|GOD]](2006/10/23~2008/05/22,共十一集)
[[吾命騎士|吾命騎士]](2007/07/09~,目前共五集)
[[非關英雄|非關英雄]](2008/07/01~,目前共三集)
[[神魔交易|神魔交易]](2008/11/08,共一集)
!預定出版作品
[[公華|公華]](確定會出版)
[[尋找羅蘭|尋找羅蘭]](預計接在《非關英雄》後出版)
女武
!簡介
是有名的台灣輕小說作家,筆風輕鬆幽默,成名代表作之ㄧ的《1/2王子》即是以搞笑的劇情奪得讀者的心。一開始是在冒險者天堂發表文章獲得好評而出書,漸漸打響知名度,後來跳到天使出版社,以《吾命騎士》屢次奪得金石堂銷售前三名,《吾命騎士五:不死巫妖(上)》還登上蘋果日報排行第三名。
和知名繪者亞砂是好朋友,作品多由亞砂繪製,兩人在2006年組成名為「御飯糰」的社團開始在同人場自資出版《玄日狩》販售,有相當好的迴響,據說賣到第五集時,有一整面的觀眾席都是坐著要買書的讀者,在網路上可以標到兩三倍的價錢,最近一場出的《無敵》至少要一千六才買的到(定價三百元)。但因為出版過後總是會面臨要求加印的聲音,加印了好幾次依然供不應求,又有人為了賺取差價,占用許多名額買了一堆書再賣出,造成許多問題,便在2009年3月15日宣告「御飯糰」解散。和作家水泉也是好朋友,經常在雙方的網誌中看見對方的名字,順帶一提,水泉最新的作品《沉月之鑰》的封面便是由亞砂繪製,可見三人感情不錯。
御我的作品產量不少,有時能同時出版兩三部作品,大多是較長篇的作品,曾說過因為長時間一直寫一個作品會累,所以會想換換口味寫。第一人稱和第三人稱都寫的不錯,目前出版中的《吾命騎士》和《非關英雄》則都是第一人稱撰寫,最近在網誌開玩笑的說:「再不寫本第三人稱,我覺得我的第三人稱就快要寫不上手了」
御我有著反骨的性格,《吾命騎士》是由另一個角度去看騎士,《非關英雄》則是用不同角度去看英雄,預定出版的《公華》便以花的角度去看世界。總是被說「不能在課堂上看御我的書,不然會憋笑的很痛苦」的她,也決定要反自己,未來會出版的《公華》將挑戰宏大的世界觀,以劇情為主,不再刻意添加笑點,儘管有人贊成有人反對,能夠的知道的,便是御我想進軍嚴肅向的輕小說領域。
!我對作者的看法
御我姐算是我第一個瘋狂愛上的作者吧,第一部接觸的作品就是《1/2王子》,在看的時候總是笑到肚子痛,但真正讓我愛上她的是《不殺》,一開始總覺得御我姐的書就是搞笑,但《不殺》中有不少嚴肅和傷心的劇情,讓我非常喜愛。
說到最喜歡御我姐的地方,除了搞笑的筆法,大概就是劇情的鋪陳吧,她有些作品劇情緊湊,戰鬥描寫也非常生動,心情總是隨著角色起伏,完全融在故事中,她的作品有莫名的吸引力,讓人想一看再看,之前看到《不殺》有十三集讓我很卻步,因為我不喜歡看很長的小說,但看了以後,我反而覺得十三集不夠。
不過御我姐的作品還是有些缺點的,她寫的幾乎都是比較長的小說,如果設定不夠強,就很容易出差錯,加上御我姐常常會同時出版兩三部作品,光趕稿就沒有時間,導致作品有時會出現BUG,像《吾命騎士》中的羅蘭是皇家騎士有名的隊長,後來受虐致死成了死亡騎士,而格里西亞在第一集幫他製造升天的假象後,第二集的羅蘭卻還是可以以原本的樣子走在大街上不被皇家騎士認出來。而《非關英雄》中的吸血鬼不會被攝影機和相機拍到,但主角朝索卻可以從電視新聞上看到他的吸血鬼朋友。因為要設定推移的劇情太多,這些常被忽略的小地方就會造成錯誤。
此外,雖然御我姐輕鬆白話的筆風讓我很喜愛,卻難免會有一些冗辭贅字,或許真的是他要趕的稿太多,沒辦法花太多時間煉字吧,這點挺可惜的。不過她的文筆還算不差。
摘自[[御我自白書-隨筆~吾命騎士4和5|http://www.wretch.cc/blog/kim1984429/12029964]]
最近看了很多騎士五的心得,
大家似乎覺得謎團很多啊....嗯,是不少。(被打)
不過其實有很多謎也不真的算是謎,我是想引導大家去想某個答案的,
如果大家有被引導去那個答案,
有很多謎其實已經揭曉了...一半。(被打)
還有說第四、第五集沒有前三集好笑,劇情開始沉重之類的。
其實這一直都是我的每一部作品的問題。
御我都快差不多等於搞笑了,不搞笑就是我的罪惡了。
但一部故事中,相同的一批角色、相同的設定、相同的世界,能夠搞笑的地方總是越來越少,
而且也無法一直在搞笑。
我寫的不是笑話集。笑話集不用結尾,但小說要。
從頭到尾都在搞笑的東西,我還真的不知道該怎麼結尾。
不過我也很了解大家對沉重劇情的感受,我自己也是讀者,
舉以前看尼羅河女兒這套漫畫的感受好了,
有一段時間,女主角和男主角分別了超久,
讓我邊看邊罵怎麼還不相見、搞什麼鬼啊、我不要看他們分開啦、他們好可憐,快點讓他們見面...
最後,他們當然重逢了,看到這段劇情,我真是有種鬆一口氣的感動。
漫畫中要表達的,男女主角會更珍惜彼此的那種感情,我也感受到了。
如果,男女主角沒有分別這段時間,要怎麼寫重逢的感動?
如果,男女主角只是象徵性的分開個幾天,重逢的時候真能讓我有多感動嗎?
我真的相信他們會因為這次的事件而多珍惜對方嗎?
老實說,讀者喜歡的劇情是什麼,我知道;讀者不喜歡的劇情是什麼,我也知道。
但問題就在於,如果沒有這些不喜歡的劇情在鋪陳,
我表達不出、或者沒有辦法那麼深刻表達出我想說的東西。
舉例來說,騎士四中,失憶的格里西亞被罵超慘XD~~
不過話又說回來,其實他被罵越慘,也代表表達得很成功。
格里西亞失憶,離開自己的十二聖騎士,不記得自己的兄弟,
他和普通人生活一段時間,他和普通人的力量差距太大,
所以他想做什麼就做什麼,毫無束縛、無所顧忌。
對比之下,擁有記憶的他有一大堆的束縛和顧忌,
事事都得以太陽騎士的責任為先,以維護光明神殿的利益為優先,
審判、教皇到國王,甚至是公主,許多人都能制衡他......但他擁有兄弟。
嗯,不能再說下去了,其實我說的已經太多了~囧a...
因為其實在之後的集數中,上述這兩段會更明顯。
我一直都不是很喜歡直接說出自己的主旨,
因為我的說法會限制讀者的想法,
當讀者自己看出我想寫的主旨,我真的很高興,
當讀者甚至看出比我心中所想的還多時,我真的高興到不行。
不過以上只是針對搞笑這點來說明而已,
吾命騎士這系列仍舊有許多缺失,很多劇情可以改進。
其實我不管在何時,看之前的小說,總會嘆口氣,覺得其實應該可以寫得更好。
不過就算現在改過,以後的我來看,還是會嘆氣吧XD
不過這樣也好,代表自己應該有在進步吧!
我不期待寫出完美的小說,但我希望自己可以一直進步,下一部作品要更好。這是我對自己的期許。
摘自[[御我自白書-隨筆:非關英雄和公華|http://www.wretch.cc/blog/kim1984429/12030214]]
非關英雄的笑點就少了,
在我寫這本的時候,其實沒有怎麼刻意去想笑點,
不過仍是有笑點,沒辦法,管家和主人都太呆,呆得很好笑。
沒有刻意搞笑的非關英雄到現在的成績還不錯,
雖然沒有吾命騎士的迴響那麼好,
但是還是有很多讀者很喜歡這部作品。
有了非關英雄在先,我才真的敢去開公華這本書。
畢竟,公華和我以往寫的類型真的非常不相同。
不過話說回來,敢開非關英雄也是因為有玄日狩開先鋒。
玄日狩的悲情節不少。
但其實不殺和GOD也....囧
這麼說起來其實是不殺→GOD→玄日狩→非關英雄→公華
不過前四部其實都還是有搞笑的地方。
公華才算是真正的大挑戰吧!
水泉常說我在作品中總是有反骨,
真的沒錯,因為我喜歡用另一種角度去看事情,
吾命騎士不用說,是從另一種角度去看騎士。
非關英雄也是從另一種角度去看英雄。
但公華呢?
公華要反的可不是花,用另一種角度去看花,它還是朵花。(被打)
公華要反的是御我,
反的是御我寫的書一定很好笑,
反的是御我寫的書就是輕鬆閱讀的類型。
連自己都要反,真是反骨到了神經病的地步。
公華想挑戰的是設定完整宏大的世界觀、以劇情為主、還有...
大家看開頭應該稍微能嗅得出來,人生際遇...錯!「花」生際遇坎坷的主角。
(花生....公華你的花生好悲慘啊!<囧>這是什麼句子啊!)
還有自從玄日狩完結後,我大部分時間都在寫第一人稱,
再不寫本第三人稱,我覺得我的第三人稱就快要寫不上手了。
雖然我想寫的公華是比較嚴肅的文,
但其實我也很愛寫搞笑文,
應該說,我想做的就是什麼都寫寫看吧。
將來應該是搞笑和不搞笑都會寫吧!
已開的坑中,
女武算是最搞笑的,會接續吾命騎士,繼續讓大家上課不能偷看這系列XD
尋找羅蘭是不刻意但還是有笑點,笑點比較高的人可以上課偷看,比較低的還是不建議。
還有一部書會接續公華,繼續反御我,這部書應該也是屬於可以上課偷看的類型....
(被老師瞪)
不不不!咳!上課當然是要認真唸書啊!怎麼可以偷看小說啊!
乖~大家都要乖乖唸書,考一百分喔!
!劇情簡介(摘自御我自白書)
當邋遢的灰公主遇上劍精靈...狂想的奇幻故事就此展開
克制不了自己的嘴巴,林劍尹用惡毒的話前後嚇走了八任女朋友和六任經紀人,終於受不了的他在好友的介紹之下,來到一家奇怪的古董店,裡頭號稱有可以幫助他的東西。
雖然卡匣式任天堂是有點年歲了,現在大概也沒人在玩了,但是有必要擺到古董店賣這麼誇張嗎?
抱了台任天堂回家的林劍尹在插上了老闆跳樓大拍賣送的卡匣後,才發現這居然是款養成遊戲,裡頭的女主角不是可愛的蘿利,也不是成熟的御姐,卻是一個頂著歐巴桑頭、穿著藍白拖鞋,說她是台妹還嚴重污辱了台妹的恐怖女人!
天啊!他的任務居然是要把這個女人嫁給一個完美的王子,這怎麼可能啊!!!
等一下,身為男主角的林劍尹卻不是那個王子,那、那他到底是什麼人……不,是什麼『東西』?
!相關介紹
在御我眾多出版物中,這部應該是最少被人看過的,是由JOJO出版社(華中出版社)在2006年3月7日出版,絕版後有收錄在2008年11月的同人場所販賣的《神魔交易》。
因為這部目前絕版,許多人都會以為這是御我最早出的作品,其實這部出書時間比《1/2王子》和《不殺》晚,只是當時比較備受關切的是這兩部作品。
跟平常走奇幻風格的作品比起來,這部可以說是御我第一本愛情小說,但即使如此,裡頭還是帶有些許奇幻風格,像是能夠把人帶進遊戲裡的任天堂遊戲機,和需要交換物品的神魔交易所。
這算是《神魔交易》裡頭的小故事,如果想要更了解有關神魔交易所的事情,需要去冒險者天堂搜尋御我的「神魔交易所」,或者是購買CWT同人場出的《神魔交易》,但隨著御我解散社團、個人社團停擺,本子不可能加印,這本書在網路上的價錢就不怎麼低了,大概是兩倍以上的價錢。
書雖然絕版了,但其實御我的網誌有將全文放上,有興趣的人可以去看。
!我對這部作品的看法
這部租書店很難租到,加上之前跟別人在討論御我時,也鮮少人提到這部或看過這部,雖然知道有,卻沒看過。這次為了作業所以跑去御我姐的網誌翻,只有一集所以看的比較快,故事基本上還挺有趣的,這種呈現方式還挺特別的。雖然是在RPG的世界中,卻沒有冒險故事,只有劍、女子、王子和皇宮,而主角「劍」要幫一個不修邊幅的女子追到王子,感覺挺有趣的。
那個王子長的跟主角一模一樣,個性卻截然不同,溫柔、優雅,是個非常完美的人,或許,這算是主角理想中的自己吧。不過人總是要有些不完美,故事中的主角雖然口不擇言,卻總是能提到問題重點,故事中對於他的毒舌不是只有責備,還挺不錯的,如果主角後來改變自己變成一個不毒舌的人,大概就如主角朋友所說,那就不會是他了。
!封面圖片
[img[http://tw.f14.yahoofs.com/myper/r2cbxq6ZGRpjWR4auWjG.Q--/blog/ap_20060302062906597.jpg?TTAqZMKBYKvw5Spc]]
[img[http://farm4.static.flickr.com/3607/3430915885_0d4a38624f_o.jpg]]
!大事
* 1065年——西敏寺在英格蘭國王愛德華的主持下,歷時20年時間在倫敦建成。
* 1767年——率領泰國軍隊抵抗緬甸軍隊入侵的將領鄭信被擁立為泰國吞武里王朝的首位國王。
* 1612年——義大利天文學家伽利略成為首個觀測到行星海王星的天文學家,但他誤以為是一顆恆星。
* 1836年——英國皇家海軍的將領在阿德萊德宣布南澳洲州成為英國的一個省。
* 1836年——西班牙正式承認墨西哥獨立。
* 1885年——印度國大黨成立。
* 1895年——法國盧米埃爾兄弟在巴黎一家咖啡館里對他們拍攝的電影進行了首場商業放映。
* 1915年——一戰:英國首次實施義務兵役制。
* 1929年——中國工農紅軍紅四軍古田會議召開,毛澤東確立在軍中的領導地位。
* 1942年——英國戰時內閣會議同意戰後將重新考慮「新界」的問題,但將原答覆中戰後「重新考慮『新界』的租期問題」這句話中的「租期」二字刪去。
* 1944年——二戰:匈牙利對德國宣戰。
* 1984年——天津地鐵開始運營。
* 1990年——英國作家拉什迪發表悔過聲明,表示將刪除《撒旦詩篇》中任何褻瀆伊斯蘭教的言論。
* 1994年——日本八戶發生七點五級地震。
* 1995年——世界上第一家電影院「大咖啡館」在法國巴黎開張。
* 2004年——深圳地鐵試運行。
* 2006年——上映「漫舞精靈 歐荷伊」法國影史題材
* 2007年——英國探險家海斯,以19個月時間征服了南極、北極、珠穆朗瑪,創下完成「三極之旅」的最快紀錄,成為新的「三極之王」,比舊世界紀錄快了5個月。
* 2008年——武漢長江隧道試通車。
* 2008年——英國總商會要求政府在來年保持現時的最低工資水平,表示如果最低工資跟2008年一樣的幅度上調,商界將要因此多付3億英鎊。
* 2008年——面對聖公會主教公開批評工黨政府施政無助脫貧且有迫使低下階層舉債之嫌,內閣辦公室發言人今日回應指政府一直致力於縮窄貧富差距,拒絕接受指責。
!出生
* 1856年——伍德羅·威爾遜,美國第28任總統。(逝於1924年)
* 1882年——亞瑟·愛丁頓,英國天文學家、物理學家、數學家。(逝於1944年)
* 1902年——沈從文,中國文學家。(逝於1988年)
* 1903年——約翰·馮·諾伊曼,美國數學家,電子計算機之父。(逝於1957年)
* 1913年——王洛賓,中國音樂家、民族音樂學家。(逝於1996年)
* 1953年——理察·克萊德曼,法國鋼琴家。
* 1954年——丹佐·華盛頓,美國演員。
* 1956年——奈吉爾·甘迺迪,英國小提琴家、爵士樂手。
* 1969年——蔡子健,香港男演員。
* 1969年——林納斯·托瓦茲,芬蘭程式設計師,Linux核心發明人。
* 1974年——車婉婉,香港女演員、歌手。
* 1978年——約翰傳奇,美國鋼琴家、創作歌手。
* 1981年——布拉魯茲,荷蘭職業足球員。
* 1981年——絲安娜·美娜,英國著名女演員。
* 1983年——賀軍翔,台灣男演員。
!死亡
* 1919年——里德伯,瑞典物理學家。
* 1919年——馮國璋,中華民國代總統。
* 1945年——西奧多·德萊塞,美國作家。
* 2008年——邁克爾·列維爵士,英國美術歷史學家及前國家美術館館長
!紀念日
* 中華民國電信節
* 泰國鄭王節
* 天主教國家的愚人節
!參考文獻
維基百科:http://zh.wikipedia.org/w/index.php?title=12%E6%9C%8828%E6%97%A5&variant=zh-tw
歷史上的今天12月28日:http://epochtimes.com/b5/8/12/27/n2377092.htm
新浪書味頻道:http://books.sina.com/artbook/drink/2009-04-01/ba18408.shtml
新準網:http://big5.xinhuanet.com/gate/big5/news.xinhuanet.com/newscenter/2008-12/28/content_10565662.htm
[img[http://farm4.static.flickr.com/3617/3431729588_04342b4228_o.jpg]]
!大事
* 418年——波尼法爵一世就任教宗。
* 1170年——英格蘭坎特伯雷大主教貝克特在坎特伯里大教堂被國王亨利二世派出的4位騎士刺殺身亡。
* 1845年——德克薩斯共和國併入美國,成為美國的第28個州德克薩斯州。
* 1890年——美國軍隊在南達科他州屠殺印第安人。
* 1911年——孫中山任中華民國臨時大總統。
* 1928年——中國奉系軍閥張學良宣布接受國民政府管轄,改換旗幟,史稱東北易幟。
* 1937年——《愛爾蘭憲法》正式生效,憲法規定愛爾蘭的國體為共和國,總統由選民直選產生。
* 1940年——德國空軍襲擊倫敦,近三千人死亡。
* 1981年——隆納·雷根宣布對蘇聯進行經濟制裁。
* 1985年——英外相照會清政府欲合併緬甸。(1886年1月1月正式合併緬甸)
* 1989年——瓦茨拉夫·哈維爾當選為捷克斯洛伐克總統。
* 1991年——中華航空358號班機(波音747-200F貨機)在台北縣萬里鄉山區墜毀,機上5名機員全部罹難。
* 1993年——世界上最大的戶外青銅座佛,位於香港大嶼山寶蓮寺的天壇大佛舉行完工後的開光儀式。
* 2006年——英國女探險家漢娜·米肯德抵達南極極點,以40天時間創造了新的「單人最快南極探險紀錄」。
* 2008年——英國利物浦足球會隊長謝拉特涉嫌在紹斯波特一間酒吧傷人,被警方扣留調查。
* 2008年——英國外相文禮彬警告中東和平進程因為以色列大舉襲擊加薩而陷入「非常黑暗的一刻」,又指事件對為當地建立全面和平構成威脅,並擔心助長激進主義蔓延。
* 2008年——有人力資源機構發表報告,預測英國2009年有機會減少600,000個職位。
* 2008年——英國示威者抗議以色列繼續對哈馬斯採取行動,巴勒斯坦示威者與警方發生衝突。
!出生
* 1709年——伊莉莎白·彼得羅芙娜,俄羅斯沙皇。(逝於1762年)
* 1800年——查爾斯·古德伊爾,美國商人,硫化橡膠發明人。(逝於1860年)
* 1808年——安德魯·詹森,美國總統。(逝於1875年)
* 1809年——威廉·尤爾特·格萊斯頓,英國第40、42、44、46任首相。(逝於1898年)
* 1876年——帕布羅·卡薩爾斯,西班牙作曲家、指揮家。(逝於1973年)
* 1899年——聶榮臻,中國政治家和軍事家。(逝於1992年)
* 1910年——羅納德·科斯,英國經濟學家,1991年諾貝爾經濟學獎得主。
* 1938年——強·沃特,美國演員。
* 1959年——岡崎律子,日本女歌手。(逝於2004年)
* 1959年——何家勁,香港歌手、演員。
* 1967年——安迪·沃卓斯基,美國電影導演。
* 1969年——梁小冰,香港女演員。
* 1972年——裘德·洛,英國演員。
* 1980年——陸詩韻,香港無綫電視藝員。
* 1981年——荒川靜香,日本花式溜冰運動員。
* 1988年——文詠珊,香港模特兒
* 1994年——秋篠宮佳子內親王,日本皇族,秋篠宮文仁親王的次女。
!死亡
* 1563年——卡斯特利奧,神學家。
* 1929年——威廉·梅巴赫,德國引擎工程師,第一輛梅赫西迪品牌汽車的開發者。(1846年出生)
* 1926年——里爾克,德語詩人、作家。
* 1986年——麥美倫,前英國首相。(1894年出生)
* 2007年——菲臘·奧當尼,生前效力於馬瑟韋爾足球會的蘇格蘭足球員。
!參考文獻
維基百科:http://zh.wikipedia.org/w/index.php?title=12%E6%9C%8829%E6%97%A5&variant=zh-tw
歷史上的今天12月29日:http://epochtimes.com/b5/8/12/27/n2377093.htm
大紀元:http://www.epochtimes.com/b5/8/12/31/n2380403.htm
[img[http://farm4.static.flickr.com/3298/3431729734_9950e7df31_o.jpg]]
!大事
* 1896年——菲律賓民族英雄黎剎在馬尼拉被西班牙殖民政府以叛亂罪名槍決處死。
* 1903年——芝加哥易洛魁劇院發生大火,造成578人喪生。
* 1905年——奧地利作曲家雷哈爾作曲的輕歌劇《風流寡婦》在維也納劇院首次公演。
* 1918年——德國共產黨成立。
* 1918年——孫中山撰寫《孫文學說》成書。此乃《建國方略》的一部分;書中提出「知難行易」學說。
* 1922年——俄羅斯聯邦、烏克蘭、白俄羅斯、南高加索聯邦等四個加盟共和國共同組成蘇聯。
* 1927年——亞洲第一條地鐵路線,日本東京地下鐵銀座線在上野站和淺草站之間通車。
* 1938年——汪精衛發表「艷電」,正式與蔣中正決裂。
* 1940年——中國共產黨經營的廣播電台——延安新華廣播電台開始在延安廣播,該電台其後發展為中央人民廣播電台。
* 1941年——陳納德將軍的「飛虎隊」抵中國作戰。當日,飛虎隊在昆明首次參戰,擊落9架日軍轟炸機。
* 1942年——英國在戰時內閣會議上,拒絕中國要求歸還香港的要求。
* 1945年——中國民主促進會成立。
* 1947年——羅馬尼亞國王米哈伊一世宣布退位,羅馬尼亞人民共和國成立。
* 1965年——費迪南德·馬科斯就任菲律賓第10任總統。
* 1969年——馬可斯宣誓連任菲律賓總統。
* 1970年——中國湖北宜昌葛洲壩動工。
* 1991年——英國政府宣佈於1992年撤換香港總督衛奕信。
* 1996年——八屆全國人大常委會第二十三次會議通過《中華人民共和國香港特別行政區駐軍法》。
* 2001年——中國江西省萬載縣一間由香港商人投資的煙花廠爆炸。
* 2002年——中國成功發射神舟四號飛船。
* 2005年——英國在聖誕之后遭受風雪襲擊。東南部地區降雪最多,達到15厘米。
* 2006年——伊拉克前總統薩達姆·海珊因被判在杜賈爾村案中犯有反人類罪而在巴格達被絞刑處死。
* 2008年——英國利物浦足球會隊長謝拉特與另外五人正式被警方落案起訴,涉嫌傷人及滋事。
* 2008年——田土廳數據顯示,英國11月平均樓價下跌1.9%,是連續十五個月錄得下跌,平均樓價全年已累計下跌12.2%。
* 2008年——法國鋼琴家 帕斯卡.羅傑 鋼琴獨奏會於台灣演出
!出生
* 41年——提圖斯,羅馬帝國皇帝。(逝於81年)
* 1865年——約瑟夫·魯德亞德·吉卜林,英國作家、記者、詩人。(逝於1936年)
* 1884年——東條英機,日本政治人物。(逝於1948年)
* 1946年——貝爾蒂·福格茨,德國足球運動員。
* 1946年——帕蒂·史密斯
* 1961年——班·強生,加拿大職業田徑選手。
* 1966年——葛民輝,香港演員,導演及組合。
* 1973年——陳瑞昌,台灣棒球選手。
* 1975年——老虎·伍兹,美國高爾夫球運動員。
* 1980年——關智斌,香港歌星。
* 1984年——勒布朗·詹姆斯,美國NBA籃球員。
!死亡
* 1691年——羅伯特·波義耳,英國化學家。
* 1896年——黎剎,菲律賓國父、民族英雄。
* 1944年——羅曼·羅蘭,法國作家。(1866年出生)
* 1968年——特里格韋·賴伊,第一任聯合國秘書長。
* 1988年——野口勇,美國雕塑藝術家。
* 2003年——梅艷芳,香港歌星兼電影演員,香港演藝人協會前主席。(1963年出生)
* 2004年——加藤正夫,日本圍棋棋手。
* 2006年——薩達姆·海珊,伊拉克前總統。
!紀念日
* 蘇聯成立紀念日
* 黎剎日,菲律賓法定假日
!參考文獻
維基百科:http://zh.wikipedia.org/w/index.php?title=12%E6%9C%8830%E6%97%A5&variant=zh-tw
歷史上的今天12月30日:http://epochtimes.com/b5/8/12/27/n2377098.htm
法國在台協會:http://www.fi-taipei.org/article-imprim.php3?id_article=1605
!劇情簡介
這是一部關於偽正太而且他真的很正太和一位看似腹黑其實超級天然又笨蛋的哥哥和他們愉快的夥伴的故事。
二一零五年,國家式微,地球被劃分成數百個經濟組織,而這數百經濟組織也在利益之下,又結成數個經濟聯盟,其中以掌握了全球百分之三十經濟動脈的太陽聯盟為最大聯盟,而太陽聯盟的領袖也被認為是地球上最大的權勢。 ──摘自《玄日狩》第一集
日向炎,太陽聯盟的領袖,冷酷無情,靠著各種手段擴張聯盟勢力,成為人人敬畏的「日皇」。而這樣的他卻有個弱點,便是他最疼愛、卻被爸爸帶走的弟弟,日向夜。
某天,他拿著槍以剝奪對方生命威脅著爸爸,要他把最愛的弟弟交出,沒想到,見到弟弟後,他又是一陣絕望:最親愛的弟弟被改造成他的貼身保鑣,外表沒什麼改變的他有著機器般的內在,只遵從主人的命令,他變成了「玄日」。
在日向炎絕望之際,他的爸爸衝向他,基於保護主人,日向夜親手殺了他的爸爸,就因為他的爸爸寧願弄髒他的手也不要弄髒日向炎的。
以為一切都已成定局的日向炎開槍殺了研究室的人,當他把槍指向最後一位研究員時,他得知了其實日向夜可以打開「情感開關」。
從此,他決定讓弟弟過「普通生活」的計劃開始了。
只是,遇到弟弟就會無法聰明思考的日向炎沒有發現,他的弟弟,從一開始就不普通了……
!相關介紹
這是御我和亞砂組成同人社團後第一部出版的作品,之後幾場同人場都是賣這部作品,共出了五集。
在《玄日狩》之前出版的有名作品有《1/2王子》和《不殺》,跟這兩部比較不同的是,《玄日狩》的劇情比較嚴肅,雖然也會有很多搞笑的劇情,像是一二集,第一集雖然前面十分嚴肅,後面卻帶出了日向炎傻哥哥的行徑,第二集更是歡樂,可以說是五集中最歡樂的,但即使如此,第二集仍然穿插著日向夜因為太過天真的言語而傷到朋友的劇情。後面便開始走向嚴肅悲傷的劇情。
玄日狩因為是御我和亞砂出資印刷,預估印量方面沒有辦法做很準確的預估,每次賣總是會不夠,被很多人要求加印,加印過後再被要求加印,找了許多寄賣點仍然會有人買不到書,本職是小說家的御我也常因為這樣更加忙碌。
後來有出版社問能不能出商業版後更引起了喧然大波,為了不要辜負辛苦排隊才買到書的讀者,御我一開始是拒絕的的,但拒絕後,要求加印的聲音又多了一個要求出商業版。御我為了看不到的人,開始在網誌上連載《玄日狩》,但適得其反,看到網路連載的人開始希望也可以買到書,越來越多人灌爆留言版和御我的信箱,到留言版便可看到一堆要求加印的人在留言。
洗版半年後,御我為了不要再為印刷相關事宜煩心,宣佈玄日狩將推出商業版,但不會有任何圖片,算是保護本來就有買書的讀者,並把留言板關閉避免二次洗版,宣佈同人社團解散。
這次的事件雖然引起喧然大波,卻可以發現,一開始以搞笑文筆出名的御我,挑戰走嚴肅劇情的小說這件事,是成功的。
!我對這部作品的看法
我很喜歡這部作品,也是御我姐的作品中,我喜歡的前三名。日向炎和日向夜身上都有著反差,平常冷酷無情的日皇在日向夜面前便會成了無法思考的傻哥哥,而平常天真可愛的日向夜卻也是冷酷無情的玄日。向炎便是向著炎,有種迎向光明的意思,日皇的確是這樣的存在,他備受矚目,在爸爸面前,他是最被疼愛的。向夜則是向著夜,不被疼愛的阿夜總是被關在黑暗的房間中,他最討厭的就是黑暗,黑暗讓他感到不安,就連「玄日」都是指黑暗的太陽,無法發出光芒的太陽,只能繼續迎向夜晚。我很喜歡這兩個名字。
我很喜歡日向炎和日向夜這兩個角色,因為日向炎遇到阿夜就會變成傻哥哥,做出一些很可怕的舉動,像是可以為了讓弟弟過著普通的學園生活,買下一棟別墅、挖個通道讓他可以去找阿夜、用名義買下他要就讀的學校。日向夜也可以因為哥哥說要營養均衡就吃一大盤肉和一大盤蔡、因為哥哥說要睡午覺所以即使剩五分鐘也要睡覺、因為哥哥說東西要多嚼幾下而每口都嚼二十下才吞下去。僥倖從日向炎殺研究人員事件中存活的安特契醫生和日向炎的祕書凱爾總是對這對兄弟沒輒。
就御我寫的小說中,這部的角色算是比較少的,要看完的人說出裡頭出現過的重要角色,大部分都能說出來。也因為如此,每個角色顯得特別鮮明,每個人的互動都很有趣。
故事到最後變得十分沉重,彷彿一切都沒有希望了,但到後來,還是迎向了那時來說最好的結局,我覺得中間的過程很精采,我重看了好多遍,不管是伏筆或是人物的反應,都讓我覺得很棒,看似不相干的事件就這樣慢慢的串聯在一起。我最愛的,莫過於日向炎對著冒牌日向夜說的話,他說阿夜是不會因為星星很漂亮就喜歡夜晚的,因為,他最怕黑夜。其實一開始我根本就抓不到冒牌阿夜這句話的破綻,日向炎的一句話讓我恍然大悟。
!私心吶喊
我覺得阿夜真的很可愛。他是個天真的孩子,總是害怕傷害別人。日向炎曾說過,他是天使,可是被命名為玄日的他知道,自己是惡魔。一個既是天使又是惡魔的阿夜很惹人憐。平常的他總是笑笑的,對什麼事情都很好奇,像極小孩子,只要他用渴求的眼光看人,沒有人會有辦法拒絕的。有時候看著這樣的他,我會覺得很心疼,他會什麼都不懂,是因為從小就被關在研究室裡頭無法接觸外面啊,動手術、做實驗,就因為爸爸對他的憎恨。但出了研究室的阿夜只笑笑的認為,是因為爸爸的關係才讓他成為實力高強的玄日,可以保護他最喜歡的哥哥。天真的阿夜其實是非常成熟的。
所以我真的很喜歡阿夜這個角色。
!各集封面
[img[http://farm4.static.flickr.com/3298/3613267805_f0c11e74f5_o.jpg]]
!劇情簡介
假設,
你最絕望的時候,
有一隻手出現在你面前,
你會,
抓住神之手,
還是,
魔的爪?
!相關介紹
雖然出書時間是最晚的,但去冒險者天堂看御我連載作品的日期便會知道,這部可以說是最早的,在2003年就開始連載了。
裡頭最大的特色,大概就是「神魔交易」,為了達到願望,你必須付出代價,而要你付出代價的,有可能是神、也有可能是魔。神的個性善良、魔的個性邪惡,這本書講的就是進而產生出的故事。
這部是在同人場上販賣的,御我出資印刷,但擺攤的社團不是「御飯糰」,而是由御我自己組成的「御見我」社團。封面繪圖是御我,裡頭也收錄了不少御我的圖,和其他畫家的插花
!我對這部作品的看法
老實說,我沒有看過這部作品,當時在同人場我因為太貴所以買下,以為下次來還可以再買,沒想到,「御飯糰」居然解散了,「御見我」也不知道會不會擺攤,那次參加的居然是最後一場,連我自己也想不到。
因為沒有看過書,所以我也沒有辦法做出什麼評語。
大致在冒險者天堂看了一下,劇情比較環繞在「現實」,與神魔的交易,結果可以是好的,也可以是壞的。
!封面圖片
[img[http://farm4.static.flickr.com/3320/3614590438_2880d8c6bf_o.jpg]]
|姓名|簡毓伶|
|學號|A97081045|
|生日|6月4日|
|興趣|看動漫、寫文、上網、發呆|
|個性|基本上就是個個性陰晴不定,時常不小心陷入自己世界中的人|
!感謝以下網站和人士提供的資料
博客來:http://www.books.com.tw/
金石堂:http://www.kingstone.com.tw/default.html
御我自白書(新):http://www.wretch.cc/blog/kim1984429
御我的自白書(舊):http://tw.myblog.yahoo.com/123456789-101112/
冒險者天堂:http://paradise.ezla.com.tw/
幫我想劇情的一行介紹(劇情介紹的第一行)的__影觴__
和我聊吾命和GOD,不小心被我拿來引用的__藍光__、__蒼顏__和__月映雪__
被我開了將近二十個視窗又開十個WORD還沒掛掉的__電腦__
一直被我問問題的__小林__
!劇情簡介
我名為朝索˙安德利斯,職業是管家,待業中。
我出身擁有古老傳統的管家世家,接受過最嚴格的管家教育,若我謙虛的說自己是個還不錯的管家,世界上恐怕沒有人敢說自己是個完美管家。
即使如此,我也總是找不到工作,但這和我的專業能力無關,完全是種族歧視的問題。
我是名吸血鬼。
好不容易,我找到一位完全沒有種族歧視的少爺,正當我愉快的投入管家職業時,卻點點滴滴的發現,我這位少爺恐怕也不是正常的人類……
父親大人鈞鑒:
請在天上祝福您唯一的孩子,讓非正常人的少爺和吸血鬼管家可以過著正常人的日子吧!
兒 朝索˙安德利斯 謹上
安向夜與朝索,一對命中註定要相遇的主僕。阿夜從黑暗的巷中「撿回」了一位新管家──吸血鬼朝索;對管家工作抱著無限熱情的朝索死心踏地服侍著神秘的阿夜少 爺──不管少爺的食量驚人,穿著品味差勁還是人際關係失敗,雇主永遠都是對的。另一方面,在這個充滿科學改造人的混亂年代,無所不能的英雄成為平民百姓心 中的救世主,隨著時間過去,朝索愈來愈懷疑,這位年輕的少爺,似乎就是某位神秘的英雄,而真相是……
!相關介紹
這是由天使出版社所出版的作品,目前正在連載中,出到第三集,預計出八集,是跟《吾命騎士》交叉出版的作品,走與《吾命騎士》不同的沉重風。
就銷售狀況來說,這部不及《吾命騎士》暢銷,成績卻也不低,每次出版也有排上金石堂的排行榜。
裡頭其中一個主角-安向夜,其實和《玄日狩》中的日向夜是同一個人,《玄日狩》中就有日向夜為了掩飾身分所以對外說他的名字叫安向夜的設定,而御我也有說過,這算是《玄日狩》五到七年後的故事。
但這部並不能說是《玄日狩》的接續,而是可以獨立分開來看的作品,不必先看過《玄日狩》,裡頭也只有跟朝索一樣是主角的日向夜和常常以哥哥身分被提到的日向炎比較常出現,其他人似乎只有第一集才有出現,聽說也有不少人因為看了《非關英雄》而對《玄日狩》產生興趣的。
關於《非關英雄》,[[御我最近也有對它的一些感想|御我論《非關英雄》和《公華》]]。
!我對這部作品的看法
這部和《玄日狩》及《不殺》是御我作品中我最喜愛的三部作品,因為不是以搞笑為主,御我寫作便著重在劇情了,劇情的鋪陳非常的棒,沒有刻意造成卻也有的笑點也讓我很喜歡,就因為不是注重笑點,所以笑點出現的時候反而覺得很有趣。
裡頭探討的東西很多,一個是比人類善良非人,一個是比非人強大的人類,兩個都無法在各自種族中獲得平衡的朝索和安向夜,這是非常讓我喜愛的主僕。從他們身份衍生的劇情也很吸引人,不管是伏筆還是劇情的推演,都非常的棒,節奏快卻不會讓人喘不過氣,自然而然產生出的笑點反而讓我從內心笑出來。
第一集我還不是說最喜愛它,不過給了我很好的印象,而《非關英雄》閱後面越精采,可以說是倒吃甘蔗,每再看一集,就會更愛它。
非關英雄,說的當然就是英雄的故事,在斜陽市的四大英雄不為人知的一面,他們有著自己的理念,為了貫徹理念,所以成了英雄。
我很喜歡安向夜裏頭的一句話:「我擁有這麼可怕的力量,就算不傷人,對別人來說,我還是個惡魔,只是是一個不知什麼時候會發狂的惡魔,但是只要我用這股力量來幫助別人,我就是英雄啊!」
!各集封面
[img[http://farm4.static.flickr.com/3336/3614475444_c434b3d1fb_o.jpg]]
[img[http://farm3.static.flickr.com/2453/3614476000_755c5d3b2a_o.jpg]]
[img[http://farm4.static.flickr.com/3553/3613656829_15bccd249b_o.jpg]]
!劇情簡介
這是一個遊戲中的人妖到處把妹(兄)然後莫名奇妙拯救世界的故事。
公元兩千一百年,隨著網路和科技的發展,遊戲不再是看著電腦按著鍵盤,只要戴上頭盔,就能體驗如同進入電腦世界的虛擬情境中。許多電腦科技公司為了拉攏玩家,努力在真實度上作加強,終於,一款真實度百分之九十九的遊戲「第二生命」誕生。
主角,風藍,靠著性別優勢,依附在男性玩家身上拿取裝備和吸取經驗值,某天,在弟弟風揚名的諷刺之下決定要靠自己的力量好讓他刮目相看。碰巧成為第一個進入「第二生命」的她提出想變成男性角色的要求,從此以男角「王子」闖蕩「第二生命」世界,認識許多高手、遇到有意識的NPC、成為城主、NPC造反……大大小小的事件為他創造了許許多多的傳說。
!其他介紹
這是御我在冒險者天堂所連載的作品,亦是御我的成名代表作之一,雖然出版時間已久,在冒險者天堂中的排行依然很高,每個月還是有上千的點擊數,總點擊數已達一百九十七萬,儘管是普通的網遊題材,內容卻十分新穎,劇情搞笑,是部適合輕鬆閱讀的輕小說,小說封面由亞砂繪製,封面也受到許多好評,後來出了畫冊。
這部作品的角色眾多,設定也較為多,導致書中有不少明顯的BUG,出版社後來在2006年8月20日推出完全版的口袋書以提升內容完整度,封面則由戰部露繪製,可愛的畫風也為此部作品再帶動購買潮,於2007年7月1日出版完畢,共十二集。
此外,小說也推出了漫畫版,由東立代理,漫畫家蔡鴻忠所畫,在2007年1月31日出版,因為小說太過成功,大家對漫畫的要求便提高,漫畫評價不一,但也可見《1/2王子》的魅力所在,漫畫版仍在連載中,2009年1月17日發行第五集。
!我對這部作品的看法
這部作品是真的很成功,當時在我們班也十分風靡,社團中幾乎常常聽到大家在討論劇情內容。有在冒險者天堂連載部分的內容,當初看的時候一直笑趴在電腦桌前,很好看,也為御我打響了知名度。
故事中的主人翁是女生,以往的網遊文幾乎都是男生當道,這部作品打破了這點,雖然他在遊戲中仍然是男生,可是這位被稱為「血腥精靈」,屢次打敗眾多好手的男生,真面目居然是女性,是有些打破傳統。故事中的角色雖然多,每個人的個性還是非常鮮明,不會覺得有誰的個性雷同,讓我非常佩服。
但也因為是他比較早期的作品,就文筆來說就略嫌不足,這是部第一人撐的故事,可是有時候會出現一些主角應該感受不到的述敘和場景,加上前面有提到這部的設定有點多,難免會出現不少讓人摸不著頭緒的錯誤。故事到最後有不少感人的地方,收尾卻收的不太好,女主角和男主角在一起的橋段不夠好,歪傳的某些劇情也非常突然,一些配對配的有些莫名奇妙。
不過我覺得她能寫到這樣真的很厲害,能理解為什麼這麼受歡迎,後來出版的作品也進步非常多,這部出完之後大多是寫第三人稱的故事,《不殺》和《GOD》都是,而在第一人稱的《吾命騎士》出版後,就能發覺作者的功力真的更上一層樓了。
!各集封面
[img[http://ebook.ezla.com.tw/photo/03101M.jpg]][img[http://ebook.ezla.com.tw/photo/03102M.jpg]]
[img[http://ebook.ezla.com.tw/photo/03103M.jpg]][img[http://ebook.ezla.com.tw/photo/03104M.jpg]]
[img[http://ebook.ezla.com.tw/photo/03105M.jpg]][img[http://ebook.ezla.com.tw/photo/03106M.jpg]]
[img[http://ebook.ezla.com.tw/photo/03107M.jpg]][img[http://ebook.ezla.com.tw/photo/03108M.jpg]]
[img[http://ebook.ezla.com.tw/photo/03109M.jpg]]
!劇情簡介(摘自[[冒險者天堂|http://paradise.ezla.com.tw/]])
這是個怪神分裂成兩個人展開與夥伴的愉快旅程最後再一次重新開始愉快旅程的故事。
一本書的男主角該有什麼風範?
俊帥有型?錯!他長相可愛,沒事還愛裝無辜!
心地善良?再錯!他出手狠辣沒事亂挖人心腸,不用XXX聖劍(XXX隨機套入各種神祇名稱),而愛用血腥蛇鞭SM別人。
嗜武成痴?不好意思,嗜「吃」成痴可不可以呀?
對拯救公主有特別的興趣?這點完全沒錯,拯救完還順便收集起來當寵物!
OH~MY GOD!
這、這到底是個什麼樣的男主角?
讓這樣的人來當主角~~亂了,這個故事一開始就亂了啦!
!相關介紹
這也是由冒險者天堂(銘顯文化)出版的書,封面繪者是光矢(最後一集是草莓飯糰)。就劇情走向和故事風格來說,這部在御我的長篇作品中,評價算是比較低的,但喜歡這部的人便會非常喜歡這部。
與其他部作品相比,這部雖然前面十分歡樂搞笑,後期劇情卻開始轉而沉重,一發不可收拾,所以事情都走向最壞的發展,最後只能迎向一個雖然說是最好卻也可以說是最不好的結局。故事完結後,因同為冒險者天堂的《1/2王子》和《不殺》都有外傳,加上結局留下的想像空間太多,有許多要求出外傳的聲音,但御我表示,《GOD》的架構已經很完整,不太可能出外傳,而從2008年5月完結到現在,也沒有任何出外傳的跡象。
這部有在御我的網誌做連載,以至第九集,共十一集。
!我對這部的看法
這部我沒有看完,因為聽到結局是「砍掉重練」的劇情,我從以前就很怕看到這種結局,看完心情都會很不好,所以就不敢繼續追下去。
前面是真的很歡樂,主角流星和白薩亞的互動非常好玩,接下來加入的角色我都很喜歡,覺得他們湊在一起就是「開心」這兩字。前面幾集我是真的有笑倒在桌上,御我的文筆還是十分搞笑有趣,讓我剛看幾章就愛上了這部。
可是到後面就真的開始有點沉重了,本來被開心帶過去的東西,到後面原來會造成這麼大的影響,讓流星的命運開始不同,和平的日子果然沒有辦法過很久。因為我沒有看完,所以後期的劇情不太了解,據朋友說,雖然會穿插一些有趣快樂的劇情,但那些嚴肅悲哀的劇情還是存在的,沒有辦法被那些快樂的劇情蓋過去。曾看到有人在感想中這麼寫著:「流星只是想要快快樂樂的過著收集寵物的生活啊……」,是啊,他只是想要快樂的生活著,卻沒想到,自己的身分是這麼特殊,也沒想到,接下來的事件會讓周圍的人一個接著一個死亡,最後連自己都死去了。劇情壞到最高點,不算奇蹟的奇蹟才出現,讓一切回歸原始,旅程重新開始,回憶重新創造,什麼都沒了,沒有死去而保有記憶的人反而痛苦,這是最好的結局了,卻又讓人感到悲傷。
以上是我從別人的感想中得到的,如果有不符合劇情的地方請通知。
!各集封面
[img[http://ebook.ezla.com.tw/photo/09901M.jpg]][img[http://ebook.ezla.com.tw/photo/09902M.jpg]][img[http://ebook.ezla.com.tw/photo/09903M.jpg]][img[http://ebook.ezla.com.tw/photo/09904M.jpg]]
[img[http://ebook.ezla.com.tw/photo/09905M.jpg]][img[http://ebook.ezla.com.tw/photo/09906M.jpg]][img[http://ebook.ezla.com.tw/photo/09907M.jpg]][img[http://ebook.ezla.com.tw/photo/09908M.jpg]]
[img[http://ebook.ezla.com.tw/photo/09909M.jpg]][img[http://ebook.ezla.com.tw/photo/09910M.jpg]]
[img[http://ebook.ezla.com.tw/photo/09911M.jpg]]