Hatena::ブログ(Diary)

彷徨えるフジワラ このページをアンテナに追加 RSSフィード

2030-12-31

「妥当」な Mercurial バージョンの情報

※ 2015-01-19 更新

重要なお知らせ: 1.9 ⇒ 2.0 および 2.9 ⇒ 3.0 では、コンセプト/操作性/互換性等における大きな改変はありません。通常の定例アップデートに過ぎませんので、従来の版を元に書かれている情報の多くは、そのまま適用可能です。

現状でそこそこ妥当な Mercurial の版は以下の通りです。

由来不詳のリビジョンを含むリポジトリから履歴情報を取り込む可能性がある場合は、3.2.3 以降の使用を強く推奨

それ以外の場合は 1.8.1 〜 最新版

(使用状況によっては 2.2 〜 2.2.1 および 2.3 〜 2.3.2 の使用回避を推奨)

また、個別のケースにおいて回避を推奨する版の情報を以下に示します。

  • revsets 記述によるリビジョン指定を多様する場合は、2.5 版以上を推奨(詳細はこちらのエントリを参照)。それ以前の版を使う場合は、2.3 版の使用を回避することを推奨 (詳細はこちらのエントリを参照) ※ 2013/02/07 更新
  • cp932 (Shift-JIS) 環境でファイル名に日本語を使用する場合:
    • 2.3 〜 2.3.2 版の使用は回避することを推奨 (詳細は日本語 ML への投稿を参照) ※ 2012/10/11 追記 (2.4 版で解消済み)
    • 2.0 〜 2.1 版での largefiles エクステンションの使用は回避することを推奨 (※ 2.1.1 版で解消済み)
    • 1.9 版の使用は回避することを推奨 (※ 1.9.1 版で解消済み)
  • 2.3 版と非同梱エクステンションを併用する場合、そのままでは動作しないケースがありますので、非同梱エクステンションを(対応済みの)最新版に更新するか、2.3 版以降の利用を回避してください(詳細は日本語 ML への投稿を参照) ※ 2012/08/16 追記
  • TortoiseHg 経由で strip 操作を行う場合、上記と同じ原因で正常に機能しませんので、2.3 版 (+ TortoiseHg 2.4.3) の利用を回避してください ※ 2012/08/23 追記
  • MacOS でのインストール (ソースからのビルド/パッケージ管理システムの使用) が失敗する場合、2.1.1 版を回避するか、バイナリ版のインストールしてください (※ 2.1.2 版以で解消済み)
  • Windows/Mac OS などの case insensitive filesystem 上で MQ と併用する場合は、2.0.2 版の使用は回避することを推奨 (※ 2.1 版で解消済み)

「この版にはこういった問題がある」といった情報がありましたら、以下の方法などでお知らせください。

続きを読む

2029-12-07

執筆書籍一覧

各書籍に関するご意見・ご要望・誤記情報等ありましたら、対応するサポート受け付けエントリへのコメントや、@flyingfoozy へのツイートなどでお寄せ頂けると助かります。

lsを読まずにプログラマを名乗るな!

サポート受け付けエントリ

入門TortoiseHg+Mercurial

入門TortoiseHg+Mercurial

入門TortoiseHg+Mercurial

サポート受け付けエントリ

アセンブラで読み解くプログラムのしくみ

サポート受け付けエントリ

俺のコードのどこが悪い?

俺のコードのどこが悪い?

俺のコードのどこが悪い?

サポート受け付けエントリ

入門Mercurial

入門Mercurial Linux/Windows対応

入門Mercurial Linux/Windows対応

サポート受け付けエントリ

2016-03-25

『俺のコードのどこが悪い?』へのご意見・ご要望・誤記情報

拙著『俺のコードのどこが悪い?』に対するご意見・ご要望・誤記情報等ありましたら、本エントリへのコメントとして書き込んでいただければ、可能な範囲(私個人のサポートページへの掲載等)で対応させて頂きます。

twitter 経由なら @flyingfoozy 宛てにお願いします(1/day ぐらいしか確認してませんが ....)。

俺のコードのどこが悪い?

俺のコードのどこが悪い?

なお、副題の「コードレビューを攻略する40のルール」とか「失敗に学ぶ成功の法則とは?」といった大仰な物言いは、販売戦略上から編集さんの意見で付いたものなので、「(この内容で)それってどうよ?」みたいな意見に関しては、私に寄せられても困ります(笑)。私自身も未だにちょっと気恥ずかしいです > 煽り文

