White Box技術部

WEB開発のあれこれ(と何か)

【kotlin】Coroutinesを使って、Spring WebFluxでJDBC処理を行う

ちょっと記事を寝かせすぎてしまったのですが、今回は1.3でKotlin本体に入ることが決まったコルーチンのお話です。 WebFluxでJDBCを使うには Schedulers#elasticで対応 この方法の問題点 コルーチン コルーチンの導入 WebFluxのリクエストをコルーチンで処理…

【GCP】Datalabをチームで使うための導入手順

職場で 「他のアナリストと分析結果を共有しやすくして欲しい。というか共有のJupyter環境を用意して欲しい」 という話があったのですが、環境の制約で、すぐに共有のJupyterを用意することはできなそうだったので、Google Cloud Datalabを使ってもらうこと…

【TypeScript】DangerのTSLintプラグイン紹介と導入の補足

Rubyの方のDangerをTSLintに対応させたかったので、ESLintのDangerプラグインのforkをforkして、DangerのTSLintプラグインを作りました。 danger-tslintの作成経緯 最初はDanger-jsの方のTSLintプラグインを導入したのですが、Dangerでいいなぁと思っていた…

Kotlinを使ったWEBアプリケーション開発の始め方

先日、とらのあな主催のKotlin勉強会で、Kotlinを使ったWEBアプリケーション開発の始め方という題で発表してきました。 ちょっと時間が押していたので発表は巻きになってしまったのですが、Kotlinで開発を始める後押しができていたら幸いです。 といっても、…

Kotlinのリフレクション(protected/privateメソッド呼び出し)

protectedメソッドへのアクセス Kotlinにおいてprotectedのアクセス修飾子は、Javaと異なり同一パッケージからのアクセスを許容しません。 そのため、テストコードなどでprotectedのメソッドを実行したい場合は、リフレクションを使う必要があります。 継承…

【Slackアプリ】Botkitのsimple_storageを拡張する

BotkitにはSlackアプリがJSONでユーザ、チャンネル、チームの情報を保持できる簡易DBのような仕組みがあります。 今回はこれを拡張し、保持できる単位を増やしてみました。 simple_storageの拡張 Botkitで利用されている簡易DBは、simple_storage.jsとして実…

BotkitでのSlackアプリ開発方法とデプロイ方法

現在、Slackアプリを開発中なのですが、初めてのこともあり色々と学ぶことが多かったです。 Botkitでの開発 BotkitとBabelの導入 開発時の注意点 Botkitの注意点 SlackアプリとBotsの違い Slackへの設定 Basic Information Install App Interactive Componen…

2017年に読んだ本と2018年の抱負

新年、あけましておめでとうございます。 2017年に読んだ本の振り返り 本当は去年のうちにやっておきたかったのですが、 読んだ本から去年の自分の興味を振り返り、今年の抱負を考えていました。 JavaScript系 JavaScriptはjQueryで知識が止まっていたので、…

JOOQをGradleプロジェクトで使う

2017/12/15追記:gradle buildからJOOQのコード生成を除外 サーバサイドの開発をKotlinで行うために、ここのところ調査・検討を色々していました。 概ね問題なさそうという結論が出たので、それ以外の技術選定をしていたのですが、 O/R Mapperに採用すること…

【まとめ】Java SE 9/EE 8リリースイベント 兼 JavaOne 2017 報告会

Javaな仕事に戻ったのもあり、JJUGのイベントに行ってきました。 当日の発表内容や様子は、以下にまとめてくださった方がいるようです。 ちなみにこのイベントの内容は、動画で公開されています。 参加できなかった方もこちらを見ていただけると、Javaの今が…

GitHub Enterprise上のRubyコードのカバレッジをCircleCI Enterpriseで集計し、結果をSlack通知する

カバレッジのSlack通知 こちらの内容を参考に、CircleCI Enterpriseでビルド時に集計したカバレッジを、Slack通知できるようにしました。 参考元のスクリプトではcoberturaとjacocoに対応していましたが、simplecovにも対応してあります。 あと、取得元をGit…

「テストを書く文化がないからテストがないんです」

それは怠慢だろうが!いい加減にしろ!! じゃあテストコードはこのプロジェクトなくていいのか?と問えば、ある方がいいと思うと答えてくるが、 じゃあなぜ書かないのかと問えば、文化が・・・と答えてくる。 中には、画面で実際にオペレーションをしてテス…

Circle Checker作りで学んだこと(GroovyとかSpockでのモックの書き方とか)

技術的なこと 前回はCircle Checkerの紹介だったので、今回は作って学んだことを書こうと思います。 ※Circle Checkerの紹介記事はこちらです。 技術的なこと 実装の話 リモートのGitリポジトリとローカルをマージ 便利なDTOの定義方法 Twitter APIのカーソリ…

【自作ツール紹介】 Twitterのユーザ名からイベント参加情報を抽出するツール「Circle Checker」

なぜ余裕を持って行わないのか・・・ 原稿に追われていようといまいと、不精な性格が災いして、 イベント直前にならないとサークルチェックをしない私のような人に「余裕を持って行え」とか言っても無駄なので、 プログラマらしくプログラムで解決を図ってみ…

GradleプロジェクトのSpockのテストをCircleCIで実行してJaCoCoでカバレッジを取りつつCoverallsで表示する

ちょっと思い立ってJavaでコードを書いていて、 さらに思い立ってカバレッジのバッジをREADMEに付けようとしたら、 思いの外ハマったので「GradleプロジェクトのSpockのテストをCircleCIで実行してJaCoCoでカバレッジを取りつつCoverallsで表示する」ための…

