2008年10月31日金曜日

Docomoのパケホーダイダブルでパケット代を節約

地下鉄の広告で気付いた「パケホーダイダブル」。

今までCoTV開発のためにパケホーダイを契約していましたが、月の携帯代がばかにならない・・・。
もともと携帯でWeb閲覧をしないので、CoTVの開発をしないときはほとんど使ってないも同然。実際パケホーダイを契約する前は月額3000円ぐらいで済んでいた。

なのでパケホーダイダブルの広告を発見したときは速攻でプラン更新。

これでちょっとは携帯料金節約できそう。

ちなみにパケホーダイダブルは他のキャリアでもお馴染みの段階的なパケット定額制。パケホーダイのままの人は変更した方がよいと思う。

2008年10月30日木曜日

電池(充電池)を買うならeneloop(エネループ)でエコ

古くなったマウスを新調するために調べてたら、最近はeneloop(エネループ)という充電池があって、繰り返し使えるから電池内蔵型より「電池が切れて動かん」というのがなくていいみたい。

eneloopの長所と短所はwikipediaがわかりやすい。

wikipediaにも書いてあるけど、買うときに注意したいのはeneloopは初期型と次期型があって、初期型にはeneloopのに®の文字がない。

ここで写真付きで詳しく書かれているので、買いに行く前にチェック。

もう少し詳しくなりたい人はここPanasonicのパナループと性能比較しているので参考に。

充電器は単3と単4を両方充電できて便利。

今使っている電池を使い切ったら、eneloopに切り替えよう・・・。

ちなみに買ったマウスはlogicoolのMX-1100。eneloopで快適に動いています。電池1個でも動くので重さはそれほど感じない。5mぐらい離してもちゃんと動いてくれるから素敵。

プリンタも新しくエプソンのEP-901Aに変えて、今年分の物欲は満たした感じ。

suganuma@エクスブリッジ

2008年10月29日水曜日

IPアドレスの範囲を示す表記方法

ネットワークの設定をするときによく出てくる「192.168.1.0/24」とかの表記方法。
これはIPアドレスとサブネットマスクをまとめて表現する記法。

Classless Inter-Domain Routing(CIDR:サイダー)というらしい。

詳しくはwikipedia@ITの記事で。

よく使うのだけメモ。

表記 範囲 含まれる個数
192.168.0.0/16 192.168.0.0 - 192.168.255.255 65,536
192.168.0.0/24 192.168.0.0 - 192.168.0.255 256
192.168.0.0/29 192.168.0.0 - 192.168.0.7 8
192.168.0.0/31 192.168.0.0 - 192.168.0.1 2
192.168.0.0/32 192.168.0.0 - 192.168.0.0 1

2008年10月28日火曜日

オープンソースなフラッシュ(SWF)形式のプレーヤーFlowPlayer

FlowPlayerはGPLで配布されているFLV形式の動画を配信するためのFlash形式のプレーヤー。Flash形式なのでAdoveのFlash Playerをインストールしておけばブラウザ上で動く。

以下、特徴

  • オープンソースなため改変することが比較的容易
  • ライセンスはGPLなため、改変して頒布(はんぷ)する場合はソースコードも付けないと駄目。GPLについては前の記事を参考に。
  • サムネイル画像、シンプルな表示、さまざまなオプションで制御可能。この辺は実際に見た方が早い。ここで。
  • フルスクリーンにするとFlowPlayerのロゴが表示される。商用ライセンスにすると非表示になる。

オプションの意味などは本家のサイトを見た方が詳しく載ってますが、英語が駄目な人はこことか参考になりそう。

動画配信といえばHELIOS.CoTV

2008年10月27日月曜日

【.NET】ClickOnceの開発メモ

.NET Framework2.0から利用可能になったClickOnceという技術。.NET Framework1のころはノータッチ・デプロイメントと呼ばれていた。

一言でいうなら「簡単にアプリケーションの配布・更新をするための技術」。

ClickOnceの基本的なことやノータッチ・デプロイメントの違いについては@ITの記事を参照。

