@ledsun blog

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

リーダーシップ理論

リーダーシップに関する情報を調べた記録です。 luccafort.hatenablog.com のはてなブックマークで リーダー(管理者)ではなくエンジニア(実務者)でありたいと願う人々へ - おうさまのみみはロバのみみこれははるか昔に作られたリーダーシップ理論の基礎では…

技術書典2にサークル参加しました #技術書典

サマリ 謎のモチベーションの高まりにより技術同人誌を書いた 30部が1.5時間ではけた Re:VIEWで書いた 想定読者が勉強会の発表より広いのはおもしろい 書いたこと 「デバッグ最速理論」という薄い本を書きました。 最終的に表紙と奥付、裏表紙等を合わせて16…

今年の目標

家族を大事に 責任のあるポジションにチャレンジ 技術同人誌を書く 「プログラミング作法」に現代の視点からツッコミを入れる TOEIC 800点*1 共感能力の向上 自分が使うAndroidアプリケーションを作る*2 *1:電通大新入生に1時間/日の 英語学習を勧める根拠 …

サービス開発チームの拡大期におけるリーダーのレスポンシビリティ移譲に関する1アイデア

開発組織に関するポエムです。 背景 常駐や請負で、サービス開発チームのお手伝いをしたことがあります。 私に依頼がくる時は、サービスは売れていて、開発チームは拡大期にあります。 その時、開発者の人数は増えているが、開発リーダーの負荷は減らず、逆…

テキストより複雑な構造のデータを扱うWikipediaを作る

モチベーション 専門性を持った不特定多数のユーザに協力してもらい、個人では作り得ない大規模なデータベースを作りたいことがあります。 例えば、Wikipediaは、(記述の正確性や公平性における問題は抱えているかもしれませんが)規模の点で成功しています…

日本でアジャイルが流行らない理由

ポジション的なもの 個人的に、アジャイルは「(あんまり未来や遠くのことを考えるのをやめて)目の前にある問題を解決しよう」という思想と認識しています。 現実の問題を見ないで「将来、日本と米国のソフトウェア開発技術の差が広がるから、ウォーターフ…

とてか04に参加しました #toteka

d.hatena.ne.jp 椎葉さんの発表がぐっときた すごかった。 「失敗したチームメンバーがいた時に、笑ったらいかんよ」と説明すると言っていました。 「そこまでやるのか。やると意味があるのは想像できるけど、自分ではできない」という意味ですごかったです…

日本Kindle化計画 その3

バックエンドサービスの選び方 なぜRedisか? Redisのホスティングサービス 予算見積もり Redis To Go Redis Labs Heroku Redis Amazon Elasticache 選んだサービス バックエンドサービスの選び方 日本Kindle化計画ではストレージにRedisを使っています。 公…

東京Node学園祭2015に参加しました #nodefest

本編短評 Node Discussionがめっちゃくちゃ面白かった @domenicさんはbabelが好きじゃない*1。moduleはもっと好きじゃない*2 Node.jsにES6 moduleサポートが入る目処は立っていない。そもそも仕様が決まっていない。 power-assertはNode.jsのコアに入らない…

道具としてのプログラミング、目的としてのプログラミング

プログラミングの学習曲線 プログラミングで世界を変えるということ 職業プログラマのすすめ Ruby on Railsの複雑度が問題? プログラミング研修の限界 まとめ プログラミングの学習曲線 Ruby on Railsはプログラミングではない! | それでも人は夢を見るの…

日本Kindle化計画 その2

APIデザイン的な悩み 「ASIN登録用APIで、即座にKindleの有無をチェックしに行くべきか?」 メリット 即座にフィードバックが得られる デメリット APIを公開できない(公開版を別にデザインする必要がある) Amazon APIに呼び出し制限がある 並列して実行す…

日本kindle化計画 その1

背景 占有体積コストがバカにならないので、漫画を極力Kindleで買うようにしています。 Kindle版は紙の書籍より遅れて登録されます。 紙の書籍を発見されてから、Kindle版が出ているかどうか定期的に確認する必要があります。 既存のKindle化チェックツール …

