Lambdaカクテル

京都在住Webエンジニアの日記です

技術

AWS IoT Buttonで勤怠付けるためのコードをGoでリライトした

自分は元々IoTボタンを使って勤怠を付けていたのだけれど、Goの練習がしたかったのでRubyコードをGoでリライトした。ちなみにコード量は(ボイラープレート的記述によって)増えた。とはいえ分かりやすさはほぼ変わっていないし、型がつく安心感がある。 うち…

ada1p1みたいな形式でzpoolにattachしたディスクをgptラベルで再認識させるのは不可能っぽい

tl;dr zpoolにraidz1のvdevがぶらさがっている状況下で、そのvdevにada1p1といった形式でattachされているディスクがある GPTパーティションラベルのほうが分かりやすいので、gpt/foobarとして「貼り替え」を行いたい replaceでできるかと思ったが不可能だっ…

Eitherを使ったSpecificationパターンで遊ぶ + 仕様を通過するたびに型が弱まっていくのはどうか

DDDにSpecificationパターンというのがある。仕様をドメインモデルから切り離して、単独で扱えるようにしましょう、というもの。 素朴にScalaで実装すると…… trait Spec[A] { def isSatisfiedBy(a: A): Boolean } こうなる。具体的にSpecを実装してみると、…

Scastie(ScalaのオンラインIDEみたいなやつ)をセルフホスティングする

Scalaユーザの間ではよく知られた存在であるScastieはOSSで、自分でソースをクローンしてくると手元で動かすことができる。自宅サーバで動かすことができないか試してみたところ割とあっさり動いたので手順のメモ。 Scastie 手元で動かす Docker環境下で動か…

仕様や要件聞いているときに手元でER図を描いたりしている

「こういう機能作りたいんですけど」みたいな会話をするとき、理解した内容で手元のノートにER図を描いていたらコーナーケースの仕様漏れを発見できたりして有用だった。 このあいだ新機能の話をプランナたちとしていて、普段だったらフムフムと一通り聞いた…

Github Actionsで他のリポジトリのIssueにコメントを残すにはOrganizationレベルのPersonal Access Tokenが必要になる

やりたいこと GithubのPull-Reqに特定のラベルをつけたとき、別のリポジトリにあるIssueにその旨コメントしたい。 前提知識 我らがチームでは、Pull-Request機能を使って、stagingブランチからmasterまたはmainブランチにマージすることでリリースフローが回…

FreeBSDのZFSファイルサーバ再インストールRTAはーじまーるよー

キッチンに乱雑に置かれているサーバ この記事は「はてなエンジニア Advent Calendar 2021」の13日目の記事です。 qiita.com 昨日は id:papix の 『Perlで @EXPORT を @EXPORT_OK に置き換える』でした。 papix.hatenablog.com 目次 目次 時に、2021年の師走の…

ソート 大なり 小なり 記号 ascendant descendant どっち 一瞬で覚える方法

ソートするときの記号の方向が覚えられないという悩みがある。 多くの言語では、比較演算子を使ってコレクションをソートする操作が定義されている。 // scalaだと... val lis = Seq(...) // なんかのリスト lis.sortWith((a, b) => a < b) // 昇順ってどっ…

GitHub ActionsからAWS使うときはアクセスキーIDをそのままシークレット名に含めるとよさそう

tl;dr MY_TEAM_AWS_${ACCOUNT_NAME}_${IAM}_AKIAXXXXXXXX みたいなシークレット名にしましょうという話です 本編 自分のチームではJenkinsからGitHub Actions(GHA)への脱出を継続的にやっている。プロダクトに歴史があるからJenkinsがいろいろな所で使われて…

const関数おもしろい(そしてアプリカティブファンクタへ……)

最近型クラスとかを勉強しているのだけれど、その中でconst関数というのを見て感心した。 yomi322.hateblo.jp const Haskellだと以下の通りに書く: const x _ = x Scala風に書く(ここからはScalaで書いていく)と以下の通りに書く: def const[A, B](x: A) =…

string_randomをScalaでやる

string_random.jsというライブラリがある。正規表現を与えると、それを満たすような文字列を生成してくれる便利なやつだ。 デモページもある。 cho45.stfuawsc.com おもしろい このライブラリはjavascript用だが、正規表現を満たす文字列をいくつか生成した…

Scala 3で言語処理系を作ってる

馴染みのプログラミング言語に新しいバージョンが出てもあれやこれや理由を付けてなかなか学ばないのが人の常。やらなきゃなーなんて言っている間はだいたいやらないんだ。 そんな中Twitterで雑誌『Web+DB Press』にScala3の記事が出ている事を知った俺は速…

Chrome拡張を初めて作成してみた(id属性がある見出しにパーマリンクを自動付加する君)

最近Chrome拡張機能について考える機会が多く、自分も何か作ってみることにした。かねてから「自分もChrome拡張の一つや二つ作れなくてなは~」などと考えていたものの、特にアイデアがあるわけではないので、放置していた。 しかし丁度良くアイデアが舞い降…

GitHubのチェックボックスをでかくする + マージステータスの枠をでかくする

仕事でGitHubを利用していて、ちょっと使いにくいなと思うことがあった箇所をUser CSSでチマチマ直すということをよくやっている。 blog.3qe.us マシンを交換したりするとしばしば設定を失くしてしまうので、ブログにメモっておこう。 チェックボックスをで…

ゲーミングマシンのCドライブ(なぜかRAID0)がパツパツになったのでNVMeのSSD(PCIe接続)に移行した

