@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

プログラミングのためにその1

このエントリの意図 下のが、おもしろかったので真似します。 プログラミングの生産性を上げるには - Cside::Private programming - プログラムを書き続けるためにやってること - Qiita sassembla.github.io/Public/2014:05:20 22-55-22/2014:05:20 22-55-22…

TDD の Death and Rebirth まごころを君に

我が輩のTDD体験を語る 背景 ここ最近のTDDに関する話の噛み合なさっぷりよ・・・ TDDは死んだ。テスティングよ栄えよ。 by DHH 【翻訳】TDD is Fun 【TDDを再定義したほうがいいって話だったのさ】UncleBob, Martinfowler, DHHのツイートまとめ TDDという名…

JavaScriptのreduce関数が便利、けど動きが理解しづらいのでサンプルを列挙

JavaScriptのreduce関数がとても便利なのです。 たとえば ユニークはこんな感じ var unique = function(array) { return array.reduce(function(a, b) { if (a.indexOf(b) === -1) { a.push(b); } return a; }, []); }; 関数の外部に結果を格納する変数を作…

AngularJSで画面制御 ただしJavaScriptは書かない

AngularJSはモデルとビューの間のデータを自動的に同期してくれます。 モデルとは内部データです ビューはhtmlです つまりhtml上に入力した値が自動的に内部データに反映され、内部データが変更されれば自動的にhtmlも更新されます。 詳しくはリファレンスを…

My first Bootstrap

Bootstrapとは? Twitter社が作成し公開したレスポンシブデザインに対応した*1CSSフレームワークです。 あらかじめ用意されているCSSを使うと、パーツをいちいちデザインしなくても今風のおしゃれなホームページが作れます。 使い方 とりあえず試すにはCDNを…

YEOMANを使ってMEAN(MongoDB + Express.js + Angular.js + Node.js)のWebアプリケーションを作る

MEANとは MongoDB + Express.js + Angular.js + Node.js を組み合わせてWebアプリケーションを作成することです。 手順 Windows上で簡単なユーザ登録アプリケーションを作ってみましょう。 次の手順で進めていきます。 アプリケーションの雛形を作成 ユーザ…

Widnows用パッケージ管理ツール Chocolatey

Chocolateyとは? ChocolateyはWindowsのパッケージ管理システムです。 以下のツールと同じようにコマンドラインから実行してアプリケーションをインストールします。 rpm apt gem npm 例えば Google Chromeブラウザをインストールするには コマンドプロンプ…

技術力アップにつながる勉強会の選び方

要約 4つの選び方を紹介します。 これから使う技術の勉強会に参加 同じ技術の違うコミュニティの勉強会に参加 流行技術の勉強会に参加 変な人が主催する勉強会に参加 背景 「勉強会に参加しないと不幸になる話 - きしだのはてな」があります。 要約すると、…

クライアントMVCとWebMVCは何が違いますか?

主な違いは三つ クライアントMVCWebMVC コントローラーがたくさんコントローラーが1つ Viewが状態を持つViewは状態を持たない ModelからViewへの呼び出し・変更通知があるModelはViewを呼び出さない コントローラーの数 WebMVCではユーザ入力は必ずHTTPリク…

Grunt livereload でファイルを修正したらブラウザを自動リロード

livereloadとは? ファイルの変更を検知したらブラウザで読み込みなおすgrunt-contribe-watch プラグインのオプションです。 grunt-contribe-connectプラグインとブラウザ拡張と組み合わせて使います。 何がうれしいの? クライアントJavaScriptの開発では …

えぇー!MVCのContollerはプレゼンテーションロジックのinput担当だったのかい!?

この話はMVC(Model-View-Controller)の話です。 特にクライアントMVCの話です。WebMVCの話ではありません。 事前 ViewとModelを分けるためにControllerを挟むのだと思っていました。 事後 Contollerはプレゼンテーションロジックのinput担当でした。 参考…

MVC原典リンクまとめ

最近以下の記事などMVCが話題に上がります。 やはりお前らのMVCは間違っている MVCにおけるcontrollerクラスの役割は時代と共に変わって行く | F’s Garage@fshin2000 MVCがわからなくて議論についていけません*1。そこで調べてみました*2。 Gof MVCを調べる…

QUnitの概要

