mattz.xii.jp blog
さくらインターネットサーバのDrupalにメールで投稿するには
多少なりとも調べた方であれば、Drupalで通常のモブログ(というかメールで投稿)をするには、phpにimap extentionが必要だというところに行き着いたはず。
で、さくらインターネットのphpはimap extentionは有効になっていないというところにも行き着いたはず。
こんな方もいらっしゃったりはするんですが、これは少々敷居が高い。お勧めできる方法でもない。
んじゃ、これはどうやってやったのって話。
- さくらのメールボックスに専用のメールボックスを用意します。
- そこのメールボックスに届いたメールをparseして、blogエントリとしてDBに登録するプログラムを作ります。
- cronで定期的に動かします。
以上でございます。
ちなみに僕はperlで書きましたが、Drupalのhook_cronに仕込んでもいいです。というかその方がいいよな、やっぱ。そういう風に作り直すか。面倒だからいいや。
プログラムの中身は、秘密ですよ。
Re: オペラのOpera Uniteに対する5つの疑問
これらの疑問に対する、1 Operaユーザなりの回答例。
引用は見出しのみの抜粋。
1.PCを24時間365日稼働させるべきか?
2.セキュリティ対策は万全か?
3.使わない機能が備わってないか?
4.“仲介者”は悪者か?
5.クラウドに対するアンチ・テーゼなのか?
Re: PCを24時間365日稼働させるべきか?
必要ない。
自分が明示的にブラウザを立ち上げているときだけ公開できる、という意義。まぁ、ローカルに保存⇒別サーバに転送とかされたら一緒だけど、その辺は利用者(公開者)側が気をつけるしかない、というかそうされて困るようなものは、期間限定だろうが相手限定だろうが公開したらあかんわな。
Re: セキュリティ対策は万全か?
さぁ?
どんな人なのだろうか
とか書いてあるけど、不安ならUnite機能自体使わなければよいだけじゃないの?不安とは感じない、とか、見られて困るようなもんPCに置いてないもんね、って人はいっぱいいると思うけど。
Re: 使わない機能が備わってないか?
先に挙げた項目とかぶるのだが、写真をWebサイトにアップロードする作業
だけならば、そんなに面倒でもないと思うけれど、必要がなくなったら削除する 、とか公開をやめる、とか、今このときだけ公開する、ってのは頻繁にやるとなると、結構面倒だと思う。そういう用途を考えると「使わない機能」と言い切れる ものでもない。
Re: “仲介者”は悪者か?
悪者とまでは言い切ってない気もするけどね。でも時には邪魔者と感じることはあるかな。そうでもないか。
Re: クラウドに対するアンチ・テーゼなのか?
別にクラウドだけが唯一の正解って訳でもないと思うし、アンチ・テーゼってのをどういう意味で使ってるのかよく分からないけど、別解があってもいいじゃない の。
仲間内にちょこっと公開して見せたいだけなのにGoogle App Engineだ、Amazon Web Servicesだってのも大袈裟じゃない?
でもね
とかなんとか書いてはいるものの、僕は今のところUnite機能自体を利用する気がない。別にセキュリティ面での不安とかが理由ではなく(信用してるわけでもない)、単に必要を感じないから。
今利用している各種Webサービスやレンタルサーバでの公開で事足りてるし。
もっとモテモテになりたい
そういう訳で予約注文しておいた3巻と4巻が届いたので読んだ。大変面白かった。一番笑ったの、実は背表紙。
それにしてもこれで僕もモテモテですね。間違いなく。
しかしこの人の言語感覚ってどっから沸いてくるんだろうね?笑えない人は笑えないんだろうけど。僕も以前は笑えなかったし。
全6巻予定とWikipediaに書いてあるが、今のところamazonさんには5巻しかないようだ。とりあえず5巻だけ予約しといたので、6巻の用意ができたらお知らせメールを寄越すこと→amazon
あ、3巻と4巻を当ブログのリンクから購入したあなたは、5巻と6巻もここ経由で買うように。
追記
思ったんだけど、新装版って5巻で終わりかな。もしかして。全6巻ってのも元々Wikipediaに書いてあっただけだし。
1巻と2巻、3巻と4巻は同時発売だったし、6巻も出るなら5巻と一緒に出すよね。
それはそうとホントに5巻買って(予約)くれた人。どなたか存じませんがありがとう。
ウルフガイ5巻
ウルフガイの5巻が出たので買った。
が。
もういいや。絵、っていうか構図とかコマ割り?は色々工夫してあるっぽいし、こういう画が好きな人はいるのかもしれないね。
そういったことも含めて、今の人がこの漫画をどういう風に思って読んでいるのかは知らないけど、僕にとってはまぁはっきり書いちゃうと面白くありませんでし た。近いうちに原作読んでリフレッシュしようっと。ごめんね、原作至上主義で。
でも、全ての原作ファンにとって面白くないのかどうかは知りませんよ。それは自分で読んで決めてください。別に読むなとかそういうつもりはありませんし、原 作ファンじゃなかったらそれなりに楽しめたのかもなぁという気もします。もっともその場合、この漫画の存在自体に気づかなかっただろうけど。
なんにせよ「この漫画を面白いとは思わなかった原作ファンがここに1人いる」ということだけがこのエントリから分かる事実です。
ま、とにかく僕はお勧めしないのでアフェリエイトは貼りません。
あ、欲しい方がいるなら1~5巻セットで差し上げます。郵送・配送は手間が面倒なので、直接受け渡しのできる方。
あと、PLUTOの1~5巻も引き取っていただける方に差し上げます。全8巻の予定とのことですのでお得ですよ。多分。
その気のある方はコメントでもしてください。
'09/08/03追記
貰ってくれる人もいないようなので、古書店に売ってきた。計10冊で1,200円。思ったよりいいお値段だった。
やる夫ブログのUserCSS
「やる夫ブログ UserCSS」というキーワードで検索してきた人がいたので作った。細部はかなり適当。適当な場所に保存して、拡張子をcssに変更したら、やる夫ブログを開いて、F12を押して、サイトごとの設定を編集... ってのを選んで
表示設定タブを選んで、
ユーザースタイルシートってところの右側の[選択...]ボタンを押してさっき保存したCSSをファイルを選んで、[OK]で完了。スクリーン ショットはこんな感じ。
左右のマージンとか詰める余地ありだけどこれ以上時間かけるのはアホくさいのでしない。余計な横スクロールバーが出なけりゃいいん だ、こんなのは。あ、他のエントリへのリンクとかは全然考慮してないので、どっちかというとRSSリーダで購読してる人向け。
僕自身がどういう時にUserCSSを書くのかってのは以前書いたことがあるので、どんな風に作るのかを 簡単に書いてみようかと思う。
Dragonfly起動!
消したい要素のID/Class名を調べるのに使う。なんかそういう目的のuser.jsもあった気がするのでそれでも可。"表示メニュー→スタイル→クラスとID"でもいい。ただ、Dragonflyだったら、あとで細かい調整はしやすい。
秀丸起動!
別にテキストエディタは何でもいいです。
@charset "utf-8";
と記入。まとめブログ系だと、AA対策でフォントをMSなんとかゴシック、みたいなフォントにしたいときがあるので、文字コードの指定は必須。どんな時でも書く ように癖つけるといい。
あとは消したい要素のIDやclass名、どちらもなければ、親要素とか調べて、
#left,
#right,
#footer,
#header,
.comment
{display:none !important;}
とかやるだけ。
消したくはないけど、幅広すぎるんだよね、っていう要素があるような場合には、その要素に対して、
#box1{width:auto !important;}
これくらい書けたらCSSファイルを保存して、さっきの要領でそのサイトのユーザCSSとして設定してやって表示してみる。うまくいってない箇所があったら、CSSファイルを編集して開いたまま上書き保存してOperaをリロード。納得いくまで「CSSファイルを編集して」以下を繰り返し。細かいCSSの書き方については説明する気もないので、どっかよそで勉強してきて。
とにかく、そんなに難しい話でもないので、CSSの勉強兼ねてやるとかいうのはありだと思う。そういう気もないなら諦めるか、検索してみるか、作ってくれそうな人をうまいこと誘導して作らせる(もちろん素直にお願いするのも可)とかしましょう。
Drupalでサイトを運営しているOperaユーザがすべき検索の設定
そんな人が日本にどれだけいるのか知りませんけど。
「Alt+Pで設定ダイアログを表示→ウェブ検索タブを表示→[追加]ボタン」で表示されるダイアログに以下のように入力。
名前欄とキーワード欄はお好きなように。アドレス欄の入力文字列は「http://drupal.org/project/Modules?filters=drupal_core:87&text=%s」。
サンプルの画像
これで、6.x対応モジュールだけを対象に検索できます。Drupalの他のバージョンを対象にしたい場合は drupal_core:87
の87の部分の数字を以下のように 変更してください。
- 4.7.x
- 79
- 5.x
- 78
- 7.x
- 103
drupal_get_formのsizeとmaxlength
今日引っかかったのでメモ。
drupal_get_formで、#typeがtextfieldな入力項目を使うときに、#sizeを指定すると、maxlengthも引きずられる。つまり
$form['FIELD-NAME'] = array( '#type' => 'textfield', '#title' => t('title'), '#size' => 50, '#default_value' => $hoge, );
という風にやると、50文字までしか受け取れない。というか入力できない。
size以上の文字数を受け取りたい場合は#maxlengthも一緒に指定すること。
$form['FIELD-NAME'] = array( '#type' => 'textfield', '#title' => t('title'), '#size' => 50, '#maxlength' => 100, '#default_value' => $hoge, );
つまりこういうこと。
ノウニウノウン
「たむらぱん」という人のことは、これまでまったく知りませんでした。知ったきっかけはsakusaku。この番組の5月のエンディングテーマがこの人の「ジェットコースター」という曲でして、その歌声とPVが少し気になっていました。で、そのsakusakuの先週の放送にたむらぱんさんがゲストとして屋根の上(観てない方には意味不明でしょうが、屋根の上なんです)に登場してくださいまして、色んな意味ですっかりやられちゃいました。身長148センチも高得点(笑)。
このアルバムがセカンドアルバムだそうですけど、ホントにいいですよ。僕はレビュー的な文章については壊滅的にセンスがないものですから、誉めるのはカスタ マーレビューの皆さんにお任せしますけれども、大変気に入りました。
初回限定版にはDVDもついてますし(まだ観てないんですが)とてもお得かと思われます。
そういうことで2回目聴いてます。
全角の英数字が大嫌い
キライなんです。醜いから。なので、極力目に入らないよう次のようなスクリプトを書いた。
// ==UserScript==
// @exclude http://mattz.xii.jp/*
// ==/UserScript==
(
function(){
document.addEventListener(
'DOMContentLoaded',
function(){
document.body.innerHTML = document.body.innerHTML.replace(/([0-9A-Za-z ])/g,function(str,p1){
return {'0':'0','1':'1','2':'2','3':'3','4':'4','5':'5','6':'6','7':'7','8':'8','9':'9',
'A':'A','B':'B','C':'C','D':'D','E':'E','F':'F','G':'G','H':'H','I':'I','J':'J','K':'K',
'L':'L','M':'M','N':'N','O':'O','P':'P','Q':'Q','R':'R','S':'S','T':'T','U':'U','V':'V',
'W':'W','X':'X','Y':'Y','Z':'Z','a':'a','b':'b','c':'c','d':'d','e':'e','f':'f','g':'g',
'h':'h','i':'i','j':'j','k':'k','l':'l','m':'m','n':'n','o':'o','p':'p','q':'q','r':'r',
's':'s','t':'t','u':'u','v':'v','w':'w','x':'x','y':'y','z':'z','(':'(',')':')',' ':' '}[p1];
});
},false
);
})();
書いたけど、一部のスクリプトを殺してしまうようなので、ご利用は計画的に。
例えば、このDrupalの新規エントリ作成画面のスクリプトが動きません。おかしいなと思ったら、@excludeに追加していただくとか、根本的な問題を修正していた だくとか、そもそも使うのをやめるとかしてください。
2009/10/21 追記
別のスクリプトを作っている過程で、このスクリプトの問題点が分かったので対処。
ついでに、regexp - 全角英数字を半角にの全半変換関数をまんまコピーして作り直した。
Bookmarklet - link them all!でいいじゃねーかって?おっしゃる通り。
// ==UserScript==
// ==/UserScript==
(
function(){
var fascii2ascii = (function(){
var cclass
= '['+String.fromCharCode(0xff01)+'-'+String.fromCharCode(0xff5e)+']';
var re_fullwidth = new RegExp(cclass, 'g');
var substitution = function(m){
return String.fromCharCode(m.charCodeAt(0) - 0xfee0);
};
return function(s){ return s.replace(re_fullwidth, substitution) };
})();
window.addEventListener(
'DOMContentLoaded',
function(){
var x = document.evaluate('//', document, null, 7, null);
var l = x.snapshotLength;
var val;
for(i = 0;i < l;i++){
if('#text' == x.snapshotItem(i).nodeName){
val = x.snapshotItem(i).nodeValue;
x.snapshotItem(i).nodeValue = fascii2ascii(val);
}
}
},false
);
})();