まずダメなところを認めることから始まる

あんまり真面目に追っかけてなかったけど、Matz はその後さらに燃料を投下してたのか。なんてサービス精神旺盛なんだ。

Attacking PHP - Matzにっき(2008-01-26)

もうね。本人すら最初に何を話題にしたのか忘れてるんだけど、本当の問題は引用した部分、リンク先の部分だけなんだよね。ここまでにしておきなさい。初心者に向いているかどうかとか、Webアプリの構築に向いているかどうかなんてことはもっとじっくり材料を整理して日記なんかよりももっと向いたメディアで展開すべきであって、手近な材料をきっかけに話を膨らますもんじゃない。(それが楽しいってのは否定しないけどさ。)

※ 一部に建設的な手法を議論されている方がいらっしゃることは承知しております。それを否定する気はまったくありません。

ありがたいことに元ネタについてはときどきの雑記帖 i戦士篇 2008年1月(下旬)にもう少し広い範囲をカバーした対訳があるのでそっちを見てください。

※ register_globals が on かどうかなどは判別できます。マニュアルの ini_get() を穴が開くほど嫁。

でだ。この挙げられた中で否定的な意見はざっくり構文的な設計の部分、肯定的な意見は機能の(特にキャッチーさと多さの)部分なんだよね。そもそもが全然噛み合ってないし、たぶんどっちも正解というか自分はどっちにも賛成します。全然矛盾しないし。

ということはすなわち片方の意見を以て PHP 全体が良いとか悪いとかはまったく言えないし、初心者に向いているかいないかも言えないし、Webアプリに向いているかいないかも言えないんです。言えないんです。それでいいんです。

ただね、気になるんだけどみんなちゃんとこの元ネタの肯定、否定意見読んだ?と問いたい。そのうえでこれらの意見にまったく同調できないんだとしたらそれは申し訳ないけど、明らかに不勉強か不感症です。そしてこれがいちばん言いたいことなんだけど

使うんだったらダメな部分はちゃんと理解して認めたうえで使え。スルーするな。

いいところについてはプログラムを書く人間はただ享受すればいいだけだけど、ダメなところは弱点なんだから、書く人間がそれを引き受けなきゃいけない。つまり「ダメだ」「イケてない」という意見こそ真面目に聞いたうえで使わなきゃダメ。初心者だからよく分からない? だったらなおさらだ。言い直すと

勉強しない人の存在こそが「だから PHP は」「だから PHPer は」って言われるスキを与えるわけ。

分かったらくだらないケンカ売ったり買ったりしてねーで勉強しろ。他人の日記読んで頭に血のぼらせたりニヤニヤしてても絶対にいいコードは書けるようにならないから。Matz 叩きたいだけなら止めないけど、それはお前にとってどんなメリットがあるって言うんだ。

あと。

PHPer もずいぶん二極化というか局地化してるよね。完全に我が道行っちゃってて外野の声に反応がほとんどないのもちと寂しいですよ > 誰ともなく

DOS/Windows 領域の mount がめんどくさい

考えるのが面倒で避けてきた日本語ファイル名を含む (V?FAT|NTFS) 領域の mount についてやっと分かってきたので整理。

※ 例によって嘘八百書いている可能性があるのでツッコミ希望1

まとめ

mount の option の効きどころ

  • mount の option で与える charset/locale は、mount する領域のファイル名のものではなく、「これに変換して扱う」という意味
    • 環境変数の言語設定に暗黙に従うのだと思っていたけど、これがそもそも間違っているらしい
  • ntfs の場合、ファイル名の保持は必ず Unicode(utf-16le?) で行われるので、codepage を指定する必要がない2
    • 恐らく iocharset/locale の設定によらず、ファイル名そのものは見える
    • つまり設定ミスに気づきにくい
      • → ext3 や ufs の領域にコピーしたらファイル名が読めない!という事態に
    • Windows を使っていてファイル名が SJIS に見えるのは Windows の API を経由したときに変換されているのか?
  • msdosfs/vfat の場合は fat 領域の codepage を指定するオプションがある
    • この codepage が DOS/Windows のバージョン(≒言語)によって異なる
    • 従って codepage が正しくセットされていないと日本語ファイル名が読めないという状況になる
      • → 逆に言うと日本語ファイル名が読めなくなることで mount option が間違っていることに気づきやすい
    • vfat も long filename の部分は Unicode で、short filename の部分で codepage を使う、という構造になっているらしい

