タグ

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

  • 静的ライブラリ (.a) の作成と利用 | yunabe.jp

    静的ライブラリ (.a) の作成 ar コマンド で複数のオブジェクトファイル (.o) をまとめて静的ライブラリ (.a) を作成できます。

  • Pysh シェルスクリプトをPythonで書く | yunabe.jp

    Pysh はシェルスクリプトをPythonで記述するためのプログラムです。 Pysh を利用すると、コマンドの実行やリダイレクションやパイプといったシェルスクリプトの 便利な機能を Python スクリプトの中で簡単に利用できるようになり、 Python をシェルスクリプトの代わりとしてより利用しやすくなります。 Python 使いならばもはやシェルスクリプトを書く理由は何もありません(Windows以外)。 目次 特徴 使い方 インストール ファイルから実行 標準入力から実行 引数から実行 機能 変数参照 Python式 パイプ リダイレクション && || ; 文字列リテラル バッククオート バックスラッシュ文字による行継続 コメント map filter reduce リターンコードの保存 Pythonへのリダイレクション echo 組み込みコマンド をPythonで実装する 特徴

  • Google流 JavaScript におけるクラス定義の実現方法

    目次 2019年追記 はじめに クラス実現のために必要な JavaScript の言語仕様 function this call new 演算子 prototype チェーン プロパティ: prototype Google Closure 流のクラスの実現方法の概要 クラスの宣言とコンストラクタの定義 メンバ変数 (インスタンス変数) メソッド定義と呼び出し private, protected 継承 プロトタイプチェーンを利用してメソッドを親クラスから引き継ぐ 親クラスのコンストラクタの呼び出し メソッドオーバーライドと親クラスのメソッドの呼び出し 多重継承 abstract, interface inherits の実際のコード 良くないクラス実現方法 ES6 のクラス 2019年追記 この記事ではclassが導入されたES6以前のJavaScriptでどのようにクラスに相当するものを

  • ターミナルにプログレスバーを表示する方法 | yunabe.jp

    ターミナルに用意されている特殊な制御コード (エスケープシーケンス)を使用して、 Python, Ruby, C++, Javaなど言語に関係なく簡単にターミナルにプログレスバーを表示することができます。 仕組み プログレスバーが更新されるたびに新しい行が表示されるのを防ぐために、 プログレスバーを表示する前にカーソルを行頭に戻して行の内容を消してしまえればプログレスバーの完成です。 カーソルの制御と行の削除には キャリッジ・リターン (carriage return) ターミナルのエスケープシーケンス を利用します。 の2つを利用します。 キャリッジ・リターンは Windows の改行文字 \r\n で出てくる \r です。 普段 \n に余計についてくる邪魔な文字程度の認識しかないと思いますが、単体で利用するとカーソルの位置を行頭に移動します。 移動した後文字を出力するとすでに表示され

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

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

  • イベントはスレッドに比べて何故ダメなのか (Why Events Are A Bad Idea) | yunabe.jp

    並行処理をプログラミングする方法は大別すると、 スレッドなどを利用した同期処理的な書き方と イベントを利用した非同期処理的な書き方があります (イベントループ)。 最近 C10K問題 が有名になったことや、 Node.js が流行っていて Node.js のメリットとしてイベントモデルであるため C10Kが解決されるというのが上げられていたりして、 イベントモデルのスレッドに対する優位性が注目されることが多いように思います。 しかし個人的な経験として、ある程度以上複雑なプログラムを書く場合、 イベントモデルで非同期処理を多用してプログラムを書くとスレッドで同期処理を使ってプログラムを書いた場合に比べてプログラムの可読性・保守性が著しく悪くなり、 バグが発生しやすくなるように感じます。 しかも並行処理で起こるバグは特定の処理が特定の順序で実行された場合のみ起こるようなことが多く、 再現性が低

  • 1