Mockitoでvoidメソッドをゴニョゴニョする

doAnswer を使うと、Mockのvoidメソッドの中でゴニョゴニョできる。 全然違うことで悩んでいて見つけた方法なので、使い所はよくわからない(笑) けど、メモとして残しておく。 以下はSpockで書いた場合で、メソッドの呼ばれた回数を集計してる。 (実際に回…

MySQL、localhostだとポート指定オプション効かないってマジですか。。

検証用のMySQLデータベースをせっかくなのでDockerコンテナで作ったら、接続できないという事態。 docker run -d -p 13306:3306 --name mysql-for-local mysql-for-local こんな感じでコンテナを起動して mysql -u root -D my_db -h localhost -P 13306 -A …

引数にオブジェクトを渡すか、個別に渡すか

メソッドを作成するときに、引数の数が増えてくるとどう対応したものかよく迷う。 と思ったらコードコンプリートに答えが書いてあった。 「第二部 7.5 ルーチンの引数の使用」あたりでの僕の理解。 2つの意見がある 個別に渡して結びつきを最小限に抑える オ…

CircleCIでdot(graphviz)が動かなくなった

概要 qiita.com ↑な感じでDB定義の管理にSchemaSpyを利用しているんだが、リレーションの描画にSchemaSpyは Graphviz を使っている。 しかし最新のビルドでリレーションの描画がされていなかった。 その調査と対応のまとめ。 現象 SchemaSpyで描画されなかっ…

久々のrubyをバージョンアップ

概要 久々にRuby触ろうとしたらバージョンが古かったので更新した。 現状確認 Rubyは入ってる。 $ ruby -v ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15] rbenvも入ってた。 $ rbenv --version rbenv 1.0.0 欲しいバージョン(2.…

削除したリモートブランチをローカルに反映する

git

概要 Pull Request マージされて、featureブランチ削除したのに、git branch -a すると出てくる。 手順 pull or fetch のときに --prune を使う。 o$ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/ho…

UnitTestでのprivateメソッドとの向き合い方

privateメソッドのUnitTestについて、下記のような扱いがあると思う。 スコープを(例えばprotectedに)拡張する 直接間接を問わず、リフレクションなどを活用してテストする これらに対して、ずっと何か違和感を覚えていた。 実践JUnitでちょっと触れられて…

AWS CLIの導入

AWS

概要 aws cli をMacで使えるようになるまで。 手順 pythonのインストール $ python --version はいってた aws cli のインストール $ curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" $ sudo python get-pip.py $ sudo pip install awscli --up…

GitHubでtagをmasterにする

概要 GitHub上のOSSをフォークして開発したい。 でも、フォーク元のmasterではなくtagから派生させたい。 ので自分のリポジトリ(フォーク先)ではtagをmasterにする手順。 手順 リポジトリをForkする GitHubから普通にForkするだけ tagを開発ブランチとして…

Rubyのto_yamlを使ってyamlの書き方を思い出す

サンプル require 'yaml' users = [ {'name' => 'yamada', 'score' => 90}, {'name' => 'sato', 'score' => 30}, ] puts users.to_yaml 出力結果 --- - name: yamada score: 90 - name: sato score: 30

リポジトリ名が変わってしまった!そんなとき #git

git

概要 リモートリポジトリの名前が変わってしまうと、ローカルリポジトリのfetch/push先がなくなってしまうので、その対応。 とどのつまり、リモートの向き先が変わるだけということなのだ 今の向き先を確認 git remote -v origin git@github.com:hoge/old-na…

オプティマイザが吐き出したクエリを確認する #mysql

概要 オプティマイザが実際に組み立てたクエリを確認する方法です。 実行結果や取得結果が期待通りにならない時など、ヒントが隠されているかもしれません。 手順 EXPLAINの後ろにEXTENDEDを追加するとWARNINGとして、オプティマイザが吐き出したクエリが出…

git コマンドのブランチ名などを補完する #git

git-completion.bashを導入するとgitコマンド補完されるようになるのでとてもうれしいヽ(=´▽`=)ノ https://github.com/git/git/blob/master/contrib/completion/git-completion.bash 参考 http://qiita.com/snaka/items/4b0437a32da832d2e0db

mysqlのパスワード忘れた #mysql

ローカルのmysqlつなごうとしたら、rootのパスワード設定したのにパスワードを忘れた。 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.11 Homebrew mysqlを停止 mysql.server stop safeモー…

Try & Errorで汚れてしまった履歴をきれいにする #git

git

概要 開発中、あーでもないこーでもない、とTry&Errorすることはあります。 普通はローカル環境で試してみると思うんですが、例えばCIとの連携だったりすると、修正しているファイルを実際にcommitしてpushすることになるかと思います。 (設定ファイルをこ…

MySQL5.7にしたら今まで動いていたSQLがエラーになった #mysql

原因 デフォルトのSQLモードが違うための模様 http://qiita.com/nagi244/items/04747f8e4ec351b22311 Expression #n of SELECT list is not in GROUP BY clause and contains nonaggregated column 'dbname.b.name' which is not functionally dependent on …

yamlの配列をrubyで読み込んで表示する #ruby #yaml #til

yaml - hoge - huga - piyo 配列は「-」で表現する ruby require 'yaml' foo = YAML.load_file('mydata.yml') p foo require する ファイルを読み込む 動作確認 ruby sample.rb

Rubyをrbenv使ってアップデートする #ruby #rbenv

rbenv 使って Rubyをアップデートしてみた。 前提 rubyとrbenvは既に入っている CentOS release 6.7 手順 rbenvをアップデートできるようにする rbenvを導入する https://github.com/rkh/rbenv-update ReadMeの通りやればOK rbenvをアップデートする rbenv u…

CircleCI と Slack を連携させて思ったこと #ちら裏

CircleCIの結果をSlackに通知させて見たわけですが、ま〜楽ね楽。 便利な世の中になりました。 んで思ったんだけど、ツールの類はどんどんAPI公開して、Integrationが前提になっていってる。 そうするとツールの選定の際に、以下にスタンダードなものか、Int…

Mac + IntelliJ IDEA で構造選択する #intellij

エディタで構造選択するときのショートカットキーを調べると、「Cmd + w」と紹介されているところが多いのだが、実際にはエディタが閉じられてしまう(´・ω・`) どうやればできるか どうも調べた結果、option + ↑/↓で出来る模様。 メモ Stefanさんが僕と同…

情熱プログラマーを読んだ #PaDD

www.amazon.co.jp 本のタイトルは昔から知っていたのだが、ようやく手に取った本。 ソフトウェア開発者がどのように生きていくか、その心構えや具体的な行動の起こし方を短いテーマごとにまとめている。 逆に技術的なことはほとんど触れていない。 ソフトウ…

MySQLでカラムの値から一部を取り出す

こんなテーブルと値があるとする。 id(number) profile(varchar) 1 sex:male, name:yamada, age:30 2 sex:female, name:sato, age:20 ここから、nameの値だけを取り出すことを目的にする。 name yamada sato SQL select LEFT( SUBSTRING( profile, LOCATE('n…

IntelliJ IDEAのプロジェクトをGitHubのリポジトリに連携する

既存の空リポジトリに連携する 空リポジトリをGitHub側で作成して、そこに入れ込む場合はgit remote addをコマンドラインでやるしかない模様。 https://youtrack.jetbrains.com/issue/IDEA-87099 ターミナル起動のショートカットは手に馴染ませたいところ。…

ワークシート名の文字数制限

Excel2013のVBAでセルの文字列とワークシート名をマッピングさせるような処理を書いていたんだけれども、何故かエラーになった。 デバッグしてみたところ、単純にワークシート名が違っていた。 どうやらワークシート名はExcelの制限で31文字までしか指定でき…

順に固める構造

ソフトウェアデザインパターンの源流になったらしい、建築家クリストファー・アレグザンダーのパターン・ランゲージ。 施工に関する項目に「208.順に固める構造」というものがある。 本を読んでないのでウソかもしれないが、どうも「独自の敷地や地域の微妙…

ユーザストーリーマッピングを読んだ。 #UserStoryMapping

www.amazon.co.jp この本は、ユーザーストーリーマッピングの勉強会に行ってきた時にワークショップで体験して、とてもいい!と思って読むことにした。 ユーザーストーリーマッピングはプロダクトの全体像を俯瞰でき、立場の異なる人々の共通理解を形成し、…

MySQLではIN句とサブクエリの組み合わせはインデックスが効かない #mysql

概要 タイトルそのまま。 MySQLは仕様として * サブクエリを含むSQLは外側から先に実行される * IN句とサブクエリの組み合わせは内部的にEXISTSに変換する 対策 サブクエリの使用を避ける JOINに書き換える サブクエリを切り出してSQLを組み立てる(2回SQL…

select * from がダメな理由

sql

概要 select * from ~ のように、アスタリスクで取得項目を絞らないことが性能に悪影響を与えるのはなぜだろうか? ワーキングメモリを無駄遣いする可能性 不要なカラムを大量に読み込んで処理する場合、その分余計なメモリを使用することになる。 ワーキン…

アウトプットする習慣

今の現場では情報共有ツールにesa.ioを利用しています。 僕は何でもかんでもesa.ioにアウトプットしています。 業務で得た知見 誰かに教えてもらった技術 真面目なポエム どうでもいい話 エトセトラ、エトセトラ 今日お昼行った時に、 「(アウトプットする…

HubotをHerokuにデプロイして、Slackと連携する

Hubot 基本は公式にならえばOK https://hubot.github.com/docs/ Slack で Hubot を使えるようにする - Qiita Heroku Heroku Toolbeltをインストールはドットインストールを参照した dotinstall.com ssh鍵が無かったら作る ssh-keygen herokuでssh鍵が自動で…

Fearless Change を読んだ。

booklog.jp あえてネガティブな表現をするならば、組織における政治の本です。 でも組織の中で、正論ばかり振りかざしたところで一体何になるというのだろうか。 素晴らしいアイディアは、多くの人が利用し、成果を出して初めて価値を生む。 そのためには自…

エンジニアになりたい

立場も価値観も全然違う人(ポジティブな意味で)と話す機会があって、色々思うところあったので殴り書き。 相手の方がエンジニアという職種(の人の考え方)に興味が津々なようで、色々質問をされたわけです。 どういう価値観なのか、何が楽しくて、何が嫌…

デブサミ2016に行ってきた #devsumi

今年もデブサミに行ってきた。 参加したセッションで感じたことなどをまとめておく。 event.shoeisha.jp 現場から変えた”サービスの作り方” ~何を作るのかではなくなぜ作るのか~ 印象に残ったことなど プロダクト単位で少人数のチーム体制 スモールチーム…

Ansible勉強会に行ってきた #Ansible

新年一発目の勉強会参加はまさかのAnsibleでした。 開催概要 connpass.com 開始時間が早めだったからか、当初人数は10人もいなかった 遅れて参加してきた人もいたので、最終的には10数人くらいだったか 久々に人と一緒に参加した 前半にAnsibleの概要を…

スクラム&ユーザーストーリーマッピング勉強会に行ってきた #scrum #userstorymapping

遅まきながら、10/29にスクラム&ユーザーストーリーマッピング勉強会に行ってきたのでメモを残しておく。 ちなみに僕は第二回のみ参加。 開催概要 asoview-tech.connpass.com スクラムを実際にやっている人は少ない ほとんどがソフトウェア開発の人 営業・…

Javaで標準入出力

標準入出力を書こうと思った時の元ネタにするメモ。 Scannerの使い方とか、行単位じゃない標準入力の受け取り方とか誰か教えて。 あくまでメモだから!突っ込みどころ満載なのはわかってるから! package test; import java.io.BufferedReader; import java.…

共通カラムについて考える #RDB

DBのテーブル設計を行う際の、共通カラムについて考えてみた。 共通カラムって? 例えばこんな↓のカラムを「(一定の条件を満たした)テーブルすべて」が持っていること。 登録日時 登録ユーザ 更新日時 更新ユーザ 共通カラムの目的って? 個人的に、運用管…

IEでCookieが送信されなかった #ie #edge #cookie

現象 IEでCookieが送信されない問題に直撃した。 Edgeでも再現。 Chrome、FireFoxでは問題なし。しかし環境によっては再現しない。 (結合環境では発生するが、ローカルでは起きない) 原因 ドメイン名にアンダースコアが含まれていた。RFCでも使うなという…

「Spring in Summer ~ 夏なのにSpring」に行ってきた。 #jsug_sis

「Spring in Summer ~ 夏なのにSpring」に行ってきた。もう秋も真っ盛りになってきたタイミングに亀過ぎではあるけれども、感想などまとめておく。 アウトプットするのは自分のために大事。 参加したセッション 今回は二つだけ。どちらもハンズオン形式。 R…

食べログのセンスに脱帽した

ひょんなことから、食べログのHTMLソースを見てみたら、求人広告になっていた!

怖いテストは早めにやれば、怖くなくなるんじゃね?

※前提として、Webサービスに限った話です。 なんでシステム間テストとか、結合テストを後続フェーズ(プロジェクト終盤)でやろうとするのか理解に苦しむ。 別にウォーターフォール批判とかじゃなくてよ? 単純にさ、環境依存とかシステム連携のバグとかの方が…

『 知識ゼロから学ぶソフトウェアテスト 』を読んだ。

読んだ本 知識ゼロから学ぶソフトウェアテスト 【改訂版】作者: 高橋寿一出版社/メーカー: 翔泳社発売日: 2013/12/10メディア: 単行本(ソフトカバー)この商品を含むブログ (6件) を見る レビュー 読書ログ 『 知識ゼロから学ぶソフトウェアテスト 』 高橋…

DWHについて僕が最初に勉強してみたこと

いろいろ縁があって、データウェアハウスについてちょっと勉強したので、まだまだ未熟者ではあるがここまでやったことをまとめておく。 キーワードを知る データウェアハウスを設計・構築するにあたって知らなきゃお話にならないキーワード。 これはたまたま…

DWHにおける、ディメンションの更新手法

データウェアハウスは基本的にデータの蓄積をしていくものである。 しかし、現実には蓄積したデータに対して更新が発生する場合が多い。 スタースキーマのようなディメンショナルモデリングを採用した場合、ディメンションの更新手法について検討することが…

ビットマップインデックスについて調べたメモ

ビットマップインデックスの構造 値に該当するかどうかをビットマップで持つ あるカラムが「特定の値であるか」を0/1で表現する 値とROW_IDのStart/Endをツリー構造で持つ ビットマップインデックスを使うメリット * ROW_IDを持たず、連続するビット値は圧縮…

最近のアジャイルだスクラムだの話について思うこと

デブサミなんかでも感じたけど、スクラムを中心にアジャイル開発手法が広まったことで、少し業界の中でのアジャイルに対する捉え方が変わってきたと感じている。 ※ちなみに僕は「アジャイル」という言葉の定義について、XPに代表されるプラクティスや、スク…

デブサミ2015に行ってきた~その⑥

デブサミ2015に行ってきたので、まとめておく。 ちなみに2日とも参加したので、聞いてきたセッションごとにまとめていく予定。 なお、内容については色んなところでまとめられているので、 自分が特に印象に残ったところをメモレベルで。 Developers Summit…

デブサミ2015に行ってきた~その⑤

デブサミ2015に行ってきたので、まとめておく。 ちなみに2日とも参加したので、聞いてきたセッションごとにまとめていく予定。 なお、内容については色んなところでまとめられているので、 自分が特に印象に残ったところをメモレベルで。 Developers Summit…

デブサミ2015に行ってきた~その④

デブサミ2015に行ってきたので、まとめておく。 ちなみに2日とも参加したので、聞いてきたセッションごとにまとめていく予定。 なお、内容については色んなところでまとめられているので、 自分が特に印象に残ったところをメモレベルで。 Developers Summit…

デブサミ2015に行ってきた~その③

デブサミ2015に行ってきたので、まとめておく。 ちなみに2日とも参加したので、聞いてきたセッションごとにまとめていく予定。 なお、内容については色んなところでまとめられているので、 自分が特に印象に残ったところをメモレベルで。 Developers Summit…