読者です 読者をやめる 読者になる 読者になる

HYLOGICS

今後は各分室にコンテンツを移して、ここは雑記や暮らしを中心としたライフログ的な何かにしていく予定です。

USB-DACのお手軽なノイズ対策

ガジェット

以前購入したUSB-DAC、ここ暫くWindowsを起動していないこともあり使う機会がなく引き出しで休眠していたのですが、HDDの整理もひと段落したこともあり最近また復活させることになりました。

blog.hylogics.com

コンポ側のデジタル入力が埋まっているのでヘッドフォンを刺してアナログで使ってみたところ、ノイズが凄いことが発覚。デジタル出力=S/PDIF(toslink)で使っている時は問題がなかったんですが、常用に堪えないレベルのノイズにどうしたものかと考えていたところサンプリングレートを変更すると改善するらしいとの噂を聞き試してみることに。

■ 再生デバイスからプロパティ→詳細タブを開く f:id:kirine:20160721041140p:plain

■ デフォルトでは44100Hz(CDの音質)が設定されているのでこれを変更する f:id:kirine:20160721041149p:plain

サンプリングレートを下げるしかないのか、と覚悟していたのですが「32000 Hz(FMラジオの音質)」「48000 Hz(DVDの音質)」どちらを選択してもノイズが綺麗に消え去りました。

同じ現象に悩んでいる方は追加で機材を購入する前に設定を見直してみると良いかもしれません。ダメ元で是非お試しください。

【備忘録】ストレージ整理

Linux

先週、いつも通りデータ処理のバッチを流していてなんとなく違和感があった。増え続けるデータに対して誤魔化し誤魔化し運用しているHDDの容量がもう限界なのではないかという予感。取り急ぎ確認してみたところ、 データ領域の空き容量が200GB程度で、データの整理やパーティションの整理をしないと数日中にデータが溢れることが発覚。これはちょっと不味いと思い、長いこと放置していたストレージの整理を行うことにした。

データ退避とRAIDアレイ再作成

以下図1は再構築前後の図。左が再構築前、右が再構築後。アイコンは左からHDD、RAIDアレイ、パーティション。図中の青はRAID1, 黄はRAIDZ, 赤はその他(シングルだったりデータ整理用の補助ディスクだったり)の領域。

なお、HDDの内訳は3TB * 7 (WD30EZRX, WD30EZRZ), 2TB * 1(WD20EZRX)で、変更前のアレイの内訳は3TB + 3TB + 2TBとなっている。

■ 図1 f:id:kirine:20160715143024p:plain

Icons made by Freepik Alessio Atzeni from www.flaticon.com is licensed by CC 3.0 BY
続きを読む

「小説家になろう」で連載中のWeb小説『幻想再起のアリュージョニスト』が面白すぎて夜も眠れない件

雑記

ご無沙汰しております。

ここ暫く体調が芳しくないこともありブログをお休みしつつ「艦これやりながら仕事したりしなかったり」「艦これやりながら食事したりしなかったり」「艦これやりながら寝たり寝なかったり」していました。睡眠不足は良くないですね。

さて、最近またWeb小説を幾つか読んでいるのですが、その中でも『幻想再起のアリュージョニスト』がマイブームで時間泥棒この上ない状態になっております。数日前から読みはじめて先程ようやく二章を読み終えたところなのですが、面白くて区切りをつける場所に悩む割に延々と話が続いていくので終わりが見えないのです(読みながら寝落ちすることもしばしば)。恐ろしいことに現在掲載分の280万文字を超えても未だ更新中の作品であり、更新に追いつくのは何ヶ月先になるかわからないためまだ途中ではありますがこのエントリを書いている次第です。

続きを読む

2台目のkindleをお迎えした

ガジェット

経緯

少し前、kindle oasisがその値段の高さで話題になっていた時に私は違うことを考えていた。

「むしろkindle paperwhiteが欲しいんだがーー」

2014年に購入したkindle(7th)を使っていたのだけど、移動時に使うこともあり暗いところで読みづらいのが気になっていたのだ。特に夜のバス車中は最悪でバックライトなしではほとんど字が読めない。しかし、少し前(3月末)にセールが終わったことを遅ればせながら知り、定価で買うのもなんだかなあと思い買い控えていたのだ。

そして今回、前回のセールが終わってまだそんなに時間も経たないというのに7,300円引きのキャンペーンが開催中と聞き早速購入することにした。

kindle(7th)とkindle paperwhite(2015)の違い

細かい違いは色々あるんだけど、大きな違いは2つ

漫画で比較

(写真は山賊ダイアリー2巻)

小説で比較

(写真は狼と香辛料2巻)

所感

「暗いところで読めればいいか」程度で購入したのだけど、内蔵ライトがあると黄緑の画面が白くなることでかなり印象が変わる。なるほどpaperwhiteだなと実感。で、画面が白いためコントラストが強くなることと高dpiの組み合わせでかなり文字がはっきり読めるようになり、明るいところでもしっかりその恩恵は受けられる。ライトは背面から透過して目を直撃するタイプではなく画面の下部から照射されるので目にも優しいと思う。ただ、構造上ライトのムラがどうしても出てしまう(上記の写真でも画面下部がムラになっているのがわかる)ようでそこだけは少し気になった。

結構捗る感じなので、積んである本を消化していきたい。

Kindle Paperwhite Wi-Fi、ブラック

Kindle Paperwhite Wi-Fi、ブラック

しかし、このタイミングでセールをするのは、もうすぐ新商品が出るということなのかもしれない。それでも安かったので個人的には問題ないんだけどこれから買う人はちょっと注意が必要かも。

*1:画面の後ろからではなく下部からライトが照射されるのでバックライトではない

読書メモ - 夏への扉

書評

結構前に読み終わっていたんだけど、古典ということもあり感想を書くか悩んだまま放置していたことを思い出したのでちょっと書いてみようと思う。

時代背景や文体が古臭い

これはもう古典を読んでいる以上つきものなんだけど、当時としては未来を描いているのだけどわれわれはその『未来』を通りすぎてしまっており『描写されている未来の発想が既に古臭い』という問題がある。なんせ『夏への扉』の発刊は約60年前の1957年であり、(当時は輝かしい未来として描かれていたであろう)舞台となる1970年も2000年も、今となっては遠い昔のお話である。

個人的にはスチームパンクのようにレトロフューチャーとして割りきって読むしかないのだと思っていて、普段はそこまで気にならないのだけど本作では時間移動とその間で発生する技術格差の話があるので違和感が強い印象。

清涼剤としての猫

anond.hatelabo.jp

一緒に行動するし、『夏への扉』というタイトルは猫の行動から来ているが、 猫が作品のテーマだったり、猫の行動が何かストーリーに影響を与えるわけでもない。 ただの添え物であり、これを「猫小説」だと思ってしまうやつは、どうかしている。

この作品、表紙に猫が出ているし、これを「猫小説」だと思ってしまうやつは一定数いるのかもしれないが、本作においての猫はまさにただの添え物であり、これを「猫小説」だと思ってしまうやつは、どうかしているというのは全くもって同意するのだけど、普通に読めば猫小説ではないことは分かるので、そんな批判をしてしまうこと自体が筋違いというかどうかしていると思う。とはいえ、猫を飼ってたり、猫好きなら割とピートの描写にほっこりするところはあるのではないだろうかと思う。

正直なところ、序盤の展開が遅い上に主人公は煮え切らないし、おまけに上記で書いたように時代背景や文体が古臭いので結構イライラするのだが、そんな中で癒しとなるのが飼い猫ピートの存在であると言っていい(と個人的には思う

センス・オブ・ワンダー

SFはアイデアの新奇性、センス・オブ・ワンダーが重要なのであって、 今さらヴェルヌやウェルズを読んだところで、価値はない

古臭い作品だからセンス・オブ・ワンダーがないのか、というとそんなことは全然なくて、というかそもそもセンス・オブ・ワンダーに新奇性が重要ということはないと思う。これは若干のネタバレ*1になってしまうのだけど、主人公が未来で製図機に向かい合った時に私はセンス・オブ・ワンダーを感じることが出来た。主人公と同じ名前を冠する製図機、そしてかつて発明されるだった商品が目の前にある事実は主人公が失った30年の間に何かがあったのだといった予兆がある。

ご都合タイムトラベル

この作品でどうしても納得いかない要素を二つ挙げろ、と言われたらそのうちの一つがこれになるのだろう。正当なやり方では未来に行くことは出来ても過去に戻ることはできない。過去に戻るためにはタイムマシンを使うしかないのだが、、、タイムマシンの描写といい、そこに至るまでのロジックといい、ちょっとおざなりかなあと思う。

ご都合ヒロイン

納得いかない要素のもう一つに上がるであろう要素がこれで、本作一番のファンタジーと言われかねない部分なのだけれども、まぁ普通に考えてあの展開はないよなあとは私も思う。しかし「彼女」が主人公と別れてから数年どのように過ごしてきたのか、その中で主人公(と彼が「彼女」に供与した財産)がどのような意味を持っていたのか、と深堀りすると、そういう選択もありなのかなぁ。。。と、考える余地がなくもない。この辺は大した描写がないので読者が補完するしかないのだけど、というか主人公が過去に戻ろうとする辺りから展開が早足で描写が適当になっている気がするのが非常に惜しい。

最後に

タイムトラベル物の元祖でありBTTF(バック・トゥ・ザ・フューチャー)などにも多大な影響を与えた作品、という触れ込みで紹介されていたのだけど、タイムパラドックスなどに深く切り込んだ作品ではなくて、そういうものを期待していると肩透かしを食らうし、それならBTTFや劇場版ドラえもんを観た方が楽しめる。本作で見処なのは「2週目」で主人公が帳尻を合わせるところなんだと思う。ドラえもんで言うところの「先取り約束機」に近い印象かな。ただ、そこに至る過程やその後の展開において描写の密度が低いことが残念だと感じた。

本作、何気に一番良い仕事をしているのは実はタイトルと猫の存在なのではないかと思う。『夏への扉』というタイトルは実にキャッチーだし本文にも即していて、いい仕事をしているなあと思わざるをえないし、猫の描写がなければ多分最後まで読むことはなかったんじゃないかなあ。

夏への扉 (ハヤカワ文庫SF)

夏への扉 (ハヤカワ文庫SF)

*1:こんな古い作品でネタバレも何もあるかと思いつつ今更読んでる私のような人間もいるので

オレオレはてなブックマークの進捗

雑記

艦これ、2016春のイベントが始まりましたね。早速突撃しましたがE-1甲が突破出来ません。

さて、表題の件について。

前回はRSSの話をしましたが今回はHTML版のお話です。

動きとしては以下の流れ。

  1. はてなブックマークからコンテンツを取得
  2. Nokogiriでスクレイピング
  3. フィルタリング
  4. ERBで出力

ちょっとデザインまで手をつけれていませんが、こんな感じで動いてます。

で、前回「NG設定面倒臭い」という話をしましたが、ちょこっと実装してみました。

このドメインからの記事を読みたくないなーと思ったら末尾のドメインをクリックするとNGリストに追加されます。

「NGリストに追加したよ」

再読み込みすると該当のコンテンツが表示されなくなります。

今は他の人も使えるようにしようとするとちょっとDBの構成が面倒臭いなあってとこで頭を抱えています。他にも「フロントエンド何それ」とか「デザイン酷くねえか」などなど課題は多いですな。Railsに載せたいけどそれも何年か前に齧ったっきりなので復習しないとなあ。

はてなブックマークのRSSにフィルタリングをかけて自分用にカスタムする

雑記

気が付けば5月ですね。最近はもっぱら艦こればかりやっています。

艦これ自体は2013年の9月に開始したものの、ろくにイベントに参加することもなく長いこと放置してたまに任務を進めたり建造したりする程度のエンジョイ勢だったのですが、ここ10日ほどがっつりやり込んだおかげで4月下旬にはLv30代だった皐月が本日めでたく改二(Lv75)となりました。

さて、ここ1年くらいどうにもはてなブックマークが使いにくいなと思っていたのですが一向にサービスが改善される様子が見られないどころかどんどんノイズがひどくなる一方なので自力でなんとかすることにしようと考えました。

(特に平日の朝〜夕方以外の時間帯におけるはてなブックマークは本当に無法地帯ではてなの人たちがいつも人力で整理しているのがよくわかります)

個人的に一番気に入らないのが「テクノロジー」枠にどうでも良いブログの話がエントリーされることなので、NGリストを作って除外することにしてみます。

とりあえずサクッと書いたのは「はてなブックマークから一覧を取得してNGリストから除外したものをHTMLで出力する」というものだったのですが、毎回ブラウザ開くのもなんかイマイチな感じだったので今回「はてなブックマークRSSからNGリストで除外したものを自前のRSSで出力する」というアプローチに挑戦してみました。そのうち外部公開してfeedlyに食わせてみようかと思います。

今までに書いてみたアプローチがこんな感じで、

  1. RSS -> NG Filter -> HTML
  2. HTML -> NG Filter -> HTML
  3. RSS -> NG Filter -> RSS

つまり今回は3番のお話です。(2番も気が向いたら書きます)

実行例

今回は青二才さんのサイトをノイズとして除外してみました。

  1. フィルタリング前 f:id:kirine:20160501141650p:plain

  2. フィルタリング後 f:id:kirine:20160501141707p:plain

ソースコード

今回テスト用に何も考えずにスクリプトにベタ書きなのですが、とりあえず動いたので今後どうするかはちょっと考えます。要件整理したらArukas辺りで動かしたいかな。

#! /bin/ruby

require 'rss'
require 'open-uri'
require 'yaml'

uri = 'http://b.hatena.ne.jp/hotentry/it.rss'

def check_url(url)
  config_file = 'ng_url_list.yaml'
  ng_list = YAML.load_file(config_file)
  ng_list.each do |ng|
    if url.match(ng)
      return nil
    end
  end
end

def get_rss(uri)
  opt = {}
  opt['User-Agent'] = 'Opera/9.80 (Windows NT 5.1)'

  open(uri, opt) do |rss|
    feed = RSS::Parser.parse(rss)
    myfeed = feed.items.map{ |item|
      if check_url( item.link )
        { 'title' => item.title,
          'url'   => item.link }
      end
    }
    {
      'title' => feed.channel.title,
      'feed'  => myfeed
    }
  end
end


rss = RSS::Maker.make("atom") do |maker|
  maker.channel.author = "kirine"
  maker.channel.updated = Time.now.to_s
  maker.channel.about = "myHatenaBookmark"
  maker.channel.title = "myHatenaBookmark"

  body = get_rss(uri)
  body['feed'].each do |f|
    if f then
      maker.items.new_item do |item|
        item.link = f['url']
        item.title = f['title']
        item.updated = Time.now.to_s
      end
    end
  end
end

print "Content-Type: text/xml\n\n"
print rss

【追記】dc:dateを取得して出力に反映するようにしました。

#! /bin/ruby

require 'rss'
require 'open-uri'
require 'yaml'

uri = 'http://b.hatena.ne.jp/hotentry/it.rss'

def check_url(url)
  config_file = 'ng_url_list.yaml'
  ng_list = YAML.load_file(config_file)
  ng_list.each do |ng|
    if url.match(ng)
      return nil
    end
  end
end

def get_rss(uri)
  opt = {}
  opt['User-Agent'] = 'Opera/9.80 (Windows NT 5.1)'

  open(uri, opt) do |rss|
    feed = RSS::Parser.parse(rss)
    myfeed = feed.items.map{ |item|
      if check_url( item.link )
        { 'title' => item.title,
          'date'  => item.dc_date.to_s,
          'url'   => item.link }
      end
    }
    {
      'title' => feed.channel.title,
      'feed'  => myfeed
    }
  end
end


rss = RSS::Maker.make("1.0") do |maker|
  maker.channel.author      = "kirine"
  maker.channel.updated     = Time.now.to_s
  maker.channel.about       = "myHatenaBookmarkRSS"
  maker.channel.description = "myHatenaBookmarkRSS"
  maker.channel.title       = "myHatenaBookmarkRSS"
  maker.channel.link        = "http://reader.example.com/get_rss.rb"

  body = get_rss(uri)
  body['feed'].each do |f|
    if f then
    maker.items.new_item do |item|
      item.link = f['url']
      item.title = f['title']
      item.dc_date = f['date']
    end
    end
  end
end

print "Content-Type: text/xml\n\n"
print rss

ng_url_listのサンプル

---
- blog.skky.jp
- www.hitode-festival.com
- www.tm2501.com
- www.life-abstract.com
- www.anizm.xyz

手動でNGリストを編集しないといけないのはちょっとイケてないですな。この辺もおいおい考えます。