Delphiでインターフェースを使う

久々にDelphiを少し触ってました。かなり忘れてる。 Delphiのインターフェースを使って2つの実装クラスを作り、実行時にどちらのクラスを使うか決定してる。 試したバージョンはDelphi XE4。 Main.dpr program Main; {$APPTYPE CONSOLE} uses System.Classes…

通信料金の計算2015年秋

通信料金がいくらぐらいかかっているのか計算などやってたので、メモを残す。 現状の使い方 auガラケー、Nexus4、PocketWifi(GL10P)の3台を持ち歩いてる Nexus4はデータ通信専用、SORACOM AirのSIMを挿してるけど、できるだけPocketWifiのほうを使ってる。 b…

dulwichを使ってPythonでGitのカスタムコマンドを作る

Gitのコマンドがわかりづらくて好きになれないんですが、気に入らない部分はカスタムコマンドを作ればいいよね。 ということで方法を調べてました。 カスタムコマンドの作り方 Gitのカスタムコマンドは、「git-コマンド名」のような実行可能ファイルを用意し…

A5:SQL Mk-2が便利だった

A5:SQL Mk-2はER図の作成やSQLの実行、結果の表示などができるGUIのツール。Windows用。 ちょっとしたSQLを書くときや、ER図作成のためにWindows用のツールがほしくて、探してたところ見つけた。 しばらく使ってみて、そこそこいい感じだったので紹介する。 …

PyPy3 2.4.0を使ってみた

最近、仕事でPyPy3を試したりしているので、メモを書き残しておく。 PyPy - Welcome to PyPy インストール 今回はUbuntu 14.04LTSで試した。PyPy3はPPAリポジトリに無いので、Linux向けのコンパイル済みバイナリをダウンロードして使うことにした。 利用する…

Mercurialのextensionを作る

Mercurialのextensionは、hgext/モジュール名.pyというレイアウトで作ればいいみたい。 Python 2.7、Mercurial 3.5.2で試した。 $ hg hello Hello world!GitHub - tokibito/mercurial-helloworld: helloworld mercurial extension

PyConJP 2015に行ってきた

タイトルの通り。PyConJP 2015に一般参加で行ってきました。 PyCon JP 2015 in Tokyo | October 9th – October 12th CfPに応募はしていましたが、今年は倍率が高いせいもあってか落選したので一般参加。 聞きたいセッションをいくつか聞いて、それ以外はオー…

オートバイで福島、山形、新潟へ行ってきた

シルバーウィークの旅行のまとめ。 オートバイで福島、山形、新潟へ行ってきました。 日程: 2015年9月23日(水)〜9月25日(金) 2泊3日 行き先: 福島県、山形県、新潟県 総走行距離: 1002km 1日目 自宅から米沢方面へ 外環自動車道→東北自動車道で福島飯坂ICを…

Pythonでプログラムの終了コードを指定する

Pythonでプログラム(プロセス)の終了コード(終了ステータス)を指定して終了するには、sys.exitの引数に数値を指定する。 試したのはPython3.4。 29.1. sys — システムパラメータと関数 — Python 3.4.3 ドキュメント コード main.py import sys def main(): #…

PythonでUnixドメインソケットを使って通信する

サーバー側 サーバー側のプログラムは、指定したファイルパスにソケットファイルを作ってクライアント側からの接続を待ち受けます。 server.py この例では、 /tmp/myapp.sock というパスにソケットファイルを作成します。クライアント側から送信されたデータ…

ISUCON参加で使う資料などリンク

ISUCON5のオンライン予選に参加するので、使うかわからないけど準備。 資料のリンクだけまとめといた。 nginx nginx documentation Module ngx_http_uwsgi_module Python 27.4. Python プロファイラ — Python 3.4.3 ドキュメント Flask Welcome to Flask — F…

EC2からRDSにLOAD DATA LOCAL INFILEでインポートしてみる

RDSにデータを高速にインポートしたい。LOAD DATA LOCAL INFILEが動くのか試していた。 MySQL DB インスタンスからのデータのインポートおよびエクスポート - Amazon Relational Database Service ドキュメントによると、LOAD DATA LOCAL INFILEは使えるらし…

Djangoのプロジェクトに管理コマンドを追加する

