ハイパーマッスルエンジニア

Vim、ShellScriptについてよく書く

AZ-900&AZ-104&AZ-305 合格体験記

1 ヶ月で AZ-900、AZ-104、AZ-305 まで合格した体験記。これさえやっときゃ受かるって話を書いていく。AZ は Azure の認定資格で、AZ-900(初級)、AZ-104(中級)、AZ-305(上級)の位置づけ。 1 ヶ月のスケジュール ざっくり以下のスケジュールで試験に挑…

tiktoken の decode_tokens_bytes でトークン分割されたバイト文字列を、分割されたまま復元する【日本語対応】

GPT

GPT の API を使うときに気になるトークン数はtiktokenで計算できる。tiktoken でトークン数を取得するのは簡単なのだが、トークン分割された後の文字列を取得するのは自前の実装が必要。今回はこのトークン分割されたバイト配列から、分割されたまま文字列…

レーシック体験記

先日レーシックを受けてきた。日記としてまとめておこうと思う。 結論から言うと「いまだにレーシックやってないやつおる?」ってぐらい良い体験だった。 金あるなら今すぐやったほうがいい。ただ子供がいる家庭は、パートナーに1〜2日は自分が使い物になら…

2023年振り返り

今までの振り返り 2019年振り返り 2020年振り返り 2021年振り返り 2022年振り返り ハイライト 家庭崩壊の危機!(今のところ無事) 子供が3歳になった!立派! エンジニアマネージャー ざっくりどんな年 前半は仕事で忙殺。大きなプロジェクトのリリース、巻…

Next.jsを使ったServer Sent Events (SSE)の実現方法

Server Sent Events (SSE)は、サーバからクライアントにリアルタイムで情報をプッシュするための技術です。この記事では、そのフロントエンドでの実装方法をいくつか紹介します。 完成品 今回実装したものは下記に収めてます。Next.jsを使っています。 githu…

エンジニアマネージャーになって10ヶ月経つ所感

ポエム。マネージャーになってから実感した気持ち、残しておくぞ。 立ち位置 マネージャーと言っても会社によって役割が全く違うと思うのではっきり書いておく。 今のエンジニア組織はWebグループとMobileグループに分かれていて、自分はWebグループのマネー…

Meilisearchをデプロイするならfly.ioでもrender.comでもなくGCE(Google Compute Engine)

Meilisearchは軽量で小規模〜中規模のデータならかなり高速なパフォーマンスを発揮する検索エンジン。 Dockerイメージが用意されていて、データの投入もREST APIで可能なので構築が非常に簡単。ローカルで立ち上げるだけなら5分もかからない。 今回はMeilise…

Meilisearchの日本語検索をさらに強化する

「Meilisearch」はOSSかつ日本語対応している検索エンジンで以下の特徴がある。 高速 タイポに強い カスタマイズ可能:検索結果のランキングルールやシノニム、ストップワードなどを設定できる RESTful API:シンプルで直感的なAPIを持っており、多くの言語…

Androidに変えてからブラウザ難民になった件

iPhoneからAndroid(Pixel5a)に乗り換えたのが2年前。 概ね支障はなかったが、ブラウザだけが未だに定まっていない。iPhone時代はsafariを使っていて不便はなかったが、Androidにしてから色々挙動が違ったり気になったりすることが多くなった。 ブラウザに求…

マークダウンで書ける無料のマインドマップツール「markmap」が最高すぎた

Vim

マインドマップのツールで悩んでいるなら朗報だ。決定版をついに見つけてしまった。 マークダウンで書ける OSSで無料 見た目がおしゃれ 素のhtmlやReactに組み込める CLIツールがありGithub Actionsに組み込める vimのプラグインがある これらの特徴を持つの…

Gather TownのWebSocket APIで入室時にslackに通知するようにした

バーチャルオフィス「Gather」ではWebSocketAPIがあり、 プレイヤー入退出のイベント プレイヤーをテレポートさせる プレイヤーのアバターを着せ替える など自由度の高いAPIが多く用意されている。 これらのAPIを使って 紙吹雪でプレイヤー吹き飛ばし プレイ…

CDNで簡単にホットリロード環境を導入する仕組みを作った

課題 jQuery, HTML, PHPで構成されているようなプロジェクトで、新たにnpmやcomposerの導入が難しく、巷のホットリロードのツールが利用できない場合を想定。 つまり既存のプロジェクトの構成は変えられないけど、ホットリロード機構は欲しかった。 作ったも…

iPhone,iPadでPDFが1枚目しか表示されない問題の解決策

iframeでPDFを表示すると、iPhoneやiPadでは1枚目しか表示されない問題がある。これはstackoverflowや他のサイトでも報告されているとおりブラウザのバグっぽい。 iPhoneだとPDFの1枚目しか表示されない PCだと1枚目以降も表示される 対応策 PDF.jsを利用す…

Next.js@12.3.2で画像アップロードできないのはmiddleware.tsがあるせいだった

現象 Next.jsで画像アップロードすると、アップロード処理がpendingで止まってしまう。 アップロード処理がpendingになる コードは下記。エラー判定はなどは飛ばしているが、FormDataをPOSTするシンプルなやつ。 pages/Index.tsx export default function Ho…

2022年振り返り

今までの振り返り 2019年振り返り 2020年振り返り 2021年振り返り ハイライト 趣味・家族・仕事のバランスが良かった お金の勉強捗った 子供の成長早すぎワロタ(無事2歳!) 今年はどんな年だったか 総じて良かった。子育てに忙殺されながらも段々と慣れて…

