タグ

ブックマーク / mattn.kaoriya.net (28)

  • Big Sky :: errors.Join が入った。

    errors, fmt: add support for wrapping multiple errors · golang/go@4a0a2b3 · GitHub An error which implements an "Unwrap() []error" method wraps all the non-nil errors in the returned ... https://github.com/golang/go/commit/4a0a2b33dfa3c99250efa222439f2c27d6780e4a Go でエラーを扱う際に、複数のエラーを束ねたい事があります。例えば複数のタスクを実行し、1つでもエラーになれば中断するのではなく、一通りタスクを実施し終えた結果を返したい様なニーズです。 package main import ( "errors" "log" "os"

    Big Sky :: errors.Join が入った。
    dowhile
    dowhile 2022/10/01
  • Big Sky :: unsafe.Add と unsafe.Slice が入った。

    Go ではポインタは扱えるけれど、ポインタ演算は扱えないというのが共通認識でした。もちろん unsafe.Pointer と uintptr を使う事で、出来なくはなかったのですが簡単ではありませんでした。 package main import ( "unsafe" ) type foo struct { k int64 v int64 } func main() { f := &foo{3,4} // unsafe.Pointer() で匿名ポインタにして // uintptr() で演算可能にして // +8 バイト(64bit)足して // unsafe.Pointer で匿名ポインタに戻して // そこにはフィールド v があるはずなので *int64 にキャストして // デリファレンスすれば出来上がり *(*int64)(unsafe.Pointer((uintptr(uns

    Big Sky :: unsafe.Add と unsafe.Slice が入った。
    dowhile
    dowhile 2021/05/19
  • Big Sky :: sudo の特権昇格バグはなぜ起こったのか

    « Microsoft Word を Markdown に変換するコマンド「docx2md」を作った。 | Main | VimConf 2019 を終えて » Linuxsudo に root 権限を奪取できるバグが見つかった。 Linuxの「sudo」コマンドにroot権限奪取の脆弱性。ユーザーID処理のバグで制限無効化 - Engadget 日版 この脆弱性は、sudoコマンドのユーザーIDに-1もしくは4294967295を指定すると、誤って0(ゼロ)と認識して処理してしまうというもの。0(ゼロ)はrootのユーザーIDであるため、攻撃者は完全なrootとしてコマンドを実行できることになります。 https://japanese.engadget.com/2019/10/14/linux-sudo-root-id/ 既に Ubuntu 等にはパッチが配布され始めているらしい

    Big Sky :: sudo の特権昇格バグはなぜ起こったのか
    dowhile
    dowhile 2019/10/16
  • Big Sky :: 改訂2版 みんなのGo言語

    2016年、普段から現場でGoを使っている名立たるGoプログラマの皆さんと一緒に「みんなのGo言語」という書籍を執筆させて頂きました。 「みんなのGo言語」は他のリファレンスとは異なり、Go言語の最新事情をお伝えする事に主眼を置いて書きました。 インストール方法や使い方、モダンなテストの書き方、ツールの使い方等も執筆時点での最新情報を書かせて頂きました。 これはとても意義がある事だった感じています。 しかしこれは逆に、時間が経つにつれ執筆した内容が次第に古くなってしまうというリスクを伴います。幾つかの内容は、3年経った現在に合わなくなっている物も出てきました。紹介したツールの中には開発が止まってしまっている物もあれば、執筆時点で制限事項と記したけれども現在では解消している物も出てきています。そればかりではなく新しく追加されたコマンドや機能、新しい制限事項もあります。特に Go Modul

    Big Sky :: 改訂2版 みんなのGo言語
  • Big Sky :: Go 言語で TensorFlow の学習

    これまで Go で TensorFlow を扱うのは推論しかやった事が無かったけど、API を眺めていたら学習できそうだったので試してみた。 Go による機械学習 推論フレームワークの最新動向 2019 - Qiita Golang で推論 昨今では「機械学習と言えば Python」「Python と言えば機械学習」と思われがちなのですが、推論用途であれば学習済みモデルを利用して色々なプログラミング言語から扱えます。... https://qiita.com/mattn/items/b01f9bb5c2fa3678734a ただし色々調べてみたのだけどグラフ定義を出力するのは難しかった。難しかったというか Protocol Buffer 形式のファイルを出力するまでは出来たのだけど Python 版でいうオペレータの名付けであったり勾配降下法(GradientDescentOptimize

    Big Sky :: Go 言語で TensorFlow の学習
    dowhile
    dowhile 2019/05/16
  • Big Sky :: gocode やめます(そして Language Server へ)

    はじめに まず始めに言っておかなければなりません。 gocode 今まで当にありがとう この記事は、Go 言語歴10年になる僕がこれまで愛用してきた Go 言語のコード補完ソフトウェア gocode の歴史と功績、そして今、gocode 自らがその役割を終えようとしている姿をぜひ皆さんに知って頂きたいという思いから Go Advent Calendar 2018 の記事として起こしました。この記事では gocode が歩んできた歴史と苦悩を少しでも皆さんに分かる様に解説させて頂きつつ、そして次にやってくる Go 言語のコード補完の未来についてご紹介したいと思います。Vim について多めに書かれていますが、Visual Studio Code での Go 開発にも影響する話です。 gocode とは gocode は nsf 氏が開発した Go 言語のコード補完サーバです。 GitHub

    Big Sky :: gocode やめます(そして Language Server へ)
    dowhile
    dowhile 2018/12/17
  • Big Sky :: VimConf 2018 に行ってきた。

    僕のこれまで人生の中で、2日間まるまる Vim の事を考えるなんて事なんて無かったし、今思い返してもとても刺激的な日でした。 まず始めに、VimConf というイベントを産み出してくれた ujihisa さん、kaoriya さん、運営に関わった皆さん、そしてスポンサー頂いた企業の皆様、個人スポンサーをして頂いた皆さん、当にありがとうございました。 中には参加できないにも関わらず VimConf が上手く行く事を願って個人スポンサーになってくれた方も沢山いました。当にありがとうございます。 今回 Vim の作者 Bram Moolenaar 氏を VimConf 2018 に呼べたのは皆さんのお力あってこそだと思っています。 これまで VimConf はどちらかというと、こじんまりしたイメージのイベントでしたが、「Bram Moolenaar 氏を呼ぶに相応しい国際会議として開催すべき

    Big Sky :: VimConf 2018 に行ってきた。
  • Big Sky :: Golang だけでやる機械学習と画像分類

    « Let's Encrypt を簡単操作できる CLI、Lego が MyDNS に対応した。 | Main | VimConf 2018 に行ってきた。 » gobrain という Golang だけで実装されたニューラルネットワークを見つけたので遊んでみました。 GitHub - goml/gobrain: Neural Networks written in go https://github.com/goml/gobrain 作りもシンプルですし、扱い方も簡単なのでちょっとしたサンプルを書くのには向いてると思います。例えば FizzBuzz であればこんな感じ。 package main import ( "math/rand" "github.com/goml/gobrain" ) type FizzBuzz []float64 func (fizzbuzz FizzBuzz)

    Big Sky :: Golang だけでやる機械学習と画像分類
  • Big Sky :: ボタンを押したら golang の if err... を自動入力

    今日 Reddit で見付けた面白ネタ。 押したら golang の if err != nil { } を入力するボタン。便利やん。https://t.co/wfnOnSS48r pic.twitter.com/R2Ot9T3jt4 — mattn (@mattn_jp) September 13, 2018 簡単そうだなと思ったので作ってみた。 とは言っても家にボタンらしきデバイスが無いので、カメラの自動シャッターボタンで代用。ダイソーで300円くらいで売ってます。 Linux で User Input (入力キャラクタデバイス) は /dev/input/ 配下のデバイスファイルを介してやり取りされます。以前この uinput を簡単に扱えるデーモンを作ったのでそちらを使います。 GitHub - mattn/uinputd: uinput launcher uinputd uinp

    Big Sky :: ボタンを押したら golang の if err... を自動入力
  • Big Sky :: golang で tensorflow のススメ

    « Software Design 2018年7月号「Vim 絶対主義」の執筆に参加しました。 | Main | ボタンを押したら golang の if err... を自動入力 » tensorflow といえば Python と思っておられる方も多いのではないでしょうか。間違いではないのですが、これは初期に作られた Python 向けのバインディングに研究者達が多くいついた結果に過ぎないと思っています。実際 tensorflow は現在 C言語、C++PythonJavaGo から利用する事ができ、最近では JavaScript にも移植されています。筆者自身も Go で tensorflow を使ったシステムを構築し、運用保守しています。問題も発生せず機嫌良く動いています。学習の利用部分は GPU のパフォーマンスに依存しますが、それ以外の部分については各言語の実装に依存し

    Big Sky :: golang で tensorflow のススメ
  • Big Sky :: Software Design 2018年7月号「Vim 絶対主義」の執筆に参加しました。

    いつもは Software Design で「Vim の細道」という連載記事を担当していますが、7月号はお休みさせて頂き Vim 特集「Vim 絶対主義」の執筆に参加させて頂きました。 テキストエディタ「Vim」は開発環境の選択肢の1つとして、世界中のエンジニアに選ばれ続けています。 ランキングによってはIDE(統合開発環境)にも引けを取らないほどのユーザ数の多さを示していますが、一体Vimの何が、これほどまで人々を惹きつけているのでしょうか。 特集ではVimを触ったことがないという入門者向けに、vi/Vim歴史の解説から環境ごとのインストール、基操作、設定方法、プラグインの入れ方まで手厚く解説しています。 手元の環境にVimを入れて実際に動かすことで、「なぜVimなのか」の答えがわかるかもしれません。 Vim歴史を紐解き、なぜこんな操作方法になっているのか、なぜそれが良いのかと

    Big Sky :: Software Design 2018年7月号「Vim 絶対主義」の執筆に参加しました。
  • Big Sky :: 簡単に goroutine の実行個数を制限する方法

    Go は簡単に軽量スレッドが起動できるのがウリなのだけど、その使い方が難しいと思われているきらいがある。 Goへの誤解について - GolangRdyJp よくGoで誤解されるポイントについて個人的な見解を書いておきます。 今回の記事は Goアドベントカレンダー2017 その3 の20日目の記事です。 使ってないパッケージがコンパイルエラーって面倒じゃね... http://golang.rdy.jp/2017/12/20/go-fact/ 慣れていない間は、処理を並行化する際に「どうやったら並行化できるんだ」が分からない事があるのだと思う。 Big Sky :: golang の channel を使ったテクニックあれこれ golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量に

    Big Sky :: 簡単に goroutine の実行個数を制限する方法
  • Big Sky :: Visual Studio Code で ssh 先のファイルを編集する方法

    Visual Studio Code で ssh 先のファイルを編集するには、Remote VSCode を使います。 Remote VSCode - Visual Studio Marketplace A package that implements the Textmate's 'rmate' feature for VSCode. https://marketplace.visualstudio.com/items?itemName=rafaelmaiolla.remote-vscode なかなか仕組みが面白かったので紹介したいと思います。Remote VSCode は、実際は Sublime TextTextmate の rmate というコマンドの派生版です。どうやって ssh 先のファイルを編集するかというと、勘の良い方であれば以下のコマンドを見れば理屈は分かるはず。 $ s

    Big Sky :: Visual Studio Code で ssh 先のファイルを編集する方法
    dowhile
    dowhile 2017/07/11
    sshfsじゃあかんの
  • Big Sky :: ログイン認証をマイクロサービス化する「loginsrv」

    認証を持たないウェブアプリケーションをいざ認証に対応させようと思うと案外面倒でモチベーションを無くしてしまうなんて事もよく起きうる話です。特に社内向けのアプリケーションを作っていたら番で使う事になってしまって、なんて話は良くある話です。開発でDB を見るのはちょっと...。でも既存のコードをゴリゴリと触りたくない。そんな場合にログイン認証部分だけマイクロサービス化できると気持ちも幾分和らぎます。今日はそんなちょっと便利なサーバ「loginsrv」を紹介したいと思います。 GitHub - tarent/loginsrv: JWT login microservice with plugable backends such as OAuth2, Github, htpasswd, osiam loginsrv is a standalone minimalistic login se

    Big Sky :: ログイン認証をマイクロサービス化する「loginsrv」
    dowhile
    dowhile 2017/06/02
  • Big Sky :: Matz の「言語のしくみ」を読んだ。

    Twitter で「言語のしくみ」読みたいなって呟いたら Matz 人から「献しましょうか」とメンション頂いて即答でお願いしました。ありがとうございます。 ひさびさ紙のを通勤電車の中で立ちながら読んだので手がだるくなりました。なんだか懐かしい感じがしました。 さてこのですが、一言で言うとこんなです。 Ruby のパパこと Matz が雑誌の連載に追われながら試行錯誤して作ったプログラミング言語「Streem」を解説する 聞こえが悪かったらすみません。言いたいのはこの「試行錯誤」がとても良いエッセンスになっている点なのです。実際にはその連載記事をまとめた物に対して、この当時はこの様に考えていたが後になってみると実は良く無かったといった振り返り「タイムマシンコラム」で構成されています。 この連載が1つのに纏められた事でプログラミング言語設計者の葛藤が非常に良く表されているな、そう

    Big Sky :: Matz の「言語のしくみ」を読んだ。
    dowhile
    dowhile 2017/01/06
  • Big Sky :: builderscon 2016 で登壇してきました。

    « バイナリ一つで zip, tar.gz, tar.bz2, tar.xz が開けるコマンド「archiver」(と go1.8 への対応方法) | Main | gops が SIGINT をキャッチしてしまう問題が修正された。 » 冒頭でもお話させて頂いた通り、僕は YAPC に何回も誘われながらも結局参加できなかったというのが気持ちの奥にずっとあり、一度くらいは出ておくべきだったのかなと考えていたので今回、牧さんからお誘いを貰った時はお詫びをするなら今しかないと思っていました。はじめは15分とか30分程度のトークかなと思っていたら気付けば builderscon 2016 第1回目のド頭で1時間枠を割り当たっていました。 内容は「OSS は Windows で動いてこそ楽しい」というお題で Windows アプリの開発のつらさ、闇、そしてGo言語の誕生と希望について熱く語らせて頂き

    Big Sky :: builderscon 2016 で登壇してきました。
  • Big Sky :: UNIX コマンドを SQL で抽出できるツール qq を作った。

    昨日僕の Twitter タイムラインで q というツールが話題に上がっていました。 GitHub - harelba/q: q - Run SQL directly on CSV or TSV files Text as Data q is a command line tool that allows direct execution of SQL-like q... https://github.com/harelba/q 標準入力を SQL で抽出できるという物です。ただ個人的には「こういうの python じゃなくて Go でビルドされてると助かるよなー」と思ったので q と同じ様な動作になるツールを作ってみました。 GitHub - mattn/qq Select stdin with query https://github.com/mattn/qq 例えば msys2 のシ

    Big Sky :: UNIX コマンドを SQL で抽出できるツール qq を作った。
    dowhile
    dowhile 2016/08/12
  • Big Sky :: glib を使ったマイクロフレームワーク「balde」

    C言語とか C++ でマイクロフレームワークとか聞くと鼓動の高鳴りを抑えられなくなるmattnですこんにちわ。 Balde — A microframework for C based on GLib and bad intentions. Features Simple templating engine, that converts markup to C code that is linked directly to the app... https://balde.rgm.io/ 2016年に glib で Web だと?と言われそうな気がしなくないですが面白そうな物を見つけました。特徴は 簡単なテンプレートエンジンを提供し、マークアップからC言語のコードへ変換されアプリケーションのバイナリに直接埋め込まれる。 静的リソースはアプリケーションのバイナリに埋め込まれサーブされる。 R

    Big Sky :: glib を使ったマイクロフレームワーク「balde」
    dowhile
    dowhile 2016/05/31
  • Big Sky :: GitHub Pages が Jekyll 3.0 になり、ますますブログが書きやすくなった。

    先日、GitHub Pages が Jekyll 3.0 になりました。 GitHub Pages now faster and simpler with Jekyll 3.0 · GitHub GitHub Pages is now running the latest major version of Jekyll, Jekyll 3.0 , and with it, many of th... https://github.com/blog/2100-github-pages-now-faster-and-simpler-with-jekyll-3-0 速くなったという事でとても喜ばしいのですが、良い事はそれだけではなかった。GitHub Pages を使ってのブログ作成方法については、これまでこのブログでも幾つか紹介して来ました。 Big Sky :: Jekyllで始める簡単ブロ

    Big Sky :: GitHub Pages が Jekyll 3.0 になり、ますますブログが書きやすくなった。
    dowhile
    dowhile 2016/02/15
  • Big Sky :: C++ の数式パーサ Lepton で遊んでみた。

    Lepton という数式パーサを見つけたので遊んでみた。 Simtk.org: Lepton Mathematical Expression Parser: Overview Purpose/Synopsis: A small C++ library for parsing, evaluating, differentiating, and analyzing mathem... https://simtk.org/home/lepton 一般的な数式パーサは expression を token に分解するのみだが、この lepton はもう1歩踏み込んだ処理が行える。 通常の数式は以下の様にパースし実行出来る。 #include <iostream> #include <string> #include <map> #include <Lepton.h> int main(int ar

    Big Sky :: C++ の数式パーサ Lepton で遊んでみた。
    dowhile
    dowhile 2015/10/14
    へえ