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

@ledsun blog

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

XP祭りに行きました #xpjug

http://xpjug.com/xp2014/ アジャイルが好きな理由 アジャイルソフトウエア開発が好きな人が集まっている会なので、いろんな人にアジャイルが好きな理由を聞いて回ればよかった。 自分が(受託開発で)アジャイルが好きなのは「動くものを見せながらお客さん…

MQTTとJavaScript

MQTTってなに? PUB/SUBプロトコルです。 HTTPと同じレイヤーです、主にTCP上で動きます。 WebSocket上でも使えます。 温度計などのセンサーの計測値を集めるM2MプロトコルとしてIBMに開発されました。 なぜMQTTなの? 公式には 小さいコンピューター(Rasbe…

Mac で go

Mac OS Xでgo言語の開発環境を用意します。 goをインストール brew install インストールが成功したか確認してみましょう。 go version Hello World hello.goファイルを作成します。 package main import "fmt" func main() { fmt.Printf("hello, world\n") …

忍者式テストをやってみた

忍者式テストを二週間くらいやってみた感想です。 忍者式を見習って毎日一時間手動受け入れテストの時間を確保してみた。 「受け入れテストを徐々に増やしていく」感覚が新鮮。 「受け入れテストはテストフェーズの最初に一度に作るもの」は思い込みだった。…

Gitlabの更新情報をChatworkに通知するアプリケーション、Syamoを作りました

Gitlabの更新情報をChatworkに通知するアプリケーション、Syamoを作りました。 Syamoとは? Gitlabのプロジェクトが更新されたときにChartworkのチャットルームにメッセージを送ります。 Gitlabのプロジェクトの更新情報は次の三つです。*1 gitブランチへのp…

Jenkinsでherokuに配置

目標 Jenkisを使ってherokuへの配置を自動化します。 前提 JenkinsはCloudbeesを使う*1 Jenkinsのコードの取得は既に出来ている*2 準備 herokuのアカウントページのSSH KeysにCloudBees Public Keyを登録します。 配置 要はシェルでgit push herokuします。 …

Gitlabの更新を契機にJenkinsでnode.jsアプリケーションをテスト

はじめに 前提条件 ソース管理はgitlab JenkinsはCloudbeesを使う*1 テストはfresby.jsで書いてる 目標 gitlabでトピックブランチをmasterにマージしたら自動的にテストする gitlabの設定 秘密鍵 Jenkinsがgit cloneできるように秘密鍵を登録します。 Jenkin…

Cloudbeesを使ってJenkinsを用意する

Jenkinsを使うだけならサーバーもインストール不要なPaasを使うのが便利です。 今回はCloudBeesを使います。*1 Cloudbeesの用意 CloudBeesへSign Up githubアカウントでログイン*2 Jenkinsの用意 Buildsボタンを押す 10分待て言われるので待つ しばらくしてB…

component.js(1.0.0-rc5)を試す

component.js component.jsはnpmやbowerを使った依存する外部ライブラリ(JavaScript,CSSともを含む)の解決と、 unglifyやcssminで行う自作ファイルを適切に組み合わせるビルドを1つのツールでやってしまおうとする 意欲的なツールです。 Getting Started …

ZeroClipboard

ZeroClipboardを紹介します。 ZeroClipboardとは ブラウザからクリップボードに書き込むためのJavaScirptライブラリ。 githubで使われています。 なぜZeroClipboard? クリップボード操作はブラウザ依存(InternetExplorer専用)です。 ZeroClipboardはFlash…

設定なし、コマンド一つで起動できる簡易httpサーバー http-server

nodeapps/http-serverを紹介します。 これはなに? 設定なし、コマンド一つで起動できる簡易httpサーバーです。Node.jsで実行します。 どうやって使うの? インストール brew install node npm install http-server -g 起動 http-server . ブラウザで http:/…

git diffを美しく

diff-hightlightを使ってdiffを見やすくします。 前提 Mac です。 gitインストール brew install git diff-highlightにパスを通す ln -s /usr/local/share/git-core/contrib/diff-highlight/diff-highlight /usr/local/bin/diff-highlight ~/.gitconfigに追…

PresentationとかDomainとかSeparateとか

Presentation Domain Separationとは? Presentation Domain Separation。 プログラムをプレゼンテーションロジックとドメインロジックに分けること Separate Domain from Presentationとは? Separate Domain from Presentation。PDSを導入するリファクタリ…

なぜ大抵の単体テストがクソなのか?

James O Coplien のWhy Most Unit Testing is wasteより 最後のまとめを和訳 ツッコミ大歓迎。 Keep regression tests around for up to a year — but most of those will be system-level tests rather than unit tests. 回帰テストを一年間続けよう。ただ…

Homebrewの設定

HomebrewはMacのイケテルっぽいパッケージ管理ツール。 コマンドラインでアプリケーションのインストールや削除が出来ます。 Homebrew自身の設定 インストール ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 環境変数PATHの…

プログラミングのためにその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という名…

オブジェクト指向設計とは

オブジェクト指向という言葉には オブジェクト指向分析(OOA) オブジェクト指向設計(OOD) オブジェクト指向プログラミング(OOP) の三つの意味があります。 オブジェクト指向初心者泣かせです。 ここではオブジェクト指向設計を説明します。 ソフトウェアの設…

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

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

『キック・アス ジャスティス・フォーエバー』感想 キック・アスがクズすぎてドン引き

注意:ネタバレ&酷評です。 【ネタばれ】「○ホバの証人です♡」 キック・アス/ジャスティス・フォーエバー/ユーザーレビュー - Yahoo!映画 青年はトレーニングによってムキムキの本当に強い男となってセックスまでこなす成長を見せて、 ボンクラで冴えない…

大拝承というWebアプリケーションを公開したら楽しかった話

大拝承というWebアプリケーションを公開しました。 一番大事なこと とても楽しい。みんなもアプリを作って公開しよう。 アプリケーションを公開するとプログラミングしていた時と違う気分になるのが面白い。 TDDでテストが通る最短の実装をするときのプログ…

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勉強会のつもりでいったらパターンのワークショップでちょっとびっくりしました。 パターンが何かはパターンマイニング参考資料を見てください。 前から「フォース」がよくわからなかった、パターン形式の「フォース」。 …

はたらく魔王さま

原作未読。アニメのみの感想 あらすじ 舞台は「指輪物語」のような剣と魔法のファンタジーの世界 そこに君臨する魔王が勇者に破れ現代日本に逃げてくる 魔力も腕力も失った魔王様は生活のためにアルバイトに勤しむ 時代性 ライトノベルがライトノベルたる最…

受託開発でアジャイルソフトウェア開発を始める

はじめに 「ディシプリンド・アジャイル・デリバリー 〜アジャイル開発の現実解〜」に参加してきました。#devlove - HOW TO GO というブログエントリに 受託でアジャイルはどうなのか? という記述がありました。世の中には受託でアジャイルをどうやって始め…

Ruby on Rails を勉強しない方が良い100の理由

はじめに 今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 | つい全力ツッコミしてしまうエンジニアCEOのブログ | sumyappを読みました。最初ツッコミどころが凄い*1なと思ったんですが、二回読んでちょっと思い当たる節があるな…

非同期メッセージングとは

非同期メッセージングの動きを同期メッセージングと対比して整理します。 メッセージングとは あるアプリケーションから別のアプリケーションへ情報を送る時の送り方です。 送る情報を「メッセージ」と呼びます。 同期メッセージングと非同期メッセージング…

人間の迷いが丁寧に描かれていて気持ちいい 伊図 透 エイス

人間の迷いをすごく丁寧に書いてて気持ちいい。 絵は表紙の通り地味。 1巻は不良が捨て猫を助けるみたないい話系。2巻になると残酷な描写も出てくる。 舞台設定は外薗昌也のヴォイスとかワイズマンとか福島聡の機動旅団八福神に似てる。 変な奴に絡まれてつ…

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

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