以下開発で必要になって調べたときのメモ。

ApacheでClickOnceのアプリケーションを配布するための設定。

ClickOnce起動時にWebアプリケーションと連携するためにパラメータを渡す方法。

ClickOnceを配布(発行)するときにサードパーティ製のdllなどを付けて配布する方法

MSDN Online スタート・キット(ソースコード付き)

2008年10月24日金曜日

Solaris10にsambaを設定

Solaris設定シリーズのsamba編。

インストールモジュールはSunfreeware.comからGetする。そこにncurses, popt, readlineも必要と書いてあるので、これらもダウンロード。

デスクトップ環境をインストールしてあれば、コンソールでFirefoxを使ってダウンロードすれば楽。適当なフォルダに置いてダブルクリックで解凍。それぞれ順番にインストールしていく。 bashをインストールしとくと作業効率が全然違う。前の記事を参考に。

# pkgadd -d popt-1.14-sol10-sparc-local
# pkgadd -d ncurses-5.6-sol10-sparc-local
# pkgadd -d readline-5.2-sol10-sparc-local
# pkgadd -d samba-3.0.25a-sol10-sparc-local

これだけだと起動スクリプトが見つからなかったので、Source Codeもダウンロード+解凍。
# cp packaging/Solaris/samba.init.master /etc/init.d/samba
# chmod 744 /etc/init.d/samba
# vi /etc/init.d/samba BASE=/usr/sfw に変更。

次はsmb.confを設定。
# cp /etc/sfw/smb.conf-example /etc/sfw/smb.conf
# chmod 744 /etc/sfw/smb.conf
smb.confの設定方法は前の記事を参考に。

ユーザの追加
# /usr/sfw/bin/pdbedit -a root

samba起動
# /etc/init.d/samba start

2008年10月23日木曜日

Solaris10のSSHを設定

Solaris10にSSHを設定して、リモートでアクセスできるようにしたときのメモ。

Solarisのインストールの仕方は前の記事を参照。

SSHはデフォルトでインストール済みなのでrootでログインできるように設定ファイルを編集
# vi /etc/ssh/sshd_config
PermitRootLogin yes
にする。

sshのデーモンを再起動
# svcadm refresh ssh

svcadmの詳細は
# man svcadm
で見ると詳しい説明が参照できる。ただTera Termで閲覧するときは文字コードをEUCにしないと文字化けが起こる。

IPアドレスを確認したいときは
# ifconfig -a

名古屋でプロのSEを目指す

2008年10月22日水曜日

Solaris10の端末エニュレータをbashにする方法

ここでVMware Server 2.0にSolaris10をインストールしてみましたが、あまりに端末エミュレータが使いにくかったので、bashをインストールしたときのメモ。

CentOSなどのLinuxを使っているとデフォルトでインストールされているので、違和感なく使えますが、bash(補完機能とコマンド履歴など)がないCUIはこんなにも使いにくかったのかと再認識。

bashはTabでコマンドの補完機能やパスの補完を行ってくれて、矢印キーで過去の実行したコマンドの履歴を表示してくれる。詳しくはwikipedia

インストールの仕方はここを参考に。

Sunfreeware.comの左からbashを選択し、ダウンロード。ほかlibiconvもインストールした方がいいみたいなので、これもダウンロード。Solarisでデスクトップ環境をインストールしていれば、Firefoxでデスクトップにダウンロードしといて、ダブルクリックで解凍できるので便利。

解凍後は
$ pkgadd –d <パス>
でインストール。

ファイル名にsparcという文字があるけど、VMwareにインストールしたx86のSolarisでも動いた。

軽量、軽快なPHPフレームワーク「petitwork」

2008年10月21日火曜日

pingとpathpingとtracertでネットワークを調査

windowsのcmdを使ってネットワークを調査したときのメモ。

まずホストまで到達できるか確認するためにping(wikipedia)を打つのは基本。
ただホストによってはセキュリティの理由からpingが使っているICMPに応答しないのもある。

