来年の服を買う

昨日は去年買った服のブランドの26年の秋冬の受注会に行って服を買ってきた。 26年の秋冬なので、届くのは半年以上先だけど。 最近の円安からの原価高騰により、在庫を減らして価格を抑えるために、ほとんどを受注会で売り上げるドメブラが増えてきているら…

ナニワヤのローストビーフはいいぞという話

うちは毎年、年末年始や記念日を家で過ごす場合、結構高確率で麻布十番にある「スーパーナニワヤ」というスーパー内の精肉店で売っているローストビーフを買って食べることが多い。 ナニワヤのローストビーフはこれまでの人生で一番美味しいローストビーフと…

lexicalエディタでMermaid記法で図を描けるようにするプラグインを作った

facebookが公開しているlexicalエディタというリッチテキストエディタのライブラリがあって、便利に使っている。 lexical.dev エディタstateを管理するためのコアライブラリといくつかのプラグインが提供されていて、プラグインの仕様に沿ったReactコンポー…

MySQLのレプリケーションプロトコルを使ったBinlogイベントを処理できるライブラリを作った

久々にライブラリを作って Rubygems に publish した。 github.com ライブラリの名前は MysqlReplicator とした。これは MySQL の Binlog イベントを Ruby のプログラムで受け取って自由に処理を書くためのライブラリ。 MySQL にはレプリケーションプロトコ…

RubyのTCPソケットでMySQLにクエリを発行する

前回 Ruby の TCPソケット通信で MySQL の認証を通すやり方を書いたので、その続き。 認証を通せれば、Rubyから SQL を発行して実行できるようになるのでやり方をまとめる。 MySQL には各種処理を実行するためのコマンドというのがあり、SQL の実行は COM_QU…

Rubyでcaching_sha2_password認証を使ってMySQLに接続する

ローカル環境で、Ruby で MySQL のレプリケーションプロトコルを扱う処理を作りたいのだけど、いつも使っている mysql2 gem がレプリケーションプロトコルに対応していないので自分で作ることにした。 普段はナイーブに TCP ソケットを使った処理を書くこと…

2024年末

そういえば今年の年初って1/1だよね(あたりまえ)、早すぎ! コードを書く感覚が戻った 前職を辞める前2~3年くらいはほんとに不具合改修とか障害起きたときに調査するくらいしか開発に触れてなかったのだけど、まあすぐに勘を取り戻すっしょと気楽に考えて…

10年勤めたfreeeを辞めて零細企業を作った

日記です。 タイトルの通り10年勤めたfreee株式会社を退職して、自分で会社を作ってやっていくことにした。 freee最終出社でした、10年間ありがとうございました!(ビルを見上げる写真撮り忘れた) 次回作にご期待ください! — yo_waka (@yo_waka) June 16, 2…

ブログの実装をWrangler v1からWrangler v3にアップデートした

