【費用】 とりあえず、言い値で承ります。ただし、できる範囲での限定受付です。込み具合等によりお受けできない場合がありますのであらかじめご了承ください。サポートにご納得いただけなければ料金は不要です。 逆に感動したら多くても構いません(^^;;;。
【できること】 たとえば、かも日記で無料配布されているコードのカスタマイズや、あるいは、JavaScript/Ajax全般+Webサーバーとの連携などのアドバイス&サンプル作成等 。A:jQchartなどでWeb用グラフ設置(エクセル→CSVやデータベースからWebグラフ生成)などのアドバイスやカスタマイズサンプル作成。B:ツリーメニューなどのカスタマイズサンプル。C:Google Mapsのカスタマイズ。etc...
【できないこと】 腕立て伏せ200回
【ライセンス】 私が今まで「かも日記」等で提供してきたコードの大半は、商用利用、改造、自由、連絡不要で、今後もそれらは変わりません。そして、この有料サポートによりカスタマイズコードなどが提供される場合でも、同様に、それらを商用利用しても改造しても自由です。ただし、制限のきついライブラリなどを使う場合は、各ライブラリのライセンスに準拠せざるを得ない場合があります。
【info】いつもいろいろなテストなどをページ内のあちこちでやっているので、重かったり、壊れていたりするf^^;ことも多いですが、何卒、ご了承ください ( _ _ b
Movable TypeをDBへの入力ツールとして利用して、出力は自前で構築、ということでYUIのTreeでMTの出力してみる実験をしてみましたが、今度は、昨日のjQuery プラグインGradient を使って、タイトルを作ってみました。一応ですけど。
もうMT( しかも2.6 )には見えません。
http://jsgt.org/mt/01/topic/test.htm

MTのDB定義の資料って、どこかに、ありますか?それとも、ご自身で調べられました?
高橋 ( 2007年12月26日 13:28 )私のは古い2.6なんですが、自分で使っているDBを見てやっています。
でも、たぶんどのバージョンでもschemasというディレクトリ配下に、各データベースごとのスキーマが保存されているはずです。
たとえばMySQLなら、こんな感じで↓
create table mt_author (
author_id integer not null auto_increment primary key,
author_name varchar(50) not null,
author_nickname varchar(50),
author_password varchar(40) not null,
author_email varchar(75) not null,
author_url varchar(255),
author_can_create_blog tinyint,
author_can_view_log tinyint,
author_hint varchar(75),
author_created_by integer,
author_public_key text,
author_preferred_language varchar(50),
unique (author_name),
index (author_email)
);
create table mt_blog (
blog_id integer not null auto_increment primary key,
blog_name varchar(255) not null,
blog_description text,
blog_site_path varchar(255),
blog_site_url varchar(255),
blog_archive_path varchar(255),
blog_archive_url varchar(255),
blog_archive_type varchar(255),
blog_archive_type_preferred varchar(25),
blog_days_on_index smallint,
blog_language varchar(5),
blog_file_extension varchar(10),
blog_email_new_comments tinyint,
blog_email_new_pings tinyint,
blog_allow_comment_html tinyint,
blog_autolink_urls tinyint,
blog_sort_order_posts varchar(8),
blog_sort_order_comments varchar(8),
blog_allow_comments_default tinyint,
blog_allow_pings_default tinyint,
blog_server_offset float,
blog_convert_paras varchar(30),
blog_convert_paras_comments varchar(30),
blog_status_default tinyint,
blog_allow_anon_comments tinyint,
blog_words_in_excerpt smallint,
blog_ping_weblogs tinyint,
blog_ping_blogs tinyint,
blog_ping_others text,
blog_mt_update_key varchar(30),
blog_autodiscover_links tinyint,
blog_welcome_msg text,
blog_archive_tmpl_monthly varchar(255),
blog_archive_tmpl_weekly varchar(255),
blog_archive_tmpl_daily varchar(255),
blog_archive_tmpl_individual varchar(255),
blog_archive_tmpl_category varchar(255),
blog_google_api_key varchar(32),
blog_sanitize_spec varchar(255),
blog_cc_license varchar(255),
blog_is_dynamic tinyint,
index (blog_name)
);
create table mt_category (
category_id integer not null auto_increment primary key,
category_blog_id integer not null,
category_allow_pings tinyint,
category_label varchar(100) not null,
category_description text,
category_author_id integer,
category_ping_urls text,
unique (category_blog_id, category_label)
);
(以下略)
masa ( 2007年12月27日 12:01 )やはり、DB見て、中身見て、これだよね?的な方法(?)ですね。やってみます。
ありがとうございました。
できれば何かできたら教えてください。MT勝手出力UI開発仲間になりましょう(^^)/。
2007年12月12日
Movable Type Open Source
http://www.movabletype.org/2007/12/movable_type_open_source.html
Movable Type Open Source.(MTOS)
MTOS has every feature in Movable Type 4.0
Downloading MTOS
http://movabletype.org/opensource/getting-the-source.html
#まだこの件を知らなかった今朝のわたしが、Wordpressのインストールに失敗したことは、偶然ではないのかもしれません(笑)
サンプル付きのjQueryリファレンスをエントリに書きはじめたせいで、かも日記は、今日から、全ページでjQuery1.2.1を実装することになりました。
といっても、全ページがjQueryバリバリになる、というわけではありません。
とりあえず、ほぼすべてページのヘッダ部でjQueryを読み込んでおいて、デフォルトで利用できる体制にする、という程度のものです。
というか、
かも日記では、エントリをひとつ書くとindexページだけではなくて、個別ページをはじめいろいろなページも同時にできますので、jQueryリファレンスをエントリに書くなら、そのエントリ毎にJQueryがインポートされている必要があります。が、
しかし、indexページやカテゴリページなど、1ページ内に繰り返しエントリが表示される場合には、各エントリ毎に何度もインポートしたのでは無駄になってしまいます。(キャッシュの話は別件ということで<別件?、、、略)
というわけで、えーい、なら、最初から全ページに設置しちゃおう。というわけです。
でも、jQery使っていないページの方が当然多いですから、それはそれで無駄なので(^^;、、、
一度読み込んだら生成される「jQuery」オブジェクトをチェックして、最初の一度だけ読み込む冪等な仕組みなんかも少し考えて試してはみたんですけれど、、、
結局、判定したり、動的に読み込んだりする為の無駄と、document.writeなどで読み込む不安定さなども嫌なので、きっぱりやめて、CSS設定なども一切含めた専用jQuery-min.jsを作って全ページヘッダへSCRIPTタグを置き、普通にロードすることにしました。
かも日記は、jQery使っていないページの方が多いですし、依存すると、v1→v2のような劇的アップデート時に苦労しそうですが、まぁ、JavaScriptコンプレッサーによるmin版で更にContent-Encoding:gzip圧縮もかけてますので、16k程度ですから、安定もしますし、まぁ良いかな?と。
#ちなみに、このように、MTのCSSを外部JavaScriptで設定する仕組みにすると、MTの出力UIを分離することになるわけで、MT改造計画との親和性が生まれてきます(^^?
P.S.一応、念のために、「実装とは」http://e-words.jp/w/E5AE9FE8A385.html
例えば、ソフトウェア開発においてプログラム中に新しい関数を作成することを「新しい関数をインプリメントする」と言い、基板に新しいチップを載せることを「新しいチップをインプリメントする」と言う。
「インプリメント」は実装する作業を、「インプリメンテーション」は実装された機能や部品を指す場合が多いが、この逆の用例も頻繁に見かけるので、ほぼ同義と言える。
livedoor
カウンター画像
<img src="http://image.clip.livedoor.com/counter/対象URL">
ブックマークリスト
<img src="http://clip.livedoor.com/page/対象URL" border=0>
hatena
カウンター画像
<img src="http://b.hatena.ne.jp/entry/image/normal/対象URL">
ブックマークリスト
<img src="http://b.hatena.ne.jp/entry/対象URL" border=0>
buzzurl
カウンター画像
<img src="http://api.buzzurl.jp/api/counter/対象URL">
ブックマークリスト
<img src="http://buzzurl.jp/entry/対象URL" border=0>
今、モバイル携帯 X01HTでアクセスしてみたら、なんと、【最近の記事】のメニューツリーが動作していました。ちょっと重いですけど(^^;
昨日のエントリ「【JavaScript】ダイナミックロードで別ドメインと会話する 」も動作していて、ダイナミックロードについては、utf-8BOM版はダメで、URIエンコーディング版は動作していました。うーん。URIエンコーディング最強か。
ブラウザのリクエストヘッダ調査 にも足跡を残しておきました。
http://jsgt.org/ua/header_view.php?id=530
ブラウザのリクエストヘッダ調査
http://jsgt.org/ua/reqheader.php
| Win | ||||||
| f2 | o9 | e6 | e7 | |||
| ○ | ○ | ○ | ○ | |||
| Mac | ||||||
| f2 | o9 | s1.2 | s2 | |||
| ○ | ○ | 未確認 | ○ | |||
| Linux | ||||||
| f2 | o9 | k3 | ||||
| 未確認 | 未確認 | 未確認 | ||||
上の【最近の記事】ツリーメニューですが、Opera8.01で動いてるのを確認。ブラウザ互換をあまり意識せずに作業してきての結果ですので、少し感慨深いものがあります。
ソースはまだ、いじりますので、あとでまた調べますが、とりあえずの現状での確認表。ほぼいけそう?
return {
str : _getYMDstr(targetDay,ymd),
get : _addMonthOj(targetDay)
};
これは、もっと真剣に整理すると便利になると思いますが、今回はここまで。
//function xxxOj(){
/*
* addMonth
* 月数を加減した日付を取得する
* たとえば、10ケ月後は addMonth(10).str と書くと
* 2008/08 や 2008年8月8日 など指定したフォーマットの文字列を取得できます
* no-license/public domain @written by Toshiro Takahashi
* http://jsgt.org/mt/archives/01/001727.html
Example
alert(addMonth(1).str); // 2007/11
alert(addMonth(2,{ymd:"yyyy/mm/dd"}).str); // 2007/12/08
alert(addMonth(-3,{ymd:"yyyy年mm月dd日"}).str); // 2007年07月08日
alert(addMonth(0,{ymd:"yyyy年m月d日"}).str); // 2007年10月8日
alert(addMonth(0).get.y); // 2007
alert(addMonth(0).get.m); // 9
alert(addMonth(0).get.mm); // 09
alert(addMonth(0).get.dd); // 03
*/
this.addMonth_cfg=addMonth_cfg={ ymd :"yyyy/mm" };
this.addMonth=addMonth;
function addMonth(add,addMonth_cfg){
var df={ymd:"yyyy/mm"},
a=(addMonth_cfg||df),
ymd=(a.ymd||df.ymd);
var targetDay=_chgYear(add);
function _chgYear(add){
var now=_addMonthOj(new Date()),
add=(add)?add:0,
am=add+now.m,
y,m,d
if(am<0){
var offset=Math.floor(am/12);
y=now.y+offset;
m=(Math.abs(offset)*12+am)%12;
d=now.d;
} else if(am>11){
y=now.y+Math.floor(am/12);
m=am%12;
d=now.d;
} else{
y=now.y;
m=am;
d=now.d;
}
return new Date( y+"/"+m+"/"+d);
}
function _addMonthOj(dOj){
return {
y : dOj.getFullYear(),
m : dOj.getMonth()+1,
d : dOj.getDate(),
mm : _z(dOj.getMonth()+1),
dd : _z(dOj.getDate())
}
}
function _z(num){
return ((num<10)?'0'+num:num);
}
function _getYMDstr(dateOj,ymd){
var o=_addMonthOj(dateOj);
switch(ymd){
case "yyyy/mm/dd":return o.y+"/"+o.mm+"/"+o.dd;break;
case "yyyy/m/d":return o.y+"/"+o.m+"/"+o.d;break;
case "yyyy/mm":return o.y+"/"+o.mm;break;
case "yyyy/m":return o.y+"/"+o.m;break;
case "mm/dd":return o.mm+"/"+o.dd;break;
case "m/d":return o.m+"/"+o.d;break;
case "yyyy":return o.y;break;
case "yyyy年mm月dd日":return o.y+"年"+o.mm+"月"+o.dd+"日";break;
case "yyyy年m月d日":return o.y+"年"+o.m+"月"+o.d+"日";break;
case "yyyy年mm月":return o.y+"年"+o.mm+"月";break;
case "yyyy年m月":return o.y+"年"+o.m+"月";break;
case "yyyy年":return o.y+"年";break;
case "mm月dd日":return o.mm+"月"+o.dd+"日";break;
case "m月d日":return o.m+"月"+o.d+"日";break;
default :return o.y+"/"+o.mm+"/"+o.dd;break;
}
}
return {str:_getYMDstr(targetDay,ymd),get:_addMonthOj(targetDay)};
}
//}
いやぁ、今日はびっくりしました。気づいたらブログのデザインがぐちゃぐちゃになってました(<いや、それは最初からですけど、遙かにカオスな。。。) 目を離した間にCSSの中身がなにかの加減?で書き変わったのに気付かないまま、再構築してしまいました。
あわてて、静的ファイルのバックアップをFTPしたら一旦治りましたが、再構築したらまたぐちゃぐちゃ。CSSデータもDBが優先なわけです。静的ファイルをテキストエリアにコピーして保存して再構築でようやく復帰しました。
バックアップも大事ですが、大事な入力画面で他所見しないことも大事です。一度送信してしまうと、Ctrl+Zで履歴戻ることもできず、どこが書き変わったのかさえわからないという悲惨な状態になったりしますf^^;。
【Google Maps】Googleの座談会に古簱さんが出てる の記事を、出したとたんに Win IEで 差し替えたばかりの 【最近の記事】のメニューツリーが、なぜかインデックスページだけ自動生成されなくなりました。
半日もかけて調べたのですが、YOUTUBUと並べるテストをしても別に問題はなく、ほかの記事やスクリプトとの変数などの衝突というわけでもありませんでした。
で、結論は、どうも、インデックスページの記事が多すぎる(笑)ということのようなので、現在7日間掲示していたものをとりあえず4日に短縮してみました。
うーん、メモリ使いすぎは反省。でもテスト中なのでしょうがない。。。。
#作業途中で作成したテンプレート系の技の残骸も、無駄にメモリを少し食ってはいるので、しばらくしたらソースだけ残してサンプルは削除かなぁ。