タグ

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

  • Big Sky :: IP アドレスからレンジを引いて CIDR 形式で表示するツールを作った。

    仕事でサーバを運用していると某国からのアタックがそこそこ多いのだけど、出来れば早急にブロックしてしまいたかったので IP アドレスから whois を引いて CIDR 形式で表示出来るツールを作った。昔はこういうの Perl で書いた気がする。 GitHub - mattn/iputil https://github.com/mattn/iputil ライブラリとして作ったけど、コマンドも用意してあります。 $ go get github.com/mattn/iputil/cmd/iprange 実行結果のイメージはこんな感じ。 $ iprange [IPアドレス] XXX.XXX.XXX.XXX/16 YYY.YY.YYY.YY/16 ... あとはこの結果を使って ufw (Universal FireWall) を使っているのであれば $ iprange [ヤバいIPアドレス] |

    Big Sky :: IP アドレスからレンジを引いて CIDR 形式で表示するツールを作った。
  • 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 :: 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 を作った。
  • Big Sky :: golang の遅いコードをたった1行で高速化するテクニック

    記事中に間違いがありました。数倍も速くはなりませんでした。確か 1.0X ~ 1.1 倍程度の高速化は得られましたがびっくりするほどの物ではありませんでした。すみません。 そろそろ Go1.7 がリリースされるそうですが、皆さん如何お過ごしですか。Go 界隈の波平こと mattn ですこんにちわ。バカモー(略 Go1.7 ではコンパイラの最適化が行われ、ビルド速度がかなり短縮される様になりました。毎日ビルドしてる僕としては非常に嬉しい機能改善ですね。 さてとてもキャッチ―なタイトルで釣ってしまった訳ですが、気にしたら負けなのでどんどん話を進めます。 var t [256]byte func f(b *[16]byte) { for i, v := range b { b[i] = t[v] } } 例えばこのコードを見て下さい。このコードはココから拝借しました。issue の内容はスコー

    Big Sky :: golang の遅いコードをたった1行で高速化するテクニック
  • Big Sky :: IDE としての Vim

    この文章は、http://yannesposito.com/Scratch/en/blog/Vim-as-IDE/ で掲載されている「Vim as IDE」の翻訳文です。 文内の全てはの筆者による物であり、訳文の内容については私による物となります。意訳が若干入っています。間違い等あればご連絡下さい。 Vim as IDE tl;dr: 如何に Vim を効率の良い IDE として使いこなすか Learn Vim Progressively (訳者注: 日語訳)では Vim が如何にテキスト編集に優れ、かつファイルを操縦できる偉大なテキストエディタであるかについて示した。この短い記事では、私が如何にして Vim を IDE として使っているかについて見る事が出来るだろう。そう、主に幾つかの素晴らしいプラグインを使う事により。 1. Vim Plugin Manager Vim のプラグイン

    Big Sky :: IDE としての Vim
    sukka9
    sukka9 2015/02/10
  • Big Sky :: 簡単に LGTM 出来る Vim plugin 書いた。

    README.md なんかは Vim で編集する事が多いんだけど、github の LGTM(Looks Good To Me)を入力する際に、「適当な画像欲しいけどブラウザ起動すんのかったるいな」って事あると思います。 そんな時には lgtm-vim をお使い下さい。 mattn/lgtm-vim - GitHub :LGTM で LGTM.in から適当な画像を引っ張ってきます。 また <leader>lgtm でも動きます。 LGTM.in http://lgtm.in どうぞお使い下さい。 動作には webapi-vim が必要です。

    Big Sky :: 簡単に LGTM 出来る Vim plugin 書いた。
  • Big Sky :: quickrun.vimをパクってquickdan.vimというのを書いた。

    RubyKaigiの一部として開催されてVimKaigi、なかなか面白そうでした。 Vimmerもだんだん増えてきました。plugin使ってる人も多い様です。実は私はあまりpluginの使用に依存しない様に心がけていたりするんですが、中にどうしても手放せない物があり、その中の一つがquickrun.vimだったりします。 thinca's vim-quickrun at master - GitHub Run commands quickly. http://github.com/thinca/vim-quickrun ちなみにtwitterでquickrun.vimを検索すると結構出てきます。 さて、私が使っているWindows環境にはpythonが数バージョン入っていて、あえてどれにもPATHを通していなかったりします。にも関わらず起動したvimから何時もの癖でquickrunを実行し

    Big Sky :: quickrun.vimをパクってquickdan.vimというのを書いた。
  • Big Sky :: バッチ ジョブを終了しますか (Y/N)?

    Windows を UNIX っぽく使おうとすると、必ずお目にかかるであろうこのメッセージ。 UNIX に慣れている人は、コマンドプロンプトを使いたがる。しかし全ての場合においてコンソールアプリケーションは有能では無いし、異常に長い引数は省略したい。Java VM で動く言語のクラスパス等はスクリプトに書きたいし、オフィシャルから Windows ユーザ向けに用意される物はだいたいバッチファイルだ。しかしながら Cygwin は標準提供物ではないし、嫌いだ。いや、大嫌いだ。 そこで私達は一般的に、バッチファイルという一見便利そげで実は非情なまでに我々に独特の仕様を強要するDSLを頻繁に使う事になる。 例えば Java VM 上で動く clojure を Windows 上で repl として使う場合、僕は以下の様なバッチファイルを「clj.bat」というファイル名にして使っている。 @ec

    Big Sky :: バッチ ジョブを終了しますか (Y/N)?
  • Big Sky :: SQLite で twitter のタイムラインを select する。

    ちょっと前に PostgreSQL に関する記事を見た。最近 PostgreSQL がアツイらしい。 PostgreSQLに興味がある人向けにまとめてみた。|PostgreSQL|お仕事メモ|Pictnotes Q. FDWってなによ? A. FDW(Foreign Data Wrappe),外部データラッパっていうやつで、SQL/MED(Management of External Data)の規格の一つで簡単にいうと、PostgreSQLにQUERYを発行したら、あら不思議、外部の(たとえばMySQLとかCSV)データが取得できるという変態機能。 twitterAPIに変更あるらしいから今後はわからにけど、twitterのデータを取ってくるとかもできる。というかラッパーが用意されてる。(ちなみに使ってみたら楽しかったw) http://www.pictnotes.jp/memo/arc

    Big Sky :: SQLite で twitter のタイムラインを select する。
  • Big Sky :: VimでDBが操作できる vdbi-vim 作った。

    DB操作ツール Emacs DBI を作ってみた - 技術日記@kiwanami このツールの目的は、クロスプラットフォームで便利なDB操作環境を実現することです。 pgAdmin や MySQL Query Browser のようなGUIの良さをCUIで実現してみようとしてみました。すなわち、ぼくのかんがえたさいきょうのDBツールです。ちなみに、このツールにとってEmacsはただの実行環境です。Emacs使わない人でも使うと便利だと思います。 http://d.hatena.ne.jp/kiwanami/20120305/1330939440 VimもーVimもー! って事で作りました。 mattn/vdbi-vim - GitHub Database client for Vim https://github.com/mattn/vdbi-vim Emacs版はepcというRPCプロト

    Big Sky :: VimでDBが操作できる vdbi-vim 作った。
  • Big Sky :: モテる男のVim script短期集中講座

    ここで関数リファレンスのみ格納先の変数の先頭が大文字になっていますが、これはVim script特有の制限になります。 数値は一般的な言語と同じ様に四則演算できます。文字列については.を用いて連結します。 また文字列は添え字によるアクセスが可能で、pythonの様に echo "hello"[1:3] という記述が出来ます。その他文字列操作関数については:help evalに詳しく記述されています。 また型同士の比較についてはthincaさんの記事が役立ちます。 Vimスクリプト基礎文法最速マスター - 永遠に未完成 Vimスクリプト基礎文法最速マスター vim 流行ってるみたいなので遅ればせながら便乗。需要?何それおいしいの? Perl基礎文法最速マスター - サンプルコードによるPerl入門 Route 477... http://d.hatena.ne.jp/thinca/20100

    Big Sky :: モテる男のVim script短期集中講座
  • Big Sky :: Vimで動くゲーム作った

    最近Vim界隈で色々出来事がありまして、その色々を起こした数名の内の1人です。 vim-jp » Vimのユーザと開発者を結ぶコミュニティサイト vim-jpはVimと日・日語に関わるあらゆるリソースを集中させることを目的としたコミュニティサイトです。vi は、おそらく全てのUNIX系 OS 上で使えるテキストエディタです。世界には、さまざ... http://vim-jp.org/ 開発者やユーザによっては良い出来事だと信じています。 そのサイトでご紹介した記事 vim-jp » Vimで動くゲーム 最近、Vim scriptで書かれたゲームが登場し始めています。今日はその中でも有名な物をご紹介します。TeTrIs.vim : A tetris game in pure vim ご存知テトリス。「ピ... http://vim-jp.org/blog/2011/09/20/games

    Big Sky :: Vimで動くゲーム作った
  • Big Sky :: モテるvim女子力を磨くための4つの心得

    こんにちは、ホストクラブ「今夜もvim vim」でホストをしていますmattnです。私は補完も使わないしバッファセレクタも使いませんが、ネタプログラミングについてはプロフェッショナル。今回は、モテるvim女子力を磨くための4つの心得を皆さんにお教えしたいと思います。 1. 「終了出来なーい」と言っておく あえてインサートモードのままにしておき、visualbellを鳴らす様に設定しておきましょう。 そして飲み会の場で好みの男がいたら話しかけ、わざとらしくvimを起動し「あ~ん! このテキストエディタマジでチョームカつくんですけどぉぉお~!」と言って、男に「どうしたの?」と言わせましょう。言わせたらもう大成功。「終了できない~!:wqってなにぃ~!ピーピーって音がなるだけ~!ぷんぷん(怒)」と言いましょう。 だいたいの男は自分の専門性をアピールしたがる習性があるので、横からESCキーを押しに

    Big Sky :: モテるvim女子力を磨くための4つの心得
  • Big Sky :: C++でcoutやcerrの挙動を変える。

    先日twitterで「C++でデバッグする時、よくやるよね」って言ったら結構知らない人がいたのでここでも紹介してみる。 既存のコードでcout/cerrを使ったデバッグ文がわんさかあって、これログファイルとして出力したいな...って場合ありますよね。 そんな場合 #include <iostream> #include <fstream> using namespace std; int main() { // こんなの ofstream ofs("debug.log"); cout.rdbuf(ofs.rdbuf()); // いれとく cout << "debug string" << endl; } こうしておくと、その後のcoutへの出力が全てdebug.logというファイルへ出力される。 なおrdbufを元に戻すには #include <iostream> #include <f

    Big Sky :: C++でcoutやcerrの挙動を変える。
  • Big Sky :: phantomjsをwebkitgtk+で書いてみた。

    最近phantomjsなんて物が出てきて結構便利そうなのでいろいろと遊んでます。 PhantomJS: 「最小限なheadlessのWebKitベースのJavaScriptツール」 - karasuyamatenguの日記 headless=スクリーンがない=コマンドと考えればいい。要はブラウザから画面と取り除いてJavaScriptによるスクリプティングを可能にしたコマンドツール。逆に言うとDOM+JavaScript+Networkingをコマンドにしたもの。... http://d.hatena.ne.jp/karasuyamatengu/20110126/1296066287 phantomjs - Project Hosting on Google Code PhantomJS is a minimalistic, headless, WebKit-based, JavaScri

    Big Sky :: phantomjsをwebkitgtk+で書いてみた。
  • Big Sky :: node.jsでtwitter上に流れる画像をパラパラ見せるサーバを作ってみた。

    こんばんわ。node.jsやってないとjavascriptのもぐりだと言われている昨今、いかがお過ごしでしょうか。 個人的には node.js は2回くらい飽きてしまって、3周目くらいです。 よく考えたらこのブログでは一度も node.js に触れてなかったなーと思ったのと、最近触ってないから忘れてそうだな...という思いからエントリにしてみました。 node.js が面白いと言われている理由の一つに非同期処理があります。そして非同期を面白くする題材として websocket があります。今日はその websocket を使って、サンプルを作ります。 物としては、twitter の filter stream から、instagr.am と picplz.com の画像URLを収集し、それをクライアントにブロードキャストします。クライアントはそれを受けて Growl 風にポップアップ表示す

    Big Sky :: node.jsでtwitter上に流れる画像をパラパラ見せるサーバを作ってみた。
  • Big Sky :: javascriptを難読化するapache filterモジュールmod_aaencode書いた。

    記号プログラミング大好きっ子の皆さん、こんにちわ。 Advent Calendarで書いてもよかったかもしれませんが、どちらかと言うと逆かなーとか思ったのでこちらで。 aaencodeと言えば、はせがわさんが作ったjavascript向けの変態難読化スクリプトの事ですが、これの利用価値として以前から考えていたapacheモジュール化をやってみました。 サーバ上のjavascriptファイルを可視状態で編集してもクライアントからは難読化されて見えるという代物。実装としてはapacheのOutputフィルタモジュールとなります。 aaencodeは実装としては結構簡単な作りなのでソース全体を公開します。 /** * mod_aaencode -- apache filter module encoding to japanese style emoticons. * * AUTHOR: *  

    Big Sky :: javascriptを難読化するapache filterモジュールmod_aaencode書いた。
  • Big Sky :: VimmerなPerl開発環境

    えーっと、IDE使ってません。ごめんなさい。 PerlをIDEで書いてる人、どれくらいいるんだろう。何使ってるんだろ。 私はLinuxでもWindowsでもVimを使ってます。Perlってサーバで使われる事が多いし、サーバだとsshで入る事が多いだろうし、まぁXの転送やVNCやそれっぽいのでグラフィカルに操作しても良いけど、正直PerlのドキュメントもテキストベースだしPerlで入力補完出来るグラフィカルエディタもまず無いと思ってる。 で、私がVim上で使ってるPerlの開発を「200倍便利にするスクリプト」を紹介。 perldoc.vim perldocはPerlのオンラインマニュアルなんだけど、これを一々ターミナルに戻ったりして引いてると時間のロス。screenで分割して開いてもいいんだけどscreenの画面間移動よりもVim内でのウィンドウ間移動の方が操作感が統一出来てて良い。 そこ

    Big Sky :: VimmerなPerl開発環境
  • Big Sky :: JScript.NETでスレッド

    JScript.NETMicrosoftが.NET Framework向けに拡張したJavasSriptで、Common Language Runtime(CLR)上で動作するJavaScript実装です。 CLR上ではC#、VB.NET等が動作しますが、JScript.NETは言語がJavaScriptという事もあって実はC#やVB.NET等と同等に使えない機能がいくらかあります。 JavaScriptは動的言語です。オブジェクトにプロパティを生やしてメソッドにしたり、prototypeを弄ったり、eval()で関数を生成したりも出来ます。つまりコンパイルするとは言えど、型が動的に変えられる言語です。 その為、.NET Frameworkの機能の一つであるDelegateが使えません。.NET FrameworkのThreadはDelegateという関数型拘束によりスレッドを安全に呼び

    Big Sky :: JScript.NETでスレッド
  • Big Sky :: JSONをvalidation出来る正規表現。

    追記 os0xさんにjson2.jsで使われている手法である事を教えてもらいました。 正しくはエスケープが必要。 以下フォーラムで議論されている内容から拝借 validating json unnecessarily is killing firefox - jQuery Forum // Try to use the native JSON parser first if (window.JSON && window.JSON.parse) { try { return window.JSON.parse( data ); } catch (err) { jQuery.error( "Invalid JSON: " + data ); } } else { if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-f

    Big Sky :: JSONをvalidation出来る正規表現。