アプリなら、コメントが見やすい!
トップへ戻る
VTuber
joker1007.hatenablog.com
これは社内向けに書いた、Kafkaってそもそも何やねん、ということをメンバーに解説するための記事を一部編集して公開できる様にしたものです。 第2回以降では、Kafkaを利用したアプリケーション開発のノウハウについて解説していく予定です。そちらも社内の事情を除いた形で公開していくつもりです。 そもそもKafkaとは Kafkaはイベントストリーミングプラットフォームと呼ばれるミドルウェアです。 元々はストリームバッファと呼ばれてたと思います。 公式のドキュメントには以下の様に書かれています。 Kafka combines three key capabilities so you can implement your use cases for event streaming end-to-end with a single battle-tested solution: To publis
Rubyist近況[1] Advent Calendar 17日目です。 仕事的な近況 最近、仕事で全然Rubyを書かなくなってきた。たまにRailsアプリの改修作業をやる程度で、今年書いた量で言うなら間違いなくJavaが一番多いだろう。 直近で書いたブログ記事を参照してもらえると分かり易いが、ここ1年ぐらいの自分の主戦場はKafkaとストリームプロセッサである。 Kafkaは非常に便利なミドルウェアだがメッセージキューの様でメッセージキューでなく、分散ストレージとして動作するがブローカー自体は余り分散の仕組みをコントロールする訳でもなく、クライアントライブラリ側で色々制御する様な仕組みになっているので、どういう活用の仕方をするものなのかイマイチ理解しづらい難しいミドルウェアでもある。 自分は完全に0から考えて必要だと思って調査してほとんどの仕組みを勝手に作ってしまったので性質も活用方法も
社内向けのドキュメントと兼用したので、前提とかメンバー向けの解説が含まれているので、前後のパフォーマンスの変化だけを見たい人は、下の方のグラフ画像までスクロールしてください。 gravitonインスタンスを活用するモチベーション ワークロードによる相性はあるが、特にマルチスレッド性能で既存のインスタンスより性能向上が見られる上にコストが安いため、うまくフィットすれば性能改善とコスト削減の双方でメリットがある。 また、周辺ハードウェアもアップデートされているため、エフェメラルストレージ付きのインスタンスのストレージサイズが増えているなどのメリットもある。 特に現時点ではr6gdインスタンスが利用したかった。 gravitonインスタンスを利用するためarm64アーキテクチャへの対応 gravitonインスタンスはarm64 (aarch64) アーキテクチャのCPUのため、既存のx86_64
現在、Embulkは次の安定版であるv0.11.0に向けた開発版としてv0.10がリリースされています。 メンテナであるdmikurubeさんのアナウンスに依ると、0.11.0以降はJRubyがデフォルトでembulkに組込まれなくなるため、プラグインは基本的にJavaで作ることが推奨される様になります。 また、JRubyがデフォルトで入らなくなるため、基本となるプラグインの配布プラットフォームはMavenリポジトリになる予定です。 JavaのプラグインのAPIもいくつか変更されており、新しいバージョンに対応するためには多少の修正が必要になります。 基本的な開発ガイドについては、以下の記事を参考にすると良いでしょう。 zenn.dev zenn.dev ある程度embulkのプラグイン開発に慣れていれば、上記の記事で実装とビルドまでは何とかなるんですが、当分の間0.9系が生き続けることは間
最近は、LinuxでPCゲームをやるのもかなり現実的になってきたので、その知見についてまとめた記事を書こうと思う。 自分がGentooユーザーなので、細かい部分はGentooを前提にした話になっているが、概要はLinux全般でモダンなPCゲームをやる時の参考程度にはなるだろう。 前提 各GPUドライバのインストール 普通入ってると思うが、GPUに合わせてxf86-video-amdgpuかnvidia-driversをインストールしておく。 vulkan driverのインストール mesa (OpenGL-like graphic library for Linux) でvulkanフラグを有効化しておく。 vulkanは、DirectXとかOpenGLと同じレイヤーのAPIで、3Dグラフィックのためのlow level API。概ねOpenGLをよりモダンな方向に刷新するための規格とい
Linuxに乗り換えようかなと思っている人向けにビデオ会議のためのオーディオ環境構築の一例を紹介する。 ハードウェア Audio I/F: Focusrite Scarlett Solo 3rd Gen focusrite.com 1万円ちょっとで買えるし、ダイレクトモニターも付いてるし、Linuxのusbaudioドライバで問題無く動作する。 音声入力に対して不満は無いが、ヘッドホンを刺して普通に音楽を鳴らすとめっちゃ硬い音がするので、入力にのみ利用している。 マイク: Shure SM58 www.shure.com 大分昔に買ったボーカルマイクを流用。コンデンサマイクではないが、1万円ぐらいで安い、単一指向性、丈夫、定番、という安定感のあるマイク。 これをテーブル置きのマイクスタンドに設置して利用している。 マイクヘッドを顔側に向けて、インターフェースのゲインを上げれば、30cmぐら
自分が所属している会社のメンバーの教育用資料として、それなりの規模のデータを扱う時に前提として意識しておかなければいけないことをざっくりまとめたので、弊社特有の話は除外して公開用に整理してみました。 大規模データ処理、分散処理に慣れている人にとっては今更改めて言うことじゃないだろ、みたいな話ばかりだと思いますが、急激にデータスケールが増大してしまったりすると環境に開発者の意識が追い付かないこともあるかと思います。 そういったケースで参考にできるかもしれません。 弊社は基本的にAWSによって運用されているので、AWSを前提にした様なキーワードやサービス名が出てきます。後、句読点があったり無かったりしますが、ご容赦ください。 追記: 社内用の資料の編集なのでかなりハイコンテキストな内容だから誤解するかもしれませんが、これらはそもそもRDBの話ではありません。(関係無くは無いけど) 1000万オ
2020/10/3 に開催されたKaigi on Rails 2020に登壇してきました。 オンラインのイベントやカンファレンスに登壇したことはあるんですが、今迄割とカンファレンスの現場感みたいなのが薄いなと感じる中で、Kaigi on Railsはかなり以前の祭り感みたいなのを感じることが出来て、とても良いカンファレンスだったと思います。 特にSpatial Chatでカンファレンス会場の廊下っぽい空気を完璧とは言えないまでも再現出来てたのはとても良い試みだと思いました。 さて、私はというとキーノートを除いた通常発表のトリとして発表させていただきました。 (午前だったら寝坊してたのでやばかった……、運営チームの気遣いに感謝しておりますw) 内容は以下の通りです。 speakerdeck.com 背景とか反省とか RailsというWebアプリケーション開発のフレームワークを中心にしたカンフ
最近、パーフェクトRuby on Railsの増補改訂版をリリースさせていただいた身なので、久しぶりにRailsについて書いてみようと思う。 まあ、書籍の宣伝みたいなものです。 数日前に、noteというサービスでWebフロント側に投稿者のIPアドレスが露出するという漏洩事故が起きました。これがどれぐらい問題かは一旦置いておいて、何故こういうことになるのか、そしてRailsでよく使われるdeviseという認証機構作成ライブラリのより良い使い方について話をしていきます。 (noteがRailsを使っているか、ここで話をするdeviseを採用しているかは定かではないので、ここから先の話はその事故とは直接関係ありません。Railsだったとしても恐らく使ってないか変な使い方してると思うんですが、理由は後述) 何故こんなことが起きるのか そもそも、フロント側に何故IPアドレスを送ってんだ、という話です
長らく改訂版をお待たせしていたパーフェクトRailsがついに新しくなります。 私は、やはり人間は締切が近くならないと働かない、という極めて重要な事実を改めて学ぶことができたのが良かったと思っています。 そろそろ献本させていただいた本は届き始めている様で、ブログやTwitter等で紹介していただけて嬉しい限りです。 全体の解説や紹介はそちらに任せるとして、私は今回担当していた箇所が大きく変わったので、それについての感想や裏話を書こうかと思います。 前回担当していた箇所 前回は、基本的に終盤のRailsの基本機能を越えたアプリケーションを作る時に助けになる章を担当していました。 元々は、そういう仕事としてRailsアプリケーションを書く上で気にしておきたいこと、というのが書かれた本が余り無く、何とかそういう本を作りたいという思いがあったので、あの辺りの章を担当させてもらいました。 正解の無い部
コロナが蔓延してから美味しいものを食べるために外食するという行為がほぼ無くなってしまい、お金を稼ぐモチベーションが薄れていたので、いっそ散財してモチベーションを取り戻そうと思い、自宅の環境改善としてオーディオにお金をぶち込んでみた。 ついでにMacを使わなくなってしばらく経つのに、iPhoneとの連携のためにiTunesとfoobar2000を無理やりLinuxで使ってたのを止めようと思いソフトウェア周りも一新することに決めた。 ハードウェア刷新 新しいヘッドホン 基本的に音楽はヘッドホンで聴くのだが、自分はゼンハイザーというメーカーのヘッドホンが昔から好きなので、まずは、そこのフラッグシップモデルであるHD800Sを買う。 実はHD820という後継のモデルもあったのだが、レビューを見る限りでは低音が多少HD800Sより強く出るが、HD800Sを持ってる人が買い替える程じゃないというコメン
最近、仕事で分散ストリーム処理に手を出していて、その基盤としてApache KafkaとKafka Streamsを使うことにしたので、動作概要とストリーム処理のイメージについてまとめておく。 kafkaそのものについては今更説明の必要は無いだろうと思う。 Kafka Streamsはkafkaを基盤にして分散ストリーム処理を簡単に書くためのDSLライブラリ。 https://kafka.apache.org/documentation/streams/ 延々流れてくるデータを変換して別のtopicに流したり、時間のウインドウを区切ってカウントした結果を流したり、みたいなのがサクっと書ける。 Apache Flinkなんかと似た様なことができる。 Kafka Streamsが良いのは以下の点。 ただのConsumer/Producerのラッパーなのでfat-jarファイル一つで簡単に動かせ
4/18 - 4/20で開催されていたRubyKaigi 2019に参加し登壇してきました。 今回の登壇内容は「Pragmatic Monadic Programming in Ruby」というタイトルです。 スライドは以下。 speakerdeck.com 実装はこちらです。READMEの整備が全然出来てないのと、APIがまだ変わる可能性があるので、gemとして正式リリースするのはまだやってないのですが、近々ちゃんとリリースします。 github.com Ruby黒魔術師として、自分が良いなと思っているデザインパターンであるモナドを、Rubyの世界で理想的に表現するならどうなるかということを考えて発表テーマとしました。 今回、ASTがRubyレベルから簡単に触れる様になったので、それを活用してみたかったというのもあります。 内容としてはAST変換を駆使して、あるパターンの変数代入構文を乗
RubyConf 2018のRubyKaigi関連トラックに採択されたので、登壇するためにロサンゼルスまで行ってきました。 RubyKaigiトラックということで、内容はRubyKaigiの再演でした。 学生の時にめっちゃ貧乏だったのもあって、今迄海外に行く機会が全く無かったので、実はこれが初の海外旅行であり、当然ながら英語で発表するのも初めてだったので大分緊張しましたが、本番ではそれなりにウケたという手応えがあったので、今迄の登壇経験が上手いこと活きたんだろうと思っています。(後で松田さんとそらはーさんに、めっちゃ発音突っ込まれたけど……) 共同登壇者であるtagomorisさんには、トーク以外でも色々と滞在中にお世話になったので改めて感謝を!ありがとうございます! 録画はあるらしいので、もうちょっとしたらyoutubeとかに上がるだろうと思います。 発表の仕方については、流石に普段英語
職場でcassandraの運用を開始したので、選定理由とか運用してみて得た知見や所感等を書いてみようと思う。 (まだ十分に知見を得たとは良い難いので、間違った印象を得ていたり、より良いオペレーションに気付いていない可能性があります。) cassandraの採用理由 そもそもの目的はホットデータの書き込み先としての利用です。要件としては以下の様なものがあります。 エンドユーザー端末の数に比例するので、書き込みのスケーラビリティが必要 書き込みデータは更新される 一件単位、もしくは数秒単位の短かいサイクルでバッファチャンクを書き込む必要がある prestoで読み込める (最悪connectorは書いてもいいが、できれば避けたい) 一度に数百万件ぐらいまで読み込む可能性があるので、それなりに読み込みもスケールして欲しいし、レンジスキャンにもある程度効率が求められる。 元々、データ加工で潰しが効く
Asakusaの方面から来ました 今回、RubyKaigiに来た人は何度かこの画像を目にしたかもしれません。 昔からAsakusa.rbに良く参加している人が発表資料を作る時に、良く使われている画像です。 いかにもシンボリックでアングルが良い写真なので、これが定番として使われています。私とモリスさんも今回のRubyKaigiで使わせてもらいました。 最近のAsakusa.rbに良く参加していて、今回のRubyKaigiに登壇していたメンバーは私が覚えている限りで以下の通り。(id表記 敬称略) @tagomoris & me @hsbt @koic @spikeolaf @youchan @aycabta LT Speakers @tad @284km @youchan 全員の資料を見てないので、全ての発表でこの画像が出てたかは分からないですが、めっちゃ多いですね。1日二人以上のペース。(
仙台で行われたRubyKaigi 2018に参加してきました。 RubyKaigiは毎年最高のイベントなのですが、今年は総合的に今迄で最も良い体験ができたRubyKaigiでした。 実績解除 今回のRubyKaigiで初めてメインスピーカーとして登壇することができました。 私が初めてRubyKaigiに参加したのが、確か2011年で1stシーズンのFINALとして開催された時でした。 そして、その頃からずっとThe RubyKaigiのメインスピーカーというのは憧れの場であったのですが、7年の歳月を経て辿り着くことができたことを本当に嬉しく思っています。 今回の発表内容は「Hijacking Ruby Syntax in Ruby」というタイトルで話をさせていただきました。 Asakusa.rbで雑談してたのが切っ掛けで、@tagomoris さんと盛り上がってRubyのダイナミックな機能
このエントリはRails developer meetup 2017で発表した内容をブログとして書き出したものです。 サンプルのスニペットが多いので資料の代わりにエントリとして公開します。 スライド用のmarkdownを元に起こしたものなので、少し読み辛いかもしれませんがご容赦ください。 ECSとは Dockerコンテナを稼動するためのクラスタを管理してくれるサービス 使えるリソースを計測し、自動でコンテナの配置先をコントロールしてくれる kubernetesではない。最近、kubernetesが覇権取った感があって割と辛い 今はEC2が割とバックエンドに透けて見えるのだが、Fargateに超期待 ECS or EKS :tired_face: RailsアプリのDockerize オススメの構成 実際にデプロイするimageは一つにする 例えばstagingやproduction等のデプ
とてもとても悲しいので、とりあえずやったことと言い訳を書いて気を紛らわせることにする。 敗北した身でグダグダ言うのが格好悪いことは百も承知だが、人間には魂の救済が必要であることをご理解いただきたい。 序盤〜方針決定 最初パスワードのコピペミス等でサーバーからガンガンBANされて、そもそもログインできなくなる。これで10分から20分ぐらい無駄にした気がする。 テザリングにIPを切り替えたり、他のノードから入ったりして、何とか公開鍵でログインできる環境を整える。 適当にベンチ流してスコアを取る前に、nginxのログ設定や構成を確認しalpを使って集計できる準備を整えた。デフォルト実装とRuby実装でベンチを流す。その裏で実装を一通り読む。 ざっくり図を書いて、相談。とにかく/iconsを何とかしないと話が進まないので、静的ファイルとして書き出してCache-Controlだよね、までは即決。
先日、広島で開催されたRubyKaigi 2017に行ってきました。 相変わらず各トークのテクニカル度合いが異常にハイレベルで刺激的なカンファレンスでした。 最近、静的解析やRubyと型の関係がホットトピックであることもあり、ripperやparser gem等のRubyパーサやRubyVM::Iseq周りを触っているスピーカーが多く、コアに突っ込んでいく人のアクティビティにはとても刺激を受けました。 個人的にはIseqのバイナリ表現とソースコードの変換を活用してマクロの様なことを実現していたCompiling Rubyという発表が印象的でした。 後、毎年ラストのキーノートはやってることが凄過ぎて、圧倒されるばかりですね。 私自身は、メインのスピーカーとして登壇することはできませんでしたが、LTスピーカーとして話をする機会がもらえたので、そこで登壇してきました。 From RubyKaig
Twitterでちらっと見かけたので、自分も良い点と悪い点をまとめてみようと思う。 良い点 電車に乗らなくて良い ミーティング開始の5分前まで寝てられる 人の話し声がしない 話しかけられずに済む 疲れたらいつでもベッドにダイブできる ちゃんとアウトプットしてれば、仕事している様に見せなくてもいい 寝間着で仕事ができる ハイスペックなPCが使える WiFiが不安定みたいなトラブルが少ない 良い椅子が使える ヘッドホン無しで音楽が聞ける いきなり歌い出しても、誰も変な目で見ないし、迷惑がかからない 基本的に引き篭りなので、自宅の環境が快適になる様に腐心した結果、大抵のオフィスより自宅の方が執務環境として優秀であり、自宅より仕事に関する物の水準が高い会社というのをほぼ見たことがない。 そして、日常生活において、歌うというのが精神の健康上とても大事なので、音楽を聞きながら突然歌い出したりしたいのだ
Thinkpadが唐突にぶっ壊れたため、自宅のPC環境を早急に何とかしないと色々不便でしかたなくなってしまった。 最近、Ryzenが盛り上がってるし、ここ5年ぐらいデスクトップPCを新調していなかったので、もうこのタイミングで1台作ってしまうことにした。 ちなみに、予算に限界があったため、タイミング的にThreadripperで組むことも可能だったがそれは諦めた。 構成 パーツ 名称 CPU Ryzen 1800X マザー MSI X370 GAMING PRO CARBON メモリ Crucial Ballistix 16GB x2 NVMe CFD CSSD-M2O512PG1VN 512GB VGA GIGABYTE GeForce® GTX 1070 G1 Gaming 8G 電源 Seasonic X Series 860W SS-860XP2S クーラー Corsair H11
書籍紹介は既にいくつか書かれているんで、私は自分の担当した箇所の話を書こうかと思います。 本日(5/17)改訂2版 パーフェクトRubyが発売されます - すがブロ 改訂2版 パーフェクトRubyが出版されました - esm アジャイル事業部 開発者ブログ 改訂2版 パーフェクトRuby:書籍案内|技術評論社 私は、どっちかというと大きく書き直す所をメインで担当していました。主にテストコードの章です。後Refinementsについても少し書いてます。 テストコードの章では、書籍紹介にある様にtest-unitを採用しています。 fluentdプラグイン関連のテストコードはtest-unitで書かれていることが多いのですが、最近その辺りを結構触っているので、私が書きますよと手を挙げさせていただきました。 Refinementsについては、恐らく数少ないproduction環境でもRefine
Macを捨ててThinkpadにGentooを入れて開発環境としてから2ヶ月が過ぎた。 世の中にはMacから離れようとしてThinkpadを買ったら、矢印キーボード押しにくいとかタッチパッドがクソなので、Macに戻っていった人も居るみたいですが、私としては至極快適に過ごしております。 そもそもThinkpadのタッチパッドは基本無効化するものなのでどうでもいい。まあそのスペース邪魔なんだよ、とは思いますがw Wi-Fiの無効化キーを誤爆するという危険があるらしいが、Gentooだと頑張って設定しないとそういう特殊なキーはそもそも動かないので、そんな危険もなく安全ですね。 Gentoo入れてタッチパッドを無効化すれば、Windows10というOSも使わなくていいし、全て解決するんではないでしょうか。 前置きはこのぐらいにして、色々と使うものが安定してきたので今の環境について書いていきます。
英字キーボード配列にできて開発ユースに耐えうるノートPCがとても選択し辛い昨今、なんとなく安牌ポジションだったMBPについにさよならしました。 元々、Macを好んで使っていたというより、解像度が高くて英字配列にできて電池の持ちが良いというノートPCがMBPだっただけで使ってたのですが。 一番大きな要因がコンテナの利用頻度が増えて開発環境も含めてDockerを使う様になったので、Macだとどうにも面倒だという点です。 docker-machineのデフォルトとかdocker for Macのデフォルトが遅過ぎて話にならないし、dinghy使ってもdocker-sync使っても微妙でかつ面倒くさい。 普通にLinux上で直接動かせるなら、無駄な苦労だと思って、まず開発用PCをLinuxにしようと決めました。 そしたら新しいMBPが30万越えるのに、一世代前のCPUとメモリでドヤ顔してくるわ、キ
もう2週間ぐらい経ってしまったが、tagomoris & tnmtとチームを組んでISUCON本戦に出場してきた感想を書こうと思う。 中々ブログ書いてる暇が無くて、えらく遅くなってしまった。 ちなみに結果は6位。3位以下は割と団子状態で、後一手ぐらい刺さってれば3位は行けただろうなあと、残念な思いがある。 まあ、どっちにしろ1位はちょっと難しかった。 細かい流れはモリスさんのブログに既に書かれているので、そちらに譲る。 今回のお題はdockerがバリバリ活用されていたのと、SSE + Reactによるサーバーサイドレンダリングの組み合わせという非常にモダンな構成だった。 お題の発表後は、流石にうわー……マジかーって感じになった。 そもそも、現時点のRubyのWebフレームワークというものはSSEの様なストリーム配信と余り相性が良くない。 なので、あんまり使わないし、最適化のノウハウも溜まっ
少し前にtagomorisさんと飲んでたらISUCON出ようぜーって誘われたので、一緒に出ることになりました。 メンバーは、私(joker1007)、tagomoris, tnmtの3人。 今までの職場で一緒にISUCON出ようって感じの人が周りに居なかったので、今回何気に初参加だったのでえらい緊張してました。 特にモリスさんはISUCON無敗神話を持ってたので、足引っぱらないか不安でしたね。 前日に素振りした感じでは、Webアプリとして真っ当にチューニングしてスコア出せる感じなら大体いけるやろーと思ってたんですが、当日のあの問題の感じでは割と焦りまくりでした。 やった事は大体以下の様な感じ。 isutarを統合する (不要なマイクロサービスは殺すべし) keywordリストを全部redisに乗っける 瞬間的に各keywordに大量のアクセスが来てunicornが詰まるのでpumaに変える
近況報告、というかタイトル通りなのですが、CTOとしてデビューすることになりました。 7月から、最近お世話になってたReproという所のCTOという肩書を得ました。 自営業の個人事業主からいきなりCTOですよw まあ、CTOといっても、そこのフェーズ次第でやることってのは色々と変わってくると思います。 私の当面のミッションは、中長期的なアーキテクチャの方針決定とそれを実際に形にすること。 そしてリクルーティング、つまり転職斡旋おじさん業です。 なので、責任とコミットする割合が増えるだけで、そんなに今までとやってることは変わらないと思う……多分。 まさか自分がCTOになるとは全然思ってなかったんですが、30歳も越えたし肩書きと共に仕事するのも新しい挑戦としては良いかと思いました。 後は、収入ラインとかIT健保の任意継続が切れた後の社会保障の確保ですかね……。まあ、金は大事ですよね。 他にも色
そろそろ忘年会シーズンですね。年末の飲酒予定がちらほらと埋まってきている頃だと思います。 というわけで、日本酒を飲んだ経験ならRubyist界の中でもトップクラスと勝手に自負しているこのjoker1007が、年末に向けてオススメの日本酒を紹介したいと思います。 居酒屋で日本酒を選ぶ時や、酒屋で買って宅飲みする時の参考にしていただけると幸いです。 ちなみに、書いてる内容は私の主観であって明確な根拠があるわけじゃありません。 私の味覚が適当な場合もあるし、同じ銘柄でも作り方によってはかなり違った味わいになるし、年によっても味は結構変わりますので最終的には勘に頼ってくださいw 鉄板 まず、ここ最近の俺的鉄板銘柄をいくつか。自分が旨味のしっかりした銘柄の純米吟醸が好きなので、その辺りで美味しい所が多いです。 東洋美人 (山口県) 少し前に大規模な水害に遭って蔵元がかなりの被害を受けましたが、その後
次のページ
このページを最初にブックマークしてみませんか?
『joker1007’s diary』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く