次にどんな経路でホストにたどり着いているのか調べるのがtracert(トレースルート wikipedia)。
経由しているルータの一覧と応答時間が表示されるので、どこで時間がかかっているか(どこのルータがおかしいか)が分かる。

詳しくは@ITの記事を参考に。

さらにwindows2000以降ではpingとtracertを拡張したpathpingというコマンドがある。
これはホストにたどり着くまでの経路とパケットの損失率を表示してくれるけど、tracertで十分なような気が。詳しくは@ITの記事を参照。

あと、pingを使って簡易的にネットワークの速度を調査する方法も見つけたのでメモ。

ping -l 10000 exbridge.jp

とすると10000バイトのパケットを送信して帰ってきた時間が分かるので

(10000 × 2) ÷ 応答時間 = 回線速度

と計算できる。詳しくは@ITの記事を参照

専用ツールを使わなくてもある程度のことは分かる。

ネットワークを調査するためのソフトもそのうち調べてみよう・・・
前に書いた記事

suganuma@エクスブリッジ

2008年10月20日月曜日

VMware Server 2.0にSolaris10をインストールしてみた

システムの動作確認のためにSolarisの環境が必要になったので、VMware Server 2.0にSolaris 10をインストールしたときのメモ。

Solaris10はSunのページからユーザ登録してダウンロード。

VMware ServerではSPARC(スパーク)に対応していないので、x86用をダウンロードする。

あとはVMware Serverで新規VMを追加するときにSolarisを選択して、いつものようにインストールすればできるはず。細かい手順を知りたい人はこことかを参照。

注意点としては、新規VMをインストールするときに割り当てるメモリを640M以上じゃないとGUIでインストールしている最中で止まる・・・実際に止まった。テキストインストールだと大丈夫らしい。

インストール自体は2時間くらいかかった。

こっからCoTVが動作するか確かめなきゃ。

<2008/10/20 追記>
デフォルトでルートのディスク容量が5.4GBぐらい割り当てられるけど、インストール直後で既に3.6GB使用しているので、初期の割り当てるディスク容量を増やした方があとで困らなくて済む。
容量を確認するコマンドは
$ df -h

動画配信といえばHELIOS.CoTV

2008年10月17日金曜日

クライアントに保存されているDNSキャッシュを削除する

DNSを変更したけど、なかなかクライアントのマシンが切り替えたIPに名前解決してくれない場合は
C:>ipconfig /flushdns
を実行してDNSのキャッシュを削除してみましょう。

それでも駄目な場合、外部のnslookupサービスを使って名前解決できるか試します。こことか。(本当はこっちが先)

軽量、軽快なPHPフレームワーク「petitwork」

2008年10月16日木曜日

【.NET】クライアントアプリで非同期の処理(通信)を行うには

.NET Framework 1系のころは非同期で処理を実行するためにはデリゲート(delegate)とスレッド(Thread)を理解しないとプログラミングできなかったですが、.NET Framework 2.0からはBackgroundWorkerというコンポーネントが追加され、簡単に非同期の処理が記述できるようになりました。

.NET Framework 1系はここを参考に。

BackgroundWorkerのサンプルプログラムは@ITの記事を参考に。

非同期処理の基本はMSDNの記事をまずは熟読。

ちょっと難しい・・・

デリゲート(delegate)については、ちゃんと理解したいので、また調べるかも。

環境は.NET Framework 2.0, Visual Studio 2005, VB.NET(ASP.NET上ではない)

suganuma@エクスブリッジ.jp

2008年10月15日水曜日

【.NET】Enterによるフォーカス移動とTabなど特殊キーの制御

クライアントアプリの開発でキーボードの入力を制御するためのメモ。

環境は.NET Framework 2.0, Visual Studio 2005, VB.NET

Enterキーでタブ(Tab)キーみたいにフォーカス移動するのは@ITの記事を参考にSelectNextControlを使えばできる。

ただ記事で紹介しているフォームのKeyDownをhandleするやり方は特殊キー([PageUp][PageDown][Esc][Tab][カーソルキー])の入力をhandleしてくれないこともあるみたい。

