タグ

ブックマーク / methane.hatenablog.jp (14)

  • バグがあっても接触確認アプリをインストールしてほしい理由 - methaneのブログ

    3行サマリー: アプリではなくOSが接触履歴を取っている 今のアプリはOSの接触履歴をONにするだけ。バグがあっても使わなければ問題ない (特に東京では)今週の接触履歴が今後役に立つ可能性がある とうとう接触確認アプリが公開されました。これで今までよりも圧倒的に効率的に、陽性者の接触者に検査を受けてもらうことができるようになるかもしれません。ワクチンが開発されるまでの間、コロナと戦うための最大の武器になるかもしれません。 www.mhlw.go.jp しかし、Bluetooth が有効になってないと起動しない、利用規約に同意しないでアプリを終了しても同意したことになってる、などのリリース前の準備が明らかに不足してるであろう問題が報告され、炎上しています。 大前提として、これらのバグの責任はもちろんリリースした厚生労働省とその委託先の会社、そしてリリースを急がせた政府にあり、ベースとなったO

    バグがあっても接触確認アプリをインストールしてほしい理由 - methaneのブログ
    laiso
    laiso 2020/06/22
  • Go にジェネリクスがなくても構わない人たちに対する批判について - methaneのブログ

    なんども繰り返される話でうんざりなんだけど、繰り返されるたびに反論するのもアレなので、URL貼れるように記事にしておく。 Goが頑なにジェネリクスいらないというだけ他の言語勢から失笑買ってるというのは自覚して— {{alert()}} (@mizchi) 2017年9月19日 頑なに要らないと言ってる人が具体的にどの発言のことを差してるのか分からないけど、コア開発者たちはツールチェインやランタイムの進化を優先していただけで頑なに拒否してたりはしません。今はツールチェインやランタイムが大分進化したから、Goの適用範囲を広げるためにジェネリクスを含めて機能追加も検討し始めようかっていうフェーズです。 あとどの言語にもちょっと公平的な見方ができなくなった痛いファンはいるもので、そういった人たちをいちいちあげつらってこういう言い方で失笑するのは、別に止めはしないけど自分の格を下げるだけだと思う。

    Go にジェネリクスがなくても構わない人たちに対する批判について - methaneのブログ
    laiso
    laiso 2017/09/20
    やっとるな
  • Python 3.6 に向けて新しい dict 実装の人柱募集 - methaneのブログ

    会社のBlogに書いた通り、現在新しい dict の実装を試しています。 また、 shared key を削除して実装を削れた分、別の効率のいい特殊化 dict を実装して、 compact + shared よりも高い効率を狙うこともできます。 今はあるアイデアのPOCを実装中なので、採用されたらまた紹介します。 と書いたのですが、とりあえず Python のテストは完走するようになりました。 github.com Python-Dev に投稿したメール の通り、 Sphinx で Python の Doc を make html するのにかかるメモリ使用量は、 Python 3.6a2+ (Python 3.5 と同等の key sharing dict) では 176MB, 上の key sharing を外した新 dict 実装ブランチでは 160MB で、 key sharing

    Python 3.6 に向けて新しい dict 実装の人柱募集 - methaneのブログ
    laiso
    laiso 2016/06/30
  • ハネムーンナンバー - methaneのブログ

    ハネムーンナンバーという単語をご存じだろうか?以前までトラックナンバーと言われていたものである。 ただし、トラックナンバーから少し定義が変わり、「最低」何人が居なくなったらではなく、「平均」何人が居なくなったらとされている。(参考) で、今、僕は職場のハネムーンナンバーを下げる要因になっている。僕が突然居なくなったら、プロジェクトの運営に大きく支障をきたす。これは奢りとか自慢じゃなくて、悪い意味。僕が担当している機能は僕しか完全には把握しておらず、僕が突然居なくなったら、誰かがそこを担当するには数ヶ月の準備期間が必要になる。これは、半年に1回のペースで機種を開発する今の職場では致命的だ。 ドキュメント不足が原因だと指摘する人もいるだろう。でも、ドキュメントを書いても、根的な問題は解決しない。ドキュメントを書くことで3ヶ月必要だった準備期間が2.5ヶ月にはなるかもしれないが、0には絶対にな

    ハネムーンナンバー - methaneのブログ
    laiso
    laiso 2015/04/14
  • Mac で Python の開発環境構築(2013.11) - methaneのブログ

    しばらく Mac からおさらばしていたのですが、ゆえあって戻ってきました。 Python 3.3 ベースで Python 環境の構築をしたので、参考までに手順を残しておきます。 1. Homebrew で Python 3 をインストール とりあえずベースになる Python を用意します。いまならもう Python 3 を普段使い用にできるので、 Python 3 を用意します。 $ brew install python3 MacPorts でも大丈夫だと思います。 2. 自分用のデフォルト環境を作る システムの Python に直接自分が普段使うツール類をインストールするのは憚られるので、自分用のデフォルト Python を用意します。 Python 3.3 では venv が標準ライブラリにあるので、この手順で virtualenv を手動で準備する必要がなくなりました。 $ mk

    Mac で Python の開発環境構築(2013.11) - methaneのブログ
    laiso
    laiso 2013/11/06
  • Python の WebSocket ライブラリ - methaneのブログ

    ちょっと調べてみたら、想像してたよりもライブラリが充実していたので、各ライブラリの特徴をまとめておきます。 AutobahnPython Autobahn が Python 用にサーバー、クライアント用のライブラリを提供しています。 AutoBahn Python は Pure PythonTwisted に依存しています。 Twisted を使うなら Autobahn でいいのですが、そうでない場合は別のものを使う必要があります。 Autobahn は Python 用以外に JavaScriptJava(Android) 用にもライブラリを提供していて、また他の多くのプロジェクトでも利用されている WebSocket 用のテストスイートも提供しています。高品質な WebSocket ライブラリがいっぱい揃っているのは多分このテストスイートのおかげでしょう。 Tornado

    Python の WebSocket ライブラリ - methaneのブログ
    laiso
    laiso 2013/03/19
  • Flaskの闇 - methaneのブログ

    Merry, Xmas. Python advent calendar 2012 (#python_adv) 24日目の記事を、ミクパの再放送をBGMにお送りします。 今日は Flask のイケてないところとのつきあいかたを紹介します。 循環 import 問題 app.py 1ファイルだけの構成から成長してファイルを分け始めるときに突き当たるのが循環import問題です。 今まで1モジュールだった app.py を myapp/__init__.py にして、 view 関数を myapp/views.py の中で定義していきたいとします。 #myapp/__init__.py from flask import Flask app = Flask(__name__) import myapp.views #myapp/views.py from myapp import app @ap

    Flaskの闇 - methaneのブログ
    laiso
    laiso 2012/12/25
  • Python の GIL 排除のために Software Transactional Memory が注目されている理由 - methaneのブログ

    あるいは、Pythonは参照カウント方式だからGILを排除できないという誤解に対する回答。 参照カウントってアトミックなインクリメント・デクリメントさえあればセマフォとか使わないでも並列化できるんで、パフォーマンスが滅茶苦茶落ちるということはない。参照カウントに対する修正が頻発するんで、同じオブジェクトを複数のスレッドが頻繁に操作したらコア同士で1次キャッシュの取り合いになって性能上がらないけど、現状よりはだいぶマシだ。 Python で GIL の除去が難しいのは、PythonJava よりも高級なアトミック性をもつ言語だからだ。例えば、 # d1, d2 は両方ローカル変数にある辞書. d1.update(d2) これは、Python VMレベルでは、 d1 の参照、 update メソッドの参照、 d2 の参照、メソッドの呼び出し、という処理になるんだけど、このうち dict.

    Python の GIL 排除のために Software Transactional Memory が注目されている理由 - methaneのブログ
    laiso
    laiso 2011/09/19
  • Python と mix-in - methaneのブログ

    http://d.hatena.ne.jp/w_o/20081205#p3 ←のエントリは、タイトルと文とTB先に情報が分散していて引用しにくいので、このエントリで書きたい話題をまとめると、 Rubyはmix-inができるので、クラスの継承が必要無いので(親クラスのコンストラクタ呼び出しの書き方が)あまり関係無い。 Pythonでmix-inをするには多重継承をしないといけないので、 super を使った方式で親クラスのコンストラクタを呼び出さないといけない。 まず、 mix-in をぶっちゃけると、「メソッドの固まりを取り込む」ことで良いよね?メソッドの固まりは、混ぜる先にある既存のメソッドに依存していいし、混ぜる先は混ぜるのに必要な前提条件を満たさなければならない。 class CmpMixin(object): """__lt__ と __eq__ を利用して、 __le__, _

    Python と mix-in - methaneのブログ
    laiso
    laiso 2010/05/18
  • 委譲があれば継承がいらない? - methaneのブログ

    引き続き、Pythonistaによる http://d.hatena.ne.jp/w_o/20081204#p2 への反論 で、Rubyはmoduleを使って委譲ができるので、クラスの継承が必要無いのであまり関係無い。 意味が判らなかったんだけど、http://synth.jp/pg/2007/04/ruby_10.html のことかな。 Pythonでこう書くのとどう違うんだろう? >>> class Foo(object): ... def __init__(self): ... pass ... def foo(self): ... pass ... >>> class Bar(object): ... def __init__(self): ... self._foo = Foo() ... self.foo = self._foo.foo ... >>> b = Bar() >>

    委譲があれば継承がいらない? - methaneのブログ
    laiso
    laiso 2010/05/18
  • なぜbzrはhgより遅いのか - methaneのブログ

    (hgの部分をgitに置き換えてもOK) bzrとhgを比較するベンチマークだと、特にcloneにおいてbzrが遅い。 bzrとhgにおける、リポジトリとブランチの扱いの違いについて まず、bzrは色々な使い方に対応できるようにしようとしてリポジトリとブランチと作業ツリーを分離して設計している。 bzrの .bzr というディレクトリは、作業ツリー、ブランチ、リポジトリを含む場合もあれば含まない場合もある。 bzr init-repo --no-tree foo # foo/ はリポジトリ bzr init foo/bar # foo/bar/ はブランチ bzr co --lightweight foo/bar baz # baz/ は作業ツリーさて、bzrのリポジトリ、ブランチ、作業ツリーとは何者か。 リポジトリというのは、リビジョンを格納するものだ。リビジョンとはあるディレクトリツリ

    なぜbzrはhgより遅いのか - methaneのブログ
    laiso
    laiso 2009/09/21
  • s.decode('utf8') よりも unicode(s, 'utf-8') の方が速い - methaneのブログ

    http://groups.google.com/group/comp.lang.python/browse_thread/thread/314a3043ea63319f/ unicode vs s.decode unicodeはLOAD_GLOBALで、s.decodeはLOAD_ATTRでスタックに積まれる。で、LOAD_GLOBALの方が速い。 さらに言えば、何度もデコードを行うのであれば u = unicode のようにローカル変数にするとさらに速くなる。LOAD_ATTRやLOAD_GLOBALは最適化で消すことが出来ないので、明示的にローカル変数に束縛することはCPythonに限らず有効な手法だ。 'utf8' vs 'utf-8' 単なる1タイプの問題だけど、内部的には 'utf-8' が利用されており、 'utf8' を使うと 'utf-8' だと判断するのに1クッション必

    s.decode('utf8') よりも unicode(s, 'utf-8') の方が速い - methaneのブログ
    laiso
    laiso 2009/08/17
  • PyQtのライセンス - methaneのブログ

    http://d.hatena.ne.jp/gunyara-python/20090508/pyqt45_lxml_install_and_acquire_windows_binary 最近LGPL 2.1もライセンスの選択肢に入ったので、もはや避ける理由もないだろう。 Qtのライセンスは4.5から GPL/LGPL/商用ライセンス になったけど、PyQt4.4のライセンスは GPL/商用ライセンス のまま。 PyQt4.5は開発終盤なんだけど、ライセンスをどうするかは最近MLでアナウンスがあり、GPL/商用ライセンスになることが決まった。 Nokiaがriverbankも買収して、PyQtをQtの一部にしてくれたら一番うれしいんだけどね。 PyQt4.5ではかなりいろいろな改善がされる。Py3k対応はまあいいとして、connectが使いやすくなるのは大きい。他にも、"from PyQt4

    PyQtのライセンス - methaneのブログ
    laiso
    laiso 2009/05/10
  • Ubuntu (Debian) で、余計なパッケージをアンインストールする方法 - methaneのブログ

    aptitude を使うと、簡単にパッケージのアンインストールや依存関係の設定ができる。 たとえば、ubuntu-desktop から余計なパッケージをアンインストールする場合は次のような手順になる。 ubuntu-desktop パッケージを開いて、「依存」の行にカーソルを当てて m を押すと、一気に ubuntu-desktop パッケージが依存しているパッケージを「手動インストール」に設定できる。 「自動インストール」されたパッケージは、そのパッケージに依存しているパッケージが無くなると自動で消えるけど、「手動インストール」したパッケージは手動で削除しないと消えない。 なので、この段階で ubuntu-desktop にカーソルを持っていって _ を押すと、 ubuntu-desktopだけがアンインストールされる。 次に、ubuntu-desktop が依存していたパッケージの中で

    Ubuntu (Debian) で、余計なパッケージをアンインストールする方法 - methaneのブログ
    laiso
    laiso 2008/12/26
  • 1