「あなくつ」のおもちゃばこ

Blog

夏休みの工作 エアコン室外機効率化霧吹き

7月の電気代が約15,000円でした。オール電化の実家より電気代が高いんですけど。

在宅ワークでほぼエアコンつけっぱなしというのがほぼ原因ですね。

夏も終わりに差し掛かっていますが、少しでもエアコンの効率を良くするためにこんなものを作ってみました。

バスポンプで室外機のアルミフィンに霧吹きする装置です。

バスポンプが常時ONだと1時間くらいで20Lを消化してしまうので、間欠スイッチモジュールで10秒に一回2秒間だけ霧吹きするよう調整してみました。

効果は測っていませんが、室外機から出てくる風がそこそこ冷たい感じがするので、多少効果はあるでしょう。

これで少しでも電気代が下がればいいのですが。

2023/09/03 15:48:18 | Trackbacks (0) | Comments (0) | Technology

ミラーレス一眼をウェブ会議のカメラにする

この記事は株式会社シンプルウェイ Advent Calendar 2021 の8日の記事です。


最近のノートパソコンは標準でカメラやマイクが付いているので、気軽にウェブ会議に参加できるのですが、僕は普段デスクトップを使っているので、カメラやマイクは別途用意しなければなりません。

しばらくスマホをウェブ会議使っていたのですが、画面共有されたときにかなり見づらいのと、ログインが必要なミーティングスペースだと準備に手間取るデメリットがありました。

ところで、コロナで旅行もいけなくなり、活躍の場を失ったミラーレス一眼がありましたので、これをウェブカメラとして活用すべく準備してみました。

Sony NEX-5R

ミラーレス一眼をウェブ会議のカメラにする」の続きを読む

2021/12/10 17:35:29 | Trackbacks (0) | Comments (0) | Technology

IPv6 で通信したいならHGWはスキップしたほうがいいんじゃないか説

会社ではフレッツ光ネクスト(ひかり電話あり)を契約していて、ルーターはSEILを使っています。

SEIL で NGN IPv6 ネイティブ (IPoE) 接続を試す を参考にIPv6の環境を試しているのですが、自宅のPCと比べてルーターからのPingがなんとなく遅い気がします。

自宅はひかり電話なしのフレッツ光ネクストなので、PCが直接フレッツ網からRAでIPv6プレフィックスを受け取っている状態です。

違いがあるとしたらHGWが挟まっているか否かなのですが、これが影響しているのでしょうか。

SEILのページによると、ONU配下には /56 のプレフィックスが来て、HGW配下には /60 のプレフィックスが来るようです。参考ページではHGWの配下にSEILを設置する例(下図左)が載っていますが、実はHGWではなくONUの配下に置いてもいいんじゃないか(下図右)という気がしています。

SEILを使ったIPv6構成

技術的にできるのか不明なので試してみないとですが。体感的な通信スピードは、スループットよりもレイテンシーのほうが重要なので、高速化できるといいなぁというところです。

2020/02/11 15:11:00 | Trackbacks (0) | Comments (0) | Technology

ActiveDirectoryで制限されているPCもリモートで操作したいんじゃ!

前回の投稿から1年も経っていたなんて・・・

とあるノートPCがあります。これは別の会社のActiveDirectoryに参加していて、VPNつないだり共有フォルダ参照したりするのに必要です。ログインするためには指紋認証も必要です。

ところで、このPCは普段の業務に使うものではなく、持ち歩いたりしないので会社に置きっぱなしにして、リモートで使いたいですよね。

ところが、このPCはADのポリシーで激しく制限されいるのでリモートデスクトップが使えません。まぁ当然ですね。

でもどうにかしてリモートで使いたいんですよ。出先で急にデータ見たりしたいことも発生するわけです。

で、どうするか考えて、UltraVNCで下記のような仕組みを用意しました。

UltraVNC Repeater

ノートPCはADのポリシーでポート空けたりできないので、VNCサーバーになれません。そのため、リピーターを別途用意して、ノートPCからはクライアントとしてリピーターに接続するようにしておきます。

リモート操作する側はリピーターを経由してノートPCへアクセスします。

ちなみに、この図は会社のLAN内で操作する前提になっていますが、会社のLANはVPNで入れるので実質インターネットがあればどこからでも操作できるようになっています。

VNCでリモートコントロール

リピーターをLinux上に作成する手順は UltraVNC SC (Single Click) com Repeater CentOS 7 あたりを参考にしました。比較的小さいプログラムのようなので、必要なライブラリがあれば素直にコンパイルできるはずです。

ノートPC側は下記のショートカットをスタートアップに置いておけば、ログインしたときに自動的にリピーターに接続させることができます。

winvnc.exe -autoreconnect ID:1000 -connect 192.168.0.10:5500 -run

ノートPC側のVNCはユーザーモードで動いているので、

  • 常にログオンした状態になっていないと接続できない
  • スリープになってもいけない
  • UACが起動すると操作不能になる

というあたりが気をつけなければならない点です。

スリープやロックの時間はポリシーで設定されていることが多いと思うので、その場合はメディアプレーヤーで音楽でもリピート再生しておいてください。

タグ : Active Directory,VNC

2018/07/29 18:15:21 | Trackbacks (0) | Comments (0) | Technology

NessusにSSL証明書をインストール

Nessusはデフォルトでは自己署名証明書がセットされています。これを信頼できる証明書機関から取得したSSL証明書に置き換える方法です。サーバーはCentOS7です。

結論

  • サーバー証明書: /opt/nessus/com/nessus/CA/servercert.pem
  • 中間証明書: /opt/nessus/com/nessus/CA/serverchain.pem
  • 秘密鍵: /opt/nessus/var/nessus/CA/serverkey.pem

証明書と秘密鍵のディレクトリが違うことに気が付かなくて小1時間。中間証明書のファイルが cacert.pem と勘違いして小1時間。まったく手こずらせやがって。

タグ : certificate,nessus,ssl,証明書

2017/07/29 17:45:18 | Trackbacks (0) | Comments (0) | Technology

CentOS6 + Apache2.2 + PHP5.3 (Module) + PHP7.1 (FastCGI)

CentOS6にPHP5とPHP7を入れたいんじゃ!ということで奮闘してみました。

もともと CentOS6 + Apache2.2 + PHP5.3 という一昔前の普通の環境が整っているサーバーへPHP7をインストールし、特定のバーチャルホストだけでPHP7を有効にできるように設定してみます。

手順は面倒なので、ポイントだけ箇条書きにしておきます。

  • yum で remi から php71 をインストール
  • mod_fastcgi の rpm をどこからか見つけてきてインストール (RPMForgeがなくなってしまったので yum からインストールする手段がわからん)
  • Apacheに下記の設定を追加
Action php71-fastcgi /php71-fcgi/php-fpm
ScriptAlias /php71-fcgi/ /opt/remi/php71/root/usr/sbin/
FastCGIExternalServer /opt/remi/php71/root/usr/sbin/php-fpm -host 127.0.0.1:9000
<Directory "/opt/remi/php71/root/usr/sbin/">
  Options None
  AllowOverride None
  Allow from all
</Directory>
  • PHP7を有効にするバーチャルホストに下記の設定を追加
<FilesMatch ".+\.php$">
  SetHandler php71-fastcgi
</FilesMatch>

こんな感じで動くんじゃないでしょうか!?

タグ : apache,centos,fpm,php

2017/01/16 04:11:32 | Trackbacks (0) | Comments (0) | Technology

Apacheモジュールで404エラーの出し方2種と違い