そんなときは別の@ITの記事を参考にProcessDialogKeyをOverrideすればいいみたい。紹介されているサンプルコードをフォームのクラスにそのまま記述すればO.K.

特殊キーの動きを自作するには

Protected Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean
  Return True
End Function

としといて、フォームのKeyDownイベントで頑張る。

KeyDown, KeyUp, KeyPressの違いについてはMSDNで。

名古屋のおもしろ会社エクスブリッジ

2008年10月14日火曜日

【VB.NET】フォームに別のフォームを動的に挿入する

Web(ASP.NET)のフレームのように左にメニューを表示させて、選択したメニューによって右にコンテンツを表示させるやり方。

環境は.NET Framework2.0, Visual Studio 2005, VB.NET(ASP.NET上ではないよ)

メニューはTreeViewを使って作成。フレームはSplitContainerで。
・・・というか「追加」→「Windowsフォーム」→「エクスプローラフォーム」を選べば、いろいろコントロールが配置されている。

TreeViewのAfterSelectイベントで次のようにコントロールを埋め込むことが可能。ここを参考に。

Dim objForm As Windows.Forms.Form = Nothing
objForm = New Form1
'Panel2にフォームをセットする
Dim objPanel As Windows.Forms.SplitterPanel = Me.SplitContainer.Panel2
objPanel.Controls.Clear()
objForm.TopLevel = False
objPanel.Controls.Add(objForm)
objForm.BringToFront() '最前面に
objForm.Show() ' 表示
objForm.Dock = DockStyle.Fill '親フォームにサイズを合わせる

名古屋のおもしろ会社エクスブリッジ

2008年10月10日金曜日

.htaccessと.htpasswdで簡易ユーザ認証

webで公開しているディレクトリにパスワードをかけて閲覧を制限する簡単な方法。

制限するディレクトリに.htaccessを作って、以下のように記述

AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Secret Area"
AuthType Basic

require valid-user

<Files ~ "^.(htpasswd|htaccess)$">
    deny from all
</Files>

詳しい説明はここを参照。

次に認証ユーザとパスワードを登録。
$ htpasswd -c /var/www/.htpasswd user

パスワードを聞かれるので認証パスワードを入力すると/var/www/.htpasswdファイルが作られ、暗号化した状態でパスワードが保存される。

追加するときは
$ htpasswd /var/www/.htpasswd user

Apacheのドキュメントも参考に。

.htaccessを読み込むためにはAllowOverrideをALLにしないといけないので忘れずに。詳しくはApacheのドキュメント

 

< 2011/08/10 Modified >
localhostからは参照可能にしたい場合は次のようにする

Order Deny,Allow
Deny from all

AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Secret Area"
AuthType Basic

require valid-user

Allow from localhost 127.0.0.1
Satisfy Any

<Files ~ "^.(htpasswd|htaccess)$">
    deny from all
</Files>

2008年10月9日木曜日

【.NET】Webアプリのようにセッション(session)を使いたい。app.configの設定

Webの場合、ログインしたユーザの情報はsessionに格納してアプリケーション内で使い回しますが、クライアントアプリケーションの場合どうやってやるのか調べたメモ。

環境は.Net Framework 2.0, Visual Studio 2005, VB.NET

ここに全ての答えが。

app.configというアプリケーション構成ファイルに設定を記述することができるみたいです。My Projectを開くと設定という項目があるので、ここに設定する値を記述すると自動でapp.configが作成されます。

image

参照するときは
sUrl = My.Settings.AURORA_URL

sUrl = My.Settings(“AURORA_URL”)

設定するときは
My.Settings.AURORA_URL = “http://aurora.exbridge.jp/”

My.Settings(“AURORA_URL”) = “http://aurora.exbridge.jp/”

ローカルのファイルに保存されるため、起動時に毎回ログインし直す場合などはアプリケーション終了時にクリアする処理が必要。

2008年10月8日水曜日

【.NET】従来型のArrayListとジェネリックなDictionary

