スキップしてメイン コンテンツに移動

投稿

2008の投稿を表示しています

2008年最後の投稿

今日は12月31日。大晦日。 そんな2008年最後の日に、この1年を振り返ってみる。 このブログをはじめたのは2008年2月の事。プログラムに関することをブログで書くという事はいろいろ悩んだ部分もあったけど、公に晒すというのは良い刺激にもなって思い切ってはじめてよかったと思っている。来年はもっと投稿のペースを上げたい。 勉強会に参加するようになったのも、おなじく2月。9月には懇親会にも参加して会社以外の人と話をする機会もあった。今後も参加していくつもり。 Googleが提供していた3D仮想世界Livelyで遊んで、いろいろな人に会った。残念ながら今日で終わってしまうが、ここで出会った方々とは今後もどこかでお会いできるでしょう。 こうしてみると、現実・ネットともに多くの人との「出会い」の1年だった。 来年もどうぞよろしくお願いいたします。

Pythonはじめる

2008/12/3(現地時間)に、Python3.0がリリースされた。 http://www.python.org/download/releases/3.0/ この機会に本気でPythonを勉強してみようと思う。 早速インストールしてみる。インストーラは上記URLのページから。Windowsの場合は「Windows x86 MSI Installer (3.0)」か「Windows AMD64 MSI Installer (3.0) 」のどちらかを選択。ダウンロードしたものを実行してクリック、クリック。 今回はLinuxへのインストールに挑戦してみる。同URLから「Gzipped source tar ball (3.0)」を選択してダウンロードし、展開する。展開後はソースからのインストール。インストール先は/usr/lib/python3.0を指定した。 $ tar xvzf Python3.0.tgz $ cd Python3.0/ $ ./configure --prefix=/usr/lib/python3.0 $ make $ sudo make install インストールの最後には、以下のようなメッセージが表示された。既にバージョン2.xがインストールされているなら、フルインストールはお勧めしない。 * Note: not installed as 'python'. * Use 'make fullinstall' to install as 'python'. * However, 'make fullinstall' is discouraged, * as it will clobber your Python 2.x installation. インストールが成功すると、/usr/lib/python3.0/bin/配下にバイナリpython3.0 があるので、それを実行する。するとインタラクティブモードで起動する。 Python 3.0 (r30:67503, Dec 4 2008, 22:58:26) [GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2 Type "help", &quo

System.CodeDom

今回は System.CodeDom名前空間 のクラスたちで遊ぶ。CodeDomのクラスを用いるとソースコードの構成をクラスで表現することが出来る。例のごとくHelloWorldを作成してみる。 CodeCompileUnit compileiUnit = new CodeCompileUnit(); //名前空間追加 CodeNamespace sampleNamespace = new CodeNamespace("CodeDomSample"); compileiUnit.Namespaces.Add(sampleNamespace); //System名前空間をインポート CodeNamespaceImport systemImport = new CodeNamespaceImport("System"); sampleNamespace.Imports.Add(systemImport); //クラス追加 CodeTypeDeclaration programType = new CodeTypeDeclaration("Program"); programType.IsClass = true; sampleNamespace.Types.Add(programType); //メソッド追加 CodeEntryPointMethod mainMethod = new CodeEntryPointMethod(); programType.Members.Add(mainMethod); //メソッド内処理の設定 CodeMethodInvokeExpression hello = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression("Console"), "WriteLine", new CodePrimi

セキュポロ参加してきた

北海道情報セキュリティ勉強会(おもに札幌)(通称:セキュポロ) に参加してきた。セキュリティに関して他の方の話を聞く機会が今まで無かったため、とても有意義な時間を過ごせた。書いておいたメモをいくつか 基調講演:IT革命とは何だったのか ラリージャパンへようこそ。 予約後プログラムでHello World open xor die pypyencodeをさがせ 既に我々の世界は機械に支配されている? 100%技術者脳 攻撃側は情報共有がされている できる範囲で対応 例えば、PHPを避ける ゴルゴに対抗するのは無理 Webセキュリティ:開発現場の心理と現実的なWAFの運用 IISはエラー出力もブラウザへ返してしまう サニタイズ HTML Escapeの他に文字エンコーディングのチェックも必要 mod_wafful ネタのメモばかりで本題のメモが少なかったが、気にしないでおく

BloggerのFollowが日本語にも対応してた

ちょっと前にクリボウさんのTipsに、 BloggerにFollow機能が追加 されたことが紹介されていた。記事中に (今のところ、表示言語を英語にした場合のみ) と書かれている通り、このブログでは使用できないでいたのだが、先日ふと使用できることに気がついた。ブログパーツ「読者」も追加したところ、問題なく使用できた(しかし、読者数0という悲しい結果を目の当たりにしたのですぐ削除した)。 追加の手順 手順 1:「追加」ボタンを押押すと表示される。ここでURLを直接入力するか、Google Readerから指定する。 手順 2:追加した相手やその他ユーザに知らせるかどうかを指定する なお、追加したリストはGoogle Readerに「読者になっているブログ」として追加される。つまりGoogle ReaderからBloggerの閲覧リストに追加した場合は、また別途Google Readerに追加される、という。。 管理 「管理」ボタンを押すと、下の画面が表示される(手順2の公開・匿名を変更するものと思う) 「2さんのブログ」の「2」は件数だろうか。

