SSブログ

2019年のerlang/elixir Firebird データーベースドライバー [Firebird]

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

erlang の Firebird データーベースドライバーを書いていて、メンテナンスしています
https://github.com/nakagami/efirebirdsql
・・・とはいっても、最近何もしてないなあと思って、ログを調べると、今年前半にはリファクタリングしたり
Srp256 や decfloat 対応(どちらも Firebird4.0 のための機能) をしたりしてました。
開発バージョンの Firebird を使っている人でなければ関係ない部分の修正でした。

Elixir については、すべてを書く気力がなかったので、上記のerlang ドライバーの関数を呼ぶドライバーを書きました。
https://github.com/nakagami/firebirdex
これ、随分前に書いた記憶だったのですが、開発を開始したのが今年の2月だったようです。

最近、これらのコードは触ってなくて、ほかには erlang/elixir を書く機会がないのでだいぶ忘れてきました。
Firebird 関係なく、erlang/elixir を書く機会があると嬉しいなぁと思う今日この頃です。

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

WSL1 のUbuntu 18.04 にインストールした Sphinx で Markdown から PDF を作る [Python]

Markdown から PDF を作りたい(かも)ということになった。
以前、Sphinx で(Restructured Text で)ドキュメントを書いて PDF 出力した。
PDF 出力のために何かインストールしたんだけど、何したんだっけ?と思って自分のブログ(ここ)を探したが発見できなかった。
昔は、何かをインストールした手順みたいなのも結構書いてたんだけどなぁ。
よろしくない。

Windows 10 のいわゆる WSL1 の Ubuntu 18.04 で、ほぼ何もインストールされてないところからの手順を試したので、ここに書いておく。

sudo apt install -y python3-pip
pip3 install Sphinx recommonmark

sudo apt install -y texlive-latex-recommended \
 texlive-latex-extra \
 texlive-fonts-recommended \
 texlive-fonts-extra \
 texlive-lang-japanese \
 texlive-lang-cjk

sudo apt install -y latexmk

でインストール

ここらへん https://sphinx-users.jp/gettingstarted/make_project.html を見ながら
sphinx-quickstart -q -p "Sample PDF" -a nakagami -v 1.0 -l ja sample_project

でプロジェクト作って
http://www.usaturn.net/pyconjp/use_markdown.html に従って conf.py に以下を追加
from recommonmark.parser import CommonMarkParser

source_parsers = {
    '.md': CommonMarkParser,
}

source_suffix = ['.rst', '.md']

あとは、 index.rst の toctree に foo.md とか入れて
make latexpdf

を実行するとPDF ができた。(拡張子 .md は省略可)

(追記 2019-12-22)svg 画像を埋め込む場合
https://blog.interstellar.co.jp/2019/03/sphinx-svg-pdf-converter/
sudo apt install inkscape
pip3 install sphinxcontrib-svg2pdfconverter

conf.py に以下を追加
extensions = [ ‘sphinxcontrib.inkscapeconverter’]
inkscape_converter_bin = ‘/usr/bin/inkscape’

これで svg 入りの Markdown がpdf に変わる・・・のだが、
画像に日本語の文字がある場合なんかにフォントの関係か[Not supported by viewer]
と出る場合があってsvg画像についてはいったん挫折
(ロゴ画像なんかは大丈夫でないかと)
コメント(0) 
共通テーマ:日記・雑感

2019年の Go言語の firebird データベースドライバー更新状況 [Firebird]

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

今年の firebirdsql https://github.com/nakagami/firebirdsql は、以下のような修正をしたようです。

1. begin/commit の対応がとれていない不具合の修正
2. Event https://nakagami.blog.ss-blog.jp/2016-12-09 のサポート
3. column_name_to_lower の実装( OR マッパー向け)
4. Firebird 4.0 の decfloat (精度の高い decimal型)のサポート

1. は https://github.com/nakagami/firebirdsql/pull/91
2. は https://github.com/nakagami/firebirdsql/pull/92
で Pull Request をもらったものです。
Pull Request もらうことなんてほとんどないので、大変うれしかったです。

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

葬式のために生きる [家族]

先月、義理の伯父が亡くなって先日伯母が亡くなり
https://nakagami.blog.ss-blog.jp/2019-12-07-1
続くもんだなーと思っていたら、今日、母方の伯父の訃報を受けた。

昔は、親戚の葬式なんて煩わしいなぁと思ったが、父の葬式のときに忙しいなか集まってくれてうれしかった。
父の代わりということになるが、おじおばの葬式にはできるだけ出たいと思っている。

子供が大人になる目途が付いて、今は葬式に出るために生きているようなもんだ。

