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

Zope4(Plone5.2) のインストールと実行 [Python]

これは、(第96回)Python mini hack-a-thon の記録です。

Zope のFirebird Database adapter で Zope4 で動くやつあるの?
という Issue が来た
https://github.com/nakagami/Products.FirebirdDA/issues/2
ので Zope4 で何とかならないか調べてみた


Zope4 を(Python3で) 一番簡単にインストールする方法として、 Plone 5.2 の インストール方法のページを寺田さんに教えてもらった。

https://www.starzel.de/blog/four-options-to-try-plone-5-2-on-python-3

一番下、Update: のところの、 github のリポジトリをクローンしてbuildout する方法で動いた。
$ git clone git@github.com:plone/buildout.coredev.git coredev
$ cd coredev
$ git checkout 5.2
$ python3.7 -m venv .
$ ./bin/pip install -r requirements.txt
$ ./bin/buildout
$ ./bin/instance fg


で、Product.FirebirdDA を加えて buildout してみると・・・

diff --git a/buildout.cfg b/buildout.cfg
index 1d5298c77..9b03fa230 100644
--- a/buildout.cfg
+++ b/buildout.cfg
@@ -1,3 +1,6 @@
 [buildout]
 extends =
     core.cfg
+
+develop =
+     src/Products.FirebirdDA
diff --git a/core.cfg b/core.cfg
index 5392330ef..95e74b137 100644
--- a/core.cfg
+++ b/core.cfg
@@ -35,6 +35,7 @@ config-directory = ${buildout:directory}/etc
 # hook for custom eggs. In local.cfg this can be extended
 # with += to add custom eggs for whatever intend.
 custom-eggs =
+     Products.FirebirdDA

 # non-immersive development helpers commonly needed for Plone Core Development
 devtool-eggs =

ZSQLMethd とか、いろいろ関連する Products が動かないっぽいなー・・・
ということで、そう答えてクローズした。

・・・と思ったら、
ZMySQLDA は動くよー、と言われたので Reopen
https://github.com/nakagami/Products.FirebirdDA/issues/2#issuecomment-464300313

今日はここまで

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

ファミマのこども食堂 [日記]

ファミリーマートがこども食堂をする計画があるそうな。
今のところの計画では小学生100円、中学生400円。
(中学生がちょっと高いなぁ・・・って思うけど)すばらしい。http://www.family.co.jp/company/news_releases/2019/20190201_99.html
ん?ちょっと違うな。オリエンテーションはどうでもいいんでできるだけ多くの子の上を満たして欲しい。

失われた20年といっても、僕が子供の頃に比べたら豊かになっていると実感できるが、社会が豊かになっても貧困を100%無くすことはできないらしいことがわかってきた。

100円あったらこどもが飢えずに済むというのが常識になるといいなぁ。
ファミマだけじゃなくコンビニや地方自治体に広がって。

こども手当を各家庭に配るのはやめて、その分を学校給食を無料にして中学校も学校給食を導入するといいと思う。
(各家庭に月1万配布するのをやめればできそう)
そして、希望する子は、朝学校に行ったら何か食べられるといいなぁ。
その時は、もうサンドイッチとか、なんなら乾パンでもいいよ。
最悪、家庭で食事を与えなくても飢え死にしないようになって欲しい。
コメント(0) 
共通テーマ:日記・雑感

息子の誕生日 [家族]

息子の20歳の誕生日だった。
先日の成人式の式典にも参加してた。

自分の20歳になったときは、大学の卒業まで、あと4年もあるし、それまでに社会人になる人多いだろうし、すでに働いている人もいて、自分だけが大人になるのもう少し先だなと感じて、軽い焦りを感じていた。
息子も、あと2年かどうかはわからないがしばらくは経済的な自立はないし、そんなことを思っているだろう。

・・・と思うのだが、今日、息子は友達と東京ベイららぽーとに仮面ライダービルドの映画を見に行った。
帰ってきて、別の友達も交えてポケモンカードをやっていたので、ついでに、ららぽーとのポケモンセンターに行ったんだろう。
親が24、5 まで大学生だったから、そういう焦りは無いのかな?
僕としては、社会も高度化していて勉強しなきゃいけないことも増えているし、晩婚が当たり前になってるから、そんなにあせらなくていいよ、と思う。

かみさんの感想は
「20歳になるまで生きてたね。(事件事故や病気で死んでなくて良かった)」
だった。そういえば、1歳になったとこは嬉しかったな
https://nakagami.blog.so-net.ne.jp/2014-06-06

贅沢を言えば、親よりは長生きして、僕が死ぬ頃には経済的に自立して、死ぬ間際に
「僕の年金をあてにしないで生きていけそう」
と思えるようになって欲しい

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

寝正月 [日記]

