2004-10-18

障害情報も RSS の方にほしい

最近 tdiary.org, tdiary.net がハードウェア障害で落ちっぱなしだ。ずっとただのにっきの rss の取得に失敗していたのでまた重いだけなのかと思ってしまっていたけど違った。mod_rewrite か何かでフツーにブラウザでアクセスしたときにはどんなパスでも障害が分かるようになっていたんだけど、自分とサーバに負荷が少ない(はず)の rss リーダーではパースできずに error になってしまうという困った状態。

しかしサーバ側で rss を生成している場合は障害情報のエラーを rss で出すのはちょっとメンドイよね。障害情報用のテンプレートを手元に用意して置いておくとかが現実的な対応方法だろうか。で、request uri が .rss とか /?cmd=rss とか index.rdf とかだったらそっちを返す。

こういうのは明日は我が身なのでほんとはどこかに情報が集まってるといいんだろうなぁ。Web サーバ管理者のほんとの虎の巻とでも言ったらいいのか。。。障害告知だけを目的とした緊急事態セット、みたいな。分かる人なら適当なマシンに Apache 突っ込んで rewrite とか 403 でとにかくエラーを吐く仕掛けを作るのは雑作のないことだけど、この RSS ってのは普段自分で使っておきながら盲点だと思った。もう一度整理しよう。

  • 障害告知用緊急 Web サーバセット
    1. 通常のアクセスには 403 や mod_rewrite を使ってエラーページを返す
    2. mod_rewrite で、使っていた blog ツールに応じて index.rdf, index.rss, index.xml, /?cmd=rss などの uri の際には rss の形のエラーページを返す

よし。とりあえず Apache 前提だけど、使い慣れたアプリケーションサーバ(Zope とか)で同じことができればそれを使ってもいいと思う。(「アプリケーションサーバ」になっちゃうと緊急事態に使うにはちとヘビーな気がするけど。)

とりあえず普段からそれなりに見栄えのする error ページをどうにかして(それこそ blog ツールの吐き出した HTML をもとにしてもよい)用意しておいた方がよさげですな。手書きであろう素っ気ない HTML を見ると、なんかどうも痛々しい。(実際痛いんだろうけど。)

明日からの課題にしておこう。

サーバの運用ノウハウもオープンソース?

それにしても tdiary.org, tdiary.net の障害、長いね。tdiary.net のサーバは複数あるんだけど、それぞれでバックアップの役割を担えるような、そういう運用体制を目指すべきでしたな。あとから言うのは簡単だし、当事者には申し訳ないけど、これはこれで勉強になる。

tdiary.net は確かサーバ提供者を募集していたように思うんだけど、その際のサーバの運用体制はオープンなドキュメントにはなっていなかったように思う。(Zebedee を入れてくれとかそういう指示はあったけど。)例えばこういう運用体制でいきますってのがもっと明確になっていれば、「あ、こういう管理なら(ハードウェア資源は出せないけど)オレも手伝える」という人が出てきたかもしんないなーとか、ちょっと妄想してみる。流行り言葉で言えばオープンソースなサーバ管理? ひょっとするとこういう運用の方が障害に強いぞ、という意見が出てきてもっと「強い」tdiary.net ができたのかもしんない。(逆に初心者が実運用の輪に入っちゃうとセキュリティ的にはかなりやばいけど。)

考えたらディストリビューションやアプリについてはユーザーコミュニティってのは簡単に見つかるけどサーバ管理コミュニティなんてないよな(^^; あんのかな。自分もそうだけど「あーこういうときのノウハウってどうなってんだ?」てなことを思ってる人って結構居るんじゃないかなと思うし、「自分はこういうノウハウはあるけど、こっちのノウハウは誰かに教えてもらいたい」なんてケースもあるような気がする。

自動挿入広告付きサイトでの CSS デザイン

広告の挿入位置を自由に自分で決められる(例えば xrea とか)ところはともかく、そうでない場合はたいていページ上部(または、および下部)に自動挿入される。

これは例えば Apache の mod_layout なんかを使えばできる(文字コード判別とかどうやってんのか知らないけど)。mod_layout はとにかく吐き出される HTML の <body> 直後と </body> 直前にあらかじめ決められた文字列を吐き出すもの。HTML が生 HTML だろうが動的に生成されたものだろうが関係ない。そういう仕掛けがサーバで動いてるんだなってことが分かればこの広告の仕組みはまったく不思議でもなんでもないし、ページデザイン上の配慮もやりやすい。

いちばん簡単なのは自分の作るページを <div id="page"></div> などで囲ってしまうことである。そうするとヘッダおよびフッタに影響を与えずに自分の作ったコンテンツだけにデザインを施すことができる。全部 div#page 内に対してスタイルを指定していけばよい。ソースで書くとこんな感じ。

<!DOCTYPE>
<html>
  <head>
  ここは自由に書ける
  </head>
  <body>
  <!--
  ここは mod_layout でコンテンツが挿入される
  -->
  <div id="page">
    この中に自分の作ったコンテンツが入る
  </div>
  <!--
  ここは mod_layout でコンテンツが挿入される
  -->
  </body>
</html>

で、css はこんな感じ。

body {
  ここは広告に対するスタイルにしておく
}
div#page {
  ここに自分のコンテンツ全体に対するスタイルを書く
}
div#page table {
  広告はたいがい table 組みしてるので、
  素の table にはスタイルを設定しないでおく
  table に class を指定してもいいけど
  html を手書きするときは邪魔くさいし、ソース
  読みにくくなるじゃん
}

