カテゴリ:プログラム( 15 )

呆れるほど速い!?:(・_・)

だそうな。

http://hyperestraier.sourceforge.net/
http://ja.wikipedia.org/wiki/Hyper_Estraier

おもしろ~い。
[PR]
by namizusi | 2008-06-04 02:16 | プログラム

WindowsUpdateでIE7自動インストール開始:(・_・)

前々から告知されてましたが、ついに配信開始された模様。(Windows XP)
http://www.microsoft.com/japan/windows/products/winfamily/ie/default.mspx

IE7になるとタブラウザになったり更新ボタンの配置がわかりづらくなったりしますが、めんどいのはIE6まではちゃめちゃ仕様だったCSS対応が、IE7で正式対応を謳っているということ(CSSの挙動が微妙に変わる)、セキュリティ強化のためにJavaScriptの挙動が微妙に変更、フィッシング詐欺防止機能がついてうるさくなったという辺りでしょうか。

一般向けページなら見た目や挙動がちょっと変わったかな~くらいで済みますがWebインタフェースの業務系ソフトの場合はセキュリティの対応が変わってしまって、対策してたはずが無効になってるかもしれません。ちゃんと対応してますか~?

一応「Blocker Toolkit」というのを入れると自動更新の抑止ができる模様です。
http://www.microsoft.com/downloads/details.aspx?FamilyID=4c12d92f-808d-4c21-96ca-dc191a0a8e41&displaylang=ja&Hash=EjtF4Kdj3vWnnlntnSaqfISdUAT46XhmSUFqWqAA4qiF8V%2bt046IGdnnDzsRroR5reF9h%2bvjjn0xHYZfMpFPEQ%3d%3d

ちなみに間違ってIE7に更新しちゃったのをIE6に戻すのはアンインストールすれば可能と思われますが(自動配布以前はそういう仕様でした)、このアンインストール機能が結構怪しくて^^;運が悪いとちゃんとアンインストールできません。僕が試したのだと、アンインストールしたらフォントがまったく認識できなくなり、どのWebページも表示が見えなくなるという惨事になり、仕方なくIE7に移行しました……。まあ、IEかなり深いデータまで制御してるので難しいし、自分で対応しようとするとかなり危ないので触りたくないんですけどw。

そんな感じで。しばらくセキュリティ関連処理をしてるページは危ないかもしれませんな……。
[PR]
by namizusi | 2008-02-13 12:39 | プログラム

M社のMVCの認識は変?:(・_・)

某超有名M社の某C#のMVCフレームワークとStrutsのMVCフレームワークを調べてたのだが、すげーおかしい。

More
[PR]
by namizusi | 2007-07-04 12:46 | プログラム

Xercesバグ?:(・_・)

バグ?
DOMでデータ解析しつつXML随時更新してると、時々getChildNodesでTextNodeしか取れないという謎現象発生。

More
[PR]
by namizusi | 2007-04-22 01:38 | プログラム

最近のチェキ:(・_・)

最近のチェキ。

More
[PR]
by namizusi | 2007-03-17 18:14 | プログラム

バッファオーバーフロー

 近年わりと聞くようになったセキュリティ関連のバグで、Windows Updateの更新ってほぼ全部この「バッファオーバーフロー」対策ばっかりだな~と思うのですが、今の現場で触ってるソースも古いソースで「バッファオーバーフロー」しそうな危ない実装が多数で、先日のトラブルの絡みで直そうとかいう話に。

 正直、気の遠くなるような話である。

 どういうときに「バッファオーバーフロー」するのかと言うと、詳しく説明しているページはいっぱいあるので詳細はそちらに譲るが、例えば

"test"

という文字列があったとして、この情報を保持するのに何バイトの領域が必要かというと、半角英数の文字は1文字1バイトなので、計5バイト必要になる。

プログラムをまったく知らないのに「えっ4バイトでは?」と思ったあなたはなかなか鋭い。