.NET Framework2.0で新しく追加になったジェネリック(Generic=一般的な、汎用的な)という機能のメモ。

ジェネリック機能についての説明は@ITの記事を参考に。

簡単にいうと、より汎用的に使えるようなクラス(機能)。

使うことが多いArrayListやHashTableにジェネリックなクラスが新たに用意されています。

従来型 ジェネリック 説明
ArrayList List 可変サイズの1次元リスト
Hashtable Dictionary キー/値ペアのコレクション

この辺も@ITの記事で詳しく書いてあるので参考に。

従来型のHashTableは値が全てObject型となっていましたが、Dictionaryはインスタンス化するときに値の型を宣言する必要があります。
Object型の場合、なんでも格納できるので便利なような気もしますが、取り出して使用するときに明示的に型の変換をしないといけないので、効率的ではないようです。MSDNにも値をObject型以外にした場合、Dictionaryの方が速いと書いてありました。ここ

ケースバイケースだと思いますが、今後は積極的にジェネリックな機能を使っていった方がよいようです。

名古屋でプロのSEを目指す

2008年10月7日火曜日

【.NET】Visual Studio 2005でPostgreSQLに接続する

VB.NETでクライアントアプリケーション作ってますが、Visual Studio 2005でPostgreSQLに接続するためのメモ。

ODBCを使ってもよいですが、クライアントに設定しないといけないので.NET用のデータプロバイダ(Data Provider)が提供されていないか検索したら、やっぱりありました。ODBCを経由しないから、こっちの方が速いはず。

Npgsql .Net データプロバイダ

PostgreSQL8.3.3からはスタックビルダがついていて、これを利用するとNpgsqlも簡単にインストールできますが、PostgreSQL8.3.4の段階では、まだNpgsql v1.0.0でした。

image

これだと参照設定しても利用できなかったので、たぶん.Net Framework2.0だとNpgsql2.0以上を使わないと駄目なんじゃないかな? ここから最新バージョンをダウンロードしてきて、適当なフォルダに保存します。 C:\Program Files\Npgsql\2.0\ とか。

そして、Visual Studio 2005のプロジェクト→参照の追加で参照タブから Npgsql.dll を選択すれば使えるようになります。My Projectの「参照」で編集可能。

Imports Npgsql

Public Sub test()
     Dim conn As NpgsqlConnection = New NpgsqlConnection("Server=192.168.0.1;Port=5432;User Id=user;Password=pass;Database=hoge_db;")
     conn.Open()
     Dim command As NpgsqlCommand = New NpgsqlCommand("select name from user where id = 2", conn)
     Dim sResult As String = command.ExecuteScalar()
     MessageBox.Show(sResult)
     conn.Close()
End Sub

日本語が文字化けするというのをメーリングリストなどで見たことがあるけど、今のところ大丈夫そう。

PHP用DB接続支援ライブラリ「somfa」

2008年10月6日月曜日

【Linux】findして見つけたファイルを削除する

コマンドで下位階層まで検索して、見つけたごみファイルを削除する方法。

たとえばvssver.sccをきれいに削除する場合は
$ find -name vssver.scc -exec rm -f {} \;

findについてはここのサイトを参考に。

軽量、軽快なPHPフレームワーク「petitwork」

2008年10月3日金曜日

OpenSSLで認証局(CA)を構築・・・の前に理解しておくこと

Apache+mod_sslでSSL通信をしベリサイングローバルサイン(ジオトラスト)でサーバ証明書を取得しインストールすることはやったことはありますが、サーバ証明書を発行する認証局を自分で構築してしまえばベリサインにお金払わなくてもいいんじゃねぇと思って調べたメモ。

まず認証局(CA, Certification Authority)となるのはOpenSSLがインストールされていれば、どのサーバでもなることは可能。
ただし、私がやりたいのはIEなどでエラーがでない証明書を発行する認証局の構築。これはWebTrustという制度(審査)に合格しないと駄目らしい。
3ヶ月ごとに行う厳正な監査らしい。(もちろん個人では無理)

