タグ

ブックマーク / blog.riywo.com (18)

  • コードが読めるソフトウェア開発者 - As a Futurist...

    僕はコードを読むのは得意な方だけど、それが過ぎてコードを書かなくてもシニアソフトウェア開発者になってしまった。実はコードをちゃんと読めるソフトウェア開発者って希少価値が高いのではないか、と思ったので自分がどんな感じでシニアになったのかをまとめてみた。似た様な人の参考になれば幸いだ。 同意。僕は未だ書く方はほとんど機会なく成果もないけど、コードを読み尽くして、負荷試験や番で挙動を把握し続け、メトリクスでとことん確かめていった結果、Sr. Engineer になれた。 https://t.co/KXtMdEaRr8 — Ryosuke Iwanaga (@riywo) April 16, 2021 コードを書かなくてもシニアソフトウェア開発者になれた 僕は今 Amazon の Sr. Systems Development Engineer という職種で働いている。いわゆるソフトウェア開発職

    コードが読めるソフトウェア開発者 - As a Futurist...
  • 最近のサーバの抽象化について - As a Futurist...

    学者でもなんでもない現場のいちエンジニアの感想です。しかも、どれもちゃんと使ったことないので、聞きかじりをまとめたメモ書きなので嘘が入ってますが、興味ある方がいればどうぞ。 はじめに かつては「OS=物理サーバ」であって、その物理サーバの資源(CPU,RAM,DISK,etc.)をどのように使うかは OS がプロセスに割り振る形で決定されていました。しかし、それでは例えば以下の様な問題があります。 ファイルシステム資源をプロセスが自由にコントロールできない ProcA と ProcB で使いたい libfoo のバージョンが異なる場合面倒 CPU, RAM 資源もコントロールしにくい 同居してるプロセスがメモリい尽くして、みんな死亡、みたいな そもそも異なる OS を同居して使うことができない CentOS ばかり使ってるのに、使いたいライブラリが Debian でしか動かないとか 解決

    最近のサーバの抽象化について - As a Futurist...
  • Pandlerというrpm/yum管理ツールを作り始めました - As a Futurist...

    皆さん、構成管理楽しんでますか?最近は Chef や Puppet がやっと認められてきて普及し始めているところの様で、いろんな人が構成管理を楽しみ始めていてとてもうれしいです。 ところで、僕は前にこんなエントリを書いたりして、パッケージ管理にとっても興味のある人間なんですが、Berkshelfという Chef の cookbook を Bundler の様に DSL と lockfile で管理できるというスーパー便利ツールの開発者のプレゼンをこの間聞きました。僕はこの DSL と lockfile でパッケージを管理するというやり方はすごい好きで、Bundler に始まり他の LL のパッケージ管理も大抵そういう仕組がありますし、Berkshelf の様に言語のパッケージだけでない応用もあるわけですね。 で、だったら rpm/yum(deb/apt)も同じ様に管理できたらおもしろいんじ

    Pandlerというrpm/yum管理ツールを作り始めました - As a Futurist...
    aki77
    aki77 2013/04/01
  • perlbrewとextlibなアプリのcronとかdaemontools - As a Futurist...

    perl は system perl じゃなくて perlbrew で入れて、アプリで必要な CPAN モジュールは全てアプリのディレクトリ下の extlib というディレクトリにインストールする方式は個人的にはいい感じだよなぁと思いつつ、cron とか daemontools がいつもどうやるのが正解なのか分からず困ってた。 またセットアップする機会があったので色々考えた結果、こんな感じなら割とすっきりした感じになった。 env このファイルがキモで、アプリのディレクトリに移動しつつ、いい感じに perl とか PATH とか@INC を設定して、渡されたコマンドを実行してくれる。 # perl -v This is perl, v5.8.8 built for x86_64-linux-thread-multi # ./env perl -v This is perl 5, versi

    perlbrewとextlibなアプリのcronとかdaemontools - As a Futurist...
  • Podcastはじめました&Podcastのはじめ方 - As a Futurist...

    miyagawa さんが始められたのをみて、そういえば Podcast ってどういう仕組でやってるのかすら知らないので勉強ついでにやってみようかなと思って始めてみたら、思った以上に手間がかかってしまったので、3 行でまとめて「みんなも始めよう!」という感じにしたい。 Mac で録音して無音とかカットする github page にアップして Tumblr でブログ作って Feedburner で RSS 作る iTunes から RSS を登録してレビュー通ったら完成! miyagawa さんの Podcast を大いに参考にさせて(パクリとも言う)頂きました。感謝!というわけで、僕の Podcast はこちらになります。まだ ep0 で、次回から気だす! iTunes – Podcast – Ryosuke Iwanaga「riywo’s Podcast」 riywo’s Podcas

    Podcastはじめました&Podcastのはじめ方 - As a Futurist...
  • fluentdのプラグインとかユースケースの話 - As a Futurist...

    この記事は「ウィークリー Fluentd ユースケースエントリリレー」の一部です。カジュアルに fluentd のプラグイン書いてみた話とリアルタイム監視のよくあるパターンを書いてみます。 groupcounter モヒカン族で有名な tagomoris さんが書かれたdatacounterというプラグインをパクって書きました。ある key に対する value を一定期間カウントしたい時に使います。ユースケースとしては、access log から src IP ごとの件数を毎分数えて、グラフにすると、どの IP からのリクエストがどういう推移をしてるかが観測できます。 riywo/fluent-plugin-groupcounter config はこんな感じ。 <match apache.access> type groupcounter count_interval 5s aggre

    fluentdのプラグインとかユースケースの話 - As a Futurist...
  • 「リーダブルコード」が良書すぎて胃が痛い - As a Futurist...

    インフラ系のエンジニアは、あまりリファクタリングとかクラス構造といった視点でコードを読む機会が少なくて、勢い作ったスクリプトやツールはそれはそれはひどいものになりがちです(体験談)。 僕もエンジニアになって以来、まともなコードなんか書いたことなくて、従ってる原則といえば、「グローバル変数は悪」とか「短いことはいいことだ」とか「コメントは書かない方がいい」とか、なんか学生の時にたまたま目にしたよくわからない何かに従ってる程度。 少し大きい規模を書き始めると、昨日の自分と今日の自分で命名規則が全然一貫性なくて、「getHoge()」と「makeFuga()」がおんなじようなことをやってたりしていつも嫌悪感に駆られてました。 ちょうど 1000 行くらいのアプリ書いてたところだったので毎日吐き気をこらえながら「まずは動くものをつくるんだ。全てはそれからだ」と言い聞かせて汚いコードをゲロゲロしてた

    「リーダブルコード」が良書すぎて胃が痛い - As a Futurist...
  • rubiesとbundlerとpassenger使ってさくっとredmine使ってみる - As a Futurist...

    最近 redmine ブームが今更やってきていて、redmine のインストールが楽しくて仕方ない、、、わけないんですが、前は rvm で入れてたんですけど@niw さんに rvm オワコンだよねって言われて、僕も同感なので rubies をやっと使ってみました。ついでに、bundler も使って gem を管理してみて、あと passenger に standalone があることに今更気づいたのでそれも使ってみたら、かなりすっきりしたので簡単にメモ。 rubies で ree を入れる rubies はシンプルな ruby/gem 切替ツールです。 niw/rubies – GitHub blog.niw.at – rvm について一言 これを使って、Ruby Enterprise Edition(ree)を入れてみましょう。ただし、普通に installer を叩くと rails

    rubiesとbundlerとpassenger使ってさくっとredmine使ってみる - As a Futurist...
  • ssh経由でリモートホストで実行してるプロセスにSIGINT送りたい時 - As a Futurist...

    perl で色々管理スクリプト書いてるんですが、そのなかでこんなコードを書きました。 system("ssh remote 'rsync ...'"); で、rsyncが走ってる途中でやっぱやめたと思ってCtrl+C=SIGINTを送ったんですが、もちろん perl のプロセスは死ぬんですけど、remoteで動いてるrsyncはそのままゾンビになって残ってしまいました。 はて、いろんなところに原因が考えられるなぁということで調べてみました。 host1> ssh host2 'some-command' host2> strace -p 20279 # some-command's pid Process 20279 attached - interrupt to quit read(0, # then "Ctrl+C" on host1 (host2) "", 4096) = 0 wri

    ssh経由でリモートホストで実行してるプロセスにSIGINT送りたい時 - As a Futurist...
  • MySQLがおかしい!あなたならどうしますか? – MySQL Casual Advent Calendar 2011 - As a Futurist...

    しわっす!DBA 兼オペレーションエンジニア兼タスクマネージャやってる riywo です。何のネタを書こうかなぁと考えたのですが、正直ネタを仕込む時間もなかったので僕がいつもやってることをさらっと紹介するということで勘弁して下さい>< MySQL がおかしい! 03:14 hidek: なんかエラー出まくってるんだけど! 03:14 zigorou: MySQL と通信してるとこっぽい 03:15 riywo: 見ます こんなやりとりは皆さん日常茶飯事ですよね?ね?ね?こんな時に、DB に責任を持つものとして真っ先に対応するのが僕らの仕事です。でも、じゃあ具体的にこのあと何をしましょう?既にサービスはエラーだらけで一刻を争う状態です。 (対応開始) まずはエラーメッセージ 今回の様な場合はアプリのエラーログにどばっと MySQL に関するエラーが出ているでしょう。まずはそれを見ることが始ま

    MySQLがおかしい!あなたならどうしますか? – MySQL Casual Advent Calendar 2011 - As a Futurist...
    aki77
    aki77 2011/12/02
  • DNS勉強会@ゼロスタに行ってきた - As a Futurist...

    恒例の行ってきたエントリです。そういえば qpstudy 書き忘れてたけど、あれは勉強会じゃないからいいよね(;・∀・) というわけで、今日は万難を排してゼロスタートコミュニケーションズで開催された「DNS 勉強会」に行ってきました。つぶやきまとめはこちらをご覧ください。途中の@sugyan さんがよくわかりません。 Togetter – 「インフラエンジニア( zaki )による、エンジニアのための「初心者向け DNS 勉強会」 #zsstudy」 DNS ってなんじゃい! BIND があまりにもよく使われるせいで、「DNS=BIND」的な感じで BIND の設定のはなしとかばっかりが世の中にはびこってるけど、そもそも DNS ってどういう仕組みでどういう登場人物がいるのかという話を、@zaki 社長自ら解説するという豪華な勉強会。最初かなりグダグダな感じ(始まってから「ハッシュタグ今決

    DNS勉強会@ゼロスタに行ってきた - As a Futurist...
    aki77
    aki77 2011/05/14
  • mod_rewriteでの最後の砦 - As a Futurist...

    Web サーバ勉強会#3で話してきた内容です。mod_rewrite と mod_proxy_balancer 使って、L7 ロードバランサを作ろうとしたときにハマった話なんですが、すごい特定の限られた条件だし、そもそも大してクリティカルじゃないのですが、まぁまぁ面白い話題だと思うので紹介しておきます。 mod_proxy で最後の砦を作る時 ただのリバースプロキシだったり、L7 ロードバランサだったりの用途で、Apache の mod_proxy(mod_proxy_balancer)を使うことはたまにあると思います。RewriteMap とか、ルールのマッピングを外部ファイルにできたりするので結構柔軟に色々できます。 その際に色々と振り分けのルール付けを設定した後で、最後に「どれにも当てはまらない時はとりあえずここに振り分けさせる」というルールを書くときみなさんどうしてますか?Apac

    mod_rewriteでの最後の砦 - As a Futurist...
  • GNU Parallelがすごすぎて生きるのがつらい

    皆さん今日もたくさんのサーバを相手にされていることかと思いますが、いくつかのサーバにアクセスして 1 秒間の統計情報(例えばvmstat 1 2)を集めてパッと表示したい時ってどうやってますかね?shell script を学びはじめたばっかりの僕はこんな感じで書いてました。 $ for i in host1 host2 host3; do ssh $i "vmstat 1 2 | tail -1"; done 0 0 0 329004 210836 14275360 0 0 0 2424 1410 1828 0 0 100 0 0 0 0 0 3716112 587704 25921684 0 0 0 488 1643 2026 0 0 100 0 0 1 0 0 555440 265560 14015548 0 0 0 4204 1534 2392 1 0 99 0 0 vmstatと

    GNU Parallelがすごすぎて生きるのがつらい
  • リソースモニタリングツール「CloudForecast」入門 - As a Futurist...

    kazeburo さんが開発をされているサーバリソースの可視化ツール「CloudForecast」ですが、個人的に使ってみていてとても使いやすいなと思っています。もっと使ってくれる人が増えるといいなと思い、自重せずに入門エントリを書いてみました。 CloudForecast って何? そもそも何なの?という話ですが、CloudForecast とはリソースのグラフ作成ツールとして有名な「RRDTool」の薄いラッパーとして作られています。記述言語は Perl ですので、Perl と RRDTool の使い方が大体分かっている人にとっては導入さえしてしまえばかなりかゆいところまで手が届く=カスタマイズが簡単かつ自由自在なツールだと思います。とりあえずのイントロとしては kazeburo さんの YAPC::Asia 2010 でのこちらのスライドをご覧頂ければと思います。 RRDTool っ

    リソースモニタリングツール「CloudForecast」入門 - As a Futurist...
    aki77
    aki77 2011/02/27
    CloudForecast
  • 突然のTwitter砲にもなんとか耐えたさくらVPSに感謝する - As a Futurist...

    なんか、2/6 の夜に「修士論文の代わりに退学願を提出してきた」が Twitter でばずったらしく、Yahoo 砲よろしく突如としてアクセスが集中しました。下の方にリソースモニタリングのグラフを貼りつけてますが、今までがほぼ 0 に見えてしまうくらいに来てたのでびっくりでした。 まぁ色々コメントつけて頂いたりしてますが、もう2 年も前なんでこのエントリについて今更僕から突っ込むことは無くて、あのエントリはあのエントリとして見て頂ければと思います。ここでは今回そんな突然のアクセス集中にも見事耐えてくれたさくら VPS に感謝しつつ、アクセス集中の状況を鯖管的立場から分析してみましょう。 ちなみに、以前エントリに書いていますがサーバの構成としてはさくら VPS1 台で、CentOS+Apache+mod_fastcgi+PHP-FPM+MySQL5.5(InnoDB)で WordPress

    突然のTwitter砲にもなんとか耐えたさくらVPSに感謝する - As a Futurist...
    aki77
    aki77 2011/02/08
    ログの解析・分析
  • サーバインフラエンジニアについて思うことを『小悪魔女子大生のサーバエンジニア日記』に触発されて書いてみた - As a Futurist...

    サーバインフラエンジニアはモテるとの噂が最近絶えないわけですが、そんな僕達注目の書籍『小悪魔女子大生のサーバエンジニア日記』がついに刊行されましたので早速ゲットしてみました。紀伊国屋の店頭取り置きサービスというすばらしいサービスを使わせてもらったのですが、取りに行った時に「書籍の名前はなんでしょうか?」「こ、小悪魔女子大生の・・・」とか言わせんなよ恥ずかしい>< かわいい絵だけど中身はガチ すでに一部界隈では有名になっているこちらのブログの書籍化です。まったくの素人だった女子大生がだんだんと知識を吸収していく様を見ていると、「俺が教えたかった orz」という思いが、、、じゃなくて、すごい細かいところまで内容としては盛り込まれていて、すごいですね。 絵については僕がとやかく言う事ないですが、最後の加藤さんのコメントにもある通り、内容としては小悪魔さんと同じように全くの初心者向けというよりは、

    サーバインフラエンジニアについて思うことを『小悪魔女子大生のサーバエンジニア日記』に触発されて書いてみた - As a Futurist...
  • tailコマンドって-c使うと超速い - As a Futurist...

    Twitter でつぶやいたら意外と知られて無かったので記事にしておきます。 Linux とかで巨大なログファイルとかを扱うときに、head や tail というコマンドで先頭から何行とか 末尾から何行を見たい時があると思います。 例えばアクセスログで末尾から 10000000 行目辺りをみたいとかいうときに $ tail -n 10000000 access_log | head とかするとかなり遅いと思います。これはログの後ろの方から読み込みながら 行数を計算しているからで、10000000 行分数えないとどこから表示すればいいのかわからないので なかなか結果が返ってこなくてヤキモキしてしまいます。 こんなときに、-cというオプションを使うと超高速で結果が返ってきます。-cというのは -c, --bytes=N output the last N bytes とある様に、ファイルの末尾

    tailコマンドって-c使うと超速い - As a Futurist...
    aki77
    aki77 2011/01/24
    『内部的にはファイルの末尾から Nバイトだけlseek(ポインタを移動するイメージ)したところから表示すればいいことが自明なので すぐに表示を始めることができます。』
  • DropboxをUbuntuで完全にコマンドラインだけで使う方法 - As a Futurist...

    前の記事で,ssh -X で無理矢理入れる方法を紹介しましたが,あれダメです w なんかいまいちうまく動かないことが多いです.それで,ふと調べていたら Dropbox Wiki の方にまったく X を使わずにインストールして使うための TIPS が 載っていたので紹介します. TipsAndTricks/TextBasedLinuxInstall – Dropbox Wiki まずは必要なファイルの DL Dropbox 体と,インストールに使う Python スクリプトを wget で落とします. $ cd ~ $ wget -O dropbox.tar.gz http://dl.getdropbox.com/u/17/dropbox-lnx.x86-0.6.427.tar.gz $ wget http://dl.getdropbox.com/u/6995/dbmakefakelib.

    DropboxをUbuntuで完全にコマンドラインだけで使う方法 - As a Futurist...
  • 1