読者です 読者をやめる 読者になる 読者になる

アーキテクチャをスマートに。

株式会社ネオジニア代表。ITアーキテクトとしてのお仕事や考えていることなどをたまに綴っています。(記事の内容は個人の見解に基づくものであり、所属組織を代表するものではありません)

プログラマーに向いている人とそうでない人

一般的に、標準的な能力のプログラマと、良くできるプログラマとの能力差は何倍とも何十倍とも言われ、個人ごとの能力差が非常に激しい職種だと言われています。自分自身、この業界で10年以上仕事してきて、本当にそのとおりだな〜と身にしみて思います。逆…

VMwareとParallelsの比較

Mac

MacでVM使いたい場合に VMware Fusion 7.0 と Parallels Desktop 10 でどちらが良いか調査しました。

Mac OS X で ext4 マウントする方法(ext4fuse)

Mac

先日、諸事情によりメインマシンを Ubuntu on ThinkPad X220 から MacBook Pro に乗り換えたんですが、Mac OS X で ext4 パーティションのマウントがうまく出来なかったのでその記録。

Remminaで"|"が打てない時

先日、久しぶりに時間があったのでついに Ubuntu 14.04 LTS trusty に乗り換えました! で Remmina を使って Windows にリモートデスクトップ接続すると、"|" が打てないのでちょっとググったところ簡単に対応できたので記録しておく。

ホントにあったクソコードの話(2014年春号)

最近久しぶりに Java の開発プロジェクトに参画したので、実際にそこで見たクソコードをいくつか挙げてみます。 提示しているソースコードは、実際のソースコードをもとに出来るだけニュアンスが伝わるよう書き換えています。

SIでWebシステムやるなら Java? いやいや ASP.NET MVC でしょ

お仕事(つまりSI、企業向け受託開発)で Webシステムを開発する際に、どんなアーキテクチャにすべきか、どのフレームワーク(プログラミング言語)を採用すべきかを考えた時、最近では ASP.NET MVC が良い選択だと実感しています。ではなぜそれが良いのか、…

ブログ移行しました

これまではてなダイアリーを利用させていただいていましたが、新しいはてなブログに移行しました。 記事やスターなどもまるごと全部インポートできて、リダイレクト設定も簡単にできました。管理画面も"今風"な感じで、結構いい感じです。編集画面も使いやす…

正しい人月見積もりのやり方

ちょっと釣り気味のタイトルですが、大真面目です。 もう少し正確にタイトルを付けるとするなら、「一番マシな人月契約のやり方」といったところでしょうか。さて、IT業界の受託開発において、人月見積もりはダメだという事はいまさら説明する必要もないと思…

ネオ富豪の開催にあたって(5)プレイヤープログラムの制作〜大会終了後

ネオ爺の制作 プレイヤープログラムの着手にあたっては、当初から C++ で組んでAndroidアプリとしてパッケージングするつもりだったのでナポレオンアプリのプログラムの構造を大きく流用しました。

ネオ富豪の開催にあたって(4)追加機能

再接続対応 参加者のプログラムは、ネット経由なので通信途絶えたり、プログラムバグで強制終了してしまったりすることも想定されます。 その場合にどう対応するべきかを考えました。

ネオ富豪の開催にあたって(3)クイックプレイ〜ランディングページ

マスタサーバの実装 そんなこんなで、マスタサーバの実装にとりかかりました。 Web上で簡単に大富豪をプレイできる、というのが今回のアーキテクチャのすごいところなので、クイックプレイという機能をつけようと思いました。要するに、モバイルでもPCでも、…

ネオ富豪の開催にあたって(2)アーキテクチャが決まるまで

当初の構想 ナポレオンアプリを作った経験から、画面の構成はほとんど迷うことなく決まっていました。(なので自然と5人対戦という仕様になりました) ゲームシステムも、マスタープログラムが1つあって、そこにプレイヤープログラムがいくつもつながって…

ネオ富豪の開催にあたって(1)きっかけ

1月25日(土)に開催したプログラミングコンテスト「ネオ富豪」の開催にあたって、準備段階の構想や考えていたこと、反省点などを備忘録を兼ねて記録しました。 完全じゃないですがだいたい時系列です。日付がわかる出来事は日付を書き添えています。

ASP.NET MVC で WebSocket サーバを作る

ASP.NET MVC で WebSocket サーバを立てたくて色々調べた結果、あまり情報がなくて苦労したたのでここに記録を残します。キーワード: ASP.NET MVC WebSocket Microsoft.WebSockets SignalR

VMサーバが壊れた話

開発のVM母艦となっていたサーバがどうにも調子悪い。 VM上のLinuxで突然lsコマンドが異常終了したり、Windowsがブルースクリーンで落ちてしまったり。 そうなると、母艦のOS自体がおかしくなってシャットダウンさせようとするとフリーズしてしまう。これは…

Ubuntu 13.04 で Google Drive と同期

GoogleDrive は Dropbox や SkyDrive と同様のオンラインストレージサービスです。 あと、Ubuntu 派の人には有名な Ubuntu One ってのもありますが、Windows版の出来がよろしくないようで自分のまわりでは使ってる人みたことないです。個人的には Dropbox を…