Djangoのmanage.pyは独自に管理コマンドを作成して追加できます。 ここでは、「myapp」という名前のDjangoアプリケーションに対し、「summation」という名前のコマンドを実装する例を紹介します。 myappはプロジェクトに作成済みで、INSTALLED_APPSに追加済…

Djangoのエントリポイントとアプリケーションの仕組み

PyCon mini Sapporo 2015で、「Djangoのエントリポイントとアプリケーションの仕組み」というタイトルで話しました。 資料はSlideshareに置いてます。 Djangoのエントリポイントとアプリケーションの仕組み

Djangoの管理コマンドを作る際にdjango-extensionsのcreate_commandコマンドを使う

Djangoのmanage.pyスクリプトのサブコマンド(管理コマンド、management command)を追加するには、Djangoアプリケーション内に「management/commands/コマンド名.py」のようにモジュールを作成しますが、頻繁に使うわけでもないので作法をよく忘れてしまって…

ペアプログラミングをやってみた感想

3日ほど、社内にてペアプログラミングで作業してたので少し感想を書き残しておきます。 ペアプログラミングの方法については、hyuki先生のWikiにあった翻訳記事を参考にしました。 ペアプログラミングのやりかた ペア相手は、私がリーダーという形で同じチー…

DjangoテンプレートのstaticタグとSTATIC_URLコンテキスト変数の使い分け

Djangoテンプレートで静的ファイルのパス指定時にdjango.contrib.staticfilesのstaticタグとSTATIC_URLのどちらを使うべきか、という質問があったので、少し調べました。この記事はDjango 1.8のドキュメントとコードを参考にしています。 結論としてはstatic…

PostgreSQLでウィンドウ関数rankを試す

SQLのウィンドウ関数を使うと、グループ化しつつ、グループ内でランキングを作成するのが簡単と聞いていたので、PostgreSQLで試していた。 PostgreSQLのバージョンは、9.4.4 対象のデータ ウィンドウ関数を試すにあたって、商品、カテゴリ、売上という3つの…

MikroTik RB750GLを購入

タイトルの通り、MikroTikのルーター (RouterBOARD)、RB750GLを購入しました。 RouterBoard.com : RB750GL 社内で希望者を集めて共同でAmazon.comから購入。海外発送で送料込み、1台あたり7400円ぐらいでした。 電源アダプタのプラグがCタイプなんですが、日…

Django 1.8で追加されたSecurityMiddlewareについて

Django1.8で増えた機能でSecurityMiddlewareというものがあります。 何ができるのか把握しておきたかったので調べていました。 django.middleware.security.SecurityMiddleware コードはこのあたり。 django/security.py at stable/1.8.x · django/django · …

オープンソースカンファレンス2015 Hokkaidoに参加しました

タイトルの通り、オープンソースカンファレンス2015 Hokkaidoに参加してきました。 オープンソースカンファレンス2015 Hokkaido - オープンソースの文化祭! LTでDjangoの紹介をしました。資料はSlideshareに置いてます。 Djangoフレームワークの紹介 OSC201…

Djangoのメッセージフレームワークのストレージについて

Djangoフレームワークには、利用者ごとに一度だけ表示するメッセージ(フラッシュメッセージ)を扱う機能(django.contrib.messages)が含まれています。 The messages framework | Django documentation | Django メッセージは、複数のリクエストをまたいで表示…

django-celeryを使わずにDjangoとCeleryを組み合わせて使う

DjangoとCeleryを組み合わせて使う際に、django-celeryのモデルのテーブルを作りたくなかったり、各種機能が不要でシンプルに動かしたかった。 Celery - Distributed Task Queue — Celery 3.1.23 documentation Celeryやdjango-celeryはドキュメントが少し足…

XenServer 6.0を6.5までアップグレードする

XenServer 6.0から6.5へは直接アップグレードできないようなので、6.2へアップグレードしてから6.5へアップグレードする。 XenCenterも6.5に更新する必要があるので注意する。 以下、2015/03時点での情報などまとめ。 XenServer6.2と6.5の入手 配布がCitrix…

Pythonプロフェッショナルプログラミング第2版が発売されました

タイトルの通り、会社(ビープラウド)のメンバーで執筆したPythonプロフェッショナルプログラミングですが、好評だったようで第2版を出すことができました。 初版から3年ほど経ち、古くなったコンテンツも多かったので、今回大幅に内容を変更しています。 店…

