ブックマーク / qiita.com/methane (10)

  • ログを gzip で圧縮しているなら zstd を導入しよう - Qiita

    はじめに zstd コマンド(zstdless, zstdcat, unzstd なども)は gzip にも対応しています。特にデコードは拡張子を見て自動で gzip と zstd を切り替えてくれるので、 gzip 圧縮されたログと zstd 圧縮されたログが混在している環境でも透過的に扱うことができます。 なので gzip から zstd への切り替えは次のように段階的に進めることができます。 zstd コマンドツール群のインストール 圧縮されたログを扱うときに zstd を使い始める 圧縮フォーマットを zstd に切り替える 性能比較 Debian 9.3 で gzip 1.6 (aptでインストールしたもの) と zstd (1.4.0) を比べてみます。 対象となるファイルは ltsv でゴチャゴチャとアプリの情報を混ぜた重めの apache のアクセスログです。 (5,367

    ログを gzip で圧縮しているなら zstd を導入しよう - Qiita
    tmatsuu
    tmatsuu 2019/06/16
    gzipを高速に圧縮/伸長したいときはいつもpigzをインストールするようにしてる。pigzとzstdだとどうだろうか。とはいえzstd使っていき
  • http.ListenAndServe() をインターネットに公開してはいけない - Qiita

    http.ListenAndServe() を使ったサーバーをプロダクションに投入していたのですが、海外からのアクセスが多くなったころにリソースリークが発覚しました。 ListenAndServeのドキュメント ListenAndServeのソースを見るとこうなっています。 func ListenAndServe(addr string, handler Handler) error { server := &Server{Addr: addr, Handler: handler} return server.ListenAndServe() } addr, handler 以外は http.Server のnil値がそのまま使われている事がわかります。この構造体にはいくつかのタイムアウト値がありまが、nil値で初期化されるとタイムアウトなしの状態になってしまいます。 Server型のドキ

    http.ListenAndServe() をインターネットに公開してはいけない - Qiita
    tmatsuu
    tmatsuu 2019/04/27
    あらまぁなんと。
  • Python 開発者は -W default オプションを使おう - Qiita

    Python はデフォルトで多くの警告を表示しません。これはPython開発者ではないエンドユーザーが警告を見た時に混乱するのを防ぐためです。 デフォルトで ignore される Warning は次のとおりです。 (ref: https://docs.python.org/3/library/warnings.html#default-warning-filters) DeprecationWarning PendingDeprecationWarning ImportWarning BytesWarning ResourceWarning これらの warning を Python 開発者が表示しないと、せっかく使っているライブラリが長期間 Deprecation 期間を設けていてもその Warning に気づかないとかいう事が起きます。 また、 warning システムは同じ場所から

    Python 開発者は -W default オプションを使おう - Qiita
    tmatsuu
    tmatsuu 2018/06/03
    なんてこった。知らなかった。使っていき
  • pip の constraints の正しい用途 - Qiita

    $ pip install -r requirements.txt $ pip install flask Collecting flask Downloading Flask-0.12.2-py2.py3-none-any.whl (83kB) 100% |████████████████████████████████| 92kB 3.7MB/s Collecting Jinja2>=2.4 (from flask) Using cached Jinja2-2.10-py2.py3-none-any.whl Collecting click>=2.0 (from flask) Downloading click-6.7-py2.py3-none-any.whl (71kB) 100% |████████████████████████████████| 71kB 3.8MB/s ...

    pip の constraints の正しい用途 - Qiita
    tmatsuu
    tmatsuu 2018/01/28
    メモ
  • Rubyist が pyenv を使うときに知っておいてほしいこと - Qiita

    はじめに 機械学習ブームなどにより、 Python を触り始める Rubyist が増えてきたと思います。その際に問題になりやすいのが環境構築です。Rubyだと rbenv がデファクトスタンダードになっているのに、なぜか Python には pyenv に否定的な意見が多いんですよね。 私は pyenv を使っていますし、便利だと思っています。また、 Ruby は殆ど使わないのですが、RubyPythonのツールスタックの違いについても調べました。 (参考: gem, bundler と pip, venv の比較) その視点から、 Rubyユーザーが自分でpyenvの使い方を自分で決める上で知っておいた方が良いだろうなと思う RubyPython の環境の違いをまとめてみます。 tl;dr 丁寧に解説しても、「Python使うにはこんな長い記事を読まないといけないの」とすぐに否

    Rubyist が pyenv を使うときに知っておいてほしいこと - Qiita
    tmatsuu
    tmatsuu 2017/05/20
    現状確認としても良いまとめ
  • LC_ALL=C.UTF-8 は安全か - Qiita

    普段は mac で ja_JP.UTF-8 を使ってるけど、 Linux では予想しない挙動の変化が起きるのを嫌って C locale を使う人、いますよね。僕も常にではないけれど結構 C locale 好きです。 でも、 C locale を使うと、 vim が (set encoding=utf-8 を書いていないと) デフォルトで latin1 になって文字化けしまくったり、 Python が (export PYTHONIOENCODING=utf-8 しておかないと) 標準入出力がasciiになって UnicodeError になったりしてツラい気持ちになることもあります。 そんなときは、 LANG=C, LC_CTYPE=en_US.UTF-8 で LC_ALL は設定しないようにするのがただしい locale の設定方法なんですが、最近のモダンな Linux に搭載されてる

    LC_ALL=C.UTF-8 は安全か - Qiita
    tmatsuu
    tmatsuu 2017/01/22
    あんまりC.UTF-8を使わないがなるほど。それはそれで副作用がないか気になるところではあるが。
  • FAQ: 数値の比較を is ですると一貫性がないのはなぜ? - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    FAQ: 数値の比較を is ですると一貫性がないのはなぜ? - Qiita
    tmatsuu
    tmatsuu 2016/09/25
    pythonの話。なるほど。isはNoneぐらいでしか使ってない
  • loggingについて話そう - Qiita

    この記事は Let’s talk about logging の翻訳です。 Nate Finch による Go Forum への投稿で始まったスレッド を見てこの記事を書くことにしました。 この記事は Go を対象にしていますが、あなたのいままでのやり方を振り返ってみたら、同じ考え方がより広く適用できると思います。 なんでこんなに足りないの? 訳注: "Why no Love?" を、「(愛されてないから)機能が足りない」というニュアンスで解釈しましたが、自信が無いです。 Golog パッケージ はレベル付きのロギングを提供していません。なので手動で debug, info, warn, error のようなプレフィックスを書く必要があります。 また、 Go はパッケージごとにログの出力レベルを制御する方法も提供していません。 比較対象としてサードパーティーのロギングライブラリを見て

    loggingについて話そう - Qiita
    tmatsuu
    tmatsuu 2015/11/22
    おお、あの記事の翻訳ありがたい。一理ある。golangでdebug/infoを出し分けたいならそれぞれ用にlog.New()すればいいってことだろうな多分。
  • Go の expvar パッケージを使ってアプリケーションのメトリクスを公開する - Qiita

    expvar パッケージは手軽にメトリクスを公開するのに使えて便利なのですが、複数の値を公開するための例があまり公開されてなくて分かりにくかったので書いておきます。 expvar.Map を使う mychat というチャットアプリを作ってると仮定して、送受信メッセージ数と、同時接続数を公開してみます。 /debug/vars を見た時に、次のような形でメトリクスを公開します。 ... mychat: { "conns": 42, "msg_recv": 10480, "msg_sent": 88946 }, ... package metrics import ( "expvar" ) var ( Map = expvar.NewMap("mychat") // expvar.NewXxx() は直接公開するメトリクスを作成する。 Conns = new(expvar.Int) // Ma

    Go の expvar パッケージを使ってアプリケーションのメトリクスを公開する - Qiita
    tmatsuu
    tmatsuu 2015/07/29
    便利情報。メモ
  • Python 3 で少しだけ便利になった datetime の新機能 - Qiita

    datetime モジュールは Python の標準ライブラリの中でも、使用頻度が高い割に罠が多かったり使い方が難しかったりする、あまりイケてないモジュールだと個人的に思っています。 そんな datetime モジュールですが、 Python 2 のプロジェクトPython 3 に移行した時に大分コードを整理できてちょっと感動したので紹介しておきます。 unixtime との相互変換 unixtime から datetime.datetime への変換は、 ローカルタイムなら.fromtimestamp() で、 UTC なら .utcfromtimestamp() 関数で行います。 >>> import time >>> from datetime import datetime >>> now = time.time() >>> now 1415542873.099776 >>>

    Python 3 で少しだけ便利になった datetime の新機能 - Qiita
    tmatsuu
    tmatsuu 2014/11/11
    aware/naiveは自分も昔ハマってpythonを投げ捨てたくなったタチなので素直に嬉しい
  • 1