タグ

ブックマーク / udzura.hatenablog.jp (17)

  • mod_mruby を読む。その1 - ローファイ日記

    諸事情で(早くこの諸事情を公表できるようにがんばる系)、Apacheの拡張の書き方や mod_mruby の設計思想、実装について知りたくなった。 ちまちまと読んでいく。もともと社内のNotionに雑にメモしていこうと思ったが、フィードバックも欲しいので晒していく。またこのブログにシリーズものが増えたのですあった...。 まずモジュールの定義全体。 https://github.com/matsumotory/mod_mruby/blob/master/src/mod_mruby.c#L918-L928 #ifdef __APACHE24__ AP_DECLARE_MODULE(mruby) = { #else module AP_MODULE_DECLARE_DATA mruby_module = { #endif STANDARD20_MODULE_STUFF, mod_mruby_c

    mod_mruby を読む。その1 - ローファイ日記
  • 何もツールがなくてもコンテナの中のTCP通信の状態を見たい - ローファイ日記

    完全に消費税に負けた... 今日も小ネタです。 一般に、以下のようなことを調べる時 netstat や ss などのツールは便利です。 あるポートがリッスンされているか知りたい あるコネクションに実際に通信があるか知りたい MySQLサーバなど外部プロセス/サーバにコネクションが貼られているか知りたい でもコンテナ環境では、そんな余計なツールは入っていない!!!ことも多い。 そんな時でも、 /proc ファイルシステムはほぼ間違いなくマウントされているはずです。 なのでそこを直接見ることも検討しましょう。 /proc/net/tcp(6) を眺める コンテナのネットワークに直接入るには、 nsenter などを使うことができます。今回はすぐ用意できる環境があったので Haconiwa ですが、 Docker などで置き換えて試してください。 $ ps auxf ... root 13252

    何もツールがなくてもコンテナの中のTCP通信の状態を見たい - ローファイ日記
  • Rubyでも SO_REUSEPORT 使いたい! - ローファイ日記

    一般に同じアドレスを同じポートではlistenできない。しかし、ソケットのオプションに SO_REUSEPORT というものがあり、Linuxではカーネル3.9以降で利用できる。 ソケットを作成した後に setsockopt(2) で SO_REUSEPORT が有効になるように指定すると、同じアドレス・同じポートでのbind/listenが可能になり、リクエストが来た際にはリスンしているソケットそれぞれに回されていく。 ただ、この機能はRubyの TCPServerクラス ではすぐには利用できない。 TCPServer#new/open の終了時点でアドレスがリスンされ、setsockoptするタイミングがないため。ではどうするかというと、 Socket クラスでの各メソッド Socket#setsockopt/bind/listen を直接使えば良い。 require 'socket'

    Rubyでも SO_REUSEPORT 使いたい! - ローファイ日記
  • serverengine を使い、Rubyでもサーバーを書こう - ローファイ日記

    Rubyを書いていると、サーバを書きたくなることがあります。皆さんもそうだと思います。 ということで今日はRubyでスッとサーバを書くためのgem、serverengineの簡単な使い方メモ。 github.com Rubyでサーバを書きたくなった時 そもそも的に、Rubyでただサーバを書くのは非常に簡単である。具体的には Kernel#loop などを回してその中でリクエストを待ったり、何かしら処理を行えば終わり。特別なgemは必要ないし、TCPを扱うクラスなども組み込みで用意されている。 以下のような9行のスクリプトを起動すれば、サーバを書いたと言える。ところで TCPServer#accept_nonblockでないと、acceptでブロックしてしまって終了処理が遅れたりするのでノンブロッキングの方のAPIを好んで使うのがいいだろう。 require 'socket' server

    serverengine を使い、Rubyでもサーバーを書こう - ローファイ日記
  • Ruby25周年記念イベントでお話ししました #ruby25th - ローファイ日記

    登壇者枠です。 Infrastructure as Code/mrubyなどによるConfiguration as Codeの話をしました。 speakerdeck.com もともとこの倍の分量のスライドが発生して笹田さんにご心配をかけてしまいましたが、なんとか時間通り? 話せました...。 当スライドで後半でいった内容だったり、僕が最近やっているようなことについて、当に純粋に「なんでやっているの?」という質問が何人かからありました。Kubernetesの「Railに乗って」コンテナをオーケストレーションしてビジネスをドリブンする、そういうのも確かにエンジニアとして生きるにあたり有力な選択肢だと思います。 でも僕にとって興味のあることは、そもそもKubernetesとか、コンテナとか、それを支えるLinux自体とかがどうなっているかというところであり、興味を持った分野に関しては 世界の

    Ruby25周年記念イベントでお話ししました #ruby25th - ローファイ日記
    a2ikm
    a2ikm 2018/03/01
    “僕にとっては自分の考えたことと現実の実装をインピーダンスミスマッチなくつなぐことができる最大の道具は、Rubyなのであります。”
  • mruby-passwd のサンプルからわかるmgem(あと、C言語)を書くときの罠 - ローファイ日記

    mruby advent calendar 8日目 としてやっていかせていただきます。7日目はけいぞうくんのすごい記事でした。 keizobookman.hatenablog.com さて先日、mrubyのgemをコーディングするスクリーンキャストを撮り、実際にコードを残しました。 udzura.hatenablog.jp ですが、mrubyのお作法的な点、後そもそもの題材である getpwnam_r(3) とpasswd構造体の扱いについて不適切なところがあった点の2ヶ所で、補足しないといけないところが見つかりましたので、今回記事を書かせていただこうと思います。 まずは、先日の時点での最終形としたコードを眺めてみましょう。 先日のコード なお、記事の環境としてはLinux、x86_64 の Ubuntu Xenial、gcc 5.4.0-6ubuntu1~16.04.4 を利用していま

    mruby-passwd のサンプルからわかるmgem(あと、C言語)を書くときの罠 - ローファイ日記
    a2ikm
    a2ikm 2016/12/08
  • haconiwaの室内楽 - Re: 自作Linuxコンテナの時代 - ローファイ日記

    haconiwa という、いわゆるLinuxコンテナに関する様々な技術を組み合わせて、自分のためのコンテナを作ることができるRuby製のツールと、そのDSLを作った。ひとまずこれぐらいはやりたいということができていそうなので、バージョン 0.2.0 としてリリースした。 github.com 使い方 ほぼREADMEの日語版。 前提として、以下のライブラリとコマンドが必要になるので入れておいて欲しい。 libcap (libcap.so.2 を FFI 経由で使う) nsenter (yum install util-linux とかそういう感じで入れる) ひとまず動かしたい場合は、rbenvなどが整った環境で、gemとして入れるのがいいと思う。多分Ruby 2.0 以降で動く気がする。 $ gem install haconiwa $ rbenv rehash そして、現在のhacon

    haconiwaの室内楽 - Re: 自作Linuxコンテナの時代 - ローファイ日記
  • RailsGirls Fukuoka の準備を支えた技術 - ローファイ日記

    このエントリは、 pepaboアドベントカレンダー の10日目の記事です。1日遅れすみません! 前回は... gyugyuさん... RailsGirls Fukuoka やりました。 さっそく題ですが、今年7月に @murasakipinko さんと shiho さん、 vareal の寺さん を オーガナイザーに、九州最初らしいRailsGirlsワークショップ、RailsGirls Fukuokaを開催しました。ペパボつながりでは、ペパボはRailsGirlsを継続的に支援している企業の一つとなります。 railsgirls.com イベントレポートは以下も是非ご覧になってください! blog.railsgirls.jp この準備にあたって、福岡のアンクル事務(と言いつつ会計という一番苦手なやつはshihoさんにまかせっきりでしたが...)として、「準備の基盤づくり」に奔走してい

    RailsGirls Fukuoka の準備を支えた技術 - ローファイ日記
  • ソフトウェアをリプレースする前に考える三つのこと - ローファイ日記

    個人的には三つの基準があるという話。 そのソフトウェアが十分に古く、十分長い間保守されていないか そのソフトウェアを触れる人間が組織内に少なく、増やす手だても困難であるか そのソフトウェアで実現できることが、他の新しいソフトウェアでより容易に実現できるかどうか 1. についてはそうだろう、という感じだと思う。というかリプレイスの前提になると思う。バージョンが古いソフトウェアを使い続けると、脆弱性も出てくるし、一般的には開発の速度も低下する。 ただ、ここで重要なのは、2.や3.との兼ね合いかなと思っている。 例えば2.が1.より優先される場面というのもあるだろう。Hoge言語で作ったミドルウェアの保守について以下のような状況にあるとする。 開発者が退職してしまった Hoge言語に関するドキュメントが全然なくて学習が困難 という感じであればリプレースは検討に入れていいかもしれない。 しかし、こ

    ソフトウェアをリプレースする前に考える三つのこと - ローファイ日記
  • イメージベースのデプロイについて(あるいはIaaSだとこんなんが良いんじゃないと言う意見) - ローファイ日記

    最近、仕事やら趣味やらで AWS / OpenStack / GCE その他のいわゆるIaaSなプラットフォームを調査したり、いじったり、そのAPIをいじったりする機会が多かった。 この辺の運用を考えていて試したこと、ぶつかったことなどをまとめたい。 実際やったこととしては、特定のプラットフォームに依存している訳ではないが、たいていの人はAWSのアレね、みたいなイメージを持った方が読み進めやすいんじゃないかと思う。 ゴールデンイメージを雑に走らせること この手のIaaSの基であるが、サーバーはインスタンスと呼ばれ、イメージを指定して起動する。ec2 aws run-instanceとかnova bootとかその類いである。 イメージからの起動のためには雑には大きく2要素があって、一つはイメージ自体の構築、もう一つは起動直後のそれぞれのインスタンスの特性に合わせた初期化処理のフェーズである

    イメージベースのデプロイについて(あるいはIaaSだとこんなんが良いんじゃないと言う意見) - ローファイ日記
  • 「それでもRailsを選択する3つの理由」を読んだ - ローファイ日記

    http://ppworks.hatenablog.jp/entry/2015/02/19/223552 ほぼほぼ同意なのですが、フームと思って(ppworksさんプロダクトだから、ということでもないが)ポエムをしたためた。 でもなんかこれをあえてポエムにとどめないで書いたらどういう反応があるかな〜と思ったのでブログにも転載してみよう。 規約縛りの哲学 これは文句なくその通りだと思っていて、Rails以外のフレームワークではこれらの実現が非常に中途半端であると言う印象を持っている。 サービス作りにおいて技術選定やら何やらからの議論をしていてはリリースは当然遅くなるし、あまりしたくないということである。議論するならもっとユーザに近い、正体のよく分からない不安点(このアプリほんとにユーザに受けるの? とか)に関してすべき。 議論は一般的に良いことのように思われているが凄い体力を使うし、当に必

    「それでもRailsを選択する3つの理由」を読んだ - ローファイ日記
  • Go言語からmrubyのDSLを読み込んでよしなに使う - ローファイ日記

    Go言語便利だけど、文法をこねくり回して内部DSLを作るとかには向いていないので、ルビー風にDSLを読み込ませて設定と替えさせていただきます、と言うのが少し難しい。 いっそGo内部でRubyを組み込んで実行したい。mrubyならできるんじゃね? と思ってやってみたらそれっぽいのができた。 Vagrant、Packer、Consulなど、DevOps対応界隈でその名を知らない者はいない mitchellh さんの mitchellh/go-mruby · GitHub をつかう。 多分だけど、ハシモト氏も同じようなこと考えてたんじゃないだろうか。結局 hashicorp/hcl · GitHub を使われてるけれど。 完成したそれっぽいの.go package main import ( "fmt" "io/ioutil" "os" "github.com/mitchellh/go-mrub

    Go言語からmrubyのDSLを読み込んでよしなに使う - ローファイ日記
  • 第二新卒研修をしていた - ローファイ日記

    雇用流動情報の季節ですが、いかがお過ごしでしょうか。雇用流動と間接的に関係のある記事を書きます。 標記の通り、研修をしていたのでその内容をまとめたり振り返ったりする。 思ったより長くなったぞ... 背景とか がっつりとしたWeb開発の経験は無いが、情熱があり、コミュニケーション能力など基的な能力が高そうな、年齢の若い方が応募されたので、いわゆる「第二新卒」と言う扱いで研修を前提に採用した。で、その研修のカリキュラムを主にぼくが考えて実施していた。 といっても、今までに積み上げてきた新卒向け研修のカリキュラムやノウハウを眺めてエッセンスを抜き出すみたいな感じだった。 ペパボ新卒デザイナーとエンジニアの研修ブログ ペパボ新卒エンジニアの研修を開始している - HsbtDiary(2013-05-22) ペパボ新卒エンジニア研修 前編 | blog: takahiro okumura ペパボ新

    第二新卒研修をしていた - ローファイ日記
    a2ikm
    a2ikm 2014/08/02
    この研修受けたい…
  • Sinatra frameworkに関する私見 - ローファイ日記

    エクスキューズとか 正直な話をすると、Webフレームワーク自体に関する興味は以前に比べて失われてきているので、最新のSinatraの細かいコミットまでは追っていない。 だが、2年強ほど Sinatra/Padrino 界隈を追いかけてきて得た知見と言うか考えについてまとめるのは一定の価値がある、少なくとも自分に取っての価値は非常に大きいと思うのでここに書いていきたい。 副次的には、ミスコンセプトによってSinatraを利用して、結果必要の無いイメージの悪化を招く事態を一件でも減らせればと思う。 Sinatraはmicroframework、あるいは「フレームワークではない」 公式の説明にある通りである。 具体的にどういうことかと言うと、Sinatra単体ではウェブサービスに必要な要件を満たさないかもしれないと言う話である。Sinatraが持っていないものについては、Sinatra以外の場所

    Sinatra frameworkに関する私見 - ローファイ日記
    a2ikm
    a2ikm 2014/07/19
    大事な視点 // 開発中のRailsアプリの中で使う外部モック用サーバをSinatraで使うケースが多い。WebmockみたいにRails側を弄らないし、1ファイルで固定のレスポンスを返したいときに便利
  • 情報共有おじさん - ローファイ日記

    プロジェクト全体のMLにエラー通知メール飛ばすのうざい」、「〜についてはみんながいるチャンネルで相談すべきことではない」みたいな指摘がある。 個人的には情報は可能な限り広いスコープで公開してほしいし、自分でもそうしようとしている。まだ未熟なので霊力に負けることもあります...。 というのも、「情報が届いていない」ことによる不利は仕事上非常に大きいし、場合によって致命的になるので、むしろ冗長化して届けられているべきなのである。 あと、情報が多ければ多いほど普通は判断が適切になると思うので、情報が広く共有されていると言うことは、チームメンバー一人一人が自分で判断できる材料を持ちやすくなると言うことにもつながる。スクラムとか色々言われているけど「一人一人が自分で判断できる」ということはどういう開発スタイルでも大事だと思う。 なのでむしろみんながいる場で議論していたり、細かい情報をどんどん流して

    情報共有おじさん - ローファイ日記
    a2ikm
    a2ikm 2014/04/05
    見れない、あったことを知らないのは良くないと思う。と同時に、通知する場所と議論する場所をまとめたはいいけど通知が多すぎて議論のログが流れてしまうのはすごく不便なので使い分けは必要かと
  • 過去の自分を救いたいプログラマの話 - ローファイ日記

    闇 Advent Calendar 2013では、青臭い話もネガティブな話もして良いそうなので、これから小説を書きたいと思います。 ぼくはプログラマなのだが、ぼくの仕事の考えの真ん中にあるのは、実は技術的なエッジに触れているとか、あるいは給与がいいだとか、そういうことは結構どうでも良くて、たとえば孤独なチームメイトを作らないとか、業務知識を一人で抱え込むのを辞めさせるとか、一人一人に当事者意識を持ってもらうとか、そんな青臭いけど単純なことである。 ただのスクラムの影響、言われればそれまでだが、その根底にあるのは「過去の自分を救いたい」と言う感情だと思っているし、この考えの根底が作られた当時はスクラムなんかろくに読んでいなかった。 過去、とある会社に所属していたとき、辞めるまでの後半の1年ほどは当に辛くて、入社して2年ほどしかたっていないぼくが、2000年代の初めだかに誕生したレガシー

    過去の自分を救いたいプログラマの話 - ローファイ日記
    a2ikm
    a2ikm 2013/12/26
    やりたいことがあるほどストレスフルになるように思える
  • あんまりエモくない自分のキャリアまとめ(もうすぐ30だしね!) - ローファイ日記

    B社時代 たまにひとに言ってるんだけどぼくは元々新卒の頃マスコミばかり受けていて、最初のキャリアは新聞社で始まった。ただし社内SE。 当時のジョーシ氏は技術畑の人では無かった(むろんLinuxRDBの知識などは当時のぼくが敵わないレベルには勉強していた)のだけれど、今でも割と影響を受けていて、なんか「人にフォーカスする」みたいなことを盗んだような気がしている。今でもチームや他部署の人を観察するのとか、人間関係も基的にP2Pでつくる癖があるんだけどこの辺の動きが影響を受けている。 「人にフォーカスする」はぼくのプログラマとしての働き方の根底にある気がする。ルビーコミュニティーの影響もあると思うけど多分当時のジョーシの影響の方が強い気がするな、と最近久しぶりに呑んで思った。 F社時代 自分の未熟さ故に自分の思ったモノ作りはできていなかったかもしれない。学んだこととしては主に3つあった。 ひ

    あんまりエモくない自分のキャリアまとめ(もうすぐ30だしね!) - ローファイ日記
  • 1