タグ

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

  • RHEL 7.5 で Python 2.7 が deprecated になりました - methaneのブログ

    Red Hat Enterprise Linux 7.5 がリリースされ、そのリリースノートで "Python 2 has been deprecated" とアナウンスされました。 Chapter 54. Deprecated Functionality - Red Hat Customer Portal Python 2 has been deprecated Python 2 will be replaced with Python 3 in the next Red Hat Enterprise Linux (RHEL) major release. 次のメジャーバージョンでは Python 2 が Python 3 に置き換えられるから、 RHEL 7.5 から Python 2.7 が deprecated 扱いになるということです。 Ubuntu 18.04 LTS では m

    RHEL 7.5 で Python 2.7 が deprecated になりました - methaneのブログ
  • Windows では2020年を待たずに Python 2.7 が使い物にならなくなっていく - methaneのブログ

    昨日 mysqlclient 1.3.10 をリリースしました。 今までは Windows 版の wheel は Python 2.7 だけに提供していたのですが、 1.3.10 からは 3.5 と 3.6 だけに提供して 2.7 はドロップしました。 そもそも今まで Python 3 に wheel を提供できてなかったのは、 MySQL Connector/C の VC14 (VS2015) に対応したライブラリが提供されておらず、 Python 3.5, 3.6 は VC14 でビルドされていて VC12 用のライブラリにリンクすると大量のエラーでるわ自分で手順読みながら頑張って MySQL をソースからビルドしてもなんか動かないわで諦めてたからです。 それが、2年待て、よーーーやく MySQL Connector/C 6.1.9 から VC14 のライブラリが同梱される用になりまし

    Windows では2020年を待たずに Python 2.7 が使い物にならなくなっていく - methaneのブログ
    yogasa
    yogasa 2017/02/22
  • 依存するパッケージは厳選しよう - methaneのブログ

    japan.zdnet.com JS界隈が大騒ぎになった事件だけど、こういった事件自体は完全に防ぐことは不可能だと思う。 今回は依存ライブラリが削除されるだけで済んだけど、 npm install するだけで ~/.ssh ディレクトリを zip にしてどこかに送信するような悪質な攻撃であれば、単にCIが止まるどころでなく、世界中のエンジニアの秘密鍵がばらまかれてあちこちのサーバーにssh可能な事態になったわけで、そんな悪質な攻撃を bugfix なマイクロバージョンアップとして公開される事もありえたわけだ。 第三者のパッケージに依存するということは、それだけのリスクを背負い込むということだ。だが、逆に外部のライブラリに依存しないようにすると、生産性が落ちてしまう。 なので、コードを読む、信頼できるメンテナの公開しているパッケージを選ぶなどといった方法で、リスクとメリットのバランスを取って

    依存するパッケージは厳選しよう - methaneのブログ
    yogasa
    yogasa 2016/03/25
  • 「Go による Web アプリケーション開発」書評 - methaneのブログ

    Go による Web アプリケーション開発 を読みました。 (まだ後半はパラパラめくっただけですが) このGo のチュートリアルでは無いです。 A Tour of Go とか The Go Programming Language で基的な文法などは抑えた状態で読むべきでしょう。 こので最初のサンプルアプリケーションは、 WebSocket によるチャットです。まず単に動くだけのチャットを作ってから、 Github などと OAuth2 で認証したり、各所からアイコンを引っ張ってきたりと、 Go で小さめの Web アプリを作るときに実用されそうな要素が並んでいます。 後半のサンプルアプリケーション (Twitter と連携する voting アプリ)では MongoDB や NSQ を使いはじめるので、ちょっとそのミドルウェアを使わない人にとっての実用性が落ちてきます。しかしこ

    「Go による Web アプリケーション開発」書評 - methaneのブログ
    yogasa
    yogasa 2016/02/22
  • CPython の GC チューニング - methaneのブログ

    ISUCON は Go で参戦しているんだけど、複数のチームが Python で予選通過したらしいので、応援のために Tips を公開していこうと思う。 目次 CPython の GC について 統計情報を出力する 第一世代GCの間隔を調整する Out of Band GC 循環参照を見つけて対処する CPython の GC について CPython のGCは参照カウント+循環参照コレクタだ。そして参照カウント方式は(幾つかの欠点はあるものの)Webアプリのボトルネックになったりはしにくい。 なのでGCチューニングの基は次のようになる。 循環参照を避ける 循環参照コレクタの呼び出しタイミングを制御する 循環参照コレクタは、生きているオブジェクトの数がある程度増えると第一世代が実行され、第一世代が一定回数実行されると第二世代が、第二世代が一定回数実行されると第三世代が実行される。 各世代

    CPython の GC チューニング - methaneのブログ
  • Python の新しいプロファイラ vmprof が面白い - methaneのブログ

    PyPy 2.6 と同時に、 vmprof という CPython/PyPy 用のプロファイラが登場しました。 私はまだ PyPy では使っていませんが、CPythonプロジェクトをこれでプロファイル取ってみたらなかなか面白かったので紹介します。 概要 Python にはもともと標準ライブラリとしてプロファイラ (cProfile) が付いてきていますが、これは関数の呼び出しと戻りでコールバック関数を呼び出しつつ実行時間を計測するタイプのプロファイラで、短時間でも正確なプロファイルが取れる反面、オーバーヘッドが大きく、小さい関数をたくさん呼び出す部分がオーバーヘッドでより大きく見えてしまうなどの問題がありました。 これと別の種類のプロファイラとして、定期的にサンプリングして、サンプルが多いところが実行時間も多いハズ、というプロファイラもあります。こちらはある程度の量のサンプルを集めないと

    Python の新しいプロファイラ vmprof が面白い - methaneのブログ
  • Web アプリケーションにおいては Python 3 への移行は簡単だという話 - methaneのブログ

    Python 2 / 3 両対応のライブラリをメンテナンスしている人にとって、 Python 3 の メリットは享受できずメンテナンスコストだけが上がるつらい状況がずっと続いています。 しかし、「Python 3 への移行が大変」というのは、Python 2 を捨てるのが大変、 Python 2/3 両対応の ライブラリをメンテナンスするのが面倒という意味です。 アプリケーションであれば、 Python 2 対応のプロジェクトPython 3 に対応させると同時に Python 2 への対応を切れるのでずっと楽ですし、さらに新規プロジェクトPython 3 で始めるのは もっと楽です。 特に Web 系では、 (Google App Engine などの例外はあるものの)自分で Python のバージョンを 選べることが多いし、主要なライブラリも Python 3 対応ができている

    Web アプリケーションにおいては Python 3 への移行は簡単だという話 - methaneのブログ
  • PyCon JP 2014 の1日目 keynote について - methaneのブログ

    今年は娘ができたこともあり、 PyCon JP に発表だけじゃなく参加もしませんでした。 (娘と次第ですが、来年からはまた行きたいと思っています。) さて、 Twitter を眺めていると Python 3 に対するネガティブな反応がいきなり 流れ始めました。元になったのは id:fckey さんの PyCon JP 2014 1日目参加レポート #pyconjp という Blog 記事の、1日目 keynote の感想のようです。 PyCon JP 2014 の発表は YouTube で配信されていたので、そちらで keynote を 聞いた上で補足していきます。 ただし、英語のリスニングは苦手なので、 @kennethreitz さんの代弁や翻訳ではなく、 あくまでも個人的な意見です。 CH01 Opening~Keynote: Kenneth Reitz - YouTube 先に一

    PyCon JP 2014 の1日目 keynote について - methaneのブログ
  • Python でシェル経由でコマンド実行するときのバッドノウハウ - methaneのブログ

    PHPだってシェル経由でないコマンド呼び出し機能が欲しい コマンド実行でシェルが怖いなら使わなければいいじゃない どちらの記事でも Python の subprocess を使ってシェルを介在せずにコマンドを実行する方法が紹介されています。 シェルを介在すると、エスケープの問題考えるのが面倒だったり、 kill してみたらシェルだけ殺して肝心のコマンドがずっと残ってるというアホみたいな問題を避けられるのでお勧めです。 いい子はこれを使いましょう。 この記事ではどうしてもシェルの機能が使いたい場合や、 subprocess の PIPE の組み立てが面倒な場合のための、バッドノウハウを紹介していきます。 ちなみに、バッドノウハウと呼んでるのは、安全安心 one size fits all ではなく、メリット・デメリット・やり方をいちいち調べないといけなくて、しかもその調べる行為がほとんどコン

    Python でシェル経由でコマンド実行するときのバッドノウハウ - methaneのブログ
  • 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のブログ
    yogasa
    yogasa 2013/11/06
  • GoCon で発表してきました - methaneのブログ

    僕の発表 発表資料というかメモ 発表時間が20分だったので、ISUCONの紹介と、 Go 凄いよってことをアピールしてきました。 あとで流れてる Tweet を見ていたら、僕が一番感動した部分があまり拡散されてなかったので こちらで繰り返しておきます。 去年の ISUCON2 に参加した時、最終的にはカーネル空間で動く Webサーバー兼Memcachedサーバーの recaro を作ったのですが、それ以前に Meinheld や Gonet/http を nginx 並に速くしようと チューニングしていました。 その時に accept4 対応、 nonblock な write を分ける (当時の Go 1.0 ではシステムコールは 基的にブロックするものとして他の goroutine を別スレッドで動かすための処理がシステムコールの たびに実行されていた)、 Date ヘッダを毎

    GoCon で発表してきました - methaneのブログ
  • テストコードがないコードだけが技術的負債じゃないよ - methaneのブログ

    私は「レガシーコード改善ガイド」を読んだことがないのですが、世間的に「テストコードがないコードが技術的負債」という認識が広まっているようです。 レガシーコード改善ガイドを批判するつもりは全くありませんが、たんにそのの中で使われている「レガシーコード」の定義に一致する物だけが技術的負債だという考えには反対します。 技術的負債とは、将来必要とされるメンテナンスコストの期待値だと思います。全てのコードは、メンテナンスを放棄するまでは技術的負債です。一方、メンテナンスコストを差し引いた上でそのコードが将来生み出す利益の期待値が、そのコードの資産価値だと思います。テストコードがないコードでも、利益を出すなら正の資産になります。 もちろん、資産価値をより大きくするために、技術的負債を減らすことは良いことです。技術的負債を下げる=メンテナンスコストを下げることで、テストはその有力な手段の一つです。他に

    テストコードがないコードだけが技術的負債じゃないよ - methaneのブログ
    yogasa
    yogasa 2013/06/09
  • Chef-solo の代わりに fabric を使う - methaneのブログ

    Fabric は ssh 経由でリモートをゴニョゴニョするツールなので、デプロイツールとして見られがちですが、 cuisine など冪等な操作をサポートするライブラリを組み合わせれば手軽な構成管理ツールになります。 chef-solo に比べてターゲットとなるマシンへのインストールが不要なので vagrant と EC2 の Amazon AMI で同じように home ディレクトリを構築するようなスクリプトを書くことも可能です。 また fabtools を使えば、簡単に vagrant を対象にすることができます。 インストール: $ pip install fabric fabtool cuisine fabfile.py を作ります (サンプル): 使い方: $ fab vagrant package_upgrade setup_devtools # 開発マシンにいつもインストールし

    Chef-solo の代わりに fabric を使う - methaneのブログ
  • Python の WebSocket ライブラリ - methaneのブログ

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

    Python の WebSocket ライブラリ - methaneのブログ
  • 勝手に添削 (C vs Python vs Ruby vs Haskell(無意味な処理deベンチマーク)) - methaneのブログ

    なんか指名されたので、 C vs Python vs Ruby vs Haskell(無意味な処理deベンチマーク) このコードを Pythonic に書き直していきます。 ちなみに、 Python は 3.3 を使います。 まず、最初のコード n = 4000 a = [] count = 1 for x in range(n): a.append([]) for y in range(n): a[x].append(count) count += 1 list(map(lambda e: e.reverse(), a)) print(a[-1][-1]) time コマンドで実行速度測ったら 5.1sec でした。 さて、 Python はローカル変数とグローバル変数でアクセス速度が違います。(呼び出した関数の中などからグローバル変数を書き換えられる可能性はありますが、ローカル変数は外

    勝手に添削 (C vs Python vs Ruby vs Haskell(無意味な処理deベンチマーク)) - methaneのブログ
  • Python のカッコ無いところを紹介してみる - methaneのブログ

    Haskellのカッコいいところを紹介してみる をみて、 Python と比較してみようと思います。 以下、 heading は上記記事の heading の引用で、 Python のことではなく Haskell の特徴です。 数学英語の知識で「読める」表現が多い 一応、 instanceof など多くの2引数関数が、 infix で書いたら左に来るものが第一引数というルールを守っているので、頭の中ではそれで引数の順序を補完して、 if instanceof(x, int) は "if x is instance of int" と読んでいます。引数の順序がどっちだっけ?と迷うことはほとんど無いです。 しかし残念ながら Python は中置記法はありません。構文をシンプルに保つ方を取っているんでしょうね。 import Data.List import Data.Function xs

    Python のカッコ無いところを紹介してみる - methaneのブログ
  • msysのls.exeで日本語ファイル名を… - methaneのブログ

    lsで日語ファイル名があるディレクトリを表示してみると、日語が化ける。 これは、lsのデフォルトの動作が、出力先がターミナルだった場合にコントロールキャラクタを表示しないようにしているから。 これをやめさせるオプションは、--show-control-chars。 なので、$HOME/.profileに、以下のように書いておくと、MSYSのbashをcmd.exeで常用できる。*1 alias ls='ls --color=auto --show-control-chars' alias ll='ls -l' alias l='ls -CF'ついでに、コマンドプロンプトに入るときに、 doskey ls=ls --color=auto --show-control-chars $*としておくと、コマンドプロンプトからdirと間違ってlsしても大丈夫になる。 *1:rxvtだと、日語環

    msysのls.exeで日本語ファイル名を… - methaneのブログ
    yogasa
    yogasa 2011/05/20
  • 1