タグ

ブックマーク / zenn.dev/mattn (14)

  • もっと log/slog を使おう

    はじめに この記事は Go アドベントカレンダー 2023 の最終日 25 日目の記事です。 皆さん log/slog 使ってますか。便利なのでぜひ使ってください。 slog は構造化ログを出力する為のパッケージで Go 1.21 で導入されました。これまでも zap や zerolog といったサードパーティ製のロガーを使う事で構造化ログを出力する事ができましたが、構造化ログを出力する機能が Go の標準ライブラリになりました。 slog とは 通常の log パッケージは、時刻とメッセージの単純な出力になります。

    もっと log/slog を使おう
  • cron で exponential backoff するツール作った

    この様に指定すると3分毎に実行されます。 とても便利ではあるのですがコマンドの実行が失敗すると、冗長なコマンド実行となり得ます。cron ではコマンドの実行が失敗し続けるとメールが運営者に繰り返し送信され続けます。 crontab にコマンドが1分毎に実行される様に投入してひとまず正常起動を確認、仕事を終えて家に返ってビールでも飲んで、さぁ寝ようかなと思った頃にコマンドが失敗し始めると、朝までメールが飛び続けます。 またウェブサービスの API を呼び出す cron ジョブを投入していたらそのウェブサービスがメンテナンスに入った、なんて事もあると思います。メンテナンス中にも関わらず無限に失敗し続ける API 呼び出しはもしかしたら BAN の対象になってしまうかもしれません。 全ては cron に exponential backoff する機能がないのが問題です。 systemd tim

    cron で exponential backoff するツール作った
  • Nostr の面白さをエンジニア目線で解説してみる

    はじめに 今年は、SNS でありプロトコルでもある Nostr に出会いました。2023年2月の参加でしたがもう、どういった経緯で Nostr を見付けて参加したのかすら思い出せなくなってしまいました。ここ数年、X/TwitterAPI という物を開発者に触らせなくなってしまいました。僕は X/Twitter が大きくなった理由の1つが、API をオープンにした事で数多くの bot やサービスがが登場した事だと思っていて、API が自由で無くなった X/Twitter をとても残念に感じています。次第に SNS に関連する何かを作るモチベーションはさっぱり無くなってしまっていました。 そんな中で見付けた Nostrエンジニアのオアシスとでも言える SNS だと感じました。 Nostr の思想 X/Twitter は中央集権型の SNS であり、以下の様な問題を持っています。 障害

    Nostr の面白さをエンジニア目線で解説してみる
  • Vim で SQL を素で編集してるの?

    タイトルは釣りです。 この記事は Vim Advent Calendar 2023 16 日目の記事です。 はじめに みなさんは SQL はどんな環境で編集しているでしょうか? Visual Studio Code?それとも Vim?まさか Vim/Neovim の素の状態で編集していたりしませんよね? 僕はしていました。 sqls (SQL Language Server) 以前、lighttiger2505 さんが開発した sqls に少しコントリビュートしていた頃がありました。 既に public archive になってしまっていますが、機能として実用的なままです。コントリビュートしていた頃は、あくまで OSS としての興味の方が大きく、如何に機能的にしていくかだけ着目していたため、常用はしていませんでした。 あらためて常用してみる sqls の導入 Vim から sqls を使う

    Vim で SQL を素で編集してるの?
  • Internet Explorer に会いたくなったら...

    Internet Explorer が 27 年の歴史に幕を閉じました。 長く Internet Explorer に苦しめられてきた と沢山の思い出を作ってきたので、なんだか寂しい様な、懐かしいような、そんな気持ちです。 もしかしたら今後、またあの e のマークに会いたい、そんな風に思える日がくるかもしれませんね。今日、ちょっと寂しくなったので以下を実行してみました。

    Internet Explorer に会いたくなったら...
  • Vim で折り返し行を簡単に移動できるサブモード・テクニック

    はじめに 先日 Twittervim-jp コミュニティで、Vim で折り返し行を移動する方法についての質問がありました。 Vim に詳しくない方の為に説明すると、Vim は行指向のテキストエディタです。j/k で移動するのは行単位の為、折り返されている行であっても次の行へと移動します。 視覚的に移動したい しかし折り返されている行を視覚的な単位で移動したい事もあります。w や 80l の様に移動する方法もありますが、目的の場所に確実に移動できる訳ではありません。 その様な移動の方法として Vim には gj と gk があります。 gj or *gj* *g<Down>* g<Down> [count] 表示行下に移動。|exclusive|。行が折り返されて いる場合とオペレータコマンドとともに使われた場合は 'j' と違う動作になります(行単位ではありませんから)。 gk or

    Vim で折り返し行を簡単に移動できるサブモード・テクニック
  • Re: Goでcsvを操作するための基本的な知識

    はじめに Println で標準出力してみると以下のように表示されるかと思います。(SHIFT-JIS形式なのでmacでみると文字化けしていますがひとまず置いておきます) 日では一般的に CSV ファイルは Shift_JIS でエンコードされている事が多いです。Go 言語は内部のエンコーディングが UTF-8 なので、Shift_JIS な CSV ファイルを読み込むと文字化けします。 そこで便利なのが エンコーディングの変換は golang.org/x/text/transform が便利です。このパッケージと、golang.org/x/text/encoding/japanese を使う事で、os.Open で開いたファイルがさも初めから UTF-8 であるかの様に扱う事ができます。 どんな風に扱うか japanese パッケージには japanese.ShiftJIS や jap

    Re: Goでcsvを操作するための基本的な知識
  • AWS Lambda が HTTPS エンドポイントをサポートしたので試してみた。

    はじめに 追記 日語の記事が無くなってしまったようです 2022 年 4 月 6 日(米国時間)、Lambda Function URLs の一般提供についてお知らせします。Lambda Function URLs は、任意の Lambda 関数に HTTPS エンドポイントを追加し、オプションで Cross-Origin Resource Sharing (CORS) ヘッダーを設定できるようにする新機能です。 これを使用することで、可用性が高く、スケーラブルで安全な HTTPS サービスの設定とモニタリングを当社が行うため、お客様は重要な業務に集中できます。 今までは API Gateway や LB を使ってマッピングしていましたが、Lambda 単体で HTTPS のエンドポイントを生やせる様になりました。管理する物が減るのは良い事です。 IAM 認証または CORS によるアク

    AWS Lambda が HTTPS エンドポイントをサポートしたので試してみた。
  • SQLite3 を PostgreSQL にできるコマンド postlite

    はじめに SQLite3 くらい楽に扱えて、PostgreSQL みたいにネットワーク経由で使える物ないかなーなんて思ったりする事ないですか?ありますよね、あるんです。 postlite このニーズに答えてくれるのが postlite です。postlite を使うと SQLite3 で作られたデータベースファイルを、PostgreSQL の様に扱えます。 仕組みは至って簡単で、僕が開発している go-sqlite3 に PostgreSQL の通信プロトコルのガワと、仮想テーブルを使って PostgreSQL のスキーマを疑似しています。 インストール postlite は go-sqlite3 の vtable を使います。ですので、go install ではなく postlite の README.md に書かれた手順を使わなければなりません。

    SQLite3 を PostgreSQL にできるコマンド postlite
  • bash スクリプトの実行中上書き動作について

    を設定してから再度試した所 bar が表示された。backupcopy は編集中のファイルによって自動で判別する auto がデフォルトになっている為、試す際には明示的に yes に設定しないといけない。 bash の実装確認 evalstring.c の parse_and_execute でコマンドが処理されており、input.c の with_input_from_buffered_stream で読み込みの準備が行われている。バッファの読み込みの体は y.tab.c つまりパーサから直接呼ばれており、このパーサは fgets(3) で読み込まれつつ実行される為、一括でファイルが読み込まれている訳ではない。 while/do でループ実行した際に、ファイルを書き換えられたら戻り先はどうなるか、についてはスクリプトはバッファ付きで読み込まれており、そのバッファがファイルシステムから読

    bash スクリプトの実行中上書き動作について
  • Rust の機械学習ライブラリ smartcore に入門してみた。

    はじめに たまには Rust も書きます。機械学習に興味があり、興味があれば何でも触ります。 smartcore とは とある Rust機械学習に詳しい人に、最近の Rust機械学習ライブラリのデファクトぽいのを聞いたところ、丁寧に linfa か smartcore を教えて貰いました。はじめに linfa を試したのですが、うまく行きませんでした。僕は Rust の toolchain で gnu(mingw) を使う派なのですが、linfa は Intel MKL をリンクする必要があり、Intel MKL は MSVC 形式のライブラリしか提供していません。DLL から .a を生成してリンクしてみたりもしましたが、結局うまくリンクできず諦めてしまいました。MSVC の toolchain や他の OS(Linux) だと問題なく動くんだと思います。 しかたなく、残りの s

    Rust の機械学習ライブラリ smartcore に入門してみた。
  • ls -l はなぜ事故を起こすのか

    はじめに この記事は以下の記事で事故がなぜ起きたかを技術的に理解し筆者のtipsを共有しようと思い書きました。あくまで筆者のtipsですので、これが正しいとは限りません。 やはり、下記のコマンドが原因でした。 [root@foo script]# ls -l | sh 事故そのものは ls コマンドに -l を付けて実行してしまった事で、ls コマンドが出力したシンボリックリンクが以下の様になってしまったという話です。

    ls -l はなぜ事故を起こすのか
  • 無料の SSL 証明書が得られる ZeroSSL を使ってみた

    はじめに 皆さんは ZeroSSL を知っていますか?個人でウェブサイトを運営している皆さんであれば、多くの方は Let's Encrypt を利用されていると思います。 https://letsencrypt.org/ja/ もちろん僕も使っています。僕の様なエンジニアの方であれば SSL の仕組みもおおよそ理解もしているし、コマンドラインの実行方法も知っておられるのでウェブサイトの SSL 証明書を取得する事もそれほど難しい事ではないでしょう。 しかしそれほど詳しくない方が certbot の様なコマンドを使って SSL 証明書を発行するのは割と難しい事です。そこでご紹介したいのが ZeroSSL です。 https://zerossl.com/ ZeroSSL とは ZeroSSL もまだあまり名前が知られていないせいか、Google 検索で「ZeroSSL」を検索すると「ZeroS

    無料の SSL 証明書が得られる ZeroSSL を使ってみた
  • シェルスクリプトで作る Twitter bot 作成入門

    筆者が開発している幾らかのコマンドラインプログラムとシェルスクリプトを使って簡単に Twitter bot を作る方法をご紹介します。

    シェルスクリプトで作る Twitter bot 作成入門
  • 1