takaha.siの技術メモ

勉強したことをお伝えします。ちょっとでも誰かの役に立てればいいな…

Firestoreの新しいライブラリを思いついたんだけど

思いつきのメモなんですが FirebaseのFirestoreを読み書きするTypeScriptのコードってちょっと書くとすぐごちゃごちゃし始めて脳負荷が高いコードになりがちじゃないですか? テーブル?の定義とセーブロードのロジックが混じり合ってカオスになるのがとって…

ロシアの軍事ドローンのオルラン10(Orlan-10)ってまともに使えないんじゃない?

ウクライナの軍事ドローンオルラン10(Orlan-10)。カメラが日本製(Canon EOS Kiss)とのこと。ここで気になったのは。一体どうやってKissから動画とか画像とか取り出してるの?っていうのがカメコ+技術屋的に気になった— 田中高橋 (@2020tatarou) 2022年4…

WSL2でCentOS9Streamを動かしたあと一般ユーザでログインしたい

blog.yamk.net ここに書かれてるように、アンオフィシャルなCentOS9StreamとかをWSL2にimportしたとしよう。 importしたままだと、WSLを起動したときrootユーザになってしまう。これを自分で作った一般ユーザでログインできるようにしたい。 例えばCentOS9St…

zfsはcloseとwriteが遅いです