Predicate デリゲート

配列の中から、「ある条件に一致するものを探す」ような場面ではSystem.Array クラスのジェネリックメソッドが使える。例えば Find :ある条件に一致する要素を探す Exists :ある条件に一致する要素が存在するかどうかを調べる FindIndex :ある条件に一致する要素のインデックスを取得 など。これらのメソッドの引数に Predicateデリゲート を渡す必要がある。このデリゲートには「ある条件に一致かどうか」を返す処理を実装する。 public void Execute() { string[] animals ={ "cat", "dog", "pig", "bear" }; Console.WriteLine(Array.Exists (animals, new Predicate (StartWithP)).ToString()); Console.WriteLine(Array.Find (animals, new Predicate (StartWithP))); Console.WriteLine(Array.FindIndex (animals, new Predicate (StartWithP)).ToString()); } //"p"で始まるかどうかを判定する private bool StartWithP(string value) { return (value.StartsWith("p")); } ただし、これだと「ある条件」が固定となってしまう。 条件を動的にするには以下のように変数を使用すればよいが、以下のようにExecuteメソッドの外に宣言しなければならない。 private string _condition; public void Execute() { string[] animals ={ "cat", "dog", "pig", "bear" }; _condition = "p"; Co

CLR/H Community Launch 2008 Autumnのメモ

CLR/H のCommunity Launch 2008 Autumnに参加してきた。すこしメモをとったので書いてみる。 こんなにも面白い! こんな風に作ろう!ASP.NET MVCによるサイト構築 ASP.NETとは考え方が大きく異なる URLルーティングを使用してURLも設計できる Visual StudioでMVCプロジェクトを作成すると単体テスト用プロジェクトも作られる(エディションによる) アドインのインストールにご注意(?) テストが行いやすい RailsやDjango経験者におすすめ コンセントつけ忘れにご注意 Sliverlightで業務アプリを作る"ワケ" 業務アプリプラットフォームとして見たSliverlight Silverlight2では.NETのスキルを生かせる(C#やVB.NETでも開発ができる) 配布サイズを小さくする目的により標準では配布されていないコントロールもある コントロールにコントロールを配置することも可能 Blend不便(?) テンプレートで独自UIを作る場合はプロパティのバインドが必要 Bindingクラスを有効活用すべし Blend便利 イケメン 最新データアクセス・テクノロジー〜LINQ Entity Framework〜 System.Data.Common名前空間のクラス群はEntity Frameworkでも使用されている LINQのプロバイダは自作も可能 LINQ to SQLで生成されるSQLはパラメータを使用している(インジェクション対応) メジャーリーグにはルーズソックスというチームがある Entity Frameworkで複数テーブルで構成していても、マッピングの設定を行えば更新はそれぞれのテーブルに行われる SQL Server 2008 対応のManagement Studioではインテリセンスも動く ユーザー定義テーブル型を使えばストアド引数にDataTableをバインドできる FILESTREAMストレージでファイルシステムと統合(画像などのバイナリに最適)

無限ループ

久しぶりに無限ループにハマってしまった。手順は以下。 遊んでみたくなったのでubuntu serverをインストール apt-get updateで文字化け .bashrcをviで編集 vi使ったことないので思うように入力できず emacsインストールしたくなる(emacsならなんとかなる気がする) apt-get install emacs で見つからない言われる(cdromしか見ていない模様) aptのsource.listをviで編集 手順4へ戻る どうもネットワーク設定も失敗してるような。まずはviの操作をある程度調べなければ

MyMiniCityレベル2

いつからか始めたMyMiniCityもようやくレベル2へ到達。これからは人口増やすだけではいけないらしい。 こんどは工場を発展させる必要もある。人口だけ増えても仕事がない国なんて住んでられねーすよ。 人口を増やす http://chuta-city.myminicity.com/ 工場を発展させる http://chuta-city.myminicity.com/ind 2008/09/08現在の状況 Population 人口 51 人 Revenues 財政 7900 € Unemployment 失業率 0 % Transport 交通 100 % Crime rate 犯罪 0 % Pollution 環境汚染 0 %

「クリボウの部屋」を発見。日本語入力ツールを知る。

Livelyで遊んでいると Blogger Tips で何度もお世話になっている クリボウさんの部屋 を発見。お邪魔してみた。ちょうどその時の画像が ほかの方のBlog に載っていた。 2008/07/27現在。Livelyでのチャットに日本語入力ができないのだが、そこはやはり対応するツールがあるらしい。「Lively JP Chat Tool」略してLJCT。 ここ からダウンロードが出来る。

「Lively」ベータ開始

Googleが3D仮想空間 「Lively」 のベータ版を開始したらしいので、試しにやってみた。 グラフィックボードを搭載していない、オンボードなPCなのだが、それなりに動作するのが驚いた。比較されるであろう「Second Life」はやったことなく、3D仮想空間とやらは初めてなのだが、なかなか面白い。 試しに 「Chuta's Room」 を作ってみた。中にいくつかこのエントリへのリンクも仕込んでおいた。もしLivelyから来られた方は、コメントでも残していただけると有難い。

Bloggerでトラックバックを使う

Bloggerには標準でトラックバック打つことができない。 HaloScan などのサービスを利用する必要があるらしい。 やらなきゃと思いつつ、ずっとやっていなかったがやっと取り掛かった。 クリボウの Blogger 入門: トラックバック を参考に、と思ったが新たな方法がHaloScanで用意された模様。 HaloScanでUserName、Passwordなど一通り登録 登録した内容でログイン 上部のInstallタブをクリック 「 Blogger or Blogspot ( New Version / Google Login ) 」を選んで「Next」をクリック ここで英語で手順が書かれているページが表示される。 Bloggerのカスタマイズページへから「レイアウト」を選択 「HTMLの編集」を選択 「テンプレートをすべてダウンロード」をクリックし、テンプレートファイルをローカルに保存 手順5のページで「参照」ボタンより保存したテンプレートファイルを指定して「Upload Blogger Template」をクリック 次の画面へ遷移するので、「Donwload New Template」をクリック、ローカルに保存 Bloggerカスタマイズ側で、手順10で保存したテンプレートファイルをアップロード 試しにこのブログの 最初の投稿 へトラックバックしてみる。

iGoogleから投稿

クリボウの Blogger Tips: iGoogle で Blogger 投稿ができるガジェット「Blogger Post Gadget」 を知ったので、早速使ってみる。 Blogger上で追記 ボタン押した後、「Invalid JSON format. Unescaped JSON is a not supported format for attribute or text values.」と出て何度か試していたら、すべて保存されていた。

IDE依存

プログラム始めた時に必ず書くであろう世界で一番有名なプログラム「Hello World」。最初はIDEを使わないでビルドして欲しい。これはもう時代遅れの考えなのだろうか?

匿名メソッド

C#2.0からの機能として「匿名メソッド」があるが、VBにはない。どんなものか試しに使ってみる。 using System; class anonumous { static void Main(string[] args) { GetStringDelegate d = delegate { return "Hello World"; }; Console.WriteLine(d.Invoke()); } private delegate string GetStringDelegate(); } 「Hello World」の文字列を返すメソッドは、その名の通り名前のないメソッドとなっている。

ConditionalAttribute クラス

最近必要になったので。 虫を取り除く(Debug)には殺虫剤(デバッグ用のメソッド)が必要になる場合があるが、それが製品(Releace)にも含まれていたら大変である。 デバッグ用メソッドはDebugビルドの場合のみビルドされるようにしたい そこで、属性 ConditionalAttribute を利用する。 この属性をデバッグ用メソッドに付け、conditionStringに文字列"DEBUG"を指定する。これによってこのメソッドはコンパイル定数 DEBUG を定義してビルドした場合にのみ実行されるようになる。(Visual Studioの規定ではDebugビルド時にはコンパイル定数 DEBUG が定義されている。) using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { ReleaseMethod(); DebugMethod(); } static void ReleaseMethod() { Console.WriteLine("おいしい餃子"); } [System.Diagnostics.Conditional("DEBUG")] static void DebugMethod() { Console.WriteLine("殺虫剤 噴出中"); } } } Debugでビルドした場合。 おいしい餃子 殺虫剤 噴出中 Releaceでビルドした場合。 おいしい餃子 ただし、これで出来上がった製品は殺虫剤を噴出はしないが、隠し持っている状態になる。