QUnitとは JavaScript用のTestingFrameworkです。 由来 jQueryのテスト用に作られ、今もjQuery、jQuery-UIのテストに使われています。 それ自体はjQueryに依存していませんが、テスト内でDOMを操作したりイベントを生成したりするのにjQueryを使うと便利です…

My first grunt

grunt とは? JavaScript開発でよく使うビルドツール。makeやrakeのJavaScript版です。 Grunt: The JavaScript Task Runnerにて公開されています。 どうやって使うの? コマンドラインから操作します。Node.jsのパッケージマネージャ(npm)を使ってインストー…

初めてのIO言語

プロトタイプベースといえばIO言語。 遊んでみました。 インストール インストーラーはありません。バイナリをダウンロードしてきて実行します。Windowsの場合は、 http://iolanguage.org/ のbinaries の windows からダウンロード。 iobin-win32-current.zi…

JavaScriptでSigletonオブジェクトを実装してみる

いろいろなSingletonを実装してみます。 関数 var getSingleton = (function() { var instance = null, init = function() { instance = { value: Math.random() } }; return function() { if (instance == null) { init(); } return instance; }; })(); var…

JavaScriptのパターン シングルトンパターン

定義を確認 GoFの定義したSingletonパターンの目的(Intent)は以下の二つです*1。 あるクラスのインスタンスが1つしか生成されないことを保証する そのオブジェクトへのグローバルなアクセス手段を提供する 実装例 JavaScript デザインパターンの例がいけてま…

JavaScriptのオブジェクト生成

