So-net無料ブログ作成
前の10件 | -

pyfirebirdsql 1.0.1 released [Firebird]

この記事はFirebird Advent Calendar 2017 https://qiita.com/advent-calendar/2017/firebird の17日目の記事です。
python の Firebird データーベースドライバー pyfirebirdsql の 1.0.1 を昨日リリースしました

https://pypi.python.org/pypi/firebirdsql/1.0.1

1.0.0 をリリースしたのが昨年のアドベントカレンダー6日目なので、1年ぶりのリリースです
http://nakagami.blog.so-net.ne.jp/2016-12-06

機能の追加は IPv6 サポートだけです。

もう、あまり機能の追加をする気はないのですが、Firebird 4.0 になると、新しいデータ型が追加されるようなので、その時には対応したバージョンを出すと思います。

コメント(0) 
共通テーマ:日記・雑感

Firebird 3.0 の新しい SQL 構文 [Firebird]

この記事はFirebird Advent Calendar 2017 https://qiita.com/advent-calendar/2017/firebird の15日目の記事です。

いままでと重複あるかもしれませんが、ここで Firebird3.0 のリリースノートを見直して、新しい SQL 構文を自分で試してみました。
https://firebirdsql.org/file/documentation/release_notes/Firebird-3.0.0-ReleaseNotes.pdf
(トリガーは自分は使わなさそうなので試してません)

【BOOLEAN Type】
いままでは 0/1 で持っていたのですが、BOOLEAN 型ができました。
SQL> CREATE TABLE bool_table (b BOOLEAN);
SQL> INSERT INTO bool_table (b) VALUES (TRUE);
SQL> INSERT INTO bool_table (b) VALUES (FALSE);
SQL> INSERT INTO bool_table (b) VALUES (NULL);


MySQL の boolean みたいに 1/0 じゃなくて true/false が返ります。

【自動インクリメント型のカラム定義】
今までも、 generator + trigger を使うとか、sequence を使うとかで、
自動インクリメントで採番するカラムの作成はできたんですが
https://firebirdsql.org/refdocs/langrefupd21-ddl-sequence.html

より、直接的に書ける方法ができました。
SQL> CREATE TABLE id_table (id INTEGER GENERATED BY DEFAULT AS IDENTITY, name VARCHAR(30));
SQL> INSERT INTO id_table (name) VALUES ('nakagami');
SQL> SELECT * FROM id_table;

          ID NAME
============ ==============================
           1 nakagami



採番される値をリセットするには、以下のような SQL文を使います
SQL> ALTER TABLE id_table ALTER COLUMN id RESTART; 
SQL> ALTER TABLE id_table ALTER COLUMN id RESTART WITH 100; 

WITH 100 を付けた場合、次の INSERT 文では 101 が設定されます。


【カラムの NOT NULL 制約を付ける、外す】
カラムの NOT NULL 制約を付けたり外したりするのに、今まではシステムテーブルを update するという荒業が行われていました。
http://www.firebirdfaq.org/faq103/

Firebird 3.0 から、このシステムテーブルの update ができなくなり(エラーになり)代わりに、カラムの nullability を設定する直接的な ALTER 文が書けるようになりました。

table に NOT NULL 制約を付ける
ALTER TABLE table_name ALTER COLUMN column_name SET NOT NULL;

table の NOT NULL 制約を外す
ALTER TABLE table_name ALTER COLUMN column_name DROP NOT NULL;

【OFFSET/FETCH 句】
結果セットの中の「何行目から何行」という指定をしたいときは、
いままでも、 FIRST ~ SKIP という構文は使えました。
https://scott.yang.id.au/2004/01/limit-in-select-statements-in-firebird.html

SQL:2008 標準で OFFSET ~ FETCH という構文があるそうで、Firebird 3.0 で、それが使えるようになりました
SQL> select id from id_table order by id;

          ID
============
           1
           2
           3
           4

SQL> select id from id_table order by id offset 1 rows fetch next 2 rows only;

          ID
============
           2
           3


コメント(0) 
共通テーマ:日記・雑感

Firebird をソースからビルドして Ubuntu 17.10 にインストールする [Firebird]

この記事はFirebird Advent Calendar 2017 https://qiita.com/advent-calendar/2017/firebird の10日目の記事です。

過去にソースからインストールした手順・・・
http://nakagami.blog.so-net.ne.jp/2013-10-19
http://nakagami.blog.so-net.ne.jp/2014-12-17
の 2017年版です。

