サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Nintendo Direct
zenn.dev/mattn
を設定してから再度試した所 bar が表示された。backupcopy は編集中のファイルによって自動で判別する auto がデフォルトになっている為、試す際には明示的に yes に設定しないといけない。 bash の実装確認 evalstring.c の parse_and_execute でコマンドが処理されており、input.c の with_input_from_buffered_stream で読み込みの準備が行われている。バッファの読み込みの本体は y.tab.c つまりパーサから直接呼ばれており、このパーサは fgets(3) で読み込まれつつ実行される為、一括でファイルが読み込まれている訳ではない。 while/do でループ実行した際に、ファイルを書き換えられたら戻り先はどうなるか、についてはスクリプトはバッファ付きで読み込まれており、そのバッファがファイルシステムから読
はじめに この記事は Vim Advent Calendar 2021、25 日目の記事です。みなさん Vim 使ってますか?そうですか、使ってますか。 今年はどうも仕事が忙しく、Vim に殆どコントリビュート出来なかったので反省している mattn です。何も Vim 活動をしていなかったのか、というとそうでもなく、主に vim-lsp-settings で色々な Language Server を使える様にしたり、改善したりしていました。 vim-lsp-settings て何よ 知らない方もおられると思うので、改めて vim-lsp-settings を説明したいと思います。 古くからあるジョークの影響か、一般的な Vim のイメージは 真っ黒な画面 /etc のファイル編集用エディタ 同期処理しかできない 終了できない といった悪いイメージがあるのですが、多くの方が想像している V
この記事は Go Advent Calendar 2021、24日目の記事です。 はじめに みなさんは StreamDeck をご存じでしょうか。 StreamDeck は数々のアクションを起動することができるLCDキーを搭載したデバイスで、シーンを切り替える、アプリケーションやメディアを起動する、オーディオを調整する、などの操作をキーボードショートカットをマッピングしたり記憶する必要が無くなる便利な物です。主に YouTuber の皆さんが使っている事が多い様ですが、エンジニアの皆さんがエディタやブラウザを起動したり、特定の業務をボタン1つで実行するなど、便利に使っておられる様です。 さて 2021 年、僕は GitHub Stars に選ばれました。色々なプレゼント を GitHub 社から頂いたのですが、その中に StreamDeck がありました。 一応 StreamDeck の存
はじめに M1 Mac で multipass が動くみたいですね!(M1 持ってません、誰か下さい) ところで multipass で kubernetes 環境作るの面倒だなぁと思っていたのですが、k3s を使う事で、一瞬で作れる事が分かってしまいました。以下その手順を書いていきます。 最初に答えを書く 最初に答えを書くと以下だけです。Windows でも出来ました。 multipass launch --name k3s multipass exec k3s -- bash -c "curl -sfL https://get.k3s.io | sh -"
どうやら inf と infinity の両方が指定可能らしい。CoreUtils のソースを適当に検索してみようと GitHub から検索してみたけど、それっぽいものが引っかからない。 こりゃ調べないと分からないなと思って git clone した。こういうの気になりだすと、ちゃんと分かるまで気になって眠れなくなる病気です。 スタート地点は coreutils/src/sleep.c for (int i = optind; i < argc; i++) { double s; char const *p; if (! (xstrtod (argv[i], &p, &s, cl_strtod) || errno == ERANGE) /* Nonnegative interval. */ || ! (0 <= s) /* No extra chars after the number a
はじめに Go のウェブアプリで使う入力バリデーションに関して、ozzo-validation を検討した。 これまでのバリデーション 普段、仕事では labstack/echo という Go のウェブフレームワークを使う事が多いのだけど、バリデーションに関しては labstack/echo のサンプルに合わせて go-playground/validator を使ってきた。 go-playground/validator は機能も豊富で(一応)痒い所に手は届くのだけど、struct にタグを付けて判定させないといけない。これが実に煩わしい。以前 labstack/echo を使ったサンプルを書いたので、それを見て欲しい。 // Comment is a struct to hold unit of request and response. type Comment struct { I
はじめに Go の tip に strings.Cut が入ったのでベンチマークを取った。ちなみに strings.Cut は lhs, rhs, ok := strings.Cut("FooBarBaz", "Bar") // lhs: Foo // rhs: Baz // ok: true package main_test import ( "strings" "testing" ) func BenchmarkCut(b *testing.B) { s := "FooBarBaz" b.ResetTimer() for i := 0; i < b.N; i++ { lhs, rhs, ok := strings.Cut(s, "Bar") if !ok || lhs != "Foo" || rhs != "Baz" { b.Fatal("bad!") } } } func Benc
はじめに C++ ヘッダオンリーのライブラリが大好きなので、しばしば色々なライブラリを探索する趣味があるのですが、frugally-deep というライブラリを見つけたので試してみました。 frugally-deep とは モダンでピュアな C++ で書かれた小さなヘッダーのみのライブラリ 非常に簡単に統合して使うことができる FunctionalPlus、Eigen、json にのみ依存しており、これらもヘッダーオンリー 逐次モデルだけでなく、関数型 API で作成された、より複雑なトポロジー計算グラフの推論(model.predict)もサポート TensorFlow の(小さな)サブセット、つまり予測をサポートするために必要な操作を再実装している TensorFlow をリンクするよりもはるかに小さいバイナリサイズ 32ビットの実行ファイルにコンパイルしても動作 システムの中で最も強
はじめに 2か月ほど前、Twitter で DEV Airdrop というプロジェクトを目にしました。 独自通貨DEVトークンを使ってお気に入りのプロジェクトにステーキングすると、クリエイターとスポンサーの両方が利益を得る新しいスポンサープラットフォームです。1600以上のOSSがトークン(ERC-20形式のユーティリティトークン)を発行して、企業/個人を問わず、世界中から多くのクリエイターが持続的な資金調達に成功しています。様々なクリエイターの参加が増えており、OSS開発者、VRアーティスト、NFTマーケット、グリーンプロジェクト、Vtuberなど様々なクリエイターを応援することが出来ます。 どうやらこのプロジェクト、OSS 運動を推進していて、DEV トークンという形で開発者に還元、また OSS 間で DEV という仮想通貨で援助し合う環境を作る事を目的としたプロジェクトの様です。 A
はじめに 最近、deno が面白くなり始めています。deno はコマンドラインバイナリを1つインストールすれば、import によりパッケージの読み込みはインターネットからダウンロードしてキャッシュされ、開発者が package.json を書く事もなく、とてもお手軽に TypeScript を書くことができます。 もし、機械学習をやりたいとして、事前準備(npm でインストールしたり、conda/pip 等で依存物をインストールしたり)が大幅に削減できるなら、とても便利だと思いませんか? deno で機械学習 deno で機械学習と聞くと tensorflow.js を使いたくなりますが、残念ながら現在はまだ deno で tensorflow.js を扱える様にはなっていません。しかし deno 1.8 では GPU を扱う為の機能が追加されており、ジワジワではありますが目標に向かって
はじめに データベースを扱う際に、データベースサーバがローカルネットワーク内に存在すれば直接接続できるのですが、時にはデータベースサーバが遠隔にあり ssh を介してしか接続できないケースもあります。そういった場合、ポートフォワーディング等を使って接続するなどしないといけません。 しかしながら、その為には事前に ssh コマンドでトンネルを掘る必要があり、バッチ的に遠隔のデータベースを操作するのは幾分手間が掛かります。 SSH を超えてデータベースに接続する database/sql にはドライバを自分で作る機能があります。そしてデータベースに接続する際のコネクタを自作する事ができる様になっています。crypto/ssh でサーバにログインし、その先で Dial を実行する事で、あたかもローカルのデータベースに接続しているかの様なコネクションを PostgreSQL のコネクションとして渡
はじめに WASM (WebAssembly) はブラウザを問わす色々な所で実行が可能になる仮想命令セットおよびアーキテクチャです。 WASM を使う事で、ブラウザでネイティブに近いパフォーマンスのコードを実行できる様になります。既に色々な開発言語から WASM を生成できる様になっています。Go 言語も WASM を生成できる様になっています。 WASM を実行できる処理系 WASM を実行できる処理系としてはブラウザや、wasmtime、Lucet、wasm-micro-runtime、wasmer 等があります。 wasmer は Rust で実装された WebAssembly ランタイムで、Go 言語からは wasmer-go というバインディングから利用できます。 Go 言語の WASM の残念なところ しかし Go 言語の WASM は、Rust や他の言語の様に関数を直接呼び
の様に直感的な操作ができるはずです。しかし Go 言語の場合、スライスの伸長にて発生するメモリアロケーションを append 関数と代入を使う事で透過的に行える仕組みを採用しています。例えばスライスの伸長は この様に行います。C言語をかじった事のある方や、プログラミング言語の内部データ構造をご存じの方であれば、リストといった物が伸長の度にメモリを再確保する様な事をやっていない事はご存じだと思います。Go 言語のスライスも同様で、スライスには長さとキャパシティを持っており、キャパシティを超えない範囲で長さだけが増えていき、キャパシティを超えるとメモリが再確保されるという作りになっています。ですので、上記のコードであれば、スライス(実際は SliceHeader)が内部で持っているポインタ、長さ、キャパシティを、代入してやる事で上書きしています。 スライスから要素を消す スライスの伸長と同様に
シングルファイルで使える C/C++ 向けのライブラリが一覧にまとめられているリポジトリをなんとなく見ていたら、1ファイルでニューラルネットワークを作れるライブラリ Genann という物があったので試してみた。 インタフェースはとても簡単。 /* Creates and returns a new ann. */ genann *genann_init(int inputs, int hidden_layers, int hidden, int outputs); /* Creates ANN from file saved with genann_write. */ genann *genann_read(FILE *in); /* Sets weights randomly. Called by init. */ void genann_randomize(genann *ann);
bash を使っていて改行なしの echo を実行した際に この様に表示されて気持ち悪いと感じる人がいるかもしれません。zsh の場合、この様に改行の無い echo を実行すると以下の様に % が表示され、正しく行頭にプロンプトが表示されます。 bash でもこれがやりたいと思い、調べたところ以下の Stack Overflow 記事が見つかりました。 この PROMPT_SP はプロンプトを表示される前に出力される文字列で、この StackOverflow の回答では % を表示し、カラム幅の空白で上書きする事で実現しています。 ただこの方法では、starship の様なプロンプトをカスタマイズする系のハックを使っている人には嬉しくありません。 bash では現在のカラム位置を調べる方法として以下を使う事ができます。 これを実行すると VT220 をサポートする端末のデバイスステータスが
はじめに たまには Rust も書きます。機械学習に興味があり、興味があれば何でも触ります。 smartcore とは とある Rust の機械学習に詳しい人に、最近の Rust の機械学習ライブラリのデファクトぽいのを聞いたところ、丁寧に linfa か smartcore を教えて貰いました。はじめに linfa を試したのですが、うまく行きませんでした。僕は Rust の toolchain で gnu(mingw) を使う派なのですが、linfa は Intel MKL をリンクする必要があり、Intel MKL は MSVC 形式のライブラリしか提供していません。DLL から .a を生成してリンクしてみたりもしましたが、結局うまくリンクできず諦めてしまいました。MSVC の toolchain や他の OS(Linux) だと問題なく動くんだと思います。 しかたなく、残りの s
はじめに この記事は、僕の近況と初めて手にしたスマートバンドについて書いています。腕時計を付けるのが苦手なので、慣れるのに苦労していますが、健康の為にと我慢して付けています。そのうち慣れると思います。プログラマと健康の何が関係あるんだと思われるかもしれませんが、プログラマだからこそ普段の健康に気を付けるべきかもしれません。 コロナと健康 新型コロナウィルスが報道され始めたのが2019年12月31日、もう1年半の月日が経とうとしています。未だ治まっておらずそれどころか変種も登場し、より一層の警戒が必要な状況です。仕事もリモート作業が多くなり、日中は1日中在宅になってしまいました。 以前は毎日、通勤という軽い運動を知らず知らずのうちにしていたのですが、今となってはあれは良い運動だったのだなと感じています。 在宅で運動する機会と言えば、近くのスーパーに買い物に行くくらいしかありません。これで太ら
はじめに この記事は以下の記事で事故がなぜ起きたかを技術的に理解し筆者のtipsを共有しようと思い書きました。あくまで筆者のtipsですので、これが正しいとは限りません。 やはり、下記のコマンドが原因でした。 [root@foo script]# ls -l | sh 事故そのものは ls コマンドに -l を付けて実行してしまった事で、ls コマンドが出力したシンボリックリンクが以下の様になってしまったという話です。
はじめに 4/1 に MySQL に please 句を入れるのが流行っていた様です。 そして各 RDBMS も追従して please 句を入れる祭が開催されていた様です。 まずは PostgreSQL そして Oracle 完全にノリ遅れてしまいました。大失態です。 気付いたのは 4/4 の昨日です。 これは乗るしかない 既に 4/5 の午前 0 時なのですが、SQLite3 に please 句を入れるパッチを書きました。 diff --git a/src/parse.y b/src/parse.y index b748e1917..782199fb7 100644 --- a/src/parse.y +++ b/src/parse.y @@ -151,6 +151,12 @@ ecmd ::= explain cmdx SEMI. {NEVER-REDUCE} explain ::=
はじめに 以前から Go の ORM (Object Relational Mapping) 選定の為に、そこそこ時間を使っています。現状は gorp を使っていますが、満足している訳ではありません。 そんな中で見つけた prisma を試すべく、バックエンドに Go と prisma を使った TODO アプリを作ってみる事にしました。 prisma とは prisma (Next-generation ORM for Node.js and TypeScript)は簡単に言うと 自動生成された型付きのクライアントが付いている マイグレーションが出来る モデル定義から CRUD やインデックスを自動生成できる PostgreSQL, MySQL, SQLite3 等をサポート Prisma Studio という GUI が付いている というモダンな ORM です。Nuxt と TypeS
はじめに Raspberry Pi Pico 楽しいですよね。先日は、Raspberry Pi Pico のボタンを使って Go の if err != nil {...} を自動入力するボタンを作りました。 先日から、Raspberry Pi Pico で TensorFlow Lite を動かすのを試していたのですが、独自モデルでどうしても動かずハマっていた問題が昨日解決しました。 できあがったもの XOR ゲートを推論するモデルを組み込み、シリアルポートからの入力で LED を付けたり消したりします。 まずはモデルを作る といっても難しい事はなく、単に普通の学習をさせるだけです。 import tensorflow as tf from tensorflow import keras import numpy as np x_train = np.array([[0, 0], [1,
この記事は Vim Advent Calendar 2020 25日目の記事です。 はじめに 年末ですね。年賀状ですね。インターネットが普及した現代、若い世代の人達においては年賀状を交わす事は少なくなってしまったかもしれません。しかし田舎育ちの僕やある程度年配の方々の世界線では年賀状は未だ変わらず有効なコミュニケーション手段として採用されており「アイツん家の子、大きくなったな」「アイツ随分老けたな」といった思い出回帰の方法としても使われています。 さて皆さんは年賀状をどの様に作っておられますか?手書きですか?それとも「筆○2020」等といった年賀状作成専用ソフトをお使いだったりしますか?僕は毎年 LibreOffice の宛名書き印刷を使っています。 LibreOfficeで宛名印刷(縦書き/連名): ひろろろぐ LibreOffice で差し込み印刷する記事は沢山あるのですが、連名がちゃ
この記事は Go Advent Calendar 2020 24日目の記事です。 はじめに 皆さんは「モブログ」ってご存じでしょうか。 モブログとは、携帯電話などの携帯通信端末からインターネットに接続して閲覧・投稿ができるブログ(ウェブログ)のことである。 携帯電話などを利用して書き留められた短い文章や、あるいはカメラ機能で撮影された写真などが記事の主な内容となる。常に携帯するものなので、ふと思いついた所感を臨場感が損なわれないうちに記すこと、あるいは街角で見かけた面白い光景や偶然出会った有名人などを逃さず撮影することなどが可能となる。1日のうち特定の時間にパソコンの前に構えて書かれる通常のブログよりも一層、リアルタイム性が色濃く、独特の臨場感や軽快さがある。 ちなみに、モブログはモバイル(mobile)とブログ(blog)が組み合わされた造語である。和製英語ではないので、英語圏でもmob
はじめに この記事は Vim Advent Calendar 2020 の記事、 ではありません。 ふと Vim script でマルコフ連鎖させたら面白いんじゃないかと思ってチョロっと作ってみました。 マルコフ連鎖とは 文章に現れる語句とそれに連なる語句でツリーを構成する場合、その枝には頻出度が出来上がります。例えば「吾輩も」という文章が2つ、「吾輩は」という文章が1つある場合、「吾輩」から「も」に進む確率は「吾輩」から「は」に行く確率よりも高くなります。この様に現在の状態(吾輩)の次の状態(も|は)が、吾輩の前の語句に依存せず決定される状態を マルコフ性 といい、一連の確立変数の列を マルコフ連鎖 と呼びます。 P(X_{t+1}∣X_{t},X_{t−1},…,X_{1})=P(X_{t+1}∣X_{t}) 図で表すと以下の様になります。 引用: シェルスクリプトで作る Twitte
はじめに この記事は Vim Advent Calendar 2020 その2 のエントリ記事です。(空きがあったので入りました) この記事で紹介するプラグイン vim-findroot は実は随分前から作っていたのですが、ブログという形で紹介した事が無かったので記事にしたいと思います。 vim-findroot とは プロジェクトを扱う IDE と比べ、Vim は単位とのファイルを編集する事を目的とするテキストエディタです。Vim を IDE の様に使いたい人は、シェルでプロジェクトルートにカレントディレクトリを移し、そこから相対パス等でファイルを開いておられるかもしれません。 特に最近は Vim から Language Server を使う事も多いのですが、Language Server の一部にはプロジェクトルートに居るかどうかで挙動が変わってしまう物もあります。Vim には元々、フ
はじめに 皆さんは ZeroSSL を知っていますか?個人でウェブサイトを運営している皆さんであれば、多くの方は Let's Encrypt を利用されていると思います。 https://letsencrypt.org/ja/ もちろん僕も使っています。僕の様なエンジニアの方であれば SSL の仕組みもおおよそ理解もしているし、コマンドラインの実行方法も知っておられるのでウェブサイトの SSL 証明書を取得する事もそれほど難しい事ではないでしょう。 しかしそれほど詳しくない方が certbot の様なコマンドを使って SSL 証明書を発行するのは割と難しい事です。そこでご紹介したいのが ZeroSSL です。 https://zerossl.com/ ZeroSSL とは ZeroSSL もまだあまり名前が知られていないせいか、Google 検索で「ZeroSSL」を検索すると「ZeroS
筆者の環境について Vim にはプラグインマネージャも沢山あります。その中で僕は vim-plug を使っています。Software Design という雑誌で「Vim の細道」という連載をやっている事もあり、皆さんに一番リーチしやすいプラグインマネージャを選んでいるという事もありますが、基本は「トラブルが発生しづらい」という理由で使っているのもあります。 vimrc の分割管理 ところで最近は Vim プラグインが沢山あり、個々に設定が必要な場合もあります。全て vimrc の中に書いてしまうのも良いのですが、そうするとどこからどこまでが、どのプラグインの設定か分からないといった問題が起きてしまいます。僕は vimrc をプラグイン毎に分割して管理しています。 Big Sky :: ぼくがかんがえたさいきょうの Vim のこうせい 2019年 年末版 " Vim 本体の機能のデフォルト値
はじめに Vim というテキストエディタは、vi から引き継いだ独特な操作を提供します。そしてそれだけでなく Vim script という独自のスクリプト言語で Vim 自身を拡張する事ができます。多くの Vim ユーザの方もそれはご存じかと思います。 もしかすると知らない方もいらっしゃるかもしれませんが、昨年末から Vim の作者 Bram Moolenaar 氏が vim9 というブランチを作り今年の1月に master ブランチへマージしました(vim9 とは言えどまだバージョンは8です)。その中に含まれていた機能が Vim9 script です。 そもそも Vim script Vim script は Vim のバージョン 5.0 の頃から登場し、元々は設定ファイルである vimrc を環境により if 分岐する為に登場しました。その後 Vim script に色々な関数が足され
Vim には coc.nvim という拡張があり、Visual Studio Code の拡張のコードをふんだんにパク利用して node.js のプロセスとして動作する Vim プラグインがあるのですが、一昨日その coc.nvim から使える coc-rime という拡張を見付けました。 ※画像はリポジトリから拝借 どうやら中国ではそこそこ有名な rime という IME があり、その API を利用している様です。仕組みを追ってみると rime-cli というコマンドラインプログラムを使い、rime と対話しているのが分かりました。 この rime-cli というプログラムの標準入力にタイプしたキーを与えると、変換結果が標準出力で返されるという物です。なかなか面白いなと思ったので、SKK で実現できないか実験してみました。実装に必要な物としては2つ。 SKK の入力を与えると変換結果が
次のページ
このページを最初にブックマークしてみませんか?
『mattnさんの記事一覧』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く