2013-01-01から1年間の記事一覧

Markdown、行末に半角スペース2つで<br>が挿入できる

普通のMarkdownの場合、2回連続で改行すれば改段落 <p></p> になるが、改行 <br> を入れる方法についてはわからず、これまでは直接HTMLタグを書いていた。 ところが、実は行末に半角スペースを2個入れれば<br>が挿入されることが仕様に書かれている。 これは言われないと気…

シェルのエイリアス展開を無効化するには頭にbackslashをつける

bashなどでコマンドがエイリアス展開されるのを無効化するにはいくつか方法がある。 たとえばlsの場合、 /bin/lsのように直接実行ファイルを指定する $(which ls)のようにコマンド置換を経由して実行ファイルを指定する command lsのようにシェルのビルトイ…

ドメイン名の名前解決に/etc/hostsを参照させる方法

2013-05-11 修正 Postfixは送信メールのドメイン名からリレー先のIPアドレスを得る際、デフォルトでは/etc/hostsを一切参照せずいきなりDNSサーバにドメイン名についてのMXレコードを問い合わせてしまう。 したがって、/etc/hostsで設定している適当なホスト…

自ホストで送受信しているメールを複製して他のホストに送信する

Postfixでは、一度ローカルに配送したメールをそのまま複製して他のホストに送信することはできない。できるだけオリジナルのメールに近いメールを複製し他のホストに送信するには、BCCとして送信先アドレスを付加したメールを作り配送すればよい。 送受信さ…

Postfixを設定する際に役立つ情報源

Postfixを設定する際には、下記が参考になる。 http://www.postfix.org/documentation.html 公式ドキュメント。Postfix内でメールが処理される流れについては、Other topicsの中のArchitecture overviewを読むとよい。 http://www.kobitosan.net/postfix/tra…

Listモナドで非決定性計算

Listモナドを使うと、SICPのamb評価器が行うような非決定性計算ができる。 たとえば、ピタゴラス数を列挙するコードは次のように書ける。 -- ptriples.hs import Control.Monad -- guard関数を使うため ptriples = do a <- [1..] b <- [1..a] -- b <= a c <-…

fizzbuzz in Haskell

Haskellだいぶ慣れてきた。 -- fizzbuzz.hs fizzbuzz n | n `mod` 15 == 0 = "fizzbuzz" | n `mod` 5 == 0 = "buzz" | n `mod` 3 == 0 = "fizz" | otherwise = show n main = mapM_ (putStrLn . fizzbuzz) [1..] $ runghc fizzbuzz.hs 1 2 fizz 4 buzz fizz …

apt-cache searchでパッケージ名が前方一致するもののみを調べる

apt-cache searchをそのまま使うと、キーワードが説明文に含まれるものも出てきてしまい探しにくい。 --names-onlyオプションを指定すると、検索対象をパッケージ名のみにすることができる。 また、検索文字列はregex(7)に対応しているので、先頭に^をつける…

中置演算子に対する部分適用の2パターン

How to work on lists - HaskellWiki HaskellWikiを読んでいたところ、よくわからない例を発見。 Apply a list of functions to a single element to get a list of results. It's not in the book, but it's easy when you know how: map ($ my_element) xs…

SSH Port ForwardingでLAN内のサーバにリモートアクセスする

OpenSSHのPort Forwarding機能を使うと、接続先のサーバを経由してLAN内のサーバにリモートでアクセスすることができる。 調べてみると普通のPort Forwarding以外にもバリエーションがあることを知ったので、それらの内容をメモ。 Local Port Forwarding い…

Plaid CTF 2013 write-up

CTF

Last weekend, I challanged Plaid CTF 2013, the popular Capturing the Flag contest, as a team member. The contest was hard but pretty good! I feel it was pity that I couldn't solve any tasks about crypto... I'd like to post the write-up for…

Haskell実行環境をインストールする

Haskellの実行環境をインストールするには、haskell-platformパッケージを利用するとよい。 CentOSの場合は、EPELリポジトリを追加することでインストールが可能。 $ sudo apt-get install haskell-platform # Ubuntu の場合 $ sudo yum install haskell-pla…

netstatコマンドで特定のポートで通信しているプロセスを調べる(Linux/Windows)

ポートを開いているプロセスまで調べる方法についてのメモ。 Linuxの場合 -aでLISTEN状態も含むすべてのソケットを表示する、-nでIPアドレス・ポート番号をそのまま表示する、-pで対応するプロセスを表示する。 $ sudo netstat -anp Active Internet connect…

ipcalcコマンドでサブネット計算をする

ipcalcコマンドを使うと、/29のようにキリが悪いサブネットについて、サブネットマスクやブロードキャストアドレス、収容可能ホスト数などが計算できる。サブネットマスクからプレフィックス長を求めることもできる。便利。 $ ipcalc 192.168.0.100/29 Addre…

PythonでHaskellのMaybeモナド(もどき)を実装してみる

Haskellを勉強してきて、ようやくモナドの雰囲気がわかってきたので、Maybeモナドのような計算をPythonでやってみる。 #!/usr/bin/env python # -*- coding: utf-8 -*- # instance Monad Maybe where # return = Just # fail = Nothing def Maybe(x): return…

scapyでpcapファイルを逐次的に解析する

Pythonでpcapファイルを解析するにはscapyが便利。scapyを用いてpcapファイルを逐次的に解析するには、下記のようにsniffメソッドを使えばよい。 from scapy.all import * from datetime import datetime def analyze(pkt): # キャプチャ日時はpkt.timeからu…

Pythonでヒープ構造を使う(heapqモジュール)

常に最初の要素が最小値(あるいは最大値)となるようなリストが必要な場合、ヒープ構造を用いることで最小値(最大値)の取り出しをO(1)、要素の追加をO(log n)の時間計算量で行うことができる。 Pythonでヒープを扱う場合、heapqモジュールが使える。 impo…

nmapでLAN内のネットワーク機器を調査する

http://nmap.org/ nmapはapt-getやyum等でインストールできる。また、BackTrack Linux(セキュリティ系Linuxディストリビューション)に標準で含まれている。 $ sudo nmap -vv -sSVC -O 192.168.0.0/24 -vvは途中経過の詳細な出力、-sSVCはTCP SYN Scan (S)…

IPアドレスの身元を調査する

http://bgp.he.net/ (Hurricane Electric BGP Toolkit) 上のサイトでIPアドレスを検索することで、 IPアドレスが所属するAS情報 IPアドレスが所属するネットワークについてのwhois情報 IPアドレスに対するDNS逆引きの結果 DNS正引きの結果、そのIPアドレスを…

http://例え.テスト/

http://例え.テスト/ 国際化トップレベルドメイン(IDN TLD)の評価用ドメインとのこと。 すでに「.中国」などが実運用されているようだ。 List of Internet top-level domains - Wikipedia, the free encyclopedia # Internationalized country code top-le…

Python3の変更点のメモ

[Python-Dev] The end of 2.7 Python3についてはこれまでほとんど目を向けていなかったのだけど、python-devのメーリングリストでPython2系のメンテナンスをどうするかという議論がされているのを見て、改めてPython3について調べてみようと思った。というわ…

コンピュータ関係の技術について、思うところを書いていく場所です。普段はセキュリティ・ネットワーク系のエンジニアをやっています。が、ここに書いてある内容は個人の見解であり、所属する組織の立場、意見を代表するものではありません。 Tumblrにするか…