2014年12月9日火曜日

[Windows Powershell] フォルダ内のファイルに対して文字列の一括置換をかける方法

とりあえずメモだけ。

Get-ChildItem -Path . | Select-Object 'Name' | ForEach-Object -Process {$f = $(Get-Content -Path $_.Name) -replace "置換前","置換後"; $f > $_.Name} 

上のやり方だと、ファイルの中身を全部メモリに持っちゃうので、数百MBとかGB単位のファイルがあると厳しいかも。

2014年10月9日木曜日

[Open Data] 日本政府によるオープンデータカタログサイトがオープン

2014年10月1日に、データカタログサイト「DATA.GO.JP」がオープンしたようです。
各省庁が保有しているデータに対してメタデータベースを作って、一元的に検索・参照できるようにしたシステムで、このメタデータはWebAPIとしてアクセス可能になっているようです(まだ試してはいませんが)。

海外のオープンデータサイトのように、たとえばCSVならテーブルを表示するとか、KMLなら地図を表示するとか、そういうビジュアライズの機能はありませんが、まず取り掛かりとしてこのようなサイトができた意義は大きいですね。

今後の発展に期待します。

2014年9月25日木曜日

【世界のオープンデータ】 City Dashboard Amsterdam

City Dashboard Amsterdam
http://citydashboard.waag.org/

D3.jsを駆使して、市が持っているオープンデータを可視化して、見やすくわかりやすくしています。
かなり重いのが難点ですが、オープンデータの見せ方の良い例として非常に参考になるのではないかと思います。


2014年8月27日水曜日

psqlODBCを使う上での注意点

Windowsのアプリを作るときに、PostgreSQLに接続するのにODBCを使うという例はもはやそんなに多くないのかもしれませんが、もしそういったことがあるならば、psqlODBCというドライバを使う際には注意が必要かもしれません。


psqlodbc-09_03_0100.zip をインストールした限りでは、デフォルトでコネクションプーリングが有効になっていません。このため、接続・切断を頻繁に繰り返すようなプログラムで、パフォーマンスが著しく低下する、という現象を経験しました。
(本日時点の最新版 psqlodbc-09_03_0300-1.zip でも同じでした)

コネクションプーリングを有効にする方法は次の通り(Windows 8.1)。

  1. コントロールパネルから「管理ツール」⇒「ODBC データソース(32ビット)」または「ODBC データソース(64ビット)」を選択し、ODBCデータソースアドミニストレーターを起動
  2. 「接続プール」タブを開き、リストにある「PostgreSQL ANSI(x64)」または「PostgreSQL Unicode(x64)」をダブルクリック
  3. 「このドライバーに接続をプールする」を選択して「OK」をクリック
  4. 「OK」をクリックして画面を閉じる
アプリケーションの中でコネクションを使いまわすなりきちんとプーリングしていれば、
こんな設定をしなくてもそれほど問題にはならないわけですが…。

2014年8月26日火曜日

スポーツIT勉強会に行ってきた

http://sports-it.connpass.com/event/7825/

スポーツ観戦大好きなITエンジニアとしては、これは行かないわけにはいきません。

「スポーツIT」と聞いて、当初はモーションキャプチャーとか映像分析とか、
そういったものによる体の動きの分析が中心なのかな、と勝手に思い込んでました。

しかし、実際に話を聴いてみると、そういう解析ももちろんありますが、
資料(試合映像とか)の分類とか、データの収集・分析とか、
競技スポーツでITが必要になる分野は想像以上に多岐にわたっていました。
しかも、既存の技術をそのまま使えることは少なく、新しい技術の開発が必要な場面が多いのだとか。

そういうところで少しでも貢献できればうれしいですね。

2014年5月6日火曜日

C#でFtpWebRequestを使ったリネームがうまくいかない話

最近、C#でFTPを使ってサーバー上のファイルを移動しようとしてはまりました。