- 必要なパッケージのインストール
sudo apt update
sudo apt install -y libtommath1 libtommath-dev libtomcrypt0 libtomcrypt-dev
sudo apt install -y autoconf cmake libtool g++ btyacc
sudo apt install -y zlib1g-dev libicu-dev libreadline-dev libncurses5-dev

- (試行錯誤の結果、パッケージの firebird3.0 をインストールして削除)
sudo apt install -y firebird3.0
sudo apt remove -y firebird3.0

./autogen.sh --enable-binreloc --prefix=/opt/firebird

make
sudo make install

途中、うまくビルドできなくて試行錯誤した時に、パッケージの Firebird3.0 をインストール→アンインストールしました。
firebird というユーザーができたからうまくいったと思っているんですが、原因はよくわからず、クリーンな正しい手順はわかりません。
また、インストールした apt パッケージに、本来不要なものも入っているのかもしれません。
ただ、Ubuntu のインストール直後に apt install したので足りないものはないと思います。

cmake を使って
cd firebird
mkdir build
cd build
cmake ..
でビルドできるはずなんですが、コンパイルエラーが出ていて
firebird/src/include/../common/common.h:558:2: error: #error Define FB_CPU for your platform
 #error Define FB_CPU for your platform
こちらはまだ途上なのかな、と思いました。
コメント(0) 
共通テーマ:日記・雑感

そろそろリセッションですぞ [日記]

いわゆる「バブル崩壊」は 1991年から 1993年だそうである。
https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%96%E3%83%AB%E5%B4%A9%E5%A3%8A
大学の最終学年で就職活動している頃だったが世の中は
「いまはちょっと調子悪いけど、またすぐ景気良くなるんじゃないの?」
という、のんびりした感じだった。

それよりは、そのあと(僕の最若手の頃)の

- 住専が破綻したのが 1995年頃
- 拓銀や山一証券が破綻したのが 1997年頃

というのが、この先どうなっちゃうんだろうって思った。
給料安いのに出るはずだったボーナスが出ないのも困ったが、かといっておいそれとは転職できなさそうなのが参った。

IT バブル崩壊は2000年
https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%83%BB%E3%83%90%E3%83%96%E3%83%AB

リーマンショックは 2008年
https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%83%9E%E3%83%B3%E3%83%BB%E3%82%B7%E3%83%A7%E3%83%83%E3%82%AF

最近、世の中の景気がいいそうだけど、だからこそ、そろそろかなって思えてくる。

ビットコインは危険だし、IT ベンチャーはイノベーションというより触法ギリギリを狙ってるだけだし、人工知能や自動運転のシンギュラリティは来なさそうだし。
僕の経済予想は当たらないんだけど、海外では、テスラが怪しいと思っている

コメント(0) 
共通テーマ:日記・雑感

micropython から PostgreSQL に接続する micropg [Python]

この記事は MicroPython Advent Calendar 2017 https://qiita.com/advent-calendar/2017/micropython の7日目の記事です。

PostgreSQL とクライアントがネットワークを介してやりとりするデータは割と簡単で、習作としてpure python のデーターベースドライバを書きました。
https://github.com/nakagami/minipg

書いてみて、micropython で動くようにできるのでは?と、この minipg を改造して micropython で動作するようにしたのが https://github.com/nakagami/micropg です。

upip で
import upip
upip.install('micropg')

などでインストールすると

例 にあるように接続できる
https://github.com/nakagami/micropg#example

・・・はずなんですが、自分は Linux 上のmicropython でしか動かしてないので、マイコンボードでの動作を確認していません。
内部では、usocket と ubinascii しか使っていないので、動作しそうではあるんですが、マイコンでの動作確認をしてもらえると嬉しいです。

中身は、1ファイルだけ https://github.com/nakagami/micropg/blob/master/micropg.py のモジュールなので、このファイルを import できる場所に配置してもよいです。

コメント(0) 
共通テーマ:日記・雑感

(私的)女性プログラマーベスト6 [日記]

この記事は、PyLadies Tokyo Advent Calendar 2017 https://adventar.org/calendars/2462 の7日目の記事です。

書いているのは、男です。 ここで、アドベントカレンダーのハードルを下げます。

私基準で選んだ女性プログラマーベスト5人+1組を生まれた年の古い順に紹介します。

- エイダ・ラブレス
https://ja.wikipedia.org/wiki/%E3%82%A8%E3%82%A4%E3%83%80%E3%83%BB%E3%83%A9%E3%83%96%E3%83%AC%E3%82%B9
バベッジの解析機関(機械式のプログラマブルな計算機で、完成していない)
で動くプログラムを書いた、世界で最初のプログラマーだそうです。
この人を知ったのは中学生の頃で、その時は
「存在しない机上のコンピューターのプログラム?空論でしょ」
と思ったんですが、コンピューターに囲まれた現代でもプログラマーという職業を親に説明することができないのに、200年も前の人が、実存しない機械のプログラミングの意味を理解できたのは凄い、と思う今日この頃です。

