swk's log 最新ページ / カテゴリ最新ページ / 前ページ 1 2 3 4 5 6 7 8 9 次ページ / page 2 (9)

tech - from swk's log

2007-02-28 Wed

* PukiWiki 狙い打ち攻撃? [tech]

研究室のウェブサーバの /var があふれてひどいことになっていた.何が原因なのだろうと調べてみたら Apache のアクセスログが膨れ上がっていた. (というかそもそも /var が小さすぎるのだがそれはさておき)

で,中を見てみると,あるユーザが動かしている PukiWiki のページに対して連続して大量のアクセスがあるようだ.何かの攻撃なんですかね.で,別に攻撃が成功しているわけでもなさそうなので,それ自体は別にいいのだが,それが全部ログに残るのがうっとうしい.ちなみに Wiki のディレクトリ自体を消してみても,えんえんとアクセスが続く.バカかと.

というわけでまずは安直に deny from で弾いてみたのだけど,代わりに error_log があふれるだけであった.うがー.error_log は CustomLog で作るものではないので,環境変数をセットして消したりはできなさげ.かといってerror レベル以下を記録しないことにするのもいかがなものか.

しかたないので,パケットフィルタで元から断つことにした.他のページへのアクセスも断っちゃうけど,もういいや.シラネ.Linux なので iptables で

# iptables -A INPUT -s nnn.nnn.nnn.nnn -p tcp --dport 80 -j DROP
# iptables -A INPUT -s mmm.mmm.mmm.mmm -p tcp --dport 80 -j DROP
# /etc/init.d/iptables save
# /etc/init.d/iptables restart

な感じ.特にひどい 2 ホストだけを弾くことにして,とりあえずは落ち着いた.自動化する方がいいかも知れない.Vine Linux の場合,上のように手動で設定した iptables の内容は /etc/sysconfig/iptables に保存されていて,OS 起動時に読み込まれるのだそうな.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Edilia] Ah yes, nicley put, everyone. (2013-07-04 07:10:13)

2007-02-23 Fri

* 感知中 [tech]

長野県某市,交差点で信号待ちをしていたのだけど,

trafficsig/20070222-001656.jpg

「感知中」だそうです.…何を? Σ(゜д゜;)

信号機において、数m上空または電柱に取り付けられたセンサーが自動車の停止を感知し、一定時間後に自動車信号を青にする信号処理方法である。 (中略) センサーが感応したことをドライバーに知らせる目的で[感知中]と表示されるものもある。

車両感応式信号機 - Wikipedia

ほー.初めて見た.いや,見てても気づいてなかっただけかも知れないけど.

2007-02-20 Tue

* Ctrl+Esc とか Ctrl+Tab とか [tech]

…皆さん,どうやってタイプしてるんでしょうか.やっぱり右にも Ctrl キーがあるのが普通なのだろうか.ちなみに Ctrl+Esc は Windows のスタートメニューを開くとき,Ctrl+Tab は Firefox の Tab Mix Plus でタブを移動するときとかです.

実は Ctrl+Q とか Ctrl+Z とかですら押しにくいと思ってます.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [通りすがりの齊藤さん] Ctrl はてのひら (小指の付け根あたり) で押します。Emacs 使いには ... (2008-09-29 00:18:10)

2007-02-06 Tue

* アイコンを「パンダ」にするウイルスが蔓延 [tech]

パンダ…,はっ,これか? (←違う

2007-02-02 Fri

* そろそろまたJavascriptオフの時代が来た [tech]

ちょっと前に大学時代の同級生からメールが来て,ここを見たらしく,「鏡がJavaScript使っててビックリ」とか言われた.まあ 1 年前の自分ですらびっくりかもしれない.

とか書いてて,そのメールで「年賀状出すから住所教えろ」みたいなこと言われてたのを今思い出した.うわー放置してた,ごめん.でもまあ年賀状もらってもたぶん返事出さないので,50円浮いてツイテル! ってことにしといて下さい.


個人情報保護法とやらのせいで,同窓会の名簿が発行されなくなったり,職員録が発行されなくなったり (あと,学校とかで連絡網とかも廃れつつあるのだとか) でなかなか不便なのだけど,でもまあこれを機に年賀状っていう文化が死に絶えてくれるならそれはそれで不便さというコストを払う価値はあるかなとかひどいことをわりと本気で思っていたりするのは秘密.

2007-01-27 Sat

* ニコニコ動画のおすすめ動画を貼っていくスレ [tech]

うわ,台無しwwwww


しかしこれって面白い試みかも.見ていると,まるで他の人がリアルタイムで書き込んでいるかのような錯覚に陥る.1 本の動画という基準座標によって全ユーザの時間軸が見かけ上同期されているという,ありそうでなかったシステムかも知れない.

(追記) 元動画が削除されたので入れ換えて,ついでに新しい貼り付け方法に変更 (2007-02-12)

関連記事:
[2007-01-28-1] YouTube にニコニコ動画へのリンクを追加する Greasemonkey スクリプト
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Mark] Now I\'m like, well duh! Truly thaknufl ... (2012-12-30 06:40:32)

2007-01-17 Wed

* 一般人は常に「お気に入り」を表示している! [tech]

な,なに───────!?



左側に表示するのは普通 bbs2chreader だろう常識的に考えて…

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Joice] We\'ve arvried at the end of the line an... (2013-03-22 23:00:57)

2007-01-16 Tue

* はてな,さくらインターネットへ移行 [tech]

ラックマウントってかっこいいよね.