CentOS 6.4にPostgreSQL 9.4をインストールして使うところまで

PostgreSQLを使う必要があって手順を調べていたのでメモしておく。 インストール yumでインストールできる。手順はpostgresqlのWikiに書かれている。 YUM Installation - PostgreSQL wiki 1. /etc/yum.repos.d/CentOS-Base.repoの [base] と [updates] のセ…

2014年振り返り

去年のはこれ。 2013年振り返り - 偏った言語信者の垂れ流し 今年は簡単に。 研修の講師の業務が増えた。今のところ事業としては順調なので良かった。 業務用のフレームワーク開発というのを経験出来た。どういう点を重視するかなど学びが多かった リモート…

$scopeをng-controllerの外から参照する

メモ。AngularJSの$scopeをng-controllerの外から参照する方法。 angular.elementを使ってDOMをラップしたオブジェクトを取得し、scopeメソッドを呼ぶ。 AngularJS: API: angular.element 試したのはAngularJS 1.2.27。 test.html <html> <body> <button type="button" onclick="test()">test</button> <div ng-app="myApp"> </div></body></html>

北海道で #ingress をプレイした感想

出張で10月の後半2週間ほど北海道の北見市(北見駅の近く)に滞在してました。 滞在中にIngressをプレイしていました。 平日は基本的に仕事をしていたので、実質プレイしてたのは8日ぐらいでした。 北海道(主に道東や道北)の2014年10月の状況と、行ってきた感…

Django1.7の管理サイトでアプリケーション名を変更する

Django1.6以前のバージョンでは、管理サイトで表示されるアプリケーション名を変更する方法は通常の使い方では提供されていませんでした。 変えたいのはこの「Myapp」という部分。 Django1.7ではアプリケーションごとの設定が抽象化、再利用可能な仕組みが導…

DjangoでDEBUG=Falseの際にSQLのログを出力する

Djangoでクエリのログを出力したい場合、ロギングの設定でdjango.db.backendsのロガーを設定すればできます。 ただし、これはsettings.DEBUG=Trueのときにしか出力されないようになっています。 これはドキュメントにも書かれています。 ロギング — Django 1…

Nexus4のタッチスクリーンディスプレイを交換した

去年の秋ごろからNexus4を使っていますが、先日歩いているときに地面に落としてしまい、タッチパネルのガラスが割れてしまいました。 サイドのボタンは動作して画面は表示されるのですが、タッチパネルはどこをタップしても完全に反応しない状態になってしま…

Djangoでprefetch_relatedを使ってクエリ数を減らす

prefetch_relatedはDjango 1.4で追加された機能です。 親子関係を表すモデル(多対多になってるものなど)をツリー状に表示する場合、ループ内でクエリを実行しってしまうと、クエリ数が多くて極端に遅くなります(特に2段目とか3段目)。 prefetch_relatedを使…

Django 1.5.3以降で変更されたセッションのシリアライズについて

Djangoのセッションデータは、settings.SESSION_ENGINEで指定されたクラスによって保存されます。 Django 1.5.3より前のバージョンでは、セッションデータのオブジェクトをシリアライズ、デシリアライズする処理は、ここで指定されるバックエンドクラスに任…

cgroupを使ってCPUとメモリの割り当てを制限する

cgroupを使ってCPUとメモリの割り当てを制限してみたけど、忘れてしまいそうなのでメモを残す。 試した環境はCentOS 6.4。 インストール CentOS6でcgroupを使うにはlibcgroupをインストール。 $ sudo yum install libcgroupcgconfigサービスを起動すると、/c…

Python札幌の勉強会で話してきました

Python札幌の勉強会でPython3、Django、ApacheSparkの話題で話してきました。 slideshareに資料をアップロード済み。 Python札幌201406 from Shinya Okano 今回の札幌訪問はオープンソースカンファレンス北海道に参加したり、えにしテックさんのオフィスを訪…

GoogleAppEngine/Pythonでparamikoを使ってSSH接続

GoogleAppEngineでsocketが使えるようになったのは1年ぐらい前だった気がしますが、使ったことなかったので試してました。 Sockets Python API Overview | Python | Google Cloud Platform まだプレビューリリースですね。 socketを使えるのならparamikoでSS…

