2020/03/30

R - 研究編 4 zoo パッケージ - 時系列のための拡張パッケージ

zoo パッケージは、時系列を扱うためのクラス zoo および zooreg とその操作のための関数群を提供するパッケージです。特に、不規則時系列 (観測値の間隔が一定ではない時系列) を取り扱うことを目的として設計されています。各種の仕様は、ts クラスや base パッケージにおける振舞いの自然な拡張となるよう配慮されており、それらに慣れている方はスムースに使い始めることができます。

2020/03/28

型システムにおける共変性と反変性

共変、反変、不変とは?

オブジェクト指向言語で親クラスに対して子クラスを定義する際、親子で型が違っても、型システムを壊さないパターンがいくつかあります。そのパターンの中で出てくるのが、共変、反変、不変というキーワードです。
共変とは、広い型を持つ親クラスから、狭い型を持つ子クラスを導出する際に、合わせて広い型から狭い型へ変わることを指します。反変とは逆に、狭い型から広い型へ変わること、不変とは型が変わらないことを指します。

R - 研究編 3 時系列データ

R には、時系列データを扱うクラスとして、ts クラスが用意されています。R における時系列データの取扱いの基本となりますので、ts クラスのデータの取扱い方法を見ていきたいと思います。

2020/03/25

Tomcat で ActiveDirectory 認証または LDAP 認証を使う

JAAS という Java 標準の認証・認可サービスの仕様に基づいて、外部システムの認証・認可を利用することができます。
ActiveDirectory または LDAP を用いて認証・認可を行いたい場合は、Realm (レルム) として JNDIRealm を使用します。JNDI 経由でユーザ情報、ロール情報を取得して JAAS に結び付けるための Realm です。LDAP は JNDI でアクセスすることができますし、ActiveDirectory は LDAP データベースで出来ていますので、この方法で実現できます。

2020/03/22

R って何?

R とは、統計解析向けプログラミング言語です。オープンソースソフトウェアです。
ベクトル処理の記述やデータのグラフ化、多変量解析や時系列解析が簡単かつ強力に行えることが特徴で、データサイエンティストの方が良く使っています。最近は Python に押されて少し人気に翳りが見えてきましたが、それでも強力なツールであることに変わりはありません。

本ブログでは R を実用的なレベルで使えるように、解説していきたいと思います。

R には、An Introduction to R という大変よく出来たチュートリアルがあります。昔は日本語版をお作りの方もいらっしゃったのですが、最近はありません。
まずは、これをなぞるような形で解説していければと思います。その後、私の専門である時系列解析を中心により実践的な内容を加えていきます。

当社のITインフラ

当社のITインフラは、SaaSを活用しており、サーバやストレージは保有していません。
どのようなサービスを利用しているか、紹介します。

開発工数と開発期間の見積方程式 (COCOMO)

開発規模が大きくなれば、開発工数が大きくなり、開発期間も長くなる。

ソフトウェア・エンジニアでなくても当たり前ですよね。
でも、開発規模が大きくなったとき開発工数がどれくらい大きくなるのか、開発工数が大きくなったとき開発期間がどれくらい長くなるのか、と言うと、ちょっと難しい質問になります。

2020/03/21

Java のシングルトンを正しく実装しよう

Java プログラマの皆さん、シングルトンを正しく実装できますか? 「そんなの簡単だよ」とおっしゃると思いますが、意外と注意点が多いものです。ここでは正しいシングルトンの実装を確認しておきたいと思います。

Initialization-on-demand holder idiom

Initialization-on-demand holder とは?

Nested static class が使えて、そのクラスの初期化が、そのクラスに初めてアクセスされたときに行われるようになっている言語では、Initialization-on-demand holder という idiom で変数の遅延初期化を行うことができます。
クラスの初期化は同期化されているはずなので、マルチスレッドプログラムでも多重に初期化が実行されることはありません。また、アウト・オブ・オーダー実行によって初期化が不完全な変数を参照してしまうこともありません。
シングルトンインスタンスの遅延初期化によく用いられます。

Double-checked locking は使わないようにしましょう

Double-checked locking (DCL) とは?

Double-checked locking とは、マルチスレッドプログラムにおいて、複数スレッドから参照される変数について、初めて参照されたときに一度だけ初期化を行いたい場合に、同期化のコストを最小化するために考えられた idiom です。
変数への代入が行われるのは初期化時だけなので、同期化が必要なのはそのときだけです。したがって、初期化が終わっているときは同期化をしないようにすることで、同期化のコストを回避しようという発想です。

アウト・オブ・オーダー実行に気を付けよう

現代のアーキテクチャのコンピュータでマルチスレッド・プログラミングをする場合には、アウト・オブ・オーダー実行のことを理解しておく必要があります。
プログラマの皆さんは、「プログラムは思った通りに動くのではない。書いた通りに動くのだ。」と教わってきたと思いますが、イマドキのコンピュータでは、書いた通りには動いていません。
アウト・オブ・オーダー実行について、しっかり理解しておきましょう。

HTML 用色見本

色の名称による色見本

R - 研究編 2 日付・時刻に関するデータ構造と演算

大抵のプログラミング言語で、日付・時刻に関するデータ構造と演算の事情は、歴史的経緯と互換性の影響で混沌としている。R もやはりややこしい状況になっている。
R に用意されている日付・時刻のためのクラスが複数あるので、それぞれの機能を紹介したいと思う。

R - 入門本編 6章 リストとデータフレーム

R の再帰的データ構造である「リスト」と、その特別な形である「データフレーム」について理解する。どちらも実践的に R を使っていくのに必須なデータ構造なので、その操作に習熟しておかなければならない。

2020/03/14

MetaTrader4 の ExpertAdvisor 動作サンプルを動画で公開しました

最近作成した EA の動作がなかなか爽快なので、動画にして YouTube に載せてみました。
MacOSX の標準機能で録画して、iMovie で早送りにして会社ロゴをオーバーレイしてみました。iMovie から直接 YouTube にアップロードできるんですね。とてもお手軽でした。

2020/03/12

MT4 のログをチケット番号で整理する perl ワンライナー

MT4 で1つのチケット (リーブオーダーやポジション) に対して何度も OrderModify() するような、かつ大量のチケットをハンドルするような EA を動かしていると、各チケットがどういう経緯を経ているのかが追いづらくなることがあります。 そのため、以下のような perl ワンライナーで簡易的に整理するようにしてみました。