Works by

Ren's blog

@rennnosuke_rk 技術ブログです

2017-01-01から1年間の記事一覧

PythonでMacOS Xデスクトップアプリを作るときの選択肢【rumps/PyObjC】

この記事は、python Advent Calendar 2017【22日目】の記事になります。 本記事では、pythonでMacのデスクトップアプリを作成できるライブラリrumpsとPyObjCを紹介します。 pythonでMac固有の機能を持つアプリを実装する デスクトップアプリケーションをpyth…

【shell】awkで引数文字列から部分文字列を取得する

やり方 $ cat hoge.txt | awk '{print substr($0,1,2)}' 概要 shellの強力なコマンドの一つにawkがあります。 AWK - Wikipedia awkを使い始めて未だ日が浅いのですが、コマンド出力を一旦整形して他のコマンドに渡したり、ログファイルを時々で必要な形にパ…

【Java】 リフレクションで取得したインナークラスコンストラクタの引数は、エンクロージングクラスのインスタンスを必要とする

背景 ・単体テストでインナークラスのテストをしたい(テストしやすい設計にすべきかどうかは別として)ときに、インナークラスのコンストラクタがprivateの場合、インスタンス化をリフレクションで行いたい。。。 ・このとき、getDeclaredConstructor()で取…

【python】pythonのクロージャ

pythonでは、クロージャと呼ばれる関数オブジェクトを実装することができます。 関数オブジェクトとは、クラスのインスタンスのように関数をオブジェクトとして扱ったものです。 クロージャの定義は、Wikipedia氏曰く 引数以外の変数を実行時の環境ではなく…

【python】pythonにおけるスコープ【グローバル変数】

pythonでは変数のスコープに最新の注意を払う必要があり、特に万一グローバル変数(厳密にはスコープはモジュール内に収まるので、モジュール変数?)の変更を扱うような場合、気を緩めていると下のコードに示すような問題を引き起こす可能性があります。 is…

【python】リスト・ジェネレータ・集合・辞書内包表記

リスト・ジェネレータはともかく、辞書なんかはたまに忘れるのでメモ。 In [1]: array = [1, 2, 3, 4, 5, 6, 7] # リスト In [2]: [a*a for a in array] Out[2]: [1, 4, 9, 16, 25, 36, 49] # ジェネレータ In [3]: (a*a for a in array) Out[3]: <generator object <genexpr> at 0x1041</generator>…

【python】スライシングしたリストへの代入

pythonのシーケンスにはスライス機能と呼ばれる糖衣構文が用意されていますが、 In [1]: a = [1, 2, 3, 4, 5, 6, 7] # 部分リストを取得可能 In [2]: a[2:5] Out[2]: [3, 4, 5] どうやらスライスによって一定範囲に対する代入操作も行えるようで、さらに代入…

【python】スクリプト実行中にインタプリタのバージョンを確認する

使用するインタプリタは3系で限定したいときなど、スクリプトを実行しているインタプリタのバージョンを知りたいときに sysモジュールが持つversion_infoメンバが使えます。 In [1]: import sys # version_info In [2]: sys.version_info Out[2]: sys.versio…

【python】書いてて気づいた2系と3系の違い

pythonの2系と3系間で記述の仕方や処理の挙動が異なる場所について、 自分が気になった場所を列挙しました。 随時更新していきます。(最終更新2017/3/15) reduceが組み込みの関数ではなくなった 2系では組み込みの関数であったreduceはfunctoolsをimportし…

【python】"import *" でインポートされるモジュールを制限する

パッケージ中の__init__.py内で__all__変数を書き換えることで、import *でimportするモジュールを制限することができます。 __all__ = ["hoge", "fuga", "piyo"] このような記述を例えばpackage/__init__.pyが含むとき、 from package import *によってimpo…