Form で遊ぶために対抗サーバーを作って公開した

背景 HTML fromを新人に説明しようとしました。 うまく説明できませんでした。 つまり、よく分かっていません。 ドキュメントを読んで言葉で理解し、 パラメーターを変えながら実際に動かして、心で理解したいです。 しかし、formは対抗するサーバーがないと…

論理削除フラグという名の死亡フラグ

RDB - DELETE_FLAG を付ける前に確認したいこと。 - Qiita 論理削除が云々について - mike-neckのブログ Kazuho's Weblog: 論理削除はなぜ「筋が悪い」か 流行っているので乗っかります。 結論 「データ制約の強力さと集合としての表現力を捨てながら、Relat…

JavaScript入門用のコンソールプログラムjavascriptingを翻訳しました

javascriptingを翻訳しました。 javascripting-jpとは何か? ledsun/javascripting JavaScriptの文法を学ぶコンソールアプリケーションです。 文字列や数値、条件文やforループなど文法を学びます。 次のコマンドでインストールできます。 npm install --glo…

bowerパッケージのアップデート手順

bower.jsonを見て、使っているパッケージ名を確認します。 bower info xxxで最新バージョンを確認します。 bower.jsonのバージョンを書き換えます。 bower installで更新します。

(私的)npmモジュールの作りかた

npmモジュールを作るときの自分の手順をまとめました。 プロトタイプをコーディング済みで、コンセプトが固まっている前提です。 モジュール名を決める npmを検索、類似ライブラリが無いか探す。 ついでに、APIや実装にパクれるネタを探します ハイフン区切…

6to5で作ったnodeライブラリ

ライブラリをES6で書いて公開する所から始めよう | Web Scratch 読んで触発され、 6to5を使ってライブラリを書きました。 作ったライブラリ チャットワークにメッセージをポストするだけの関数です*1。 ledsun/post-chatwork-message こんな感じで使います。…

2014の成果

フロントエンドJavaScript TextAE LODQA 本業です。jQueryでDOM操作バリバリです。MVなんとかフレームワークは使っていません。忍者式テストの発表のネタになっています。 JavaScriptの日付に1日足したり2時間引いたり、計算するライブラリ ledsun/date-adde…

JavaScriptの日付に1日足したり2時間引いたり、計算するライブラリを作りました

IE9以降のブラウザとNede.jsで動きます。 AMDでも動くはずです。 試していません。動かなかったら教えてください。 ledsun/date-adder どんなライブラリか? こんな感じ dateAdder(new Date(2014,10,27), {days: 1}) //Thu Nov 28 2014 00:00:00 GMT+0900 (J…

技術的負債の数え方

技術的負債の数え方に関する与太話。 落ちを先に書くと「シュレディンガーの猫」って言いたかっただけです。 技術的負債とは Ward Cunningham 曰く 最初のコードを出荷することは、借金をしに行くことと同じである。 小さな負債は、代価を得て即座に書き直す…

グーグルカレンダーに予定を追加するURLを作るライブラリを作りました

ledsun/generate-google-calendar-url Node.jsとブラウザどちらでも動くように作ってあります。 作った理由 Google Chrome拡張で使いたかった。探してもURLだけを作ってくれるライブラリがありませんでした。 carlsednaoui/add-to-calendar-buttons URLは作…

東京Node学園祭2014に参加しました #nodefest

東京Node学園祭2014に参加しました。 nodeschool in Japan maxwell ogdenによるNode.jsのワークショップの日本出張版。 Nodeschool Tokyoに大体の内容が書いてある。 maxogden/levelmeup-jp · GitHub をやってみました。 levelmeup-jpコマンドでターミナル上…

reduceでPromiseをつないでタイムライン実行する