ていうのに共感できるかできないかってのが一つの大きな分かれ目な気がするな(←何のだ

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Roland] Action rqeiuers knowledge, and now I can... (2012-12-31 09:15:48)

2007-01-14 Sun

* ハッカー養成塾! -- ハック教を切り刻め [tech]

     普通のやつらの上を行け

この言葉は「私はLispが大好きだ」という意味であり、 Lisp系言語を愛用していない人に対する煽りです。

    本物のプログラマはPascalを使わない

この言葉はPascalを使わせたくない人による策略であり、煽りです。

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Pv1efjzq5n] vest canada goose arctic parka salehttp:... (2014-10-24 19:59:05)

* [Tainah] I want to send you an award for most hel... (2013-01-01 17:29:31)

2007-01-03 Wed

* 自作エフェクター製作記 [tech] 1 user

久しぶりに Marshall DRP-1 引っ張りだしてみたら壊れてたorz

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Erika] God help me, I put aside a whole atfreno... (2013-03-22 10:51:29)

2007-01-02 Tue

* Sorting Algorithms Demo [tech]

いろんなソーティングアルゴリズムをアニメーション (Java Applet) で表示.

2006-12-30 Sat

* PlayStation3でNetBSDが始動し始めた模様 [tech] 1 user

やっとPS3買う理由ができた(マテ

これでPS3買う理由がなくなった、というのが正しい姿勢ですな。

「もう俺がやらなくてもいいから」という事か。漢だなw

そうではなく、「NetBSD が移植されたハードは廃れる」というジンクスがあるからです。

2006-12-29 Fri

2006-12-29 Fri

* 高速フーリエ変換ギター [tech] 1 user

わかるようなわからんような.

2006-12-27 Wed

* 四捨五入 [tech]

必要な桁だけを用い、それ以下の桁を省略したいとき、不要な桁の先頭の数が4以下であれば切り捨て、5以上であれば切り上げる、という端数処理の方法。とても一般的なものだと認識されているけれど、そんなに万能ではない。

なにしろ、自然数だけで考えると、1, 2, 3, 4の4つは0になり、5, 6, 7, 8, 9の5つは10になるのだから、どう見たって不公平である。このままでは平均などに偏りが生じる。

MORI LOG ACADEMY: 四捨五入

いやそのりくつはおかしい(AA略

0, 1, 2, 3, 4 vs 5, 6, 7, 8, 9 だから,個数の比較では別に不公平はない.そういう問題ではなくて,「0.5000000...」そのものを 1.0 に丸めるか 0.0 に丸めるかで偏りが生じるのだと思う.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [通りすがり] なるほど。わかりやすい説明ありがとうございます。問いを勘違いしておりました。 (2007-01-06 20:25:35)

* [かがみ] うまく説明できるかわかりませんが,このような説明ではどうでしょうか?本来やりたい... (2007-01-02 23:33:16)

* [通りすがり] 0.0〜0.4999999…が0に丸められ、0.5〜0.9999999…が1に丸... (2007-01-02 02:25:20)

2006-12-25 Mon

* IRSによるレスキューロボットデモ公開 [tech]

ただ、5年間の総まとめなのだから、“家一軒を丸ごと爆破して、その中に残っている被災者(を模した人形)を探索する”くらい派手なデモを見たかったのが正直なところだ。

無茶言うな.

2006-12-17 Sun

* タスクマネージャーを小さく表示−Tiny Footprintモード [tech]

そのままだと一定サイズ以下にリサイズできないタスクマネージャを,小さくできるようにする.単に周辺の何もないところをダブルクリックするだけ.

こんな技どうやって見つけるんだろう.

2006-12-14 Thu

* h抜きリンクは間違っているか [tech] 1 user

ttp記法の場合でもFirefoxのTextLink拡張機能でダブルクリックするとリファ漏れるよ

http://b.hatena.ne.jp/entry/http%3A//d.hatena.ne.jp/NOV1975/20061213/p1

つ「ステルスモード」

(追記)

オレはステルスモードはあえて使わずにttp記法していても構わずリファで通知してるよ

http://b.hatena.ne.jp/entry/http://www.kagami.org/diary/2006-12-14-1.html

あ,そうか,ステルスモードを使わない人が存在するから「リファ漏れるよ」って話なわけですね.納得.失礼しました.

2006-12-10 Sun

* Go To Statement Considered Harmful [tech]

しかしそれにしても "Considered Harmful" という言い回しはよほど印象的だったのか,以後この言い回しはコンピュータ・サイエンスの分野において何らかの批判を展開する際に用いられる常套句となっている。まずは件のエッセイに対する反論からして "'GOTO Considered Harmful' Considered Harmful" (Rubin, Frank) ――「『GOTO は有害である』とは有害である」と来ている。それに対する更に反論として "''GOTO Considered Harmful' Considered Harmful' Considered Harmful?" (Moore et al.) ――「『『GOTO は有害である』とは有害である』は有害か?」などと続く。

「オリビアを聴きながらを聴きながら」とか.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Manuel] How could any of this be better satetd? ... (2013-03-23 04:51:30)

2006-12-08 Fri

* 東芝のロボット研究 [tech]

東芝さんのロボット研究について講演をお聞きする機会がありました.いろいろ思うところあって,大変勉強になったのですが,ここでは途中で気になったどうでもいいネタを 2 つほど:

1. ビーチバレーロボットの顔がモララー に見える件.

2. ApriAlpha の声を聞いていると,いつ「特技はイオナズンです」と言い出すかとハラハラする件.

2006-12-08 Fri

* portal askul が Firefox で開けなくなっている件 [tech]

portal askul が Firefox で開けなくなっていることに気づいた.

サイトが Firefox で有効になっていないセキュリティプロトコルを使用しているため、portal.askul.co.jp と安全に通信できません。

らしい.なんだこれ.

SSL 2.0 を使っているせいらしい.むーん.

むむーん.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Graceandtruthbiblechurch] Thanks for that! It\'s just the answer I... (2013-03-22 10:32:54)