メモ帳とコマンドプロンプトでC#アプリケーションを作成するには

今更ながらC#をはじめようと思う。 兎にも角にもHello Worldを書いてみる。ただ書くのでは面白くないので、全くの初心者相手を想定した説明も書いてみる。 「メモ帳とコマンドプロンプトでC#アプリケーションを作成するには」 Windowsのスタートメニューより「すべてのプログラム」→「アクセサリ」→「メモ帳」を選択します。 メモ帳が起動したら、以下のコードを記述します。 using System; public class Helloworld{ public static void Main(){ Console.WriteLine("Hello World !"); } } ファイルに「 HelloWorld.cs 」と名前をつけて C:\Documents and Settings\<ユーザ名>\ に保存します。 次にスタートメニューより「すべてのプログラム」→「アクセサリ」→「コマンドプロンプト」を選択します。 コマンドプロンプトに以下の内容を打ち込んでEnterを押します。 > "C:\Program Files\Microsoft.NET\SDK\v2.0\Bin\sdkvars.bat" > csc HelloWorld.cs 何も表示されなければ、コンパイルが成功です。次のようにコマンドプロンプトに打ち込んで起動します。 > HelloWorld.exe 「Hello World !」と表示されればプログラムは正常に動作しています。

コミュニティ参加してきました。

自分もいいかげん次のステップへ、ということで先日コミュニティを知る為に CLR/H コミュニティローンチ 2008 に参加してきた。 .NET Framework 3.0以降について全く知識を持たずに行ったのだが、とても参考になった。まずは「WPF」をキーワードに勉強していこうか。