Promiseとreduceを組み合わせたトリック。 適当な間を置いてイベント発行するstubを作る時に使いました。 指定時間後に処理を実行するPromiseを作ります。 var DelayPromise = function(delay, action) { return new Promise(function(resolve, reject) { se…

Mac OS X で Raspberry PiのOSイメージを焼く

Mac OS X で Mac に刺したSDカードにddコマンドを使ってOSイメージを焼く方法です。 OSイメージの入手 Downloads | Raspberry Piから好きなイメージをダウンロードします。 特にこだわりがなければ、サンプルが多いRASPBIANが良いと思います。 Download Zip…

Raspberry piをMQTT 気温 publisherにするAnsible Playbookを公開しました

ledsun/raspi-ansible-thermometer-mqtt-subscriber 過去のBlogで手動でやっていたことをAnsible Playbookに書き起こしました。 Raspberry piからmqttcliでSangoに送信する - @ledsun blog Raspberry piで計った温度をMQTTでSangoに送信する - @ledsun blog …

とてか03にて発表してきました #toteka

咳マニアの集うイベント とてか03 にて発表してきました。 発表は「忍者式テスト」についてです。 忍者式テストは2004年頃に咳さんが発表されてから(咳さんチーム以外の)実施者が一人しか観測されていないテスト(開発?)手法です。 私が忍者式テストに取…

Raspberry piからmqttcliでSangoに送信する

mqttcliのarmバイナリを作ってもらったので使ってみます。 @ledsun 動作確認はしておりませんが、Raspberry Piで動くようにmqttcliをarm用にbuildしました。 https://t.co/exqbj3R5r0 試していただけるとありがたいです。— shirou - しろう (@r_rudi) Septem…

Raspberry piで計った温度をMQTTでSangoに送信する

構成 Raspberry Pi Type B 512MB 2014-09-09-wheezy-raspbian.img USB温度計! USB thermometer-528018 MQTT as a Service sango (MQTT Broker) Raspberry Piの設定 2014-09-09-wheezy-raspbian.img を使ってRaspberry Piを起動してください。 Raspberry Piに…

Ansibleを使ってRaspberry PiにNode.jsをインストールする

前提 2014-06-20-wheezy-raspbian.imgを使ってRaspberry Piが起動できていること。 ansibleをインストール Mac ではHomebrewが使えます。 brew install ansible 設定ファイルを準備 hosts [raspberry-pi] 192.168.0.54 IPアドレスを適切に設定します。 ansib…

crestとバグとpacage.json

MongoDBを外部プログラムから更新するのにREST APIがあると便利です。 Cordazar/crest · GitHubというアプリケーションを試してみました。 バグを踏みましたが、原因がわかりました。そういう話です。 npm installできない npm install crest エラーが起こり…

mowsのtestlingの動かし方

mowsのテスト方法が判明しました。 mowsのtestlingの実行方法 npm install -g testling でインストール testling -u を実行、表示されたurlをFirefoxかSafariで開くと通ります。 そしてPull Reqesutを修正しました。 npm testも実行し、テストが通ることも確…

mowsにPull Requestするなど

PullRequestを送る mowsというWebSocketに対応したJavaScriptのMQTTクライアントがあります。 mcollina/mows URLと認証情報を同時に設定してconnectすると、認証情報が無視されます。 修正するPullRequestを送っている話。 現在進行中です。 testlingへの対…

MQTTのリアルタイムWebビューの実装など

活動記録の続き。完成していません。 sangoでconnectionが残る問題 WebSocket上だとkeepalive指定があってもsangoにconnectionが残ることがある 次回deployで修正予定らしい connect中にPCをスリープにしてネットワークを切断するか切り替えるかで発生した …

sangoを使ってセンサー監視システムを作ろう

MQTT as a Service sangoを使ってMQTTな何かを作ってみる活動記録。 まだ完成していない。 作りたいのは たった1日で出来たWeb + Android + Arduinoのリアルタイム連携プロトタイピング - 人と技術のマッシュアップ みたいなやつ。違うのはセンサーが照度で…

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の…