C言語では文字列がどこで終わるのか?という情報を文字列自体が持っていないので、データの末尾に空データ(0もしくはnull。サイズは1バイト)を付加することで文字列の終端を認識しているのである。よって、4文字+null1バイトで計5バイトになるというわけである。

 で、C言語の標準的な文字列操作関数というのは

問題1)文字列データの末尾に必ずnullが入っているのを前提に動作する

ところが

・文字列データの末尾nullが入るかどうかはコーディング次第である。コーディングミスをするとnullが入っておらず文字列の末尾が識別できないデータがくる可能性が発生する

という危険な状況になる。自分が作るプログラムだけで閉じていればまだ何とかなるが、人が作ったプログラムと連結するとかいう話になると、バグでおかしなデータが飛んでくる可能性がある。そしていったん壊れたデータがくるとこちらも影響を受けてデータを破壊して動作がおかしくなることになる。

次に重大な問題は

問題2)編集文字列を格納する領域は、関数を呼ぶ前に使用者があらかじめ確保して関数を呼ぶことを前提にしている

という点である。だから

・使用者が誤ってきちんと領域確保せずに関数を呼び出すとその関数は何も考えずにその領域にデータをセットしてメモリを破壊する

ということになる。例えば

sprintf(str, "%d", num);

とかやってstrという文字列領域にnumという数字を埋め込む処理をする場合、numという数字は最大何桁になるかわからない。32bitCPUの時代には数値というと32bitになるので最大「4294967296」となって最大文字数は10文字になる。なのでstrの文字列領域にはnullも含めて11バイトの領域が必要になる。

 ところが最近のサーバマシンは64bitになったので、数字も64bitに増えて最大が「18446744073709551616」20桁。きちんと文字列の領域に21バイト取ってますか?という話になる。


 でだ、実際そんな最大幅をきちんと予見してきちんと領域確保して処理してるプログラムなんてほとんどないのだ。そういうわけでメモリ転送する処理は全部見直さないといけないことになる。で、業務系プログラムというのは大半(8割くらい?)はデータの制御処理、それも文字列操作で占められているので、実質これまで作った膨大なソースの8割を全部見直さないといけなくなるわけだね。


 そういうわけでこの辺の処理はパンドラの函とでも呼ぶべき禁忌の領域だったわけである。
 ふう
[PR]
by namizusi | 2006-01-18 12:56 | プログラム

Ajax関連

ConnectiveChat

 あまりにも素晴らしすぎる。
 もう高速チャットのためにチャットソフトを入れて面倒な設定をしようとか、IRCのためにソフトを入れるとか、そんなめんどくさいことをする必要が一切なくなる。ブラボー。

JavaScript版 RSSリーダー

 AjaxでRSSリーダーを作るという。ブログで面倒なのは過去記事を参照するのが大変というのがあるが

「素直にRSSリーダー使えばいいじゃん」

と思って探してて発見。これで自サイトの情報を好きに編集して見せられるようになる。
最大のネックはセキュリティの関係で他サイトの情報が読めないところか。

んじゃまた
[PR]
by namizusi | 2006-01-05 12:40 | プログラム

