タグ methane
人気順 10 users 50 users 100 users 500 users 1000 userspyenvを初心者に薦めるのはもうやめよう - methaneのブログ
Pythonのパッケージ・プロジェクト管理ツールはまだ乱立状態にあって、どれを使えばいいのかわからないから慣れたpyenv+pipを使おうという判断をする人がいるかもしれない。その判断自体は別に否定しないけれども、初心者に教える時にpyenvを教えるのはもうそろそろやめてほしい。 Pythonをソースからビルドするので、コ... 続きを読む
タイムスタンプの精度を落とすときは切り捨てろ - methaneのブログ
とあるプロジェクトでナノ秒からミリ秒への変換で四捨五入してきた人がいて、時刻を扱うときは保存精度未満は切り捨てるべきというのが常識になっていないなーと思ったので。 2023-10-01 を、何年か表示する時に、2024年に丸める人はいないだろう。 13:45 が何時か表示する時も、13時と表示するだろう。(口頭で何時?と... 続きを読む
Goのerrorがスタックトレースを含まない理由 - methaneのブログ
Twitterでこんな記事を見かけたので。 zenn.dev ジェネリクスの件もそうですが、Goの言語設計は現実主義なのになにか特別なポリシーによるものだと宗教化されてしまって、ファンには勝手に崇拝されてアンチにはディスられがちだなーと感じます。 Goのエラー処理を改善する実験プロジェクトxerrorsがGo本体のerrorsにマー... 続きを読む
PythonのマルチスレッドWSGIサーバーの選定 - methaneのブログ
今までuWSGIをシングルスレッド、マルチプロセスで使っていたのだけれども、昔に比べて外部のAPI呼び出しが増えているのでマルチスレッド化を検討している。 uWSGI uWSGIでマルチスレッドを有効にした時は、各workerスレッドがacceptする形で動作する。スレッド数以上の接続をacceptすることがないので安心。 プロセス内... 続きを読む
構造化ログのフォーマット logfmt vs JSON lines - methaneのブログ
構造化ログのプラクティスをあちこちで調べていたら、logfmtを推奨する記事を見つけたので調べてみました。 先に結論を言うと、JSON linesを使っておくのが良さそうです。 logfmt について logfmtとはスペース区切りで key=value を並べたフォーマットです。文字列にはクォートとエスケープによってスペースや改行を含め... 続きを読む
uvとRye - methaneのブログ
先週にRuffを開発しているAstralがuvを発表しました。 astral.sh uvは現在のところはvenv, pip, pip-toolsの基本的な機能を提供していますが、将来は"Cargo for Python"になることを目標にしています。 一見すると乱立しているPythonのパッケージ管理ツールにもう一つ加わったように見えますが、Ryeの開発者のArminとuv... 続きを読む
Python 3.12 から Unicode のサイズが小さくなります - methaneのブログ
Python 3.11 までは、空文字でも64バイトのメモリを使用していました。(64bitプラットフォームの場合) Unicodeの内部表現のうち一番小さい PyASCIIObject 構造体が48バイトで、その構造体の後ろにASCII文字列が続きます。その文字列はNUL終端されているので、空文字列でも1バイト追加されて49バイトになります。 >>> sys... 続きを読む
Python 3.15からデフォルトのエンコーディングがUTF-8になります - methaneのブログ
Pythonがファイルを開くときなどに使われるエンコーディングはロケール(WindowsではANSIコードページ)依存でした。 Unixの世界ではどんどんUTF-8ロケールが一般的になっている一方、WindowsのANSIコードページはなかなかUTF-8になりません。 そのために、Unixユーザーが open(filepath) のようにエンコーディングを指... 続きを読む
Python 3.11 からデフォルトの文字列ハッシュアルゴリズムが SipHash13 になります - methaneのブログ
Pythonの文字列やバイト列に対するハッシュアルゴリズムは、HashDoS対策としてPython 3.4から SipHash24が使われていました。 その後、ラウンド数を減らしたSipHash13でも十分に安全だとして2015年にRustが、2016年にRubyが、SipHash24からSipHash13への切り替えを行いました。 https://github.com/rust-lang/rust/issue... 続きを読む
PYTHONWARNDEFAULTENCODINGを使おう - methaneのブログ
methane.hatenablog.jp この記事で紹介した、 open() などでエンコーディングを指定せずに暗黙でデフォルトのエンコーディングが使われた時に EncodingWarning を発生させる機能のPEPが受理され、実装し、昨晩リリースされた Python 3.10a7 に入りました。 .bashrc などで extern PYTHONDEFAULTENCODING=1 などとしてお... 続きを読む
PythonのデフォルトエンコーディングをUTF-8にするために - methaneのブログ
Python がテキストファイルを開く時のデフォルトエンコーディングがUTF-8でないことは、多くのWindowsユーザー、特にプログラミング初心者にとって障害になっています。 UnicodeDecodeError で検索すると、多くのWindowsユーザーが問題に遭遇しているのがわかります。 https://qiita.com/Yuu94/items/9ffdfcb2c26d6b3379... 続きを読む
go-sql-driver/mysql のバッファサイズが4KiBなのは小さすぎる?? - methaneのブログ
qiita.com そもそも fetchall があればパフォーマンスが上がるわけでは無いので。https://t.co/O4u3zZcnYx これを16KiBにしたらパフォーマンス上がるはず。— Inada Naoki (@methane) December 17, 2020 go-sql-driver/mysql のバッファサイズは4KiBで、大きいクエリを送るなり大きいパケットを受信すれば自動的に増えま... 続きを読む
PEP 8騒動について - methaneのブログ
今週PEP 8の小さい変更についてMLで騒動が起こってしまいました。 該当のコミットはこれです。 PEP 8: Change requirement to adhere to Standard English (#1470) · python/peps@0c6427d · GitHub 変更点はごくごくシンプルなものです。 - When writing English, follow Strunk and White. + Ensure that your comments... 続きを読む
Python 3.10 の開発(お掃除)に参加しよう - methaneのブログ
Python 3.9 がベータに入り、masterブランチはPython 3.10の開発に入りました。 はっきりとした区分はないものの、Python 2.7との互換性のために長くdeprecated状態を維持していたメソッドの削除に踏み切るバージョンになりそうです。そこでこんなIssueを作ってみました。 Issue 41165: [Python 3.10] Remove APIs depre... 続きを読む
バグがあっても接触確認アプリをインストールしてほしい理由 - methaneのブログ
サマリー:アプリではなくOSが接触履歴を取るので、今はとりあえずOSの機能を有効にするためだけにアプリをインストールしよう とうとう接触確認アプリが公開されました。これで今までよりも圧倒的に効率的に、陽性者の接触者に検査を受けてもらうことができるようになるかもしれません。ワクチンが開発されるまでの間、... 続きを読む
ISUCON9予選参加記 (5位通過) - methaneのブログ
mapk0y (アプリ), makki_d (インフラ) とともに「ようするにメガネが大好きです」というチーム名で参加し、2日間を通して5位のスコアで通過しました。 選択言語は Go です。ソースコードはこちらで公開しています。 GitHub - methane/isu9q POST /buy 初期対策 CPUプロファイルを見ると login の bcrypt が重いのはすぐ... 続きを読む
RHEL 7.5 で Python 2.7 が deprecated になりました - methaneのブログ
2018 - 04 - 11 RHEL 7.5 で Python 2.7 が deprecated になりました python Tweet Red Hat Enterprise Linux 7.5 がリリースされ、そのリリースノートで " Python 2 has been deprecated" とアナウンスされました。 Chapter 54. Deprecated Functionality ... 続きを読む
Homebrew の Python で何が変わって何がもとに戻ったのか - methaneのブログ
2018 - 03 - 11 Homebrew の Python で何が変わって何がもとに戻ったのか python rcmdnk.com 大分混乱した状態になってしまったので、今年何が変わってきたのか、今回の変更でどこまでもどったのかを整理しておきます。 1/19 python という formula が python コマンドをインストールしなくなりました。 python コマンドを起動すると、... 続きを読む
3月1日、Homebrew のデフォルトの Python が Python 3 になります。 - methaneのブログ
2018 - 02 - 28 3月1日、Homebrew のデフォルトの Python が Python 3 になります。 python 以前からアナウンスされていた 通り、 3/1 (日本時間では 3/2 になるかも)にデフォルトの Python が Python 3 に切り替わる予定です。 現在そのプルリク エス トがレビュー中です。 github.com 具体的には、今まで " python... 続きを読む
ISUCON7 予選問題の公開と解説 : ISUCON公式Blog
出題担当の @methane です。今年の予選問題について解説します。 問題の公開 予選問題のベンチマーカーと参照実装のコードと、Ubuntu 16.04 上に予選問題を動くようにするための手順を公開します。感想戦にご利用ください。 予選問題のリポジトリ 複数台構成について 今年のISUCON予選では、予選としては初めて複数台構成を利用してみました。 倍率が高くなった現代のISUCONにおいては、... 続きを読む
Go が for ループをやめるために足りないもの - methaneのブログ
2017 - 09 - 24 Go が for ループをやめるために足りないもの golang ジェネリクス の話題になると常に出てくるのが、 for ループの代わりに関数型スタイルで書きたいという要望です。 for ループで書くのは、可読性が悪く、筋力がいるとまで言う人もいます。 しかし、 ジェネリクス が追加されても、このスタイルのプログラミングは実用的にはなりません。 ジェネリクス 以外にも... 続きを読む
Re: Re: Go にジェネリクスがなくても構わない人たちに対する批判について - methaneのブログ
2017 - 09 - 22 Re: Re: Go にジェネリクスがなくても構わない人たちに対する批判について golang kmizu.hatenablog.com Twitter である程度レスをしたのですが、やはり繰り返される話題なので残る形で書いておきたいと思います。 Goユーザーの中で、 ジェネリクス がなくても構わないと主張するユーザーへの批判はしたけど、Goユーザー全てがそうだと思っ... 続きを読む
Re: Go にジェネリクスがなくても構わない人たちに対する批判について - kmizuの日記
2017 - 09 - 21 Re: Go にジェネリクスがなくても構わない人たちに対する批判について 先日自分がGoについてつぶやいたものが、 id:methane さんに捕捉されていて、それに対する反論記事 methane.hatenablog.jp があがっていたので、それに対する所感を書いてみました。 前置き Goや言語批判に関するスタンスを誤解されると嬉しくないので、最初に書いておきます... 続きを読む
Go にジェネリクスがなくても構わない人たちに対する批判について - methaneのブログ
2017 - 09 - 19 Go にジェネリクスがなくても構わない人たちに対する批判について golang なんども繰り返される話でうんざりなんだけど、繰り返されるたびに反論するのもアレなので、URL貼れるように記事にしておく。 Goが頑なに ジェネリクス いらないというだけ他の言語勢から失笑買ってるというのは自覚して — {{alert()}} (@mizchi) 2017年9月19日 頑なに... 続きを読む
Windows では2020年を待たずに Python 2.7 が使い物にならなくなっていく - methaneのブログ
2017 - 02 - 21 Windows では2020年を待たずに Python 2.7 が使い物にならなくなっていく python 昨日 mysqlclient 1.3.10 をリリースしました。 今までは Windows 版の wheel は Python 2.7 だけに提供していたのですが、 1.3.10 からは 3.5 と 3.6 だけに提供して 2.7 はドロップしました。 そもそも... 続きを読む