新年の挨拶と、reviewetのバージョンアップ連絡

新年あけましておめでとうございます 2日に、幼少の頃以来の初詣に行ってきました。 それもずっと行きたかった神田明神へ参拝することができたので、今年は幸先がいい感じがします。 IT情報安全祈願のお守りも購入できたので、後は頑張ってシステム作りに励…

Twitter画像取得ツール「reins」の0.3版をリリースしました

seri.hatenablog.com 前回の紹介からほぼ2年ぶりですが、Twitterからいい感じに画像を取得するツールのreinsの最新版をリリースしました! reins 0.3 今回、以下の機能追加・バグ修正を行っています。 リツイートの取得に関する動作変更の選択機能の追加 rei…

【Shansible】VagrantとAnsibleでのShangriLa開発環境構築

Shansible Shansibleは、秋葉原IT戦略研究所のProject ShangriLaでAnime APIが動作するサーバ群を構築するためのプロジェクトです。 Shansibleを利用することにより、VagrantとAnsibleを使って簡単にローカルでAnime APIの動作を確認する環境を作ることがで…

【Reviewet】アプリレビュー通知ツールのその後

Reviewet 以前も紹介したアプリレビュー通知ツールのReviewetですが、その後も少しずつ変更を加え、 一部の挙動や起動方法も変わりましたので、今日はその紹介です。 変更内容 ざっくり書くと変更点は以下になります。 メールの件名に、どちらのOSのレビュー…

【Ansible Meetup】うちのチームの話をしてきました:共通言語「Ansible」

Ansible Meetup in Tokyo 2016.06で発表者枠が頂けたので、自チームでのAnsible運用の様子を発表してきました。 共通言語「Ansible」 Ansibleは仕組みがシンプルなので、コード全体が正確にはわからなくても、なんとなく動作を推測できる構成管理ツールだと…

【自作ツール紹介】iOS/AndroidアプリのレビューをSlack/Email通知するNode.jsアプリ「reviewet」

追記(2016/05/29):メール通知機能、実装しました タイトルの通りですが、Node.js上で動作するiOSとAndroidのストアレビューをSlackに通知しつつメール通知もできるプログラムを書きました。 作った理由 iOSとAndroidアプリレビューをSlack通知してくれる…

第3回 ShangriLa MeetUpの振り返り

ShangriLa MeetUp 第3回目となる、ShangriLaのMeetUpを先日の4/9(土)に秋葉原で実施しました。 (ShangriLaは、OSSコミュニティの秋葉原IT戦略研究所が作成している、アニメ情報のIT化プロジェクトになります。) 3回目ですが、コミュニティのメンバー以外…

【logrotate】CentOSでログローテする

ログローテはたまにやろうとすると、あれどうだっけ?となるので logrotateを使ったログのローテーション方法をまとめました。 前提 環境(OS):CentOS 6.6 利用機能:logrotate、cron 今回は、ローテーションしたいログ、例えばアプリケーションログを /va…

php-fpmはgraceful restartしません(回避策あり)

php-fpmはgraceful restart. そう思っていた頃が私にもありました 以下の公式ドキュメントに「緩やかな (graceful) 停止/起動 機能を含む高度なプロセス管理」と記載があるので、 何の疑いもなくservice php-fpm reloadを叩いたらプロセスが落ちました。。 P…

【duolingo】最近の英語学習方法

duolingoを使って英語の勉強をしています。 www.duolingo.com どういうものか? ざっくり言うと、文法、用途でジャンル分けされた内容の小テストをひたすら消化していくものになります。 出題される問題は、英文を音読するだけのもあれば、翻訳(日英、英日…

【Linux】メモリがカツカツなサーバのメモリを復活させる

メモリ枯渇の背景 仕事で、PHPのPhalcon FWで作ったAPIアプリケーションが乗ったphp-fpmサーバを運用しているのですが、 こやつで大量のリクエストをさばけるよう、負荷試験を行ってチューニングした結果、 現在php-fpmプロセスは、staticでリクエストを待つ…

MacPortsでMySQL5.7をインストールする

homebrewが猛威を振っていますが、MacPortsおじさんの私は元気です。 MySQL 5.7をインストールする 仮想環境にはMySQL 5.7を入れたりしていましたが、そういえばMacには入れてなかったのでインストール作業をしてみました。 環境情報 OS X Yosemite (10.10.5…

Phoenix Framework Documentの翻訳:Overview

www.phoenixframework.org 概要 Phoenixは、サーバサイドMVCパターンを実装するためにElixirで書かれたWebフレームワークです。 その構成要素と概念の多くは、Ruby on RailsやPythonのDjangoのような、他のWebフレームワークの経験を持つ私たちに馴染みのあ…

勉強会おじさんになって思うこと

チーム内交流のために勉強会を開催していたら、なんか勉強会おじさんっぽくなってしまったので 今後の実施方法も考えて、少し現状を振り返ってみました。 なぜ勉強会を始めたのか? そもそも勉強会を始めるきっかけだったのは、もちろん単純にやりたかっただ…

【Groovy/ShangriLa】JsonSlurperとHTTPBuilderの使い方サンプル

引き続きShangriLaを例にしていますが、今度はGroovyでGETリクエストの実行と返却されたJSON文字列を処理してみました。 おや、Gradleサイトの様子が・・・! README書くためにGradleのサイトに行ったところ、サイトがリニューアルしていました。 Gradle l M…