- ENIAC のプログラマー(6人)
http://www.geekpage.jp/blog/?id=2007/12/6
ENIAC のプログラミング(まあ、第二次大戦中の弾道計算ですね)にも 6人の女性が参加していたそうですが、完成披露パーティーにも呼ばれない日の目を浴びない存在だったようです。

- グレース・ホッパー元准将
https://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B9%E3%83%BB%E3%83%9B%E3%83%83%E3%83%91%E3%83%BC
リレー式コンピューターに挟まった蛾を作業日誌に張り付け、バグの起源となった当事者であり、COBOL を発明した人です。

- ドロシー・ボーン
https://www.nasa.gov/content/dorothy-vaughan-biography
この前見た映画ドリーム(現代 Hiddne Figures) http://nakagami.blog.so-net.ne.jp/2017-10-22
の主人公の3人のうちの一人で、その時、初めて知った人です。
NASA で計算士の職を得たのち、コンピューターの時代になって Fortran プログラマーチームのスーパーバイザーなった方だそうです。
ちなみに、映画凄く良かったです。特に、データーサイエンティストとかプログラマーの女性におすすめです。

- マーガレット・ハミルトン
https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%BC%E3%82%AC%E3%83%AC%E3%83%83%E3%83%88%E3%83%BB%E3%83%8F%E3%83%9F%E3%83%AB%E3%83%88%E3%83%B3_(%E7%A7%91%E5%AD%A6%E8%80%85)
夫がロースクルールに通っている間、子育てしながら働いて、夫が卒業したら、自分が数学の修士を取るつもりだった(が後に離婚)という方。
https://wired.jp/special/2016/margaret-hamilton
ちなみに、Apollo 11号のコードはパブリックドメインで github に公開されてます。
https://github.com/chrislgarry/Apollo-11

- 浮川初子
ジャストシステム創業社長の浮川和宣の妻で、専務から副社長になった方です。
どうも、ジャストシステムの革新的なソフトウェアはこの方のアイディアや実装の結果のようなのですが、探しても情報としては、ここくらいにしかありません。
https://www.justsystems.com/jp/camp/just2010/column/index02.html
(ここもジャストシステムのサイトからはデッドリンクになっているっぽい)
誰か、この方の天才振りを記録した伝記でも出してくれないでしょうか。

以上、改めて見てもプログラマーは(職業を持つ女性が少なかった昔から)女性の活躍できる職種だなと思うので、皆さん頑張ってください。

明日は、 PyQ のヘビーユーザー kor_miya さんです
コメント(0) 
共通テーマ:日記・雑感

Go言語 の Firebird driver 2017 [Firebird]

この記事はFirebird Advent Calendar 2017 https://qiita.com/advent-calendar/2017/firebird の7日目の記事です。

昨年のエントリーはこれ。
http://nakagami.blog.so-net.ne.jp/2016-12-20

昨年の Advent Calendar からの差分はこれ。
git diff f6b1 8e47

見返してみると内容的には、不具合修正だけのようです。

現在の issue を見ると、まだ不具合があるようです。
現在は、問題点の把握(再現コード)もできてなくて、中には不具合じゃないものもあると思うのですが、手が付けられていません。

誰か pull request 送ってください。再現のテストコードだけでもいいです。
・・・という気持ちです。

コメント(0) 
共通テーマ:日記・雑感

Django CyMysql backend の Django 2.0 対応 [Python]

この記事はDjango Advent Calendar 2017 https://qiita.com/advent-calendar/2017/django の4日目の記事です。

Python の mysql 用データーベースドライバーってたくさんあるのですが、CyMySQL https://github.com/nakagami/CyMySQL も、そんな(マイナーな)ドライバーのひとつです。

PyMySQL https://github.com/PyMySQL から fork したもので、Cython がインストールされていれば速く、インストールされていなくても pure python で、それなりに動く、というものです。

Django に対する、CyMySQL 用のデーターベースバックエンドもリリースしていたのですが、Django 2.0 のリリースにともなって、 Django 2.0 用の CyMySQL 用のデーターベースバックエンドをリリースしました。

https://pypi.python.org/pypi/django-cymysql/2.0.0

pip install cymysql django-cymysql で、cymysql と django-cymysql をインストールして、settings.py の DATABASE の ENGINE に django.db.backends.mysql の代わりに mysql_cymysql と入力すると使えます。

