タグ

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

  • 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 の特権昇格バグはなぜ起こったのか
  • Big Sky :: Google Developers Expert (Go) になりました。

    Google の方からお誘いを頂き、Google Developers Expert (Go) になりました。 僕のこれまでの Go に対する活動を評価頂けました。僕が Go を触り始めたのが2009年、今から10年前でした。Go はまだメジャーリリースすらされておらず、誰も仕事で使っていない言わばホビー言語でした。 一部のアーリーアダプタが「この言語、面白い」という言葉を残し飽きて来た頃、僕は職場で自前のツールを Go で書くようになりました。それまではC言語でした。 マルチプラットフォーム、速いコンパイラ、ポータビリティの高さ、簡単な記述での並行処理、色々な物に惹かれました。特に、シングルバイナリで動作し、コンパイルし直しさえすればソースコードを書き直す事なく Windows で動き、なおかつマルチバイトの問題も発生しない、こんな夢の様なプログラミング言語はそれまで見た事が無かったので

    Big Sky :: Google Developers Expert (Go) になりました。
  • Big Sky :: SQLite3 でロジスティック回帰

    なんとなく SQLite3 でロジスティック回帰できたら面白そうと思ったので作ってみた。 データセットは iris、sqlflow の DDL を使わせて頂いた。 sqlflow/example/datasets at develop · sql-machine-learning/sqlflow - GitHub It should print the number of rows as the following: count(*) 10 Troubleshooting It usually takes ab... https://github.com/sql-machine-learning/sqlflow/tree/develop/example/datasets CREATE DATABASE IF NOT EXISTS iris; DROP TABLE IF EXISTS iri

    Big Sky :: SQLite3 でロジスティック回帰
  • 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」
  • Big Sky :: golang のサーバで帯域制限したい。

    次回予告「並列ダウンロードするHTTPクライアントをバンド幅制限するサーバをGoで実装した」 / “高速でダウンロードできるツールを Go で実装した。 - Qiita” https://t.co/6NfEyJCwbu — Kazuho Oku (@kazuho) July 13, 2016 並列ダウンローダを使うと幾らかサーバに負荷が掛かってしまいます。golang のサーバ側で帯域制限を行う場合には2つ方法があります。 転送量制限する 接続数制限する まずは転送量制限。転送量の制限には throttled が便利です。 GitHub - throttled/throttled: Package throttled implements rate limiting access to resources such as HTTP endpoints. README.md Throttle

    Big Sky :: golang のサーバで帯域制限したい。
  • Big Sky :: golang の channel を使ったテクニックあれこれ

    golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量になったり、慣れていない人であればどう実装すればいいか分からないなんて事もあったと思います。しかし golanggoroutine/channel は、やっている内容の割にとても容易にスレッド間通信やキューイング、処理の受け待ち等を実装できる様になっています。尚、channel をどの様に適用したら良いかについては以下を参照下さい。 Big Sky :: Golang の channel の使い所 golang の特徴と言えば goroutine と channel ですが、その使いどころに悩む人もおられる様です。 goroutine は非同期に実行される処理、channel はその grout... http://mat

    Big Sky :: golang の channel を使ったテクニックあれこれ
  • Big Sky :: 「みんなのGo言語」の執筆に参加させて頂きました。

    僕がプログラミング言語「Go言語」を知り、使い始めてからそろそろ7年目に入ろうとしています。 当初 Google が作っているという鳴り物があった為、色々なメディアに取り上げられ色々な方がブログ等でGo言語を紹介し、色々な意見でGo言語が語られました。大抵の場合、プログラミング言語とは始めはチヤホヤと取り出され、落ち着いてからが当の人気を表すという傾向にあります。皆さんもそう思っていたかもしれませんし、僕もそう思っていたと思います。 僕がGo言語を触りだした頃、まだ色々と足りない部分がありました。Linux で動いている多くの機能が Windows では未実装になっていました。しかしそんなGo言語であっても高速なビルドと実行速度で僕の好奇心を揺さぶるには十分な物でした。 その後、僕はGo言語にパッチを送る様になりました。その内幾らかはマージされました。現時点ではコアのリポジトリで79個の

    Big Sky :: 「みんなのGo言語」の執筆に参加させて頂きました。
  • Big Sky :: 簡単に回転画像が生成出来るコマンド「nekokak」をgolangで書いた。

    kan さんが slack での公開型チャットの運用を始めました。 Soozy Slack #Soozy これはなに? #soozy は元々IRCのfreenodeにあったチャンネルで、日perlコミュニティを中心にperlのことを含むプログラミングに関わる話題を中心に話し合っていました... http://soozy.fushihara.net/ 皆さんも分かると思いますが、こういったチャットサービスで必ず必要となるのが回転する画像です。どうしても回転するアイコンが必要になったので、簡単に生成出来るコマンドを golang で書きました。 mattn/nekokak · GitHub https://github.com/mattn/nekokak 使い方は簡単。 $ nekokak input.png で animated.gif というファイルが生成されます。これで今すぐ回転する

    Big Sky :: 簡単に回転画像が生成出来るコマンド「nekokak」をgolangで書いた。
  • Big Sky :: Protocol Buffers を利用した RPC、gRPC を golang から試してみた。

    grpc/grpc · GitHub gRPC - An RPC library and framework https://github.com/grpc/grpc gRPCGoogle が開発しているRPC(リモートプロシージャコール)のライブラリとフレームワークで、通信層は HTTP/2 を介して行われます。 データ層については、固定されている訳ではなくあくまでデフォルトで Protocol Buffers が使われる様になっています。使用出来るプログラミング言語は現在、C++, Node.js, Python, Ruby, Objective-C, PHP, C# となっています。 実はこれら以外にも grpc-go という、なぜかこのリストに加えられていないオフィシャルリポジトリがあります。 grpc/grpc-go - GitHub gRPC-Go The Go impl

    Big Sky :: Protocol Buffers を利用した RPC、gRPC を golang から試してみた。
  • Big Sky :: golang のリファクタリングには gofmt ではなく、gorename を使おう。

    今まで golang で変数名や関数名のリネームには gofmt の -r オプションを使ってきましたが、これからは gorename を使いましょう。 文法を解析して正しくリネームしてくれるので、gofmt で起き得た誤爆も心配ありません。インストールは以下の様に実行します。 $ go get golang.org/x/tools/cmd/gorename 使用方法は以下の通り。 gorename: precise type-safe renaming of identifiers in Go source code. Usage: gorename (-from <spec> | -offset <file>:#<byte-offset>) -to <name> [-force] You must specify the object (named entity) to rename

    Big Sky :: golang のリファクタリングには gofmt ではなく、gorename を使おう。
  • Big Sky :: Vim script で streem を実装した。

    « C++ の WAF crow が mustache テンプレートエンジンをサポートしていた。 | Main | Re: VimでURLをドメインだけに置換するコマンドを正規表現でうったら、当に正規表現って意味不明なフォルムと思った。 » この記事はVim Advent Calendar 2014 - Qiita 24日目の記事です。 Matz さんが streem という、ストリーム指向言語の開発を始めるらしいです。 https://github.com/matz/streem まだ文法の設計段階ではあるけど、それなのにかなりの量の pull-req がバンバンと来てて凄いなーと思いつつも「この pull-req 量だと僕には出番無いなー」と思ったのと「Matz さんがもしかしたら Go で streem を実装するかもしれない」という記事を読み「streem の他言語実装が一つ消え

    Big Sky :: Vim script で streem を実装した。
  • Big Sky :: golang で最近お気に入りの WAF「Goji」

    Web アプリケーションを書くときは今までずっと 小さい物は web.go 大きい物は net/http というスタンスを何故か貫いて来たんだけど、最近ようやく web.go をやめて goji を使う様になった。 Goji A web microframework for Golang https://goji.io/ 理由としては Sinatra ライクでありながら高度な正規表現マッチも使えるルータ それでいて net/http コンパチ 簡単に実装出来るミドルウェアスタック グレースフルシャットダウン そして何と言っても速い ミドルウェアも一般的な Web アプリケーションを作るには十分な物が既に揃ってます。 それでもやっぱり大きめな物は net/http で書くんだけど、小規模から中規模な物を一気にゴリゴリっと書く場合には goji は便利です。もちろん Windows でも動きま

    Big Sky :: golang で最近お気に入りの WAF「Goji」
  • Big Sky :: Go言語でuWSGIリスナ書いた。

    最近はクラウドサーバ等、割と色んな所で見かける様になったuWSGIですが... uWSGI uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. http://projects.unbit.it/uwsgi/ Perlだとhirataraさんが書いた記事や Hokkaido.pmでuWSGIについてLTした - a geek born in Tomakomai uWSGI はデフォルトではhttpではなくuwsgiプロトコルを喋るので、uwsgiプロトコルを喋れるフロントエンドを立ち上げます... http://d.hatena.ne.jp/hiratara/20110718/1310950381 Plack::App::uWSG

    Big Sky :: Go言語でuWSGIリスナ書いた。
  • Big Sky :: cpanfile とは何か、なぜそれを使いたいのか

    超絶意訳 What is cpanfile and why do I want to use it - Tatsuhiko Miyagawa's blog What is cpanfile and why do I want to use it So there seems to be a couple of blog posts and even co... http://weblog.bulknews.net/post/44963580392/what-is-cpanfile-and-why-do-i-want-to-use-it cpanfile について幾つかブログ記事やカンファレンスがある様です。素晴らしい事です。ですがそれは単に、それが何であるか、またそれらがなぜ必要なのか(もしくは必要じゃないのか)を、筆者の説明と共に書かれているだけなのです。 tl;dr 日の方へ - こ

    Big Sky :: cpanfile とは何か、なぜそれを使いたいのか
  • Big Sky :: gomon と goalert で快適Go言語開発

    ディレクトリを監視して、変更があれば指定のコマンドを実行してくれるツール gomon を c9s さんが作ってくれました。 c9s/gomon - GitHub https://github.com/c9s/gomon この gomon を活用すべく goalert というツールを作りました。 mattn/goalert - GitHub https://github.com/mattn/goalert これらを組み合わせて $ gomon . -- goalert go build -x とやっておくと、ソースの修正に伴い goalert が起動し、goalert が go build を実行します。結果としてエラーになった場合は、goalert が Growl サーバに結果を投げてくれます。 めっちゃ便利になりました。

    Big Sky :: gomon と goalert で快適Go言語開発
  • Big Sky :: 【閲覧注意】JSX で何か作ってみた。

    JSX - a faster, safer, easier alternative to JavaScript faster JSX performs optimization while compiling the source code to JavaScript. The generated code r... http://jsx.github.com DeNAさんがマルチデバイス向けに高速なjavascriptを吐き出せる言語を開発。github上でオープンソースで開発されておられます。 僕も何か作りたいー、という事で作ってみた。 画面内をゴキブリが這い回ります。ソースは大丈夫ですが、デモは閲覧注意かもしれません。 import "js/web.jsx"; final class Roach { var x : number; var y : number; var d : nu

    Big Sky :: 【閲覧注意】JSX で何か作ってみた。
  • Big Sky :: やったーJavaScriptの動くSQLiteできたよー

    ※ネタです ※UDFです 正誤表を書くのにしばらくこのをちょっと眺めてみたら、SQLiteのUDFって簡単に作れるんだなー、と思った && そういやV8ってライブラリとして簡単にリンクできるはずだな、と思い出した ので、ついカッとなって作った。 sqlite3udf-jseval - GitHub http://github.com/mattn/sqlite3udf-jseval UDFうんぬn ほとんど↑の、全然関係ないと思ってたけど、やっぱりSQLiteのUDFについて全然書いてなかった。しょうがないので軽く紹介しておくと UDFを追加する場合、SQLiteの再コンパイルは必要ない (しかるべき所に.soがおいてあればいい) UDFはこの辺読んどけばだいたい分かる。 例えば文字列っぽいものを返すmyfuncっていうUDFを作りたい場合 SQLITE_EXTENSION_INIT

    Big Sky :: やったーJavaScriptの動くSQLiteできたよー
  • Big Sky :: Google App EngineのアプリケーションをGoで書ける様になった。

    僕にとってデカいニュースが飛び込んできた。 Goの開発プロジェクトに関わってて良かった。今日はそう思える日になりそうだ。 まだGoogle App Engine Blogにもエントリされてないが、Google App EngineにGo言語が仲間入りした。 Downloads - Google App Engine - Google Code Google App Engine SDK for Go http://code.google.com/intl/en/appengine/downloads.html#Google_App_Engine_SDK_for_Go Go言語は元々Google社員が開発している言語で、コンパイル型言語とは言えDuckTypingを前面に押し出した、スクリプト言語に近い仕様になっています。またWebに関するAPIは豊富で短いコードで簡単にWebアプリケーショ

    Big Sky :: Google App EngineのアプリケーションをGoで書ける様になった。
  • Big Sky :: 今更ながらGoogle v8でembedする方法を紹介してみる。

    最近どのブログでも node.js ばかりでもう飽き飽きしてる皆さんこんばんわ。 node.js 面白いですよね!ェ node.js ってアプリケーションを作る側(つまりライブラリを使う側)からすると、Web周りの便利なライブラリが既に色々あって、そのライブラリが一体どうやって動いてるのか気にすることってあんまり無いかと思います。 pure javascriptな物ならばコードを読むのは簡単です。ただしやれる事に限りがあります。node.js はGoogle製のJavaScript Engineであるv8をベースに作られているのですが、このv8はアプリケーションに組み込むのに適した構成になっていて、関数テンプレートやインスタンス、プロトタイプという各機能がC++のクラステンプレートで上手く表現出来ているライブラリです。Spidermonkeyも確かに扱うのは簡単なのですが、僕からすると若干

    Big Sky :: 今更ながらGoogle v8でembedする方法を紹介してみる。
  • Big Sky :: Goプログラマであるかを見分ける10の質問

    下記質問にそれぞれ50文字以内を目安に簡単に説明すること。 パッケージ内に定義した関数を外部に公開するにはどうすれば良いか? 非同期に処理を行う為の命令は? 関数を抜けた際に処理を実行するにはどうするか? goroutineの同時実行数を変更するにはどうするか? コンパイラやリンカが8g/6g/5g、8l/6l/5lという名前になっている理由は? Goのガベージコレクションの実装は一般的に何と呼ばれている類か? レシーバがnilの場合にメソッドを呼び出すと何が起きるか? 可変個引数はどの様に定義するか? 関数内で定義されるローカル変数のアドレスを戻り値として外部から参照するとどうなるか? interfaceとstructの違いは何か? panicを補足して強制終了させない為にはどうするか? 答え パッケージ内に定義した関数を外部に公開するにはどうすれば良いか? 関数名の先頭を大文字にします

    Big Sky :: Goプログラマであるかを見分ける10の質問