コード書こう、本を読んで勉強しよう、という事前の意気込みと裏腹に(半ば予想していたことであるが)寝正月を過ごしている。
ついうっかり、youtube 動画を見続けてしまった。痛恨。
まだ、ネトウヨ動画は suggest されてないので見てないが、なるほどこういうところから弁護士に懲戒請求しちゃったりするのか。
https://ja.wikipedia.org/wiki/%E5%B7%AE%E5%88%A5%E5%8B%95%E7%94%BB%E5%A4%A7%E9%87%8F%E9%80%9A%E5%A0%B1%E9%A8%92%E5%8B%95
気をつけよう。

他に学びもあった。
夜、8時間寝ると体調が良い。
子供が小さいときは、子供を寝かしつけているつもりで一緒に寝てしまって8時間くらい寝ている時期があった。
子供が大きくなるにつれ夜更かしの生活になり、
就寝時間が遅くなっているのだが、若い頃ほどには朝眠くて起きるのが辛いということがない。
年を取ると、朝早起きになるというが、睡眠時間短くてもよくなるのかな
・・・と思っていたが、単に眠りが浅くなっているだけで十分な睡眠ではなかったようだ。
コメント(0) 
共通テーマ:日記・雑感

Firebird を使うメリットって何だろう [Firebird]

これは、 Firebird Advent Calendar 2018 https://qiita.com/advent-calendar/2018/firebird の24日目の記事です。

MySQL や PostgreSQL じゃなくて Firebird を使うメリットって何だろう?
たまに質問されて、自分でも悩んでしまうが、これを機会に挙げてみると・・・

【メリット】

- インストールが簡単。 https://nakagami.blog.so-net.ne.jp/2018-12-02
- コンフィグレーションが簡単。 firebird.conf の修正だけ
- Windows のサポートがちゃんとしている
- (特に最近)SQL 標準の機能がサポートされてきている
- LibreOffice 6.2 の Base で使える http://blog.kimuradb.com/?eid=877556
- 開発が特定の企業に依存していない

【デメリット】

- 使っている人が少ない
- チューニングパラメーターが少ない(チューニングの余地が少ない)
- 可用性を高める機能がない。もしくはとても不足している
- 高負荷を分散するマルチマスターやシャーディングの機能がない
- 開発者とユーザーが少ない

ほとんどの場合困らないと信じているが、困ってしまったときに行き詰ってしまうかもしれないという怖さはある。
SQL文の機能的には問題ないが、僕ですら、積極的に人には勧められない。

僕が、Firebird プロジェクトにコミットしているのは、 せっかく Interbase が公開してくれて OSS として使える RDBMS が放置されて、選択肢が狭くなるのは勿体ない、ということからである。
できれば、僕も(Firebird にして良かったという場面で)仕事で使ってみたい。

HDD のような壊れやすいストレージに依存しなくなって、ストーレージが速くなって、今後、チューニングの必要のない小~中規模の環境で使うメリットが大きくならないかなぁ
・・・という願望はあるし、ワンチャンあるのでは、とは思っている。
コメント(0) 
共通テーマ:日記・雑感

pyfirebirdsql 1.1.2 released [Firebird]

これは、 Firebird Advent Calendar 2018 https://qiita.com/advent-calendar/2018/firebird の23日目の記事です。

Pure python な Firebird Database driver pyfirebirdsql 1.1.2 を(今さっき)リリースしました
https://pypi.org/project/firebirdsql/1.1.2/

主な変更点は 9日目に書いた timezone のサポートです
https://nakagami.blog.so-net.ne.jp/2018-12-11

次にリリースされるであろう Firebird 4.0 beta1 では使えると思います。
コメント(0) 
共通テーマ:日記・雑感

MySQL 8.0 の caching_sha2_password 認証 [Python]

これは これは、BeProud Advent Calendar 2018 https://adventar.org/calendars/3338 の21日目の記事です。

2018年といえば MySQL8.0 が GA になりました。

MySQL 8.0 では、 caching_sha2_password という認証メソッドがデフォルトになりました。
https://dev.mysql.com/doc/dev/mysql-server/latest/page_caching_sha2_authentication_exchanges.html
ざっくり言うと、データーベースの中に保存してあるハッシュ化されたパスワードと、
一時的な nonce でハッシュした値でパスワードが一致しているか確認するアルゴリズムです。

それまで長いこと mysql_native_password という認証メソッドがデフォルトでした。
https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_connection_phase_authentication_methods_native_password_authentication.html
20 バイトの scramble とパスワードをハッシュした値が一致しているかを確認するアルゴリズムです。
よくある、シード付きのハッシュパスワードです。

私は、 CyMySQL という PyMySQL からフォークした MySQL のドライバーをメンテナンスしています。
https://github.com/nakagami/CyMySQL
まず、このドライバーでcaching_sha2_password プロトコルの実装をすることができました。

気をよくした私は、 Go 言語のドライバーで実装し pull request を送って、無事マージしてもらえました。
https://github.com/go-sql-driver/mysql/pull/794
わーいわーい。

さらに気をよくした私は、elixir のドライバーの pull request も送りました。
3か月の放置された後、10日程前に、無事マージされました。
https://github.com/xerions/mariaex/pull/236
わーいわーい。