django.db.backends.mysql + mysqlclient と比べて機能面で良いところというのはないんですが、
「なんかよくわからないけど mysqlclient のインストールがうまくいかないので django.db.backends.mysql が使えない」
「ビルドするためのコンパイラや libmysqlclient-dev をインストールしたくない」
という人に使ってみてもらえると嬉しいです。


ちなみに、今までは、
import pymysql
pymysql.install_as_MySQLdb()

という処理を初期化時に一回呼ぶと、Django で PyMySQL が使えるという技があったんですが、
https://stackoverflow.com/questions/34777755/how-to-config-django-using-pymysql-as-driver
Django 2.0 のコードの中で mysqlclient のバージョンを判定しているところが入ってしまったので、ソースコードそのままでは動かなくなりました。
(いやいや、その判定いらんやろ)
それで、PyMySQL のバージョン番号がちっちゃすぎるからなんとかしようぜという Issue が、PyMySQL のプロジェクトに上がってて、 https://github.com/PyMySQL/PyMySQL/issues/610
・・・え、そっち?直すなら Django でしょ?という気持ちでいっぱいです。

コメント(0) 
共通テーマ:日記・雑感

Tokyo Quantopian User Group のハンズオンに参加した [Python]

息子は、数学好きだが、株とか投資とかで金儲けには興味ない(はず)。
ただ、高校の頃、かみさんが買ってきた
「ウォール街の物理学者」
を読んで、物理、数学の専門家が、経済の世界で活躍するのが面白かったようだった。

Tokyo Quantopian User Group で、入門者向けののハンズオンがあるというので
https://quantopian-tokyo.connpass.com/event/71872/
まだ興味あって行ってみたいか?と聞いたところ、行ってみたいというので、昨日、親子で参加した。

Quantopian は、Python mini hack-a-thon 夏山合宿で、どりらんさんのデモを見てて、
https://pyhack.connpass.com/event/55337/
そんな世界があるんかーと思っていた。

前半で、株式売買の解説が1時間ほどあったので、後半の Quantoian の使い方の例では、 python が読めれば PyQ 初心者コースレベルの息子でも、(僕でも)だいたいどんなものかわかって、非常に良かった。
右も左もわからない状態からの、最初の一歩は、講義+ハンズオンの形式は助かるなぁ。
株式売買は知らなくて python が書ける人にはよかったが、株式売買はしていて python でプログラムを書いたことない人は難しかったかもしれないな、と思った。

ハンズオンで用意してくれた例題は、超初心者の最初の例として丁度よい難易度だったと思う。
ネットワーク帯域の関係で、各自がコードを書き換えて試すということは思うようにできなかったが、デモを見ているだけでも十分に分かりやすかった。
ハンズオンの例題のpython のコードに日本語でコメントが入っていたのでフィリップモリスとか SP500 になじみのない我々にもわかりやすかった。
フィリップモリスって、グローバル企業でディフェンシブな銘柄の典型なの?

Quantopian を少しだけ使ってみた感想は
「IDE のキーワード補完が凄い!Web ベースでこんなことできるのか!」
だった。

アルゴリズムを書いて、過去の期間のパフォーマンスを見るという基本的なやりかたはわかったが、こっから、まともなパフォーマンスを示すアルゴリズムを作るまでには凄い差があるな、とも思った。

あとで、 drillan さんが翻訳(途中)の Quantopian チュートリアルの和訳があることを教えてもらった。
https://github.com/drillan/quantopian_tutorial

コメント(0) 
共通テーマ:日記・雑感

Firebird deveopers guide [Firebird]

この記事は、Firebird Advent Calendar 2017 の3日目の記事です
https://qiita.com/advent-calendar/2017/firebird

Donation を募って、ロシア語から英語に翻訳した Firebird developers Guide というドキュメントがありまして、書籍として販売するのかと思ったら、 pre beta 版が Web で公開されました。
http://www.firebirdnews.org/firebird-3-developers-guide-beta-now-available/

内容は、 Firebird2.5 での説明をベースにしていて、Firebird 3.0 については適宜「Firebird 3.0 ではこうしたほうがいいよ」という捕捉を入れている形のようです。

目次:

1. このガイドについて
2. サンプルデータベース examples.fdb について
3. Delphi によるアプリケーション開発
4. Microsoft Entity Framework による開発
5. Entity Framework と MVC で Web アプリケーション作成

やっぱり、 Firebird って Delphi とかWindows でつかわれてるんかな?という内容でした。

コメント(0) 
共通テーマ:日記・雑感
前の10件 | -