衝撃

 打ち合わせをしていて突然「OSは自社提供じゃなくて自分で買ってもらってそこに入れてもらう」という話が出て衝撃を受ける。Windowsならいざ知らず、LinuxでOSが違うって(ディストリビューションの名称は同じでバージョンも公的には同じ)、少なくともドライバは全く別物になる可能性があり、そもそも動くかどうかすら全く保証できなくなったりするよほほほ。

 こういうときは踊るしかない。
 調整がんばってください

 それから、なんか振って沸いた仕事が舞い込んで、手下の人が1日飛ばされることに(涙。はっきり言って無茶な仕事を断れないリーダーが付くプロジェクトは大変である。あわれなり(と言って離れたところで手を振る)。昔大変なプロジェクトがあったときに上の人が逃げてばっかりなので、わざわざその人に仕事の話が行くようにしたところ、しばらくしてあっさり辞めてしまった。なつかしいなあ(微笑)。

 そういうプレゼン系の仕事はリーダーのSEの人がやるのにうってつけで、全体概要と基本操作全般くらいは把握しておくべきだと思うのだが(恥ずかしくないように)、Linuxはちっとも触ろうとしないので、いまだに問題があったときに話が通じなくて大変でしょうがない。ていうか、新しいOSが来たらその基本操作ができるという意味の資格を取るなり教育を受けるなり、それくらいはせめてやってほしいなあ~と思うのだが。はあ

 疲れた。
 今日の打ち合わせの相手の人は非常に頭が良くて飲み込みが早くて助かった。やっぱり賢い人っていいよね~。

 んじゃ
[PR]
by namizusi | 2005-12-13 20:48 | プログラム

Linux

 最近の流行はWindows2003で64bit版対応。UNIX系はHP-UXとかもあるがとりあえずはLinux対応…という感じで前Windows版をやっていたのがLinux版になった。しかし困ったのは、Linuxて知ってる人がろくにいない。僕自身触るのはほぼ初めてだが、昔制御系でUNIX系を触っていたのでCUIを使う範囲ならそれなりにわかる。まあ「使える」ってだけのレベルだが。

 で、UNIX系の仕事は昔ひどい目にあって、海外で「1ヶ月も行けば帰ってこれるよ~」と言われて春に送り出されて、帰ってきたのは半年後の夏も過ぎて秋口になったくらい。その間明らかに労働基準法を破ってそうな過酷な労働時間で、まともに休みも取れず、あまりにひどいので「まともに休みくらいくれ」と言ったらその物件の終わったあと何の連絡もなしに半月ぐらい仕事もなしで放置され、それがやっと終わったと思ったらまた帰宅が常に翌日になる(要するに24時以降)という現場に叩き込まれて、お客さんの方でも「ちょっとは休んだら?」と言われるにも関わらず無駄に休出残業し続けさせられ、送られてくるモジュールはろくにテストされておらずバグだらけでミミズののたくったようなスパゲッティソースを解析させられる羽目に…というサイクルが続くこと1年半。もうUNIX系なんて見たくもないと思ってたのだが。

 気がつくと謎の客先の開発環境を解析してコピーしてこちらの開発環境を作ったり、UNIX系ではこう対応するのが標準である~とか仕様を考えている自分がいたりする。

 ふう

 今度のLinuxは64bit対応で文字コードがEUCからUnicodeに変わってメモリのセキュリティが厳しくなったりして大変らしいです。まあ~がんばってくれ~(他人事)
[PR]
by namizusi | 2005-11-30 18:04 | プログラム

最近の動向?

・Ajax
 http://www.atmarkit.co.jp/fwcr/rensai/ajaxwatch01/01.html
 http://itpro.nikkeibp.co.jp/article/USNEWS/20051102/223915/

 リッチクライアントというとFlashが主流ですが、javascriptでActiveXを使ってXML通信してDHTMLで描画してがんばる「Ajax」とかいうのが注目されてきた模様。作りやすい高次共通インタフェースがまとまってなさそうなのと、ブラウザによって挙動が変わるという問題はあるものの、リッチクライアントって内部ネットワークでしか使わなかったりするのでブラウザは統一すればいいしインタフェースも内部で統一、何より大きいのはFlashって開発ツールが結構高いのがネックなのですが、AjaxであればWindows標準のツール&エディタのみでも作れてツールのコストがかからないというのが利点ですかね。

 最近はユーザインタフェースとか画面に触るだけで映像が動くとかいろいろ凝ったことをするようになってきているので、結構いいかも。前作ろうとしてたシステムで使えそうだったのであのころわかってたら提案してたのにのう。注目点は通信速度で、ネイティブで通信してるから早そうなんだけどどうなのか?

・Oracle無償配布版
 http://itpro.nikkeibp.co.jp/article/USNEWS/20051102/223913/

 フリーのDBというとMySQLとかPostgreSQLとかが主流で、Oracleは高嶺の花だったのですが、ついに無償版の世界にも参入してくる模様。ほほ~

んじゃまた
[PR]
by namizusi | 2005-11-02 12:50 | プログラム