echoサーバーを書いてみたときのメモ その3 マルチプロセス、ノンブロッキングI/O、I/O多重で複数クライアントを捌く

前回、前々回の続き。 echoサーバーを書いてみたときのメモ その1 ソケットAPIとTCP echoサーバーを書いてみたときのメモ その2 なぜ複数クライアントを捌けないのか 複数クライアントを同時に捌くために以下の方法で対応してみる。 ブロッキングI/Oのまま。…

echoサーバーを書いてみたときのメモ その2 なぜ複数クライアントを捌けないのか

前回、echoサーバーを書いてみた。その続き。 echoサーバーを書いてみたときのメモ その1 ソケットAPIとTCP - bati11 の 日記 このechoサーバーだと同時に複数のクライアントを捌けない。どうしてか?実際に試して見る。クライアントから2回telnetでつないで…

echoサーバーを書いてみたときのメモ その1 ソケットAPIとTCP

echoサーバーを書いた日の日記。 Head First C の11章を参考に、クライアントから文字列を受け取り、受け取った文字列をそのままクライアントへ返すechoサーバーを作る。echo サーバーは30000ポートを使用することにする。途中疑問に思ったところは主にUNIX…

プログラミング言語作成ハンズオンに参加してきた #lang_impl

プログラミング言語作成ハンズオンに参加してきました。楽しかったです! プログラミング言語を作成したことがないので、こういう勉強会で教えてもらえるのはすごくありがたいです。 connpass.com 午前中はざっとプログラミング言語処理系についての説明。そ…

GRUBの設定でカーネルが認識するメモリ容量を制限する

もう年末です。今年のISUCONではpixivさんの社内ISUCONで練習させていただきました。 inside.pixiv.net その時に気になったことがありまして。インスタンスタイプがc4.largeなのにメモリが1Gしかなくて、なんでかなーと。 $ free -m total used free shared …

JJUG CCC Fall 2016 で Spring のソースコードを読んだことについて話してきた #jjug_ccc

SpringはどうやってDIしているのか?というタイトルで話してきました。 資料はこちらです。 資料を書いている時にいろいろ迷ったのですが、Springのソースコードを淡々と話すスタイルにしました。過去にはSeasarやGoogle Guiceを使うことが多くて、Spring暦…

ISUCON6予選で負けた #isucon

ISUCON6 に yokohamanorth というチームで出場して負けました。。 2人(@hanhan1978, @trtaki)がアプリケーションの改修、おれがミドルウェアや SQL のチューニング、サーバリソースのモニタリングを担当してました。 最終スコアは、83482。予選突破ライン9…

Yokohama North Meetup #3 でしゃべってきた #yokohama_north

横浜北部のエンジニアで情報交換をする Yokohama North Meetup #3 を開催しました。 発表資料はこれ。 3月開催の前回は参加できなかったので、2016年の半年間くらいを振り返ってみました。やりたいと思っていたことを叶えるために転職したり、趣味でいろい…

記念日を忘れないためのWebアプリつくった

go

とにかく記念日とか何年目とか覚えられないので、そのためのソリューションが必要— kariya (@bati11_) 2016年4月27日 というわけでつくった。 http://how-many-days.appspot.com/ トップページにタイトル的なものと記念日を入力するだけです。そうするとハッ…

LINE BOT API でリマインダーつくった

LINE BOT APIのTrialに申し込んだはいいけど、なかなか作りたいものが思い浮かばず・・・。とりあえずリマインダーをつくった。 Node.jsで実装しております。 GitHub - bati11/line-bot-reminder こんな感じでリマインドを登録しておくと こんな感じでメッセ…

まったりAndroid Framework Code Reading #3 に参加してきた

まったりAndroid Framework Code Reading というイベントに参加してきました。Androidのソースコードをまったり読みましょう、という会です。仕事でNFCらへんのAPIを使ったのですが、裏側どうなってるのかなぁと思ってたので参加してみることにしました。 ma…

VimからSlack分報に投稿する

vim

