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

Vim、ShellScriptについてよく書く

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

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

Next.jsでバリデーションするなら「Ajv」がいい感じ

github.com ajvはNode.jsとブラウザ用のバリデーションライブラリ。 Typescriptで利用できるバリデーションライブラリといえば、yup, zod, joiあたりが候補に上がるが、ajvを採用した。 理由はバックエンド・クライアント両方で使えること、スキーマファイル…

tree-sitter導入したメモ

エラーが出る `tree-sitter` executable not found (parser generator, only needed for :TSInstallFromGrammar, not required for :TSInstall) 最新のneovimをインストールすれば直る brew upgrade neovim --fetch-HEAD tree-sitterの設定確認 :checkhealth…

Next.jsのoutputStandalone:trueで、pages/_middleware.ts があるとビルドに失敗するのはnext@12.0.10に上げたら直る

Docker イメージを軽くするための設定でoutputStandalone: trueにしていた。 module.exports = { experimental: { outputStandalone: true, }, しかしpages/_middleware.tsがあると下記のエラーが出てnext buildに失敗する。 > Build error occurred [Error:…

ビットコインがGithubで管理されてるってまじ?エンジニアには圧倒的アドバンテージが仮想通貨にはあった件。

俺は仮想通貨のことを何もわかっていなかったのかもしれない。 今日は仮想通貨について衝撃的だったことを書いていく。 ビットコインはGithubで管理されてるってまじ? マジ。 github.com てかなんならビットコインだけじゃなくてイーサリアムとか他の仮想通…

2021年振り返り

今までの振り返り 2019年振り返り 2020年振り返り ハイライト 転職をした 子供が1歳になった 幸福度が突き抜けて人生アガった。オツカレシタッ!! 今年はどんな年だったか 幸福とはなんなのかを真剣に考え、幸せになるための行動ができた年だった。 幸福論、資本主義…

Floating Windowの変態的な使い方

Vim

これはVim Advent Calendar 2021の14日目の記事です。 NeovimにFloating Windowが実装されて以来、様々なプラグインが開発、リプレイスされてきました。 有名所でいうとgit-messenger.vimでしょうか。Floating Windowの良い使い方だなあと感動した覚えがあり…

今月のコミット一覧を出す

GithubでsinceとuntilをURLにつければ検索できるんだな、知らんかった。 https://github.com/Rasukarusan/dotfiles/commits?author=Rasukarusan&since=2021-11-01&until=2021-11-30 コマンドだとこう git log --after '2021/11/01' --before '2021/11/30' 差…

俺がエンジニアとして作りたかったのは「治療薬」だったがしかし。

「君のプロダクトはビタミン剤か?鎮痛剤か?それとも治療薬か?」という記事を読んだ。 blog.btrax.com 記事で紹介されている「ビタミン剤」「鎮痛剤」「治療薬」のプロダクト例は下記。 ビタミン剤:YouTube, Facebook, Tiktok 鎮痛剤:Slack, Zoom, Sales…

VimでmessagesやhighlightなどのExコマンドの結果を別タブで開く

Vim

:tabe :put = execute('messages') めちゃくちゃシンプル。 今まで下記のようなredirを利用した関数を作って実行していたけど、完全に不要だった。 function! s:show_ex_result(cmd) redir => message silent execute a:cmd redir END if empty(message) ech…

macOSでneovimをbuildするとき「ninja: error: loading 'build.ninja': No such file or directory」のエラーが出る

Vim

.depsファイルが邪魔しているのでそれを削除するとbuildできるようになる。 cd neovim sudo rm -rf .deps sudo rm -rf build # buildも一応消しておく buildし直す sudo make CMAKE_INSTALL_PREFIX=$HOME/neovim/nvim install 環境 macOS BigSur 11.23 neovi…

Voicyに出演した

voicy.jp voicy.jp めちゃくちゃ緊張したし全然思った通りに話せなかったけど、オーナーの圧倒的まとめ力によって救われた。 出演して初めて知ったことは、収録はプレゼンや講演、講義をやるのとはまた全然違う緊張感があるということ。 院生時代は毎週教授…

【Neovim】好きな位置にテキストを埋め込んだりハイライトできる「ExtMark」の使い方

Vim

ExtMarkとは 指定した行、列にマーカーをセットできる。セットしたマーカー(位置)に好きな文字列を表示したり、ハイライトできたりする。 テキストの変更を追跡して表示できるので、インデント幅の表示やスペルミスを表すために使われたりする。 ヘルプは:h …

Mac専用sipsコマンドで、画像に枠線をサクッとつける

Mac標準搭載のコマンドでsipsコマンドがある。画像情報を取得したり付与したりできる。 画像のコマンドといえばimagemagickだが、imagemagickよりも少ないオプションで、かつ直感的に実行できるのがsipsコマンドの良いところ。brew等で別途インストールしな…

Sequel AceをApplescriptで操作する

以前Sequel ProをApplescriptで操作するのはやっていたが、昨今はSequel Aceを使うようになった。 Sequel ProとAceではFavorite.plistのPATHやUIの配置などがいくつか異なっていたため、それをまとめたい。 スクリプト まずどういったスクリプトなのかを載せ…

webpack × SentryでSourceMapが読み込まれないときの解決法

ソースマップが読み込まれなくて困ったときの解決方法を書いていくで。 ・releaseタグをinit時にも書いてないか ・urlPrefixをつけているか ...

カーソル下の関数だけ実行できるVimスクリプトを作った

Vim

vimでshellスクリプトを書いてるとき、ある関数だけ実行したい、ってのがよくある。そのとき毎回コメントアウトしていたのが面倒であった。例えば下記のような場合。 main() { echo 'main' } main2() { echo 'main2' } main # main2 # mainだけ実行したいの…

React, TypescriptでChrome Extensionを開発する(ホットリロード対応)

死ぬほど参考にさせていただいたサイト 基本的には下記のサイトを参考に進めればいけます。(最高の記事ありがとうございます、大感謝祭) code-log.hatenablog.com 本記事では上記で紹介されていたホットリロードがエラーで動かなかったため、別の方法でホッ…

M1MacBook、VimのquickrunでC#の実行環境を整える

知人がC#をやり始めて、教えてくれと言われたのでとりあえず開発環境を整えてみた。 環境 M1 MacBookAir Neovim >= 0.5 brew install monoができない arm版だとダメ的な問題でエラーが出てインストールできないので、Visual Studioから引っ張ってくるやり方…

M1 MacでNeovimをBuildする

Vim

NevimのBuild手順が少しわかりづらかったのでまとめておく。 環境 M1 MacBookAir(Big Sur) 事前準備 brew install cmake 手順 Homebrewでインストールしたnvimを上書きする場合 git clone https://github.com/neovim/neovim.git cd neovim make CMAKE_BUILD_…

ブラウザからTemrinalに接続するxterm.jsをNext.jsとNestJSで構築する

xterm.jsが楽しそう ブラウザにTerminalを設置できるxterm.jsというライブラリがある。VSCodeのTerminalやHyperなどに使われている。 xterm.jsが提供するのはざっくり言ってしまえばTerminalの形をしたテキストフィールドのみ。実際にTerminalに接続したりキ…

【メモ】PHPフレームワークSlimをdocker-composeで環境構築する

途中でまとめるのが面倒になってしまったのでメモ書きとして残しておく リポジトリ github.com 環境 M1 MacBookAir(Big Sur) Docker Desktop(3.3.0) 初期ディレクトリ構築 mkdir php-slim cd php-slim # slimのインストール composer create-project slim/sl…

【メモ】VimでPHPの開発環境を整える

やること LSPの導入 Formatterの導入 GTAGS(GNU Gloabal)の導入 環境 M1 MacBookAir(Big Sur) LSPの導入 coc.nvimでcoc-phpls導入して終了。 :CocInstall coc-phpls これで補完や定義ジャンプができるようになる。あとは好みだけどUltisnipsで自作のsnippet…

GolangでGIF分割・結合・文字入れ

Go

全体のソース github.com 動機 GIFの開始と終わりを判別するために、GIFの最初の方に”START”みたいなラベルを挿入したい。 ImageMagickには依存したくなかったのでGolangの標準パッケージでなんとかしてみた。 環境 $ go version go version go1.16.2 darwin…

gif動画から指定のフレーム(最初・最後・最後から2番目など)を抜き出す

convertコマンドで可能。とりあえずbrewでインストールしましょう。 # imagemagickをインストールするとconvertコマンドが使えるようになる brew install imagemagick 指定のフレームを抜き出す 最初 convert 'neko.gif[0]' first.png 最後 convert 'neko.gi…

Vimで特定の行だけ選択してコピーするプラグイン

Vim

vimのVISUALモードはシンプルかつパワフルで特に不満はないのだが、行を飛ばしてコピーができない。 例えば下記のようなファイルがあったとして、 line 1 line 2 line 3 line1とline3だけコピーしたいようなケース。 このような隣接していない行のコピーを実…

NestJSでよく見る@Decoratorって何なのかわからなかったからサクッと試してみた

NestJSで@Controllerのような@を使った書き方をよくみる。よくわからず使っていたけど調べてみたらなんてことなかったので書き留めておく。 こういうやつ。 @Controller('app') export class AppController { @Post() create(@Body() dto: CreateAppDto) {} …

NestJSとNext.jsをlernaでモノレポ化する

最近流行りのフレームワークたちをlernaを使ってモノレポ化する。 構成はこんな感じになる想定。 . ├── lerna.json ├── package.json └── packages ├── client <-------- Next.js │ └── package.json └── server <-------- NestJS └── package.json どこまで…

ソースコードを画像化する、Rust製のコマンドラインツールsiliconで使える日本語対応フォント一覧

環境 macOS Catalina(10.15.5) 日本語対応フォント一覧 851MkPOP AhahaMojimoji Arial Unicode MS Hannotate SC HanziPen SC Hiragino Maru Gothic ProN Hiragino Mincho ProN Hiragino Sans Hiragino Sans GB Osaka PingFang HK PingFang SC PingFang TC Ri…

今更ながらgit-ftp便利すぎた

とりあえず必要なことをババっと書いておく インストール brew install git-ftp もしくは、リポジトリにgit-ftpの実行ファイルがあるからcloneしてきて使ってもいい。 git clone https://github.com/git-ftp/git-ftp cd git-ftp ./git-ftp 初期設定 git conf…