タグ

ブックマーク / www.yunabe.jp (5)

  • Go言語(Golang) はまりどころと解決策

    Go の言語仕様はシンプルで他の言語に比べてはまりどころが少なくて学習コストが小さめな言語のように思います。しかし、それでもはまるところがないわけではないので、自分がはまって時間を無駄にしてしまったことを書き留めておきます。 念の為誤解のないように追記しておくと、この文書の目的は Go を批判することではなく GoGo であるがゆえに C++/Java/Python など利用者が Go を使い始めるときに困惑あるいは誤解するであろうポイントをまとめておくことで初めて Go を触る人がスムーズに Go を使い始められるようにすることです。私個人は Go はバランスがとれた良い言語でだと思いますし、気に入っています。 目次 interface と nil (Go の interface は単なる参照ではない) 文献 メソッド内でレシーバ(this, self)が nil でないことをチェ

  • Go 言語 ファイル・I/O 関係のよく使う基本ライブラリ | yunabe.jp

    Go 言語でプログラムを書く際に欠かせないファイルなどの入出力(IO)関係の基的なライブラリの一覧。この辺のライブラリはかなりよく使うのでパッケージ名や型名を覚えておくといちいちドキュメントを検索せずにすんで良いかも。 目次 備忘用早見表 io.Reader, io.Writer ファイルを読み書き用に開く 標準入力/標準出力/標準エラー メモリからの読み込み・メモリへの書き込み Reader, Writer を効率よく使うためのライブラリ bufio.Scanner: 文字列を一行ずつ読み込む bufio.Reader, Writer: バッファリングして効率よく読み書きを行う "io/ioutil".ReadAll: Reader から全てのデータを一度に読み込む "io/ioutil".ReadFile, WriteFile: ファイル名と byte[]で読み書き Write([]

  • Linux におけるスレッド数の上限 | yunabe.jp

    並行 (Concurrent) 処理を実装する方法としてスレッドは非常に強力なツールです。 スレッドを使えば同時に1つの処理しか行えない既存のプログラムに大きな修正を加えることなく、 並行処理を実装することが可能です。 またイベントとコールバックを複雑に組み合わせた非同期的なプログラムに比べて、 同期的なプログラム (例えばファイルの読み込みにコールバックが出てきたりしない普通のプログラム)は プログラムの流れを自然に書くことができ、 可読性・保守性・テスト、デバッグのしやすさの面で遥かに優れています。 スレッドを使うとプログラムをそれほど複雑・難読化にせずに並行処理が実装できます。 一方でスレッドを使った並行処理には欠点もあります。 欠点の1つは、スレッドモデルでは1つの処理に対して1つのスレッドを用意するので、 システムのスレッド数の上限で同時に行える処理の数が決まってしまう点です。

  • Python の メタプログラミング (__metaclass__, メタクラス) を理解する | yunabe.jp

    Pythonのメタプログラミング (__metaclass__) は組み込み関数 type の普段利用しない隠れた機能や、 普通は利用しない特殊メソッド __new__ などを理解する必要があり 理解するのが結構難しい。 あまり関連情報がまとまってるドキュメントがなくて理解するのに苦労したので情報をまとめておきました。 目次 事前知識 type とクラス定義のあまり知られていない関係 特殊メソッド __new__ __metaclass__ typeの継承 メタクラスの例 実装の解説 事前知識 Customizing class creation (日語:クラス生成をカスタマイズする) を読むと、型を取得するのに普通利用するbuiltin関数 type を継承していたり、 普通利用することのない __new__ が定義されていたりして、 type の隠された機能と __new__ につい

    hiroyukim
    hiroyukim 2015/03/08
  • Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc) | yunabe.jp

    Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc) Python のパッケージ管理関係の情報がオフィシャルには整理されてなく、 またパッケージ管理まわりででてくるキーワードもいくつもあって分かり難いので完結にまとめてみました。 このドキュメント自体は少し長いですが、結論としては2015年1月時点では 原則 pip を使ってパッケージの管理を行う setuptools も広く使われているので入れておくとよい。そもそも pip のインストール時に自動的ににインストールされる distribute は 2013年に setuptools にマージされたので不要 という方針でよいと思います。 ただ少し古い情報ソースやパッケージのドキュメントを読んでいると distribute の利用が勧められていたり、 site-packages, e

  • 1