「ZOOM会議をニコニコ動画風にする」記事を書いた

アドベントカレンダーで記事を書いた。 qiita.com 内容はZOOM SDKを使ってZOOMをニコニコ動画風にしてみたという記事。 初めてZOOM SDkを利用してみて思ったところがあったので残しておく。 走り出しで詰まる こちらの参考記事にZOOMのAPI、SDKを利用するた…

「仕事が遅い人は絶対に知らないワンライナー10選」の記事を書いた

2年ぶりにアドベントカレンダーで記事を書いた。 qiita.com 自分としてはいつもよりちょっと過激なタイトルで、このタイトルに至るまでの経緯が勉強になったので残しておきたい。 アドベントカレンダー参加までの経緯 今年はdotfileを結構いじくれたので、そ…

ChatGPTをターミナルからサクッと試す

ChatGPTをターミナルからサクッと試す方法を紹介します。 アカウント登録が必要なもののクレジットカードの登録などはないので5分もあれば試すことができました。 ※ 2022年12月5日時点の情報です。AI周りは情報が速いのであくまで当時の情報ということを念頭…

エンジニアとしての情報収集について【2022年度版】

2021年から2022年にかけて、結構意欲的に技術を追ってきた。 情報収集のやり方がなんとなく定まってきたのでまとめたいと思う。 普段ググったりするときに利用するサイトとかではなく、「最近どんな技術が流行ってるのかなー」とか「日常のルーティン」とし…

coc.vimの補完メニューの色を変える

Vim

coc.vimの補完メニューの選択中の色を変更したかったが苦戦したのでここに記す。 補完メニューの色を変えるには:h CocFloatingによるとPmenuが割り当てられていると書いてあったので、選択中の色を示すPmenuSelを変更したが反映されなかった。 " これは反映…

Vimでステータスラインを自作にしたら起動速度倍になった

Vim

vim(nvim)の起動が遅い。由々しき事態なので対処した。 ステータスラインのプラグインをやめて自作にしたら400ms -> 200msに高速化できた。 起動速度の計測 まずは計測せねばならない。こちらの記事を参考にさせていただいた。 https://zenn.dev/uu64/articl…

zshが遅いのはvcs_infoが原因だったので高速化した

zshの起動が遅い。tmuxでパネル分割したときやls打ったあとがもっさりしてきた。 自分のzsh環境はoh-my-zshやpreztoなどは使っていないプレーンなzsh環境だったが、PROMPT表示に用いるvcs_infoが遅かったので改善した。 vcs_info gitやsubversionなどのバー…

Reactでセグメントコントロール作る

にゅるっとした動きのものがなかったので作った。 Next.jsで動くのを目的に作ったので、styled-jsxを利用している。 SegmentControl.tsx import css from 'styled-jsx/css' import { useState, useEffect } from 'react' const styles = css` .controls { di…

30歳になる所感

明日で30歳になる。なんとなく節目の年だと感じる。フレッシュ、青年、新人、などの初々しいイメージからは離れ、徐々にベテラン、おじさんなどという言葉に近づいていくのだろう。 自分が当初思っていたよりも「えっもう30!?」という感覚はない。やっと来た…

Reactのアニメーションライブラリ「framer motion」がすこぶるいい

Reactでアニメーションコンポーネントをサクッと作れるライブラリ「framer motion」。 非常に簡単にアニメーションをつけることができたので伝えたい。 www.framer.com インストール yarn add framer-motion かんたんアニメーション こんなdiv要素を用意して <div style={{ width: '100px', height: '100px', background: 'blue' }}></div>…

shellだけでリッチなTUIアプリが作れる「gum」がすごい

Shell ScriptだけでリッチなTUIアプリが作れるようになる「gum」がかなり良い感じ。 github.com 入力、書き込み、選択、Fuzzy、ローディングなど、TUIアプリに必要なものがサクッと書けるようになる。 インストール go install github.com/charmbracelet/gum…

slack api curlまとめ

チャンネルのメッセージを取得 スレッド内のメッセージを取得 メッセージ送信 メッセージ送信(スレッドにつなげる場合) メッセージ送信(メンションやコードブロックなど凝った文章の場合) メッセージ削除 ファイル送信 まとめ github.com チャンネルのメッセ…

Azure FunctionsでGolangを動かす

Go

Azure FunctionsのカスタムハンドラーでGolangを動かしてみた。最終的なリポジトリは下記。 github.com HTTPトリガー Timerトリガー を試してみた。 公式リファレンス docs.microsoft.com docs.microsoft.com 前提 ローカルでの動作確認のため、funcコマンド…

Azure App Service と GitHub Actions で Pull Request のプレビュー環境を自動で作成する

Pull Requestを作成したときにプレビュー用の環境を自動で作成してくれるGithub Actionsを作った。 PR作成時にプレビュー用のURL発行 こんな感じでプレビューURLを発行してくれて実際に動作確認ができるようになっている。 ローカルにブランチをpullしなくて…

10年もののシステムをPHP・Twig・jQuery・BootstrapからNext.jsにリプレイスするときにやったこと

Twig, jQuery, Bootstrap で構成されていたシステムをNext.jsでリプレイスしたときにやったことを書く。 前提 IE対応必須 ディレクトリ設計 github.com を参考にした。 ユニットテスト用の__test__は基本的に作らず、format.tsとformat.test.tsは同じ階層に…