サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ニコニコ動画
zenn.dev/mattn
はじめに この記事は Go アドベントカレンダー 2023 の最終日 25 日目の記事です。 皆さん log/slog 使ってますか。便利なのでぜひ使ってください。 slog は構造化ログを出力する為のパッケージで Go 1.21 で導入されました。これまでも zap や zerolog といったサードパーティ製のロガーを使う事で構造化ログを出力する事ができましたが、構造化ログを出力する機能が Go の標準ライブラリになりました。 slog とは 通常の log パッケージは、時刻とメッセージの単純な出力になります。
はじめに 今年は、SNS でありプロトコルでもある Nostr に出会いました。2023年2月の参加でしたがもう、どういった経緯で Nostr を見付けて参加したのかすら思い出せなくなってしまいました。ここ数年、X/Twitter が API という物を開発者に触らせなくなってしまいました。僕は X/Twitter が大きくなった理由の1つが、API をオープンにした事で数多くの bot やサービスがが登場した事だと思っていて、API が自由で無くなった X/Twitter をとても残念に感じています。次第に SNS に関連する何かを作るモチベーションはさっぱり無くなってしまっていました。 そんな中で見付けた Nostr はエンジニアのオアシスとでも言える SNS だと感じました。 Nostr の思想 X/Twitter は中央集権型の SNS であり、以下の様な問題を持っています。 障害
タイトルは釣りです。 この記事は Vim Advent Calendar 2023 16 日目の記事です。 はじめに みなさんは SQL はどんな環境で編集しているでしょうか? Visual Studio Code?それとも Vim?まさか Vim/Neovim の素の状態で編集していたりしませんよね? 僕はしていました。 sqls (SQL Language Server) 以前、lighttiger2505 さんが開発した sqls に少しコントリビュートしていた頃がありました。 既に public archive になってしまっていますが、機能として実用的なままです。コントリビュートしていた頃は、あくまで OSS としての興味の方が大きく、如何に機能的にしていくかだけ着目していたため、常用はしていませんでした。 あらためて常用してみる sqls の導入 Vim から sqls を使う
はじめに kubernetes 環境で postgresql のコンテナを建てたり、kubernetes クラスタが存在する VPN に postgresql インスタンスを起動する場合、kubernetes の外から postgresql サーバにアクセスする事ができません。モチベーションとしては自分の端末から kubernetes VPN 内にいる postgresql サーバへ psql で接続したいのです。その為にインターネットに穴を開けたくない。 psql が入ったコンテナを追加する... そうじゃない! 失敗した作戦1 コンテナ環境に socat が入った ubuntu コンテナを建て、postgresql へのプロキシを作成、そのコンテナへ kubectl port-forward する作戦です。 $ socat tcp-listen:5432,reuseaddr,fork
はじめに 以前から Twitter の vim_jp アカウントでは、issue やブログ記事を bot として投稿してきました。 先日 IFTTT が Twitter 連携を有料化した事で、RSS/Atom から Twitter に投稿する事が無償ではできなくなりました。 feed2twitter しょうがないので RSS フィードから Twitter に投稿するプログラムを書きました。 cron で動かす想定です。僕は Oracle Cloud の Kubernetes クラスタの cronjob で動かしています。configmap と cronjob の YAML を書けば動きます。コンテナイメージも 5.8MB と小さく、複数のフィードを異なる Twitter アカウントで投稿する時でも同じコンテナイメージを使い回せるので割と便利かも。PostgreSQL を使って既存のリンクを
#include <stdio.h> int main(int argc, char* argv[]) { int i; for (i = 1; i <= 100; i++) { if (i % 15 == 0) puts("FizzBuzz"); else if (i % 15 == 0) puts("FizzBuzz"); else if (i % 3 == 0) puts("Fizz"); else if (i % 5 == 0) puts("Buzz"); else printf("%d\n", i); } return 0; } fn main() { let mut x = 1; while x <= 100 { if x % 15 == 0 { println!("FizzBuzz"); } else if x % 3 == 0 { println!("Fizz"); } e
はじめに 最近 Deno 遊びが楽しくなってしまった mattn ですこんばんわ。TypeScript は好きだけど node_modules に嫌気がさしてしまい、Deno に逃げてしまったのですが今は Deno が楽しくて仕方ないです。 Deno の良さ 僕が思う Deno の良さは以下の3つ node_modules が無い 余計なセットアップ無しに TypeScript が書け実行できる 危険なライブラリは許可しないと実行されない 最近は Cloudflare Workers や Deno Deploy でオレオレ Gyazo を作って遊んでいます。 既に deno.land にも沢山のライブラリが公開されているので、まだ Deno やった事がない人でもそんなに困らないと思います。 自作モジュールを作ってみた みんな Deno モジュールを作ってる、作ってないのはお前だけ そんな声
はじめに previm は Vim で Markdown 編集する際にブラウザでプレビューできるプラグインです。 これまで plantuml と textile くらいしかサポートしていませんでしたが、katex や plolyjs 等をユーザ自身で追加できる様にしました。 https://github.com/previm/previm 経緯 以前から previm のメンテナをさせて頂いていたのですが、やはり Markdown で式やグラフを扱いたいというニーズは皆さんお持ちです。そしてその都度 pull-request が寄せられ、式やグラフ等を使いたくない人でも大きな previm に大きな変更が入り、ロード時間も長くなる事が懸念され、いずれの pull-request もマージできない状態になってしまいました。 また既存の markdown-it ライブラリのバージョン追従にも手
はじめに LiteStream がアツいですね。LiteStream は SQLite データベースのレプリカを作るシステムです。これを使う事で、アプリケーションが更新した SQLite データベースを S3 ストレージに瞬時にバックアップする事ができます。 はい... LiteStream を使ったサイドカー構成 LiteStream を使い、コンテナの起動前にデータベースをリストアし、アプリケーションが起動した後にレプリカを行えば、コンテナは何時でもホストから消し去る事ができる様になります。 以下に、/data ボリュームにリストアを行い、アプリケーションの起動後にレプリカを開始する docker-compose.yaml を示します。 version: '2' services: restore-container: image: litestream/litestream cont
はじめに 先日 Twitter の vim-jp コミュニティで、Vim で折り返し行を移動する方法についての質問がありました。 Vim に詳しくない方の為に説明すると、Vim は行指向のテキストエディタです。j/k で移動するのは行単位の為、折り返されている行であっても次の行へと移動します。 視覚的に移動したい しかし折り返されている行を視覚的な単位で移動したい事もあります。w や 80l の様に移動する方法もありますが、目的の場所に確実に移動できる訳ではありません。 その様な移動の方法として Vim には gj と gk があります。 gj or *gj* *g<Down>* g<Down> [count] 表示行下に移動。|exclusive|。行が折り返されて いる場合とオペレータコマンドとともに使われた場合は 'j' と違う動作になります(行単位ではありませんから)。 gk or
はじめに 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
はじめに 追記 日本語の記事が無くなってしまったようです 2022 年 4 月 6 日(米国時間)、Lambda Function URLs の一般提供についてお知らせします。Lambda Function URLs は、任意の Lambda 関数に HTTPS エンドポイントを追加し、オプションで Cross-Origin Resource Sharing (CORS) ヘッダーを設定できるようにする新機能です。 これを使用することで、可用性が高く、スケーラブルで安全な HTTPS サービスの設定とモニタリングを当社が行うため、お客様は重要な業務に集中できます。 今までは API Gateway や LB を使ってマッピングしていましたが、Lambda 単体で HTTPS のエンドポイントを生やせる様になりました。管理する物が減るのは良い事です。 IAM 認証または CORS によるアク
はじめに SQLite3 くらい楽に扱えて、PostgreSQL みたいにネットワーク経由で使える物ないかなーなんて思ったりする事ないですか?ありますよね、あるんです。 postlite このニーズに答えてくれるのが postlite です。postlite を使うと SQLite3 で作られたデータベースファイルを、PostgreSQL の様に扱えます。 仕組みは至って簡単で、僕が開発している go-sqlite3 に PostgreSQL の通信プロトコルのガワと、仮想テーブルを使って PostgreSQL のスキーマを疑似しています。 インストール postlite は go-sqlite3 の vtable を使います。ですので、go install ではなく postlite の README.md に書かれた手順を使わなければなりません。
はじめに google/ko は Google が開発した、コンテナレジストリに簡単にアプリケーションを push できるツールです。 例えば一般的な Go のプロジェクトを用意した後、Docker を用意する必要なく簡単に push できます。
※ Div だけ妙に遅いのが気になる NumPy は Python とは言え中身はC言語で書かれている事を考えると、結構いいパフォーマンスが出ていると言えるでしょう。 サンプルコード iris のロジスティック回帰を nune で書いてみました。 package main import ( "bufio" "fmt" "log" "math" "math/rand" "os" "github.com/vorduin/nune" ) func logisticRegression[T nune.Number](X nune.Tensor[T], y nune.Tensor[T], rate float64, ntrains int) nune.Tensor[T] { ws := make([]float64, X.Size(1)) for i := range ws { ws[i] = (r
From f7579616910333a45cf7014066d015c3d0617a9c Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto <mattn.jp@gmail.com> Date: Wed, 15 Dec 2021 23:14:19 +0900 Subject: [PATCH] Fix sdkTimeFormat OCI server accept millisecond not nanosecond --- common/helpers.go | 4 ++-- common/http_test.go | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/common/helpers.go b/common/helpers.go i
Twitter で散歩していたら、昨日こんなツイートを見付けました。 コードはこんな感じ。(ツイート主がメンションで修正している内容を反映済み) use std::{ thread::{self, sleep}, time::Duration, }; fn main() { thread::spawn(|| { sleep(Duration::from_millis(2100)); loop { print!("Fizz\x1b[K"); sleep(Duration::from_secs(3)); } }); thread::spawn(|| { sleep(Duration::from_millis(4200)); loop { print!("Buzz\x1b[K"); sleep(Duration::from_secs(5)); } }); for i in 1.. { print
はじめに C++ ヘッダオンリーのライブラリが大好きなので、日々 GitHub を散策しています。 今日も探索していたら MiniDNN というライブラリを見つけたので試してみました。 MiniDNN とは MiniDNN は Eigen を使ったニューラルネットワーク構築ライブラリです。行列の操作は Eigen::Matrix 等を使い、各レイヤの構築からバッチの実行、推論まで行えます。 特徴としては ヘッダーのみで移植性が高い CPU だけど高速 モジュール化されていて拡張可能 詳細なドキュメントを提供 DNN がどのように機能するかを理解するのに役立つ DNNの良い部分と汚い部分の両方を学んで実践する素晴らしい機会を提供 (笑) サンプル書いてみた いつもながら iris のサンプル #include <iostream> #include <string> #include <al
次のページ
このページを最初にブックマークしてみませんか?
『mattnさんの記事一覧』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く