サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
kamekoopa.hateblo.jp
from: <censored> to: <censored> 今日が最終出社日で、12月~1月は全部有給消化で次の所は2月の1日からです。 所属情報は明らかにしないスタンスなので聞きたい人は現実世界で聞いてください。 転職活動 今流行りのTwitter転職というやつをやってみました。ついったで「転職したい!」って言ってやるやつです。 転職活動自体は去年の2~3月くらいからずるずるやっていて、4月~5月くらいは左足首の手術で若干休んでいたのですが、普通に動けるようになってからまたふわふわ再開して8月くらいに1社からオファーを頂きました。 これまでの転職と違い、なんやかんや精神的に余裕があったので「もうちょっと色んな会社を見てみたいんです」とかいうクッソ我儘を言ってオファーを頂いた会社さんには待ってもらって、その後再度ついったで「転職したい!」ってついっとして転職第二期をはじめました*1。
あれこれが長くなってきて、やっていくうちに分かってきたこともあるので追記(ほぼコピペ) やってきた事 Javaで受託開発(1社め) ECサイトの管理画面側 tomcatとstrutsだった PHPでガラケーソシャゲ作り(2〜3社め) 懐かしの5番キー連打するタイプのやつ 2社めは自社フレームワーク、3社目はsymfony魔改造したやつ いろんな裏側のAPI作る仕事(4社め、現職) HBaseをバックエンドにしたAPIの保守(引き継ぎ) Play2でWebSocket使ってRedisのpub/sub使って負荷分散したシステム 社が昔から運営していたブログサービスの作り直し(会社の方針変更で途中で立ち消えた) とある基盤のシステムをgoで改善(あまりおおっぴらに書けない) 再利用性のある機能がとあるサービスに密結合していたりみたいなやつを分離してAPI化する仕事 会社のサービス基盤をAWSに移
やってきた事 Javaで受託開発(1社め) ECサイトの管理画面側 tomcatとstrutsだった PHPでガラケーソシャゲ作り(2〜3社め) 懐かしの5番キー連打するタイプのやつ 2社めは自社フレームワーク、3社目はsymfony魔改造したやつ いろんな裏側のAPI作る仕事(4社め、現職) HBaseをバックエンドにしたAPIの保守(引き継ぎ) Play2でWebSocket使ってRedisのpub/sub使って負荷分散したシステム 社が昔から運営していたブログサービスの作り直し(会社の方針変更で途中で立ち消えた) とある基盤のシステムをgoで改善(あまりおおっぴらに書けない) 再利用性のある機能がとあるサービスに密結合していたりみたいなやつを分離してAPI化する仕事 会社のサービス基盤をAWSに移行する仕事 ↑の上にswarm(≠swarm mode)とconsulとnginx(+c
最近ずっとDocker介助おじさんとなっていますこんにちは。 Docker、便利なんですけどつらいことも色々多い。 Dockerを運用していると、コンテナの再起動や削除時にコンテナのステータスがRemoval In Progressとなってコンテナを削除できなくなったりすることがちょいちょいあります。 こういう時は大体Dockerデーモン再起動しか無くて本当につらいのですが*1、再起動したらしたで、今度は止まったコンテナ立ち上げようとして下記みたいに言われてstartが失敗したりするわけです。 Error response from daemon: rpc error: code = 6 desc = "mkdir /run/containerd/{container id}: file exists"こうなるともうコンテナ削除するしか無いですし、削除したら部署の皆さんに「コンテナ起動でき
メモです。 Goをインスコするためにgvmをインスコする Ubuntu使ってるんですがaptにあったのなんかすごい古いっぽかったのでソースインストールかなぁと思ってたら、どうやらgvmと言うrbenvみたいなやつがあるらしくそれ使ったほうがいいとのことです。 gvmをインスコするためにgvmを削除する gvmって聞いて、あれ?Groovyでもそんなんなかったっけ?と思ったらやっぱりありました。なんかそれでgvmはsdkmanに名前変わったらしいです。 gvm(groovyの方)は起動して指示に従えばさくっとsdkmanに更新され、互換性のために.gvmディレクトリが.sdkmanディレクトリへのシンボリックリンクに変わったり、gvmコマンドがsdkコマンドへのaliasに変えられたりします。 が、この状態でgvm(golangの方)をインスコするといろいろ競合してつらい思いをすることになる
TL;DR LeiningenインスコしてIntelliJ IDEAにCursiveプラグイン入れるとLeiningenで生成したプロジェクト普通に読み込めるし括弧辺りの問題もだいぶ快適になるよ。 テスト環境何もしなくてもとりあえず整ってるっぽい 完全にマスターとはHelloWorldやったり普通のFizzBuzzやったり出来た、を指す隠語 経緯 clojure使えないのにclojureのリストに入れられた…gkbr 2015-09-04 00:15:16 via SobaCha クロージャー出来ないのでクロージャーのリストに入れられてない。セーフ。 2015-09-04 00:32:33 via Twitter for Android @kamekoopa 見間違いでなければ入っていた気がしましたよw 2015-09-04 00:54:01 via Twitter for iPhone
備忘録 仕事でDockerを使っていて CMD ["app"]みたいな単一プロセスでコンテナを立ち上げるのではなくCMD ["/sbin/init"]みたいにしてsshdとか複数プロセスを立ちあげたい DBの接続設定みたいな、本番環境とか開発環境とかの設定を切り替えたい 環境ごとにイメージをビルドするのはナンセンス ならdocker run時に-eオプションで環境変数で設定を指定しよう というような状況があってウンウンやってたんですが、うまくアプリに環境変数が渡ってくれない。 具体的には/sbin/initがsupervisordを起動していて、supervisordがアプリのプロセスを管理しているという状況なんですが、Google先生に聞いてみても単一プロセスで使ってみた環境変数でいい感じに出来るよ*1と言う記事が多くて、複数プロセス立ち上げる場合run時に環境変数で設定注入するんどうし
暇だったので書いたスクリプトをメモ。何に使おうとか何に使えるかとか全く考えてないです。 以上(キリッ
Docker、よくあるLAMPのPJで、本番はまだアレだったので個々人用の開発環境として使ってて、アプリのデプロイはDockerfileじゃなくてAnsibleでgitからpullする方式。Jenkinsさんもあると言う状況。 2014-07-09 13:15:29 via Janetter @kamekoopa Dockerにmysqlまでセットアップしてるんだけど、ゼロから環境を構築してAnsibleでデプロイ(DBマイグレーション含む)して、を手軽にがんがんできるのが非常に良い。 2014-07-09 13:17:26 via Janetter to @kamekoopa @kamekoopa 環境を積極的にぶっ壊してもいいというの非常に心強く、特にDBマイグレーション動くかどうか確かめる時に、適当にデータ突っ込んだ状態でdocker commitしておいて、想定通りになるまでDBぶ
Play framework 2.x Java and 1.x Advent Calendar 2013 - Adventarの3日目のエントリです。 Play2は2.1からコントローラーがインスタンス化出来るようになったのでDIでサービクラスを注入したり出来るようになりました、みたいな事を何度か言ったような言わなかったような気がしますが、具体的に説明したことなった気がするのでちょっとサンプル書いてみたよ、というエントリです。*1 routes Playは基本的にコントローラーをインスタンス化しないため、コントローラーをインスタンス化するためにはroutesファイルに特殊な定義をする必要があります。 特殊な、といっても別に大したことはなくて、頭に「@」を足すだけです。 GET /instantiate @controllers.Instantiate.index() 頭に「@」をつけて定義
6/7(土)に ミニ四駆を走らせる会 - connpass を開催しました。 レポート圧力かかってるけどどうしよ。写真も撮ってないし自分のことに必死であまり回りも見てなかったぞ…。 2014-06-07 20:38:45 via Twitter for Android とは言え主催者が何も書かないわけにもいかないので書いてみます。 開催の経緯 PyKon JP 2014 from ke-m kamekoopa にも記載した通り、何故か周辺でにわかにミニ四駆が流行りだしたのが発端でした。 いざ買って走らせてみたら、やっぱり大きなコースで走らせたいよねー欲が湧いてきて、そのうち誰かイベントでも立ててくれるに違いないと思ってたら立たなかったので勢いでconnpassに立てたという流れです。 当日の様子 既にVさんが書いてくれてるミニ四駆走らせたいに参加してきた · GitHubに詳しいですが、ガ
python勉強がてら作ったけどMerge Request取得する機能作ったところで力尽きたのでとりあえず公開。気が向けば他の機能も作るかも。あるいは誰か作ってください。 GitHub - kamekoopa/git-lab: subcommand of git for access gitlab 使い方 git configで以下の設定をする gitlab.host gitlabのurl(スキーマまで含める) gitlab.private-token profileページにある認証トークン gitlab.project プロジェクト名(e.g group/project_name) MergeRequest IDを指定して1件ずばりで参照する git lab requests show {ID} プロジェクトのMergeRequestを一覧する git lab requests list
やましろ先生の送別会に行ってきました。 正直僕はjava-jaだってid:Ewigkeitに首根っこ掴まれて引っ張り込まれたのが最初だったし、それ以降も持ち前のコミュ障を活かして隅っこのほうで北海道のサラダラーメン食ってるだけの人間でしたし、一方的に知ってるだけで、やましろ先生と絡んだことも1,2回しかありませんでした。 そういう人間がこんな会に参加していいのかどうかギリギリまで迷っていたのですが、少し話しただけでも彼はいい人だってのが分かってたし、せめて送るくらいのことはしたいなと思って参加しました。 送別会、非常にいい会でした。java-jaらしい無茶苦茶な会でしたが、それが彼らしくて良かった。 本人不在のまま借金の清算が成立する 死人に鞭打つエピソードの紹介、名言集 花火 ゲームの景品のMacBookがその場でベルギービールに沈む etc 妹さんもいらっしゃってたんですが、妹さんもや
Play framework 2.x Java and 1.x Advent Calendar 2013 - Adventarの24日め(4回め)。 仕事でPlay2を使ったAPIを3つくらい作りましたが(うち1つは会社の方針転換で蔵入りしましたが)、自動デプロイの仕組みとして個人的にこんな感じに落ち着きました、というエントリです。*1 HerokuみたいなPaaSじゃなくて、EC2みたいなIaaSでもなくて、普通のサーバを想定してます、と言うか今の仕事がそうなので。 概要 distで固める Fabricでアップロードして配置する Fabricで起動する 以上、と言う感じありますが、それじゃあんまりなので以下、個々。 distで固める 公式ドキュメントだとgit pullとかすると楽だよとありますが、これだとデプロイ先のサーバにPlay2がセットアップされている必要があります。セットアップ
Play framework 2.x Java and 1.x Advent Calendar 2013 - Adventarの13日目かつ2回目のエントリです。 孤高の戦士の一人です。 Play2もScalaのフレームワークとして一定の認知を得てきた感ありますが、Javaは無いことにされがちで寂しい思いをしています。 確かにScalaだと使える機能が使えなかったりとフレームワークとしての力を十全使えるわけではないのでどちらがより良いかと言われたらScalaなのですが、だからと言ってダメダメかと言われたらそうではないはず、きっと。 とは言え、Scalaの文化もあってか、PlayやPlayが提供するクラスのAPIには関数を引数にとるものがそこそこあって、一応Javaのラッパは提供されているのですが、まぁ、しんどいよね*1、という場面がちょいちょいあります。 ただし、Java8のラムダ式が使え
今どきのJava Webフレームワークってどうなってるの? - きしだのはてなをPlay(Java)でやったらどうなるの?というだけのエントリです。 ちなみに使ったこと無いのでlombok使ってないです。 何も考えてない なんも難しいこと考えないなら、やっぱScalaテンプレートが楽ですよね*1。 なんでもは書けません。 //Application.java package controllers; import play.mvc.*; import views.html.index; public class Application extends Controller { public static Result index() { return ok(index.render()); } } <!-- index.scala.html --> <!DOCTYPE html> <htm
例えばPlay2アプリを作っていてテストを書きたい場合、例えばDBを使ったテストなど、アプリケーションのコンテキストに依存するテストを書く場合、fakeApplicationを起動しないといけません。 ですが、テストケースごとにfakeApp起動してたらテストが遅くなるので、例えばJUnitなら@BeforeClassや@AfterClassアノテーションを使ってそのテストファイルの最初と最後に一度だけ起動停止を行う、みたいにするとテストケースごとの起動停止がなくなってテストが早くなります。 今Play2(Scala)でアプリを書いているのですが、Scalaの場合何も考えなければSpecs2を使って書くことになるわけですが、Specs2で上記のことをやろうと思った場合どう書けばいいのかが分からなくてウンウン唸ってたのようやく解決できたのでその備忘録です。 結論から言うとstepというのを使
備忘録です。Playのバージョンは2.1.1 GlobalSettingクラス(java用)にfilterを登録するらしきメソッドが生えていたので気になって調べていました。 filter作って登録できるなら色々出来る事もありそうだなーと思って調べてたんですが、ざっくりコード読んだ感じだと、自作のフィルタを作るための仕組みはScala用にはAPIがあるけれど、Java用には用意されていない様子で、Javaオンリーで自作フィルタを実装するには、ScalaのAPIをjavaから呼び出す必要がある模様。 で、実装したコードが以下。 結論から言うとかなりつらみがありました。 解説*1 *2 実装する必要があるメソッドは public EssentialAction apply(final EssentialAction next){} このメソッド。 多分引数として与えられるアクションはリクエストに
最近ずっとPlayframework2で遊んでいるのですが、Playもくもく会(日本Playframeworkユーザー会 | Doorkeeper)とかに参加してると 「IntelliJ IDEAマジいいよ!」 と猛烈pushを受けていて、Playのpluginもあるらしくて心が揺れていた所、先日半額セールやってたので思わず勢いで株式会社サムライズムさんでパーソナルライセンスを購入してしまいました。 が、この世に生を受けてからずっとEclipseと生きてきたのでさっぱり勝手がわかりません。*1 と思っていた所、昨日の深夜、@daisuke_mさんが@yusukeさんに「IntelliJ IDEAの使い方が分からん!」とやり取りをしていて、これはしめたもんだと、横で見ながら出てくるリンクをブクマする作業をしていたら @kamekoopa @daisuke_m ブログにまとめを! 2013-0
Playframeworkのプラグイン*1とは? Playframeworkはプラグインにより機能拡張できるのですが、Playframeworkにおけるプラグインって何なん?というのは僕の中でも結構フワフワしています。 結局のところただのライブラリっぽいのですが、ライブラリではなくプラグインとして組み込むことの利点は、フレームワークの起動時、及び終了時に、フレームワークに任意の処理を実行してもらえるところですかね? 故に、何らかのデータストアへアクセスしたり、テンプレートエンジンを履き替えたりといった「何らかの初期化処理がないと使えないんだけど、アプリ内からそういうのに感心を持ちたくない」ようなモノがプラグイン化に値するのかなーと思ってます。 プラグインを作るには Playアプリに組み込む際にはjarになっててクラスパスに入ってれば何でもいい*2ので、mavenで作ろうが、sbtで作ろうが
これです。 今回もほぼ個人用備忘録なので雑です。 デプロイメントパイプラインって何? from ke-m kamekoopa 入れたプラグイン Git Plugin Gitlab Hook Plugin 社内リポジトリがgit + GitLabなので Build Pipeline Plugin 肝 Copy Artifact Plugin 保存した成果物を取り回すため ジョブの作成 今回はデモ用なので簡単に、以下の3つのジョブ(フェーズ)を作りました。 commit-stage compile test stage*1 deploy(to 開発環境) commit-stageから自動発動 deploy(to ステージング環境) deploy(to 開発環境)から手動発動 まとめると commit-stage -[自動]-> deploy(to 開発環境) -[手動]-> deploy(to
備忘録ですお。 継続的デリバリー曰く「あらゆる環境に同じバイナリをデプロイせよ」 開発環境とか本番環境だとかで同じ設定を使っているなんてことは、まぁ、殆ど無いと思います。 DBの接続先とか、外部サービスのURIだったりとか。 なので、開発にデプロイする時と本番にデプロイする時で設定情報を切り替える必要があるわけですが、よく取られるアプローチとしては任意の環境用にビルドするというのがあると思います。*1 つまり build develとか build prodみたいなことをして、それぞれの環境用の設定で、それぞれの環境用のバイナリを作るというアプローチです。 しかし、継続的デリバリーはこう言っています。 「いろんな環境に簡単にデプロイできるようになるし問題の切り分けしやすくなるから、どの環境にデプロイするかにかかわらず同じバイナリ使え。」 そうなると、アプリケーション本体には設定へのポインタ
仕事でぶち当たったので備忘録。 結論としてはHBaseにおける削除というものの概念を取り違えてただけという悲しい結果だったのですが、同じ轍を踏まないようにエントリに残しておきます。 バージョン機能使ってる場合は特に注意したほうがよさそうです。 何があったの? 以下のコマンドをHBase Shellで実行しました。 # (1) hogehogeテーブルのrowkey1で指定される行のcf:cqカラムのバージョン1000をvalue1で更新 put 'hogehoge', 'rowkey1', 'cf:cq', 'value1', 1000 # (2) 検索 scan 'hogehoge' # (3) hogehogeテーブルのrowkey1で指定される行のcf:cqカラムのバージョン1000を削除 delete 'hogehoge', 'rowkey1', 'cf:cq', 1000 # (
イベントページ http://www.zusaar.com/event/312159 スライド Casual Complression on MongoDB - @just_do_neet http://www.slideshare.net/moaikids/casual-compression-on-mongodb MongoDBによるカジュアルなタイムラインシステムの実装 - @hito_asa http://www.slideshare.net/hitoasa/mongodb-13561725 カジュアルに非公式データバックアップ - @matsukaz http://www.slideshare.net/matsukaz/mongo-dbbackup カジュアルにソースコードリーディング - @choplin http://www.slideshare.net/choplin/ss
厳密な退職日は1月24日で、今は有休消化中なのでタイトルは若干釣りです。 最終出社日は去年の29日だったのを、今更退職エントリなんて…とも思ったんですが自分の足跡を残しておく意味でも書いておこうと思います。 辞めた理由 ぶっちゃけネガティブなものです。 面接時 僕「開発環境は?」 面「ハイスペックPCにデュアルディスプレイです」 →現実:Celeron メモリ1GB シングルディスプレイ 僕「バージョン管理は?」 面「svnを利用しています」 →現実:IRC上で声を掛け合いながら手動でFTPにデプロイ。ちょいちょい上書きして事故る …などなど、入社直後に「あれれ?」と感じることは多かったもののまぁ、そういうものなんだろう、と悶々しながらも開発を続けていました。 とは言えやっぱり非効率だなぁと感じることも多かったので、あーしたらどうでしょう?とかこーしたらどうでしょう?とか提案したこともあっ
ハマリまくって死ぬかと思いました。 結果として何とか入りはしましたが、確実にアカンやろこれみたいなのもあって 突っ込まれること覚悟で書いていきたいと思います。 そもそもGitLabってなに? gitのリポジトリ管理ツールであるgitosisというツールのwebフロントエンド。 あの有名なgithubみたいなのを自前のサーバーに持てるよ!というもの。 目標 初期化したてのVPS(CentOS 5.7)にGitlabをインストールして動かす。 1.下準備 gitlabはrailsで動いているのでrubyが必要です。 その他、SQLiteやpygmentsに依存しているのでSQLiteとeasy_installもインストールします。 また、gitlab言うくらいですからgitも必要です。 例によってyumに入っているものは古いので、ソースからインストールします。 そもそもgccとかも入ってないの
このページを最初にブックマークしてみませんか?
『kamekoopa.hateblo.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く