sysdate と current_date のトリビア

あんまり役に立つことじゃないかもしれないですが、ほとんど知られてない事だと思います。Oracle の sysdate と current_date が違う日付を返すという怪奇現象です。

IIS Express で localhost 以外からアクセスする方法

Visual Studio 2012 で ASP.NET MVC 開発したとき、デバッグのためにリモートホストからアクセスする必要があったので、やり方を調べました。 検索用キーワード:IIS Express 外部からアクセス リモートアクセス 外部公開 他のPCからアクセス

ASP.NET MVC 4 ことはじめ(5)モデルと足場

ASP.NET MVC は、実はモデルに相当する部分を提供していません。既存のDBアクセス技術である Entity Framework を組み合わせて使用します。Visual Studio 2012 で ASP.NET MVC 4 のプロジェクトを新規作成すると Entity Framework 5.0 がデフォルトで使える…

ViewBagに匿名型を入れるとRuntimeBinderException

ViewBag に匿名型を入れて View 側で使おうとすると、「'object' に 'Xxxxx' の定義がありません」みたいなエラー(RuntimeBinderException)になってしまいます。開発環境は以下の通り。 Windows 7 (64bit) Visual Studio 2012 Express for Web ASP.NET MVC…

ASP.NET MVC 4 ことはじめ(4)ViewBag と ViewData

ViewBag ってなんだ? 自動生成されたビューのソースコードで、冒頭に ViewBag.Title ってやつが登場します。 この ViewBag も ViewData と同じくコントローラからビューにデータを受け渡すための入れ物として使用できます。 MVC 3 から登場したようで、Micr…

ASP.NET MVC 4 ことはじめ(3)ルーティング

ルーティングについて アクセスされたURLに対して、どのコントローラを起動するか割り当てることを「ルーティング」と呼びます。ルーティング定義は、Global.asax の Application_Start() で設定します。 ASP.NET MVC 3 までは、ルート定義をカスタマイズす…

ASP.NET MVC 4 ことはじめ(2)ビューの指定

呼び出すビューを切り替える コントローラからビューの呼び出しは、View() メソッドで行われます。引数に何も指定しない場合は、デフォルトでメソッド名と同じ名前のビューが呼び出されます。 HomeController.Index() なら、ビューは Home/Index.cshtml とい…

ASP.NET MVC 4 ことはじめ(1)Hello World まで

ネットで情報収集をしていて、ASP.NET MVC 4 の情報があまりないな〜と思ったので、学習の記録を残すことにしました。 ASP.NET MVC の基本的な考え方を、Visual Studio 2012 で ASP.NET MVC 4 を使いながら習得できるようなチュートリアル的な内容を目指しま…

Highstockスゴイ!日本語化もしてみた。

Yahooファイナンスなんかでよく見られる、株価のチャートを表示する必要があったので、jQueryプラグインで使いやすいのがないか探してたのですが、すごいクールなのが見つかったので紹介。 (あと自分の備忘録も兼ねた記録です)

phpVirtualBox を入れてみた(その2)

phpVirtualBoxのインストール

phpVirtualBox を入れてみた(その1)

phpVirtualBox ってのがあるのを今日知りました。Webブラウザから VirtualBox を操作できるWebアプリケーションです。 要するに VMware Server みたいなやつです。最近では CloudStack とかがあるからそっちの方が有名かな。 同じ種類のソフトウェアとして、…

SSDをRAID5で自作サーバ構築(その4)