Linuxのzfsの話です。zfsのI/O特性を知っておきましょう。 結論から言います。zfsは「書く量を増やせば増やすほど、それにつられてclose(2)とwrite(2)が顕著に遅くなる」という性質があります。ちなみにLVMではこれは見られません(zfsのほうが色々付加価値…

WSL2でDockerが動かない

WSL2最高ですね。WSL2上のLinuxにjavaとかnodeとかrubyとかいれれば、IntelliJとかWebstormとかRubyMineからふつープロジェクトインポートして開発に使えます。もうx86_64ではないMacを使う必要はなくなるわけです。バイバイMac。ARMの本番環境がまだ普及し…

O_DIRECTでopenするときはmemalign使わないとだめだよ

O_DIRECTでopenしてwriteしたいときがたまにあると思います。 通常のopenしてwriteだとカーネル内部でページキャッシュが使われて、カーネル内部でのメモリコピーが何回か行われちゃいます。が、O_DIRECTだとページキャッシュをバイパスできて、その結果カー…

docker-composeで作ったコンテナ同士をネットワークでつなげる

github.com ファイルはここに。 複数Docker間で通信 図のようにdockerコンテナを2つ(図中のmy_clientとmy_server)つくって、それらコンテナ間で通信したい。 単一のdocker-compose.ymlの中に2つ以上のコンテナが定義されてる場合は別に問題ない。同一yml…

絵描きのzfs snapshot活用術

あっ、線画レイヤーに色塗ってる! 突然ですが、私、趣味で絵を描きます(NSFWです) twitter.com 絵描きあるあるが「線画レイヤーに色を直接塗ってしまっており、それに気づくことなく作業をガンガン進めてしまい、気づいたら手遅れなところまで進んでしま…

lxcコンテナのI/Oが異様に遅いという話

NASの運用をようやく開始 LXCコンテナのI/Oが遅い気がします。Dockerの話じゃないですLXCです。 1年ちょい前に10GbEのNASを自作したという話をしました。作ったのはいいんですが、OSインストールを終わらせた後ちょっといじってその後完全放置してたんですよ…

pythonのデフォルト引数の挙動は可怪しいという話

Pythonをすごいやりたい!ってわけではないんですが、DiscordのBot作るのにPython便利そうなので使ってます。 で、プログラミング言語にはデフォルト引数っていう機能がありますよね?Pythonにもあるんですが、Pythonのデフォルト引数の仕様は普段私が使って…

最近のディスアセンブラとかデバッガとかの話

ちょっとリバースエンジニアリング(マルウェア解析ではない)をしないといけなくなったのでそこらへんのツールを探してみた。ここらへんの知識が2008年ぐらいで止まってるので、情報更新。 デバッガ 昔、バイナリ解析と言ったらOllyDbgが有名だったと思うん…

SAIのサムネイルをWindows上のエクスプローラで見れるようにする

ペイントソフトSAIのファイルってWindowsのエクスプローラでサムネイルが見れないですよね。これ地味に不便でなんとかしたい。SAIはものすごく良いソフトでペンが軽快で描いてて気持ち良いソフトなんで愛用してるんですが、このサムネイルが見れないというの…

VPSのvultrがいいよって話

www.vultr.com vultrというVPSサービスがある。最近ちょくちょく聞くので使ってみた。用途はT-potの運営のためのサーバを借りるため。AWS EC2上で運用しようかなと思ったけどEC2はisoイメージからのインストールの際、まずはじめにS3にisoイメージを上げてー…

AWS Lightsail上でT-potは運用しないほうがいいという話

AWS Lightsail上でDebianのVMインスタンスを借りて、その上でT-potをインストールした。 最初の方はうまく動いていたのだが、1時間ぐらいするとVMが落ちる問題が発生。SSHはもちろんのことpingすら通らなくなる。AWSのWebIFからVMの再起動をかけると再び上…

MacがARMになることによって開発者が死ぬ可能性が高い件について

この間のWWDC 2020を見ていて発狂しそうになった。MacがCPUをIntelからARM(Apple Silicon)に移行するらしい。なぜそんなことをするのかさっぱりわからない。たしかに、AppleがISAを変えるのは今に始まったことではないが、今と昔では事情が違う。過去の時…

噂のGoogle製セキュリティスキャナtsunamiを使ってみた

Googleがセキュリティスキャナ作ったってんでニュースになってたので試してみる。 www.publickey1.jp ソースはここ github.com nmapとncrackが必要とのことなので事前にインストールしないとかないといけない。 あと、スキャナのテスト用に脆弱性をわざと作…

Lightsail上のVMにT-Potをインストールしたらネットワークが落ちる

スーパーハカーになりたいので、ハニーポットを運用してマルウェアを集めたいと思いました。ので、AWSのLightsail上でVMインスタンスを借りてT-potをインストール。 github.com ちなみにハニーポットと言えばT-potというぐらい代表的なもののようです。脆弱…

Let's Encryptの証明書失効から学ぶループと末尾再帰の関係

この間、Let's Encryptがバグで300万近くの証明書を失効させたというニュース流れました。 事の詳しい顛末は以下のBlogにかかれています。かなり詳しく書かれており、どのようなコードでバグが出たのか?というところまで解説されています。 jovi0608.hatena…

TLC Model CheckerをCUI(コマンドライン)で使う

TLC Model Checkerとは形式仕様記述言語であるTLA+のモデル検査ツールです。TLA+で書かれた仕様の不変式のviolationやLivenessやSafety 特性のviolationの検出などをしてくれます。 そんで、このTLC Model Checkerというのは、CUIで使えたほうが便利だと思う…

TLA+の社内勉強会スライド公開します

Raftを使ってDFSを作るという仕事を数年前ぐらいから続けています。そのためか最近、形式仕様記述(特にTLA+)とかModel checkingとかTheorem provingとかが私の中でアツいです。TLA+とかAlloyとかVDM++とかSpin周りのやつです。 ソフトウェアの仕様を形式仕…

プログラムの正しさを数学的に証明する形式検証への招待

principia.connpass.com Twitter眺めてたら面白そうなセミナーがあったので申し込んだ。 私はオブジェクトストレージではないPOSIX IFな分散ファイルシステムを作るという面白い仕事をもう数年間ぐらい続けている。 その関係で最近TLA+とTLC Model Checkerを…

scalaのtraitの危険性

踏んだのでメモ Scalaにはtraitという機能があります。 traitは「それ単体で動作することはなく、他classを拡張(mixin)するか、他classから継承されることによって動作するエンティティ」と定義して良いと思います。 JavaのInterfaceにたとえられることも…

10GbE時代に向けたNAS環境を構築する

時代はテンジー 8年前ぐらいにQNAP社のTS-439 Pro II+を購入してから、ずっとこれで満足してました。しかし、システム領域のFlashが不穏なエラーを吐き出しはじめたのでそろそろ買い替え時かと思い立ちました。容量もそろそろいっぱいになってきましたし。。。 …