JavaScriptには次の三つのオブジェクト生成方法があります。 プロトタイプ風 クラス風(異教徒の呪い、Fxxk your God!!!) 関数の束縛 比べてみましょう。 例に使う関数 ここに指定した文字に挨拶をする関数があります。 var hello = function(str) { return…

Douglas Crockford の説明する「JavaScriptのプロトタイプ継承」

Douglas Crockford によるJavaScriptのプロタイプ継承の説明 Prototypal Inheritance の翻訳です。 JavaScriptのプロトタイプ継承 2006-06-07 Douglas Crockford - www.crockford.com 私は五年前に「Classical Inheritance in JavaScript」(中国語 イタリア…

JavaScriptのプロトタイプ継承

JavaScriptをプロトタイプベースのオブジェクト指向言語と説明することがあります。 プロトタイプベースとはJavaScriptのどのような特徴を指しているのでしょうか? プロトタイプベースとは何か? まず最初に「プロトタイプベース」という言葉の意味を整理し…

JavaScriptのパターン オブジェクトの拡張

対象オブジェクトに複数のプロパティを一度に追加します。 以下のデザインパターンを適用する。 extendパターン 元の処理 プロパティを一つずつ設定します。 var mike = {}; mike.firstName = "michelle"; mike.lastName = "jackson"; mike.getFullName = fu…

JavaScriptのパターン コンストラクタパターン

JavaScriptのオブジェクトの生成、特にコンストラクタに次のデザインパターンを適用します。 オブジェクトリテラル 基本のコンストラクタパターン プロトタイプを使ったコンストラクタパターン モジュールパターン 最初の関数 指定された文字を指定された回…

日本の BtoC サービス勃興記

BtoCサービス勃興記 日本のBtoCサービスの雄たちの歴史を振り返ります。 要約 5年ぐらいで新しいサービスを出し続けるリクルート強すぎ 10年ぐらい既存事業を続けてから新サービスを出す会社が多い 90年代末期 非ゲーム地道勢力(カカクコム、クックパッド、…

ソフトウェア開発手法の歴史 2000年代

前回に続き、2000年代に発達したソフトウェア開発手法を振り返ります。 プログラマ向けです。 2000年代 動的型付け(Dynamic Typing) 2000年代を一言で表すと「動的型付けの時代」です。 Wikipediaより 動的型付け(どうてきかたづけ、英: dynamic typing)…

ソフトウェア開発手法の歴史 1970 - 1990年代

1970年代~1990年代に発達したソフトウェア開発手法を振り返ります。 プログラマ向けです。 1970年代 構造化手法 1967年にEdsger Wybe Dijkstraが発表した論文「Structured Programming(構造プログラミング)」が元になります。 goto禁止論の親玉であり、お…

SEMATカーネル勉強会 第2回に参加してきました #sematj

第二回 SEMATカーネル勉強会 SEAMAT勉強会のつもりでいったらパターンのワークショップでちょっとびっくりしました。 パターンが何かはパターンマイニング参考資料を見てください。 前から「フォース」がよくわからなかった、パターン形式の「フォース」。 …

ubuntuにdebパッケージインストールしたMySQL5.6をアンインストールする

前回インストールしたMySQLを設定ファイルとデータを含めて削除します。 mysqlコマンドのパスを消す sudo rm /etc/profile.d/mysql.sh 自動起動設定を消す 起動していれば終了します。 ps -ef|grep mysql sudo /etc/init.d/mysql stop 自動起動の設定を消し…

MySQL5.6をubuntuにdebパッケージインストール

apt-get でインストールできないので公式debパッケージからMySQL5.6をインストールする方法。 dpkg -i だけではダメで、ユーザやらの設定も必要。 ダウンロード Download MySQL Community Server で Platform に Debiun Linux を選択すると mysql-5.5.23-deb…

過去の技術発表のネタ

前回の勉強会エントリに「どういうネタを発表してる」のかってコメントもらったので書きます。 コメント どういうネタを発表してるんだろ / “社内勉強会はヤメだ。自主的はいらん、全員技術発表だ! - Hのキーがhellで、Sのキーがslaveだ、と彼は思った。…

社内勉強会はヤメだ。自主的はいらん、全員技術発表だ!

社内勉強会について僕にも思うところがある*1。 社内勉強会をやらない理由 - 勘と経験と読経 社内内弁慶を社外勉強会に参加させる方法: ソフトウェアさかば 最初に言っておくと弊社は20人くらいしか居ないし、受託開発と派遣が半々くらいのSIerだ。 id:kent4…

JMeterで一定間隔でテストを実行する

負荷をかける際に一定の間隔をあけて負荷を掛けたいことがあります。 たとえば、NICTの公開しているNTPサーバにはHTTPインタフェースでは ポーリング間隔は1時間平均で20回(あるいは1日平均で480回)を越えないようにしてください と注意書きが記載されていま…

JMeterで変数を定義する

試験対象のサーバーが二台ある場合など、シナリオの一部を変数として変更したいことがあります。「ユーザー定義変数」コンポーネントを使って変数を定義します。 今回は google.co.jp と google.com の二つのURLで検索を実行します。異なる部分(co.jpとcom…

デザインパターンとともに学ぶオブジェクト指向のこころ

この本はいいね。表紙の堅苦しさに比べたら全然難しくない。 対象 オブジェクト指向プログラミングの三大要素 カプセル化 継承 ポリモーフィズム を知っている人、できればそれを使ってコーディングをしたことがある人が読むと良い。 内容 オブジェクト指向…

JMeterの見た目を見慣れたものにする

JMeterの見た目の初期設定はMetalです。フォントが読みづらいのでルック&フィールを変更して見やすくします。 前提 JMeterを起動していること。 起動できない場合はJMeter を起動するを見てください。 手順 手順説明 初期設定のルック&フィールを確認します …

JMeter の多すぎる機能(サンプラー)を減らす

JMeterは機能が多すぎるため使い慣れるまではどの機能を使えばよいのか迷います。使わないサンプラー(リクエストを送るコンポーネント)を無効にします。 前提 JMeterを起動していること。 起動できない場合はJMeter を起動するを見てください。 手順 手順…

JMeter でテストを実行する

JMeterでYahoo!JAPANのトップページを取得するHTTPリクエストを生成します。具体的には http://www.yahoo.co.jp にHTTPのGETリクエストを送ります。 使用コンポーネント 「HTTP リクエスト」サンプラー 「結果をツリーで表示」リスナー 前提 JMeterを起動し…

JMeter を起動する

JMeterの最新版を取得して起動します。 JMeterとは (主に)HTTPリクエストを送信する負荷試験ツールです。以下の点が好まれています。 Javaで作られているためWindows、Linux、Mac、いずれのOSでも動く リクエスト生成機能がプラグインになっていて、対応し…

Git for Windowsを使ってWindows PCに個人作業用リポジトリを作る

個人作業でチームのリポジトリにはコミットできない、かといって仕事用のソースコードを書きたいのでインターネットに公開できない、 githubを使いたくない。 そんな時もリポジトリを構築してバージョン管理をしたい。そこで Git for Windows を使ってWindow…

デザインパターン厨よ、これが黄金の回転だ

状態管理用の変数をインスタンスに持たせるなこのタコって話 に面白い機能追加とリファクタリングの例がありました。TDDに慣れ親しんだ身からすると、 「黄金の回転のリズム」 テストを書く テストが通る最低限のコードを書く リファクタリング に比べると、…

JavaでMimeUtilライブラリを使ってファイルの中身からデータ形式を判定する

ファイルのデータ形式(MIMEタイプ)を拡張子からではなく、ファイルの中身で判別したいことがある。 JavaではMimeUtilというライブラリが使える。 準備 JDKはインストール済みで、binディレクトリにパスが通っている前提。 本体 http://sourceforge.net/pro…

Windowsに複数バージョンのRubyをインストールする

Windows上に複数バージョンのRubyの動きを確認する環境を整えます。 RubyやRailsのバージョンにこだわらずに最新のRuby on Railsを使ってみたいならRails Installerを使った方が簡単です。 Rubyのインストール RubyインストーラーでRubyを入れる。 http://ru…

RhinoまたはAntでJavaScriptを複数ファイルに分けるために

JavaScirptには別のファイルに書かれたスクリプトを読み込む方法がありません。しかしスクリプトファイルが大きくなると複数のファイルに分けたくなります。 別のスクリプトファイルを読み込む(includeする)方法が必要です*1。 次の file1.js を読み込みま…

AntからJavaScriptを実行したときに起きたエラーを拾う方法

Apache AntではScriptタスクを使うとJavaScirptを実行できる。 しかしJavaScriptで例外が上がると、表示される内容の9割以上がRhinoScriptEngineの例外になる。 興味があるJavaScriptの例外は一行だけ。 例外が起きるbuild.xml <project default="a"> <target name="a"> <script language="javascript"><![CDATA[ throw 'わあ!';</script></target></project>…

JavaScriptの値が配列かどうか見分ける方法のまとめ

JavaScriptには配列に typeof 演算子を使うと object が帰ってくるという糞仕様があるためみなさん苦労されている。 Douglas Crockfordさん Douglas CrockfordさんのDuckTyping方式。JavaScript: The Good Parts 「6.5 配列かどうか」より抜粋 var is_array …

Javaのスクリプティング機能のimportPackage文の書き方

Java スクリプティング機能とはJavaからJavaScriptを実行したり、JavaScriptからJavaのクラスを参照したりする機能。 詳しくはJava SE 6 じゃじゃ馬ならし Scriptingを見てもらうとして JavaScriptからJavaで定義されたクラスを参照する際にパッケージをimpo…

タイムゾーンの出力文字列 WindowsでRuby

Rubyでタイムゾーン文字列を出力したら日本語が表示された。 C:\Users\ledsun>irb irb(main):001:0> Time.now.strftime('%Z') => "東京 (標準時)" Rubyリファレンス タイムゾーンによると、Windows*1の場合「環境変数TZ」を設定すると「JST」と出力されるそ…

pik環境でDevKitをインストール WindowsでRuby

pik*1環境でrdocインストールしたところjsonのインストールでエラーが起きました。 >>ERROR: Error installing json: The 'json' native gem requires installed build tools. Please update your PATH to include build tools or download the DevKit from …

DAOの詳細設計 C#編

J2EEパターンから始まって今となっては一般的になったDAOパターン、の詳細設計。 DTO DTOは更新時間、更新ユーザ以外のテーブルカラムをすべて持たせる。 カラム名とプロパティ名を対応させておくとINSERTとUPDATEのSQLを動的に生成できて楽。 マスタメンテ…

JavaScript殺法 11のリファクタリング

JavaScriptを書いていてぶち殺したくなった時によく使うリファクタリングです。 1.定義順を整理 JavaScriptパターンの5.4.1 モジュールパターンの開示を参考に、var、処理、API公開の順に並べなおす。 function () { //宣言 var hoge = 'hoge', fuga = ''; /…

RDBMS マスタテーブルの論理削除

マスタテーブルの論理削除ってどっちがいい? 削除フラグ 削除テーブルに移動 削除フラグ マスタテーブルに削除カラムを用意する。型は論理値(か整数型) 削除カラムの値がtrue(か1)になったら論理削除されたとして扱う ID … IS_DELETE 1 … true 2 … fals…