Cドライブがほぼ満タンになってしまって、日常生活に支障をきたしていたので、1TBのSSDを買ってきて装着した。マザーボードにはM.2スロットが1つしかなかったので、PCIe接続の拡張スロットを増設してM.2スロットを追加した。 全景 Cドライブパツパツ Apexと…

SandS(スペースキーをシフトキーにする)をsystemdで起動して再起動を自動化する / systemd-analyzeでユニットファイルを検証する

SandSするためのスクリプトをsystemdで自動化し、定期的に再起動できるようにします。 下準備 Systemd ユニットファイルの記述 設定の反映と起動 ハマったところ SandS(Space and Shift)という技術がある。スペースキーの長押しをシフトキーとして扱うもので…

回転 GIF 作成 無料

prerequisites: zsh (for numerical glob expansion), imagemagick % seq 0 6 354 | xargs -I{} convert -background none -distort SRT -{} INPUT_FILE.png rotate{}.gif % convert -delay 1.5 -alpha set -dispose previous -loop 0 rotate*.gif(n) result…

AsanaのCSVエクスポートをなんとか擬似的に自動化する

弊チームではプロジェクト管理にAsanaを使っているのだけれど、それとは関係無く、バーンアップチャートを作っていこうというチーム横断の機運があり、社内の有志がGoogle Spreadsheetで動くテンプレートを作ってくれている。AsanaのCSVエクスポート機能を使…

Party Parrotを自作したくてゲーミングGIF生成ツールをRustで作った

様々な画像が明滅するので気を付けよう! ここに僕がいます これがこうなるツールを作成しました % git clone https://github.com/windymelt/superify.git % cd superify % cargo build --release % ./target/release/superify windymelt.png % open windyme…

入力のほげ行ごとに出力したいときはgsedの~を使う、そうして月のウーバーイーツ代を算出する

そういえば先月ウーバーイーツにいくら使ったんじゃろと思って、マネーフォワードの画面を見たんですが スクショ 科目でソートしてこんな感じだったわけです。合計が知りたい。 とりあえずテキストコピペしたらなんとかなるでしょう、という勘でコピペすると…

朝日新聞社の長文要約生成APIを使ってブログの要約を自動生成する仕組みを構築した

先日朝日新聞社によって長文要約APIがリリースされました。要約をAPIで取得できるという点が面白いと感じたので、このブログ(blog.3qe.us)の記事を閲覧したときに自動的に要約を見られるような仕組みを作ってみようと思い、1週間ちょっとかかってしまいま…

付帯的な処理を構造に畳み込む

ある処理を記述しているとき,80%くらいの処理は一瞬で書けるんだけど,付帯する処理があって,そのときはなにやら複雑なことをしなければならない,ということがままある. たとえばファイルを加工するソフトウェアを書くとき,加工自体は一瞬で正規表現と…

テストでつまづきがちなのでどうすると良いか考える

症状 あれコレ俺ハマってるじゃん,と気付いたとき,だいたいテスト書いている 実装する→テスト書く→ぜんぜん通らんなんで??→ヴァルハラ(永遠の戦い) というのがよくあるパターン 通らない原因 別に準備しないといけないレコードがあった DBがデカい1つのス…

エラー検知したいけど全部処理は通したいみたいなやつ

オチはないです 話題 いくつかのエラーチェックしてひとつでもエラーがあれば処理止めたいんだけど、フラグ作って毎回if文でエラーがあればフラグを立てて…ってする方法以外になんかいい感じの方法ないかしら?— *͙覚醒*͙むったんたん (@precure_______) 202…

事前条件と事後条件、不変条件をタスク分解に応用すると便利そう

最近の仕事で試してみているのが、タスクを実行可能なレベルに分解するときに、事前条件と事後条件とをヘッダとフッタのようにして、それで1つのタスクという形に分解する、というもの。 例えば「味噌汁作る」タスクを分解したいときは突然「豆腐を鍋に入れ…

インターネットくす玉作った

ステイホームでもくす玉を割りたいということでインターネットくす玉を作った. → https://www.3qe.us/kusudama/index.html オフィスにあつまってくす玉を割ることがなくなってしまったのでインターネットくす玉を作ったhttps://t.co/V4HkBC1LWX https://t.c…

ScalaアプリケーションでScalikeJDBCを使えるようにする + MySQLのセットアップ

サクサク年表君というソフトを趣味でやっている.これは年表をみんなで作れるようにするというプロジェクトで,プロジェクトといいつつ自分しかやっていないのだけれど,一人でチマチマ作っている.今回はScalikeJDBCでDBにつなげるようにしたので,備忘録的…

Bluetoothヘッドホンの調子悪かったけど2.4GHz帯域が干渉していたっぽい

自宅ではリモートワークのためにBoseのQuietComfort 35(QC35)を使っていて,MTGするときは有線のほうが良いのでそっちに切り替えているけれど,MTGしなくてよいときはQC35で音楽を聞いたりしている. で,自宅で作業しているとめちゃくちゃ音が途切れたり,…

チルダ(~)はどうしてホームディレクトリになるのか

たまに忘れてコケたり,周りでも困っている人がいるようだったのでメモ. 追記(2020-09-06T11:25+09:00) この記事では仕組みのほうについて記述しており,由来については書いてなかったのですが,ブコメでホームディレクトリがチルダで表記されるようになっ…

bhyveで動作させているUbuntuのディスクイメージを拡張する

truncateでイメージを拡張し,rescue modeでubuntuを起動した後,growpartとresize2fsを使いました. truncate truncateを使ってディスクイメージ自体をまず大きくする.+100gを間違えて100gにすると悲惨なことになる(100GBに切り詰められる)ので必ずバッ…

Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?