書籍中にも書きましたが、本書で取り上げた40項目は、「これさえやれば」的な項目ではなく、「少なくともこれぐらいは」的な項目です。

各自がより有用な確認項目作りをする際の、最初の叩き台として本書が微力なりとも読者のお役に立てば幸いです。

2015-12-31

Mercurial に関するコミュニティ由来の成果(2015年版)

本エントリは、2015年の一年間に、ML/twitter/勉強会といったコミュニティから上がった情報/要望の中で:

  • Mercurial 本体に取り込まれた修正の契機になったもの
  • Mercurial 本体に取り込まれてはいないものの、何らかの成果に結びついたもの
  • 『今後の作業のネタ』(= バックログ)として認識されているもの

上記に該当するものを、情報提供への感謝の意味も込めて、列挙したものです。

『気になった点に関して、情報提供をする』だけでも、十分開発に貢献できる事の証拠とも言えます。

今後も、Mercurial に関して疑問/質問/要望等があれば、お気軽に情報をお寄せください > 利用者の皆様

情報をお寄せ頂く手段に関しては、"Mercurial で困った時に" をお読みください。

なお、以前のものは、以下から参照できます。

本体に取り込まれた修正(changed by 藤原)

以下に列挙するものは、コミュニティからの情報を元に私が提案した修正のうち、Mercurial 本体に取り込まれたものです。

なお、私の手による修正履歴一覧から、記憶を頼りに目視で抽出したものなので、『俺の情報を元にパッチ作成しておいて手柄を独り占めかよ!?』的なものに心当たりがある方は、お気軽に情報をお寄せください(笑)。

続きを読む

2015-12-08

MVNO 回線と docomo 回線の利用コスト比較

ネット界隈では、「iPhone 等の高額機種を購入するのであれば、MVNO 回線 + SIM フリー版よりも、三大キャリアと契約する方が得」、という言及を多数見かけるので、本当にお得なのか、どの程度お得なのかを調べてみました。

年が明けたら、総務省の指導に基いて、料金体系が大きく変わると思われますが、とりあえず「2015 年末時点ではこうだった」という備忘録代わりに公開しておきます。

前提条件

これ以降で記載されている金額は、全て 2015-12-08 時点での税抜き価格です。また、事務手数料等の類は、簡略化のため除外しています。

購入機種は iPhone6s 64GB を想定します。

比較対象は以下の2つのプランです。

--- IIJmio docomo
通話 従量制 (10円/30秒)(*) 無制限 (カケホーダイ)
データ通信 3GB 2GB (データSパック)
その他 想定通話料: 400円(= 20分相当(*)) SPモード: 300円
月額使用料 2,000円 (1,600 + 400) 6,500円

(*) 「みおフォン」利用を想定

なお、月々の通話がコンスタントに 245 分(= 「みおフォン」併用で 4,900 円相当)を超える場合は、通話無制限のプランで月額使用料を安価にできる docomo 利用の方が明らかにお得ですから、このエントリをこれ以上読み進める必要はありません(笑)

また、大量の契約 ⇒ 売却を繰り返すことで、「実質的に安価に運用」するケースも無視します。

IIJmio + SIM フリー iPhone6s

IIJmio + SIM フリー iPhone6s を二年間 (24ヶ月) 維持する費用は、以下のようになります。

機種購入 98,800
月額基本料 48,000 (2,000 x 24)
総維持費 146,800

SIM フリー iPhone6s は、Apple ストアでの直販価格です。

docomo 回線 + iPhone6s

docomo 回線 + iPhone6s の場合は、維持費の算出が少々(非常に?)複雑です。

まずはベースとなる基本維持費を算出します。

機種購入 92,400
月額基本料 156,000 (6,500 x 24)
基本維持費 248,400

この基本維持費に対して、iPhone6s 購入に対する「月々サポート」や、他キャリアからの MNP に対する「乗り換えボーナス」や「チェンジ割」といった割引きが適用されます。

--- 新規/機種変 MNP
維持費ベース額 248,400 248,400
月々サポート -56,400 (-2,350 x 24) -70,800 (-2,950 x 24)
乗り換えボーナス 0 -10,0000
チェンジ割 0 -16,200 (-1,350 x 12)
割引き総計 -56,400 -97,000

