Works by ...

プログラミング関連でメモする

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

背景 ・単体テストでインナークラスのテストをしたい(テストしやすい設計にすべきかどうかは別として)ときに、インナークラスのコンストラクタが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…

【python】ユーザクラス定義時の==比較定義__eq__()と!=比較定義__ne__()

友人にちらと聞いたpython話のメモです。 pythonのユーザ定義クラスでは、Javaでequals()メソッドをオーバライドするように、同値(または同一)比較の再定義をすることができます。これはpythonの特殊メソッド(今まで組み込み関数と混同してました・・・)…

【C++】vectorと生配列の速度比較

STLライブラリ上の動的配列'vector'と生配列のアクセス速度比較メモ。vectorはat()アクセスでなければ十分高速とのことなのですが、そうはいっても生配列と比べたら流石に遅かろうと思い、実験してみました。 #include<iostream> #include<vector> int main(){ int length = 10</vector></iostream>…

【python】関数呼び出しとメソッド呼び出しの速度を比較する

前々から気になっていた、関数呼び出しとメソッド呼び出しの速度比較の結果をやってみた。 あまり厳密ではないけれど・・・ import time import numpy as np # 適当なクラス class Hoge: # 適当なメソッド def hoge(self): print ('hoge') # 適当な関数(Hoge…

【Python】実引数として渡すリストのアンパック

Python書いてて初めて知ったのでメモ。 関数に引数を渡すとき、以下のようにリストが格納された変数の頭に"*"をつけることで、 リストがアンパックされて引数の羅列として扱えるらしい。 import math # 極座標系に変換 def polar_coordinates(x, y): r = mat…

【Python】IPythonをつかう

IPython Pythonをインストールすると、標準のインタラクティブシェルがすでに使えるようになっているが、 別のPythonインタラクティブシェルであるIPythonを使うとより快適にPythonコードを実行できる。 インストール pip install ipython んで $ ipython2 b…

【python】デコレータ

pythonにはデコレータ構文が標準で実装されている。デコレータを使うことで、既存の関数に対し簡単に別の機能を付加(デコレート)することができる。 例えば、以下の様なコードを書いたとする。 def cake(): print("cake") cake() とくれば、もちろん出力は…

タスク処理が遅い

最近、タスクの処理がめっぽう遅い!と感じるようにもなったし、外からのアクションもそれっぽくなってきたので、 なんで遅いんだろう、と考えた結果を書き留めておこうと思いました。 プログラミングとは殆ど関係ない(?)内容ですが、 自戒の意味を込めて…

Android:rotate時のActivity再生成

すごい雑だけどメモ。 Caution: Your activity will be destroyed and recreated each time the user rotates the screen. When the screen changes orientation, the system destroys and recreates the foreground activity because the screen configurat…

文字列switchについて

気になったのでメモメモ。あとこの機能、Java8からのものだと思ってた。 java7実装の文字列switch 文字列switch構文内で分岐するとする。 public static String getSwitchString(String str) { switch (str) { case "a": return "str is a"; case "b": retur…

ZigBeeについて

備忘録。通信モデルについて書くとか言って6日も放置した挙句別のこと書いてすんません。 ZigBeeとは ZigBeeとは近距離の無線通信規格(無線PAN)の一つです。伝送速度は250kbpsと比較的低速なのですが、省電力なのが強みの無線PANです。 通信データが小さく、…

プロトコルについて

ネットワークについて書くことが多くなりそうなので、ひとまずプロトコルの話をちょいと書いてみようと思います。 プロトコルとは? プロトコルは一言で言うと「お約束事」です。 例えば私達を取り巻く日常会話を想像してみてください。内容や場所がどうであ…

PPP(Point-to-Point Protocol) ってなんぞや?

書き始め一発からネットワークです。ネットワーク。 なんか間違いとかあったら指摘していただけると助かります。 PPPとは? PPPはざっくりというと、2ノード間を一対一で接続するためのプロトコルです。 PPPは主に電話回線やISDN、専用回線やATM回線などの通…