サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
夏の料理
architect-wat.hatenablog.jp
プログラミングの話題です。 if〜else構文のコメントを書くときって、みなさんどのように書きますか? 単純 if 文の場合 単純if文の場合は、ブロックの直前に書くことがよくあると思います。 例えば、C系の言語で言うと以下のような書き方です。 // ゼロの場合 if (value == 0) { funcA(); } たまに、ブロックの中にコメントを置く人も見かけます。 個人的には好きじゃないですが、まぁそんなに目くじら立てて言うほど悪い書き方でもないと思います。 if (value == 0) { // ゼロの場合 funcA(); } if else の場合 では if else の場合はどうなるかというと、それぞれのブロック内にコメントを置くのが普通だと思います。 ブロックの直前には、if else 全体の説明となるコメントを書いたりします。 (コメントの内容はともかく、位置に注目
一般的に、標準的な能力のプログラマと、良くできるプログラマとの能力差は何倍とも何十倍とも言われ、個人ごとの能力差が非常に激しい職種だと言われています。 自分自身、この業界で10年以上仕事してきて、本当にそのとおりだな〜と身にしみて思います。 逆に、平均的なプログラマになら誰だってなれる、向き不向きなんてない、という意見もあるようですが、僕はそうではなく、向き不向きがあると考えています。 例えば、 オブジェクト指向について熱心に勉強しているものの、さっぱり理解できていなかった人 ネット上のコードをコピペする事から脱却できず、自分の書いたコードを説明できない人 簡単な設計をやらせても、アルゴリズム(処理手順)が全く思い浮かばず処理設計が出来なかった人 など、「この人プログラマに向いていないな〜」と思う人を何人も見てきたからです。 では、プログラマに向いている人ってどういう人なんでしょうか。 グ
先日、諸事情によりメインマシンを Ubuntu on ThinkPad X220 から MacBook Pro に乗り換えたんですが、Mac OS X で ext4 パーティションのマウントがうまく出来なかったのでその記録。 環境: MacBook Pro (Retina, 13-inch, Mid 2014) Mac OS X 10.9.4 ext4fuse 0.1.3 追記: 2014/08/31現在では、ext4fuseは32bitを超えるBlock numberをサポートしていないようです。テラバイト級のパーティションでは32bitを超えるので注意が必要です。自分の場合は、ファイルと同じ名前のディレクトリが見えて、ファイルを開くと謎のディレクトリを開こうとしてエラーになる、みたいな怪奇現象が発生しました。 ext4fuseのREADMEの最後に書かれていました。orz 結論 ext
最近久しぶりに Java の開発プロジェクトに参画したので、実際にそこで見たクソコードをいくつか挙げてみます。 提示しているソースコードは、実際のソースコードをもとに出来るだけニュアンスが伝わるよう書き換えています。 定番のやつ まずはやっぱり定番のこれですね。 List<String> list1 = new ArrayList<String>(); list1 = getList(); ホント多いです。こういう無駄なやつ。 コードが無駄なだけでなく、実行時にCPUとメモリを浪費するので困ったもんです。 間違い探し public final void main(String[] args) { ... main が static になってないですよ~。実行できないですよ~。 「これをベースに作っていってくれ」とサンプルコードとして提示されたコードがこんなんでした。。。。先が思いやられる。
お仕事(つまりSI、企業向け受託開発)で Webシステムを開発する際に、どんなアーキテクチャにすべきか、どのフレームワーク(プログラミング言語)を採用すべきかを考えた時、最近では ASP.NET MVC が良い選択だと実感しています。 ではなぜそれが良いのか、またメディアやネット上で流行りの他のフレームワーク、Ruby on Rails や PHP, Struts, Play, Node.js などよりどこが良いと思っているのか、実際の開発現場にいるエンジニアとして考えていることを整理してみました。 先に断っておきますが、前置きが長いです。 結論だけ読みたい方は一番最後の節まで読み飛ばして下さい。 まずはビジネス観点で まず、SI業界では Ruby や Node.js の案件はまだ見たこと無い。 何が多いかというと、汎用機を除くと Java がほとんどで、その次が .NET、それ以外は少数
ちょっと釣り気味のタイトルですが、大真面目です。 もう少し正確にタイトルを付けるとするなら、「一番マシな人月契約のやり方」といったところでしょうか。 さて、IT業界の受託開発において、人月見積もりはダメだという事はいまさら説明する必要もないと思いますが、それでも難しい大人の事情もあり、人月でやらざるを得ない場合があると思います。 そんなとき、どんな方法で見積もり(契約)するのがよいのかを考えてみました。 一番ダメなパターン 一番ダメなのは、発注元によって人月単価が決まっていて、下請け業者に工数だけを見積もらせるようなやり方です。*1 これはダメですよ。 ダメすぎます。 なぜなら、優秀なエンジニア(開発会社)ほど工数が少なくなり、逆に無能なエンジニア(開発会社)ほど工数が大きくなるので、前者の方が損をして後者のほうが得をする仕組みだからです。 こんな馬鹿な話ないですよね。 実際にこのやり方を
ASP.NET MVC で WebSocket サーバを立てたくて色々調べた結果、あまり情報がなくて苦労したたのでここに記録を残します。 キーワード: ASP.NET MVC WebSocket Microsoft.WebSockets SignalR 背景 ASP.NET MVC で WebSocket やろうと思うと、SignalR という新しい仕組みがあるんですが、これを使うとクライアント側にも jquery.signalR.js を読み込まなくてはいけなくなるので、JS以外のクライアントで使えないって事と、もっと素に近い WebSocket を扱う方法を知りたかった、というわけです。 要するに WebSocket っぽい OnOpen(), OnClose(), OnMessage() などのメソッドを書いて作っていくやり方です。 NuGetにある Microsoft.WebSoc
続きです。 答え 要するに、 1l << cardId の演算が32bitになってるわけです。 当然、cardId が 32 以上になると桁あふれし、想定外の動きとなってしまいます。 そうです。 Androidは32bit、PC(Ubuntu)は64bit、という違いです。 今回の例では、この「1l」という書き方がまずい、というわけですね。 サフィックス「l」は long 型を意味しているので、32bitか64bitかは環境依存です。 ここがC言語の怖いところです。 変数型は、stdint.h に定義されている int16_t とか uint64_t とかを使えば、環境依存せずにビット幅を決められますが、リテラルは無理です。 →これ間違いです。リテラルに対応するためのマクロが stdint.h にあるようです。INT64_C(1) と書けば 64bit になるようです。 試しに 確認のため
ASP.NET MVC は、実はモデルに相当する部分を提供していません。既存のDBアクセス技術である Entity Framework を組み合わせて使用します。 Visual Studio 2012 で ASP.NET MVC 4 のプロジェクトを新規作成すると Entity Framework 5.0 がデフォルトで使えるようになってて、いま流行りのコードファーストが出来ます。Railsパクリ(!?)のお手軽 Scaffolding もバッチリやってくれます。 この辺がすごい強力で楽チンだと思います。 Code First コードファーストなので、DBにテーブルを作る前にいきなりモデルクラスから作り始めます。 モデルクラスとは、DBのテーブルの1レコードに対応する構造体みたいなイメージです。(厳密には、DBだけじゃなくて様々なモデルクラスが考えられるので、区別のためにデータモデルのこと
GoogleDrive は Dropbox や SkyDrive と同様のオンラインストレージサービスです。 あと、Ubuntu 派の人には有名な Ubuntu One ってのもありますが、Windows版の出来がよろしくないようで自分のまわりでは使ってる人みたことないです。 個人的には Dropbox を出始めたころから使っていて、LinuxやMacやAndroidやiPhoneでストレージを共有できるので、すごく便利です。 会社では Google Apps を使ってる事情もあり、Linuxから Google Drive を自動同期できるとうれしいのですが、Google公式のLinuxクライアントは提供されておらず、有効活用できていませんでした。 今回メインPCを Ubuntu 13.04 に入れ替えたついでに Google Drive に関する情報を集めたところ、insync という便
Yahooファイナンスなんかでよく見られる、株価のチャートを表示する必要があったので、jQueryプラグインで使いやすいのがないか探してたのですが、すごいクールなのが見つかったので紹介。 (あと自分の備忘録も兼ねた記録です) Highstockってなんだ? グラフ描画のための「Highcharts」というjQueryプラグインがあるのですが、それをさらに株価チャート向けバージョンが「Highstock」という位置づけのようです。 すぐに試せるデモサイトがあるので、一度見てみると、、、スゴイです! http://www.highcharts.com/stock/demo/ 見た目もかっこよくて、カスタマイズもいろいろ出来て、IE6でもOK(試してないけど)、使い方もわかりやすそう! Very Cool !!! ってなわけで使ってみました。 使い方は、ググればいろいろ情報が出てくるのでそれだけ
ViewBag ってなんだ? 自動生成されたビューのソースコードで、冒頭に ViewBag.Title ってやつが登場します。 この ViewBag も ViewData と同じくコントローラからビューにデータを受け渡すための入れ物として使用できます。 MVC 3 から登場したようで、Microsoftは従来の ViewData よりも新しい ViewBag の方を使用するように推奨しているようです。 こんな感じです。 Controllers/HomeController.cs namespace HelloWorld1.Controllers { public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { ViewBag.MyMessage = "Hello Worl
Visual Studio 2012 で ASP.NET MVC 開発したとき、デバッグのためにリモートホストからアクセスする必要があったので、やり方を調べました。 検索用キーワード:IIS Express 外部からアクセス リモートアクセス 外部公開 他のPCからアクセス 背景 Visual Studio 2012 で ASP.NET MVC 開発したとき、デフォルトで IIS Express でホスティングしてくれるのですが、URLが http://localhost:xxxxx/ となっていて、IPアドレスでのアクセスをしようとすると蹴られてしまいます。 これを解決するための手順です。 試した環境 Windows 7 Pro SP1 IIS Express 7.5 やることは以下の3つ。 IIS Express の設定変更 URL ACL の設定 ファイアウォールを開ける 以下は、I
ネットで情報収集をしていて、ASP.NET MVC 4 の情報があまりないな〜と思ったので、学習の記録を残すことにしました。 ASP.NET MVC の基本的な考え方を、Visual Studio 2012 で ASP.NET MVC 4 を使いながら習得できるようなチュートリアル的な内容を目指します。 基本的な考え方さえわかれば、あとはググッていけば何とかなるレベルだと思うし、ASP.NET MVC 3 の情報は多いので、基本的にはそれらの情報をベースに学習していけばよいと思います。*1 対象とする開発環境 Windows 7 IE 9 Visual Studio Express 2012 for Web (Update 2) 前提知識 Visual Studio と C# での開発経験 ASP.NET、Ruby on Rails、Java 等、なんらかの Web 開発の経験 まずは H
ひょんなことからノートPCを1台入手した。 ウチには Windows マシンがVM以外に全くなくて、iPod とか Galaxy S の同期が出来なかったのと、嫁さんに使ってもらっているMacがもう古くて、動かないWebサービスが多くなってきたので、ちょうどリプレースにいいかなと思ってました。 ところがどうにも Windows XP が重く「これはイラついてやってられない」ということで、Linuxとのデュアルブートにしてみました。 ハードウェアスペック 機種 FMV-BIBLO NB50L/A CPU AMD Mobile Sempron 2600+ (1.6 GHz) メモリ 256MB HDD 60GB メモリがちょっと少ないので、軽量Linuxディストリビューションで快適なWeb端末を作ろう! というわけで Lubuntu を試してみました。 Lubuntuのインストール(失敗) L
あけましておめでとうございます。 約半年の間、諸事情によりブログを休んでいましたが、2012年になり、気持ちも新たに、ブログを再開しようと思います。 まずは、Ubuntuネタ。 最近仕事用に購入した ThinkPad X220 に Ubuntu 11.10 x86_64 をインストールしました。 しばらくしてCPUファンの音が気になり、回転数を調べてみると 約3600RPM。 特に負荷がかかっているわけではないのに、ほぼフル回転。 とりあえずファンを制御する方法 これはちょっとおかしいと思ってググッてみると、ThinkPad ではCPUファンの制御がうまく行かないという情報が。 カーネルモジュールのオプションで対応できるとのこと。 http://www.thinkwiki.org/wiki/How_to_control_fan_speed vi /etc/modprobe.d/option
突然ですが、Linux のOpenOfficeで描いた図を印刷したくなったときの話です。 いつもなら PDF にエクスポートして Windows マシンで開いて印刷しているのですが、 「そういえば Google クラウドプリント」ってどうなの?と気になったので、試してみました。 まずは調査 思い立ったが吉日。 クラウドプリントについてググってみると、ニュースサイトはいくつかヒットしたが、実際に運用している情報があまりないです。 Google公式のクラウドプリントのヘルプサイト http://www.google.com/support/cloudprint/?hl=jp によると、「Chrome の最新デベロッパーバージョンをインストールする必要があります」とのこと。 必要なのは、プリンタに接続されている Windows マシン。(接続というか要するにプリンタがセットアップされていればいい
このページを最初にブックマークしてみませんか?
『アーキテクチャをスマートに。』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く