2006-12-01 Fri

* 隠れたウィンドウをちょこっと確認したい時に便利なツール2本 [tech]

Windows のウィンドウマネージャ(?)って,ウィンドウを前面に持って来ないままフォーカスするってことはできないのかな.X だと多用するんだけど.

2006-11-28 Tue

* XML/SWF Charts - 派手なグラフを生成するツール [tech] 1 user

PowerPointのアニメーション 機能を知ったばかりの人が作ったスライド のように派手に動き回るグラフを生成するツール.

Gallery にサンプルがいっぱいあって楽しい.アニメーション自体はすぐ飽きて鬱陶しくなりそうだけど,まあそれも一興かと.


PukiWiki から手軽に使うためのプラグイン charts.inc.php ってのも作られている.

基本的には PukiWiki 1.4.7 用らしく,手もとの PukiWiki 1.4.5_1 だと,「Undefined class name 'auth'」とか言われまくって動かない.作者の方のページを見て回ったところ,PukiWiki-1.4.6 でも同じようなエラーが出まくるとのことなので (別のプラグインだけど,たぶん同じ現象だと思う),しかたないのだろう.

とりあえず charts.inc.php-0.8 から「auth::なんとか」が呼ばれているところ 3 ヶ所を単純にコメントアウトしたら動いた.たぶん auth_check_off オプションを使わないのならこれでいいのだろう.

その他にはまった点: PukiWiki の記法で表組みの記述をする際に,各セルの数字の後ろに空白があるとダメっぽい.数字の前なら大丈夫.あと,行末に空白があるのもダメらしい.これはなんだろう.


というわけで,研究室内 Wiki にコピー機の課金額グラフを載せて「無駄使いするなよ」圧力をかけてみるテスト.圧力に感度があるかどうかわからないけど.

2006-11-26 Sun

* Amazon の画像の表示を自由に変更する方法? [tech]

おお,サイズ任意に変えられるのか!

と思ったら,写真自体の大きさはそのままで枠の幅が変わるだけ? ちょっと残念.

画像

画像

画像

画像

(追記) あ,小さくする方は縮んでくれるのか.

画像

画像

画像

画像

2006-11-26 Sun

* はてなブックマーク用 bookmarklet [tech]

正規のユーザでもないくせに「はてブコメント表示bookmarklet」をいつも使っている私なのですが,

これって escape(location.href) を使っているから,Wikipedia みたいに URL に最初から「%」が含まれている場合に %25 に変換されちゃっておかしなことになってる気がするんですけど,そういうもんなんですか?

2006-11-23 Thu

* Let's Note CF-W4 用の AC アダプタまとめ [tech]

純正 CF-AA1625AJS: 8000〜9000円?

奥行88mm×幅39mm×高さ27mm、質量:約190g


◎ FILCO POWERLINK slim PLS162P: 3500〜4000 円?

長さ110×幅50×厚み20(mm) 140g(本体のみ)

軽くて薄いけど,長さと幅はむしろ純正より大きい.PC 側のプラグがストレートなので使いにくい場合もあるとか (amazon の評価コメントより).これが本命かな.


サンワサプライ ACA-P10: 7000〜8000円?

本体サイズ:W98×D42×H29mm 重量:260g


アーベル AGP107MPN: 6000 円くらい?

118×38×40mm (重さ不明?)

2006-11-14 Tue

* Windowsスペック&起動音一覧集 [tech] 1 user

NTのって,ドラゴンボールZのオープニング曲かと思った.Sparking!

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [asJepf7hj9y] <a href=http... (2016-11-27 11:34:23)

* [asJep4prn68] <a href=http... (2016-10-26 06:58:46)

2006-11-14 Tue

* Windows Vista の起動音は Robert Fripp が作曲 [tech]

つうか Windows 95 の音は Brian Eno だったのか.まったく知らなかった.

しかし、フリップ先生も Vista チームを称えながらも、マイクロソフトからのお金を何に使うか聞かれ、「新世代 iPod を買う」と答えるひねくれたユーモアが健在で安心した。

http://d.hatena.ne.jp/yomoyomo/20061114/frippvista

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [asJepmoutn6] <a href=http... (2016-07-22 07:57:31)

2006-10-27 Fri

* Beamer - 時計プロジェクタ [tech]

画像

http://arcconcept.com/clock_n/wall_clock/beamer.htm

Google 流会議術↓に使えるかなとか思った.

会議をフォーカスしたものにするための小さなプレッシャーとして、Google での集まりには、いつも大きな時計が掲げられている。時計は、会議の残り時間やそのトピックに当てられる残り時間が表示される。実際には、この時計は、パソコン上で稼働している時計で、それを4フィート大(約1m20cm)の大きさでプロジェクターで映し出されている。

1週間に70もの会議をこなすGoogleのMarissa Mayerさん流会議術

「残り時間表示」はできないけど (それじゃ意味無いかも?).

それにしても 2万円弱は高い.

2006-10-25 Wed

* RubyのFasterCSVモジュールは速く,Pythonの標準csvはさらに圧倒的に速い [tech] 1 user