このブログは[Cloudflare Workersで配信している](https://waka.hatenablog.com/entry/2020/11/08/000000のだけど、ライブラリや実装の見直しをサボりにサボっていたため3年ぶりに更新した・・ 開発環境でもあり、CLIツールでもあるWranglerがv3になっていた…

ミラーレス一眼買った

今の情勢だと人が多いところに出かけづらいので、人がいない場所でも楽しめる趣味としてカメラを買った。 レンズ交換式のカメラを買うのは2回目で、大昔デザイナーやってた頃に素材くらい自分で用意できるようになるかーとNikonの一眼レフを持っていた時もあ…

RBSの型情報を使ってリクエストパラメータをランタイムで型チェックしてみる

Ruby3 がリリースされてめでたい! RBS という型定義ファイルでコードチェックする機能がデフォルトで使えるようになった(実際は Steep という型チェックライブラリと合わせて使う)。 今後主要なリポジトリで RBS ファイルが提供されて、エディタサポート…

在宅勤務が増えて買ってよかったもの

3月から在宅勤務になってからというものの、なかなか家だと集中して働けない(自分は外に出て家族でない誰かがいる環境の方が集中できるぽい)ということが分かり、学びがある9ヶ月になってしまった。 そんな中でも仕事はしないといけないため、快適に過ごす…

CloudflareのDNSにGoogle Domainsを使ってルートドメインの名前解決をする

このブログでは「waka.dev」のルートドメインを Cloudflare に名前解決させて Workers に向き先を変えているが、DNS の設定にハマったのでやり方を残しておく。 DNS の向き先を変えるやり方はサポートサイトにあるので、その通りやればよくて、サブドメイン…

Cloudflare Workersによるブログの実装 2020年版

r7kamura さんのこのサイトの実装 2020年版に倣って、このブログの実装を書いてみる。 ソースコードは全て GitHub に上げてある。 ホスティングとCI Cloudflare Workers を使って配信している。 CI は専用CLIツールの Wrangler の使い勝手がよく簡単。 GitHu…

WranglerでCloudflare Workers KVの全てのキーを削除する

Cloudflare Workersの既存のキャッシュ(KV)を全てクリアしたい場合。 単体のコマンドでは全てのkeyを削除することは出来ないので、 kv:key list と kv:bulk delete を組み合わせて使う。 このときlistで返ってくるJSONをそのままbulk deleteで使えないので…

四連休

月曜を休みにしたので四連休になった。四連休最高! おかげでコードを書いているのだけど、最近ようやくダイニングのイスを卒業し、作業用のイスを買ってからというもの、腰の状態がすこぶるよい。 買ったのは会社で使ってるのと同じバロンチェアで14万円が…

CloufFlare Workersことはじめ

エッジコンピューティングを素振りしてみたかったので、Cloudflare Workersを触ってみた。 恐らく仕事で使うとしたらLambda@Edgeになると思うけど、個人で気軽に試すにはCloudflare Workersは無料で動かすことも出来るのでハードルは低い。 触ってみて思った…

flux-utilsをReact Hooksで地道にリファクタしていく

グローバルなJSONリファクタ に続き、地道なリファクタシリーズ第2弾。 Facebook社が公開している flux-utils、使っていますか。 今は大抵の人がReduxでFluxを実装していることでしょう。flux-utilsは3,4年前はシンプル故に普通に選定してもよいと思える選択…

HTMLに埋め込まれたグローバルなJSONをReact Context APIとHooksで地道にリファクタしていく

新年の書き初めにReact Hooksでいろいろ習作を書いたりしてた。 WebアプリケーションだとサーバサイドからHTMLビューにJSONを書き出して、フロントエンドでそれを使うというのはよくやるやつだと思う。 こんなやつ(例はRailsのERB) <script> window.GLOBAL = {}; w</script>…

MacからLinuxに乗り換えた

そろそろ家のMacbook Air (2013 Mid)が限界にきてたので、Thinkpad X1 Carbon (Gen 5th)を買ってArchLinux入れた。 この時期は毎年Lenovoのオンラインショップで40%以上ディスカウントされてるらしく、SSD以外モリモリでつけても17万円を切って財布にやさし…

出戻ったワイワイ

Github Pagesで書いてたけど思い立ってはてなブログに戻した。 インポートスクリプト書いたものの、記事数多くないしMarkdownだし手でコピった方が早かったんじゃという気がしてきた。

ReactiveCocoa Tokyo

ios

先週になりますが、「ReactiveCocoa Tokyoというイベントがあり、そこでfreee社での導入の経緯やMVVMでのReactiveCocoaの使い方について話してきました。 freee社でのReactiveCocoa活用例 from yo_waka ReactiveCocoaは役割上ロックインされがちで、そこをな…

volley(サブプロジェクト)のbuildToolsVersionをafterEvaluateで上書く

Android StudioがBetaになったので、0.8.2に上げようとしたらモジュールのビルドでハマった。 Android Studioのバージョンを上げるときは、build.gradleを弄る時でもある。 Betaに上げるからには最新版のGradleプラグインとAndroid SDKでコンパイル&ビルドで…

Android meets RxJava

少し、いやかなり前に渋谷Javaで「Android meets RxJava」というタイトルでLTしてきました。 スライド上げるのが遅くなってすいません。。。 RxJava meets Android - 渋谷Java#6 from yo_waka freeeのAndroidアプリの開発前にチーム内で考えていたのが、テス…

Hubotを導入したらレビューの敷居が下がった話

dev

ウチの会社ではHipchatとGitHubを開発のコミュニケーションの中心にしている。 だんだん人も増えてくると、以前よりプルリクの数がそれだけ増えて、レビューで1日終わってしまう人がでてきた。 昔から仕様を知っている人にレビューが投げられがちで集中しや…

WEB+DB PRESS Vol.79にAngularJSの記事を書きました

2/22発売のWEB+DB PRESS Vol.79のJavaScript連載で「AngularJS」をテーマに記事を書きました。 こんな感じのことを書いてます。 AngularJSについて AngularJSの主な機能 2wayバインディング スコープ モジュール コントローラ Dependency Injection (DI) サ…

iOSアプリの全てのビューコントローラーにGoogleAnalyticsを一括で設定する

ios

今作っているアプリで、改善のためにどれくらい画面が使われているか知りたかったので、GoogleAnalyticsを入れたときのメモ。 GoogleAnalyticsはご存知みんな知っているアクセス解析ツール。 iOS用にもSDKが公開されていて、CocoaPodsを使っていればpod inst…

Macの環境構築にhomebrew-cask+Brewfile便利

dev

先週 Macbook Air を新しいマシンにリプレースした際に、環境構築どうしようかなーと思って、homebrew-caskを使ってみたらかなり捗った。 Mac上の環境構築でよく聞くのは、GitHubが公開しているBoxenだと思うけど、PuppetのDSL覚えるの面倒くさいし、パッケ…

AngularJSのディレクティブの仕組みを追ってみた

追ってみたシリーズ第3回目。 AngularJSのディレクティブ、名前は聞いたことあるけどあれでしょ?自前の「ng-hoge」を作るための仕組みでしょ? だいたいそんな感じですが、どうやって実現しているのか。 ディレクティブの役割 ディレクティブはHTMLビューを…

AngularJSのDIの仕組みを追ってみた

AngularJS黒魔術のうちの1つ。DI。 コントローラーの引数に$httpなどを指定すると、なぜ何もしなくてもHttpProviderの返り値が入ってくるのか。 var userControllers = angular.module('userControllers', []); userControllers.controller('UsersCtrl', fun…