タグ

ブックマーク / www.timedia.co.jp (28)

  • GHOST 脆弱性は如何様に使うのか | Webシステム開発/教育ソリューションのタイムインターメディア

    先日 GHOST と呼ばれる glibc の脆弱性が発表された。なんでも、「リモートから任意のコードを実行できる可能性がある」らしいではないか。しかも様々なプログラムで利用されているライブラリ部分の問題とあって、影響範囲がとても広い。なかなか厄介なことである。 はて、しかし一体全体どうやってリモートから任意のコードを実行しようというのだろう? 話を聞くに、たかが数バイトの情報を範囲外のメモリに書き込める可能性があるだけだという。実際それだけのことでサーバーの乗っ取りなどできるものなのだろうか。そんなわけで、その疑問に答えるべく、記事では以下の URL で解説されている実際の攻撃方法を若干端折って紹介してみようと思う。 http://www.openwall.com/lists/oss-security/2015/01/27/9 なお、記事はこの脆弱性そのものに対する緊急度などについて言

    GHOST 脆弱性は如何様に使うのか | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2015/01/31
    バッファオーバーラン攻撃の解説
  • 突然変異が進化の原動力 | Webシステム開発/教育ソリューションのタイムインターメディア

    遺伝的アルゴリズムは、生命の遺伝そっくりの方法で問題解決を図る。 個体(染色体)を進化をさせて目的の個体を得る。 このちき、正常系の遺伝と、異常系の遺伝を用意する。 正常系の遺伝では、2つの個体から、両方の性質を普通に混ぜ合わせた個体をつsくる。 でも、正常系の遺伝だけでは、凡人と秀才しかいないつまらない世界になり、進化は止まってしまう。 進化が停滞してしまうのを打破するために、突然変異という仕掛けが必要である。 親の染色体の一部をランダムに変更する。すると、ほとんどの場合は酷い状態になってしまい、捨てられる。 しかし、まれに非常に優秀な個体ができる。 そして、この優秀な個体は、正常な遺伝によって子孫に広がっていく。 正常系と異常系のバランスが非常に重要である。 正常系だけで解けるような問題に遺伝的アルゴリズムをわざわざ使うのは無駄だろう。 どうやったら解けるかどうか分からない、手がつけら

    突然変異が進化の原動力 | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2013/05/06
  • Vim の矩形選択の痒いところに手を届かせる | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 Vim の矩形選択 は便利です。痒いところに手が届く感じの便利さです。 例えば以下のようなコードを編集していて、 一時的に真ん中のブロックをコメントアウトして無効化したくなったとしましょう。 やり方は色々あります。 対象が1行だけなら I# <Esc> で十分です。複数行あるなら最初の行を I# <Esc> でコメントアウトした後に j. を繰り返していけば良いですね。数が多くて j. の連打が難しい場合は vip で選択して :s/^/# /<Enter> という手もあるでしょう。 これ以外に矩形選択を使う方法もあります。 <C-v> で矩形選択を開始し、j 等を連打して適当な範囲を選択し、I# <Esc> こうすれば選択範囲の各行の頭にまとめてコメント文字を入力することが出来ます。 しかし、現実には「 j 等を連打する」といった優雅さに欠ける操作はしません。 ブロック単位でテキス

    Vim の矩形選択の痒いところに手を届かせる | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2012/10/06
  • アニメ化決定! すべての Vim プラグインマネージャーは道を譲れ!!!!!! | Webシステム開発/教育ソリューションのタイムインターメディア

    アニメ化決定! すべての Vim プラグインマネージャーは道を譲れ!!!!!! #editorwar#vim 2012年 04月 01日 kana 問題 一旦Vimがメキメキと使えるようになるとプラグインもバリバリと導入したくなります。 最初は数個のプラグインを試しに使っているだけだったのが、 時を経るにつれて数多のプラグインを使うようになってくるものです。 こうなると問題になるのはプラグインの管理です。 数が増えてくると新しいものをインストールするのもインストール済みのものを新しいバージョンに更新するのも億劫になります。 そこで必要になるのが Vim プラグインを管理するためのツールです。 この手のツールは2008年8月に公開された vim-pathogen が最古だと思われますが、 とりわけ民衆に認知され始めたのは YAPC::Asia 2009 で発表 された Vimana からだと

    アニメ化決定! すべての Vim プラグインマネージャーは道を譲れ!!!!!! | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2012/10/01
    「既存の実装は全て使用するプラグインのバージョンを管理しません。これは複数の異なる環境で同一の設定を使用することが不可能ということです」このためにずっとsubmodule使ってたー Windows対応じゃないけどどうせもう
  • 名状し難いコードを書く(コメント編) | Webシステム開発/教育ソリューションのタイムインターメディア

    あらすじ 長年プログラムを書いていても、良いコメントを書く技術ってぇのはなかなか身に付かないもので、 良かれと思って書いたコメントでも後々読み返すと書いた当人ですら首を傾げる始末。 長屋に住む八五郎もそんなSEの一人。 ある日、出社すると親方エンジニアがカンカンに怒っている。 どうやら先週末の退社前にレビューしてもらおうと push したコードについてらしい。 特に不味いところはなかったはずだが、はて、何が悪かったのだろうかと親方のデスクモニターを覗き込むと── さっぱり役に立たない <summary> 八五郎は普段から Visual Studio で C# のコードを書いている。 こいつにはXML Documentation Commentsというのがあり、 一定の書式に従って型やメンバーにコメントを書いておけば、 インテリセンスで有意義なメッセージが表示されたりAPI リファレンスの

    名状し難いコードを書く(コメント編) | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2012/08/05
  • bash: readとパイプと環境変数 | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 シェル(ただし Bourne Shell 系に限る)はお友達です。 一見すると役に立たないように思えるコマンドでも、 組み合わせ次第で複雑な処理をこなすための道具になります。 例えば行毎に ID が記載されているファイル ids があったとしましょう。 各 ID を SHA1 ハッシュ値に置き換えたものが必要な場合、 以下のコマンドで生成することができます (SHA1 ハッシュ値の算出には shasum を使っています): cat ids | while read id do echo -n "$id" | shasum done | cut -d ' ' -f 1 >ids.sha1 このように、行単位で何か処理を行う場合には read を使います。 ちょっとしたことなら sed や awk で済ませられるのですが、 上記のように「行毎にコマンドを実行して云々」をやろうとすると無理

    bash: readとパイプと環境変数 | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2012/05/22
    これでひっかかって泣いてる
  • 僕が一番 Vim のタブページをうまく使えるんだ(GNU screen 連携編) | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 僕が一番 Vim のタブページをうまく使えるんだ(カレントディレクトリ編)で述べたように、Vimのタブページはとても便利ですが、ちょっと工夫するだけでさらに便利になります。 ところで、一般に Vim を使うような方は黒い画面を眺める機会が多いと思います。 また、端末をより便利に使うために GNU screen 等の端末マルチプレクサーを使用している方も多くいるはずです。 すると、 Vim でソースコードを編集しつつ、時折端末に切り替えて作業する……ということが多発します。 この時、以下の点で不便に感じることがあります。 端末をアクティブにすることが面倒(GUI 版の Vim を使用している場合)。作業用のウィンドウに切り替えることが面倒(GNU screen 内で Vim を起動している場合)。シェルで作業ができる状態になったとしても、 Vim で注目しているカレントディレクトリに移

    僕が一番 Vim のタブページをうまく使えるんだ(GNU screen 連携編) | Webシステム開発/教育ソリューションのタイムインターメディア
  • 僕が一番 Vim のタブページをうまく使えるんだ(カレントディレクトリ編) | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 Vimのタブページはとても便利です。 例えばウィンドウを分割して複数のファイルを並行してにらめっこしていたとしましょう。 その最中に誰かからの依頼等で全く関係のない作業をやることになったとします。 このとき、 新しいタブページを開いて、そこで作業を進めて、作業が完了したらタブページを閉じて、先程まで行っていたにらめっこ作業を再開する という形で中断された作業をスムーズに再開することができます。 やりましたね。 しかし、これだけではまだタブページを全力全開で活用しきっているとは言えないのではないでしょうか。 例えば以下のような状況を考えてみましょう: あなたはプロジェクトAとプロジェクトBの両方を開発しています。AとBは相互に連携しています。大抵はAまたはBのどちらかの配下のファイルだけを編集するだけで十分です。時には双方の配下のファイルを並行して編集する必要があります。 このような状

    僕が一番 Vim のタブページをうまく使えるんだ(カレントディレクトリ編) | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2012/05/03
    kanaさんこれ公開してたのか。と思ったら:TabpageCD {dir}じゃなく:cd {dir}でいいようになってる。すばらしい / と思ったけど自分で改造してた機能が使えなくなるので諦めた https://twitter.com/#!/tyru/status/197974445858619392
  • 僕が一番 Vim の正規表現をうまく使えるんだ(\zs \ze 編) | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 Vim の正規表現はとても豊富で、ベーシックなものからアドバンスドなものまでかなりの道具が揃っています。 これを駆使すればありとあらゆる……は言い過ぎですが、 世の中のテキスト処理の九分九厘を快適に行うことができます。 ただ、あまりにも数が多いので、一体どこから覚えていけばいいのか困りますし、 :help に記載されているものの中には今後の人生で活用する機会があるかどうか分からないものもあります。 手っ取り早く正規表現力を高めて生産性を向上するには一先ずどれを覚えれば良いのでしょうか。 解答 まずは\zsと\zeを覚えましょう。 この2つは正規表現のマッチの開始位置/終了位置を指定することができます。 これだけでは何のことやらさっぱりですが、以下のように応用することができます: 「foobar」の「foo」を指定 foo\zebar で表現できます(Perl 語で言うところの foo

    僕が一番 Vim の正規表現をうまく使えるんだ(\zs \ze 編) | Webシステム開発/教育ソリューションのタイムインターメディア
  • Vimでカーソル行のテキストを簡単に選択/処理する | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 世間一般のエディタではカーソルを行頭や行末に移動するキーが C-a だったり C-e だったり Home だったり End だったりと、 それなりに押下し易い配置になっているのですが、 Vim では何を思ったのか ^ と $ という謎のキー割り当てになっています。 この謎のキー割り当てにはそれなりの理由があると思われるのですが、 時々不便に思う場合があります。 例えば「カーソル行のテキストをコピーして他のアプリケーションにペーストする」というシチュエーションを考えてみましょう。 コピー自体は "*yy ですぐできるのですが、これでは改行文字が含まれるため、ペーストした際に悲しい結果を招くことが多々あります。 ^vg_"*y や 0v$h"*y とすれば改行文字抜きでコピーはできるものの、 キー押下難易度の高さにストレスが溜まってしまいます。 どうにかして快適にカーソル行のテキストを選

    Vimでカーソル行のテキストを簡単に選択/処理する | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2012/01/18
  • Rubyistよ、irbを捨ててPryを使おう | Webシステム開発/教育ソリューションのタイムインターメディア

    Pryは結構前からgithubのリポジトリを追いかけている人達には認知されていましたが、RailsCastsでも紹介されたことから、Ruby界で一気に広がりを見せています。 ちなみに発音はpra'i(ぷらい)です。英単語で「覗く」などを意味します。 今回はそんな便利なPryについて少し紹介したいと思います。 Pryはirbの代わりになるREPL Pryを一言で説明すると、irbと同様にREPL環境を提供してくれます。 では、さっそくインストールしてみましょう。

    Rubyistよ、irbを捨ててPryを使おう | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2011/12/27
  • Reactive Extensions で非同期処理を簡潔に記述する | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 今時の若者ならばHeroku等を利用して手早く Web アプリを作成・公開することが日常茶飯事です。 バックエンドもフロントエンドも今はフレームワークが充実していますから、 高度な処理を簡潔な記述で行うことができます。 しかし非同期処理となると話は別です。 例えばフロントエンドを作るとなると、まずjQueryを使うことになるでしょう。 jQuery は洗練された API で DOM 操作を簡単に行うことができますし、 非同期通信についても $.ajax を使えば煩雑なことほぼ知らずに済みます。 例えばWikipediaの検索フォームは入力補完が行われるようになっており、 検索フォーム文字が入力されると関連するページのタイトルが候補として表示されます。 このような処理を書くとなると以下のようなコードになるでしょう: var showCompletionMenu = function (

    Reactive Extensions で非同期処理を簡潔に記述する | Webシステム開発/教育ソリューションのタイムインターメディア
  • Vim Version Manager で複数のバージョンの Vim を簡単に管理する | Webシステム開発/教育ソリューションのタイムインターメディア

    ### 問題 ある程度 Vim を常用していると、それなりの頻度で以下のような問題に遭遇します: * HEAD を追いかけていたら手ひどいミスに遭遇した。少し昔のパッチレベルにまで巻き戻したい。 * [最近のバージョンに更新したらプラグインの動作が変わった](https://github.com/kana/vim-textobj-user/pull/3)。どのパッチレベルで問題が起きたか調べたい。 * そもそも最近のバージョンに更新するのが何だか面倒。 * 複数のバージョンを並行して利用できるようにしたい。 しかしこのようなことを手動で管理するのは面倒です。 どうにかしてこのような作業を簡単に行えないものでしょうか。 ### 解決 [Vim Version Manager](https://github.com/kana/vim-version-manager) (以下 VVM)を使います

    Vim Version Manager で複数のバージョンの Vim を簡単に管理する | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2011/09/01
    perlbrewならぬvimbrewを画策していた時期が僕にもありました。1日とやる気が持ちませんでした。すばらしい。 / !? >「次回は Emacs 編です」
  • Mercurialでアレを元に戻す108の方法 | Webシステム開発/教育ソリューションのタイムインターメディア

    前回[@kana1さん](http://twitter.com/kana1)による[「gitでアレをもとに戻す108の方法」](/tech/git-undo-999)が大反響で世間はやはりgit使いが多いのかと再認識しました。 私も普段はgitを使っていますが、お仕事ではMercurialを仕事で使っているのでのっかって書き連ねてみましょう。 ### 問題1: ライブラリの新機能を試すためにあれこれ適当なコードを書いていくつかコミットした。でももういらない さて初っぱなから行き詰まりそうです。基的にMercurialは「コミットを積み重ねたものを後から編集する」ことに弱いのです。 MQを使って解決してみましょう。 $ hg update -r {revision} $ hg qimport -r {revision+1}:tip $ hg qpop –all $ hg qseries |

    Mercurialでアレを元に戻す108の方法 | Webシステム開発/教育ソリューションのタイムインターメディア
  • gitでアレを元に戻す108の方法 | Webシステム開発/教育ソリューションのタイムインターメディア

    以前gitで一度行った変更をなかったことにする方法4つを紹介しましたが、 日常的に git を使用していると他にも様々な 「なかったことにしたい」「元に戻したい」 という状況に遭遇します。 そのひとつひとつについて対処方法を紹介していきます。 目次 問題1: ライブラリの新機能を試すためにあれこれ適当なコードを書いてみた。でももう要らない。問題2: トピックブランチをマージしたけど実はまだ不完全だった。マージをやり直したい。問題3: リリース後に発覚したバグ。原因は30日前に自分が行ったコミットだった。なかったことにしたい。問題4: 新しいコミットしようとして間違えてgit commit –amendで書き換えてしまった。元に戻したい。問題5: 色々作業していたら作業ディレクトリの内容が混沌としてきた。一度綺麗な状態にしたい。問題6: 作業ディレクトリにゴミファイルが溜まってきた。一度綺麗

    gitでアレを元に戻す108の方法 | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2011/08/21
    問題17はgit-shredってスクリプト作ったりしました https://github.com/tyru/gittools/blob/master/git-shred / あわせて読みたい(「各git-somethingでのコンフリクト時のリカバリ」のとこ) http://blog.s21g.com/articles/928
  • VimとExcelを組み合わせて全く新しいSQLクエリーを生成する | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 ソフトウェア開発はクリエイティブでエキサイティングなものではありますが、いつもそうだとは限りません。 時には泥臭い作業が必要になることもあります。 例えばとある企業で運用されている業務用アプリケーションのメンテナンスを任されていたとしましょう。 時折 「△△部署が○○部署と☆☆部署に分割されたので関連データを移行してください。 対応関係は添付のExcelファイルを参照してください」 のような依頼が舞い込んできます。 これが5個程度なら手作業でSQLクエリーを書いても構わないのですが、 さすがに1万と2千個くらいになると手作業ではやっていられません。 となると何らかの方法で貰ったデータからSQLクエリーを生成することになります。 しかしこのSQLクエリーの生成が案外面倒だったりします。 貰ったデータがCSVの場合、これが素朴なデータならエディターにコピーして適当に置換すればいいのですが

    VimとExcelを組み合わせて全く新しいSQLクエリーを生成する | Webシステム開発/教育ソリューションのタイムインターメディア
  • Java SE 7 ってなんじゃらほい? | Webシステム開発/教育ソリューションのタイムインターメディア

    Java SE 7 ってなんじゃらほい?」ということで、社内の勉強会で発表しました。 込み入ったことは省いて普通のプログラマがまず触るところ(文法とIO)を説明しています。 まだJava SE 7の正式リリース前ですが、Java SE 8が待ち遠しいですね!

    Java SE 7 ってなんじゃらほい? | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2011/07/11
    あ、最近見て謎だと思ったやつこれだ >try-with-resources / commons-ioのIOUtils.closeQuietly()も調べる
  • Vimで「あの」ファイルを即座に開く | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 Vim で多数のファイルを編集することはよくあります。 例えば「foo」という名前の Vim プラグインを開発しているとしましょう。 すると autoload.foo.vim、doc/foo.txt、plugin/foo.vim などの特定のファイルを頻繁に編集することになります。 このような状況では 「doc/foo.txt を編集しようと思ったけれどどのウィンドウにも doc/foo.txt は表示されていない」 ということは起こりがちです。 そこで問題のファイルを明示的に開く必要がでてきます。 しかしファイルを開く方法は沢山あります。 あなたならどうやって問題のファイルを開きますか? :edit? :buffer? それともお気に入りのバッファ管理プラグイン? どれを選ぶにせよ、問題のファイルを開くためには何がしか追加情報を指定する必要があります。 例えば :edit を使うな

    Vimで「あの」ファイルを即座に開く | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2011/07/09
    better a.vim らしい
  • Vimのgfコマンドをgit diff特有の出力でも上手く扱うようにする | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 八百万あるVimのコマンドで特に有用なもののひとつとしてgfがあります。 このコマンドはカーソル下にあるファイル名らしき文字列を探し、 該当するファイルがあればそれを開くというものです。 gf はカーソル下にあるファイル名らしき文字列をそのまま使うだけでなく、 特定のディレクトリ下にあるかどうか検索(例えばC言語でなら /usr/include や ./include を検索)したり、 特定の拡張子を付加して検索(例えばJavaなら SomeClass のファイル名は SomeClass.java なので、 .java を付加して検索)することができ、 そこそこ賢く動いてくれます。 さて、日常的に git を使っている身としては 日常的に git diff の出力を眺める機会も多いです。 「git diff の出力を眺めて変更のあったファイルを開く」ということも頻繁に行います。 これ

    Vimのgfコマンドをgit diff特有の出力でも上手く扱うようにする | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2011/04/22
    やりました
  • SSHでscpを使わずにファイルをコピーする | Webシステム開発/教育ソリューションのタイムインターメディア

    え、SSH通るんならscp使えばいいじゃん。 YES、その通り。 しかし、「大容量ファイルを転送中に接続が切れてしまった」なんてときに、コピーが完了した後から残りを引き継ぎたい、みたいな要求にはscpコマンドは答えてくれない。もちろん、sftp使えばレジューム機能もあるんだしそうすればいいじゃんというのは正論だが、sftpの方はsshが通るからといって必ずしも使えるとは限らない。 そんなときは、多少強引だとしても、一歩戻って解決を試みるのもひとつの手だ。 単純転送 単純な転送から試してみよう。まず、リモート先のhostAにあるsrcfileを、手元にdestfileとしてコピーしたいとする。 sshはリモートで実行するコマンドを受け付ける(実際のところ、scpも内部的にはsshのリモートコマンドで実装されていたはずだ)。ということは、リモートでcatコマンドを実行してファイルの中身を「表示

    SSHでscpを使わずにファイルをコピーする | Webシステム開発/教育ソリューションのタイムインターメディア
    tyru
    tyru 2011/04/15
    sshでtar使ってディレクトリごと転送するやつ思い出した