Hatena::ブログ(Diary)

らいとなひび RSSフィード

2010-08-03

[]連続する奇数番目の改行を除去する 01:26

メーラーの関係で、HTMLメールを受信したときに改行コードが連続することがたまにあります。冷静に考えれば送信側のメーラーが動きすぎているんでしょうが、さすがに見づらいので対応するスクリプトなど。

# 連続する奇数番目の空行を除去する
def trim_alternate_newlines(s)
  odd = true
  s.lines.inject('') { |r, line|
    # 空行チェック
    if line =~ /\A\s*\n/
      line = '' if odd
      odd = !odd
    else
      odd = true
    end
    r << line
  }
end

Enumerable#inject に意味は無し。たぶん、String#gsubで一発でしょう。

例
こんにちは



あしたは

すずしくなる

はず、としんじます



では、

さようなら



/~~~

これに対して実行すると、こんな感じ。

実行結果
こんにちは

あしたは
すずしくなる
はず、としんじます

では、
さようなら

/~~~

[]test 00:20

これはテストです。

mas-higamas-higa 2010/08/04 12:57 puts s.split(/\n/).each_slice(2).map(&:join)

raito3raito3 2010/08/05 01:24 なるほど、Enumerable#each_slice は忘れがちですね。
ただ、ボクが意識していた問題空間が微妙にズレがあるようで、空行じゃない改行コードを消すのは勇み足かなぁ。
(もちろん、例と実行結果だけであれば正解)

というわけで、
「こういうロジックって人間が手作業でやることをそのまま愚直に書いた方が紛れがなくない?」
という主張だったりします。あと、pデバッグもできますし(ボソッ

mas-higamas-higa 2010/08/05 12:57 問題を誤解してたのはコメント直後に気づきましたw

でも簡単にできることで妥協するのも大切かと
puts s.split (全ての空行除去) とか
$ cat -s ファイル (連続する空行除去)とか

raito3raito3 2010/08/05 14:36 cat -s は知らなかったです。便利。
で、そのプロセスはもちろん irb で踏んでますよ〜
その上で「もっと見やすい形を」→「公開(晒しモノに)」と。
個人的には、100MB級のファイルを扱えるよう、
IOのループに落とす方が好きですが、今回の問題では不適切でした。

トラックバック - http://d.hatena.ne.jp/raito3/20100803

2010-05-28

[]デザインを変えてみるなど 17:14

はてなダイアリーバージョンアップを記念(?)して、デザインを変えてみました。あと、その他の設定もいくつか変えてみました。はたして、この更新はTwitterに送信されるのかな?

トラックバック - http://d.hatena.ne.jp/raito3/20100528

2010-05-25

[][]チラリズムは時として悪だ! 01:22

1ヶ月ぶりのアップがこんなネタになろうとは… タイトル見て妄想に走った人!ごめんなさい、そっち系ではありません。

某所でサーバーの設定をして、さて「サービス開始だ」とばかりにポートを開いたときのこと。

ちょっとだけコネクションが開き、データ転送が始まった、

と思ったら、すぐに強制終了してしまう

という現象に見舞われました。

ルーターの設定を眺めてみたり、Google先生に質問したりすること2時間(!)かけるも、状況を説明できる証拠が見つからず・・・ で、結論はぷららプロバイダー)がナイスな無料サービス「ネットバリアベーシック」を開始したことが原因でした。

この中で、パケットフィルタデフォルト値が「レベル1(弱)」なのですが、下記の説明ページでは、「その他通信(着信)」と「ウィニー」だけが「×」となっています。

「×」ならば通信不能とすれば良いところを、わざわざチラリとだけ通信させてからブロックしていたわけですね。挙動の理解はできたものの、共感はできないなと思った次第です。

トラックバック - http://d.hatena.ne.jp/raito3/20100525

2010-04-30

[]仕事辞めました 00:58

今さら?みたいなことを書きますが、仕事を辞めて里に帰り、学校に行き始めました。

ようやく1ヶ月が過ぎ、ちょっとずつペースをつかんできたところで、GW突入と相成りました。

存外学校が忙しかったり、残作業が多かったり、あると思いますが、それよりもTwitterにシフトしたことの方が、こちらのブログへのインパクトが大きいようです。

ネタが無いわけではありませんので、ちょっとずつ小出しに発表していきたいなぁ、と思う今日この頃です。さしあたり、今さらながら仮想化関係の情報ですかね。最近はこればっかりやってますから。

というわけで、決意表明でした。

トラックバック - http://d.hatena.ne.jp/raito3/20100430

2010-01-30 1月ももう終わり

[]第40回 Ruby/Rails勉強会@関西参加 02:59

前回に引き続き、Ruby関西で発表してきました。アジェンダと発表資料はこちらです。

何というか、まあ相変わらず空気を読まないテーマで話をしてきたわけですが、時間も短かったせいか前回よりは良い感触だったようです。

まあ、それも偏にWatirの紹介が奏功したからなのでしょうが・・・

さて、訂正が2点。

  1. Watirがサポートするブラウザーに、Operaは含まれていませんでした。以下の4つに限られるようです。
    1. Internet Explorer
    2. FireFox
    3. Safari
    4. Chrome
  2. WatirFireFox起動に失敗したのは、JSSh 0.9をインストールしていたから、のようです。
    • JSSh を入れ直して、v1.0にしたところ、正常に動作するようになりました。

mas-higamas-higa 2010/01/31 11:41 お疲れさまです。
もう少し時間があれば良かったですね。
次回は Ruby で .NET とかですかね。

raito3raito3 2010/02/02 21:52 >mas-higa様
ネット観戦ありがとうございました。
見づらかったり解りづらかったこともあるかと思いますが、
暖かいコメント痛み入ります。
.NETの概念とかは面白いと思いますし、勉強になるとも思います。
ただ、ボクが発表するとなると、Rubyに到達するまでに20〜30分は
かかりそうなので、別の方に譲りたいところです。
(むしろmas-higaさんの守備範囲では??(^^; )

トラックバック - http://d.hatena.ne.jp/raito3/20100130