この記事は Vim アドベントカレンダー 2012 の 19 日目の記事です. 昨日はhrsh7th さんの vim-versions についての記事 でした. たくさんプラグインを入れたり設定を書いたりしていると Vim の立ち上がりはどんどん遅くなってしまいます. 一度 Vim を立ち上げたらそのあと閉じることが無いスタイルの人はそれほど気にならないかもしれませんが, シェルからターミナル内で Vim を開いたり閉じたりするスタイルの人にとっては起動速度はとても大事です. 今年のアドベントカレンダーでは,素敵なプラグインを入れて Vim の機能を強化する記事がたくさん紹介されているので, ここではそういった便利さをなるべく維持しつつ,起動時間を抑える方法を紹介します. (1/3 追記) neobundle.vim がバージョン 3 になり,ファイルタイプ・コマンド・関数名・マッピングの
こんにちは、こんにちは。カジュアルにPerl使っているkoba04 です。 Webアプリを作っていて、確率で処理を分けたり複数の要素を重み付けて選びたいことってありませんか? 真っ先に浮かぶのはガチャみたいなものですが、それ以外にもランダムでバナーを出し分けてみたり、接続するサーバーを重み付けて選んだり色々と使い道が思い浮かびます。 そんな時に使える二つのモジュールをご紹介したいと思います。 詳しくは下記の作者の方のブログを見てください。 Sub::Rate Data::WeightedRoundRobin 以上! でもいいのですが..順番に紹介してみたいと思います。 モジュールなしで実装 優先度を付けてデータを選びたい時はrandを使っての実装が思い浮かびますが、バグりそうな気もするし面倒だし出来れば書きたくないです。 (書き方が悪いという説もある) # 結果をdumpする関数 sub
2009/6/23 更新( Debian5 での準備追加) 2008/4/29 更新(ブロックデバイス追加) 2008/3/18 作成 目次 [1] はじめに [2] 準備 [3] 簡単なモジュール [4] モジュールパラメータ [5] procファイルシステム [6] キャラクタデバイス [7] ブロックデバイス [1] はじめに Linux(kernel-2.6系)のカーネルモジュール(ドライバ)を作成する。 テストした環境は次の通りである。 OS: Fedora7 カーネル: kernel-2.6.23.15-80.fc7 OS: Debian5 カーネル: kernel-2.6.26-2-686 [2] 準備 (2-1) Fedora7,Fedora8 の場合 Fedoraでカーネルモジュールを作成するにあたり、まず fedora wikiを参考にしながら カーネルモジュールをコン
ベストセラー書の改訂第2版。前半はWiresharkのリファレンスです。Wiresharkのさまざまな機能や活用テクニックについて解説します。後半はパケット解析の実践的な教科書です。TCP/IPの主要なプロトコルを解析する方法や、ネットワーク遅延をはじめとしたさまざまなトラブルの解決方法を、実際に取得したパケット情報の実例を使って詳しく解説します。日本語版ではTCP/IP以外のパケット解析、具体的にはUSBポートを流れるデータのパケット解析についての解説と、pcap-ng形式 ←→ pcap形式のデータ変換についての解説を巻末付録として追加しました。Wireshark 1.8対応。 目次 監訳者まえがき 賞賛の声 まえがき 1章 パケット解析とネットワークの基礎 1.1 パケット解析とパケットキャプチャツール 1.1.1 パケットキャプチャツールの評価 1.1.2 パケットキャプチャツール
01. vimスクリプトでHello World — 作者: 小見 拓 — 最終変更 2012年01月09日 03時35分 02. vimスクリプトの基本 — 作者: 小見 拓 — 最終変更 2012年01月09日 04時08分 03. 変数 — 作者: 小見 拓 — 最終変更 2012年01月09日 04時08分 04. 変数の操作 — 作者: 小見 拓 — 最終変更 2012年01月09日 04時08分 05. 値の比較 — 作者: 小見 拓 — 最終変更 2012年01月09日 04時08分 06. 制御構造 — 作者: 小見 拓 — 最終変更 2012年01月09日 04時08分 07. エラー処理 — 作者: 小見 拓 — 最終変更 2012年01月09日 04時08分 08. 処理の呼出 — 作者: 小見 拓 — 最終変更 2012年01月09日 04時08分 09. 文字列操
調子に乗って vimrc を書くのに特化した内容のものを書いてみる。取り上げた内容は完全に独断と偏見です。 関連記事: Vimスクリプト基礎文法最速マスター - 永遠に未完成 この記事では vimrc を書くにあたって知っておくべき概念や機能を解説します。Vim 自体の操作方法に関しては触れません。 基礎 バッファ バッファは、ファイルを編集するための論理的な領域です。Vim で新しくファイルを開くと、新しいバッファが作成されてそこにファイルの内容が読み込まれます。 ウィンドウ ウィンドウはバッファを画面に表示するための物理的な領域です。分割することができ、1つの画面に複数のウィンドウを表示できます。 タブページ タブページを使うことでウィンドウの配置を保持したまま複数の画面を切り替えることができます。 タブ文字と区別するためか、タブページと呼ばれています。 モード Vim の中でも知って
http://0xcc.net/blog/archives/000043.html 作ってみた。 Ruby (Array) VBScript (Array) VimScript (list) a = [1, 2, 3] a = Array(1, 2, 3) let a = [1,2,3] a.length UBound(a) - LBound(a) + 1 len(a) a.empty? UBound(a) = -1 empty(a) a.push(x) ReDim Preserve a(UBound(a) + 1) a(UBound(a)) = x call add(a, x) a.unshift(x) call insert(a, x) a.pop ReDim Preserve a(UBound(a)-1) unlet a[-1] a.shift unlet a[0] a.concat
2012-09-02 quickrun.vim + Project::Libs の組み合わせが便利 perl vim VimでPerlを書いている人なら、編集中のテストでquickrunして「Can't locate ...」が出てやる気をくじかれた経験があると思います。パス通ってないからそりゃこうなりますね。で、そういうときは、Vimを抜けてプロジェクトのトップディレクトリでproveするか、テストに use lib '../lib'; を書き足したりするわけですが、いちいちこの作業するのは面倒くさいし、本筋に関係ないコードでテストを汚したくない。自動にパスを通すのを、Vim側でやってほしい。ではどうするか。結論から言うと、.vimrc にこの設定を書き足せば、自動でパスが通った状態でquickrunできる。(cpanm Project::Libsしてね) let g:quickrun_
普段twitterするときはtwitvimというvimscriptを使ってvimからやってるのだけど、たいがいこういうのって自分の思う機能が実装されていなかったり、違う実装になっていたりする。 TwitVim - Twitter client for Vim : vim online TwitVim is a Vim plugin that allows you to post to Twitter and view Twitter timelines. http://www.vim.org/scripts/script.php?script_id=2204 twitvim - Twitter Client for Vim - Google Project Hosting A Twitter client written in Vim script. See http://vim.sour
I recently got to participate in a psychological experiment for programmers. A friend of mine, Mike Hansen, is doing research on how people comprehend programs. The goal is to figure out some way of measuring what features in programming systems help programmers understand what they are doing, and how this can be used to make systems that lead to higher quality software. Mike is currently running
Vimの起動にかかる時間は本来すごく短い。しかし使い方によっては長く(遅く)なってしまう。そうなる原因と対策を紹介する。 Vimは起動にかかる時間が短いソフトウェアです。この言葉に納得できない人はこの文章の残りをちょっと読んで行きませんか? 「Vimの起動、長い(遅い)なぁ」と感じているあなた、その原因が何か調べたことはあるでしょうか。Vimが遅くなる原因の95%はスクリプトの読み込み&実行にあります。「autoload化する」「–startuptimeを使ったことがある」?なかなかやりますね。でもautoloadは単に遅延させるだけで結局かかる総時間はかわりませんし、startuptimeで主にわかるのは各スクリプトの読み込みにかかった時間です。そのスクリプトがなぜ遅くなっているのか、どうすると速くなるのかを紹介しましょう。 遅くなる原因 回りくどいのはここまでです。遅くなる原因を列挙し
目的 機能を持ったVimスクリプト(プラグイン)を徐々に作る様子を見て、書き方を学習してみよう 作るのはよくあるタイプのプラグイン Javaの単体テスト用クラスファイルを開く(作る)コマンドを作るよ 「ね、簡単でしょう(by ボブ)」と言ってみたい まずは雛形 ひな形としてこんなスクリプトを作ります。 command! -nargs=0 UtestAppend call <SID>UtestAppend() function! s:UtestAppend() echo 'HERE' endfunction " s:UtestAppend() UtestAppendというコマンドを追加 UtestAppendコマンドいが実行されたら ‘HERE’ と表示する ほら、すごく簡単ですね。 Javaだけに作用させる 以下はdiff形式で変更点だけ。 @@ -1,5 +1,17 @@ c
Vim Advent Calendar 2012 1日目の記事になります。 [宣伝] 毎週土曜日 23時から vimrc 読書会を開催しています。 次回は 12月1日(今日!!)の 23時から行います。 内容はだいぶ緩い感じなので、気になる方は覗いてみるといいと思います。 Vim で分からないことを質問するいい機会でもあるので( thinca さんが答えてくれる!)お待ちしていますー!! 概要 さて、今回はわたしが実際にプラグインを作成するときの注意点や流れなんかを簡単にまとめてみたいと思います。 『github で公開』と書いてありますが、git 成分は少なめです。 予め用意しておくといいもの git github のアカウント neobundle neocomplcache neosnippet git は最低限 push commit が操作出来れば問題ないかと思います。 neobu
#5「GitDDLまじイノベーティブ」 tech.kayac.com Advent Calendar 2012 | tech.kayac.com - KAYAC engineers' blog が便利そうだなーと思って。 でもGitと絡めなくても、Webアプリにおいて「現在の環境で使用するデータベース」と「有るべきスキーマの状態を示すDDLファイル」の差分を取って埋めることができればそれだけで十分使える気がする、と思って一つの運用方法を考えてみた。 もちろんGitDDL使っても良いのだけど、SQL::Translatorを使うだけでもある程度は、ということで。 Amon2プロジェクトの例で。 初期設定 $ amon2-setup.pl MyAppとかで雛形プロジェクトを作ると、sqlディレクトリが作られて、そこにDDLを保存する雰囲気になる。そのままsql/mysql.sqlを使っていくこ
Shopify has acquired Threads.com, the Seqiuoa-backed Slack alternative, Threads said on its website. The companies didn’t disclose the terms of the deal but said that the Threads.com team will join… Two senior police officials in Bangladesh are accused of collecting and selling citizens’ personal information to criminals on Telegram.
Linuxではどうやって生のパケットを扱うんでしょうねって話 ★はじめに BSDではbpfを使用して生のパケットをやりとりすることができます。 ところがlinuxのカーネルにはbpfなんてものはありません。 でも、bootpやdhcp, tcpdumpなんかでプロトコル無しなパケットを やりとりしているはずです。いったいどうやっているんでしょう。 ★packetインターフェースってのがあるのよ linuxのアプリケーションでは、ネットワークインターフェースへの入出力は、 すべてsocketインターフェースを使用することになります。 socketを使用するということは、カーネルのサポートするなんらかの プロトコルを使用するということです。生のパケットをやりとりするためには packet interface(PF_PACKET)というプロトコルドライバ?を利用します。 ★具体的にはこんな感じ
書籍『Rubyソースコード完全解説』はインプレスダイレクトで御予約・御購入いただけます。 書籍紹介ページ: http://direct.ips.co.jp/directsys/go_x_TempChoice.cfm?sh_id=EE0040&spm_id=1&GM_ID=1721 HTML 版 『Rubyソースコード完全解説』の本文を HTML 形式で無償公開しています。 (2004-02-17) 全章を公開しました。 初校の修正を紙上で行ってしまったたため、現在公開しているのは初校段階の原稿です。 従って書籍では修正されているところがまだ修正されていない場合があります。 順番に修正していくつもりではいますが、いつ修正できるとは断言できません。 予め御了承願います。 なお、その逆に一部の章が出版時より新しい場合もあります。 オンラインで閲覧 tar.gz 形式でダウンロード zip 形式で
$Id: readingcode.html,v 1.13 2003/12/06 00:01:08 aamine Exp $ 2006-05-02 gonzui 追加。thanks: 冨山さん 2003-12-03 ltrace と sotrace を追加 2003-12-03 ツールのところに DDD を追加。thanks: 和田さん 2003-05-27 VCG, SXT などについて追加。thanks: 梅沢さん 2003-05-27 これもすっかり忘れていた strace, ktrace, truss, etags などについて追加 2002-08-30 すっかり忘れていた ctags を追加 2002-07-07 匿名希望さんからメールでいただいた情報を追加 (動的コールグラフ) 2002-06-13 日記経由でいただいた意見をもとに文章を追加。thanks: 柳川さん、まつもとさ
2008-01-09 15:51:08 +0900 (275d); rev 19 これは草稿です。 いずれ正式なところに移す予定。 対象とする読者 本稿は以下のような読者を対象にしています。 Ruby の拡張ライブラリを書いたことがない C プログラミングがそれなりにできる Ruby プログラミングがそれなりにできる 2 に関して。 「ポインタって何?」レベルの人は不可です。 構造体とポインタをちゃんと使ってプログラミングのできる人を対象とします。 3 に関して。 以下のプログラムの結果がどうなるか、 考えるだけでわかるようにしておいてください。 class C p self # 何が表示される? def C.m puts '1' p self end def m puts '2' p self end end C.m # 何が表示される? C.new.m # 何が表示される? このマニュ
30週に渡り多彩な Linux カーネル開発者を紹介していくシリーズの第5弾は、Linux ステーブル (安定版) カーネルのメンテナーで、Linux Foundation フェローでもある Greg Kroah-Hartman です。 これまでに紹介した開発者のプロフィールは、こちらに掲載されています。 お名前をお願いします。 Greg Kroah-Hartman です。もっぱら Greg K-H として知られています。発音できないからでしょうね。 Linuxコミュニティでのあなたの役割や、担当のサブシステムについて教えてください。 私は Linux カーネルの ステーブル カーネル リリースを管理しています。また、USB、ドライバー コア、ステージング ドライバー、シリアル、tty、char、その他マイナーなドライバーのサブシステム メンテナーでもあります。 報酬はどこから得ていますか
以下の文章は、Miguel de Icaza による What Killed the Linux Desktop の日本語訳を著者の許諾を得て公開するものである。 本文については、八木の野郎さん、Shiro Kawai さん、猪股健太郎さんに誤訳の訂正をいただきました。ありがとうございます。 これは実話である。 うちの Linux マシンの /home ディレクトリがあるハードディスクがおかしいので、それを新しいのに換えなければならなかった。このマシンは机の下にあるので、ケーブルを全部抜き、マシンを外に出し、ハードドライブを交換してまたプラグを全部つなぎ直さなければならなかった。 至極ありきたりなことだ。AC 電源をつなぎ、キーボードをつなぎ、マウスをつないだが、スピーカーケーブルを手に取ると、僕はそれをつなぐのはやめた。 なんでオーディオ設定なんかに手間かけなきゃいけないの? オーディオ
Grokking V8 closures for fun (and profit?) に、ほんの少しだけ触れられている話なんですが。 ごく最近まで V8 には、オブジェクトリテラルの中で関数リテラルを使った場合に非常に遅くなる(というかGCが多発する)問題があった。 たとえば、 function doit() { for (var i = 0; i < 1000; ++i) { for (var j = 0; j < 1000; ++j) { var o = { f: function () { return i + j; } }; } } } doit(); というコードを node-0.6.19 で実行すると、以下のように mark-sweep GC が大量に発生して処理に時間がかかっていることが分かる。 $ time /usr/local/node-0.6.19/bin/node -
この前飲み会でこんな話をしていたのでまとめてみます。 終身雇用が崩壊し、昨今では会社の評価制度では成果主義というのが普通になりつつあります。ただ成果主義とは言いつつ何を持って成果とするかは議論の余地があると思います。 例えば営業職であれば分かりやすく売上目標というものがあります。企画職の場合でも売上やその他のKPIを目標設定することで分かりやすく評価出来ると思います。ではエンジニアの場合はどうでしょうか。 開発したシステムが実際に軌道に乗って数字を出し始めるまでには相当時間がかかります。(最近のゲームなどは除く)またその数字が出るか出ないかは実際営業や企画側の問題が多分にある為、こういったケースでエンジニアを数字で評価するとシステムの良し悪しとは関係なく単純に運がいいか悪いかだけになってしまいます。もちろん企画に意見が反映出来る環境であったり営業に指示できる環境であればエンジニアでも数字を
新卒採用のイベントで『知的ヘンタイ六番勝負』というのをやっていまして、その『第三戦 大規模インフラ・解析勉強会』にてインフラについて話してよ、と人事オファーをいただきまして発表した次第でございます。 エンジニア志望とはいえ、不特定多数の人間に対してインフラの話と一口で言われても、誰が何をどれくらい理解してるのかわからないので厳しい案件ではありましたが、せっかく来ていただくので真面目に張り切った結果、質疑応答含めて1時間弱に渡る発表+風邪でノドが潰れた資料がこちらになります。 補足 新卒の方々に向けて これまで新卒の人に関わる機会がなく、インフラについてどの程度理解があるのか全くの不明でしたが、思っていたより勉強しているなという感触と、良いエンジニアになれそうな匂いを発している野郎も結構多かったな、という印象でした。 資料でも触れてますが、WEBエンジニアを目指した時に、何を武器に何エンジニ
UNIX系のOSで利用できるWebサーバの性能測定ツールといえば、Apache Benchやhttperfを思い浮かべる人が多いのではないでしょうか。これらの計測ツールは、残念ながら最近の高速なWebサーバを計測するには非力です。この記事では、高速なWebサーバにも負けないweighttpの使い方を紹介します。 weighttpとは何か weighttpは、Webサーバlighttpdの開発者が実装したWebサーバの性能測定ツールです。以下のような特徴を持ちます。 Webサーバのスループット(リクエスト毎秒)を測定できる ネイティブスレッドを複数起動し測定性能を向上できる libevを利用することで、モダンなポール・システムコールを利用する Apache Benchによく似たコマンドラインオプションを持つ 2.は Apache Benchやhttperfにはない機能です。ここが決定的に異な
この記事は Vim Advent Calendar 2012 : ATND 17日目の記事です。 前日は@syootaroさんのでした。 今年、ぼくの周りで「Vimを使ってみようと思う」と人が3人くらい出てきました。 その人達から「おすすめのプラグインや設定ないですか」とか 「Vimってこういうこと出来ないの?」という質問を受けることがありました。 また、私の操作を見て「何それどうやったんですか」という質問もいくつか受けました。 毎回説明するの面倒くさいのでこの経験を生かし、今後も増えることが間違いない新世代Vimmerに向けて 「ぼくがおすすめする基本操作と初期設定とプラグイン」を書いてみたいと思います。 ほとんどただのリンク集となっていますが。 対象は「Vimを触り始めてちょっと経った」程度の人です。 何より大事なこと viじゃなくてVimです。 前提 Vimはインストール済みであると
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回はgfxこと藤吾郎さんで、テーマはPerlの内部構造です。 内部構造を覗く Perlで開発をしていると、ときどきわかりにくい現象に遭遇することがあります。たとえば、あるデータをJSON(JavaScript Object Notation)にシリアライズするとき、数値としてシリアライズしてほしい値が文字列としてシリアライズされてしまう。あるいは、エンコーディングが正しいはずなのに文字化けが起きる。こんなときは、思いきってPerlの内部構造を覗くことで、何が起きているかを突き止めることができます。 本稿では、Perlの内部構造について解説します。言及するperlはバージョン5.16.0(2012年5月21日リリース)です。また、ターミナルのエンコーディングはUTF-8を想定しています。なお、Perl処理系はC言語で書かれてい
2012年12月18日10:00 【おじゃまします】株式会社はてなさんの東京オフィスにおじゃましました! カテゴリ Tweet 皆様こんにちは!製品広報見習いのふじこです。 クリスマスソングやイルミネーションが眩しい季節になりました。 某チキンやさんのお肉が恋しくなります。 サンタさん! iPad miniが欲しいd(ry さて今回は先月中目黒から表参道にオフィスを移転した 株式会社はてなさん の東京オフィスにおじゃましてきました!! はてなブログやはてなブックマークなどの 業界最大規模のソーシャルブックマークサービス、ブログサービスを運営されております。 また、FacebookやTwitter等のソーシャルメディアを集客ツールに 活用するマーケティングや、企業の広告販売も提供されています。 最近では「とびだせ どうぶつの森」とのキャンペーン企画を実施していて T
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く