RAID再構築(リカバリ) ディスクをひとつ抜いたままにしていたのを忘れていました。(汗

SSDをRAID5で自作サーバ構築(その3)

ファイルシステムのSSD向けチューニング 先人の知恵*1に従って、ext4とXFSに対してはマウントオプションを変更します。 discard SSD のTrimコマンドを有効にする nobarrier I/Oバリアを無効化する relatime *1:http://blog.kamipo.net/entry/20110816/131348…

SSDをRAID5で自作サーバ構築(その2)

OSインストール OS は Jaunty の頃からお気に入りの Ubuntu Server 12.04.02 LTS (x86_64) にしました。 まずはUbuntuのISOイメージをダウンロード。(ubuntu-12.04.2-server-amd64.iso) でインストール方法ですが、サーバ構成を見ての通り光学ドライブがな…

SSDをRAID5で自作サーバ構築(その1)

長らく更新ストップしてましたがブログ再開です。 VM用のサーバを構築したのでその時の記録です。 目的 Linux 上で VirtualBox を快適に動作させることを目指し、PCサーバを自作します。最近の一般的なPC構成で動作速度の足を引っ張っているのはディスクだと…

世界初!Pure Java で DLL - 解説編(2)

さて続きです。コード中で、実行してデバッガで追いかけてみないとわからない部分は、 long addr = 0x65f5520; ... jni.write(b ^ (byte)(addr/**//=32) & 037); // b ^ (byte)(addr>>=5) & 0x1f のあたりではないかと思います。 ビット演算の部分の解説 "He…

世界初!Pure Java で DLL - 解説編(1)

前回の記事 の解説、というかタネあかしというか、そんなんです。

世界初!Pure Java で DLL

今回はかなり独創的でトリッキーな内容です。このような試みはおそらく世界初です!Wiindows ではダイナミックリンクライブラリ(すなわちDLL)というものがありますが、これをJavaで作ってしまおう!という内容です。

もしプログラムを書かなくてもよくなったら、どうする?

もうすぐ春ですね。自己啓発も兼ねて、現場のエンジニアに向けて問い掛けをしてみようと思います。新人エンジニアにも伝わるよう、話のレベル感を配慮したつもりです。ちょっと怖い話かも。

Android NDK の C++ 開発でハマる(2)

続きです。

Android NDK の C++ 開発でハマる(1)

久しぶりにC言語でプログラミングしていて、ちょっとハマったことがありました。53種類のカードの組み合わせを表現するのに、どんなデータ構造がよいでしょうか。

gumroadのSI業界での適用可能性について考えてみた

先般、世間がバレンタインデームード一色のころ、「gumroad」というWebサービスが発表されました。 僕がそれを知ったのは発表から1週間以上たってからでした。 gumroad を簡単に説明すると、誰でも簡単にデジタルコンテンツを売買できるサービスです。 そこ…

Excelシートに入力されたテキストと画像をSQLiteデータベースに登録する(5)

UTF-8変換 UTF-8でSQLiteにデータ登録する方法を考えます。単純に FileSystemObject ではダメです。UTF-8でファイル出力できません。ADODB.Stream を使えば UTF-8でファイル出力できるようですが、BOMがついてしまうため、これを回避する必要があります。ス…

Excelシートに入力されたテキストと画像をSQLiteデータベースに登録する(4)

ちょっと脱線。SQLiteの日本語パスの取り扱いに注意 その前に、ここで一つハマったポイントを書いておきます。 sqlite3.exe を起動する際、引数に日本語が含まれたパスを指定すると、認識してくれません。

Excelシートに入力されたテキストと画像をSQLiteデータベースに登録する(3)

INSERT文でBLOBデータを登録する SQLiteで BLOBをINSERT文で扱う方法を調べてみると、16進数文字列をx''で囲って記述するとよいことがわかりました。

Excelシートに入力されたテキストと画像をSQLiteデータベースに登録する(2)

つづき。 Recordset でBLOBデータを登録する Byte() をBLOBに登録したいのですが、INSERT文を作ってSQLを実行するのでは、バイナリデータの場合ってどうなるのかな?ということがわかっていなかったので、バインド変数的なアプローチが王道なんだろうと思って…

Excelシートに入力されたテキストと画像をSQLiteデータベースに登録する(1)

Androidアプリで SQLiteデータベースを使うのですが、そのデータベースをExcelでエントリーさせたい、というのがそもそもの始まりです。DBにエントリーするデータは、短いテキストと画像の集まりです。Excelシートからテキストを抜き出すのは簡単なのですが…

Swingアプリで HTTP プロキシの自動選択がおかしい

JavaのGUIフレームワーク「Swing」を使ったアプリケーションにおいて、HTTP通信でサーバアクセスしたいときのことです。 Java実行環境(JRE 6)では、OS側のHTTPプロキシの設定があると、Java VMでもそれ基づいてプロキシを適用してくれます。 ところが、あ…

ThinkPad T60 でも thinkdan でファン制御

thinkfan ネタの続き。以前から使っている ThinkPad T60 にもThinkfan を導入したので、その時のメモ。

Ubuntu 11.10 on ThinkPad X220 でファン制御

あけましておめでとうございます。 約半年の間、諸事情によりブログを休んでいましたが、2012年になり、気持ちも新たに、ブログを再開しようと思います。まずは、Ubuntuネタ。最近仕事用に購入した ThinkPad X220 に Ubuntu 11.10 x86_64 をインストールしま…

Googleクラウドプリントを試す

突然ですが、Linux のOpenOfficeで描いた図を印刷したくなったときの話です。いつもなら PDF にエクスポートして Windows マシンで開いて印刷しているのですが、 「そういえば Google クラウドプリント」ってどうなの?と気になったので、試してみました。 …

if elseのコメントの書き方

プログラミングの話題です。 if〜else構文のコメントを書くときって、みなさんどのように書きますか? 単純 if 文の場合 単純if文の場合は、ブロックの直前に書くことがよくあると思います。例えば、C系の言語で言うと以下のような書き方です。 // ゼロの場…

共通ライブラリを使いましょう

今回も実際の開発現場での体験談です。それは携帯電話向けのシステムの開発プロジェクトでした。 僕はそのプロジェクトに製造工程の途中から引継ぎで入りました。システムの一部分として、Webアプリで電話帳やメール機能を実現している箇所があり、その部分…

マネージメントの大きな勘違い

ある受託開発プロジェクトの現場で実際にあったこと 月曜日。 小春日和で気持ちのいい朝だった。今日から新しいプロジェクトのスタートだ。メンバーは4人構成で、以下のとおり マネージャ A君(3年目プログラマ) B君(4年目プログラマ) C君(外注S…