ブックマーク / ota42y.com (67)

  • goroutineの動き方を調べた

    shinjuku.rbで話した内容です。 が、スライドだけだとよくわからないのでもう少し文章を補足した版を上げておきます。 要約 goroutineの実態はスレッド go xxxした関数はプロセッサ数に応じて適切なスレッドに割り振られて処理される work-stealingアルゴリズムで処理のスケジューリングをする goroutineとは何か 以下のように書くと、非同期でgo xxxに渡した関数が実行されます。 実態はスレッドらしいのですが、基的にはうまく覆い隠されており、以下のような細かい点は意識しなくてよいようになっています。 実行までの手順はどうなってるのか 非同期処理の管理はどうしているのか スレッド数の調節はどう行われているのか 今回は、goはこれらの点をどう解決しているのかを調べました。 goroutineの登録 上記のコードのうち、go xxxの部分をコンパイルした結果は以

  • bootsnapの速度計測

    shinjuku.rbで話した内容です。 資料あげようと思って完全に忘れていたので上げます… 要約 bootsnapでの速度向上を計測した rails runnerの起動時間を計測 かなりはやい 導入時のエラーは起きていない 繰り返し使った場合の影響はわからない 結論: とりあえず入れてみたら 資料 ここです。

    ota42y
    ota42y 2018/06/04
    1ヶ月ぐらい上げるの忘れていたやつ⊂(・8・)⊃
  • 技術書展4でMicroservices architecture よろず本を出した

    先日行われた技術書典4で、 Microservices architecture よろず を出しました。 足を伸ばして頂いた方、ありがとうございます。 #技術書典4 設営完了!!! pic.twitter.com/7YawpUZrLw — おおた (@ota42y) 2018年4月22日 当日は150部持ち込みましたが、13時頃には売り切れました。 どうもありがとうございます。 #技術書典4 紙は売り切れたので電子版800円になりますー https://t.co/Sovvm1paqY — おおた (@ota42y) 2018年4月22日 当初は100部ぐらい売れてコミケに持って行けたらなーと思っており、かつチェック数的にも最後の方でギリギリ売り切れるかも…? といった感じでしたので、こんなに早々に売り切れるのは予想外でした。 電子版を頒布していましたが、そちらも15:30頃には一時的に売

    ota42y
    ota42y 2018/04/23
    #技術書典4 で出したので感想。思った以上に手にとって頂けて何より(*゜▽゜*)
  • 技術書典4でMicroservices architectureよろず本を出します

    Boothで電子版の販売をしています Microservices architecture よろず - ota42y - BOOTH(同人誌通販・ダウンロード) 技術書典4の"か13”、「すべてがM(icro)になる」で、 Microservices architecture よろず を出します。 https://techbookfest.org/event/tbf04/circle/16650003 マイクロサービスアーキテクチャに関する様々な事を書いたになります。 著者は私(@ota42y)と、@hyata、@qsona、@shinofumijp、@nobuhikosawai、@gemaの6人です。 人体ってマイクロサービスだよね、的な発言が著者人の1人からあったのでこんな表紙になっています。 目次は以下で、全77ページになります。 第 1 章 マイクロサービスとは何か? 1.1

    ota42y
    ota42y 2018/04/10
    とりあえず入稿できたので…技術書典4でマイクロサービスに関するよろず本を出します!!!!!!!!!!!!!1
  • gemのバージョンアップで依存関係が壊れるのを調べやすくした

    要約 gemのdependencyに < 5.2.0と書いてあると、 5.2.0.rc2までインストールできる 5.2.0がリリースするまでインストールできないと気がつきにくい 任意のgem依存関係を上書きして、bundle install/updateを可能にするgemを作った https://github.com/ota42y/virtual_gem 5.2.0.rc2を元に5.2.0のgemを作れる 任意のgemの依存関係を書き換えられる 事前に依存関係が壊れるのを調べやすくなる gemの依存関係によるインストール失敗 現在、Rails 5.2.0.rc2がリリースされています。 ですが、仮に現状で上手く動いていたとしても5.2.0のリリース時に一部のgemの依存関係が5.2.0.rc2までしか受け入れておらず、インストールできなくなる可能性があります。 gemには依存関係を設定でき

    ota42y
    ota42y 2018/04/04
    railsのアップデート時に依存関係が < 5.2.0 なgemがいるとアップデートできないので先回りして対応したい…けど依存関係全部調べるの面倒…みたいな要求を解決するgemを作りました。
  • Globalizeを使ったRailsを5系対応する際にはまった

    要約 columns_hash等でI18n対応したカラムと同名のカラムを参照してると落ちる だいたいGlobalizeのtranslateしたときの消し忘れなのでつらい チェックして消す&今後増えないようにするgemを作った 問題 GlobalizeをRails5対応版(5.1.0.beta2)にあげる 一部の処理が落ちる(´・_・`) 原因 News.columns_hash.keysは、そのモデルのカラム名を配列で返します。 GlobalizeのRails 5未対応版の5.0.1が入っているとDBのカラムをそのまま配列にして返します。 しかし、Rails 5対応版の5.1.0.beta2では、I18n対応したカラム名と同名のカラムを除いたものを返します。 そのため返ってくる値がバージョンによって代わり、それに依存している処理がおかしくなります。 ただし、この影響を受けるカラムは多くの場

    ota42y
    ota42y 2018/03/28
    賞味期限が切れる前にrails 4.2から5対応でglobalizeが辛かった話と、対策gemについてのやつを上げとく。
  • 一部のSAMLライブラリの脆弱性の詳細

    複数のSAMLライブラリに認証を回避できる脆弱性があると明らかになりました。 JVNVU#98536678: 複数の SAML ライブラリに認証回避の脆弱性 どういう脆弱性なのかが書いてあり、かつ簡単に理解可能だったので詳細を書いていきます。 Duo Finds SAML Vulnerabilities Affecting Multiple Implementations | Duo Security 要約 簡単に説明すると、認証した結果のデータを改ざんすることで別のユーザになりすませてしまう問題です。 来なら署名が存在するため改ざんしても検出されてしまいます。 ただし、XMLの署名には意味的に同じであれば表現方法が違うデータであっても同じとして見なす仕様があります。 そのため、問題のあるライブラリでただしく取り出せないような表現方法にデータを改ざんすることで、別のデータをライブラリに読

    ota42y
    ota42y 2018/03/02
    ruby-samlやsaml2-jsの脆弱性のやつ。ちょっと気になったので書いた。
  • ゼロから始めるgem生活

    背景 周りでgemを作りたいという人は多いのですが、なんか大変そうといった印象で実際に手を動かすのに躊躇する人が多かったので、心理的ハードルを下げるために30分程度で0からgemを作るハンズオンをやりました。 これはそのときにやったことのメモで、現状これに沿って行っていけば簡単なgemを公開できるようになります。 ゴール 簡単なgemを作成してrubygemsで公開するまで 事前準備 githubにアカウント作る git pushで自分のリポジトリにpushできる状態 ruby 2.0以上 gem install bundler 済み gem update –system 済み 名前決め まずgemの名前を決めます。 他のgemと名前が被ってはいけないので、 https://rubygems.org/ で検索して無い名前をつける必要があります。 面倒な場合は、 nickname-hello

    ota42y
    ota42y 2017/08/20
    gem広める活動してたときのハンズオン内容
  • committee + prmd でJSON Schemaをいい感じに運用する

    FiNC Developer Advent Calendar 2016の19日目の記事です。 要約 リクエスト・レスポンス形式のドキュメントはメンテが大変 メンテされていなくても気がつかないため放置され気味 committeeでJSON Schemaに実装が沿っているかを確認可能 prmdでJSON Schemaを楽に書ける+人が読めるドキュメントが生成できる メンテされていない事が検出できるので続く(はず API作成時のリクエスト・レスポンス形式問題 サーバとクライアントで並行開発しながらAPIを作成する場合、以下のようにリクエスト・レスポンス形式を整えにくいという問題があります。 リクエストの形式が想定と違う 想定外のキーを送ってくる 構造が想定していない構造 レスポンスに知らないキーが含まれている 同じデータなのにエンドポイントによって形式が違う enumの数値だったり、対応する文字

    ota42y
    ota42y 2016/12/19
    アドベントカレンダーの記事です。前はクライアント側だったので、JSONのフォーマットが決まってて参照可能なことの良さがよくわかるので、凄く重宝しています。
  • Shinjuku.rb #42でRubocopについて話した

    Shinjuku.rb #42に行ってきました。 http://shinjukurb.connpass.com/event/42245/ 今回はコード分析・解析系のgemがテーマで、私はRubocopについて発表しました。 発表内容 Rubocopはソースコードをパーサgemを使ってASTに変換し、ちゃんとどういう構造なのかを見ていて凄くちゃんと解析していたので凄いなーと思う反面、 自分でルールを追加するのもの凄く大変そうでした。 また、こういったコードの整形ツールは自転車小屋の議論になって導入するの凄く大変だよね…という闇の深いディスカッションが行われました… やはり何処も苦労するところは同じようです…(´・_・`) その他 リファクタリングを支援してくれるgemが紹介されていましたが、 基的に既存部分を切り出す→新しいロジックと同時に実行して実行結果をチェック→結果をDBとかに保存す

    ota42y
    ota42y 2016/10/27
  • 恋になりたいAQUARIUMの聖地、伊豆・三津シーパラダイスに行ってきた

    恋になりたいAQUARIUMの聖地、伊豆・三津シーパラダイスに行って来ました。 発売日当日に行きましたが、平日なので他に同じ目的で来ている人は見かけませんでした。 [](/image s/blog/2016/2016-04-28-lovelive-sun-aquarium-logo.jpg) 聖地の場所 このPVのほとんどは伊豆・三津シーパラダイスがモデルになっています。 みとしー自体も特に隠しておらず、公式サイトにモデルになったと書いてあります。 (2016/04/27現在) 行き方は三島から伊豆箱根鉄道の伊豆長岡駅で下車し、 伊豆・三津シーパラダイス行きのバスで20分程度です。 シーンごとの場所 地図 公式ページの地図にプロットするとだいたい以下のようになります。 実際に行く人は参考にしてください(クリックで拡大) [](/image s/blog/2016/2016-04-28-lo

    ota42y
    ota42y 2016/04/29
  • ラブライブ!ありがとうトラックの軌跡をまとめた

    ラブライブ!μ’sありがとうProjectの一環として、ありがとうトラックが日全国を巡っているそうです。 http://news.lovelive-anime.jp/app-def/S-102/news/?p=11201 公式Twitterで毎日どこにいるかがツイートされており、3/14に折り返しに入ったとのことですが、 実際どのくらい回ったのかが細切れになっていてわからなかったので、地図上にまとめました。 ありがとうトラックの軌跡 写真付きツイートで位置が判明したものを表示しています。 オレンジ色がありがとうトラック1号の位置、白色がありがとうトラック2号の位置になります。 クリックすると大きい画面になるため、そちらの方が見やすいと思います。 ありがとうの軌跡 3/15日の状況 1号は北海道まで太平洋側を北上していき、その後日海側を南に進んでいるようです。 2号は名古屋~奈良~四国か

    ota42y
    ota42y 2016/03/16
    とりあえずまとめた。随時更新していく。
  • うるう日に1番なりやすい曜日は?

    今年はうるう年のため、昨日の2016-02-29はうるう日でした。 うるう年は4年に一回かつ干支は12種類のため、うるう年になる干支は子と辰と申しかありません。 さて、うるう年にならない干支が存在しますが、うるう日にならない曜日というのは存在するのでしょうか? 存在しないなら、うるう日になりやすい曜日というのは存在するのでしょうか? 気になったので調べました。 うるう年のルール うるう年は4年に一回、ただし100で割り切れて400で割り切れない年は来ないというルールになっており、400年間で97回うるう年がおきて一周します。 そのため、一周する400年間の傾向を調べれば、後はその繰り返しなので変化がなく、うるう日の傾向をすべて調べたと言えます。 今回は2000年から2399年までのうるう年を調べました。 うるう日になりやすい曜日は何曜日か 97は7で割り切れず、6余るため、全ての曜日が均等

    ota42y
    ota42y 2016/03/01
    気になったので調べた。やっぱり100年に一度のスキップのせいで変な風に偏る…
  • Jenkinsのノード選択をNode and Label parameter pluginでやる

    概要 Jenkinsのノード制御はあまりカスタマイズが効きません。そのため、ノードを細かく制御したい場合はジョブを分ける必要があり、ジョブ数が増えて管理コストが上がります。このプラグインはパラメーターでノードを選択できるので、一つのジョブでノードごとにジョブを動かせるようになります。 Jenkinsのノード選択は柔軟性に欠ける Jenkinsのノード選択がパラメータでできるプラグインです。 Jenkinsでは基機能として、実行するノードを制限して特定ノードでだけジョブを実行できます。 ですが、この設定項目は柔軟性に欠け、パラメータでノードを切り替えたり、該当するノード全てでビルドするといったことができません。 そのため、例えばgoWindowsMac両方でテストを実行したい場合、windows用とmac用というノードごとの個別のジョブを作る必要があります。 しかし、それを続けるとJe

    ota42y
    ota42y 2016/02/28
    Pipeline Pluginは自分で全てやる必要があって大変だけど、こっちは既存のジョブに追加できるので便利
  • 開発・実行環境をDockerで整える

    概要 開発環境構築はだいたい辛い作業ですが、Dockerを使うことで構築がとても楽になります。もちろん銀の弾丸ではないので別のつらさは存在します。 しかし一歩も進まずに時間だけが過ぎることはなくなるため精神衛生上良く、開発を始める段階においてはとても効果的です。 開発環境構築が辛い 開発環境構築はプログラミングをする上で必須の作業ですが、依存関係など非常に多くの落とし穴があることが多いです。 また、環境構築そのものが目的ということは少なく、その先に別にやりたい事が控えていることが多いと思います。 そのため、とりあえずやってみようと思った際に、その試してみるべき部分にたどり着けずに時間を浪費していくのはかなり辛いです… 設定自動化スクリプトでは足りない 環境構築の手順が煩雑な問題に対しては、chefやAnsible等、自動で環境を構築する方法はいくつかあります。 これらは一度作れば同じ環境を

    ota42y
    ota42y 2016/02/27
    開発がしたいのであって開発環境構築がしたいんじゃないので、そこではまる事は可能な限り最小限にしたい…という要求に応えられそう。
  • dump/restoreコマンドでデータのバックアップ・リストアをする

    まとめ dump/restoreコマンドでパーティションごとバックアップ/リストアができる SDカードの中身を移行するのに便利 もちろんHDDでもいける Windowsは基的にSDカードの第一パーティションしか認識できない SDカードのデータ移行がしたい Androidに使っているMicroSDが速度面で不満が出てきたため、より早い物に入れ替えを行いました。 ですが、アプリのデータを入れていたりと、通常のMicroSDと使い方がだいぶ違うため、普通にコピペでバックアップ・リストアすると、権限周りやシンボリックリンク周りで問題が起きそうでした。 ASUS MeMO Pad 7 ME572CでLink2SDを動かす そこで、dump/restoreコマンドを使い、ファイルシステムを丸ごとバックアップ・リストアしました。今回の対象はSDカードですが、対象のデバイスは関係ないため、 HDDを対象

    ota42y
    ota42y 2016/02/07
    一個一個手作業で移していくのつらかったので(´・_・`)
  • 2015年のpixiv内ラブライブイラストの分析

    HP先行の結果が出ましたね。 …………ご察しください。 さて、前回(2015年のpixiv内ラブライブイラストの推移 )に引き続き、pixiv内のラブライブイラストについて見ていきます。 来はもう少し内容を書く予定でしたが、落選のダメージがでかいので少なめです…_(:3 」∠)_ キャラごとの投稿数増加率 映画で人気が出たキャラがいないかと思い、2014年の12月から2015年の12月までに総投稿数がどれくらい増えたかを調べました。 特に増加率が大きい場合、映画によって人気が上がった可能性が考えられます。 [](/image s/blog/2016/2016-02-04-chara_inc_rate.png) 小泉花陽と園田海未がかなり伸びていますが、この二人は去年12月時点では二期が始まってからの聖誕祭が行われていなかったので、前回が少なすぎただけの可能性があります。 一応投稿数の推移

    ota42y
    ota42y 2016/02/04
    各キャラの去年との対比や、カップリングと単体イラストとどっちが人気なのか?あとサンシャインについても触れています。
  • オーバーライドとオーバーロードは全く別物

    EffectiveJavaを読んでて、C++でも当てはまるのかな?と思って試してみたら当てはまったので… まとめ オーバーライドされたvirtualなメソッド呼び出しは実行時に決定 実態が子クラスなら、親クラスとして扱っても子クラスのメソッドが実行される 実態が孫クラスの場合は孫クラスのメソッドが呼ばれる 親から子、孫へと呼び出される関数が探されていく感じ オーバーロードされたメソッド呼び出しはコンパイル時に決定 virtual関数のように実態で切り替えが出来ない 実態が子クラスでも、親クラスとして扱うなら親クラスのメソッドが実行される 一致するものが無い場合は親クラスにキャストして一致するものを探す 子から親へと一致するものを探していく感じ オーバーライドとは メソッドのオーバーライドとは、親クラスのメソッドを子クラスで再定義することです。 C++では親クラスでvirtualにされている

    ota42y
    ota42y 2016/01/31
    オーバーライドとオーバーロード、カタカナだとよく似てるから紛らわしいけど、英語として理解すると全然別物と覚えられるのかな?
  • tmux-change-paneというコマンドを作った

    tmux-change-paneというコマンドを作りました。 https://github.com/ota42y/tmux-change-pane tmuxで現在開いているウィンドウの一覧を表示し、peco(pecol)で絞り込んで任意のタブに切り替えるアプリです。 似たようなものでswap-paneというものがすでにあります。 https://github.com/abicky/swap-pane swap-paneでは複数画面に分割している際に、全ての分割をいったん消して選択画面を表示します。そのため、切り替えのたびに画面が一度フラッシュし、かつ必ず左上に作業領域が移ります。そのため、右下で作業してるような場合にかなり視線の操作が強制的に発生してとても面倒でした。 tmux-change-paneでは今いる分割領域しか使わないため、作業する位置が大きく変わることがなく、また切り替え中も

    ota42y
    ota42y 2016/01/26
    作った。参考にしたやつは要するに全画面ポップアップなので、分割して作業してるととても不便。
  • 2015年のpixiv内ラブライブイラストの推移

    「はぁい!楽しい人生送ってる?」 私はファイナルライブ落ちたので楽しい人生は送れてません… さてーーー 去年「pixivのタグから読み解くラブライブイラストの歩み」というのを書きましたが、それ以降である2015/12月までの変化をまとめました。 去年との違いに絞っているため、量は少なめですが、それでも多すぎるので分割して更新しています。 今回はカップリングイラストについての変化、次回はキャラごとのイラストの変化とサンシャインの動向についてを予定しています。 (次: 2015年のpixiv内ラブライブイラストの分析) イラスト投稿数推移 こちらが2013年のアニメ一期以降のイラスト投稿数の推移を月ごとにまとめたものになります。 [](/image s/blog/2016/2016-01-22-lovelive_01.png) アニメ2期で一気に広まり、いったん落ち着きを見せましたが、映画が始

    ota42y
    ota42y 2016/01/23
    2015年の動きをまとめた。 #ラブライブ