割引きを適用した場合の総維持費と、IIJmio 利用に対する維持費の差額は、以下のようになります。

--- 新規/機種変 MNP
基本維持費 248,400 248,400
割引き総計 -56,400 -97,000
総維持費 192,000 151,400
IIJmio との差額 +45,200 +4,600

結論

docomo 回線の利用時は、以下のような割引き/値引きがありますが:

  • 乗換ボーナスや月々サポートの増額
  • 各種クーポンの利用
  • 販売店による値引き/キャッシュバック
  • MNP における下取り金額の増額
  • 固定回線との同時契約による割引き
  • 複数回線の同時契約による割引
  • 年齢による割引き

これらは基本的に、MNP による転入から一定期間限定だったり、新機種購入が前提になっているものが多いです。そのため、二年毎の MNP 転出や新機種購入が無い場合、三年目以降は割引きの適用が無くなると考えた方が良いでしょう。

そのため、三年目以降も同一キャリア/同一機種での利用を継続するのであれば、月額基本料で 6,500 - 2,000 = 4,500 円、年額にして 54,000 円だけ、三大キャリア利用の方が高額になってしまいます。

au や Softbank でも料金体系や割引き施策が同等程度であろうと想定するなら、MVNO 回線利用よりも三大キャリアの方がお得なのは、以下の全ての条件を満たすケースに限定される、と考えておけば良さそうです。

  • 二年毎に必ず MNP 転出+新機種購入
  • MVNO 回線利用時との差額以上に、割引き/値引きを利用

前者の条件を満たすということは、MNP 適用時であることを意味しますから、後者の条件である MVNO 回線利用時との差額は二年間総額で 4,600 円になります。

「二年間総額で 4,600 円」であれば、それ以上の割引き/値引きを利用するのは、比較的容易でしょう。

本エントリでの MVNO 回線利用で想定している月々 20 分(= 400円相当)の通話に対する、実際の通話の多寡によっても、この辺の条件は変わってきますから、後は個別の利用条件に応じた確認が必要でしょうね。

なお、「三大キャリア利用の方がお得な運用」を行うということは、このエントリの例で行くと、二年毎に 150,000 円程度の支出がコンスタントに発生することを意味します。

二年毎に新機種へと更新する必要が無いのであれば、仮に iPhone のような高額機種を購入する場合でも、総支出額では MVNO 回線を利用した方がお得と言えるでしょう。

まぁ、ちょいちょい PC の新調/買い足しをしていた散財振りを考えたら、言うほどの出費でも無い気がしないでもないですが(笑) > 昔の自分

2015-11-05

渡英時のモバイル通信環境に関する備忘録

先日、Mercurial 3.6 Sprint で渡英した際に、現地でのモバイル通信環境を確保するために、事前調査した内容と、実際に現地で確保した通信環境を使用してみての感想を、備忘録代わりに公開しておきます。

前提条件

ロンドンのモバイル通信事情は、ネットの情報曰く「ホテルや観光地、各種店舗等で、フリーの WiFi アクセスポイントが利用可能」とのことなのですが、その一方で:

  • booking.com でのホテル評を見ると、「WiFi が繋がらない」旨のコメントを多数見かける
  • 公衆 WiFi の可用性(施設密度/回線速度等)が、イマイチ不明
  • 「ロビー等の共有スペースでのみ WiFi アクセス可能」なホテルもある

特に、今回の様な「不案内な外国での一人行動アリ」な状況の場合、現在地の確認等の必要性からも、「常時繋がる」環境を確保しておきたいところです。

国際ローミングは値段が高く、請求金額にビクビクしながら使うことになりますから、個人的には端から候補外です。ここは、現地で使えるデータ通信用 SIM を入手するのが良さそうです。

なお、今回の渡英では、手持ちの Nexus7 2013 を主軸にしたモバイル通信環境を構築しますが、Nexus7 は音声通話に対応していません。

IP 電話を使う手もありますが、ただでさえ電波事情の良くわからない土地で、「遅延が大きく会話しづらい」という評価の IP 電話を頼みの綱にするのは、少々心元ありません。特に今回のような一人旅の場合、「音声通話が必要になる状況」=「事故や急病等の緊急事態」ですから、確実なインフラを確保しておきたいところです。