WebTrustに合格すると世界的に認証局として認められて各ブラウザに「信頼されたルート証明機関」として登録される。

つまりベリサイングローバルサイン(ジオトラスト)で取得したサーバ証明書をインストールするとエラーとならないのはブラウザが既にその認証局を信頼しているから

↓IEのインターネットオプションからコンテンツを選ぶと見ることができます。

image

ちなみにシェアはベリサインが53%、グローバルサインが25%、その他22%(wikipediaより)。

グローバルサインの方が安い・・・。
ただ携帯電話用のサーバ証明書を取得する場合、古い携帯電話のブラウザだとベリサインしか信頼してないのもあるらしく、グローバルサインの証明書だと閲覧できない機種が出てきてしまいます。
ベリサインは高いんですけど・・・。

次回は実際に認証局の構築と証明書の発行とインストールをやってみる予定(いつになるか分からないけど)。

動画配信といえばHELIOS.CoTV

2008年10月2日木曜日

【VB.NET】URLのパスを結合するメソッドCombine

VB.NETでローカルのパスを結合する場合、Path.Combineを用いますが、そのWeb版。

VirtualPathUtility.Combine

というのが絶対URLと相対URLを結合してくれます。

やり方はASP.NETでない場合、参照の追加でSystem.webを追加して
Imports System.Web

sUrl = VirtualPathUtility.Combine(“/”, “test.php”)

という感じ。
※.Net Framework 2.0以上

本当は
sUrl = VirtualPathUtility.Combine(“http://hoge.jp/”, “test.php”)
とやりたかったけど、これだと「有効な仮想パスではありません。」と怒られるので

VirtualPathUtility.AppendTrailingSlash

を使って

sUrl = VirtualPathUtility.AppendTrailingSlash(sUrl) + “test.php”

とやることにしました。

軽量、軽快なPHPフレームワーク「petitwork」

2008年10月1日水曜日

【VB.NET】アプリケーションからJSON形式でサーバと通信する

VB.NETのクライアントアプリケーションでWEBサービスにアクセスしてJSON形式のデータをデコードしたときのメモ(ASP.NET上ではない)。

開発環境は.NET Framework2.0 Visual Studio 2005

方法としては次の2通り

どっちを使うか迷いましたが、「ASP.NET 2.0 Ajax Extensions」は.NET Framework3.5から標準搭載されるようなので、こちらを使うことに決定。

両者の速度の違いなどがここのブログに書いてあるので一読しとくといいかも。

ASP.NET 2.0 Ajax Extensionsここから「Download ASP.NET Extensions v1.0」をクリックしてダウンロード。
その後、インストーラからインストール。

Visual Studio 2005では「プロジェクト」→「参照の追加」→「System.Web.Extensions」を選択して、次のをimportsしとく

Imports System.Net 
Imports System.Text 
Imports System.Web.Script.Serialization

サンプルコードは次のような感じ。

Dim sTargetUrl As String = "http://hoge.com/webservice/" 
Dim objWeb As WebClient = New WebClient() 
Dim objSrializer As JavaScriptSerializer = New JavaScriptSerializer() 
Dim objEncode As Encoding = Encoding.UTF8 
Dim bResult As Byte() = objWeb.DownloadData(sTargetUrl) 
Dim sJson As String = objEncode.GetString(bResult) 
Dim objHash As Hashtable = objSrializer.Deserialize(Of Hashtable)(sJson)

JavaScriptSerializerについてはMSDNを参考に。

HTTPのGETメソッドを発行するサンプルコードはここを参考に。

<2009/03/04 追記>
クライアントアプリケーションからjson形式のデータをポストするときの注意点。

.NET側でobject形式をSerializeメソッドを使ってjson形式に変換するときにHashTableが入れ子になっているとうまくシリアライズされないみたい。
Dictionary(Of String, Object)
だと大丈夫だったのでジェネリックなクラスを使う癖をつけた方がよさげ。
詳しくはMSDNを参照

Related Posts Plugin for WordPress, Blogger...

Blog Archives