最近のベストセラー本
だそうです。
|
LinkShareのアフィリエイトプログラム
更新停止ページです 2003/12
さらっと、ウェブ技術に関連のある話題をつらねていこうかと・・思っております。
ま、ほとんど覚え書きなんですけどね。一つくらいは貴方に有益な情報があるはず。
ちなみに、タイトル画像とか意味ありません・・ので気になさらずに。
管理先のネットワークにて・・
管理しているところの外向けルータが日常的によく落ちる。電源入れ直せばすぐ復旧するが、ネットの主要機器なので、解決する必要がある。
Fujitsu製のSiR-R150というどちらかというと企業向けのもの(だからネット上に情報皆無)ちょっと前のものなので、ルータ新しくすればいいんじゃないかな・・とか非情な事を思ってしまったが、わずかなログ情報に、なにやらDNS-proxyアクセスエラーが出ているらしい。しかも外からである。下記参考
IPアドレスで調べてみたところ、なにやら中国のにほいがプンプンしてきた・・。
多分、中国のISPかなにかかと思うのだが。
即、このアドレスからのアクセスを禁止、内側サーバーの状況を調査。
それからルータはまったく落ちなくなりました。
ルータとかのネット機器のログなんてほとんど見ませんから、意外にこういうのあるらしいっすよ。
中国や韓国のマナーの悪さは最悪(というか犯罪)。ネット先進国だなんて誰が言った?世界平和のため、中国及び韓国からインターネット網、断絶きぼん。台湾と直接接続きぼん。 ルータログ
Feb * *:52:23 init: system startup now.
Feb * *:52:23 protocol: connected PPPoE0-1 to internet.ISP-1 by keep connection
Feb * *:55:28 proxydns: ERROR: recode type 0, class 0, from 218.14.49.*
Feb * *:55:28 proxydns: QNAME [7j・]
Feb * *:55:28 proxydns: ERROR: recode type 51781, class 51234, from 218.14.49.*
Feb * *:55:28 proxydns: QNAME []
ホスト
inetnum: 218.13.0.0 - 218.18.255.255
netname: CHINANET-GD
descr: CHINANET Guangdong province network
descr: Data Communication Division
descr: China Telecom
country: CN
admin-c: CH93-AP
tech-c: WM12-AP
mnt-by: MAINT-CHINANET
mnt-lower: MAINT-CHINANET-GD
changed: hostmaster@ns.chinanet.cn.net 20010528
status: ALLOCATED PORTABLE
source: APNIC
AUのWIN携帯のJAVAで・・
そろそろ、携帯を新しくせえへんと・・と、繋ぎ放題なAUのWIN携帯(W11KとW11H)。パケがただなら、JAVAで自由にパケ飛ばして遊べないか?って思ってしまう。W21Hは、BREWなのかJavaなのか現時点で分からない。
新しい、Phase3のJAVAでは、カメラも自由にいじれるそうである。つまり、超遠隔カメラ撮影や、EZアプリで実現IP電話!!(タダ携帯だ)とかできちゃうかも・・。
いいか?携帯のスペックが限界なら、リモートでやりゃいいのさ、VNC on 携帯とかどうよ。
うぉー燃えるぜぇ!作ってやるぜ~!
とか考えちゃうのよん。っていうか、まだ先立つものがなくて買えないのよねぇ。
いまのところ、機種変で2万円だ。デザイン的に最悪だけど選択肢がないのでしょうがない。
2/15
リモートアシスタントを使ってみる
会社でちょっとでもパソコンが詳しいとかなり呼び出される。どんなつまらないことでもだ。そんなときに便利なのが、これだ。XPには標準で付属してくる。
しかし、この機能、IMやメールなどと連携していて、なんか面倒っぽい。
とりあえず雰囲気を味わって見た方がいい。その手順はこれ。
ヘルプして欲しい人
スタートメニューのずっと下の方にあるはず。
まずは、ヘルプしてもらう方が、認証のために、あるコードをメール又はIM、ファイルなどの手段で生成する。
一番簡単なのが、メールかな。ヘルプしてもらう方へ送信します。
ヘルプする人
すると、あるファイルが添付された怪しいメールが届きます。
そこに怪しい添付ファイルが付属されるので、それをMSを信用して、クリックしてみる。
すると、リモートアシスタンスのソフトが立ち上がってくる。
ヘルプして欲しい人
招待を受けるかどうかOK/NOを選択します。OKを押すとリモートアシスタンスが起動され、お互いに同じ画面が表示されます。
両方の人
同じ画面が表示されているので、あとは、画面をいじったり、チャットしたり(文字と音声が可能だ) でアシストするという訳。
Windowsの操作系にしてはなにか、面倒を感じるのは私だけじゃないよね。Winドメイン管理の徹底されているところならいいんだろうけど、個人向けサービスだから、こうなってしまう。
VNCと違い、Windowsのリモートデスクトップは、排他的利用になってしまいます。制限はあれど同時に利用という形はこれしかないのかな。っていうか、この場合は、VNCだな。
あ、そうそう、システムプロパティの「リモート」で、有効にしておく必要があるからね。あとは・・、ファイヤーウォール系の設定。ルータでポート制限を掛けていたり、Windows設定で制限をかけている場合は、使えないぞ。 2/10
|
ヘルプしてもらう方の画面
ヘルプしている方の画面
|
優秀なフリーなドロー系作画ツール
これまで、簡単な作画をしなければならないとき、Visioや花子(時には無理矢理オフィスの作画機能で・・)など他のパッケージなどで、書く機会があったが、いつのまにやらフリーで優秀なソフトが沢山ある。
とりわけ気に入って使ってるのが以下のもの。
Dynamic Draw for Windows 日本語版
http://www.molips.com/jp/
福代昌之 作
見た目にはまるで市販ソフト並な作り、細かな操作性やオブジェクトの種類の少なさなど、 まだ雑なところがあるが、部分的にはVisioよりも使い勝手よかったりするので、結構楽しみながら作画編集ができる。
ただ、いろいろなところで、あともうちょっと感があるのは否めない。
ヘルプが充実しているのは特筆なのだが、初心者が入りやすいかというと、そうでも無いような気がする。ただ、将来が本当に期待されるソフトなのだ。
UMLのテンプレート集が揃っているので、UML書き選択の一つとしても良い。
OpenOffice.org Draw
フリーのオフィスソフトとしてかなり有名。
WORDやEXCELの代換えとして見られがちだが、プレゼンのImpressや作画のDrawなんかは個人的にかなりいい感じのソフトだと思ってる。
実際、Impressなんかは会社でも利用を勧めている。
この中でも、意外的に良く出来てるソフトが、Drawなのである。
お手軽な作画ツールとして、ほんとに楽しく、簡単に作れてしまう。
個人ユーザーさん提供のテンプレート集をゲットすれば、フリーにありがちな、雛形や素材集の不備もなんとか解消される。
OpenOffice.org(Japan) http://ja.openoffice.org/
12/12
不自由な最近の音楽CD
この前買ったCDが、リッピング出来なくなっていた。PCに入れると知らぬアプリが起動するようになってる。つまり、専用メディアプレーヤで聞けという事らしい。案の定、MediaPlayerでCD録音もできない。
これまで購入したCDは、WMA或いはMP3化して、PCや車、PDAで楽しんでいたのだが、なんとこの、待ちに待ったお気に入りのCDは、PDAや携帯プレーヤで楽しむことができない。
そう、その専用プレーヤーは、Windowsのものしかない。
アナログで穫るという手段もあるが、そこまでしたくないし、こんなふざけたマネ、最悪だ。もう、SONY(SME)のCDを購入するのはやめることにしよう。
MAGIQLIPというソフト。無料でDLできる。専用フォーマット。SONY製
そうそう、このプレーヤー、マルチモニターに対応していません。自分はよく、サブモニターにプレーヤーとかをまとめて置くのですが、強制的にメインモニターに移動しちゃいます。ムカツき度、抜群な感じです。
突如こんな製品で、消費者を愚弄するメーカーを強く非難しましょう。
どう、あがいてもコピー対策なんかできるはずが無い。万引き同様、モラルに訴えるしかないでしょう・・。って、ウェブに関係ないし。12/11
最強エディタのemacsのWindows版のお話
Linuxとかを普段使ってらっしゃる方は、emacsなどの超カスタムされた高機能エディタを使ってる。こればかりは、Windowsサイドには、無いのだ。とっても、羨ましい。
秀丸エディタや、Emエディタ、TeraPadなどが有名だが、なんか痒いところに手が届かない。(自分は、EmEditorを愛用している)
同じ要望を持っている人はいるもので、Emacs for NTや、Meadow、cygwin上などでむりくり利用している方がいる。
唯一のWin向けバイナリなソフトが、Meadowである。
テンキーいらない、英語キーボードでお手軽入力環境で利用すれば、世界共通でクールなテキスト入力ができる。:-)
キーボード操作は覚えりゃいい。METAキー関連は慣れなそうだが。
・・・が、日本語変換関係に思いっきり驚かせられる。
「超自分向けにカスタムされた日本語IME環境が全て無駄になってしまう。」
お気に入りのATOKが・・・
これまで、viユーザーだった方がバージョンアップしたいなーとかいうならいいかも。ただし、シェル上での話。12/5
おーい「NAMAZU」どうしたんだぁ?
誰もが認める日本初の優秀な文書検索オープンソースプロジェクト「NAMAZU」。ふと、文書整理に使ってみようかと、新しく構築することになったのだが。
なんと、Office2000文書に対応してねぇーじゃんか(あれ?そうだっけ?)。どう設定しても認識してくれないし、唯一のフィルター配布所も閉鎖してるみたいだし。
マジでOpenOffice使う機会も増えてきたし(特にインプレスとかね・・笑)、OfficeXPあたりもサポートして欲しい(XML文書向け検索ソフトってなんかありそうだ)
欲しいやつが作れってか・・。
12/5
WindowsがMacOS-Xに早変わり
TGTSoftのStyleXPというソフトで、半ば強引に見た目を変える事ができる。12/1
私のWindowsXPは、一見してまるで、MacOS-Xなのだ。
ただし、システムDLLをむりくり書き換えるので、心臓の弱い方は絶対にやらない方が良い。このソフトは、わずか10数ドルのシェアウェアだが、無保証のフリーソフトもある。・・が、情報を集めてみるとかなり危険だそうです。やめた方がいいかも。
2000円で手に入るわけなのでゲットしませう。
Winで堪能するCoolなGUI
テーマはこちらから。世界中からCoolなテーマが集まっとります。
theme xp http://www.themexp.org/
未来の形「リモートデスクトップ」
アプリは全部サーバに置いてネット経由で利用しようという形がある。まだ、想像に難しいものであるが、いつかそうなるんでしょうね。
・・と、この入り口になる技術が、Windowsでいうリモートデスクトップだ。XPからは手軽に利用できるようになりましたが、それ以前は、ターミナルサーバーと言って、ちょっと敷居が高いものでした(いまでもある) 案の定、アクセスごとにライセンスを購入しなくてはいけない。これが・・また高価なの~
Windows2000サーバーには、2アクセス限定でCAL無しでアクセスができる。
VNCなどのリモートソフトがあるが、遅くて我慢しなければならない。が、純正(MS)製なだけあり、普通にGUIが利用できてしまう。わずかな遅延があるものの、言われなければ分からない位だ。
※VNCとは違い、ちゃんとユーザーログインを行う。新しくデスクトップが開く。
最近は、インターネットサーバーがWindowsっていう事も増えてきた。便利なので利用を考えてみてはどうでしょう?ただし、セキュリティ確保は最重要点ですよ。11/24
Windows2000 から Windows2000サーバーへアクセス
(私物ノートPCからハードコピ)
ターミナルサーバーへログイン
(解像度はここで指定する)
フリーのUMLツール
UML書きのお手軽なフリーソフトは無い物かと探してたら、Judeなる純和風なロゴなソフトがあった。
なんと永和システムマネジメントが作ったオープンソフト。
JAVAで作られてるので、まず初めにJAVAがなくてはいけない。
無理やりVisioとか買わなくても・・笑。いいかも。
http://objectclub.esm.co.jp/Jude/
株式会社永和システムマネジメント
http://www.esm.co.jp/
10/3
会社のコピー機(複合機)の忘れてる活用法
会社とかにあるリコーとかゼロックスのコピー複合機。
コピーだけじゃない便利な活用法。
リコー最新型のImagio neoには、コピーの他、スキャナーやネットワークプリンタとしても利用ができる。
なにかオプションとか買わなきゃいけないんじゃないの?とか思ってしまうが、
意外にドライバさえ入れればそのまま利用できる場合が多い。案の定、メーカーサイトでダウンロードできる。
リコーの製品はあまり詳しくないが、大黒柱だけあって
その作り込みには参った。
コピー機と思い込んでいる点があるため無視してしまいがちな説明書を、じっくり読んでみると高機能の塊だ。
WinやMacは当たり前、UNIX系のほとんどのドライバを持っているし、
流行のウェブからの管理や、telnetでのリモート管理まで出来ちゃう。
スキャナー機能では、内蔵のSMTPからメール送信など、国産コピー機の極限まで来ているのだな・・と
実感してしまう。
拙者、リコーの回し者ではないが(笑)かなりイカしたデバイスなのだ。10/2
ふがぐぐ汎用機きぃ K-Windows/ASP環境
富士通の汎用機に触れる機会があった。もう、20年も前に設計されたものだ。案の定、COBOLで作られてるし、ファイル管理もこれまでに見たこともない構造、K-WindowsというGUI環境にも度肝抜かれ、RDBというデータベースサーバで動いていた。カルチャーチョップ(造語)しまくりだった。
かろうじてTCP/IPツールがあるようなので、FTP経由でデータを抜き、ダンプしてみたら、EBCDICやらというIBMが作ったコード体系。"0"がF0Hになってる。空白は、40Hだった。しかも、富士通独自拡張の漢字コード体系(JEF)だ。
そんな汎用機は、PentiumPRO200Mhzが2基、ミラーリングの4GB、256MBメモリ、MO搭載機だ。いまじゃ腐ったスペックも、当時は目の玉飛び出るプライスだったはずだ。
9/25
ウェブサイトのアクセスアップと利便性?
お金が十分にかけられたウェブサイトほど、検索に引っかからない。ASPやJAVA、PHPなどで構築されている高度な所よりも、HTMLだけのシンプルなウェブサイトの方がリストに多いことが分かるはずです。
アクセスアップには、検索サイトは重要な存在。
利便性を取るか、アクセスアップを取るか?難しい問題である。7/30
手軽な地図利用の情報分析(GIS)
統計、マーケティングやらで、地図を利用した分析が普通になってきた。・・が、専門のシステムなんかはすんごい高価。でも、分布だけを見れればいいなんてのかほとんど。お店で購入できるゼンリンの電子地図なら、簡単に位置情報が入ったテキストファイルを、ポインティングできる機能を持っている。
もし、持っているなら使ってみよう。・・ん?ウェブに関係ないし・・。7/23
Apache漢字コードなんとかしてーな、の巻
いまだにウェブサーバの漢字コード問題を引きづりまくっているサイトは多い。
世界仕様なApacheが所以の性でもあるわけだが、日本人による日本人のためのサイト運営には、目の上のたんこぶでしかないのが残念なところ。
METAタグをいくら指定してもご認識されてしまう。ブラウザで漢字コード指定し直すとちゃんと表示される・・など、さまざまだ。でも、CGIならちゃんと表示されるとかね。
もう、お気づきな方もおおいはず、HTTPヘッダを疑うしかないのです(HTMLヘッダじゃないよ。紛らわしい)
下記項目を確認してみよう。デフォルトで運用している場合は要チェックだ。
1.LanguagePriorityで、jaを先頭に持ってくる(優先順位を上げる)
LanguagePriority ja en da nl et fr de el it ko no pl pt pt-br ltz ca es sv tw |
2.AddDefaultCharsetにoffを設定する(余計な事はさせない)
#AddDefaultCharset ISO-8859-1
AddDefaultCharset off |
古いApacheを使っている場合は、そもそも日本語の利用が考えられていない場合もあるので、まずはそれを行ってからにしてください。7/22
「画面狭すぎだっちゅの!」な方へ パート2
アイコンの配置が気にくわなくて我慢している方は非常に多い。ちゃんと自分用に、自動的に配置してくれればな・・とか、思いません?
そーんな方に超お奨めなソフトがあります。私も、ここ1年お世話になってるお気に入りのソフトです。
ただ、設定が小難しいので、なれるまで根気よくいじくりまわそう。7/21
TidyDesktopOne
http://hw001.gate01.com/yoshi223/
「おい、なんでホスト名前引けないんだ?!」な場合
(Windows限定)
時たま、あるはずのホストへつなぐことができない場合がある。Windows内部のネームキャッシュが悪さをしている場合がほとんどで、特に常時電源を入れているPCだったり、DHCPなどIPアドレスがガンガン変更される場合などがそうだ。
もし、やたら遅くなったり、つなぐことができなくなったら、こんなおまじないをかけてみよう。
DNSキャッシュをクリアしてしまうことで、再度ネームサーバに引き直しする訳だ。
関係ない話題だけど、Windowsネットーワークを構築しているところでは、ぜひWINSサーバを置いておこう。かなり快適になるぞ。SAMBAで簡単に構築可能だ。7/20
「重いぞ、DreamWeaverMX」ってな方へ
信じられない位重くなったMX。これも多機能になった分がそのままはねかえりなのである。
デフォルトで有効になっている、慣れるまではやたらウザイ「パネルウィンドウ」。こいつが、この遅さの原因になっているのである。内部で、その情報を取得してくる負荷なのである。
DreamWeaver4が体から抜けきってない方はぜひ、この重しをはずした方がいい。
「ウィンドウ」>「パネルの非表示」で外せる。または、F4を押す。7/8
さらに、環境設定のアクセシビリティの「オフスクリーンレンダリング」を無効にしてみよう。20%くらい速くなるぞ。でも、画面がチラついてしまうが。重いよりいいじゃん。7/22
「キィーー画面が狭いザマス!」ってな方へ
ウェブだけでなくPCで作業していると、ブラウザやら資料を広げたりと、もう、画面がウィンドウだらけで、さっきまで何をしていたのか忘れてしまうときが結構あります。
モニター2台でマルチモインター!なんていう事もできるが、それは広い机で、お金持ちの人だけの話。(Matroxのビデオカードでトリプルモニターなんてこともできるが・・)
そーんな時には便利なバーチャルディスクトップ。
Windows3.1の頃から沢山あったのですが、最近あまり見かけないっすね。なぜぇ?
ここで紹介するのは、T.Shino(Salt)さんのVirtualDesktop for Win32である。かなり長い歴史のあるソフトで、知っている人も多いはず。
マウスを画面隅に持って行くと自動的に画面が切り替わったり、ウィンドウの移動もそのままできる。なので、右画面を、資料画面専用、さらに奥画面は、遊び用などと使い分けができる。
フリーソフトだし、とりあえず便利なので使ってみよう。6/25
VirtualDesktop for Win32 (T.Shino(Salt)さんサイト)
http://homepage1.nifty.com/salt/
googleの牙城はいつまで持つ?
マイクロソフトが検索エンジンの開発に集中している。以前、Netscape一色だったウェブブラウザ市場をガッと一瞬にかっさらっていったように、揺るぎないと思ってしまっているgoogleサービスを同じように滅多打ちにしてしまうかもしれない。
googleの登場も同じような感じだったけどね・・・ :-P 我らユーザーは便利な方を選択しちゃうだけ。
そうそう、131.107.163.xxが、この開発中MSNbotのクロール時のホストアドレスだ。暇なときにログ見ておこう。6/20
Perlでちょっとマジック
オーバーロードを使って面白い事ができちゃいます。誰かが書いたコードをちょっといじっていたずらしてしまおうというものだ。
use subs qw(exit);
*exit=sub{print "damn F*ck!! ($_[0])";CORE::exit};
|
わずかこれだけだ。見ての通り、exit関数をオーバーライドして別の代物にしてしまいます。ここでは、汚いメッセージを吐き出して終了します(笑)。
いつか気づくはずでしょうが、ログ見て驚くでしょうね。
これをやって、どんな結果が貴方に降りかかろうと、当方は一切関与しませんからね。6/16
DreamWeaverMXの微妙なパッチ
気にしない人はどうでもいいバグがあります。HTMLコードのインデント機能です。
これがまんまと、まるごとバグだったようです。やっとパッチが出ました。
なにかと気持ち悪いので、当てておこう。
テキストエディタのご紹介
広く、一度にいろんな所を見渡せるエディタを探してました。
プログラマなら、ソースコードのいろいろな場所を把握する必要があるし、言ったり来たりなんてごく普通にやる。
emacsやら秀丸やら、時にはviやらと聞くがそんなものは、どれ使ったってやるこた同じ、やはり自分にとって使いやすいエディタを座右に置くべきである。
ちょっと前まで、マイクロソフトのVisualStudioを使いまくってて、このエディタというのが、4分割できる代物だった。2分割なら大体のエディタができるが、これほど分割できるのは見かけたことがなかった。
唯一、PerlのIDE環境のPerlFactoryができたが、テキストエディタというには十分重いので実用にかけたのである。
やっと発見した。
昔からあったのは知っていたが、まさかここに捜していた物があったとは驚きだ。
分割だけでなく、エディタとしての機能は必要十分に内蔵している。
その名は、emEditorである。3000円のシェアウェア。
いまのところ、試用中だが気に入ったら購入するつもりである。5/25
emurasoftware
http://www.emurasoft.com/jp/
祝!テクニカルライセンスを取得できました!これで正規なユーザーです。フリーソフトを開発している方は申請してみよう。7/22
読書ならこれ
Perlをお使いならこれ、です。
LarryWallさまの聖書でございます。
内容的には、プログラムにちょっとかじったことのある人じゃないと読むにはキツそうですが、Larryさん独特のお人柄が垣間見えたり・・と、新のハッカーさんとはどんな方か理解できるんじゃないかな。
それなりの値なので、Perlに慣れてから、復習のつもりで購入した方がいいと思います。
オライリー プログラミングPerl 全2巻
(アマゾンなら、送料無料で買える)
タイトルをちゃんとつけると効果大
<title>タグの設定は当たり前だが、分かり易いページタイトルを付けることは非常に重要なことである。多くの人が利用する検索エンジンの検索結果を思い出して欲しい。
ページキャッシュよりもタイトルの方に目が付く事に気づくはずだ。
複雑なページの場合は、ページタイトルと分かり易くページ内容の概要なども添えると分かり易くなる。
っていうか、「ちょんまげランド」ってなんだ?5/19
Perl悩ましの改行コード(4月だし・・ね)
世のWindows、Macintosh、Unixで扱われる単純なテキストファイル。環境違えばさまざまと問題をかかえて成長するのである。
ほとんどの方は、WinかMacで作られていると思います。ですが、HTMLやらCGIやらをアップロードするのはLinuxやらSolarisサーバだったりします。なんの事やねんてな話です。
でも、無視することができないテーマです。目に見えない文字なので、ある意味、ご存じ、漢字コード問題よりもタチが悪いんです。
環境
|
改行コード
|
16進数
|
8進数
|
Windows |
CR+LF |
\x0d\x0a |
\015\012 |
Macintosh |
CR |
\x0d |
\015 |
Unix / Linux / BSD他 |
LF |
\x0a |
\012 |
"\n" これは、改行を示すコードです。これは"LF"を指しています。
Perlは内部で自動的に、改行コードを変換していて、なにも指定しなければ、Windowsの場合、CR+LFに変換し標準出力(STDOUT)します。
しかし、標準出力ではない場合は、現在のPerlのコードで出力されます。ここに、"\n"の差違が生まれます。
Perlの改行コードが"LF"だった場合、ここから出力したファイルは、"\n"が"LF"になります。読み込む場合、"CR+LF"が"LF"に変換されます。
こういった処理に依存したくない場合は、binmodeや生コード書きを行う必要があります。
読込み例(見やすくシンプルに)
push @list;
open(FH,"filename.txt") || die;
binmode FH;
while(<FH>) {
chomp;
push @list,$_;
} |
変数定義
ファイルオープン
自動変換無しにする(Windows向け)
最後まで読込み
改行コードを削除
リスト変数へ追加
ループ終わり |
書込み例
my $buf;
open(FH,">filename.txt") || die;
binmode FH;
while(@list) {
$buf=$_;
$buf.="\012\015";
print FH $_;
}
chmod 0664,"filename.txt" |
変数定義
ファイルオープン
自動変換無しにする(Windows向け)
最後まで読込み
リストから取得
CR+LFを最後に付加
ファイル出力へ
ループ終わり
とりあえず権限設定 |
"LF"は、ラインフィードと言い意味は、次の行に移動するシステムコード。昔のタイプライターでいうところの、紙を1行分「ガコガコ」って動かすようなもの。まだ、カーソルはそのままの位置にいるので、別に頭に動かす必要があるわけで・・。それが、"CR"コードなのです。
詳しいことは知りませんが、MacやUnixでは、その辺に気をきかせて、省略した規格にしたのでしょうね。
4/28
フリーなIPパケットアナライザー
うまい事パケットが流れているのか?と最終手段的なツール、GUIで使えるフリーなIPパケット解析ソフトがなかなか見つからなかった。ナイスなやつを見つけたので記録。残念ながらオープンソースではない。
(Windows2K serverなどでは、パケットモニターというソフトが付属されている)
Pacdispというもので、winpcap開発キットのフロントエンドだ。案の定、フィルターを引っかけてキャプチャすることができる。winpcapを使ったものは他にも沢山あるが、ストレートに作り込まれているので操作に悩むことがない。
インストールは、まずwinpcapを先にインストールしておかなければならない。
フィルターは手書きで登録しなければならないので、面倒。winpcapに準拠して書く。
src ip 192.168.0.1とすると、アクセス元が192.168.0.1だけのものだけが抽出される。
Pacdisp
http://homepage3.nifty.com/Octbal/
winpcap
http://winpcap.polito.it/
4/23
Perlモジュールのクイック作成
Perlクックしてるとモジュール化したくなってくる。Cでいやライブラリ化。
なかあまりウェブ上で見かけない情報です。かるく作ってみたので、参考程度。
なんたら.pm
package 名前空間;
use strict;
BEGIN{
use Exporter ();
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION=バージョン情報;
@ISA=qw(Exporter);
@EXPORT=qw(公開したい関数);
%EXPORT_TAGS=();
@EXPORT_OK=qw();
}
コード
END{後処理 }
1;
呼び出し側
BEGIN{
use lib'./探すパス';
}
use なんたら
|
お馴染みだが、ここが詳しい。
http://www.kt.rim.or.jp/~kbk/perl5.doc/perlmod.html
携帯電話サイトのプチ注意点(含AirH"PHONEの登場)
覚え書きをここに無整理に書きます。
i-mode編
i-modeは、Content-Lengthが必須だぞ。公式には必須だが、なくても動く。でも書いておいた方がいい。どっちやねん。
i-mode端末は1.0で、fomaは、http1.1でアクセスしてくる。
ドコモ携帯のユーザエージェントは以下のようになってる。上から順に新しくなっていきます。
DoCoMo/1.0/P501i 一番古いタイプ
DoCoMo/1.0/NM502i/c10 キャッシュ設定ができるタイプ
DoCoMo/2.0 N2001(c10) 古いFOMA端末のタイプ
DoCoMo/1.0/F504i/c10/TB 最近のi-mode端末、最後記号はアクセス元機能
DoCoMo/2.0 F2051(c100;TB) FOMA端末。キャッシュが100KBだってさ
http://www.nttdocomo.co.jp/p_s/imode/
i-modeページの閲覧には、アクティブマスコットがグット。専用では無いが、シミュレータとしてはナイスです。http://mascot.desk.ne.jp/
ザウルス編(Linux含)
CGA端末(PDAやゲーム機)の事をおざなりにしているサイトが非常に多い。
シャープのSAURUS/ザウルスのuseragentの一覧は以下のサイトで見れる。
http://more.sbc.co.jp/download/zauinfo/e21brow/Protocol.pdf
同ザウルスのLinux端末(SL-A300/SL-B500/SL-C700)でのアクセスには、mozzila(qtopia、NetFront)としてアクセスしてくる。以下
Mozilla/4.0 (PDA; SL-C700/1.0,Embedix/Qtopia/1.2.1) NetFront/
AU端末編
AUのBREWは今のところ、A5304Tに搭載しているが、この機種はJAVAが動かない。BREWは一般には開発する事ができない、今後は、2極分化するのだろうが、閉鎖感は拭えない。どちらも搭載した機種がちかく発表されるらしい。・・高額だろうな・・。
DDIポケット編(AirH"PHONE)
DDI Pocketから新しい端末、AirH"PHONE(エアーエッジホーン)が登場した。また2機種しか無い。i-modeサイトなどを閲覧可能。やはり必要にかられたらしい・・。
XHTML、SSLやクッキー、50KBなど、結構高機能みたい。
制作に関する仕様は以下のサイトで紹介している。PDF
http://www.ddipocket.co.jp/p_s/products/airh_phone/homepage.html
案の定、useragentの書き方はまったく変わってしまった。
Mozilla/3.0(DDIPOCKET;JRC/AH-J3001V,AH-J3002V/1.0/0100/c50)CNF/2.0
スケルトン高さん提供。間の機種名とバージョンがクセものだなぁ・・。まだ、日本無線の、AH-J3001VとAH-J3002Vしかない。そのうち、松下、サンヨー、京セラが続いていくと思われる。
http://www.ddipocket.co.jp/p_s/products/content/ah_j3001v.html
その他
Macromediaで、i-modeサイト制作用のプラグインがダウンロードできる。DreamWeaverMX
テキトー読み物ナイスサイト(超勝手リンク)
携帯サイトの認証系の情報
http://crosslamina.com/contents/ke-tai/
誰かのCGI開発の覚え書き
http://www.cj-c.com/ij/ijcgi.htm
HTTPプロトコル情報
http://www.studyinghttp.net/
HTTPヘッダ情報の一覧
http://www.atmarkit.co.jp/fnetwork/rensai/netpro01/header-fields.html
メールマルチパート形式MIME
http://www.s34.co.jp/cpptechdoc/misc/b2a/mime.html
4/21
SJISじゃないCSVファイルの編集方法
簡易なデータ保存に利用されるCSVファイルですが、その有名な編集ツールとしてマイクロソフト社のEXCELがあります。・・が、残念ながらWindows標準漢字コードであるシフトJISでしか利用する事ができません。
EUCで保存されたCSVファイルを、いちいち変換するのも面倒です。
サンマイクロシステムズ社のStarSuite(スタースイート)というオフィス製品があります。これに含まれるCALCという表計算ソフトで、これが実現できます。
ご存じのように、StarOfficeは、あのフリーのオフィススイートOpenOffice.orgとほぼ同等の代物です。購入するまでも無い方は、フリーのOpenOfficeをゲッツしてみよう。
4/20
待ってたぞAU端末の外付けキーボード
そういえばいまままで無かったよね?AU端末用の外付けキーボードだ。まさに、i-modeのポケットボードを横目に羨ましかったりしたがそれもこれまでだ。
やっと登場。Palmキーボードを彷彿をさせるが、AU信者ならどうってことない。
同社の通信販売なら、7800円だ。
インプレスのケータイ情報サイトのレビュー
http://k-tai.impress.co.jp/cda/article/todays_goods/13679.html
リュードの製品紹介ページ
http://www.reudo.co.jp/rboardk/
売っているところのリスト
http://www.reudo.co.jp/rboardk/shoplist.html
Perl開発の上で便利な開発環境&デバッガーとか
Perlには高機能なデバッガーが付属しているのですが(-dオプションを付けて実行してみてください)、コマンドライン上のみでWinやMacなどでGUIに慣れ親しんだユーザーさんにはとても、とっつき難いものになってしまいます。
デバッガーに限らず、なぜかPerlにはフリーなIDE統合開発環境があまり見受けられません。どれも、それなりな金額を払わなければなりません。
本家ActiveStateのPerlDebuggerは2万程度(PDK添付)、昔ながら のPerlBuilderも2万(199ドル)です。どちらも英語版のみなのでピュアなジャパニーザー(造語)の使用には厳しい。(PerlDebuggerは、25日程度の体験を行う事ができます。認証パッチを当てるという変わった方法でやります。メールで受ける)
日本語ものでは、PerlFactoryなんてものもあります。こちらは、長い間オンラインソフトとしてバージョンアップを重ねている信頼のおけるソフトです。価格は6800円と格安。以前は、体験版があったのですが、いまは無いようですね。
でも・・、フリーにこだわりたい!って人にもお勧めできるものがあります。
フリーなCGIやPerl用エディタなどは比較的に沢山あるのですが、常用エディタを手放すわけにもいかず、・・そのソフトでもせいぜいコマンドコール程度しかできない。
ハァ~とタバコに火を付け・・
丸1日探して・・見つかった・・くだらなすぎるミス!!
ブレークポイント付けたり、ステップ実行てきる最低限のものだけでいい。できればマウスで操作したい・・。
ありました!Perl/Tkをご存じでしょうか?Perl上からGUIアプリケーションを開発することができる。すんごい機能です。最近のActivePerlには標準で付属しているようですので、使おうと思えば作れます。
ここで紹介するののは、ptkdbです。
まず、PPMからinstall Devel::ptkdbでインストールする。環境変数で、PTKDB_CODE_FONTに{MS ゴシック} 10を設定する。これで、Perl -d:ptkdb (ファイル)とすれば自動で立ち上がる。
SJISのファイルならばそのまま表示されるのですが、他の漢字コードだと文字化けしちゃいます。ここは我慢しましょう。目的はデバッグですから・・ね。ウィンドウ右側の方に、関数リストやブレークポイントリストなどがあります。
では、Perlライフをエンジョイしてくださいね。(^-^)/
4/12
携帯電話ページ製作ソフトとか
残念ながら皆無に等しい。JSKY関連のソフトが比較的に目立つ感があり、実際に優秀なツールが多くある。ドコモ系はほぼ皆無。AUのWAP勢は、海外のツールなども含めると結構多いはずなんだが、日本語向けとなるとOpenwave一色になってしまう。
実機でダウンロードしながらの開発だけは、「おマヌ」です。やめましょう。
|
携帯サイト作るなら、めっちゃおすすめの本。
3キャリアのサイト制作に向けた情報がすべてつまってる。情報が点在しているので、面倒な方はいいかも。
毎日コミュニケーション 2500円くらい |
フリーデータベース関連とか
SQL92に完全準拠したものとして、InterBaseやその互換品?派生でありオープンソースの、FireBirdがある。
現在のInterBaseの最新版は6.0.1で、6.0.0とは構造的に違うと言ったエラーが出ることがある。もう、同サイトで6.0.0を手に入れられないので、その時はFireBirdとかで潰しがきく(笑)とかあるかもしれない。
ファイルで見える形で管理してくれているので、バックアップが容易、ミラーリング(シャドー)も簡単に実現、結構速い(Oracleよりもバカ速)、チューニングがあまり出来ないくらいで弱点がほとんどありません。まずは社内業務で使ってみて、じょじょに開発に移行してみたらどうでしょうか?
ちゃんと、SQL9xで作られたスクリプトなら、OracleとかSQLserverなぞ使わずとも低コストで構築が可能だ。品質はボーランド社なので安心(買う場合は、インターネット向けで400,000円位だ)
ただ、ほとんど情報が無いというのが短所で、 検索しても書店に行ってもいまのところ、世の中に2~3冊くらいしかないのではないだろうか?どうしても・・という方は、30000円出してボーランドから分厚いマニュアルを購入できる。サポートを購入する場合は、600000円くらいになる。汗
GUIなibconsoleの日本語パッチも公開されている。
PostgreSQLやMySQLなどの有名なRDBMSも選択可能だが、癖が強く依存してしまうので、それでもよければ徹底活用。
やっと日本語のFirebird本が発売されました。
商用データベースに唯一対抗できるオープンソースDBだ(ボーランド社のInterBaseが商用版って事だ)
各言語での接続事例とかたっぷり入ってるのでいける。 |
|
DreamWeaver4Jの漢字地獄の逃げ方
漢字コードに絡んだデカイバグが存在する。これで、EUCとかをあきらめた人も多いはず。
そんな路頭に迷った人はアップデートだ。私も、何週間も悩んだ。
http://www.macromedia.com/jp/support/dreamweaver/upndown/
AU命!っす。せんぱいっ
他社のダマしダマしパワーアップしている携帯と違い、確実にレベルアップしているAU。
そう、いまだデジタル携帯そのままの状態に、ウェブやらJAVAやらをのっけてる訳っしょ?!基本機能の高さは確実にAUなのだ!
とりあえずの形っぽかった、C4xxシリーズのEZPLUSフェーズ1に、やっとHTTP通信が搭載された。つまり、DLによって、容量の小ささ制限を回避できるし通信によっていくらでも遊べる。
CGIでグラフィックぅ!GD編
CGIで画像を動的に作りたいっす!いっちゃん有名なのが、GDライブラリ。他には、PostscriptやPDFをそのまま出力するなんて芸当も可能だが、普通はGDでやる。
いまは、Windowsにも対応したのでppmパッケージをインストールすれば使えてしまう。
基本的な、線、箱、円、文字を描画でき、それをまとめて、PNGやJPEGで出力できる。他画像を取り込むこともできるので、かなり凝った画像生成も可能。
雰囲気的には、大昔のパソコン内蔵BASICのようなものだ。つまり線を引いて塗る・・といった懐かしい?低レベルな描画機能。文字は、外部でファイルを用意する必要がある(ベクターフォント、漢字など)このGDを底辺に置いた拡張ライブラリは沢山あるので、グラフやプロットなど用途に応じて使い分けよう。
ちょっとはずかしいが、ソースコードをそのまま掲載します。参考にしてください。
#--------------------------------------------------------------
# GD sample graph
# 2002/06/03 nabek
#--------------------------------------------------------------
require 5.6.0;
package gdtest;
use strict(vars,subs);
#--------------------------------------------------------------
# use module
use GD;
#--------------------------------------------------------------
# use global
use vars qw($lp $ky $vl $tmp @tmp @rec $x $y $x1 $y1 $x2 $y2 $cnt);
use vars qw($color $white $black $gray $ltgray $red $blue $green $dkgreen $yellow $ltyellow);
use vars qw($im);
#--------------------------------------------------------------
# const
use vars qw($Cwidth $Cheight);
use vars qw($Cgrpbsx $Cgrpbsy $Cgrpwid $Cgrphei);
use vars qw($Cgrpsplitx $Cgrpsplity);
use vars qw($Cgrptxtadvx $Cgrptxtadvy $Cgrptxtadhx $Cgrptxtadhy);
#--------------------------------------------------------------
# debug
use vars qw(@Cgraphdata1 @Cgraphdata2 @Cgraphdata3);
# debug data
@Cgraphdata1=(10,20,30,40,-10,30,50,60,10,20,40);
@Cgraphdata2=(20,60,80,40,20,40,-20,10,60,90,20);
@Cgraphdata3=(50,60,70,60,80,40,10,60,70,80,20);
#--------------------------------------------------------------
# initialize
$Cwidth=320;
$Cheight=160;
$Cgrpbsx=24;
$Cgrpbsy=16;
$Cgrpwid=($Cwidth-48);
$Cgrphei=($Cheight-32);
$Cgrpsplitx=($Cgrpwid/10);
$Cgrpsplity=($Cgrphei/10);
$Cgrptxtadvx=-2;
$Cgrptxtadvy=-2;
$Cgrptxtadhx=-8;
$Cgrptxtadhy=0;
#--------------------------------------------------------------
# main
$im = new GD::Image($Cwidth,$Cheight);
$im->interlaced();
#--------------------------------------------------------------
# alloc color
$white=$im->colorAllocate(255,255,255);
$black=$im->colorAllocate(0,0,0);
$ltgray=$im->colorAllocate(220,220,220);
$gray=$im->colorAllocate(128,128,128);
$red=$im->colorAllocate(255,0,0);
$blue=$im->colorAllocate(0,0,255);
$green=$im->colorAllocate(0,255,0);
$dkgreen=$im->colorAllocate(0,192,0);
$yellow=$im->colorAllocate(255,255,0);
$ltyellow=$im->colorAllocate(255,255,200);
#--------------------------------------------------------------
# base draw
$im->transparent($white);
$im->interlaced('true');
$im->rectangle(0,0,$Cwidth-1,$Cheight-1,$black);
#--------------------------------------------------------------
# base graph
$im->filledRectangle($Cgrpbsx,$Cgrpbsy,$Cgrpbsx+$Cgrpwid,$Cgrpbsy+$Cgrphei,$ltyellow);
# lines
for($lp=0;$lp<$Cgrpwid;$lp+=$Cgrpsplitx){
$x=$Cgrpbsx+$lp;
$im->line($x,$Cgrpbsy,$x,$Cgrpbsy+$Cgrphei,$ltgray);
}
for($lp=0;$lp<$Cgrphei;$lp+=$Cgrpsplity){
$y=$Cgrpbsy+$lp;
$im->line($Cgrpbsx,$y,$Cgrpbsx+$Cgrpwid,$y,$ltgray);
}
$im->rectangle($Cgrpbsx,$Cgrpbsy,$Cgrpbsx+$Cgrpwid,$Cgrpbsy+$Cgrphei,$black);
#--------------------------------------------------------------
# out graph!!
$color=$red;
&og_drawgraph_border(@Cgraphdata1);
$color=$blue;
&og_drawgraph_line(@Cgraphdata2);
$color=$dkgreen;
&og_drawgraph_dash(@Cgraphdata3);
#--------------------------------------------------------------
# text
$cnt=0;
for($lp=0;$lp<$Cgrpwid-1;$lp+=$Cgrpsplitx){
$x=$Cgrpbsx+$lp+($Cgrpsplitx/2)+$Cgrptxtadhx;
$y=$Cgrpbsy+$Cgrphei+$Cgrptxtadhy;
$tmp=sprintf("%2d",$cnt);
$color=$black;&og_drawtext($x,$y,$tmp);
$cnt+=1;
}
$cnt=0;
for($lp=0;$lp<$Cgrphei-1;$lp+=$Cgrpsplity){
$x=$Cgrpbsx-($Cgrpsplitx/2)+$Cgrptxtadvx;
$y=$Cgrpbsy+$lp+($Cgrpsplity/4)+$Cgrptxtadvy;
$tmp=sprintf("%2d",$cnt);
&og_drawtext($x,$y,$tmp);
$cnt+=1;
}
#--------------------------------------------------------------
# end
binmode STDOUT;
print $im->png;
#--------------------------------------------------------------
# draw graph
sub og_drawgraph_border{
my(@rec,$cnt,$lp,$x,$y,$x1,$y1,$x2,$y2);
@rec=@_;
$cnt=0;
for($lp=0;$lp<$Cgrpwid-1;$lp+=$Cgrpsplitx){
# get data
$vl=$rec[$cnt];
# draw
$x=$Cgrpbsx+$lp+($Cgrpsplitx/2);
$y=$Cgrpbsy+$Cgrphei;
$x1=$x-($Cgrpsplitx/8);
$y1=$y-$vl;
$x2=$x+($Cgrpsplitx/8);
$y2=$y;
if($y1<$y2){
$im->filledRectangle($x1+1,$y1+2,$x2+1,$y2,$gray);
$im->filledRectangle($x1,$y1,$x2,$y2,$color);
$im->rectangle($x1,$y1,$x2,$y2,$black);
}else{
$im->filledRectangle($x1+1,$y2,$x2+1,$y1,$gray);
$im->filledRectangle($x1,$y2,$x2,$y1,$color);
$im->rectangle($x1,$y2,$x2,$y1,$black);
}
$cnt+=1;
}
}
sub og_drawgraph_line{
my(@rec,$cnt,$lp,$x,$y,$x1,$y1,$x2,$y2);
@rec=@_;
$cnt=0;
for($lp=0;$lp<$Cgrpwid-1;$lp+=$Cgrpsplitx){
# get data
$vl=$rec[$cnt];
# draw
$x=$Cgrpbsx+$lp+($Cgrpsplitx/2);
$y=$Cgrpbsy+$Cgrphei;
$x2=$x;
$y2=$y-$vl;
if($cnt){
$im->line($x1+1,$y1+1,$x2+1,$y2+1,$gray);
$im->line($x1,$y1,$x2,$y2,$color);
$im->line($x1,$y1+1,$x2,$y2+1,$color);
}
$im->arc($x2,$y2,5,5,0,360,$color);
$x1=$x2;
$y1=$y2;
$cnt+=1;
}
}
sub og_drawgraph_dash{
my(@rec,$cnt,$lp,$x,$y,$x1,$y1,$x2,$y2);
@rec=@_;
$cnt=0;
for($lp=0;$lp<$Cgrpwid-1;$lp+=$Cgrpsplitx){
# get data
$vl=$rec[$cnt];
# draw
$x=$Cgrpbsx+$lp+($Cgrpsplitx/2);
$y=$Cgrpbsy+$Cgrphei;
$x2=$x;
$y2=$y-$vl;
if($cnt){
$im->dashedLine($x1+1,$y1+1,$x2+1,$y2+1,$gray);
$im->dashedLine($x1,$y1,$x2,$y2,$color);
$im->dashedLine($x1,$y1+1,$x2,$y2+1,$color);
}
$im->arc($x2,$y2,5,5,0,360,$color);
$x1=$x2;
$y1=$y2;
$cnt+=1;
}
}
#--------------------------------------------------------------
# draw text
sub og_drawtext{
my($tmp);
$im->string(gdSmallFont,$_[0],$_[1],$_[2],$color);
}
# so-ko
#$im->setPixel(2,2,$black);
#$im->line(4,4,32,64,$black);
#$im->dashedLine(4,4,24,64,$black);
#$im->arc(50,50,95,75,0,360,$blue);
#$im->fill(50,50,$red);
#$im->stringTTF($black,'arial',10,0,60,60,'test');
#gdGiantFont gdLargeFont gdMediumBoldFont gdSmallFont gdTinyFont
# end
|
実行するとこんなファイルが生成される。
AU命!っす。ナビゲーションって?EZnavigation編
面白がっていろいろなところで試してみているが、かなりな精度で現在位置がわかる。他者の簡易ナビとは、太陽とゴキブリくらいに違う。さて、これらを、製作者サイドとして利用できないものだろうか?
国際規格の緯度経度(度分秒)で情報が取れるので、適当なテーブルを用意して一番近い項目にヒットすれば・・「現在地点は・・、東京都台東区・・です」程度のものが簡単に作れてしまう。
または、登録しておいて、一番近い人とおしをお知らせする・・なんてのも、おちゃのこさいさいだ。
(「てんぷら」に機能追加する予定、現在構想中です)
じゃあ、グラフ表示の他の方法とか?
GDによる方法を紹介したが、利用できない場合が多い。じゃ、どうすんねん。という事だ。しょうがないので、クライアントサイドで処理してしまおうというアイデアだ。JAVAアプレットや、Flashなんかで実現できるが、ここではJAVAアプレットを掲載する。
ちょっと怪しいが、以下がそのソースコードである。簡単な、棒グラフと線グラフを表現できる。
はずかしいが、そのまま掲載する。(注意:サポートは受け付けません)
/*
JAVA applet graph (common)
2002/06/11 nabek
*/
import java.util.*;
import java.awt.*;
import java.applet.*;
import java.text.*;
public class graph extends Applet implements Runnable{
//
private volatile Thread timer; // スレッド
private boolean flinit=false; // 初期化
private int iCount=0; // タイマカウント
private Image imgOff; // オフスクリーン
private Graphics gOff; // オフスクリーン
//
private int Cwidth; // 横幅
private int Cheight; // 縦幅
private int Cgrpbsx=24; // X軸グラフ基点
private int Cgrpbsy=16; // Y軸グラフ基点
private int Cgrpwid=0; // グラフ横幅
private int Cgrphei=0; // グラフ縦幅
private int Cgrpsplitxnum=10; // 横区切数
private int Cgrpsplitynum=10; // 縦区切数
private float Cgrpsplitx=0; // 横区切単位
private float Cgrpsplity=0; // 縦区切単位
private int Cgrptxtadvx=10; // 横目盛X軸基点
private int Cgrptxtadvy=12; // 横目盛Y軸基点
private int Cgrptxtadhx=-12; // 縦目盛X軸基点
private int Cgrptxtadhy=4; // 縦目盛Y軸基点
private int Cgrptxthst=1; // 横目盛開始値
private int Cgrptxtvst=1; // 縦目盛開始値
private int Cgrptxthadd=2; // 横目盛増加値
private int Cgrptxtvadd=1; // 縦目盛増加値
private int Cgrpnum=0; // グラフ数
private Color Cgrpcolor[]; // カラー
private Stroke oPen; // ペン
private Stroke oPenBold; // ペン(太)
private Stroke oPenDot; // ペン(破)
private Stroke oPenGrpln; // ペン(線グ)
private int Cgraph[]; // グラフ順番
private int Cdata[][]; // データ
private int clTable[][]={ // カラー定義
{0,0,0},{0,0,255},{255,0,0},{0,255,0}, // 標準8色
{255,0,255},{0,255,255},{255,255,0},{255,255,255},
{220,220,220},{220,220,255},{255,220,220},{220,255,220},// 明8色
{255,220,255},{220,255,255},{255,255,220},{240,240,240}
};
// main
public static void main(String args[]){
System.out.println("Canot running! JAVA applet..");
}
// 初期化
public void init(){
int lp,iCnt,iVl,en1,en2,en3;
String str;
StringTokenizer st;
// 初期化
Cwidth=getSize().width;
Cheight=getSize().height;
// 引数
try{iVl=Integer.parseInt(getParameter("width"));
if(iVl>0){
Cwidth=iVl;
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("height"));
if(iVl>0){
Cheight=iVl;
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grpbsx"));
Cgrpbsx=iVl;
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grpbsy"));
Cgrpbsy=iVl;
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grpsplitxnum"));
if(iVl>0){
Cgrpsplitxnum=iVl;
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grpsplitynum"));
if(iVl>0){
Cgrpsplitynum=iVl;
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grptxtadvx"));
if(iVl>0){
Cgrptxtadvx=iVl;
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grptxtadvy"));
if(iVl!=0){
Cgrptxtadvy=iVl;
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grptxtadhx"));
if(iVl!=0){
Cgrptxtadhx=iVl;
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grptxtadhy"));
if(iVl!=0){
Cgrptxtadhy=iVl;
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grptxthst"));
Cgrptxthst=iVl;
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grptxtvst"));
Cgrptxtvst=iVl;
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grptxthadd"));
if(iVl!=0){
Cgrptxthadd=iVl;
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{iVl=Integer.parseInt(getParameter("grptxtvadd"));
if(iVl!=0){
Cgrptxtvadd=iVl;
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{st=new StringTokenizer(getParameter("graphlist"),",");
iVl=st.countTokens();
Cgraph=new int[iVl];
iCnt=0;
while(st.hasMoreTokens()){
Cgraph[iCnt]=Integer.parseInt(st.nextToken());
iCnt++;
}
Cgrpnum=iCnt;
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{st=new StringTokenizer(getParameter("graphcolor"),",");
iVl=st.countTokens();
iCnt=0;
if((iVl % 3)==0){
Cgrpcolor=new Color[iVl/3]; // RGB指定
while(st.hasMoreTokens()){
en1=Integer.parseInt(st.nextToken());
en2=Integer.parseInt(st.nextToken());
en3=Integer.parseInt(st.nextToken());
Cgrpcolor[iCnt]=new Color(en1,en2,en3);
iCnt++;
}
}else{
Cgrpcolor=new Color[iVl]; // 規定色
while(st.hasMoreTokens()){
en1=Integer.parseInt(st.nextToken());
Cgrpcolor[iCnt]=new Color(clTable[en1][0],clTable[en1][1],clTable[en1][2]);
iCnt++;
}
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
try{
Cdata=new int[16][];
for(lp=0;lp<16;lp++){
str="data"+(lp+1);
st=new StringTokenizer(getParameter(str),",");
iVl=st.countTokens();
if(iVl>0){
Cdata[lp]=new int[iVl];
iCnt=0;
while(st.hasMoreTokens()){
Cdata[lp][iCnt]=Integer.parseInt(st.nextToken());
iCnt++;
}
}
}
}catch(NullPointerException e){}catch(NumberFormatException e){}
// 計算
Cgrpwid=(Cwidth-Cgrpbsx*2)+(int)(Cgrpbsx/4);
Cgrphei=(Cheight-Cgrpbsy*2);
Cgrpsplitx=((float)Cgrpwid/(float)Cgrpsplitxnum);
Cgrpsplity=((float)Cgrphei/(float)Cgrpsplitynum);
setBackground(new Color(255,255,240));
// オフスクリーン
imgOff=createImage(Cwidth,Cheight);
gOff=imgOff.getGraphics();
// フラグ
flinit=true;
}
// 描画
public void paint(Graphics g1) {
float lp;
int x,y,sx,sy,width,height,iCnt;
Graphics2D g,g2;
g=(Graphics2D)gOff;
// 調査
if(flinit==false){
return;
}
// 初期化
g.translate(0,0);
g.setClip(0,0,Cwidth+1,Cheight+1);
g.clearRect(0,0,Cwidth,Cheight);
Stroke oPen=new BasicStroke();
Stroke oPenBold=new BasicStroke(2);
Stroke oPenDot=new BasicStroke(1,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER,10.0f,new float[]{2.0f,2.0f},0.0f);
Stroke oPenGrpln=new BasicStroke(2,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER,10.0f,new float[]{8.0f,4.0f},0.0f);
g.setStroke(oPen);
// タイマー
if((iCount & 1)>0){
g.setColor(Color.black);
g.drawRect(2,2,2,2);
}
// 背景
g.setColor(Color.black);
g.drawRect(0,0,Cwidth-1,Cheight-1);
g.setColor(new Color(255,255,220));
g.fillRect(Cgrpbsx,Cgrpbsy,Cgrpwid,Cgrphei);
// 目安線
g.setStroke(oPenDot);
for(lp=0;lp<Cgrpwid;lp+=Cgrpsplitx){
x=(Cgrpbsx+(int)lp);
y=(Cgrpbsy);
g.setColor(Color.lightGray);
g.drawLine(x,y,x,y+Cgrphei);
}
for(lp=0;lp<Cgrphei;lp+=Cgrpsplity){
x=(Cgrpbsx);
y=(Cgrpbsy+(int)lp);
g.setColor(Color.lightGray);
g.drawLine(x,y,x+Cgrpwid,y);
}
// 目盛線
g.setStroke(oPen);
for(lp=0;lp<Cgrpwid+Cgrpsplitx;lp+=Cgrpsplitx){
x=(Cgrpbsx+(int)lp);
y=(Cgrpbsy+Cgrphei);
g.setColor(Color.lightGray);
g.drawLine(x,y,x,y+2);
}
for(lp=0;lp<Cgrphei+Cgrpsplity;lp+=Cgrpsplity){
x=(Cgrpbsx);
y=(Cgrpbsy+(int)lp);
g.setColor(Color.lightGray);
g.drawLine(x,y,x-2,y);
}
// 目盛
g.setStroke(oPen);
iCnt=Cgrptxthst;
for(lp=0;lp<Cgrpwid-1;lp+=Cgrpsplitx){
g.setColor(Color.black);
x=(Cgrpbsx+(int)lp)+Cgrptxtadvx;
y=(Cgrpbsy+Cgrphei)+Cgrptxtadvy;
g.drawString(Integer.toString(iCnt),x,y);
iCnt+=Cgrptxthadd;
}
iCnt=Cgrptxtvst;
for(lp=Cgrphei;lp>0;lp-=Cgrpsplity){
g.setColor(Color.black);
x=(Cgrpbsx)+Cgrptxtadhx;
y=(Cgrpbsy+(int)lp)+Cgrptxtadhy;
g.drawString(Integer.toString(iCnt),x,y);
iCnt+=Cgrptxtvadd;
}
// 枠描画
g.setStroke(oPenBold);
g.setColor(Color.black);
g.drawRect(Cgrpbsx,Cgrpbsy,Cgrpwid,Cgrphei);
// グラフ描画
g.setStroke(oPen);
g.setClip(Cgrpbsx,Cgrpbsy,Cgrpwid,Cgrphei);
for(iCnt=0;iCnt<Cgrpnum;iCnt++){
if(Cgraph[iCnt]==0){
outGraphBorder(g,Cgrpcolor[iCnt],Cdata[iCnt]);
}else{
outGraphLine(g,Cgrpcolor[iCnt],Cdata[iCnt]);
}
}
// 結果反映
g2=(Graphics2D)g1;
g2.drawImage(imgOff,0,0,this);
}
// グラフ描画
private boolean outGraphBorder(Graphics2D g,Color cl,int iDt[]){
float lp;
int x,y,sx,sy,width,height,iCnt;
iCnt=0;
for(lp=0;lp<Cgrpwid;lp+=Cgrpsplitx){
g.setColor(Color.black);
if(iCnt>=Cgrpsplitxnum){
continue;
}
width=(int)(Cgrpsplitx/2);
height=iDt[iCnt];
x=(Cgrpbsx+(int)lp)+(int)(Cgrpsplitx/2)-(int)(width/2);
y=(Cgrpbsy+Cgrphei)-height;
g.setColor(Color.gray);
g.fillRect(x+2,y-1,width,height+1);
g.setColor(cl);
g.fillRect(x,y,width,height);
g.setColor(Color.black);
g.drawRect(x,y,width,height);
iCnt++;
}
return true;
}
private boolean outGraphLine(Graphics2D g,Color cl,int iDt[]){
float lp;
int x,y,sx,sy,width,height,iCnt;
iCnt=0;
sx=0;sy=0;
for(lp=0;lp<Cgrpwid;lp+=Cgrpsplitx){
if(iCnt>=Cgrpsplitxnum){
continue;
}
height=iDt[iCnt];
x=(Cgrpbsx+(int)lp)+(int)(Cgrpsplitx/2);
y=(Cgrpbsy+Cgrphei)-height;
g.setColor(cl);
if(sx>0 && sy>0){
g.drawLine(sx,sy,x,y);
g.drawLine(sx,sy+1,x,y+1);
g.fillArc(sx-2,sy-2,6,6,0,360);
}
sx=x;sy=y;
iCnt++;
}
g.fillArc(sx-2,sy-2,5,5,0,360);
return true;
}
// タイマ
public void start() {
timer = new Thread(this);
timer.start();
iCount=0;
}
public void stop(){
timer=null;
}
public void run() {
Thread me=Thread.currentThread();
while(timer==me){
try {
Thread.currentThread().sleep(1000);
}catch(InterruptedException e){
}
iCount++;
repaint();
}
}
public void update(Graphics g){
paint(g);
}
public String getAppletInfo(){
return "GRAPH DRAWER!\n";
}
public String[][] getParameterInfo(){
return null;
}
}
|
誰も教えない具体的なウェブデザイン?
ウェブのデザインってすんごい時間がかかっていませんか?
右図が自分のウェブデザインの風景です。グラフィックソフトでラフのデザインを必ず起こしてから、ウェブの製作に入ります。でないと、必ず、終わりの無い編集が待ち構えているからです。笑
右からFireWorks、IE、DreamWeaverです。FireWorksは、ウェブに特化した?グラフィックソフトで、かなり重宝しています。緑色の部分が、今回画像として生成した部分です。
ラフで生成したものと比べながらHTMLを生成していきます。この手順を繰り返していきながら、足りないものや、思いついたアイデアなんかを作ったりして、完成に近づけていきます。
すばらしいサイトデザインへの10の手順書だ!
1.グラフィックデザイン時は、HTMLの制約にとらわれず自由に書く!
2.ある程度できたら、HTMLの制約をちょっと考えながら再考する
3.アニメやFlashなどの利用を考えてみる
4.最後に、使い易さや見易さの配置を考えて、最終デザインへ移行!
5.画像として必要なものをリストアップし、抽出だ!
6.HTMLエディタで同じように製作するべし
7.最低でもネスケやIE、Operaとかで表示確認を行ってみる
8.本当の使い易さを追求し、JavaScriptの導入をする
9.すばらしいサイトの完成!!
10.あとは、コンテンツの用意だ!(ゲゲッ)
いまさら?DreamWeaver4Jのフリーズバグ
DreamWeaverの最強バグが残されていた。テーブルをコピーとかペーストとかすると、突如落ちる「あれ」である。せめて保存だけさせてくれ~なんて、容赦ないフリーズである。
もう、MXも出たし、これは直されないのかな・・とか思っていたら、いつのまにやらバージョンアップされてました。またもや日本語の取り扱いによるものらしい。Windowsで、SJISコードで編集すると発生するそうです。4.04になる。
意外に知らないFLASHサーバクライアント間通信
FLASH5からサーバークライアント間で通信ができるようになっている。XMLで通信することができ(余計面倒くさい気もするが・・)いままでの静的アニメが、いきなし高度なアプリ製作も可能になってしまう脅威の機能だ(やりすぎな感もあるが・・)
サーバー側には、受ける側のソフトが必要。Macromediaでは、Flash Communication serverという高額なやつがある。
まだ、これに関する情報や、書籍も非常に少ない。案の定、これにもオープンソースがある。
またしても海外製がほとんどだが、なんと日本発のプロジェクトもある。まだ、未完状態だが、みんなで盛り上げていこう。FACEsプロジェクト。
知ってた?googleを超えるという、gooの新作検索エンジン
なんと、15分前の更新もわかってしまう凄い検索エンジン、NTT-Xが開発してるらしい。・・・と、ユーザーにとってみては素晴らしいものなんだけど、これが一転、サイト管理者さんには悩みの種になっている、お気づきのとおり、検索エンジンからのクロールが凄い数でやってくるのである。アクセスカウントのほとんどを占めるくらいである。
そんな、useragentは、mogimogi/1.0である。
ひそかに有名、ECサイト構築オープンソース
ありそうで、あまり無かったEC系オープンソース、ヨーロッパ色がかなり強い、Exchangeプロジェクトの名前が変わっていた。新しい名前は、OSCommerce、OSとはオープンソースの略である。すでに日本語ローカライズもされている。
|