参考 mod_layoutを使う

ドローに対する考え方を変えてみなきゃだめかな?

ドローと言っても自分が求めているのは「手早いテクニカルドローイング」であって、Illustrator のような精緻な絵が描けるものじゃない。概念図、構成図が掛ければいいのだ。この自分の求めているタイプのドローソフトは

  • クロスプラットフォームを意識した製品がインスピ以外は Canvas くらいしかない
    • それか Illustrator とか FreeHand とか Corel Draw とか、およそ手早さとは縁のない世界の製品ばっかり
    • Canvas も機能てんこ盛りで高い
  • そのインスピを始め、海外の製品は多言語対応を意識していないものが多い
    • インスピは日本の代理店がちゃんと最新版フォローしてくれないのに料金は元の3倍くらいする。パッケージもマニュアルも要らんから安くしてくれ。
  • 日本製のものは Windows 依存しまくりなうえに、なんだか微妙にダサい(まだあまり試してない)
  • フリーのものはグリッドが粗すぎたり操作が洗練されてなかったり、汎用的なベクトルグラフィック形式に export できないとか、できてもマニアック(sodipodi の SVG 限定)とか、あれこれ面倒な制約がついてまわる

ということなので、

  • 汎用の形式に export 可能
  • 操作性や目的の構成図、概念図に必要なパーツが揃っている

のであれば、クロスプラットフォームにはこだわらないでみようかなぁと思い始めてきた。とりあえず Mac では OmniGraffle がそこそこの値段だし UML も構成図も描けるのでこれがいいかなと思い始めている。

と思ったら Dia 0.94 for Windows でなんか不自由なく日本語入力できてるよ!

RubyistMagazine 0002 より

まだ全部読んでないし、全部読めるかどうかも分からないけど。

たぶん Ruby 界隈では極めて珍しいゲーム業界の人。スラドでも言われていた入門記事に果敢にも挑戦しているのは評価したい。まだあんまり読んでないけど。

Ruby の気持ちよさがどこからくるのかを社会システム理論という大ナタを使いながらも具体的で分かりやすい例とともに考える。個人的には特異メソッドとか分かりにくい言葉は Ruby の弱点のようにも思えるけど、機能としては非常に魅力的だ。しかしその辺の周りからは分かりにくいところにもだえている喜んでいる人が大勢居るように見えるところが Ruby厨のキモさなのかもしれないなーなんてことを思った。

この文章は全体的にはとても分かりやすく書かれている。枕の長さがちょっとアレだけれど、七並べの話だけ読めばずいぶんすっきりと理解できるはずだ。

高木浩光@茨城県つくば市 の2004年10月17日 を読む。

熱いなー。

しかしこれ

  • それぞれの役所の素人がみな見ようみまねでひどいことになっている

可能性は高いだろうけど、案外

  • どこも同じ制作会社に発注してひどいことになっている

可能性もあるような気がしてきた。あるいは

  • どこのWEB制作会社もセキュリティやプライバシーについて無頓着

ということもあり得る。こっちの方が可能性は高いかな。電子政府の中の人だけでなく、その周りに居る人がみんなダメっていう事態。あー十分にありそう。

セキュリティを分かっている技術者は自分の目にする Web 上ではたくさん居るように見えるが、実は比率的には少数なんじゃないかなぁ。Web ベースのシステムを作ってはいても Web のなんたるかすら分かっていない人なんていくらでもいるもの。Perl や PHP と HTML と JavaScript がコピペできれば Web サイトなんて作れるんだから。

About

例によって個人のなんちゃらです

Recent Posts

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm