Hatena::ブログ(Diary)

hnwの日記 このページをアンテナに追加 RSSフィード

[プロフィール]
 

2014年4月7日(月) AndroidアプリiSyncr for Macの最新版が2.5倍に値上げされた理由 このエントリーを含むブックマーク このエントリーのブックマークコメント

(4/11 14:00追記)アプリの日本語説明が更新されましたので、誤解して買う危険性も減ったように感じています。記録として記事は消さずに残しておきます。


Mac+Androidという食い合わせの悪そうなデバイスを使っている皆様こんにちは。ところで音楽の管理ってどうされてますか?


両者間で音楽データを連携する方法はいくつかあるようですが、iTunesのプレイリストをAndroidに同期できる有料アプリに「iSyncr for Mac*1というものがあります。これを使うと、AndroidアプリMacデスクトップアプリを同じWiFiネットワーク上で起動するだけで、両者の音楽データの同期が簡単に行えます。


スマートフォンで音楽を聴く程度のことにお金を払うのは少々納得がいきませんが、AndroidUSB接続してAndroid File Transferで音楽ファイルを転送するよりスマートだろうと自分に言い聞かせて購入することにしました。


ところで、このツールは先月まで399円だったんですが、今日見ると1038円に値上がっています。一方、Windows版である「iSyncr for PC」の値段は据え置き399円のままです。選択肢が少ないMacユーザーの足下を見て一気に値上げとは商売上手すぎでしょ…。さすがに買うのを止めようかとも思いました。

続きを読む

*1:日本語でのアプリ名は「iTunes用のiSyncr - Mac

トラックバック - http://d.hatena.ne.jp/hnw/20140407

2014年3月16日(日) 第五回闇PHP勉強会でzvalをダイエットする試みについて発表しました このエントリーを含むブックマーク このエントリーのブックマークコメント

3月15日に開催された第五回闇PHP勉強会で発表してきました。以下が発表資料です。



僕の発表では、PHP変数1個に対応する構造体zvalが64bit環境では24byteになるけれども、これを16byteにしたらPHPの高速化・省メモリ化ができるんじゃないか、という試みを紹介しました。実験自体は失敗だったんですが、64bit環境だとzvalに意外と無駄があるということ、またzvalの構造変更が十分現実的だったということは面白い指摘かなと思っています。


少し内容について補足しておきます。僕としては、こういうトリッキーな実装をするなら劇的に速くなる必要があると考えています。NaN boxingにしても速度やメモリ消費量でのメリットが僅かであれば採用されないようなテクニックではないでしょうか。実験の結果を見る限り、今回の方針のままではこれ以上チューニングしても劇的な改善とはならないでしょうから、失敗の原因を考えてみるというプレゼンになっています。


今回は尺の都合でNaN boxingの紹介ができませんでしたが、非常に面白いテクニックなので参考リンクの文章もご覧ください。


それにしても、今回もマニアックな発表ばかりで、とても楽しかったですね。特に今回は通常発表4人に加えてLT発表4人と過去最大規模だったのも素晴らしかったと思います。主催の@anatooさん、毎回ありがとうございます。次回はもう少し早めの開催を期待してます!


参考リンク

トラックバック - http://d.hatena.ne.jp/hnw/20140316

2014年1月29日(水) Monoで巨大な浮動小数点数を丸めたら無限大になった このエントリーを含むブックマーク このエントリーのブックマークコメント

Monoのround関数バグを見つけたよ、という毎度おなじみの話題です。


早速ですが、浮動小数点数で扱える一番大きい数を浮動小数点数以下第2位で丸めて第1位までにしてみましょう。


using System;
class RoundingBigFloat
{
    static void Main()
    {
        double d = Double.MaxValue;
        Console.WriteLine(d); // 1.79769313486232E+308
        Console.WriteLine(Math.Round(d, 1)); // Infinity
    }
}

上記コードのコメント部の通り、大きい数を丸めると無限大になることがあります。これは、小数点以下第n位までに丸める処理が、「10^n倍して整数に丸めて10^-n倍する」という処理になっているため、この計算の途中で無限大になってしまうことがあるのです。


Monoソースコードも見てみた

対応するMonoの処理を追ってみましょう。MonoC#コンパイラmcsはC#で書かれています。

続きを読む

ほげほげ 2014/01/30 17:27 https://twitter.com/atsushieno/status/428799344297271296

hogehoge 2014/01/30 17:30 https://twitter.com/atsushieno/status/428800529729216513

hnwhnw 2014/01/30 22:51 ほげさん:

わざわざありがとうございます。C#を使い始めてまだ1ヶ月くらいなので、なるほどMonoのバグ管理ってGItHubじゃないんだ、なるほどなー、というレベルでした。

hnwhnw 2014/01/31 00:07 僕はC#で仕事してるわけでもなく、C#を道具として使うレベルにも到達していないので、Monoを良くする動機が無いんですよね。折角追いかけた義務感でいずれパッチを作ろうかと思っていましたが、バグレポが当然と言われると困惑してしまいますね…。

トラックバック - http://d.hatena.ne.jp/hnw/20140129

2014年1月15日(水) Emacsでスクリプトをセーブするときに勝手に実行権限をつける方法 このエントリーを含むブックマーク このエントリーのブックマークコメント

Emacsシェルスクリプトなどを書いているとき、ファイルセーブのタイミングでchmod u+xする方法を紹介します。実は「EmacsWiki: Making Scripts Executable On Save」の内容そのままです。


やり方は、init.elに下記のように書くだけです。


;; スクリプトっぽかったら勝手に実行ビットを立てる
 (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p)

この設定により、バッファの先頭2文字がshebang「#!」で、かつ対応するファイルに実行権限が出ていない場合に実行権限をつけてくれます。


それにしても、EmacsWikiは大抵のことが既に書いてあって素晴らしいですね。一方で、参考にならない情報も消されずに残っていたりするので、こうして抜粋して紹介するのも意味があるかなと思います。

トラックバック - http://d.hatena.ne.jp/hnw/20140115

2014年1月13日(月) Emacs起動時に自分好みのelispを自動的にインストールする このエントリーを含むブックマーク このエントリーのブックマークコメント

自宅と会社など、複数環境でEmacsを使っていると全環境を同じ状態に保つのは意外と手間がかかります。GitHubなどを利用してinit.elを共有すればそれなりに同じ状態にできますが、完全に同じ状態にしようと思うとelispインストール状態も共有する必要があり、これが案外面倒だったりします*1


そこで、init.el内に自分が必要なパッケージ名を列挙しておいて、起動時にインストールされていないパッケージがあったらpackage.elでインストールする仕組みを導入しました。さらに、URLで指定されたelispをpackage.el管理する仕組みを組み合わせました。これが予想以上に快適だったので紹介します。これは、次の2つの記事を混ぜ合わせたような内容になっています。



僕と同じことをするには、init.elに下記の内容を貼り付ければ準備完了です。GNU ELPA・Marmalade・MELPAで提供されているパッケージの場合はmy/favorite-packagesのパッケージ名を、それ以外の場合はmy/favorite-package-urlsのURLを、それぞれお好みに合わせて書き換えてください。

続きを読む

*1:他人の書いたelispGitHub管理しちゃうよ派を除く

yasuykyasuyk 2014/01/14 12:06 自分も似たような方法で管理していましたが、パッケージをチェックするのに時間がかかるようになってきました。
最近、Caskでパッケージ管理するように変更しました。CaskはRubyでいうところのBundlerにあたります。
パッケージをチェックすることがなくなったので起動が早くなりました。

http://cask.github.io/

hnwhnw 2014/01/15 01:19 yasuykさん:

上記の方法では都度パッケージのチェックなどは行わないので、起動は十分速いように思います。そのかわり、パッケージの最新版がある場合は手動で追従する必要があります。僕が入れたいパッケージは比較的古めのものが多いので、多少ゆるい管理でもいいと思っていますが、厳密にやる場合は他の方法の方がいいのかもしれませんね。

yasuykyasuyk 2014/01/15 04:12 なるほど!

トラックバック - http://d.hatena.ne.jp/hnw/20140113
 
ページビュー
990557