GoogleAppEngine/PythonからGoogleCloudStorageを使う

AppEngineで動かすアプリを作っていて、Blobstoreを使おうかなーと思って久しぶりにドキュメントを見たら、CloudStorageを使うことが推奨されていたので、試してた。 https://developers.google.com/appengine/docs/python/googlecloudstorageclient/?hl=ja …

REST clientのPostmanが便利だった

PostmanはChrome拡張のREST client。 Postman | Supercharge your API workflow ChromeWebStoreからインストールできる。 リクエストの履歴が保持されて再利用できるので、気軽に複数種類のリクエストを叩けるのが楽。 また、リクエスト内容をCollectionにま…

rst2pdfでblockdiagを有効にする

rst2pdfはreStructuredTextからPDFを生成してくれるツールです。 blockdiagディレクティブを入力ファイルに書いても、そのままでは動作しません。 rst2pdfの拡張の仕組みを使うことでblockdiagを有効にできます。 試したバージョンは、Python 2.7、rst2pdf 0…

第28回エンバカデロ・デベロッパーキャンプのLTでSpring4Dの話をしました

Spring4Dの紹介 from Shinya Okano

python-ldapとpython3-ldapについて

PythonからLDAPサーバーを操作するために使うクライアントライブラリについて。 python-ldapとpython3-ldapというのがある。 最初はpython3-ldapのほうはフォークか何かだと思っていたのだけど、コードを読むと全く別物でした。 それぞれについて特徴を整理…

Funkloadのテストコードの書き方について

fl-run-benchコマンドで実行するテストコードの書き方についてメモ。 Cyclesの値はCU(ConcurrentUser)の数 durationに設定した秒数の間、テストを繰り返し実行する レポートにでるSUCCESSやERRORの数はテストを繰り返し実行したときの結果を集計したもの デ…

FunkLoadでJSONをPOSTする

FunkLoadでJSONをPOSTする方法を調べたのでメモ。 FunkLoadでJSONを送信するテストコード funkload.utils.Dataを使うと、Content-Typeを指定してデータ列を送信できる。 test_Simple.py # coding: utf8 import unittest import json from funkload.FunkLoadT…

PythonでParquetフォーマットを扱ってみたいので調べていた

ParquetフォーマットをPythonから扱ってみたいので調べていた。 GitHub - jcrobak/parquet-python: python implementation of the parquet columnar file format. githubにあったものを見つけたけど、まだバグが結構あるっぽい。書き込みなども実装されてな…

HDFSのNFS Gatewayを試してみた

CDH5.0がリリースされていたのでHDFSのNFSGatewayを試した。 ClouderaManagerからnfsgatewayを追加して起動するだけ。 nfsgatewayを動かすホストでportmapサービスが動いていないと起動に失敗した。 CentOS6.5だと、portmapサービスはrpcbindで起動できる。 …

Pythonの研修サービスを始めました

勤務先でPythonの研修サービスを始めることになりました。 BeProud Python Training (Pythonプログラミング研修) 私も講師の一人です。受託開発の業務でも5年以上Pythonを使っているので、ノウハウは蓄積されてます。 よろしくお願いします!

Apache Sparkを試す

CDH5の環境を手元に作ったので、Apache Sparkを使ってみる。 依存はHDFSのみ。Masterが1台でWorkerが複数台の構成なのかな。 ClouderaManagerで設定して起動するとWebUIがデフォルトでは18080ポートになっていた。 Pythonから使う場合はpysparkコマンドとな…

CDH5 beta2とClodueraManager5 beta2をセットアップしてみた

CDH5 beta2とClodueraManager5をCentOS6にセットアップしてみたのでメモやら雑感。 ClodueraManager5のパッケージリポジトリ http://archive.cloudera.com/cm5/ yumで使うなら以下。 # curl http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/cloudera-ma…

Djangoのタイムゾーンサポートの動作について

Djangoのタイムゾーンサポートについてメモ。settings.USE_TZをTrueにすると有効になる。 試したのはPython 2.7, Django 1.6.2。 Django1.6だと、プロジェクト新規作成時のsettings.pyでUSE_TZはTrueに設定されている。(ドキュメントではデフォルトでは無効…