幸いイギリスの通信事業者は、音声通話機能に絞り込んだ電話 + プリペイドプランも安価でラインナップしているので、今回は Nexus7 向けのデータ通信用 SIM に加えて、音声通話用電話 (+ SIM カード) も調達することにしました。

ちなみに、今回の渡英では、一週間の滞在期間のうち:

  • 前半はスプリント会場に缶詰なので、外出時やホテルでのちょっとした通信ができれば良い
  • 後半三日間は専ら観光なので、モバイルでのネット利用はこの期間に集中する

という感じで、実質的には三日+アルファ的な利用になるので、データ通信量は 1GB 程度もあれば大丈夫だと思われます。

続きを読む

2015-08-01

Mercurial の Automatic Pooled Storage for Clones

本エントリでは、Mercurial 3.5 から導入された "Automatic Pooled Storage for Clone" について説明します。

なお、この機能の開発を主導した、"Mozilla の中の人" こと Gregory Szorc 氏自身も、"My Contributions to Mercurial 3.5" と題したブログエントリで、この機能について言及しています。

share 機能の概要

同一のプロジェクトにおいて、複数の作業を平行して行う場合に、hg clone でリポジトリを複製し、複製先で作業することもあるでしょう。

$ hg clone src cloned1
$ hg clone src cloned2
$ hg clone src cloned3

f:id:flying-foozy:20150801222555j:image

しかし、hg clone での複製による運用は、履歴情報(図中の色つき矩形部分)が各リポジトリに散在してしまうことから、場合によっては以下の様な点が気になるかもしれません:

  • 各リポジトリで保持される履歴情報には共通部分も多いので、ディスク領域の無駄がある
  • 作業成果(= 新規リビジョン)も各リポジトリに散在するため、反映忘れの可能性がある

続きを読む

2015-05-10

Why hg.mozilla.org is Slow

This entry is a Japanese translation of Gregory Szorc's "Why hg.mozilla.org is Slow". Thank you for permitting to translate the blog entry, Gregory !!

Gregory Szorc 氏は、Mozilla プロジェクトにおける大規模リポジトリでの運用経験を元に、性能改善等に関する多くの修正で、Mercurial の開発に貢献しています。

このエントリでは、Szorc 氏のブログにおける "Why hg.mozilla.org is Slow" を翻訳したものを、Szorc 氏の許可の元に公開します。

少々冗長ではありますが、翻訳との対応がわかりやすいように、段落毎に原文も併記しています。

なお、文中で度々登場する "pushlog" とは、Mozilla プロジェクトのインフラで使用されている Mercurial のエクステンションのことです。Mercurial 本体に取り込まれた修正の中でも言及されていますが、hg push 操作によるリポジトリへの履歴反映の内容を、SQLite でも記録する仕組みとのこと。

Mozilla's pushlog extension (an extension that opens a SQLite database and tries to tie its transaction semantics to Mercurial's transaction)

続きを読む

2015-05-04

江戸文字展〜ヴァチカン教皇庁図書館展II

「文字」つながりで、深川江戸資料館で開催されている「江戸文字展」と、印刷博物館で開催されている「ヴァチカン教皇庁図書館展II」を見学してきました。

深川江戸資料館

今回が初めての深川江戸資料館見学だったのですが、常設展示を見てびっくり!建物の地下には、江戸時代の街並みが再現されているではないですか!

f:id:flying-foozy:20150504101229j:image

f:id:flying-foozy:20150504101318j:image

続きを読む

2015-05-02

Mercurial の検閲 (censor) 機能

Mercurial 3.4 から、エンドユーザレベルで "censor" 機能を利用するための、censor エクステンションが同梱されるようになりました。

"censor" 機能とは、一言で言うなら「履歴に記録されたファイル内容の検閲」の事です。ここで言う「検閲」は、「内容の事前確認」よりも「不適切なデータの消去」の意味と考えてください。

censor の仕組み自体は、随分前からコア機能として取り込まれていたのですが、そろそろエンドユーザ向けに機能を公開しても良かろう、という判断が下されたものと思われます。

もっとも、公開されはしたものの、censor エクステンションのヘルプでは、基本的な事柄しか説明されていません。"File Censorship Plan" と題した Wiki ページが用意されてはいますが、これはどちらかというと、開発方針や実装上のポイント等の、内部寄りな話がメインで、使い方に関する話はあまり書かれていません。

そこで、このエントリでは、現時点で私の把握している範囲で censor 機能について説明しようと思います。

続きを読む