タグ

ブックマーク / blog.shibayu36.org (30)

  • ScalaでHikariCPを使ってDBのコネクションプールを利用する - $shibayu36->blog;

    ScalaでのJDBCによるDB操作の勉強をした - $shibayu36->blog; の続き。今回はHikariCP を利用して、DBのコネクションプールをScalaで利用してみたのでメモ。DBにはPostgreSQLを利用した。 依存の追加 build.sbtに以下を追加。 libraryDependencies += "org.postgresql" % "postgresql" % "42.1.4" libraryDependencies += "com.zaxxer" % "HikariCP" % "2.7.1" 単純にDB接続してみる https://github.com/brettwooldridge/HikariCP#initialization や https://jyn.jp/java-hikaricp-mysql-sqlite/ あたりを参考にした。 とりあえず接続

    ScalaでHikariCPを使ってDBのコネクションプールを利用する - $shibayu36->blog;
  • ScalaでのJDBCによるDB操作の勉強をした - $shibayu36->blog;

    ScalaでPlay+Slickの勉強をし始めたのだけど、DIを使ってDBオブジェクトを取得したり、コネクションプールを使っていたり、クエリ発行はDSLだったりと、色々なことをやっていて全く理解できなかった。そのため、とりあえず地道に下の方から学習して、分からないところを減らしていこうと思ったので、まずはJDBCによるDB操作の勉強をした。 とりあえず使い方をさっと理解するために https://www.postgresql.jp/document/7.4/html/jdbc.html が参考になった。 JDBCとは PerlDBIみたいなやつとおぼえた。ドライバの組み合わせもDBD::mysqlDBD::pgみたいなものとおぼえた。 依存の追加 今回はPostgreSQLを使って操作をしようと思ったので、そのドライバを依存に追加する。build.sbtに以下のように記述する。 lib

    ScalaでのJDBCによるDB操作の勉強をした - $shibayu36->blog;
  • 手元からpsqlでログインする時にパスワード入力せずにログインできてしまう理由 - $shibayu36->blog;

    sudo brew install postgresqlMacにpostgresqlを入れて、 $ psql postgres postgres=# create role dbuser createdb login inherit password 'dbuser';のようにroleを作ってみたのだけど psql --username=dbuser postgresでパスワード指定せずにログインできてしまった。 ???となって少し調べてみたら、pg_hba.conf*1にデフォルトで以下のように設定されていて、この時localhostからpsqlでログインするときにはパスワードは不要になるようだった。ちょっと怖い。 # "local" is for Unix domain socket connections only local all all trust # IPv4 local

    手元からpsqlでログインする時にパスワード入力せずにログインできてしまう理由 - $shibayu36->blog;
  • 【Scala】Emacsで現在編集している部分のテストを実行する - $shibayu36->blog;

    Scalaのテストを実行する時、sbtを使うと、特定のテストクラスだけの実行や、特定のテストケースだけの実行ができる。やり方はScalatest: 特定のテストケースだけ実行したい - Qiita で紹介されているとおり。 ただ、コードはテキストエディタで書いているので、このコマンドを使うとしても 編集を終える 今のファイルのテストクラス名とdescribeの文字列をコピーする ターミナルを開いて、sbtでtestOnlyを使ってコピーした文字列を貼り付けて実行 のように、結構面倒という問題がある。 そこでEmacsで現在編集している部分のテストを実行するユーティリティを作り、編集 -> テスト -> 編集のループを回しやすくしてみた。今回はそのことについてご紹介。 今回のユーティリティで出来ること 以下のように、現在ファイルのテストクラスだけEmacs上で実行したり さらに、現在のカーソ

    【Scala】Emacsで現在編集している部分のテストを実行する - $shibayu36->blog;
  • Scalaの開発環境をセットアップした - $shibayu36->blog;

    Scalaを書くことになったので、Scalaの開発環境をセットアップした。Emacsで編集できるように scala-modeを使って編集 ensimeを導入し、できる限り動作が重くならないように tagsファイルを使って定義ジャンプをできるように IntelliJとEmacsを行き来できるように あたりを行った。 scala-modeを使って編集 昔はscala-mode2を使っていたみたいだけど、最近はscala-mode を使うみたい。 (require 'scala-mode) ensimeを導入し、できる限り動作が重くならないように EmacsでもScalaのシンタックスチェックや定義ジャンプなどを使えるように ensime を導入する。ensimeを使えるように Emacs + ENSIME でScalaの開発環境を作る - Qiita とかに書いてあるとおり、 Emacs上でe

    Scalaの開発環境をセットアップした - $shibayu36->blog;
  • ちょっとしたことでも雑にブログに書いておくと良いことが起こる - $shibayu36->blog;

    僕は自分がやったこと・勉強したこと・気づいたことなどはどんなにちょっとしたことでも、公開の場のブログに書くようにしている。その内容はある程度雑でも良いので、とにかく公開の場に書くようにしている。それによって、結構良いことが起こっているというのを社内の日記に書いていたのだけど、これも公開の場に書いておいても良いかと思ったので書く。 これまでの経験だと、次のような良いことが起こっている。 最低限未来の自分に理解できる程度まで記事にまとめることで、知識が頭の中で言語化され、定着する 時々他の人からフィードバックを受けて、さらに学習が進むことがある 「あれ昔なんか勉強したけど覚えてないな」という時に自分のブログ見たらすぐ思い出す 分からないことを調べようとググったら自分のブログが出てきてすぐ思い出す 初めからブログに書くつもりでインプットすると、自然と体系化・汎化しながらインプットできるようになる

    ちょっとしたことでも雑にブログに書いておくと良いことが起こる - $shibayu36->blog;
  • Emacsでvirtualenvに入れたライブラリも考慮したPythonの補完環境を作る - $shibayu36->blog;

    新言語を使うときは、その言語の補完ができるかどうかで学習効率が変わってくるので、ひとまずPythonの補完環境を作った。基Pythonではvirtualenvを使うのが一般的なようなので、環境ごとに入れたライブラリも考慮して補完できるようにした。 色々調べたところ、次の三つを使うのが良さそうだった。 python-mode jedi auto-virtualenvwrapper 今回の設定で以下のように補完が出来るようになった。 python-mode とりあえず編集モードを入れる。M-x package-install RET python-mode RETしたあと、以下の設定を入れる。 (require 'python-mode) (setq auto-mode-alist (cons '("\\.py\\'" . python-mode) auto-mode-alist)) jed

    Emacsでvirtualenvに入れたライブラリも考慮したPythonの補完環境を作る - $shibayu36->blog;
  • zsh-autoenvを使って、virtualenvの自動activate/deactivateを実現する - $shibayu36->blog;

    pyenv + venvでPython3環境を構築する - $shibayu36->blog; の記事で、特定のPythonプロジェクト用のvirtualenv環境を導入することが出来ました。しかし、このプロジェクトに入るたびにsource venv/bin/activateし、逆に抜ける時にdeactivateするのは 面倒 どう考えても実行を忘れる という問題があります。 そこでzsh-autoenvというzshプラグインを使って、自動でactivateとdeactivateを出来るようにしたのでメモしておきます。 zplugを導入する 今回の題から外れますが、zshのプラグインの管理ツールをこれまで入れてこなかったので、この機会にzplugを導入しました。 おい、Antigen もいいけど zplug 使えよ - Qiita https://github.com/zplug/zpl

    zsh-autoenvを使って、virtualenvの自動activate/deactivateを実現する - $shibayu36->blog;
  • Pythonのvenvのプロンプト表示をカスタマイズする - $shibayu36->blog;

    pyenv + venvでPython3環境を構築する - $shibayu36->blog;の記事で、Python3でvenvを使った環境を構築することができた。しかしvenvでsource bin/activateすると、自分の設定したプロンプトの左側に(venvの環境名)という文字列が勝手に挟み込まれてしまって、あまり好みではなかった。 それを以下のように、venv環境の中にいたらpy:(pythonのversion):(venvの環境名)という表示にしたかった。 のでやってみた。 プロンプトの左側の環境名表示を消す まずプロンプトの左側の(venvの環境名)を消す。こちら を参考にして、VIRTUAL_ENV_DISABLE_PROMPTという環境変数を設定しておけば良いらしい。 # virtualenvでpromptを変更しない export VIRTUAL_ENV_DISABL

    Pythonのvenvのプロンプト表示をカスタマイズする - $shibayu36->blog;
  • pyenv + venvでPython3環境を構築する - $shibayu36->blog;

    機械学習のモチベーションを上げるためにTensorFlowを触ろうとしている。まずは環境設定でしょうということで、ひとまずPython3環境を作る。今はpyenv + venvで作るのが良いみたいなので、それでやってみたメモ。 pyenvでpythonをインストールする pyenvが必要かどうかフローチャート - Qiita も参考にしたのだけど、まあ細かくPythonのversionを指定したくなる時もありそうだし、とりあえずpyenvを入れておく。 自分は anyenv を使っているので、それでpyenvをインストール。 $ anyenv install pyenv 次にpyenvでpython 3.6.1をインストール。 $ pyenv install 3.6.1 $ pyenv versions system * 3.6.1 (set by /Users/shibayu36/.an

    pyenv + venvでPython3環境を構築する - $shibayu36->blog;
  • 「理論から学ぶデータベース実践入門」読んだ - $shibayu36->blog;

    理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus) 作者:奥野 幹也技術評論社Amazon 積ん読に入っていたので読んだ。 このはリレーショナルモデルを理解することによってRDBの知識を深めようというようなRDBを実践で使っている人がさらに知識を深めるためのという感じ。内容としては重要な理論がRDBと紐付けられて解説されていて面白かった。一方で、専門用語が文章中に多く使われていて、個人的には何か頭に入ってこなかった点は残念だった。 このを読みながらわからないところを調べていて見つけたのだけど、このの著者の昔の発表資料である「データベース設計徹底指南!!」がこのの端的なまとめになっていて、しかも非常に良い資料なので当におすすめ。で紹介されているリレーショナルモデルや正規化理論などがわずか15分程度で理解できる

    「理論から学ぶデータベース実践入門」読んだ - $shibayu36->blog;
  • 高速なRandomized Queueのアルゴリズムを実装する - $shibayu36->blog;

    CourseraのAlgorithms, Part Iというコースで、高速なRandomized Queueを実装するという話題があったので、試しに作ってみた。 高速なRandomized Queueとは Randomized Queueとは、Queueからdequeueするときに、中に入っている要素の中からランダムに一要素取り出すようなQueueである。 また「高速な」とは、enqueue、dequeue、isEmpty、sizeなどの操作の実行時間が、"constant amortized time"であること、つまり何回も操作を繰り返していくと、平均的には定数時間でそれぞれの操作が終わるということである。 この二つを満たすものを高速なRandomized Queueと呼ぶ。 実装 高速なRandomized Queueを実装すると次のようになった。 import java.util.

    高速なRandomized Queueのアルゴリズムを実装する - $shibayu36->blog;
  • どのようにエンジニアの目標設定を行うか - $shibayu36->blog;

    以前 ゴールを決め目標を決める・解決案ではなく質問する - コーチングの学習で学んだこと - $shibayu36->blog; で、「ゴールを決め、現在位置とのギャップを考え、目標を決める」と良いということをまとめた。イメージとしては以下の図の通り。 しかし、前回の記事だと具体的にどのようにエンジニアの目標設定を行うかイメージが湧かない。そこで、もう少し具体的に最近どのようにやっていたかを書いてみたいと思う。 僕がメンティーと目標設定を行うときは、以下のフローを辿っている。 なんでも良いのでゴールのイメージを明確にする 現在の自分とゴールのイメージのギャップを考える ギャップを埋める目標を考え、アクションを定める ちなみに今回は、チームの成果達成のために個人の目標を決めるのではなく、エンジニアのスキル向上の目標を立てるという前提で書いていく。 なんでも良いのでゴールのイメージを明確にする

    どのようにエンジニアの目標設定を行うか - $shibayu36->blog;
  • 問題の効率的な解決方法を学ぶ - 「世界一やさしい問題解決の授業」読んだ - $shibayu36->blog;

    仕事で何かしら課題を見つけた時に、それを効率よく解決する方法にはどういうものが知りたかった。そこで参考になりそうな「世界一やさしい問題解決の授業」を読んだ。 世界一やさしい問題解決の授業―自分で考え、行動する力が身につく 作者:渡辺 健介ダイヤモンド社Amazon このは非常に良かった。100ページ強と非常に少ないページ数ながら、その中に問題解決のためのエッセンスが詰め込まれていて勉強になった。分解の木や課題分析シートなど問題解決のためのツールもコラムに書かれていて、これらも参考になる。とにかくおすすめ。 「課題を見つけて解決策をとりあえず試してみたけど何かうまくいかなかった」というような経験をしたことがある人は読んでみると良いと思う。薄いですぐに読めるので、とりあえず誰でも読んでみると良さそう。 このの中で自分が印象に残った次の二点をまとめておく。 問題解決とは「現状を正確に理解し

    問題の効率的な解決方法を学ぶ - 「世界一やさしい問題解決の授業」読んだ - $shibayu36->blog;
  • BM法による文字列マッチング学習メモ - $shibayu36->blog;

    grepで文字列マッチングしている時の仕組みを学ぶために、BM法などの文字列マッチングについて調べていた。調べたことをメモしておく。特にまとまってはいない。 参考になった文献は以下。 文字列の中から効率良くキーワードを探し出せ:コーディングに役立つ! アルゴリズムの基(7)(3/4 ページ) - @IT BM法をJSで実装している とりあえずイメージ掴むのには分かりやすい サービス終了のお知らせ BM法や、その亜種のHorspool のアルゴリズムとQuick-Searchを解説している ちょっとわかりづらいけど、一番ちゃんと書かれている すごく雑にイメージすると、 パターンの方に前処理を加えて、ある文字がパターンの中のどの位置にあるかを保存しておく パターンマッチングしていきマッチしなかった場合に、前処理で作った位置情報を使っていい感じにスキップする という感じ。雑すぎる。 BM法関連

    BM法による文字列マッチング学習メモ - $shibayu36->blog;
  • 問題解決のための質問群を学んだ - 「考える技術・書く技術」を読んだ - $shibayu36->blog;

    最近、自分は問題をうまく分割して解決する能力や、他の人に分かりやすく伝える能力がまだ足りていないと感じていた。そのあたりを強化するために、おすすめと言われた「考える技術・書く技術」を読んだ。 考える技術・書く技術―問題解決力を伸ばすピラミッド原則 作者:バーバラ ミントダイヤモンド社Amazon このは、わかりやすい文章を作るために、ピラミッド構造で論理構造を作るという技術を教えてくれるだ。このを読み終わって、ピラミッド構造を作るという考え方は、問題を分割するということにも、文章を他の人に伝わるように分かりやすく書くということにも応用できる、非常に有用な考え方であると感じた。 まず最初にぱらぱら読んでいた感想は、非常に良いことが書かれてそうなのだけど、なぜか頭に入ってこないということだった。このためあまり面白くないなと思いながら、気になるところを付箋はったりメモしたりしながら読んでい

    問題解決のための質問群を学んだ - 「考える技術・書く技術」を読んだ - $shibayu36->blog;
  • ゴールを決め目標を決める・解決案ではなく質問する - コーチングの学習で学んだこと - $shibayu36->blog;

    半年前から会社でシニアエンジニアという役職で、エンジニアのメンターの役割を担っている。その役割を出来るだけうまく演じられるように、半年間はコーチングの学習を進めてきた。 目標設定の仕方を学ぶ - 「ザ・コーチ」読んだ - $shibayu36->blog; なぜ最近コーチングや人間の学習モデルの勉強をしているのか - $shibayu36->blog; 「コーチングのすべて」読んだ - $shibayu36->blog; また、半年間、目標・1on1・評価と一通りの業務をこなし、コーチングの実践が出来た。 そこで今回はコーチングの学習と一通りの実践を通して学んだことで、特に役に立ったと思うことについて一旦まとめてみる。特に役に立ったと思った知識は以下の二つである。 ゴールを決め、現在位置とのギャップを考え、目標を決める 解決案を与えるのではなく質問する ゴールを決め、現在位置とのギャップを

    ゴールを決め目標を決める・解決案ではなく質問する - コーチングの学習で学んだこと - $shibayu36->blog;
  • パーフェクトJavaを読んだ - $shibayu36->blog;

    最近アルゴリズムの勉強でJavaを使っていて、いい機会だしどうせならJavaの言語の詳細な機能や考え方などを知りたいと思っていた。Javaをやっている人に聞いてみると「パーフェクトJava」が良いということなので読んでみた。 改訂2版 パーフェクトJava 作者:井上 誠一郎,永井 雅人技術評論社Amazon おすすめされたとおり非常に良かった。Java8に対応していて、Java8ならどう書くかを知ることが出来たし、クラスやインターフェースの構文の細かな詳細、コレクションの使い方や内部実装、ラムダ式の使い方や考え方、さらにはそれぞれの機能の内部まで細かく眺めることが出来た。Javaはこれまでの歴史からインターネット上には古いコードが無限にあるので、こういうが一冊リファレンスとしてあるのはありがたい。 このの中で個人的には以下の章が特に面白かった。これまでの経験から基的な構文はすんなり

    パーフェクトJavaを読んだ - $shibayu36->blog;
  • Perl Hackers Hubで執筆した「Perl開発への動的な型制約の導入」がWebで公開されました - $shibayu36->blog;

    以前Web+DBのVol.94のPerl Hackers Hubで執筆した、「Perl開発への動的な型制約の導入」がWebで公開されていました。 gihyo.jp Perlに動的な型制約を導入するのは結構簡単にできて、安全さがかなり変わると思います。興味がある人は見てください!

    Perl Hackers Hubで執筆した「Perl開発への動的な型制約の導入」がWebで公開されました - $shibayu36->blog;
  • ディレクターを経験して良かった - $shibayu36->blog;

    この記事は、はてなディレクターアドベントカレンダー2016の19日目です。昨日は id:shimobayashi の「効率的で課題解決的な態度にひそむ罠について」でした。 こんにちは、はてなでアプリケーションエンジニアをやっているid:shiba_yu36です。僕は現在はエンジニアをやっていますが、一度はてなでディレクター(いわゆるプロダクトマネージャー職)を経験しています。ディレクターに挑戦した理由は、マネジメントという分野にも少し興味があったためです。しかし、当時なかなかディレクターという職種を楽しむことが出来ず、結局1年足らずで挫折してエンジニアに戻ったという過去があります。 このような経験でしたが、僕はとにかく一度ディレクターを経験して良かったと思っています。なぜならディレクター経験がエンジニアとしての今の自分に非常に活かされているからです。そこで、今回は自分がディレクターを経験し

    ディレクターを経験して良かった - $shibayu36->blog;