2023-01-01から1年間の記事一覧
最近、JavaScript界隈の盛り上がりがすごいですね。 zigで作られたJavaScriptのランタイムであるbunは、その便利さ・パフォーマンスの良さから驚くような勢いで広まっています。その一方で新たな軽量WEBフレームワークhonoも非常に注目されています。 honoも…
少し前から、ずっと調子が良かった肌が荒れてしまいました。 元々、敏感肌で弱いアトピー持ちで季節の変わり目や花粉が飛ぶ季節になると、肌が荒れることがあったのですが、今年は今まで以上に肌の調子が悪くなりました。さまざまな要因があるため「これが原…
業務で集計処理を書く予定があるのですが、サブクエリとLEFT JOINのどちらを使って集計した方が良いのかを判断できませんでした。もちろん、データ量やデータ特性、トレードオフなどを踏まえて判断する必要がありますが、今後、同じような場面に遭遇した際に…
みなさんはRFC読んでますか... 自分は普段、ガッツリと読む機会はないのですが、新しいプロトコルを触るような場合に読んだことがある程度です。 過去にWebSocketを使ってSlackライクなチャットアプリを作ったことがあるのですが、その際にWebSocketのRFCを…
業務でsequelizeというNode.js製のORMマッパーを触る機会がありました。 単体テストを実行する度に、データベース(MySQL)のテーブルをクリア(全削除)するために制約を無視してTRUNCATEを全テーブルに対して実行したいのですがsequelizeでは対応するメソッド…
前回の記事でブログのデザインを一新したとお伝えしました。 その対応の一部として、はてなブログの「読者になる」ボタンをソーシャルボタンの一覧に表示するという対応を行なっています。 この位置を採用したのは、記事を読み終えた後にアクションを行うボ…
またもやRuby Weeklyで面白そうなgemが紹介されていました。 Ruby製の新たなテストフレームワークtldrというものです。すでにRspecやMinitestが人気を博している中、なぜ新しいテストフレームワークの実装を始めたのでしょうか。気になったので色々と調べつ…
移動手段として自転車(シクロクロス)を使っているのですが、防犯の都合で室内で保管しています。 ただ、部屋に自転車を置いてみると、その存在感には驚かされます。 思っているよりも大きいのと、部屋の面接をかなり占有してしまいます。結果的に「自転車、…
先日、ヘイシャの技術ブログに記事を投稿しました。 簡単に内容を紹介すると、RubyでCSVファイルをパースして標準ライブラリcsvが提供しているCSV.readと同じように最終的に二次元配列に変換する処理系をフルスクラッチで実装するというものです。コードは最終的…
すでにお気づきの方もいるかもしれませんが、ブログのデザインを一新しました。 元々はEpicというテーマを使っていたのですが、悩みに悩んだ結果、新しくkewpiedesignさんが公開されているgrayにテーマを変更しました。 今回、テーマを変更するにあたってシ…
先日、SubscribeしているRuby Weeklyからメールが届きました。 何やらRubyでGUIが触れる「glimmer-dsl-libui」たる、とても面白そうなgemが紹介されていました。 このgemは福岡Ruby2022でスペシャルアワードを受賞しており、とても注目されているgemのようで…
プログラミングを始めたばかりの頃、Python3をインストールするべく環境構築に取り組んでいました。 その際によく見かけたのは「パス($PATH)を通す」という言葉です。当時の自分には何のことだか全く分からず「なんでプログラミングのインストールにバスケじ…
最近はマイクロサービスを検討することが多いです。 マイクロサービスにおいて、よく問題となるのはサービス同士のやりとりをどのように行うかです。オーソドックスな選択肢としてはAPIを作成してHTTP通信で呼び出すという方法が候補に上がりますが、リクエ…
今年は昨年度と比べるとあまり技術書を読んでいませんでした。 というのも今年はとにかくコードを書くこと、実装をすることに重きを置いていたからです。ただ、最近、活字が頭にスッ...と入ってこないのを自覚しており、読書リハビリしないとダメだなと思っ…
先日、以下の記事を公開しました。 タイトルの通り、Golangを使ってMarkdownをHtmlに変換するパーサーを作ってみたよ〜という記事です。 www.okb-shelf.work ただモノを作ったのに公開しないのはもったいないな...と思ったのでGolangのコードをWeb Assembly…
最近はパーサーの実装にハマっており、直近だとRubyでJSONパーサー(json形式のテキストをRubyのハッシュに変換)を作りました。 www.okb-shelf.work 少し間が空いてしまいましたが、今回はMarkdown形式のテキストをhtmlに変換するパーサーを作ってみました。 …
少し前にはなりますが、RailsのDiscussionに問題提起を行いました。 その後、Discussionで「Issueを作成して良いよ〜」とお許しを頂いたのでIssueを作成した所、修正PRが作成されてマージされるという...とんでもない出来事がありました。 www.okb-shelf.wor…
みなさんはバイナリデータの中身を覗いたことがありますか。 僕は普段、WEBアプリケーションの開発に携わっているのですが、どうしてもこういった領域とは接点がありません。一度、WireSharkというアプリケーションを使って自身のPCから外部に送信されている…
無印良品から発売されている「白桃グリーンティー」が好きでよく飲んでいました。 ところが先日、白桃グリーンティーのストックがなくなってしまったので、無印に買いに行くと...なんと白桃グリーンティーがどこにもありません。 無印は突然、商品を廃盤・パ…
以前、システムコールを利用して簡単なTCPサーバーを実装しました。 www.okb-shelf.work hello worldという文字列が返るだけのジンプルな実装になっていましたが、他にも音声や動画といったデータをTCPを通じて送れるのか気になりました(...送れると思います…
最近、Twitchでスプラトゥーン3のプレイを配信しています。 その中でただプレイするだけだと面白くないので、武器をランダムで選択してバンカラマッチ(対戦)できたら面白いかも...と思ったのですが、配信でいい感じに使える武器をランダムに選択してくれるサ…
みなさんはシステムコールについてご存知でしょうか。 システムコールを一言で説明すると、OSのサービスを利用する際に呼び出しされる機構のことです。 普段、WEBアプリケーションの開発をしている自分にとってシステムコールは、あまり馴染みのあるものでは…
僕がプログラミングを始めたばかりの頃はPythonを使って、データ処理・分析、機械学習といった内容に取り組んでいました。 当時、業務(アルバイト)ではCSVファイルをpandasで読み込んで、前処理をしてmatplotlibを使ってグラフを描画して...というサイクルを…
先日、Twitterを見ていると面白そうな記事が紹介されていました。 少し古い記事ですが、シンプルなロードバランサーをRustで実装してみたとのこと。凄いですね...。 qiita.com ロードバランサーと聞くと何やら難しそうなイメージがありますが、記事内で実装…
先日、Rails製のアプリケーションのパフォーマンス検証をする機会がありました。 計測したいのはメモリ使用量と実行時間の2つです。後者の実行時間に関してはRubyが標準ライブラリとして提供しているbenchmarkを使えば事足りますが、前者のメモリ使用量とな…
一週間前にロジクールのBlue Yeti Xというマイクを購入しました。 今まで通話にはiPhoneに付属してくるイヤホンマイクをずっと愛用しており、音質には全くこだわりがありませんでした。むしろ、iPhone付属のイヤホンマイクで十分だと思っています。 ただリモ…
最近、パーサーを実装したい欲が高まっています。 というのもRui Ueyamaさんの「低レイヤを知りたい人のためのCコンパイラ作成入門」を読み進めて、再帰下降構文解析をはじめとしてパワフルな実装に非常に魅力を感じているからです。 資料に合わせてCコンパ…
先日、弊社の技術ブログに久しぶりに記事を投稿しました。 内容としてはOSSのコードを初めて読む人に向けて、どのような流れでコードを読んでいくのかを実際のOSS(gimei)を用いて紹介していくという記事です。 techlog.n2i.jp 本当は自分のブログに投稿した…
業務中に以前、自分が書いた記事を読み返す機会がありました。 www.okb-shelf.work JOINを使っているSQLを高速化できないかと思って新規インデックスの作成を検討をしていました。 ただし、過去の記事にも書いた通り「結合述語にインデックスを作成しても、…
sidekiq.ymlではERBがサポートされており、環境変数を指定することが可能です。 よく環境変数が使われるのは、並行度(concurrency)の値やタイムアウトの秒数などでしょうか。 :concurrency: <%= ENV.fetch('SIDEKIQ_CONCURRENCY', 10) %> こんな感じでsideki…