ソースはこちら(例外処理など、一部を省略してます)。

    Uri uri = new Uri("ftp://...");
    string destPath = "/path/to/move"; 
    FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(uri);
    ftpReq.Credentials = new NetworkCredential(this.userName, this.password);
    ftpReq.Method = WebRequestMethods.Ftp.Rename;
    ftpReq.KeepAlive = false;
    ftpReq.RenameTo = destPath;
    FtpWebResponse ftpRes = (FtpWebResponse)ftpReq.GetResponse(); 
 
このとき、ftpReq.RenameToの値は正しい値が入っているのですが、FTPサーバーのログを見ると、RNTOに指定されているパスが壊れており、結果としてステータス550で処理に失敗します。
どうやらこちらを見ると、Visual Studio 2010と.NET Framework 4.0の組み合わせでそうなっているらしく、.NET Frameworkのバージョンを4.5にアップしたら問題は解消されていました。

2014年3月17日月曜日

[PostGIS] メートル指定の半径で円を作る方法

最近仕事でPostGISを使うようになって、いろいろと調べているので、忘れないようにメモしていきます。

円のポリゴンを作るには、ST_Bufferを使えばよさそうなのですが、ジオメトリ型(geometry)に対してST_Bufferを使うと、バッファのサイズはジオメトリのSRID単位でしか指定できません。
たとえば、WGS84(SRID=4326)の場合だと、度単位の指定になります。

そこで、こういったSRIDでメートル単位でバッファサイズを指定するには、ジオメトリ型を一度ジオグラフィ型(geography)に変換してから、ST_Bufferに与える必要がありそうです。


(例)北緯40度、東経140度から半径100kmの円を作る
select st_setsrid(geometry(st_buffer(geography(st_makepoint(140, 40)), 100000)), 4326)

2014年2月16日日曜日

Developer Summit 2014 に行きませんでした

今年のデブサミ、本当は激しく行きたかったのですが、仕事的に会場に行くのはちょっと厳しかったので、Twitterのタイムライン #devsumi と講演資料まとめを一通りチェックして、感想とかメモとかTwitterでつぶやいてTLを荒らし、参加した気になりました。

トレンド

クラウド、DevOps, ウェブ開発(HTML5を含む), スマートフォンといったところでしょうか。

このあたりは、やっぱりゲーム業界やウェブサービス業界が強いですね。開発の効率化が即収益改善につながりますからね。

SI業界は、競争はあるものの、かかった時間を顧客に請求できる性格を持つので、改善意欲としてはちょっと弱いので、どんどん差が拡がるばかりですかね。

もうデスクトップアプリ開発ネタはほとんどないのか…

思ったこと

今回のデブサミでは、エンジニアとしてどうやって成長すべきか、というテーマのセッションがいくつかあり、そのすべてにインスパイアされました。


もがきながら模索を続ける彼らの姿は本当に共感できるし参考になります。私自身、自分がどうあるべきか、そのために何をすべきかものすごく悩んでるところなので。

そんなわけで、上記4つが私的ベストプレゼンです。

それと、個人的にはもっと狭い意味で同業者の話を聴きたいので、エンタープライズに限定したデブサミ、もっと言えばSIerオンリーのデブサミなんてあったらいいなあ、と思いました。SIオワコン説も納得できるのですが、ちょっとは盛り上がりたいな、と。

そして何といっても一番の収穫は、「Twitterタイムラインを荒らす」ことによって、講演者の方から直接コメントをいただいたり、参加者の方とコミュニケーションさせていただいたりして、つながりを拡げることができたことです。これは本当にありがたいことで、ここでできたつながりは何物にも代えがたい、貴重な財産として今後も残っていくはずです。

これから読みたい本


デブサミで紹介された本で、読みたいと思った本をリストアップしておきます(自分用のメモです)。




デブサミには毎年いい刺激を受けています。今年もありがとうございました。