子供の頃に盆正月にはあっていた親戚も最近は会えるのは葬式しかなくて、葬式に出ないと、もう二度と生きては会えない親戚もいるんだろうなぁ。
社会人なりたての頃は、仕事が忙しくて、立場も弱いので休みづらく、
「俺、将来、親の葬式に出られるかな」
と思ったもんだが、紆余曲折あって今のところ近い親戚の葬式には出られている。今の会社が休みを取りやすい会社で良かった。

そういえば、今回、伯父さんの遠方にいる兄弟の中でも葬儀に出られない人もいるだろうなぁ。
例えば、僕の実家の愛知県に住む長男。
僕が弟妹より長生きするなら、弟妹の葬式には出たいし、先に逝くなら出てもらいたいんだけど、そうなると葬式のために田舎にUターンして暮らさないと行けなくて、それは難しいなぁ
コメント(0) 
共通テーマ:日記・雑感

JA 福岡市の LibreOffice ver6.0 Base マニュアル [Firebird]


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

JA 福岡市が公開している LibreOffice のマニュアルのできが良いらしいことは知っていたのですが、この10月に、埋め込み Firebird に対応したマニュアルが追加されました。やったー

この https://www.ja-fukuoka.or.jp/libre/ 中にある
- LibreOffice ver6.0 Base マニュアル(入門編)
- LibreOffice ver6.0 Base マニュアル(データ加工・事務処理編)
の2つが、埋め込み Firebird に対応したものです。
さらに、下のほうにある 「LibreOffice_Baseマニュアル」が HSQLDB 版で、それの Firebird に対応したもののようです。

(入門編)は、Base に限らず、リレーショナルデーターベースの基本的な説明がされていて Base ユーザーに限らず RDBMS 入門的な読み方のできる良い内容だと思います。
(それがFirebird を例に説明されているので、Firebird Advent Calendar 的には、なお良し)


(データ加工・事務処理編)は、Base の使い方(機能)説明なので、Base を使わない RDBMS 入門ユーザーに直接役に立つことはあまりありませんが、10.~14. は、SQL文を書く人にも役に立つと思います。

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

LibreOffice の Base と Firebird [Firebird]

この記事は Firebird Advent Calendar 2019 https://qiita.com/advent-calendar/2019/firebird と LibreOffice Advent Calendar 2019 の https://adventar.org/calendars/4230 の 14日目の記事です

昨年の Firebird Advent Calendar で Meiji さんが言及 http://blog.kimuradb.com/?eid=877556 してますが、LibreOffice 6.2 から Base の埋め込みデータベースとして Firebird が選択できるようになりました。
(そして、LibreOffice 6.3 からデフォルトで Firebird が選ばれているようになりました)
Firebird 3.0 の embeded サーバーが使われているようです

Base の odb ファイルは zip ファイル形式になっていて、埋め込みデーターベースに Firebird を選択した場合、その zip ファイルを解凍すると Firebird のバックアップファイルが取得できます。
basetable.png左のように LibreOffice からテーブルデータビューでデータを登録した odb ファイルから以下のような操作をしてみました
- odb ファイルをunzip
- gbak でリストア
- isql で接続して select

nakagami@ubuntu1804:~$ cd basefiles/
nakagami@ubuntu1804:~/basefiles$ unzip samplebase.odb
Archive:  samplebase.odb
 extracting: mimetype
   creating: reports/
  inflating: content.xml
  inflating: database/firebird.fbk
   creating: forms/
   creating: Configurations2/
  inflating: settings.xml
  inflating: META-INF/manifest.xml
nakagami@ubuntu1804:~/basefiles$ gbak -c -v -user SYSDBA -password masterkey database/firebird.fbk /tmp/firebird.fdb
gbak:opened file database/firebird.fbk
gbak:transportable backup -- data in XDR format
gbak:           backup file is compressed
gbak:backup version is 10
gbak:created database /tmp/firebird.fdb, page_size 8192 bytes
gbak:started transaction
gbak:restoring domain RDB$1
gbak:restoring domain RDB$2
gbak:committing metadata
gbak:restoring table table1
gbak:    restoring column id
gbak:    restoring column s
gbak:restoring generator RDB$1 value: 3
gbak:committing metadata
gbak:    restoring index RDB$PRIMARY1
gbak:restoring data for table table1
gbak:   3 records restored
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:creating indexes
gbak:committing metadata
gbak:    activating and creating deferred index RDB$PRIMARY1
gbak:adjusting views dbkey length
gbak:updating ownership of packages, procedures and tables
gbak:adding missing privileges
gbak:adjusting system generators
gbak:finishing, closing, and going home
gbak:adjusting the ONLINE and FORCED WRITES flags
nakagami@ubuntu1804:~/basefiles$ isql -user sysdba -password masterkey /tmp/firebird.fdb
Database: /tmp/firebird.fdb, User: SYSDBA
SQL> show tables;
table1

SQL> show table table1;
There is no table TABLE1 in this database
SQL> show table "table1";
id                              INTEGER Not Null Identity (by default)
s                               VARCHAR(100) Nullable
CONSTRAINT INTEG_1:
  Primary key (id)