pythonでプロトタイプを書いて、ほかのプログラミング言語に実装・・・11日目と同じでしたね。
https://nakagami.blog.so-net.ne.jp/2018-12-11-1
コメント(0) 
共通テーマ:日記・雑感

django の Firebird バックエンド [Firebird]

これは、 Firebird Advent Calendar 2018 https://qiita.com/advent-calendar/2018/firebird の20日目の記事です。

Python の Web フレームワーク Django は、デフォルトではFirebird をデーターベースバックエンドとして使えませんが、サードパーティーのデーターベースバックエンドを使用すると使えるようになります。
(フルサポートというわけにはいきませんが)

Django データーベースバックエンドについては DjangoCongress 2018 の資料を見てください
https://gist.github.com/nakagami/098db7387d78ab9c6aa85d77a0eeecf5

私が知る範囲で開発が継続されているのは2種類あります。

ひとつは django-firebird
https://pypi.org/project/django-firebird/
現在の最新は、 Django 1.11 に対応したバージョン 1.11 です。
データーベースドライバー fdb で Firebird 2.x 以上をサポートしています。
https://www.firebirdnews.org/django-firebird-1-11-final-release-available-on-pypi/

もう一つは、私が開発しているdjfirebirdsql
https://pypi.org/project/djfirebirdsql/
https://github.com/nakagami/djfirebirdsql

Django、 データーベースドライバー pyfirebirdsql、Firebird のいずれもリポジトリの最新のバージョンを対象にしています。
これは、かなり expreimental な状態なので、安定性という意味では全くオススメしません。

Firebird4.0 の機能を使っているので、 django-firebird と生成される SQL文が異なります
正直、 stable な状態になるかわかりませんが、 Django 2.2 + Firebird 4.0 で使えるバージョンをリリースできると良いな、と思っています。
コメント(0) 
共通テーマ:日記・雑感

Firebird 4.0 のまで残件 [Firebird]

これは、 Firebird Advent Calendar 2018 https://qiita.com/advent-calendar/2018/firebird の17日目の記事です。

2.0をリリースしてから3.0 をリリースするまで10年もかかってしまったことの反省から、
「4.0 以降は1~2年毎にリリースしようねー」
という話になっていたと思うのだが、Firebird3.0 がリリースされて2年半以上の時が過ぎている・・・

Firebird 4.0 の Planning Board を確認してみた。
https://www.firebirdsql.org/en/planning-board/

IN PROGRESS になっている残件は以下の通り。

Mandatory features
++++++++++++++++++++

- 論理レプリケーション CORE-2021
- 統計情報の最適化 CORE-1082, CORE-1686

Optional features
++++++++++++++++++++

- Window 関数の拡張 CORE-1688 (ほぼ実装。残件は CORE-5338 )
- Time Zone サポートCORE-694, CORE-909 (マージ済み? )

Firebird に論理レプリケーション求めているひとあんまいなさそうだし、
もう残りは次のリリース(5.0?)に延期して、とっとと Firebird 4.0 リリースしても
いいんじゃないかなぁ・・・と感じている今日この頃。

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

動く疑似コードとしての Python [Python]

これは、BeProud Advent Calendar 2018 https://adventar.org/calendars/3338 の11日目の記事です。


2018-10-21 にあった tokyo.ex#9 というイベント
https://beam-lang.connpass.com/event/103873/
の LT で、
「elixir のPostgreSQL ドライバーに Pull Request を送ってマージされたよ、わーい」
という話をした。
PostgreSQL 10 で実装された scram-sha-256 authentication method に対応したものだ。

https://gist.github.com/nakagami/db99822eef3033acfbfe11241cc15547

この時のメインテーマは 「Jose Valim さんはいい人」だった。

これを、BeProud Advent Calendar 目線で語ると、elixir で実装する前に、自分が書いた Pure Python のPostgreSQL ドライバー https://github.com/nakagami/minipg に scram-sha-256 認証のメソッドを実装して動作を確認できたことが大きかったと思う。
https://github.com/nakagami/minipg/commit/d4ef01ae2867b267c4e4dca8550b9cfce0a61ccc

自分の慣れもあるだろうけど、python は、ビルトインのライブラリも充実していて、例えば、今回であれば
「hashlib と base64 と hmac 使えばできるはず!」
という予想ができて、逆に、python のライブラリを活用しても実装するのが困難な機能は、他言語で実装するのは無理だろう、という信念に基づいて実装できた。
Python は実行は遅いけど、検証のために「とにかく動くものを作る」のには、とても適していると思う。

まあ、正確に言えば、先に Python で実装して、
「なんか、自分書いたら勉強になるプログラミング言語で、まだ、この機能が実装されてないドライバーはないかなぁ・・・」
と探した結果なんだけれども。

Python で、PostgreSQL のドライバーといえば psycopg2 がデファクト・スタンダードだが、リファレンス実装として Pure Python の PostgreSQL ドライバーを書いておいて良かった・・・と思う今日この頃

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