こちらの記事に触発されてまして。 2016/04/05/EmacsからSlack分報に投稿する - ヽ(´・肉・`)ノログ VimでSlackの分報に投稿します(curl呼んでるだけですが・・・)。 ビジュアルモードで選択して ## で選択した部分を投稿します! #@ だと ``` で囲んだ…

DropboxのMarkdownをちょっと便利に使うツールをつくった

Githubのwikiで十分足りるんだけど、ちょっと欲しかったのでつくった! Dropboxに保存したmarkdownをGFMに対応して表示したり編集したりするツール。 Markdown-box コードはこちら。 github.com JavaScriptでDropboxのAPIを叩いてるだけ。せっかくなのでReac…

grails-react-boilerplate で React に入門した - 3日目 Babel, ESLint

前回、React Routerを使ったルーティング、サーバーとのデータ通信までできました。しかし、これまでECMAScript 5 (ES5) でJavaScriptを書いてきましたが、grails-react-boilerplateではECMAScript 2015 (ES2015) でJavaScriptが書かれています。 今回はBabe…

grails-react-boilerplate で React に入門した - 2日目 React-Router, サーバー通信

前回、ホットリロードに対応して、React-Bootstrapを使ってナビゲーションバーを実装(見た目だけ)するところまでやりました。 今回は、ナビゲーションバーをクリックすることで画面を切り替えるようにします。 前回に引き続き、以下の記事とリポジトリを参…

grails-react-boilerplate で React に入門した - 1日目 ホットリロード, React Bootstrap

普段の仕事はサーバーサイドばっかりだったので、年末年始でフロントエンドの知識をアップデートしたいなぁ、ReactかVue.jsやろうかなぁと思ってました。それで、こちらの記事を読んでると... uehaj.hatenablog.com サーバサイドJavaをずっとやってきて、モ…

AWS Lambda でGitHubのNewsFeedをTwitterに流す

AWS

前にGitHubのNewsFeedをTwitterで見たいなぁと思ってRubyで実装したものをHerokuで動かしていたのですが、AWS Lambdaがスケジュール実行できるようになったとのことで移行しました。 Pythonもサポートされたようなので、せっかくなので試す。AWSへの反映はこ…

第十二回 #渋谷java でSpring Boot で Swagger を使う話をしました

渋谷java行ってきました。Spring Boot と Swagger というタイトルでLTさせていただきました。内容はSwaggerをSpringから便利に使えるSpringFoxのお話です。 http://swagger.io/ http://springfox.github.io/springfox/ speakerdeck.com WebAPIのドキュメント…

ReactiveX (リアクティブ エクステンション)に入門した

ちょっとタイミング遅れてるけど、ReactiveX (Rx, Reactive Extensions) を勉強してみました。 TwitterやWeb上の記事などでよく目にしてたので気にはなってたのだけど、先日やっと触ってみました。 備忘録です。メモメモ。 使ったRxJavaのバージョンは、1.0.…

Sql2oでJava8のDate and Time APIを使う

こちらのスライドでSql2oというライブラリを知りました。 Java が支える 人気ニュースアプリ NewsPicks の裏側 // Speaker Deck 素のJDBCは面倒だけど機能豊富なDB関連のライブラリ使う必要はない、ってときにすごく便利そうなので使ってみました。 Sql2oで…

BigQueryのSELECT文

この記事はGoogle Cloud Platform Advent Calendar 2014 6日目の記事です。 Google Cloud Platform Advent Calendar 2014 - Qiita うちの会社ではGoogleAnalyticsのデータをBigQueryに流しています。どうやら3日目の記事を書いたsatoru_magさんの会社でも導…

Capistrano 3 で Java Webアプリケーションをデプロイする

タイトルの通りCapistranoでJavaのWebアプリケーション(warファイルとかJettyを組み込んだjarファイルとか)をデプロイしてるのですが、みなさんどうやってるんでしょうか!? 会社ではJava以外のプロダクトも結構あって、それらをCapistranoでデプロイして…

HerokuボタンでデプロイできるGitHub NewsFeedをつぶやくTwitter bot

こちらの記事を見て、GitHubのNewsFeedをTwitterに流したいなぁと思いました。 Feedly と Github timeline を twitter に流すようにした - tototoshi の日記 あと、最近Heroku Buttonというものを知って使ってみたいと思ってたので、GitHubのNewsFeedをTwitt…

Android Wearアプリつくってみた

スマートウォッチを手に入れて、せっかくなのでAndroid Wearアプリをつくってみました! 勢いでリリースもしました。初Androidアプリリリースなので色々不備があるかもしれません・・・。 Wear Profile - Google Play の Android アプリ スマホで入力したプ…

Android WearのData Layer APIを試してみた

Android WearのDataLayerAPIを試してみました。 handheld(スマホとかタブレット)とwearable(時計)間でデータをやり取りするためのAPIです。 ドキュメントを読むと大きくわけて以下の2種類の方法があるみたいです。 Data Items Wearable.DataApiクラスを…

Android Studio 0.6.0 で Groovy on Android

GroovyでAndroidアプリ書けるようになってうれしいですね! 以下の記事を参考に動かしてみたらすぐに動きました! AndroidStudio - groovyでAndroidアプリを開発 - Qiita Android Studio を0.6.0にバージョンアップするまでは・・・。 0.6.0にバージョンアッ…

Gradle勉強会を社内でやったときの資料(Gradleを使えるようになるために)

社内でGradle勉強会をやりました! その時の資料です。 Gradleを使えるようになるために Gradleを使えるようになるにはドキュメント読むのが一番なんだけど、Gradle(とGroovy)を全く知らないとドキュメントがスラスラ読めない、という印象を持ってます。 …

Fabric.jsを触ってみた

jsCafe19でFabric.jsを触ってみた話をしてきました。 そのときのスライドです。 Fabric.jsを触ってみた 作ってみた簡易なゲームです。 Flappy Ball MV*フレームワークとCanvas系のライブラリを一緒に使うとうまく書けないですよねー、って懇親会で話してま…

D3.jsのenter()が分からなかったのでコードリーディングしたメモ

前回、D3.jsでレーダーチャート書いてて、enter() で何が起きてるのかよく分からなかったのでソースコードを読んでみました。そのときのメモです。 長くなりました。一番下の方にまとめもあります。 読んだD3.jsのバージョンは、3.4.2です。 読んでみたらent…

D3.jsでレーダーチャートを書く(3日目)

前回に引き続きレーダーチャートを書き続けます!とりあえず今回で終わりにします。 今日は頂点にラベルをつけてみるのと、チャートを色分けするのをやってみます。 ラベル 各頂点が何番目のパラメータが対応しているのかを表示したいです。 SVGのtextを使う…

D3.jsでレーダーチャートを書く(2日目)

前回の続きです!引き続き、D3.jsでレーダーチャートを書きます。 レーダーチャートは書くことはできましたが、SVG領域の大きさが100×100であることが前提でコーディングされてます。 たとえば、前回作成したline関数はこんな感じでした。 var dataset = [ […

D3.jsでレーダーチャートを書く(1日目)

今年からD3.jsに入門しました。 チュートリアル(D3 入門 | スコット・マレイ | alignedleft)を読み終えたので、作ってみたかったレーダーチャートを作ってみます。こちらのサイト(->svg要素の基本的な使い方まとめ)を参考にさせていただきました。 D3.js…

JenkinsのFoldersPluginでジョブを整理整頓する

年越し前に書こうと思ってたらギリギリに・・・! 12/20の第8回Jenkins勉強会へ参加させていただきました。貴重なお話が聞けて楽しかったです!そこで、気になったプラグインが2つあったので、その中の1つ「CloudBees Folders Plugin」を試して見ました。 プ…

Karma + Mocha でRequreJSを使ったJavaScriptをテストする

たまにやると忘れてるのでメモ。 Karmaはnode.jsベースのテストランナーで、ターミナルからテストを実行できて、複数のブラウザを立ち上げてテストを実行したり、ファイルの変更を監視して自動でテストを実行したりもできます。 RequireJSを使ってるJavascri…

RequireJSにはこんな機能もあった

この記事はJavaScript - Client Side - Advent Calendar 2013 17日目の記事です。 JavaScriptでモジュール管理を実現できるRequireJSですが、どんくらい使われてるのでしょうかねー?初めて触ったときは、すげー!って思ったのを覚えています。 でも、試しに…

SeleniumWebDriverのテストをPhantomJSで実行する

watir-webdriverを使わなくても、selenium-webdriverだけでできるんですね。 slenium-webdriverよりも、watir-webdriverとかcapybaraの方が抽象度が高くて読み易くていいなー。

ChefでJava解析ツールENdoSnipeをお手軽にインストールする

結構前に、Java解析ツールバトルというセミナー?に行ってきました。 深いところまで話しを聞けて楽しかったです。 そこで紹介されたENdoSnipeというツールを使ってみようと思い、インストールしてみました。 が、噂通りちょっと面倒だったので、chefのレシ…

TDD Boot Camp Tokyo 2013-07 に参加しました!

TDD Boot Camp Tokyo 2013-07 に参加させていただきました。レポートではなく日記です。。初めてのTDDBCで不安もありましたが、とても楽しかったです。 しかも、「実践テスト駆動開発」の著者 Steve Freeman さんが参加してくださるというサプライズ付きでし…

PlayframeworkでOpenIDを使ったログイン処理

Playには、OpenID 2.0 を使うためのライブラリが用意されてます。 play.api.libs.openid というやつですね。http://www.playframework-ja.org/documentation/2.0.4/ScalaOpenIDこれを使ってOpenID認証してみたので、忘れる前にメモ。 Playのバージョンは、2.…

Play Frameworkの WS API でHTTP GETする

Playには、HTTP通信するためのライブラリが用意されてます。 play.api.libs.ws.WS というやつですね。ドキュメントにもある通り、これを使えば時間がかかるであろうHTTP通信を非同期に行うことができます。 http://www.playframework-ja.org/documentation/2…

Heroku上でPlay(Scala)+MySQL

Heroku上でPlay(Scala)+MySQLを動かしたときのメモ。 使ったのは、Play2.1です。PlayのドキュメントにHerokuへのデプロイ手順が書いてあります。その通りやれば特にはまらずできました。 http://www.playframework-ja.org/documentation/2.0.4/ProductionHer…

RSpecでエンドツーエンドテスト

Web API のEnd-to-Endのテストを自動化したいなぁと思ってました。 ついでにそれがドキュメントとして読めたらいいなぁと思ってました。 あと、RubyとRSpecの勉強もしたいなぁと思ってました。Cucumberとかはシナリオとステップが別ファイルになってしまうし…

JUnit実践入門のMockitoの部分をJMockitでやってみた

下書きの状態で眠ってた記事を書きました。タイトルの通りで、JUnit実践入門のMockitoについて説明してる部分をJMockitでやってみました。 すごく勉強になる本でした。読むと色々な知識がつながってすっきりです。JMockitは、Mockitoと比べていいところは、s…

MatadorのControllerをMochaでテストする

ひょんなことからnode.jsで開発をすることになりました。仕事でじゃないですけど。matadorっていうフレームワークとMochaっていうテストフレームワークで開発するんですが、とりあえずエンドツーエンドのテストを書きながら実装をしようとしたところ早速うま…

logbackのログレベルをTomcatを再起動しないで更新する方法

Tomcatを止めずにログレベルを変えたいときどうするか。 ドキュメントをざーっと見た感じだと以下の2つの方法があるみたいですね。 設定ファイルのオートリロードを使って変更 JMXで変更 ■設定ファイルのオートリロードを使って変更 logbackの設定ファイルの…

LombokのToStringアノテーション使うとmvn test で失敗したよ

Lombok0.11.6を使ってます。 eclipseのJUnitランナーから実行した場合は大丈夫なのに、mvn test で実行すると失敗しました。 コンソールには以下のようなメッセージが。 [ERROR] Failure executing javac, but could not parse the error: [ERROR] エラー: d…

セレクトボックスを選択しやすくするjQueryプラグイン

都道府県とかで長いセレクトボックス嫌ですよね。セレクトボックスを使いやすくするjQueryプラグインを作りました。 ソースはGistに張りました。 セレクトボックスを選択しやすくするjQueryのプラグイン[2013/8/15 追記] デモページを作りました。 http://ba…

ArtifactoryにSNAPSHOTとRELEASEをデプロイ

前回、Artifacotryにanonymousユーザでデプロイをしましたが、今回は認証が必要なadminユーザでデプロイしてみます。 あとついでに、SNAPSHOTとRELEASEとでデプロイ先を分けてみます。まずは、デプロイユーザをadminで行うための設定をmavenの設定ファイルに…

GuavaのOptional

ScalaのOptionみたいなやつJavaにないかなーなんて思ってたら最近のGuavaにあるんですね! http://code.google.com/p/guava-libraries/wiki/UsingAndAvoidingNullExplained#Optionalちょっと動かしてみよう。Optionalクラスってのがそれです。 Guavaのバージ…

sbtでプロジェクトを分割する

Scalaで開発してるプロジェクトでsbt0.10を使ってるんですが、テストの数が増えてきて、テストのコンパイルでOut Of Memoryが発生しちゃう、という問題にぶつかりました。 テストケースはScalaTest使ってます。解決策として、プロジェクトを分割してテストコ…