「わかる!ドメイン駆動設計 」を読みました

DDD、ドメイン駆動設計という単語は耳にしていたものの、ご多分に漏れず例の分厚い本に臆してました。 「わかる!ドメイン駆動設計 」ならボリュームも少なそうだし、読みやすいかなって思って読んでみました。 techbooster.booth.pm つまみ食いしていた知識…

mysqldumpでROW_FORMATが出力されなくなった #mysql

現象 MySQLを5.5から5.6にしたら、mysqldumpした際のDDL( CREATE TABLE とか)に、ROW_FORMATが出力されなくなった。 importでこけたので調査してみたらCompactで作成されており、追いかけてみるとdumpした時点のDDLにROW_FORMATの出力がなかった。 エラーメ…

Collectors.toMapで、同一キーを処理する #java

streamでMapに詰める Javaのstreamを使ってMapにつめかえる場合、Collectors.toMapを使う。 Map<Long, String> fooMap = fooList.stream() .collect(Collectors.toMap( Foo::getId, Foo::getName ); しかし上記の場合だと、キーが重複していた場合に IllegalStateException</long,>…

GitHubで何か自動化するならdeploy keysが便利だ

GitHubで特定リポジトリに対して何かを自動化する時、専用のアカウント用意しないとダメかなー、なんて考えていたらDeploy Keyと言うものがあった。 Managing deploy keys | GitHub Developer Guide deployという名前だけど、deploy以外にも使える。 ReadOnl…

CircleCIでメモリ上限値越えエラー #circleci

現象 CircleCIのビルドが TIMED OUT で失敗して、見に行ってみたら下記のようなメッセージが表示されていた。 Your build has exceeded the memory limit of 4G on 1 container. The results of this build are likely invalid. We have taken a snapshot of…

IntelliJ IDEA でJavaScriptをデバッグ

前提 Chrome IntelliJ IDEA ULTIMATE 2016.3 拡張機能を入れる Chrome Extensionを導入する。 chrome.google.com ローカルデバッグ プロジェクト内にある HTML + js のような形であれば、HTMLファイルを右クリック→デバッグ実行でOK。 ビルトインサーバーが…

社内勉強会でライトニングトークしてきた

社内勉強会でライトニングトークしてきた。 フリーテーマだったので何話そうか迷っていたけれど、最近いい感じになってきたチームのコードレビューについて話してみた。 コードレビューを題材にしたものの、チーム開発が単なる個人の集合じゃなくて、コラボ…

QA勉強会に行ってきた #QAアーキ

12/20にQA勉強会に参加してきたので、印象に残ったことや思ったことなどを残しておく。 品質評価に焦点を当てた勉強会に参加したのは初めてだったかも。 connpass.com テスト観点は意図を明らかにする 仕様をなぞるのではなく、意図を明らかにするのがテスト…

iTunesで曲名がオンラインで見つからなくなった。。

どのタイミングでなったのか分からないけどiTunesでCDを読み込もうとしたら「このCDの曲名がオンラインで見つかりませんでした。曲を読み込みますか?」と言われて曲名が読み込めなくなった。 備忘のための解決策メモ。 発生した環境 iTunes 12.5.4.42 macOS Si…

au iphone6s を UQ mobile に乗り換えた

au との契約期間はまだまだ残っていたんだけども、解約金を払ってもすぐに回収できるくらい価格差あるなぁーと思って UQ mobile に乗り換えた。 ただ au版iPhone6sについてはまだもうしばらく使う予定なので、simロック解除して使うことにした。 あんまり詰…

Optional#orElseについて勘違いしていた #java

JavaでOptionalの値取り出しにorElseを利用すると思うんだけど、その動きについて勘違いしていた。 Optional<Long> getId(); こんな感じのメソッドがある時、orElseでの値取り出しは下記の用になると思う。 Long id = getId().orElse(createId()); 勘違いしてた所 </long>…

JJUG CCC 2016 FALL に参加してきた #jjug_ccc

12/3(土)にJJUG CCCに参加してきたので印象に残ったことや感想など。 #ccc_a1 Be a great engineer! speakerdeck.com 追いかけるべきトレンドを見抜くには、その本質を見極めることが大事という話だった。 結局これが一番おもしろかったかもしれない。 体物…

最近迷っていること: メンバーオブジェクトのアクセサを用意すべきか? #java #プログラミング

最近迷っていること。 クラスのメンバーオブジェクトのアクセサを直接定義するよりは、隠蔽してあげたほうがいいんじゃないかと思うこと。 最終的にケースバイケースだろうとは思いつつ、気にする観点やポリシーなどはまだまだ引き出しが少ない。 直接アクセ…

JavaScriptでUtilityっぽいものを作る

JavaScriptでUtilityっぽいものを作るには。 同僚に教えてもらったのでメモ。 // Utilityっぽいの var Sample = (function() { var pub = function() { console.log('publicだよ'); }; var prv = function() { console.log('privateだよ'); }; return { // …

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