会社が休みに入ると仕事ができていいですね(え

Apacheモジュールで処理を行った結果、404(Not Found)のHTTPステータスコードを返したい場合があります。その場合、2種類の方法があります。

  • ap_hook_handler で登録したフック関数の戻り値で404を返す
  • ap_hook_handler で登録したフック関数の引数 request_rec 構造体の status の値を変更する(戻り値は0=OKを返す)

さて、2つの違いは何でしょう。答えは、レスポンスボディに何が出力されるか、ということろに違いがあります。

Apacheのフックの処理の流れから考えてみましょう。とりあえず、今回ポイントとなっているあたりを概略図にすると下記のようになります。

正常なとき
正常なとき

エラーの時(ファイルがない)
エラーの時

Apacheがいろいろなフックを呼びだし、誰かが処理を担当してくれたらそれを返す、誰も処理してくれなかったらエラー処理して返す、という感じでしょうか。

このとき、フック関数の戻り値で404を返すと下記のように処理が流れます。

エラーの時

エラー処理のほうに流れるわけですね。よって、エラー処理で生成されたレスポンスボディが返されます。Apacheの設定で ErrorDocument ディレクティブを設定している場合、指定されているコンテンツがレスポンスされます。

一方、request_rec 構造体の status の値を変更する場合、フック関数自体はOK(処理完了)を返すので、エラーレスポンスには処理が流れません。よって、 ap_rwrite などでレスポンスボディをセットしていれば、その内容がレスポンスされます。

エラーの時

この動きは、404エラーに限らず、500(Internal Server Error)などでも同様です。

これを理解できると、

  • 引数が不正で処理が続行できない場合など、モジュールでエラーを出力したい時、なんでエラーになったのかエラーメッセージを表示しつつ 400 のステータスコードを返す
  • 引数が不正だった場合でも、ファイルのダウンロードの処理(CSVの出力など)の場合は、 ErrorDocument ディレクティブで設定された 404 ページを表示させたい

など便利な使い方ができます。

Apacheモジュール開発している人なんてあまりいないと思いますが、ご参考までに!

タグ : apache,module,モジュール

2015/12/30 20:23:08 | Trackbacks (0) | Comments (0) | Technology

PostgreSQLのデータをMySQLへインポートする自分用メモ

PostgreSQLで運用していたデータをMySQLへ移行する必要が出てきてしまったので、少しでもラクに移行できないか考えてみた。

前提条件として

  • データ型は基本の型ばかり (INT/DOUBLE/CHAR/TEXTなど。DATETIMEなども使っていない)
  • 関数・変数は使わない (SERIAL(AUTO_INCREMENT)だけ)

というテーブル構成。

  1. まずダンプファイルを作る

    pg_dump --inserts --column-inserts -f /tmp/psql.sql [DB名]

  2. SQLファイル先頭のSETコマンドを削除

  3. ALTER TABLE [テーブル名] OWNER TO [ユーザー名] を削除

  4. CREATE SEQUENCE・・・ を削除

  5. ALTER SEQUENCE・・・ を削除

  6. ALTER TABLE ONLY・・・ を削除

  7. テーブル定義を置換

    • CHARACTER > CHAR (型の読み替え)
    • REAL > FLOAT (型の読み替え)
    • DOUBLE PRECISION > DOUBLE (型の読み替え)
    • TEXT DEFAULT ''::text > TEXT (TEXT型にデフォルト値を設定できない)
    • ''::bpchar > '' (デフォルト値の型明示を削除)
  8. データを置換

    • (\s+)' > ' (CHAR型だったカラムはパディングのスペース文字が入っているので削除。データ内のスペースを削除しないように注意)
  9. SERIAL型だったカラムに AUTO_INCREMENT 属性を付与

  10. SERIALの最大値を AUTO_INCREMENT の次の値へ変換 (テーブル名をうまく抜き出せるように正規表現を書いてね)

    検索正規表現: SELECT pg_catalog.setval\('(.+)_[^_]+_id_seq', (\d+), true\);

    置換正規表現: SET @num = \2+1; SET @sql=CONCAT('ALTER TABLE \1 AUTO_INCREMENT=',@num); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;

  11. あとはエラーが出なくなるまでガンバレ!

タグ : MySQL,PostgreSQL,インポート,ダンプ

2015/08/24 16:23:44 | Trackbacks (0) | Comments (0) | Technology

Raspberry PiでSDカードが論理破損した時に少しでもファイルを救出するコマンド

手元のマシンがWindowsなので、VMwarePlayerとKNOPPIXで作業。

まずはSDカードをマシンに接続して、デバイスを確認

fdisk -l

Superblockのバックアップの場所を確認

mke2fs -n /dev/[デバイス]2

ファイルシステムのチェックと修復

e2fsck -f -b [Superblockのバックアップ] -y /dev/[デバイス]2

とりあえずこれで一部だけでも読めるようになる・・・、かも。

作業する前にddしておくのを忘れずに。

2015/05/21 02:53:27 | Trackbacks (0) | Comments (0) | Technology

CHドメインの移管方法(他社→VALUE DOMAIN)

最初に警告しておきますが、VALUE DOMAINではCHドメインの移管は公式にサポートしていません。下記の内容は、2015年05月現在たまたまできた、というだけですので、実行する場合は自己責任でお願いします。言っていることがよくわからない場合はやらないほうがいいでしょう。

  1. 移管元のレジストラでAuthCode(認証鍵・認証コード)を確認
  2. 「新しく移管申請を行う」の「Key」を選択VALUE DOMAINへログインし、ドメイン操作メニューの「新しく移管申請を行う」の「Key」を選択
  3. 「次のステップへ」を選択ページ中程の「次のステップへ」を選択
  4. デベロッパーツールを起動ブラウザのデベロッパーツールを起動
  5. ドロップダウンリストにCHドメインを追加ドメインのドロップダウンリストにCHドメインを追加
  6. 必要情報を入力して「移管申請」を選択
  7. 申請完了が表示されれば手続きは完了
  8. 移管が完了するのを待つ

CHドメインは、お名前.comではKey-Systemが上位レジストラのようだったので、VALUE DOMAINでも同じだろうと予測しました。VALUE DOMAINのコントロールパネルはバリデーションが甘いところがあるので、無理やりCHドメインのデータを送信してみたらできちゃった、っていう感じです。

タグ : CH,VALUE DOMAIN,ドメイン,移管

2015/05/08 16:40:18 | Trackbacks (0) | Comments (0) | Technology

Raspberry Piで不要なパッケージ自分用メモ

買って放置していたRaspberry Piをやっとこさセットアップしてみた。

買って放置していたRaspberry Pi

まずX Windowはいらんので削除。

下記のパッケージを apt-get で remove 。

  • cups-common
  • cups-bsd
  • libcups2
  • libcupsimage2
  • aspell
  • blt
  • dillo
  • gnome-themes-standard-data
  • git
  • hicolor-icon-theme
  • smbclient
  • samba-common
  • tcl8.5
  • tk8.5

下記のファイルを rm -rf で削除。

  • /home/pi/python_games
  • /usr/share/wallpapers/
  • /usr/share/sounds/
  • /usr/share/icons/*
  • /usr/games/
  • /usr/share/themes
  • /usr/share/images/

他にも不要なものありそうだけど、とりあえずこれでディスク使用量が1GB切った。

タグ : RaspberryPi

2014/07/19 17:32:13 | Trackbacks (0) | Comments (0) | Technology

FBWallPost 0.15をMTOS5.2で使えるようにする

このブログにはFBWallPostってプラグインを入れて、ブログを更新したらFacebookに投稿するようになっています。みてみて☆こっちっち(←みてみて君って入力しようとしたらGoogle IMEにサジェストされた)仕様。

342行目
を消す

MTをバージョンアップしたらこのプラグインが動かなくなって(というか、エントリー編集画面にアクセスできなくなってしまって焦りました)しまったので修正してみました。

FBWallPost 0.15の中の FBWallPost.pl の 342行目

</mt:unless>

これを消す。以上!

タグ : FBWallPost,MTOS

2014/06/09 05:52:57 | Trackbacks (0) | Comments (0) | Technology

BINGOもどきのNxNの行列で同じ組み合わせでビンゴにならない順列(改

以前「BINGOもどきのNxNの行列で同じ組み合わせでビンゴにならない順列」なんてものを考えたんですが、よく考えたらタテ・ヨコ・ナナメが同じ数字の組み合わせのものを排除しないと同時ビンゴを避ける事にならないですね。

ってことでリニューアル。

BINGOもどきのNxNの行列で同じ組み合わせでビンゴにならない順列(改」の続きを読む

2014/05/04 00:55:24 | Trackbacks (0) | Comments (0) | Technology

交差結合 (総当り・総組み合わせ)を求めるJavaScript

なんのことはない。集合Aと集合Bの交差結合(総当り)を求めるだけのプログラムです。

入力は改行で区切られた1行を一要素とします。出力は左に集合Aの要素、右に集合Bの要素をならべ、それぞれをタブ2文字で区切ります。

交差結合 (総当り・総組み合わせ)を求めるJavaScript」の続きを読む

タグ : cross,join,交差結合,組み合わせ,総当り

2014/04/22 05:45:40 | Trackbacks (0) | Comments (0) | Technology

BINGOもどきのNxNの行列で同じ組み合わせでビンゴにならない順列

同じ数字の組み合わせでBINGOになる行列を排除したい

NxNの行列があるとします。行列の要素には0からNxN-1までの数字が重複しないようにランダムに配置されています。BINGOのように、0からNxN-1までの数字を順番にランダムに選択し、選択した数字がタテ・ヨコ・ナナメいずれかで揃う場合をBINGOとします。このとき要素が異なる配置の行列でありながら、同じ数字の組み合わせでBINGOになる行列を排除したい。

そのようなBINGOで重複した順列を排除した集合を求めます。


要素の順番

入力は「重複順列を求めるJavaScript」や「順列を求めるJavaScript」で求めたような順列を入力します。要素の順番は右図のように並んでいるものと考えます。

結果はテキストフィールドにタブ文字で要素の区切り、改行で列の区切りとして出力されます。Excelにコピペしてください。

これで重複排除できているか自信がないです。テストあまりしていません。

BINGOもどきのNxNの行列で同じ組み合わせでビンゴにならない順列」の続きを読む

タグ : BINGO,JavaScript,ビンゴ

2014/04/22 05:40:47 | Trackbacks (0) | Comments (0) | Technology

順列を求めるJavaScript

順列はある集合から同じ要素を2個以上使わないという条件で要素を列挙した列です。例えば、0から2までの整数[0, 1, 2]の中から3個とる順列は、

[0, 1, 2], [0, 2, 1], [1, 0, 2], [1, 2, 0], [2, 0, 1], [2, 1, 0]

の6個です。

下記のプログラムで0からN-1までの整数からM個とる順列を求めます。結果はテキストフィールドにタブ文字で要素の区切り、改行で列の区切りとして出力されます。Excelにコピペしてください。

順列を求めるJavaScript」の続きを読む

タグ : JavaScript,順列

2014/04/21 05:21:31 | Trackbacks (0) | Comments (0) | Technology

重複順列を求めるJavaScript

順列はある集合から同じ要素を2個以上使わないという条件で要素を列挙した列です。「同じ要素を2個以上使わない」という条件をつけない順列を重複順列と言います。例えば、0から2までの整数[0, 1, 2]の中から2個とる重複順列は、

[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]

の9個です。

下記のプログラムで0からN-1までの整数からM個とる重複順列を求めます。結果はテキストフィールドにタブ文字で要素の区切り、改行で列の区切りとして出力されます。Excelにコピペしてください。

結果はN^M個になるので、やり過ぎるとブラウザ固まります。また、計算途中でJavaScriptのN進数変換を使うためNは36までに制限されます。

重複順列を求めるJavaScript」の続きを読む

タグ : JavaScript,重複順列,順列

2014/04/21 03:15:07 | Trackbacks (0) | Comments (0) | Technology

Exact Audio Copy がファイルの開く/保存ダイアログでクラッシュする

音楽CDの取り込みに、Exact Audio Copyというアプリケーションを使用しているわけですが、OSをWindows8に変えてからクラッシュする。どうもクラッシュするポイントは、ファイルを開く/保存するダイアログを開こうとする瞬間なんですね。マジ不便。

EAC.exe は動作を停止しました
EAC.exe は動作を停止しました
問題が発生したため、プログラムが正しく動作しなくなりました。プログラムは閉じられ、解決策がある場合は Windows から通知されます。

で、ネット上に解決策はあったんですが、日本語のページは見当たらなかったのでまとめてみました。

Exact Audio Copy がファイルの開く/保存ダイアログでクラッシュする」の続きを読む

2013/03/24 13:27:45 | Trackbacks (0) | Comments (0) | Technology

自分用Operaマイボタン

Operaにはマイボタンというボタンの追加機能があります。標準じゃ用意されていないボタンを追加できるわけですね。実態はアプリケーション内部への命令かJavaScriptです。ブックマークレットみたいなものです。

で、Windowsを再インストールする際にバックアップして前使っていたものが行方不明になってしまったので、次同じ事をやらかしてもすぐに復元できるようにメモっておくことにします。

自分用Operaマイボタン」の続きを読む

2013/02/04 23:57:41 | Trackbacks (0) | Comments (0) | Technology

VPSとか

このサイトのサーバー移動しました。

これまではSaaSesのIndustriaのStandard smallを使っていたんだけど、どうもディスクIOが芳しくないようで。月額390円だからグローバルIP代だけで考えても格安なんだけどね。

今度は、同じSaaSesのOsukini Server LTにした。こっちも月額450円でリーズナブル。こちらは会社でも何台か使っているので大体の性能はわかっているし、格安VPS流行りだした最初の頃からあるので最近はそこそこ安定している。

会社でVPSいろいろ使ってみているので、スペック数値だけではわからない安定性とか物理サーバーの混み具合とかがだいぶわかってきた感じ。安定していてリーズナブルなVPSとしては、他にさくらのVPSがおすすめです。その他、WebARENA VPS エントリーはまだ使ったことないけど気になる存在。昔レンタルサーバーとして触ったときは爆速で驚いたので、VPSもなかなか良いパフォーマンスを示してくれるんじゃないかと。

久々にブログ書いたけど、まぁそんな最近(笑

あ、今回からブログ書く書式をMarkdownにしてみました。

2012/08/31 01:42:16 | Trackbacks (0) | Comments (0) | Pastime,Technology

Locationを使うHTTPヘッダのステータスコードによってリファラが変わるか

通常、外部サイトに遷移するとき、遷移元のURLがHTTPヘッダのRefererで送られますよね。でも、それ送っちゃうと向こう(外部サイト)からしてみるとどこから来たかわかっちゃうわけじゃないですか。

いやーん、そんなの恥ずかしいー、って場合はどうするか。考えうる方法としては

  1. HTTPヘッダのLocationを使う
  2. HTMLのMETAタグのRefreshを使用する
  3. JavaScriptを使用する
  4. ジャンプ用のページを用意する
などがありますね。

ユーザーに移動を一番意識させない方法は1項目でしょうね。ところがどっこい、どうやらLocationで移動してもリファラは変わらないという情報を見つけてしまった。あちゃー、すでにこの方法でリファラを隠すつもりでリダイレクトしているところあるし...。まぁその辺はないしょってことで。

うーんじゃぁしょうがない、価格コムみたいに1ページ挟むかぁと思っていた矢先、ステータスコードでリファラが変わるんじゃね?ってコメントをTwitterで頂いた。よしっじゃぁ調べてみよう、ってことでリダイレクトを設定してみました。

結果: 惨敗。

どのステータスコードでもリファラーは変わらないですねぇ。

調べたのはOperaだけですが、1つでもリファラを送るブラウザがあれば、その動作は完璧ではないと考え、これ以上調べませんでした。

どうしても参照元のURLを隠したい場合は、Location以外の方法でリダイレクトさせる必要がありそうです。ちなみに、他のサイトはどうしているかというと、Yahoo!オークションや価格コムではランディングページを使うタイプ(4項目)、Twitterのt.coはMETAとJavaScriptのハイブリット(2項目3項目)のようです。

2012/02/16 19:24:53 | Trackbacks (0) | Comments (0) | Technology

MT4で同じ名前のカテゴリにおけるパスのナンバリングを阻止

ナンバリングされてしまう!さっきの記事はこれを調べていたから故の内容なんですね。

Movable Type 5ではわかりませんが、Movable Type 4では同じ名前のカテゴリやフォルダを追加すると、パスのディレクトリ名が勝手に「_1」とナンバリングされてしまいます。親カテゴリが共通でなくてもそうなります。

まぁカテゴリを登録したあとに、ひとつひとつパスを変更すればいいのですが、追加するたびに修正しなければならないのは面倒だ!!どうにかしろ!!、とのことです(デザイナいわく。いや、そんなこと言ってないですけども)。

で、MTのソースをざーっと追っていってパスを設定しているところを突き止めたのでゴニョゴニョしました。同じことでお悩みのかたは、追記を御覧くださいませ。

ホントはMT本体のプログラムは変更したくない(カスタマイズはプラグインから行うべき!というスタンス)のですが、cms_pre_saveコールバックだと、まだbasenameが設定されておらず、cms_post_saveコールバックだとすでにナンバリングされちゃってるんで、面倒だからしょうがない、という感じです。

MT4で同じ名前のカテゴリにおけるパスのナンバリングを阻止」の続きを読む

タグ : MT,Movable Type,カテゴリ,パス,フォルダ

2011/03/01 20:08:11 | Trackbacks (0) | Comments (0) | Technology

Movable Type の管理画面のプログラムコードを追う (私的メモ)

一時期プラグインを幾つか作ったときに、だいたい大枠を理解していたつもりなんだけど、改めてのぞいてみたらチンプンカンプンだったので、自分で分かる程度にメモ。

Movable Type の管理画面のプログラムコードを追う (私的メモ)」の続きを読む

タグ : MT,Movable Type,プラグイン

2011/03/01 19:11:14 | Trackbacks (0) | Comments (0) | Technology

Apacheモジュールを404型ブートストラップで起動することを考える

オリジナルなApacheモジュールを呼びだそうとするとき、設定ファイルの記述方法としては2種類あります。

  1. Locationディレクティブで特定のリクエストURIに対してハンドラを指定する
  2. AddTypeディレクティブで独自のコンテンツタイプに対してハンドラを指定する

ところで、世の中のウェブアプリケーションフレームワークにはステータスコード404(Not Found)のときに起動するものがあります。これはつまり、サーバーのドキュメントルート配下にファイルが無かったときにアプリケーションを起動するというものです。(ほんとよく考えたなぁ)

そこで、この考え方をApacheモジュールでも利用することを考えます。まず、エラードキュメントはApacheの設定で指定できますので、適当なURIを指定します。そして、そのURIに対して、Locationディレクティブでハンドラを登録します。こうすると、エラードキュメントが呼び出されるときにモジュールを呼び出してくれるわけですね。httpd.confの記述例としては下記のようになるでしょう。

ErrorDocument 404 /bootstrap/

<Location "/bootstrap/">
    SetHandler handler_of_application
</Location>

これでばんばんざい、というわけにいきません。404で起動するということは、Apacheとしてはエラー状態なわけです。これがどういう問題を起こすかというと、

  • ステータスコードとして、404がクライアントに伝達されてしまう
  • ファイルサイズが小さいと、IEなどで「やさしい」エラーメッセージ(Apacheドキュメント風に(笑))が表示されてしまう
  • CookieやLocationなど、モジュールでheaders_outに設定したヘッダを出力してくれない

というようなことがあります。

これらの問題を解決するためには、Apacheの状態をエラー状態から通常の状態に戻してあげます。具体的には、request_rec構造体のstatus変数にHTTP_OK定数を設定してあげればいいようです。

これはまったくもって予想ですが、モジュールが最初呼び出されるとき、statusには404が入っていることから、Apacheがあちこちのモジュールを駆けまわる時に状態を伝達する変数となっているのでしょう。最終的にコアプロセスへもどってきたときに、statusにより出力処理を切り替えるのだと思います。

さぁこれでフレームワークっぽくモジュールができる!と思いきや、まだダメなんですね。フレームワークとして動作させるには、リクエストURIによって処理やレスポンスを切り替える、という動作が必要です。通常のリクエストによる呼び出しなら、request_rec構造体のuri変数やfilename変数などを使えばどこから呼び出されているかわかります。ところが、404駆動の場合、前出の変数は404に指定したの値(上記のhttpd.confの設定だと/bootstrap/がセットされてやってくる)になるのです。

そこで必要になってくるのが、request_rec構造体のprev変数です。Apacheには内部リダイレクトという機能(要は、ブラウザに表示されているURLは変わらないのだけれど、同じサーバー内の別の場所にあるコンテンツを読んでいる状態、たぶん。詳しくは、このあたりが参考になる。)があり、ErrorDocumentによって設定されているページはこの機能により呼び出されています。そして、内部リダイレクトを呼び出した元が、prev変数によって指し示されているのです。つまり、クライアントがリクエストしたURIを取得するためには、prev変数をたどって、呼び出し元のuri変数やfilename変数を取得してくればいいわけですね。

さて、これで404駆動でもモジュールが使えるようになりました。あとそこから先は、ディベロッパーの根性で開発してください!

タグ : 404,Apache,Bootstrap,Module,ブートストラップ,モジュール

2011/02/25 04:34:22 | Trackbacks (0) | Comments (0) | Technology

Shift_JISからUnicodeへの変換

  • 変換式はないので、変換テーブルを用いる
  • 変換テーブルはShift-JIS to Unicode(Unicode Consortiumのもの)を用いる
  1. 1バイト取ってくる
  2. 0x00から0x7Dまたは0x7Fなら、単純に2バイト(16ビット)に拡張(ASCII文字)
  3. 0x7Eなら、0x203E(チルダ)
  4. 0xA1から0xDFなら、0xFEC0を加える(半角カタカナ)
  5. 0x81から0x9Fまたは0xE0から0xFCなら、後続1バイトを取ってきて、変換テーブルを用いて文字コードを得る
  6. その他のビット列が来たら知らん(笑)
    REPLACEMENT CHARACTER(0xFFFD)に置換するらしい

UnicodeからShift_JISは真逆の処理をしてあげれば良い。ただし、UnicodeとShift_JISは完全に可換ではないので、欠損する可能性あり。

タグ : Shift_JIS,UTF-16,Unicode,シフトJIS

2011/02/13 17:32:21 | Trackbacks (0) | Comments (0) | Technology

文字コードの正式名称・エイリアス

いざ、調べようと思うとなかなか見つからなかったのでメモ。

インターネットで使える文字コードの定義ね。

何気に最近更新されていたみたいだ。「last updated 2010-11-04」とかになってる。csCP51932ってなんぞ...。

一応、列挙されているキャラクタセット名以外は使うべきではない(もちろん大文字・小文字も区別される)んだけど、たまに変なキャラクタセット名が送られてくるよね。特にスパムメールとか。

逆にこれに従っておけば、一般的なアプリケーションに読み取ってもらえることを期待できる。

タグ : キャラクタセット,文字コード

2011/02/13 17:06:54 | Trackbacks (0) | Comments (0) | Technology

FreePascal での httpd の優先順位

FreePascalでApacheモジュールを開発するときに利用するユニットにhttpdがあります。このhttpdユニットはApacheのバージョンに合わせて、1.3用・2.0用・2.2用が用意されています。

普通にhttpdをusesするとファイル名の順番から1.3用が利用されてしまいます。いまどきは2.2以上なので、2.2用を使ってコンパイルしなければなりません。

今まではコンパイラオプションのユニット検索パスで、2.2用が入っている/units/$FPCTARGET/httpd22のディレクトリを指定することで回避していました。

が、先ほどfpc.cfgを見ていたらhttpdの振り分けが記述してありまして...。シンボルとして「FPCAPACHE_2_2」を設定してあげれば2.2用を読みに行ってくれるようです。Lazarusなら、プロジェクト>コンパイラオプション>その他タブ>カスタムオプションで「-dFPCAPACHE_2_2」を追記しておけばオッケーです。

まぁ自分でパスを追加しても問題はおこらないのですが、シンボル定義して勝手に切り替えてもらったほうがエレガントだとおもうので。ってゆーか、fpc.cfgとか読まないし、ドキュメント皆無みたいなもんだし、マイナーな言語は大変ですね(笑)

タグ : Apache,FreePascal,モジュール

2010/12/16 00:22:37 | Trackbacks (0) | Comments (0) | Technology

FreePascalでクロスコンパイル (その後)

はい、またやってました、クロスコンパイル。ってかこれ今やるべきことじゃないんだけど、FreePascalのメーリングリストで同じように悩みを持っている人がいて、それ見たらなんかやってた(笑)。

過去の戦歴

今回は64bitのLinuxがターゲット。過去の失敗経験をもとにCygwinBinutilsのコンパイルからやってみたら、なんとかうまく行ったので手順を書き記しておく。

binutilsをつくる

  1. Cygwin入っていなければインストールする。インストール方法はネット上にいっぱいあるのでググッてね。
  2. Binutilsのコンパイルに必要と思われるCygwinのパッケージは、「make」「gcc」「cpp」「libiconv」かな。他にもあるような気もするけれど、覚えていないのでエラーになったら適宜追加する感じで。
  3. Cygwinのコンソール立ち上げて、コンパイルで使うディレクトリへ移動
    mkdir -p /usr/local/src/
    cd /usr/local/src/
    
  4. Binutilsのソースを拝借してきて、展開、移動
    wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.20.1.tar.gz
    tar xvzf binutils-2.20.1.tar.gz
    cd binutils-2.20.1
    
  5. x86_64-linuxをターゲットにしてconfigureする
    ./configure --target=x86_64-linux
    
  6. お決まりのコマンドを実行する。ま、これが大体エラーになるから大変なんだけどね。
    make clean
    make all
    make install
    
  7. うまくコンパイルできれば「[Cygwin Dir]\usr\local\bin」においしそうなファイルが!

エラーが起こるとすればconfigureとmakeなので、エラー内容をよく見て必要なパッケージやライブラリを入れていけばいずれはコンパイルできるようになると思われる。

Free Pascalコンパイラを64bit用にコンパイル

コンパイラをコンパイルするんです。(じゃぁそのコンパイラは何でコンパイルされたんでしょう。コンパイラ?じゃぁそのコンパイラは...なんてね)

  1. 「[Cygwin Dir]\usr\local\bin」に生成された下記のファイルを「[Lazarus Dir]\fpc\[FPC Ver]\bin\i386-win32」へコピー
    • x86_64-linux-ar.exe
    • x86_64-linux-as.exe
    • x86_64-linux-ld.exe
    • x86_64-linux-objdump.exe
    • x86_64-linux-strip.exe
  2. 「[Lazarus Dir]\fpc\[FPC Ver]\bin\i386-win32」にパスを通す
  3. FPCのリポジトリからソースコードをダウンロードして適当に展開
  4. コンソールを起動し、展開したフォルダに入る
  5. コンパイルしてインストール
    make clean
    make OS_TARGET=linux CPU_TARGET=x86_64 all
    make OS_TARGET=linux CPU_TARGET=x86_64 \
    	INSTALL_PREFIX=[Lazarus Dir]\fpc\[FPC Ver] install
    
  6. 64bitコンパイラがうまく作成できれば、LazarusのコンパイラオプションからOSとCPUを64bit Linuxにしてコンパイルできるはず

これでWindowsで作成したHello Worldが64bit CentOSで動くようになった! 今回のステップを踏めば別のプラットフォーム向けもできそうだね。

あ、ちなみにLCL(Lazarus Component Library)のクロスコンパイルは試してません。とりあえず今のところ使ってないから、なくていっかな。過去の経験より手をつけるとはまるので。

タグ : 64bit,Binutils,Cygwin,FreePascal,Linux

2010/11/04 06:20:21 | Trackbacks (0) | Comments (0) | Technology

Redmineをセットアップしてみた

会社でRedmineを使いたくてセットアップしてみた。一応バグトラッキングはMantis使っていたんだけど、リポジトリのビュアーなど便利な機能が付いていたので乗り換え。

今回の設定項目は下記の通り

  • Redmineを使えるようにする。
  • Google AppsのOpenID機能を使ってRedmineにログインできるようにする。

Redmineのセットアップ方法はいろいろなところに書いてあるので、それを参考にすればいいでしょう。ただし気をつけたい点として、Ruby 1.9.2ではうまく動かなかったので、一世代前の安定版1.8.7を使うことでしょうか。1.9.2だと日本語のデフォルトデータを読めなかったり、一部のページでエラーになります。

OpenIDはRedmine 0.9から標準対応しているようですが、OpenID用のRubyモジュールが必要です。ま、gemで一発です。

gem install ruby-openid

これでOpenIDでログインできるかと思いきや、Google AppsのOpenID URLではログイン出来ないようです。調べてみるとGoogle Appsに対応するには少し手を加えないといけないようです。具体的には、「/app/controllers/account_controller.rb」と「/config/environment.rb」を修正します。修正内容はこちらのチケットを参照してくださいな。

requireしている「gapps_openid」はプロジェクトのページにあります。ダウンロードページからパッケージを取得して、下記のコマンドで取り込みます。

gem install -l ruby-openid-apps-discovery-x.x.x.gem

これで一通りセットアップおっけー。OpenIDを使う際には「管理」-「設定」-「認証」から「OpenIDによるログインと登録」をチェック入れて許可しておきましょう。また、ユーザーごとにユニークなOpenID URLが必要なので、ユーザー編集ページでURLを指定しておきます。URLは下記の方法で取得できます。

  1. Redmineへの登録がオープンの時は、ログインフォームの「OpenID URL」に下記のURLを入力してログインボタンをクリック。
  2. Googleからもどってきたときに、ユーザー登録フォームの「OpenID URL」にすでにユニークなURLが入った状態になるので、そのまま登録。
  1. Redmineへの登録がクローズの時は、ログインフォームの「OpenID URL」に下記のURLを入力してログインボタンをクリック。
  2. Googleからもどってきたときに、ログインフォームが表示されますが、その時アドレスバーのURLの「openid.identity」パラメータをURLデコード。
  3. デコードしたURLがユニークなURLなので、ユーザー編集ページから設定。
https://www.google.com/accounts/o8/site-xrds?hd=example.com

ログイン時は、ログインフォームの「OpenID URL」に上記のURLを入力してログインボタンをクリックするだけ(他は空で良い)。これでシングルサインオンでRedmineが使えます。

ちなみに、普通のGoogleアカウントでOpenID使うときは下記のURLで上記と同じことができます。

https://www.google.com/accounts/o8/id

タグ : Google Apps,OpenID,Redmine,シングルサインオン

2010/10/28 00:54:41 | Trackbacks (0) | Comments (0) | Technology

ブラザー複合機のフルパッケージドライバをWindows 2003に使う

ブラザー複合機のホームユース向けの製品ってプリンタのドライバがWindows 2003用に提供されていなようなんですよ。一応通常の印刷向けに「プリンタのインストール」から使えるドライバファイルは提供されているんだけれど、PC-FAX用のドライバが提供されていない。それとネットワークスキャン用のアプリケーションも提供されていない。まぁつまりはWindows 2003で全機能をホストして共有できないわけです。

そこで、考えられる対策としては

  1. Windows XPのマシンを用意して、それをプリンタサーバーにする
  2. Windows 2003の中にVMを立てて、その中にXPを用意してプリンタサーバーにする

これまでは1の方法で対処してきたわけですが、どうせ2003もサーバーとして常時電源が入っているのに、プリンタごときでもう一台電気を使わせるのもったいない。なんとかして2003でプリンタ共有させたいとだいぶ前から思っていました。

ところで、2003はXPと多くの部分でファイルが共通だったはずです。ということは、無理やりフルパッケージ版のドライバをインストールしても動く可能性が高いですよね。

無理やりインストールするためにはインストーラーのOSチェックを回避または騙す必要があります。ブラザーの場合は、InstallShieldでインストーラーがつくられているわけですが、どうやらInstallShieldは実行ファイルとは別にスクリプト的なもの(.inx)があって、それを元にインストール作業を行うようです。ってことは...、ゴニョゴニョすればOSチェックをすっ飛ばすことができそうです。

で、それをやったかどうかは書けないんだなぁ、これが。ソフトウェアの使用許諾にリバース・エンジニアリングしちゃだめって書いてあるからさ(笑)。

ま、一応調べたことメモはしておくけど、自己責任だよねー。なんかInstallShield 2010までイケルらしいよ。いろいろおかしくなっても知らないよー。

タグ : InstallShield,Windows 2003,brother,ドライバ,フルパッケージ,ブラザー,複合機

2010/10/27 03:48:01 | Trackbacks (0) | Comments (0) | Technology

request_rec の content_type

前の記事でこれ書こうと思っていたんだよね。

Apacheのモジュール開発するとき、絶対というほど使う「request_rec」構造体。これの中にある「content_type」変数はHTTPリクエストヘッダの「Content-Type」じゃないので注意。これはApacheの設定(httpd.confなど)でAddTypeされている値です。たとえばPHPだと「AddType application/x-httpd-php」を設定するので、「content_type」変数には「application/x-httpd-php」が入ってきます。フォームの送信などではリクエストヘッダに「Content-Type: application/x-www-form-urlencoded」などを送ってくるはずですが、これの「Content-Type」を得る場合は、同じ構造体内の「headers_in」変数から拾ってくる必要があります。

逆に、「content_type」変数からフックするモジュールができます。独自の拡張子にAddTypeして、モジュール内で自分の「content_type」かどうか判別して処理してあげればいいわけです。ネットでApacheモジュールを開発する方法を見ると、SetHandlerでハンドラを登録する方法で解説されているものを多く見るけれど、こんな処理方法もあるということで。

タグ : Apache,モジュール

2010/08/14 07:40:10 | Trackbacks (0) | Comments (0) | Technology

Apacheモジュール開発

Free Pascal最近はPHPをやめて、ウェブシステムをネイティブコードのApacheモジュールで開発しています。

まぁネイティブコードと言ってもPascalですけどね!! しかもFree Pascal (笑)。みんなにバカにされるんだろうなぁ、そんなもんで開発すんな!ってね。まぁほら、使わないと発展しないどころか廃れちゃうじゃん? 世の中ネイティブコードがC/C++だけとか面白くないし。ちゃんとメジャーなプラットフォームでコンパイルできるし、64bitも吐けますから。Object Pascalって軽く使うだけならメモリとか意識しないですむし、オブジェクトとかスコープの概念が理解しやすいなど、メリットもあると思うんだよね。このあたりは言語宗教だね。

ま、いずれにせよ、もうかなりの時間かけて環境とかライブラリ作っちゃってるし、後戻りできないよねー。

で、肝心の性能。単純にHello World返すだけならPHPとネイティブコードだとあまり動作スピード変わらないんだけど、オブジェクトとかガリガリ使ってくるとやっぱりネイティブの方が速いみたい。

個人的にはメモリ管理が出来るのがよい。どこでメモリを開放する/されるか知っているのでなんか安心。開放し忘れのリスクはあるけれど、try..finally使ったり生成と破棄のコードを同時に書くなど注意するようにしている。あ、そうそう、文字列処理とかリストの処理はメモリ管理ができたほうが実行速度速いね。基本的に文字列やリストの操作ってのは内部的にはメモリの再確保なんで、ネイティブなら先にガバッとメモリ確保するなどそのあたりでメリットがある。

あとは、変数の宣言と型指定があるのが良い。PHPのようにどこでも変数が現れて、何でも入るってのはなんか気持ち悪い。Integerの変数ならDBに問い合わせるときにエスケープする必要がないって保証できるじゃん? コードや変数は必然的に長くなるけどねぇ、個人的精神衛生のために我慢。

あれ、Apacheのモジュール作るときの覚え書き書こうと思っていたのに、思ったことを適当に書いちゃったな。マネージドやインタプリタもいいけれど、それのベース作ってるのはだれ?ネイティブじゃないの?と思う。プログラムが全部ネイティブである必要はないけれど、ネイティブも操れるくらいの方ができることの幅も広がると思うんだよね。

タグ : Apache,Free Pascal

2010/08/14 06:45:42 | Trackbacks (0) | Comments (0) | Technology

FreePascalでクロスコンパイル (再来)

いやぁ結局Linuxはダメだったんだけどね。書いておかないと忘れちゃうので。

FreePascalでクロスコンパイル (再来)」の続きを読む

タグ : 32bit,64bit,FreePascal,Lazarus,Linux,クロスコンパイル

2010/07/26 05:45:52 | Trackbacks (0) | Comments (0) | Technology

このブログを

いや、閉鎖はしませんよ。

以前ブログでもチラッと触れたSaaSes VPSに移しました。だいぶ前だけれど。これで自宅サーバーともおさらばかと思いきや、自宅PCに入り込むためにSSHサーバーのみで稼働中です。

なんか電気代とかスペックとか考えると、ここまで安いVPSにはかなわんです。そのうちSSHサーバーの機能をFONに移して稼働中の自宅サーバーは火を落とすつもり。

自宅サーバーはなんだかんだで3台くらい乗り継いできたんだよね。自宅からサーバーがなくなると思うと、なぜかさみしくなっちゃう。昼夜ともにしたあのファン音がなくなると思うと(笑)

さ、現実逃避終わり。作業にもどるかね。

タグ : SSH,SaaSes,VPS,サーバー

2010/06/24 02:40:27 | Trackbacks (0) | Comments (0) | Technology

SaaSes VPS の不要アプリケーションを削除する

この前申込んだSaaSesのVPSが開通したので、ちょこっといじってみた。とりあえずまぁユーザーの設定と不要なアプリケーションの削除をやっておいた。

ざーっと確認して削除出来そうなヤツだけ削除したんだけれど、あんまり削除できなかったなぁ。ちゃんと調べればもっと削除出来そうな気はする。参考までに追記で削除したものを列挙しておく。(他にもX系のファイルを消したかったけど依存が多くて諦めた)

SaaSes VPS の不要アプリケーションを削除する」の続きを読む

タグ : SaaSes,VPS,アプリケーション,サービス

2010/05/01 03:50:48 | Trackbacks (0) | Comments (0) | Technology

開発コンテスト 24に参加しました

クックパッド主催の「開発コンテスト 24」ってヤツにトライしてみました。お題は「朝起きてから学校や会社に行くまでの時間をより便利にするためには」でした。あまりいいアイデアがでなかったので、自分だったらどんなモノが有ると便利かなぁと思って、思いついたものを作りました。

で、作ったものはこちら。内容としては設定した時間にアラートメールが送られてくるんだけれど、タスクを完了して完了リンクをクリックしないとひたすらアラートメールが来るもの。自分がどうも時間にルーズという悪いクセがあるので、朝決まった時間に必要なタスクを時間内にこなすのを、アラートメールにおしりペンペンされながらやろうという作戦です。

タスクが完了しないと1分毎にメールが来るのですが、実際使ってみるとこれ結構ウザいです。逆に時間を守らなければ!というときは結構使えそうだなぁと思いました。

時間制限は24時間でしたが、途中仕事したり睡眠とったりで、実質使えたのは12時間に満たなかったですかね。すぐ終わるように簡単なシステムのつもりだったんですが、なんだかんだで提出はギリギリになってました。最後の方とかは一の矢宿舎でクソ寒いなか手を震わせながら、しかも時間の迫るドッキドキな状態でコード書いてました。ま、これもいい経験ですね。今回の開発スピードを仕事にも行かせたらいいなと思います。

タグ : クックパッド,開発コンテスト 24

2010/04/24 22:54:00 | Trackbacks (0) | Comments (0) | Technology

PRODIGY 7.1XT 64bit正式対応ドライバ

デバイスマネージャパソコンのオーディオボードにはPRODIGY 7.1XTという製品を使っているのですが、これの64bit版Windowsに正式対応したドライバが出ていました。

PCを組み立てる当時、64bitに対応していてそれなりの価格でマトモなサウンドカードがこれくらいしかなかったのでBetaドライバでも使用していたのですが、2年越しでやっとこさ正式に対応してくれたみたいです。

Betaドライバの時はマスタボリュームがWindowsのMMEとバッティングしていることや、このサウンドボードのひとつのウリであるASIOが使えないなどいくつかの問題があったのですが、今回のドライバで一通り修正されているようです。

このサウンドカードはかなりオススメなのですが、価格.comでは掲載がなくなっていますね。もう販売していないのかな。性能対コストのパフォーマンスは非常に良い製品と思います。

タグ : 64bit,ASIO,PRODIGY,ドライバ

2010/02/21 21:20:18 | Trackbacks (0) | Comments (0) | Technology

ついにネットでラジオを聞ける時代が来た

まだ数は少ないですが、民放13のラジオ局がネットで同時配信を始めるようだ。

と喜ぶのもつかの間、首都圏は東京、神奈川、千葉、埼玉だけらしい。しかもお気に入りのNack5はまだ始めないようだ。残念。

IPベースでエリアを判別しているということは、視聴可能エリアのIPさえあれば良いわけだ。東京にありそうな激安VPSとかにSoftether入れて、配信元IPだけroute addすればなんとかなりそうだな、とごにゃごにゃ考えてみた。

タグ : IP,Softether,VPS,ネット,ラジオ

2010/02/13 18:08:29 | Trackbacks (0) | Comments (0) | Technology

文字コードマニア

もう3日くらい文字コードと戯れています。おかげで文字コードにだいぶ詳しくなってきました。

ISO-2022-JPについて

  • JISコードはエスケープシーケンスでASCII文字のコードか漢字のコードか切り替える
  • 一言にJISコードといっても策定されたバージョンがいくつかある
  • メールなどの普通のJIS文字を扱うなら、1997年のJIS X 0208を相手にしていればOK。
  • 第3水準、第4水準の漢字を含めたJISなら、JIS X 0213(通称:JIS2004、ISO-2022-JP-2004)を使う。
  • JIS X 0213はIANAに登録されていない(Wikipedia調べ)らしいのでメールの標準エンコードとしては使えない。
  • JIS X 0213は下位互換(JIS X 0208を包括)
  • JIS X 0213でエスケープシーケンスが増える。

Unicode(UTF-16)について

  • Unicodeも何回もバージョンアップしているんですね
  • Unicodeへの変換はアルゴリズムではできず、変換テーブルを使う必要がある
  • 変換テーブルは、Unicode Consortiumとかこちらとかにある。
  • JIS X 0213の変換テーブルはこちらなんかがヒットした
  • JIS X 0213の文字までUTF-16に変換しようものならサロゲートペアを考慮しなければならない
  • Windows VistaからサロゲートペアのUTF-16も扱っているから、プログラム書くときは結局このあたりも考慮しなければならない
  • サロゲートペアってのは4バイト(UTF-16文字*2文字)使って1文字を表す方法。Ansi文字における2バイト文字みたいなものか?(ってか結局2文字かよ!Unicodeになっても後続文字かどうかを判別しなければならないなんて...)
  • ちなみにDelphiでサロゲートペアを考慮するときはEmbarcaderoのページが役立つと思う

タグ : ISO-2022-JP,JIS,UTF-16,Unicode,サロゲートペア

2009/11/07 07:28:41 | Trackbacks (0) | Comments (0) | Technology

Delphiについていろいろ考え中

最近はLazarus使ってFreePascalでプログラム書いているのだけれど、せっかくクラスとか書いたら公開したいなぁと思うわけです。ところで、時代はDelphi 2010なわけで、Delphiで扱う文字列がUnicodeになっているわけです。そこで気にしたいのは、バイト単位で文字列を操作する部分はUnicodeとAnsiどちらでも動くようにするということ。

まぁぶっちゃけるとMIMEの処理を行いたいわけだけど、ISO-2022-JPの文字列をstringに突っ込むとどうなるんだろうとか、Base64のエンコード・デコードをしたときにデータを格納すべき変数のデータ型は?とかが、いろいろ分からないのです。データを全部TStream系とかarra of Byteか何かで処理すれば気にしなくていいんだけれど、そうすると文字列検索なんかが面倒になる。ちなみにIndyとかはarray of ByteをTBytesとして宣言して使っているっぽい。

まぁこんな感じで悶々と考えたわけだけれど、結論としてDelphi 2009以降がないとわからん!ってことであきらめました。とりあえずstringはすべてAnsiStringとして考えておくことにします。

タグ : Base64,Delphi,FreePascal,Lazarus,MIME,Unicode

2009/11/05 03:21:01 | Trackbacks (0) | Comments (0) | Technology

RARの圧縮で感動

会社のサーバーのアクセスログをずっとローカルPCへ保存し続けていたのですが、いい加減ディスクを圧迫してきたので、少し圧縮して整理してみました。

圧縮すごい!圧縮しながら思ったのですが、圧縮ってすばらしいですね!!アクセスログみたいに単調なテキストファイルの場合、元のサイズの5%くらいになります。例えば写真の例だと、最高圧縮・リカバリレコード5%で、1.2GBくらいのファイルが49MBになっちゃいます。

テキストを圧縮すればZIPやRARなど何使っても10%以下にはなるということはふつーに知っていたのですが、実際にここまで圧縮されるとちょっと感動しますね。

タグ : RAR,ZIP,圧縮

2009/11/01 22:00:27 | Trackbacks (0) | Comments (0) | Technology

CentOS5でLazarusを動かす時

Indyなどの静的リンクのコンポーネントをインストールするときLazarusの再構築が必要になりますが、そのときにいくつかライブラリが必要だったのでメモ。

  • libX11-devel
  • gdk-pixbuf-devel
  • gtk2-devel

全部yumで入るからかんたんだね!

タグ : CentOS,Indy,Lazarus

2009/10/24 02:32:21 | Trackbacks (0) | Comments (0) | Technology

FreePascalがMySQLでLIMITするとき

MySQLはSELECT文にLIMITが入っていればどんな時も結果件数を制御できた気がするんだが。例えばこんなSQL文は実行できるはず。

SELECT user_name WHERE user LIMIT 5

この文をphpMyAdminから発行してもちゃんと結果が返ってくるのに、FreePascalからデータベースドライバ経由でこれを発行しても結果が返ってこない。ってかエラーをRaisすらしない。こういう場合はどうするか。

SELECT user_name WHERE user ORDER BY user_id LIMIT 5

ORDER BY句をつけなければいけないらしい。まぁ普通はLIMITを使うときは何らか並べ替えがあって、それを一定数取り出したいときだから特に問題になることでもない。しかしながら、並び順はなんでもいいから(普通はMySQLのデータ格納順)、とりあえず一定数取り出したいなんて時はそれが使えないことになる。

タグ : FreePascal,LIMIT,MySQL

2009/10/22 17:38:51 | Trackbacks (0) | Comments (0) | Technology

現在進行中の開発案件

いま、こんな感じです。

画面

完成したら見せてもいいのだけれど、まだ見せれない部分もあるので。ぼかしつつ...。

やっとExtJSにも慣れてきた感じ。ExtJSのドキュメント見たり、ExtPascalのヘルプ見たりとあっちこっちを見ながら実装するという結構大変な作業だわ。サーバー側をPHPにしておけばよかったと何度思ったことか(笑)。

しかーし、その代わりレスポンスはめっちゃ早い!まだローカルでの接続しかしていないけれど、データベース接続してデータ読みだしたりしながらインターフェースのJavaScriptを構築してブラウザに送出するまで20msくらい(Core2 Duo 2.66Ghz / Memory 4GB / Windows Vista)。ext-all.jsを読みだすのでも10msくらいかかっているから、それの倍ちょっとで処理できている感じかな。

まだ若干マスターしきれていないのがDataStoreのあたりかな。ExtPascalでラッピングされているので、DataStoreの非同期通信をどう受け取ればいいのか調査中。

タグ : ExtJS,ExtPascal

2009/10/21 21:53:34 | Trackbacks (0) | Comments (0) | Technology

ExtPascalでオブジェクトの属性を変更するとき

ずっと2週間くらい悩まされてきたことがやっと分かりましたよ。

ExtPascal内で動的にオブジェクトの属性を設定するときは、プロパティを参照するのではなく、メソッドで設定を行わなければならない。例えばボタンの有効状態を無効にしたければ、Button.Disabled := Trueではなく、Button.disable()を呼ばなければならないということです。

まぁよく考えてみれば、純粋にJavaScriptでExtJSを使うときもメソッド経由にしないと状態を設定することができないから当然と言えば当然なんです。Delphiのようにプロパティが暗黙にセッター・ゲッター関数になったりしていないから、動的に属性を変更するときはメソッドを呼ばなければいけないんですね。

基本的にExtPascalでは生成したオブジェクトのJavaScript内での名前しか覚えていないようです。そのためExtPascal内でpublicな変数でも、直接属性を設定するとアクセスエラーになるようです。

それにしてもコードでコンポーネントを配置していくのは面倒だなぁ。DelphiのフォームビルダがどれだけUIを設計する作業を簡便化しているかよく実感できる。

タグ : Delphi,ExtJS,ExtPascal,JavaScript

2009/10/20 20:48:24 | Trackbacks (0) | Comments (0) | Technology

ExtJS 3.0のAPIドキュメント日本語版が公開されたらしい

今ハマり中のExtJS3.0の日本語APIドキュメントが公開されたようです。いやぁ本当助かります。

公開したのはxenophyという会社で、xFrameworkPXというPHPのフレームワークを開発した会社でもあります。この会社のしゃちょーさんは、僕がPHPの高速化について調べているときにたまたま見つけたブログの執筆者で、PHPやDelphiなど似たような言語を使っているというだけで、(勝手に)ちょっと注目している方です。

ということで引き続きExtPascalがんばって使い倒しますか。

タグ : API,ExtJS,ExtPascal

2009/10/17 23:55:51 | Trackbacks (0) | Comments (2) | Technology

クロスコンパイルあきらめモード

もう諦めて、ターゲットOSにLazarusインストールしちゃった。あぁ結構いいところまで行っていたと思うんだけどなぁ...。

FPCのライブラリで完結するプログラムなら前回の記事までの方法でコンパイル可能。デバッグをWindowsでやってLinux向けにコンパイルってことも可能なわけです。が、Lazarusのライブラリがうまくクロスコンパイルできないので、IndyやMySQLなどの便利なコンポーネントが使えないわけです。

コンパイル中にエラーが出るんだけれど、単純にリンクエラーとしか出ないから何のライブラリが足りなくてエラーになっているのかがわからん。コンパイラのメッセージを全部出力してみても、Linuxライブラリを読み込んでいるプログラムの内部でエラーが起こっているようで、具体的なエラーが分かんなかった。

とりあえず今回は納期があるので、クロスコンパイルはまた後日チャレンジしてみよう。本家のコミュニティー関係で質問でもしてみようか...。

タグ : FreePascal,Indy,Lazarus,MySQL,クロスコンパイル

2009/10/15 20:54:33 | Trackbacks (0) | Comments (0) | Technology

FreePascalでクロスコンパイル(続)

FreePascalは日本語の資料が非常に少ないから大変。

この前できなかったクロスコンパイルができるようになったー。これでDelphianがLinuxを制する日も近くなる。参考にしたのは公式サイトからリンクされているBuildFAQとググってでてきたBuildFAQ。後者の方がどちらかというと分かりやすい。

  • FPCのFTPサイトからbinutilsを取ってくる
  • 取ってきたファイルを展開し、fpc\[Version]\bin\i386-win32にコピー(これであっていた!)
  • fpc\[Version]\bin\i386-win32フォルダにPathを通す(Rad Studioなどの製品をインストールしている場合は、製品に付属しているmakeを使用しないように順序に注意)
  • FPCのCVSからFreePascalのソースコードをダウンロードして適当に展開
  • コンソールを起動し、展開したフォルダに入る
  • make clean
  • make OS_TARGET=linux all
  • make OS_TARGET=linux install INSTALL_PREFIX=<fpcbindir (fpc\[Version]\binなど)>

とりあえずこれでWindowsでコンパイルしたHello WorldがLinux上で動くようになった。LCLは試していないので分からないけれど、こちらもクロスコンパイル用にコンパイルが必要になりそうな予感。

タグ : FreePascal,Linux,クロスコンパイル

2009/10/14 23:05:17 | Trackbacks (0) | Comments (0) | Technology

FreePascalでクロスコンパイル

をどうやればできるのかわからん!

とりあえずBuildFAQ(リファレンス)から分かったこと。

  • FPCのFTPサイトからbinutilsを取ってくる
  • 取ってきたファイルを展開し、中身をppc386コンパイラライブラリのあるフォルダ(これがまずよくわからん、fpc\[Version]\bin\i386-win32でいいのかな?)にコピー
  • クロスコンパイル用のコンパイラをコンパイル(ココから未知の領域)

ん~、いい線まで来ていると思うんだけどなぁ。もう少しからかってみます。

タグ : FreePascal,クロスコンパイル

2009/10/09 03:25:59 | Trackbacks (0) | Comments (0) | Technology

FreePascalでSkRegExpを使う

正規表現が使えないと文字列処理が面倒です。Perl・PHPを使っていると当たり前のように正規表現を使うので、それに慣れてしまっていますね。

Delphiでプログラム書いていたころ、SkRegExpという正規表現コンポーネントを使っていたので、それをFreePascalで使えるようにしてみました。FreePascalの方が文法が厳格なので、ポインタ関連の処理で少々修正が必要です。具体的には、オブジェクトの代入時にはクラスのキャストを行う、関数変数の代入時には関数へのポインタを代入するようにする、で動くようになります。あ、あとUnitファイルをUTF8で保存し直しておかないと日本語が文字化けします。

コンパイルしながらエラーになったところ(ほとんどポインタ関連)を修正していけばいいと思います。MPLなので修正したものを再配布しようかと思いましたが、そんなに難しいことではないので自力でガンバ!ってことで。

タグ : Delphi,FreePascal,正規表現

2009/10/09 03:01:47 | Trackbacks (0) | Comments (0) | Technology

明日は学園祭準備日

学園祭当日より、準備日でしょう。

ということで、勝手に(一応企画申請はしてあるよ)学園祭企画を検索するシステムを設置しました。
http://campus.tsukuba.ch/

はい、明らかに会社資産の私的利用ですね(と言っても多少のお金はもらうけれど)。某ショップ検索システムをそのまま使って、学園祭企画の検索ができるようになっています。テンプレートはやんじゅん作。途中でシステムの仕様変更などがあったにもかかわらず、がんばってテンプレートを作ってくれました。拍手。

初の試みとして、GPSを企画の検索や目的地・現在地の表示に使用するようになっています。カーナビの簡易版みたいに使えるわけです。GoogleMapを使用しているので学内が詳細に出ているわけではないですが、初めて大学へ来る人でも大体の位置関係は分かるのではないでしょうか。

とりあえず、筑波大学の学園祭に来る方は使っていただいて、感想なんかを教えていただけると嬉しいかな。

タグ : 企画,学園祭,検索,筑波大学

2009/10/08 22:35:47 | Trackbacks (0) | Comments (0) | Pastime,Technology

FreePascal + MySQL

今日はFreePascalからMySQLへの接続をがんばってみた。

MySQLへの接続は、データベースドライバをラッピングしているコンポーネントがLazarusに付属しているので、それを利用することにする。簡単な使用方法は公式Wikiに載っているので、それ通りに実装すれば最低限は動作する。以下は若干気をつけなければいけない点。

  • 現在サポートされているのはMySQL 5.0.x。現状最新の5.1.xは接続してくれない。
  • 実行ファイルと同じディレクトリに(パスが通っているディレクトリもOKかも)libmysql.dll(Linux系ではlibmysql.soかな)をコピー
  • 日本人ならSET NAMESをしないと文字化けする。

とりあえず昨日のExtPascalと今日のMySQLを組み合わせてExtJS-FreePascal-MySQLがつながった。あとはプログラムを組んでいくだけだが、この先は世界的に見ても明らかに資料が少ない...。

と、とりあえずここまでやって、夜28時から作業し始めて(←そもそもこれが大間違い)朝が来た。

タグ : ExtJS,ExtPascal,FreePascal,Lazarus,MySQL

2009/10/05 06:10:05 | Trackbacks (0) | Comments (0) | Technology

ExtPascalへの道のり

ExtJS + FreePascalを使うためのメモ。環境はWindows Vista 64bit + FPC 2.2.2 + Lazarus 0.9.26.2 beta + ExtJS 3.0.0。

基本はオフィシャルページのGettingStartedページWebServer_Embeddedページを参考にしている。

  • lazarusをインストール(Free Pascalもインストールされる)
  • とりあえずApacheをインストールして、適当に設定
  • ExtJSをダウンロードして遊んでみる
  • [ドキュメントルート]/extディレクトリを作成し、その中へダウンロード及び展開したExtJSのファイルをコピー
  • サーバー統合型ExtPascalを構築するならIndy10をインストール
    • ダウンロード及び展開したIndyのファイルのうち、fpcディレクトリの中身をlazarusディレクトリにコピー
    • [Lazarusルート]/components/indyディレクトリを作成し、lazarusディレクトリ内のファイルをコピー
    • indylaz.lpkをダブルクリックでLazarusを起動
    • 「Package」ウィンドウの「Compiler Option」ボタンをクリックして「Other Unit Files」項目に「./」を追加(良く分からないけど、これしないとコンパイルエラーになる)
    • 「Install」ボタンをクリックしてコンパイル&インストール
    • コンポーネントタブにIndyが追加されていればOK
  • ExtPascalをダウンロードし、適当に展開
  • ExtToPascal.dprをコンパイル(このときコード内で定数(const)に代入しようとしているコードがあるので、これを変数(var)に置き換える)。コンソールアプリケーションとしてExtToPascal.exeができる
  • ExtToPascal.exeにコマンドライン引数として「[ドキュメントルート]/ext/docs/output」を渡して実行(ここでExtJSのバージョンにあったUnitファイルが作られるのかな)
  • ExtPascalSamples3.dprをコンパイルしてみる(embeddedの場合はリポジトリにあるExtPascalSamples3_embedded.lpiをダウンロードしてdprと同じフォルダにコピー&コンパイル)。
    • embeddedの場合はTIdExtApplication.Createをしているところで待ち受けポートを変更できる
  • コンパイルして出力されたExtPascalSamples3.exeを[ドキュメントルート]ディレクトリ内(extディレクトリと同じ階層)へコピーして実行してみる(embeddedの場合はhttp://[サーバー]/Home)
  • ExtJSのサンプルが表示されればOK

と、とりあえずここまでやって、夜11時から作業し始めて朝が来た。

タグ : ExtJS,ExtPascal,FreePascal,Indy

2009/10/04 07:25:17 | Trackbacks (0) | Comments (0) | Technology

MovableTypeのメモリリークが激しい

このブログはMovableTypeで動いているわけですが、これをFastCGIで使っているとメモリリークしまくりです。どうもオブジェクト内で相互参照しているみたいで、ガベージコレクションが不要なメモリを捨てられないようです。

非力なサーバーでしかもメモリも256MBしかないので、Apacheのプロセスで150MBもメモリ使われると、他のプロセスに影響が。しかもHDDになんちゃってSSDを使っているのでスワップすると余計に遅くなってしまうという。

どうするかなー、FastCGI使うのやめるか、1日に1度Apacheを再起動するか。

タグ : Apache,FastCGI,HDD,MovableType,SSD,メモリリーク

2009/09/29 15:26:10 | Trackbacks (0) | Comments (2) | Technology

プログラムの理解に自信のある人

コードレビューハンズオンというのがあるので、プログラムの読解に自信のある人は腕試しをしてみるといいかもしれません。

一応僕もどんなもんかなと思ってやり始めたのですが、30分くらいして「こんなことしている場合ではない」と正気に戻ったので途中でやめました。やるべきことをやってからじゃないと...。

ちなみに30分で差分情報 01までやりました。そこで先の長さに気が付いてやめたわけです。僕はJavaは大学でチョロっと触った程度で、Appletは無知識です。

僕の場合、プログラムの修正・カスタマイズが必要になったとき、人のプログラムはトライ&エラーで都度コンパイルしながら動作確認なので、このテストのようにコードベースだとちょっと苦手ですね。途中までやった感想を書いておくと、何を実装しているか・何をしたいのかというのは理解できるけれど、問題があるコードか否かは判断しづらそう。

10月12日まで回答を受け付けているそうなので、それまでに時間があればまたやってみよう(たぶんそんな時間ないと思うけど)。週末暇な開発者の方はぜひどうぞ。

タグ : コードレビューハンズオン,プログラム

2009/09/24 22:05:55 | Trackbacks (0) | Comments (0) | Pastime,Technology

PHP4でAjaXplorerを使う

ちょいとやぼようで、ファイルマネージャを使ってみた。

で、AjaXplorerがインタフェース機能的に優れていたので、これを使用したんだけれど、PHP4の環境ではうまく動作せず、少しプログラムを修正したので、そのおぼえがき。

動作確認環境は、PHP4.3.11とAjaXplorer2.5.2。

  • /server/classes/class.AbstractDriver.php
    ・106行目コメントアウト
    ・108-110行目コメントアウト
  • /server/classes/class.Utils.php
    ・433行目コメントアウト
    ・434行目から以下を追記
    
    		$fp = fopen(TESTS_RESULT_FILE, 'w');
    		if ($fp) {
    			if (flock($fp, LOCK_EX)) {
    				fwrite($fp, $content);
    			}
    			fclose($fp);
    		}
    
  • /plugins/access.fs/class.fsAccessDriver.php
    ・113行目コメントアウト
    ・1311行目コメントアウト

まぁ要はPHP5なコードを削除したり変更しただけなんですけどね。エラーになったところだけ修正しているから、たぶんもっと変更箇所はあると思う。とりあえず、参考までに。

タグ : AjaXplorer,PHP,プログラム

2009/08/08 21:07:20 | Trackbacks (0) | Comments (0) | Technology

mod_fcgiを入れてみた

これだいぶいいね!MTは管理画面が重いからかなり体感的にスピードアップ。検索とかもそれなりに早くなった様子。会社のサーバーでPerl使っているサーバーにも入れようかね。

タグ : MT,Perl,サーバー

2009/08/08 19:28:04 | Trackbacks (0) | Comments (0) | Technology

ということで、サーバーを回生させてみた

サーバーが死ぬ前の最後のエントリーで死ぬかもといっていましたが、やっぱり死にました。

今回は予兆を先に発見でき、最新状態をバックアップしておけたので、再セットアップもそれほど大変じゃありませんでした。

ちなみに取り出したHDDは振ってみるとカタカタ音がします(笑)。おそらく、ヘッドがディスクに着地しているんじゃないかと。

タグ : HDD,インストール,サーバー

2009/08/08 18:22:55 | Trackbacks (0) | Comments (0) | Technology

Windows Media Playerのライブラリデータベースが壊れた

Windows Media Playerのライブラリ機能を使用しているのですが、これのデータベースが壊れた模様。ライブラリには評価の項目があり、再生回数によって自動的に星の数で評価してくれるのですが、これが機能しなくなりました。僕は基本的にアルバム丸ごと再生するので、自動評価しておいてくれると、前回どこまで再生したかわかりやすいんですよね。

壊れちゃったのは仕方がない。削除してしまいましょう。%AppData%内のMicrosoft\Media Playerフォルダを削除します。

ライブラリがスッキリ消えます。評価もリセット。上記を実行する場合は自己責任で。

タグ : Media,Player,Windows,ライブラリ

2009/07/05 17:28:38 | Trackbacks (0) | Comments (0) | Technology

La Fonera 2.0販売開始したらしい

今日はFONいろいろいじっていたのですが、その途中でLa Fonera 2.0が販売開始したことを知りました。だいーぶ前にUSBポートがついたものができそうだ、ということは知っていたのですが、その後すっかり忘れていました。

今回は機能盛りだくさんですね。NAS、USBカメラ、プリントサーバーなどUSBがついてだいぶいろいろな使い方ができるようになりました。FONのWikiによると将来的にはリピーターモードも実装されそうな予感で、前の記事に書いた悩みも解決してくれそうですね。

だがしかし、お値段的に手が出ませんね(笑)。6,980円じゃぁ普通のルーターと変わらないし。普通のFONでもいじれば機能つけられるからあえて2.0を買う必要もないな・・・。7月9日までは5,980円の割引価格で買えるようなので、気になる人はチェックしてみるといいかもしれません。
FON LA FONERA 2.0 (ラ・フォネラ2.0) FON機能搭載 無線LANルータ FON2202E

タグ : FON,USB,リピーター

2009/06/27 01:49:56 | Trackbacks (0) | Comments (0) | Technology

FreeWLANでリピーターモードを使うときのおぼえ書き

FON機能を残しつつリピーターモードを入れたかったので、FONをごにょごにょしてFreeWLANを入れてみた。気をつけるべき点があったのでおぼえ書き。

  • 上流側のネットワークをブリッジするわけではない。よって、DHCPで配布するIPを上流側のネットワークアドレスと重複しないよう指定する。
  • リピーターモードにすると、WAN側のインターフェースが上流側の無線インターフェースに付け変わる模様。よって、アクセス制限を「Public>WAN」「Private>WAN」ともに「allow」に変更する。
  • リピーターモードはAdvanced>Internet Connectionで「Mode」を「WLAN(QRM)」を選択する。
  • リピーターからFON_APの電波は出ない(FON機能残せない?でもFONがアクティブなのは通知している)。FON_APの無線インターフェースを上流側に使用しているのかな?(詳細は調べていない)[2009/06/27 00:05追記] FON_APの電波も出てました。しかしながら、どうもDNS関係の不具合で認証画面にアクセスできず。下の項目でも書いているが、FONのDNSサーバーうまく機能していないためと思われる。nslookup使っても名前解決できないことを確認。なにか設定が違うのだろうか・・・、わかるひと通りかからないかなぁ。
  • DHCPで配布されるDNSサーバーはデフォルトでFON自身のIPだが、それを使用しても名前解決ができない(どこか設定が違うのだろうか)。面倒なので、/etc/dnsmasq.confの最終行に以下を追加。OpenDNSのサーバーIPをDNSで配布するように指定。
    dhcp-option=6,208.67.222.222,208.67.220.220

タグ : FON,FreeWLAN,QRM,リピーター

2009/06/26 19:54:52 | Trackbacks (0) | Comments (0) | Technology

ついでだから携帯回線について

Softbank回線はくそ。ほんと使えないヤツ。

電話している途中に会話が切れることは普通。電波が非常に不安定。

Docomoは他のキャリアに比べて少し高い部分もあるけれど、お金払っているだけのことはある。Docomoのサービス品質になれてしまうと、Softbankとか回線事業者としてどうなの?って思ってしまう。

値段はウソつかない。特にインフラに関しては。

タグ : Docomo,Softbank,品質,回線,携帯

2009/06/21 18:31:43 | Trackbacks (0) | Comments (0) | Technology

Google Developer Day 2009へ行ってきた

もう2週間近く前のおはなしですが。

で、早速戦利品。
タオル・Android・マスク

  • Android端末(!)
  • タオル
  • マスク(ネタ?)

一番の目玉は、Google Androidの端末でしょう。サプライズプレゼントがあることは聞いていましたが、まさかケータイくれるなんて。太っ腹だねGoogle。スマートフォンとかあまり興味がなかったけれど、もらっちゃったら何か開発してみたくなるよね。さすがGoogle、開発者の心理読んでます(笑)。

このAndroidはSIMロックがかかっていないので、どこのキャリアのSIMカードも使えるようです。日本ではDocomoとSoftbankの回線が使えるようです。ちょうど、Developer Dayの前日に会社用のSoftbank携帯が支給された(なんてタイムリー)ので、そのSIMカード指して使ってます。
Softbankの回線

ちなみに、支給された携帯は社員との無線用途(笑)なので、電話専用。スマートフォンのネットは高いので、無線LAN拾えるところじゃないとAndroidの恩恵を受けられません(笑)。

それでも、無線LAN使えるところでは便利だね。IMAPとか使ってメール受信できるので、ちょこっと会社のメールチェックしたり、またはGoogleカレンダーで予定をチェックしたりするのに便利。インターネットブラウジングも携帯にしてはスムーズなのでなかなか使いやすい。ただ少し何点なのは文字が打ちにくいこと。やはりタッチパネルは文字打つのには不向きだね。あと、僕みたいに手汗がひどい人はすぐタッチパネルが汚れます。

ということで、Developer Day(の戦利品)のお話でした。こんな豪華なプレゼント貰えるならまた来年も行こうっと。来年は参加の競争率も高まりそうだね。

タグ : Android,Docomo,Google,SIMカード,Softbank,無線LAN

2009/06/21 17:12:58 | Trackbacks (0) | Comments (0) | Technology

第3回 Web2.0マーケティング フェアへ行ってきた

昨日は「第3回 Web2.0マーケティング フェア」を見に行くために、ビッグサイトへ行ってきた。

最近のウェブサービスのトレンドはクチコミ・CMS・モバイルなのかな。それ関連の出展社が多かった気がする。ウェブマーケティングではメール配信と顧客データベースの提供が多いかな。

目だった革新的なサービスはあまり無かったかなぁ。ほしいと思っているサービス・仕組みもフリーのモノを組み合わせればできてしまうものが多かったような気が・・・。もしくは買うまでもなくつくってしまえるものとか。まぁ各社どのような商品を売りたいのかという思考が伺えて、アイデアはマネできるのでその点では勉強になったな。

タグ : CMS,Web,クチコミ,ビッグサイト,マーケティング,モバイル

2009/05/16 15:23:16 | Trackbacks (0) | Comments (0) | Technology

つくばの電子パーツショップ

抵抗1本のためにアキバへは行ってられないでしょー。

最近の機械は抵抗が全部チップ抵抗になっちゃって、分解してもふつーの抵抗は見当たらない・・・。つか、トランジスタもひらべったいチップになっていて感動した(いつの時代の人だよ)。

で、どうにかつくば周辺で電子部品が手に入らないかなぁと思ってネットを調べてみたんだけれど、それらしい情報はなし。1件だけブログで昔石丸のあたりにあったお店が、篠崎にあるということを書いていたんだけれど、それも何年か前の情報で、今お店があるのか・・・。ダメ元で行ってみたら電子部品売ってました。

お店(というか会社)は株式会社キットさん。場所はつくば市篠崎962-3です。昔は「とむ's」という名前でお店をやっていたそうですが、今はそのお店は閉鎖し、本業の会社だけになっているようです。昔お店に置いていた部品は会社横のコンテナの中にしまわれてあり、会社の事務所に声をかけるとコンテナを開けてくれます。本業はハーネス・ケーブルの製造のようで、電子パーツ製造元とのかかわりもあるため、取り寄せにも対応(送料はかかるよ)してもらえるようです。

自分が行ったときは社長の奥さんと思われるおばちゃんが対応してくれたのだけれど、お話し好きな人でした。最近は部品を買いに来る人がめっきりいなくなってさみしいよ、と言ってました。研究の部品集めに利用されてみては。

タグ : つくば,パーツ,部品,電子

2009/04/14 00:38:11 | Trackbacks (0) | Comments (0) | Technology

キワモノはドライバ探しが大変

ちょいと必要があってヤフオクでUSB-Serial変換器を買ったのですが、64bit環境のドライバが添付されていなかったため、ドライバ探しが大変でした。

結論としては以下のURLのドライバが使えました。

USBデバイスのドライバはVID(ベンダーID)とPID(プロダクトID)が一致するものを探せば良いです。デバイスマネージャの詳細タブのどこかにVIDとかPIDって文字列があるので、該当する値を手掛かりにすることができます。

タグ : PID,Serial,USB,VID,ドライバ,変換器

2009/02/24 04:38:57 | Trackbacks (0) | Comments (0) | Technology

腐ってもSeagate

HDD買いました。1TB。
HDD

会社のサーバーのアクセスログなどはすべてローカルのPCに移動しておくのですが、毎月1GBくらいづつ増えるのでHDDが足らんくなってきちゃいました。ちなみに、残り3GB(笑)。古いの消したり圧縮したりすればいいのですが、いずれにせよデータが増えていくことに変わりないので、ストレージを増やしておくことにしました。

メーカーはちょいと前に問題になったSeagateです。思うに、いくらアクセス不能になるとは言えデータがなくなるわけではないし、ファームウェアのアップデートで解決するんだから、以前と変わらない品質が期待できるのではないかと。Seagate以外のHDDはあまり使ったことがありませんが、それでもSeagateが一番安心できる気がする。何せ7年前に買ったSeagateの40GBはいまだに問題なく稼働しているからね。同時期くらいのMaxtorとかは何台か逝っているし。

とりあえず取り付けは明日でいいや。取り付けたらデータ整理しないと・・・。

タグ : HDD,Seagate

2009/02/09 01:55:42 | Trackbacks (0) | Comments (2) | Technology

Googleを支える技術

Googleを支える技術 - 巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)
西田 圭介
4774134325

6seseさんに借りた本なんだけれど、何ヵ月借りているんだよ!ってくらいずっと読んでいなかった本。2章くらいまでその後忙しくなって数ヵ月、やっと読み終えました。ってか読み終わらせました。

Googleを支える技術」の続きを読む

タグ : App,Google

2009/01/17 22:00:43 | Trackbacks (0) | Comments (0) | Book,Technology

KNOPPIXにOpera

一個前の記事で書いたUSBのKNOPPIXですが、その中にOperaを入れました。やっぱりブラウザは使いなれたものが一番なので。

KNOPPIXはDebian系なのでDebianのインストーラパッケージがそのまま使えるのですが、KNOPPIXへ普通にインストールしてもメモリディスク上にインストールされるだけなので、再起動するときれいになくなります。

再起動しても残るようにしたい場合は、/home内にインストールする必要があります(もちろん「継続的なKNOPPIXディスクイメージの作成」をやってないと残りませんよ)。Operaのダウンロードページに「TAR.GZ形式でダウンロード」というオプションがあるので、これをダウンロード。インストールスクリプトで「./install.sh --prefix=/home/knoppix」とオプションを付ければOK。

インストールすれば普通に使えるんだけれど、フォントがきたないのでフォントも変更してあげます。フォント設定ウィンドウに「文字別フォントボタン」があるのでそれをクリックして、CJK記号と日本語のフォントをIPA Pゴシックとかに変更すればキレイな文字に。

こんな感じで快適なOpera on USB-KNOPPIXライフが楽しめます。

タグ : KNOPPIX,Linux,Opera,USB

2009/01/17 21:42:40 | Trackbacks (0) | Comments (0) | Technology

USBメモリにLinuxをインストールしてみた

USBメモリにLinuxをインストールしてみました。ブラッディ・マンデイに触発されたとか、そんなハズありません。きっと。
USBメモリにLinux

4GBのUSBメモリを2GB(Windowsからも参照できる通常のメモリとして)+1GB(Linuxインストール用として)+1GB(/home用として)にパーティション切ってみました。使ったUSBメモリはハギワラシスコムの黒いヤツ。LinuxはベーシックなKNOPPIXを採用。ネットにある解説を適当に見ながらインストールしてみました。

インストールは非常に簡単でした。しかもWindowsなんかより格段に早いし。ま、ほとんどファイルコピーするだけだから当然っちゃー当然なんだけど。

ちょっとハマった点として、ASUSのマザーボードでUSBメモリからブートするようにBIOSを設定するときは、Boot Device Priority項目でRemovable Deviceを優先順位上げるのではなくHard Disk Drive項目でUSBメモリを既存のHDDより優先順位上げるように設定してあげないといけないみたいです(わかりにくい説明だな・・・)。要はUSBメモリもHDDの一つとして扱われているということです。

これで他人のパソコン使い放題・覗き放題だな(実際にやってはいけません)。どうせみんなBIOSにパスワードとかかけていないから、ブート順位変えればUSBメモリから起動し放題だぜ。

久々に熱中することやった気がする。昔はこんな風にパソコンいじったりプログラム書くことに熱中したりしたのになぁ。仕事になっちゃうとだめですな。

タグ : KNOPPIX,Linux,USB

2009/01/17 20:23:34 | Trackbacks (0) | Comments (2) | Technology

カニ飯・カニ刺・カニ汁

カニ飯・カニ刺・カニ汁を食べました。

材料費1,000円くらいのご飯。まぁたまにはそんな贅沢もいいでしょ。
カニ飯・カニ刺

タグ : カニ刺,カニ汁,カニ飯

2008/12/20 22:52:26 | Trackbacks (0) | Comments (0) | Technology

qmailで自ドメインのGoogle Appsへメール送信

今までPHPで送信したメールのエラーとか全く考えていなかった(ぉぃ!)んだけど、いざエラーメールを受け取ろうと思ったときにハマったのでメモ。環境は、メールサーバーにGoogle Apps、ウェブサーバーのMTAにqmail。

メールエージェントはデフォルトで自分のドメインのメールは自分のサーバーの中で処理しようとします。つまり、hoge.comのサーバーは[email protected]のメール配送はそのサーバーないで完結させようとするわけですね。自宅サーバーなんかだと1台で全部ウェブもメールも処理すると思われるのでこれでいいのだと思うのですが、メールサーバー切り分けていたりGoogle Appsとかでホスティングしていると問題が起こってくるわけですね。

で、どうするかというと、qmailの設定で内部で処理するドメインを解除します。qmailの設定はデフォルトなら/var/qmail/controlかな?この中のlocalsというファイルを編集して内部で処理してほしくないドメインを削除します。

これでエラーメールもGoogle Appsで受け取れます。めでたしめでたし。メールの設定とか何度もすることではないからわからんなぁ。

タグ : Apps,Google,PHP,qmail,ウェブ,サーバー,メール

2008/12/14 21:12:22 | Trackbacks (0) | Comments (0) | Technology

メモリを有効活用(?)

たまにはブログ書かないとね。生きているしるしを(笑)。

Linuxのイメージファイルをダウンロードしたときの図。
メモリを使いまくっている

OperaのBitTorrent機能を使ってダウンロードしたんだけれど、ダウンロード開始前のメモリの使い方が半端ない。こいつはダウンロードを開始する前にファイルサイズ分の領域をメモリに確保しようとするのだろうか。

タグ : BitTorrent,Linux,Opera,メモリ

2008/12/08 00:42:57 | Trackbacks (0) | Comments (2) | Technology

SSHのログがひどいことに

サーバーのハードディスクの音がいつもより多いなぁと思って、調べてみたらSSHのアクセスが大量に・・・。そういえば最近外からSSHアクセスできるようにルーター設定したなぁ。1日で20MBのログファイルが出来上がってました(笑)。

rootで直接ログインはできないし、ユーザーも僕のだけだから突破されることはないと思うけれど、かなりウザイ。ということで、ルーターのポートフォワーディングつかって22番以外のポートを使うようにしました。

効果てきめん、すげー静かになった。っていってもポートスキャンされたらどのポート使っているかわかっちゃうな・・・。

タグ : SSH,ルーター

2008/11/17 01:10:28 | Trackbacks (0) | Comments (0) | Technology

Opera Software The Web Seminarへ行ってきた

戦利品。赤いTシャツはなかなかきれないなぁ。情シスTシャツと同じ場所に収納したら赤と青のコントラストが(笑)
戦利品

話の半分はWeb標準化だったかな。Operaは機能やスピードだけで他のブラウザにブラウザに対抗するのではなく、Web標準ということをちゃんと視野に入れて開発されているということがよくわかった。講演者も言っていたけれど、Webページ作成するときはOperaかFireFoxで先に作成して、あとでIEでも動くように修正するのが良いね。

新しく知った機能としては、Opera XML StoreとDragonflyかな。DragonflyはFireFoxのFireBugみたいなもの。存在は知っていたんだけど、使い方がいまいちわからなかったので使っていなかった。が、いつの間にか日本語にも対応していて、今後はHTTPパーサー(プログラム開発の時に便利!)も搭載されるようで、今後はデバッグにDragonflyが使えそうだ。Opera XML Storeはウィジェット用のオンラインストレージなんだけど、自分でウィジェット書けば好きなデータを保存できるらしい。これでプロファイルをコピーするウィジェットでも作るか。

Operaの中の人にも会えたし、なんかプレゼントももらえたし良いイベントだったと思う。

タグ : Dragonfly,Opera,Web標準

2008/11/05 19:18:29 | Trackbacks (0) | Comments (0) | Technology

Opera Software The Web Seminar

というイベントが大学で開かれるようです。一応学生向けのセミナーのようですが、社会人も参加できるようなので行きます。

考えてみればOperaを使い始めて5年くらい経つんだなぁ。使い始めたころはバージョンが7だったような気がします。当時はまだシェアウェアで、フリーで使うためには右上にバナー広告が出ていましたからね。IEとは比べ物にならないくらい描画速度が速くて、非力なPCでは重宝してました。

最近はいろいろなブラウザが高速化してきて、Operaの速度がダントツとはならなくなってきましたが、これだけ高機能でカスタマイズができるのに、処理速度を落とさないでいられるのもすごいなと思う。

ま、とりあえずどんな話が聞けるのか楽しみですね。

タグ : Opera,セミナー

2008/11/04 01:54:48 | Trackbacks (0) | Comments (0) | Technology

64bit は難しい

Vista 64bit版を使っているのですが、64bitというのはなかなかくせ者ですね・・・。

  1. ドライバの関係でVistaにしてから昔使っていたUSBラジオチューナーが使えなくなる。
  2. チューナー放置。ネットラジオに乗り換え。
  3. ラヂオつくばが開局。仕事の関係もあるので聞きたくなる。
  4. ドライバを何とかしてみようかと考える。
  5. 本を読んでみた。ネットを散策してみた。
  6. 挫折。
  7. User Mode Driverなるものがあることを知る。
  8. ネットを散策してみる。お、これならいけそうかも!
  9. WDK(Windows Driver Kit)をダウンロード。
  10. 「64bitでは動きません」
  11. そうですか、すいませんでした。
    1. タグ : 64bit,umdf,vista,wdk,ラヂオつくば

      2008/11/03 18:15:36 | Trackbacks (0) | Comments (0) | Technology

地デジチューナーも進化

いやぁ素晴らしい製品が出ますよ。PT1。今後のアプリケーション類の発展に期待。個人的には署名付きの64bitドライバとFriioUtilのようなシンプルなビュアーを求む。

Friioもいつの間にやら進化していたんですね。最近のビュアーだとB-CASカードがなくてもネットワーク上のB-CASカードから複合化できるようです。それと署名付きの64bitドライバも出たようです。早速インストールしてみたら、署名の強制を解除しなくてもFriio使えるようになったよ。

PT1の今後の発展次第では乗り換えだなぁ。パソコンでデジタルWOWOWが見れるようになる日もそう遠くないかも。

タグ : B-CAS,Friio,PT1,地デジ

2008/10/24 17:26:15 | Trackbacks (0) | Comments (0) | Technology

1眼レフ

今年の学園祭は主にカメラマンやってました。1眼レフ難しいねぇ。昼間だとキレイな写真撮れるんだけどね。夜はピント合わせるのと手ぶれ押えるのが大変。コンパクトデジカメに比べればいい写真が撮れたなぁと思っていたけれど、ちうちうの写真と見比べてへたっぴなのを実感。まだオートピクチャーモード多用なので、しぼりやシャッタースピードを調節できるようになりたいです。

がんばったビデオカメラの図。
ビデオカメラ

なお、撮影した写真はダウンロードできるようにしますので、近々MLへ流します。

タグ : 1眼レフ,ピント,手ぶれ

2008/10/15 02:28:13 | Trackbacks (0) | Comments (2) | Technology

これはよい教科書

LPI-JapanというところがLinux標準教科書というのを出したみたいです。

情報学類の1年生で習う範囲くらいですかね。途中コマンドの説明ばかりだけれど、よく使うコマンドが並んでいるのでまぁアリか。

LinuxやMac触り始めの人はサクッと目を通してみる価値はあるかもしれません。

タグ : LPI-Japan,Linux,Mac,教科書

2008/09/24 21:52:15 | Trackbacks (0) | Comments (2) | Technology

「Delphi 6 プログラミングバイブル」が安くなっている

Delphi 6 プログラミングバイブル
篠原 慶 光田 秀
4844316346

中古で6,000円。いや、決して安い金額ではないのだけれど、絶版になってからプレミアがついて値上がりしっぱなしだったのが、最近安いのが出品されたようです。2年くらい前に買ったときでさえ9,000円でしたから・・・。

Delphi使いならこの本は持っていて損はないと思います。だいたいプログラミングで困ったらネットで検索するか、この本を読みます。すでに2009の話題が出てますが、この本でも十分事足りると思います。Delphi 6以降IDE中身の革新はあるかもしれませんが、プログラミングスタイルというか概念というか、できることは大幅に変わっていないように感じているからです(Delphi 6から使い始めたのであいまいですが)。実際Rad Studio 2007を使っていますが、いまだにこの本は手放せないですね。

ちょっと本の内容に触れておくと、対象はDelphiの基礎をそれなりにおさえている人。初心者向けのように手とり足とりではないです。その代わりDelphiでできることがまんべんなく書かれています。VCL、DB、COMなど。

Delphiってなにさ!?とかこれからDelphiでプログラミング始めるって人は「はじめてのDelphi」がお勧め。ま、僕がDelphiを始めたときの本なんですけどね。Hello, world!にぴったりの本。プログラムってifやループでつくるんでしょー?ってくらいの知識があれば、この本を通して基本的なWindowsアプリは作れるようになっちゃいます。Delphi 6 Personalがフリーで配布されてダウンロードしたけれど、どう使っていいやらって時にこの本に助けられましたねぇ。

とりあえずDelphianなら「Delphi 6 プログラミングバイブル」買え。他の言語使っているならDelphiつかえ!.netもいいかも知れないけど、やっぱりネイティブアプリが作れた方がいいしね。

タグ : Delphi,プログラミング

2008/09/16 02:15:08 | Trackbacks (0) | Comments (0) | Book,Technology

サーバー交換について

おうちが静かになったよ!

サーバーが液晶が壊れたIBMのThinkPadになりました。スペックは前使っていたのとほとんど変わらないんですが、何より静かさがケタ違い。布団に入ったときのファンのノイズが聞こえなくなった!そとの虫の鳴き声がよく聞こえるよ!

タグ : IBM,ThinkPad,サーバー

2008/09/08 14:58:35 | Trackbacks (0) | Comments (0) | Technology

モデム交換について

Yahoo!BBの対応かなり良くなったね。むかーし、Yahoo!BBの提供エリアになってすぐのころ、実家でYahoo!BBを申し込んだとき、ADSLが使えずカスタマーセンターに電話した時はオペレータが出るまで30分もかかったものです(遠い目)。それに比べて今は休日でも10分ほどの待ち時間になりました(ええ10分待つんです・・・)。それと、モデムが壊れていそうだってことですぐモデムの交換に対応してくれて、休日発送もやってくれるんだから昔に比べれば、かなりのサービス向上ですよ。

とりあえず今回の件でYahoo!BBの昔の悪い印象は緩和されたかな。あとは電話の待ち時間がなくなるといいよね。

タグ : ADSL,Yahoo!BB,対応

2008/09/08 14:49:04 | Trackbacks (0) | Comments (0) | Technology

モデム交換・サーバー交換・サイト再構築

なんぞをやっていました。

ちょいと前からサーバーを交換することは考えていたんですが、ついでならMovableTypeも最新にして、そうするとテンプレートも使えなくなりそうだからサイト再構築して・・・ってな具合にいろいろ新しくしてみた。

んで、土曜日にサーバーを差し替えようとモデムの設定をごにゃごにゃしてたらモデムが壊れたと(笑)。なんかルーティングテーブルが壊れちゃったかなって雰囲気。Y!BBのサポートセンターに電話したらリモートでリセットしてくれて、ネットはつながるようになったんだけど、ポート転送ができなかったり、モデムの管理画面に入れなかったりで、モデム交換することに。

さっきモデムが届いて、設定し直して、サーバー差し替えて、サイト公開して、現在にいたる。

タグ : Yahoo!BB,サーバー,モデム

2008/09/08 14:14:24 | Trackbacks (0) | Comments (0) | Technology

« Pastime | Top | Hodgepodge »

  • Top
  • Software
  • Blog
  • Laboratory
  • Profile
Search
Feeds of Blog
Archives

Copyright © 2004-2023 Ana-Kutsu All Rights Reserved.