SQL> select * from "table1";

          id s
============ ===============================================================================
           1 あいうえお
           2 かきくけこ
           3 さしすせそ

SQL>

日本語の文字列も問題なく select できました。
ただ LibreOffice で table1 と、小文字のテーブルを作成してしまったので、ダブルクォートでクォートする必要がありました。
コメント(0) 
共通テーマ:日記・雑感

Django の Firebird バックエンド djfirebid 0.2.0 リリース [Python]

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

Django のFirebird backend を書いていることは、昨年の Firebird Advent Calendar で紹介しましたが
https://nakagami.blog.ss-blog.jp/2018-12-20 Firebird 4.0 が出ないまま Django の開発の trunk がDjango 3.0 に移ってしまったので、結局 Django 2.2 向けのリリースはしてません。

Firebird 4.0 を待っていると、Django の、どのバージョンをターゲットにしていいかわからないので、 Django 3.0 もリリースされたことだし、 Django 3.0 + Firebird 4.0 beta1 対応版として、バージョン 0.2.0 をリリースしました(さっき)
https://pypi.org/project/djfirebirdsql/0.2.0/

Firebird の制約で
- 識別子を Rename する機能がない
- 一時的に制約を OFF にする機能がない
- Firebird に関数や演算子がない
- 日付時刻型の精度がちょっと低い
- 制約が効いていてカラムの変更をできない(←ここは、まだ改善の余地あるかも)
など、いろいろ問題あるんですが、できる部分では頑張りました。

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

伯母の訃報 [家族]

父方には伯母が3人、叔母が3人いる。
そのうちの伯母と、その連れ合いが続けて4年ほど前に亡くなっていた。

今朝、一番上の伯母が亡くなったと連絡を受けた。
父が亡くなってから会って話をするときによく
「弟が・・・」
と言っていて(弟って、誰だ?)と思ったら(男の兄弟は父だけなので)父のことだったという伯母だ。
祖母は体が悪いとかいってあまり働いてなかったが、伯母は祖父に似て働き者で、父の母親の役割も担っていたようだ。
父が生まれたとき、跡取りが生まれて嬉しかったというようなことを話してくれた。
伯母は農家に嫁ぎ、自分の息子(僕の従妹)が農家をやっているが、実家の跡取り(であるはずの僕)が
都会に住んでサラリーマンをやっていることについて、僕には非難めいたことを一切言わない伯母さんだった。

先月、(もう一人の伯母の連れ合いの)葬式に出た時には、その伯母は、寝たきりになっているが元気だという話を聞いていた。
じゃあ、またそのうちに会いに行こうと思っていたが、結局会えずじまいだった。
最後に会ったのは、妹にわざわざ連れて行ってもらったときだが、先日の話では、あれはもう3年も前の話になるらしい。

父が亡くなって、父母の兄弟姉妹の葬式に出ることが僕の責務になった。
地元の農家だったら出て当たり前の葬式に、遠いんだから、サラリーマンだから平日は休みをとれないだろうから、大変だから来なくていいよと言ってくれる人もいる。
千葉なんて遠くないからいつでも帰れるよ、と言って実家を出てきた身としては、そういうのを理由にしないようにして頑張っているのだが、親戚の葬式にどこまで出られるだろうか。

昔は、なんとなく、60過ぎて閑職になるか、65過ぎて年金生活になってからなのかなあと思っていたが、
今回亡くなった伯母が 87歳で、他の伯母や母方の伯父伯母も、僕が定年まではいないのかなぁ、と思う今日この頃。

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

2019年の pyfirebirdsql [Firebird]

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

pure python で、私が書き起こしてメンテナンスしている Firebird のデーターベースドライバー pyfirebirdsql https://github.com/nakagami/pyfirebirdsql の2019年のリリースは振り返ってみると、結局一回だけでした。

内容も、
- ソースコードのちょっとした整理
- Firebird 4.0 beta1 で実装された decfloat の新しい内部形式に対応
程度で、 stable な Firebird3.0 や Firebird 2.5 には影響のないものでした。

FDB https://nakagami.blog.ss-blog.jp/2019-12-02 のように、スキーマやモニター情報を取得する機能をドライバーに含めるつもりはないので、機能的な追加は、もうしないと思います。

Firebird 4.0 の準備をしながら数年というような状況になってきました。
2020年こそ Firebird 4.0 がリリースされることを期待します。

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

FDB driver 101 [Python]

これは、 Firebird advent calendar 2019 https://qiita.com/advent-calendar/2019/firebird の2日目の記事です

Firebird Conference 2019 で、発表された Firebird データーベースドライバー FDB のプレゼン資料は、ここに公開されているようです。
https://www.ibphoenix.com/files/conf2019/pythonfdb101.pdf
コメント(0) 
共通テーマ:日記・雑感