オプションの記述方法

例えば日本語EUCの場合

localeja_JP.eucJP
charseteuc-jp

codepage については共通のはず。

FreeBSDの場合

FAT-L ja_JP.eucJP -D CP932 など
NTFS-C eucJP など

ntfs の charset は eucJP などのように書くらしい。euc-jp じゃないのか? locale の方になんとなく合わせてある? つか FreeBSD で charset つったらそういうもんだっけ。

FreeBSD 6.1-R の時点で、標準で利用できる mount ではマルチバイト文字を含むファイル名で書き込みはできない。

Linuxの場合

FAT-o iocgarset=euc-jp,codepage=cp932 など
NTFS-o iocharset=euc-jp など

実際には使うドライバ?によって違う。Linux の場合は ntfs を mount するためのツールがいっぱいあるので、それによっても変わってくると思う。(ますます面倒くさい。)

  1. と書いておいてもめったにツッコまれないのはきっと読んでいる人がいないんだろな。 

  2. だから msdosfs/vfat に比べてオプションが減っている 

IT系フリーペーパー

BCN総研、04年のPC関連店頭市場概況を発表 - IT系フリーペーパーも創刊 (MYCOM PCWEB)

このフリーペーパー、この辺でも手に入るのかなぁ。ちょっと見てみたい。

FreeBSD 4.11R

FreeBSD Security Information

によると 4.11 は 2007年1月いっぱい保つのか。丸2年てことですな。5.x に早く行っちゃいたい気もするけど、面倒そうなやつはどこかで 4.11 にだけしといて時間を稼ぐのもいいかな。

マスクをすると楽

もともと鼻と喉は弱いので、風邪でこの辺がやられると長引く。風邪自体は治っても喉、鼻だけ治りが遅い。

昨日、冷え込んだせいか鼻の奥がヒリヒリしたのでマスクを買った。これで楽になるーと思ったがこの部屋は想像以上に乾燥していて普通のマスクだけではややつらい。卓上加湿器も目の前に置いているわけじゃないので弱った喉、鼻にはあまり効果がない。

今日は向かいの机の人がお休み。うつしたのかなぁ、やっぱり。

平等

http://www.asahi.com/international/update/0130/009.html

すいません、この2年の差は別に差別とは思ってませんでした。なんでかなぁ?とは思ってましたが。

一人では気づかないことってたくさんある。

青い200億

こういうときこそスラドは面白い。斜に構えまくりな点も含めてね。

裁判長も言っているけどこれは本当に特殊事例でしょう。中村氏の想定している研究者像もまた一般化できないだろうし。(博打みたいなでかい金を渡されるよりも地味な生活を安定して送れる方がいいってタイプの研究者も居る。ノーベル賞の田中さんなんかはそのタイプでしょ。)

NTPd on Windows

いつも悩ましい NTPd on Windows ですが、本家 http://www.eecis.udel.edu/~ntp/software/index.html からたどれる Win 用のサーバを動かしてみたらクライアントが Unhealthy とか答えてくれちゃうので、利用を中止。やっぱ AdjustPC がお手軽でいいのかねぃ。これが SNTP だけでなく NTP サーバとして動いてくれたら文句なしなんだけど。

Windows98 のなんちゃってマルチユーザーを封じる

http://www.microsoft.com/japan/enable/training/kblight/t002/6/08.htm

いやぁ。忘れちゃいますね、こういうの。

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