python すごいな.この違いはどこから? ネイティブコードで動いてるからとかいうそれだけの話?

2006-10-21 Sat

* tramp が遅すぎる [tech]

mhc-cvs を使うようにした [2006-10-15-1] のに引き続いて,日々のメモというか要するにこのページの抽出元になっているログを書く際にも emacs を X で飛ばさなくてもよいようにしたい,というわけで tramp を使いはじめてみた.

結論から書くと,遅すぎてちょっと常用は無理かなという印象.

対象ファイルは 2006.txt みたいな名前で 1 年分が 1 個のファイルになっていて,サイズは 700 KB くらい.いろいろ試した結果,転送方法は (setq tramp-default-method "rsync") にするのが一番速いのだけど,それでも save するのに 3 〜 5 秒程度かかる.普段からわりとこまめに C-x C-s 叩く方なのと,そうでなくても auto-save の度に数秒止まってしまうわけで,その度に思考が中断されてとても嫌な感じ.

正確には,save 中は完全に止まっているのではなくて,その間にタイプした内容はちゃんと入力されていて,save 完了後に表示されます.しかし (特に日本語変換を含むような場合は) 視覚フィードバックがないとやっぱりタイプしにくい.save はバックグラウンドで非同期に実行するような仕組みにはできないものなのかなあとか思った.

何かいい方法はないものだろうか.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [asJepdkknth] <a href=http... (2016-09-21 23:09:03)

2006-10-21 Sat

* iRobot が戦闘用ロボットをデモ [tech]

かの Rodney Brooks 率いる iRobot の戦闘用ロボット.むー.

なんか唐突にどっかで見た研究室の話が出て来てワラタ.しかしあの技術は,むしろどこに行っても「これで追尾ミサイ(略」と言われてしまうのでアレなのですが.

2006-10-15 Sun

* mhc-cvs [badinerie][tech][mhc]

今までは自宅の emacs の窓を職場の PC の X サーバで開いて,作業メモの読み書きなりスケジュールの読み書き (mhc) をしていたりしていたのだけど,自宅の回線は普通の ADSL なのでちょっと無理を感じていた.

というわけで自宅 PC が逝ったのを機に (あまり関係ないけど,単にきっかけということで),まずは mhc の方は mhc-cvs を使ってみることにする.

自宅に repository を掘る.

% mkdir /home/swk/mhc-cvsroot
% cvs -d /home/swk/mhc-cvsroot init
% cd ~/Mail/schedule
% cvs -d /home/swk/mhc-cvsroot import -m 'Initial import' -I '.*' -I trash schedule name start
% cd ..
% mv -i schedule schedule.bak20061015/

で,.emacs に

(setq mhc-file-method 'mhc-cvs)
(setq mhc-cvs-repository-path "/home/swk/mhc-cvsroot")

な風に書く.リモート側の PC は,

(setq mhc-file-method 'mhc-cvs)
(setq mhc-cvs-repository-path ":ext:swk@host.example.com:/home/swk/mhc-cvsroot")

とする.もちろん CVS_RSH は ssh で,ssh-agent を使っている.

実は ssh のポートが標準の 22 ではないのだが,そこでちょっとはまった.安直に CVS_RSH を "ssh -p 12345" とかにしてみたら cvs が

cannot exec ssh -p 12345: No such file or directory

とかいう素敵なエラーを吐いて失敗.結局

#!/bin/sh

ssh -p 12345 "$@"

なシェルスクリプトを作るという微妙な方法で回避した.

mhc-cvs 自体は,ひとまず快適に動いているっぽい.スケジュールを書き込むと即時 commit されるようだ.それはよいのだが update がどういうタイミングで行われているのかよくわからない….しばらく使ってみます.

関連記事:
[2006-10-28-1] chalow に後づけカテゴリ
[2006-10-21-5] tramp が遅すぎる

2006-10-04 Wed

* インストラクターのネタ帳 [tech] 1 user

『インストラクターのネタ帳』では、ワード・エクセル・パワーポイント・アクセスなどのインストラクションをする中でよくご質問いただくことをベースに、使い方・FAQ・Tips・Q&A・裏技等を毎日ご紹介しています。

Excel の操作でこんなの↓を探しててたどりついた.助かりました.

連番が振りたい−メニューから:Excel エクセルの使い方

見出しを印刷する:Excel エクセルの使い方-印刷

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Bubber] Finding this post sloves a problem for m... (2013-07-04 02:08:34)

2006-10-03 Tue

* iris - 「開く」「名前を付けて保存」のプレースバーをカスタマイズ [tech] 1 user

今回紹介するフリーウェアはiris、プレースバー (ファイルを保存、開くダイアログの左側) のカスタマイズソフトウェアだ。

irisを起動すると、プレースバーの表示項目(最近使ったファイル、デスクトップ、マイドキュメント、マイコンピュータ、マイネットワーク)が並んでいる。そこから自由に選択して配置を変えられる。

http://fw.moongift.jp/intro/i-2367.html

しばらく試してみているけど,とても便利.しかし,iris による設定が反映されるソフトウェアと反映されないソフトウェアがあったりしません?

と思ったけど,どうも MS Office だけが反映されないようだ.

で,よくよく調べると,Office の場合は「開く」「保存」ダイアログの右上に「ツール」というメニューがあって,その中に「マイプレースに追加」という項目がある.これを使って,適当なフォルダを選択して追加できるらしい.つまり Office の「開く」「保存」ダイアログは標準的な部品じゃないってことなんだな.

既存のものを削除できないのがいまいちだけど,並ぶ順序は変えられるので,下の方に追いやってやればまあ悪くないかも.

2006-09-27 Wed

* ls -trl が超便利 [tech] 20 users

UNIX コマンドの使い方のクセを晒すのが最近の流行りのようですが(ほんとか),私の場合,

ls -trl

って打つのがほとんど手クセです (実際には alias l ls -l しているので l -tr が手クセなのですが).

-t と -r は,

   -t      Sort by time modified (most recently modified first) before sort-
           ing the operands by lexicographical order.

   -r      Reverse the order of the sort to get reverse lexicographical
           order or the oldest entries first.

なので,最近更新されたものが一番下に来ます.だから,だーーっとファイル名が流れて,最近いじったファイルが端末の画面に残ります.要するに超整理法の一種かな.

私のホームディレクトリが雑多なファイルでごったがえしているのはこれのせいかも知れません.だって整理しなくてもあまり困らないんだもん.

関連記事:
[2010-01-30-1] UNIX使いだった俺がWindowsに移行してみるよ -- まめFile
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Michaelnuh] Females can have already been killed thr... (2014-05-09 23:34:55)

* [roman] deCWle 坦脱 竪巽鱈端 棚棚 但樽脱辰奪鱈竪奪 但奪谷樽単... (2012-12-11 09:11:01)

* [roman] 誰単竪叩樽歎棚竪:) 谷単単鱈耽 嘆奪狸, 誰竪淡竪嘆奪 歎淡奪 ... (2012-12-01 19:57:25)

* [nikolay] 但嘆樽丹 誰丹樽辰樽谷脱辿 但 嘆樽狸 脱奪 辰坦探奪 (2012-12-01 04:48:16)

* [nikolay] テC庵狸鱈樽奪 歎奪谷樽但奪歎奪単棚樽奪 単誰単竪叩樽! (2012-11-25 02:21:58)

* ...

2006-09-22 Fri

* The Ninja Text Generator [tech]

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Brettbig] wh0cd472561 <a href=http... (2017-08-06 08:20:52)

2006-09-18 Mon

* NTT東西、固定電話版iモード撤退へ [tech]

Lモード撤退の話.突っ込みどころは大きく 3 点:

  • まだあったのかよ
  • 見出しに使ってもらえない「Lモード」という固有名詞の悲哀.日経容赦ナサス
  • 「ネット利用者のすそ野を拡大するという役割を終えたと判断した」 そもそもその役割は割り当てられていたのかという
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Erickaburl] wh0cd163201 <a href=http... (2017-07-11 17:37:59)

* [Erickaburl] wh0cd8872198 <a href=http... (2017-05-28 03:43:47)

2006-09-16 Sat

* Firefox で長いURLを折り返す [tech][logging][firefox][bloglines] 5 users

ソースコードなどを blog などに貼りつけるときにどうするのがよいか,という話がちょっと前に話題になっていたりして,その論点の一つに「横に長すぎる場合」をどう扱うかが挙がっていたりするのだけど,実は似たような問題はほかにもある.連続するASCII 文字列である.

典型的には,長ーい URL 文字列を表示した場合に,枠からはみ出したり,枠自体がびろーんと伸びて見ずらくなったりする.といっても Firefox の場合だけなのだけど.

対策法がこちらによくまとまっている:

ざっくり要約すると,まず Firefox ユーザ側の立場としては,

一方,Firefox を使っているかどうかに関らず,ウェブサイトの運営側の立場としては,

  • 自分のところに来る Firefox ユーザ全員が url_breaker を使ってくれているとは期待できない
  • → 実は Greasemonkey 版の url_breaker は,ウェブページ側に仕込んでもうまくはたらくので,それを利用するとよい

ちょっとややこしいのは,url_breaker には「A要素のみを処理するもの」と「全文を処理するもの」という 2 系統があり,さらに「xpi版 (つまり普通の拡張機能)」と「Greasemonkey版」の 2 系統がある,のだが,それらが直交していない.えーと,こんな感じ?

A要素のみ処理 全文を処理
xpi url_breakerの Ver.0.2.2以降 同左 (オプション設定)
Greasemonkey url_breakerの Ver.0.2.1 url_breaker_plus


というわけで,実はしばらく前からウェブページ側に仕込んでみている. url_breaker_plus の方です.各 HTML ファイルの body 要素の一番最後辺りに,

<script src="/js/url_breaker_plus.user.js" type="text/javascript">
</script>

と入れる. url_breaker_plus.user.js はこちら.オリジナルのままだと開き括弧 {, {, [ の直後でも改行しちゃって(個人的に)気持ち悪いので,正規表現を以下のようにちょっと修正して使っている.

//      var regexp = new RegExp("([!-%'-/:=\\?@\\[-`\\{-~]|&amp;)");
      var regexp = new RegExp("([!-%'\\)-/:=\\?@\\\\-`\\|-~]|&amp;)");

さて,実は長い文字列が横に伸びちゃうのが一番うっとうしいと個人的に思っているのは bloglines なのけど,url_breaker の効果は有ったり無かったりでどうも挙動が謎である.bloglines の記事表示が table レイアウトなのが問題なのかも.

2006-09-16 Sat

* 読みにくいソースコード [tech] 1 user

遥か昔,若気の至りでこんなシグネチャを使ってたことがあるのを思い出した.

main(c,d/*     鏡  慎吾 (Shingo W. Kagami)  */){c=!printf(&01[
"csh"]);/*        東京大学工学部計数工学科  */while(putchar(c[
"in/out"/*               kagami@post.co.jp  */]-'+'+c["++c++"]
)!=111)c/*  t60685@hongo.ecc.u-tokyo.ac.jp  */++;puts("1"+1);}

(注: 上のメールアドレスはどちらも消滅してます)

メールアドレスから判断するに学部 3 年くらいの頃か.C を覚えたての頃ですね.インスパイヤ元は明らかに Korn の作品と思われる.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Erickaburl] wh0cd1293049 <a href=http... (2017-06-02 17:20:16)

2006-09-09 Sat

* MHC の小ネタ [tech][mhc]

スケジュール管理は相変わらず MHC でやってます.

いったん Mew のバッファに移ってから C-c.. するのが煩わしく感じて来たので,.emacs で

(global-set-key "\C-c.." 'mhc-goto-this-month)

してみた.微妙に便利になった気がする.

関連記事:
[2006-10-28-1] chalow に後づけカテゴリ

2006-09-03 Sun

2006-08-21 Mon

* Molex の 5045,5046 は 2.5 mm ピッチである [tech]

ちょっとした回路の DC 電源コネクタとしてよく使うんだけど,今の今まで 2.54 mm ピッチだと思ってた….

2006-08-17 Thu

* USBで焼肉 [tech]

5ポート USB 1.1 カードを 6 枚差して 30 * 5 [V] * 0.5 [A] = 75 [W] で焼肉.すばらしい.すばらしいけど,

お茶をそこに置くな

2006-08-17 Thu

* グーグル、「ググる」の使用に難色 [tech]

てっきり Bogusnews か虚構新聞だと思ったら本当なのか.



「セ○ムしてますか」という CM まで流したのに定着させられなかった会社の立場はどうなる.(いや定着させたかったのかどうか知りませんが)

(追記) とか書いてたら早速 Bogusnews の記事が.仕事はやすぎ.

(追記) 日本語の「ググる」はOK?

2006-08-16 Wed

* 「無断リンク禁止」と「アダルトサイトの年齢確認」 [tech] 1 user

最近再燃している感のある無断リンク談義 [2006-06-29-1]ですが(もう下火か?),関連してふと思ったこと.

いわゆるアダルトサイトって,トップページとかに「18歳以上ですか?」みたいな選択リンクがあるじゃないですか.No を選ぶと Yahoo! に飛んだりするやつ.あれって何なんでしょう? 「無断リンク禁止」がナンセンスなのと同等にナンセンス極まりないと思うんですけど.

と思ってちょっと調べてみると,風俗営業等の規制及び業務の適正化等に関する法律の第31条の2あたりが根拠っぽい?

どうも解釈がいろいろ面倒くさそう.まともに読むと少なくとも有料サイトであればリンクを選ばせるだけじゃダメっぽいし,無料サイトにはそもそも適用されるのだろうか.

というわけでさっぱりわかりません.教えて エロい人 エラい人. (← これが書きたかっただけちゃうんかと小1時間)

2006-08-16 Wed

* うっかり Flash Player 9 を入れてしまったので 8 に戻す [tech][firefox] 1 user

ふと Flash Player 9 を入れてみたら, Firefox からクリップボードへのコピー ができなくなった.がるる.常用している bookmarklet [2006-07-08-1] が動かなくて困るので, Flash Player 8 に戻すことにする.

この辺を参考にした.

まず 9 をアンインストールした方がよさそうだ.以下のページにある「Flash Player 8 uninstallers」がそのまま使えた.IE とか Firefox を起動したまま走らせるとちょっと厄介だったので,止めてからの方がよさげ.

過去のバージョンの Flash Player は以下のページにある.Flash Player 8 をダウンロード,展開して,インストール.

というわけで無事戻った.

2006-08-15 Tue

* pya! filter [tech] 7 users

pya! が大好きだ.でも全部見て回る体力はない.

というわけで,ざっと一覧を眺めて評価の高いものだけ拾い読みしていたりしていたのだけど,いまいち幸せでない.評価の高いものだけ選んでフィードできればいいのになあ.

と思ったので作ってみました.

pya! の過去ログを 15 ページほど蓄えておいて,リクエストが来ると条件に合致する記事一覧を RSS として吐く.デフォルトの条件は「プラス評価が300以上」.

未読管理のできる RSS リーダで読めば,条件を満たした時点で新着として現れることになります.

pya! のページ構成が変わったらきっと動かなくなるに違いないのは仕様です.というかつまり無断でやってますので,怒られたらさっさと引き上げます.

あとこれ plagger でできると思うので誰かよろしく.


フィルタ条件は,cond パラメータとして渡してやる.空白で区切られた(よってエンコードされた URL 上では + で区切られた) 文字列のリストで,スタックマシンよろしく条件を記述する.たとえば

で「プラス評価が300以上の記事を抽出」となる.これがデフォルト.他には

で「プラス評価がマイナス評価に比べて相対500以上で,かつ(18+)でないものを抽出」となる.たぶん.

リストの要素は以下の 3 種類:

  • 整数 ... スタックにその数を push する
  • 変数 ... スタックにその変数の内容を push する
  • 演算子 ... スタックから 2 個,または 1 個の値を pop して,それらに対する演算結果をスタックに push する

これらを順にすべて評価して,最後にスタックのトップに残った値が真だったらその記事はフィードに含める.偽だったら含めない.

変数はとりあえず以下の通り:

$good 「イイ」の数
$ero 「エロいな」の数
$bad 「ハゥ」の数
$positive $good + $ero
$negative $bad
$hit ヒット数
$pu PU 同意数
$over18 (18+) だったら 1,さもなくば 0

演算子には 2 項演算と 1 項演算がある.2 項演算 op は,pop した値を順に x2, x1 として,x1 op x2 を計算する.op の種類はとりあえず:

ge >=
gt >
le <=
lt <
eq ==
ne !=
plus +
minus -
and &&
or ||

1 項演算 op は,pop した値 x に対して op x を計算する.op の種類はとりあえず:

not !


出力される RSS の description の部分には「(・∀・)イイ」とかの評価数が表示されます.なので,記事内容に更新があったときに新着記事として扱う RSS リーダを使っている場合は,一度読んだ記事が何度も何度も現れることになります.

例えば bloglines の場合は subscription の設定で Updated Items を ignore するように設定することができて,そうすればこの点は問題にはなりません.そのようなオプション設定のない RSS リーダを使っている場合は,CGI に渡す hide_scores というパラメータを真にすることで, description が空の RSS を吐くようにすることができます:


過去ログを取って来る方のソース:

#!/usr/bin/env perl

use strict;
use LWP::UserAgent;
use Storable;

my $regexp1 = '<tr><td width.+?>(.+?)</td><td .+?><a href=\'pyaimg/pimg.php\?imgid=(\d+)\'.+?>(.+?)</a></td></tr><tr><td .+?>No\.(\d+)</td><td width.+?><SPAN CLASS.+?>(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}) :: .+?=(\d+).+?</td>(.+?)</tr>';
my $regexp2 = '<td .+?><Img Src=\'(.+?)\.gif\'.*?> : (\d+)</td>';

my $store_file = "/home/swk/pya_db/pya.stor";

&main;

sub main
{
    my $html_code = &get_pya();

    my @posts = ();

    while ($html_code =~ /$regexp1/g) {
        my %h = ();
        $h{type} = $1;
        $h{imgid} = $2;
        $h{title} = $3;
        $h{no} = $4;
        $h{date} = $5;
        $h{time} = $6;
        $h{hit} = $7;
        $h{counters} = $8;
        push(@posts, \%h);
    }

    foreach my $p (@posts) {
        $p->{title} =~ s/<b>//g;
        $p->{title} =~ s/<\/b>//g;

        while ($p->{counters} =~ /$regexp2/g) {
            my $ctype = $1;
            my $cval = $2;
            $p->{$ctype} = $cval;
        }
        undef($p->{counters});

        $p->{good} = $p->{ii1} + $p->{ii10}
                     + $p->{ii5} + $p->{ii6} + $p->{ii7};
        $p->{ero} = $p->{ero1} + $p->{ero2} + $p->{ero3} + $p->{ero4};
        $p->{bad} = $p->{ii2} + $p->{ii12};

        $p->{positive} = $p->{good} + $p->{ero};
        $p->{negative} = $p->{bad};

        $p->{pu} = $p->{p1} + $p->{p2} + $p->{p3} + $p->{p4} + $p->{p5};

        $p->{over18} = ($p->{title} =~ /^\(18\+\)/)? 1: 0;

        $p->{dcdate} = $p->{date} . 'T' . $p->{time} . ':00+09:00';
        $p->{permlink} = 'http://pya.cc/pyaimg/pimg.php?imgid=' . $p->{imgid};

        $p->{score} = join(', ', 
                           ("hit: $p->{hit}",
                            "(・∀・)イイ: $p->{positive}",
                            "(;´Д`)ハゥ: $p->{negative}",
                            "PU: $p->{pu}"));

        if ($p->{title} =~ /^(.+) \((情報:.+)\)\s*$/) {
            $p->{itemheader} = &html2xmlstr($1);
            $p->{itemauthor} = &html2xmlstr($2);
        } else {
            $p->{itemheader} = &html2xmlstr($p->{title});
            $p->{itemauthor} = 'pya';
        }
    }

    Storable::store(\@posts, $store_file . '.new');
    rename($store_file . '.new', $store_file);
}

sub get_pya
{
    my $page_max = 15;
    my $pya_str = "";
    my $pya_url = 'http://pya.cc/kako.php?genre=1&kakopage=';

    my $ua = LWP::UserAgent->new;
    for (my $i = 1; $i <= $page_max; $i++) {
        my $http_response = $ua->get($pya_url . $i);
        $pya_str .= $http_response->content;
        sleep(3);
    }

    return $pya_str;
}

sub html2xmlstr { # from chalow-1.0rc4
    local ($_) = @_;
    s/&nbsp;/ /g;
    s|<img.+?alt="(.*?)".*?>|[$1]|gosm;
    s/[\t\n]//g;
    s/[\x00-\x1f]+/ /g;
    s/\s\s+/ /g;
    s|<[^<>]+?>||gosm;
    s/&lt;/</go;
    s/&/&amp;/go; s/>/&gt;/go; s/</&lt;/go; s/\"/&quot;/go; # "いつもの4つ
    return $_;
}

CGI のソース:

#!/usr/bin/perl -T

use strict;
use POSIX qw(strftime);
use Template;
use Storable;
use CGI;
use Encode;

my $store_file = "/home/swk/pya_db/pya.stor";

my $rss_tt2 = << "RSS"
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
 xmlns="http://purl.org/rss/1.0/"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:admin="http://webns.net/mvcb/"
 xml:lang="ja">
<channel rdf:about="[% self_url %]">
 <title>filtered pya</title>
 <link>http://pya.cc/</link>
 <description>filtered pya!</description>
 <dc:language>ja</dc:language>
 <dc:date>[% rss_dcdate %]</dc:date>
 <admin:generatorAgent rdf:resource="http://www.kagami.org/pya_filter/"/>
 <items>
 <rdf:Seq>
 [% FOREACH i = items -%]
  <rdf:li rdf:resource="[% i.permlink %]"/>
 [% END -%]
 </rdf:Seq>
 </items>
</channel>
[% FOREACH i = items -%]
<item rdf:about="[% i.permlink %]">
 <title>[% i.itemheader %]</title>
 <link>[% i.permlink %]</link>
 <description>
 ([% i.type %])[% UNLESS hide_scores %] [% i.score %] [% END %]
 </description>
 <dc:creator>[% i.itemauthor %]</dc:creator>
 <dc:date>[% i.dcdate %]</dc:date>
</item>
[% END -%]
</rdf:RDF>
RSS
        ;

&main;

sub main
{
    my $time1 = (times)[0];
    my $q = new CGI;
    print $q->header(-type => 'application/xml',
                     -charset => 'UTF-8');

    my $postsref = Storable::retrieve($store_file);
    my $cond = $q->param('cond') || '$positive 300 ge';

    my $filter = &mkfilter($cond);
    my @items = map &$filter($_), @$postsref;
    
    my $tt2 = Template->new();
    my $rss_out;
    $tt2->process(\$rss_tt2, {
        self_url => $q->url(-full => 1, -query => 1),
        hide_scores => $q->param('hide_scores')? 1: 0, 
        items => \@items,
        rss_dcdate => strftime("%Y-%m-%dT%H:%M:%S+09:00", localtime),
    }, \$rss_out);

    Encode::from_to($rss_out, 'euc-jp', 'utf8');
    print $rss_out;
    
    my $time2 = (times)[0];
    printf("<!-- time elapsed: %f (s) -->\n", $time2 - $time1);    
}

sub mkfilter
{
    my @cs = split(/\s+/, shift);
    my @fn = ();

    foreach my $c (@cs) {
        if ($c =~ /^(-?\d+)$/) {
            my $arg = $1;
            push(@fn, sub { push(@{$_[0]}, $arg); });
        } elsif ($c =~ /^\$([a-zA-Z_][a-zA-Z01-9_]*)$/) {
            my $arg = $1;
            push(@fn, sub { push(@{$_[0]}, ($_[1]->{$arg}) + 0); });
        } elsif ($c =~ /^([a-zA-Z_][a-zA-Z01-9_]*)$/) {
            my $arg = $1;
            push(@fn, sub { &op($_[0], $arg); });
        } else {
            return sub { return (); };
        }
    }

    return sub {
        my ($p) = @_;
        my @stk = ();
        foreach my $f (@fn) {
            &$f(\@stk, $p);
        }
        return pop(@stk)? $p: ();
    }
}

sub op
{    
    my ($s, $o) = @_;

    my %biop = ('ge' => sub { $_[0] >= $_[1]; },
                'gt' => sub { $_[0] > $_[1]; },
                'le' => sub { $_[0] <= $_[1]; },
                'lt' => sub { $_[0] < $_[1]; },
                'eq' => sub { $_[0] == $_[1]; },
                'ne' => sub { $_[0] != $_[1]; },
                'plus' => sub { $_[0] + $_[1]; },
                'minus' => sub { $_[0] - $_[1]; },
                'and' => sub { $_[0] && $_[1]; },
                'or' => sub { $_[0] || $_[1]; },
                );
    my %uop = ('not' => sub { !$_[0]; }
               );

    if (defined($biop{$o})) {
        my $b = pop(@$s);
        my $a = pop(@$s);
        push(@$s, &{$biop{$o}}($a, $b));
    } elsif (defined($uop{$o})) {
        my $a = pop(@$s);
        push(@$s, &{$uop{$o}}($a));
    }
}

作ってて思ったこと.ちゃんと評価したわけじゃないけど,上のプログラムで試した範囲では,

  • HTML::Template より Template Toolkit の方がちょっと速い.でも直書きする方がもっと速い (当り前?
  • Jcode より Encode の方がだいぶ速い.
  • 上の CGI では,リクエストが来ると最初に cond パラメータを解釈して条件判定関数を生成し,それを保存している記事リストに map で適用している.実は,これをやらずに記事の数だけ cond の解釈を繰り返しても,そんなに顕著には遅くならなかった.Perl の正規表現エンジンって優秀だなと思った.

(追記) hide_scores まわりの説明がわかりにくかったようなので書き直しました.

関連記事:
[2007-06-12-2] ハイパー漢字検索を勝手に Ajax 化

2006-08-11 Fri

* 今日の敗北感 [tech]

UNIX 機で IP アドレスを確認しようと思って

ipconfig

と打鍵していたとき.

2006-08-07 Mon

* なんか bloglines が全然ダメな件 [tech][bloglines]

bloglines で keep new していた記事がいくつか行方不明になっている.左側のフレームで keep new な記事数がかっこ表示されているのに,右側には何も出てこなかったりする.出てこないから keep new の解除もできなくてかっこ表示残りまくり.気持ち悪い.というか,普段から keep new を酷使しまくる人なので [2006-07-08-1],とても困る.

該当しそうなアナウンスが一応出ている.

これによると一時的なもので,データのロスはないという.メンテナンス前のデータが新しいデータベースに移行されていないってことか? …と思っていたら,ついさっき keep new した記事がまた消えている.なんだこれ?

そろそろ livedoor reader 辺りに乗り換えろということだろうか.

最終更新時間: 2011-05-21 03:43


Shingo W. Kagami - swk(at)kagami.org