SSブログ

(第158回)Python mini Hack-a-thon [Python]

コロナ以降の通常回で初めてだったので、もう4年ぶりくらい?
https://pyhack.connpass.com/event/314279/
GWの始まった一昨日の 4/27に参加

プライベートでプログラミングするぞ!と言っていても家にいたらダラダラと Youtube を見ているばかりで全然始まらないので、思い切って久しぶりに参加。

みんなに
「久しぶりですね」
って言われた。

久しぶりに、 「Python 書いてるけど仕事と関係ない人との雑談」は、楽しかったし刺激にもなった。
趣味の新しいコードを書くいいきっかけにもなった。

残念なのは、久しぶりだったのに、池袋会場とその後の神楽坂での懇親会で初めての人に会わなかったこと。
新しい人(特に若い人)に参加してほしいなぁ。
コメント(0) 
共通テーマ:日記・雑感

プログラミング言語に良し悪しなどない [Python]

今日もまた
「文法的な些末な部分で気に入らないプログラミング言語Aを使うな。俺のお気に入りのBを使え。」
と言っている人がいて、ましてや A が Python のことだったりして笑ってしまう。

Python が処理が遅いこととマルチスレッドがうまく扱えないことは認めるが、そのほかは慣れの問題だし、いま Python のあらゆる分野に世界中の優秀なひとたちのリソースが投入されていることがわかってないのか?

「世界の共通語として、英語を使うな、日本語を使え」
と言っているようなものでないか?

プログラミング言語に絶体的な良し悪しなどなくて、あるのは長所と短所で、それは向き不向きといってもいいだろう。

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

img2pdf [Python]

昨日の逆で、画像1つを1ページにして PDF にする

https://pypi.org/project/img2pdf/
コメント(0) 
共通テーマ:日記・雑感

pdf2image [Python]

PDFファイルを1ページずつ画像にするライブラリ
https://pypi.org/project/pdf2image/

poppler っていうコマンドのフロントエンドなので 別途 poppler をインストールする必要がある。
ubuntu の場合
apt install poppler-utils poppler-data

としておけば良さそう

poppler は、Linux デスクトップの PDF のプレビューに使われているものらしく素性は良さそう。
https://ja.wikipedia.org/wiki/Poppler

各ページを jpeg にして保存する場合の例
from pdf2image import convert_from_path
for i, image in convert_from_path('example.pdf').enumerate():
    image.save(f'{i}.jpg', "JPEG")

convert_from_path(パス名) や convert_from_bytes(バイナリデータ) で、 Pillow の Image オブジェクトのリストを返す
コメント(0) 
共通テーマ:日記・雑感

Python3 の tkinter [Python]

Python に標準で入っている GUI ツールキットということで便利な tkinter

以前、画像ファイルを表示するスクリプトを書いた
https://gist.github.com/nakagami/3764702
Pillow の力によって、アニメーション gif の画像を一コマづづ表示できる。

Python3 になって、(モジュール名など)色々変わったのにネットでは、古い Python2.7 の時のサンプルコードばかりで、残念だなと思っていた。
趣味で tkinter のコードを書こうかなと思っているのだが、まず、やりたいことができるか検証コードを書いた。

発生するイベント情報を print して、 マウスクリックした位置に赤い円を描画するスクリプト
https://gist.github.com/nakagami/b93521c7c369b4986e967f5fdeef1690

twisted で、tkinter のイベントを扱う例
https://gist.github.com/nakagami/2d58fac16c03fd5dab8608d81a8826ad
Python2.7 での example を書き換えたら Python3 でも動いてるっぽい。
終了できなかったが、ここの質問を見て https://stackoverflow.com/questions/71281691/cannot-stop-twisted-reactor-when-calling-reactor-stop
os._exit(0) で終了するようにできた。しかし、ちょっと乱暴なので気に入らない。もっと良い方法はないものだろうか。

自分の macOS の環境では、 Canvas に描画しても表示できなかったが、結局 brew で install していた Python3.11 をアンインストールして、公式インストーラー https://www.python.org/downloads/macos/ の Python3.12 をインストールしたら描画できるようになった。
Python のバージョンの問題ではなく brew の python の tk サポートに問題があるっぽい。
brew の Python も、そのうち直るかも。
コメント(0) 
共通テーマ:日記・雑感

PyConAPAC 2023 で感じた、あまりにもITエンジニアいない問題 [Python]

PyCon APAC で、トークは聞かなかったけど、ブースを出している会社さんには話を聞きにいった。
大きく、開発ツール、教育といった参加者を顧客ターゲットにした会社と、
顧客ターゲットとしてなくて、内部が Python で開発してますという会社に別れていたと思う。

後者の会社さんに、ブースを出した目的を聞くと、やはり採用だという。
参加している人たちは、Python で仕事していて、その中で今すぐ転職したいっていう人いないと思うけど、それでもいいの?と、そのものズバリを聞くと大概は、まずはプレゼンスを上げて、名前を知ってもらうことで、転職サイトなんかで検索で引っかかった時に、見たことある会社名、と思ってもらうというような話だった。
そして採用活動を、転職エージェントなんかでしても「なかなか合う人(=もうちょっと自分でできる人)がこない」ならいい方で、「採用したいが全く応募がない」というところもあるみたい?

コロナがあけて景気が良くなって、さらにあらゆるところで IT化がなされ、需要が等比級数的に増えているのに必要な技能を持った人間は、一定割合で自然発生的に増えるのを待つしかないからなんだろう。
今、中学校でプログラミングが必修化されて、大量にプログラミング嫌いな日本人を生み出していることと思うが、その中で、以前であればプログラミングの楽しさを知ることなく終わっていた人が目覚めるってことはあるんだろうから、多少は改善するのかも。
その代わり、プログラミングが嫌な思い出としてしか残ってない人を量産することになると思うが

30年前に、プログラマーなんて掃いて捨てるほどいるので 35歳くらいまでにマネージメントできるようにならないとダメだよと言っていたあれはなんだったの?
コメント(0) 
共通テーマ:日記・雑感

PyConAPAC 2023 に参加した [Python]

昨日、一昨日の PyConAPAC 2023 に参加した。
(今日やっているスプリントには参加してないです)
今年の PyConAPAC は、久しぶりに多くの人が集まれるイベントになった。

今回こそは、ちゃんとトーク聞くぞ!・・・という意気込みはあったのだが、
結局、そこら辺をうろうろして知り合いにあったら挨拶して近況を聞いて、
パーティーでたまたま隣になった人や知り合いの知り合いとして紹介された人と
少し知り合いになったりして終わってしまった。

コロナ禍で会社がリモートで仕事する体制になって、
自分も会社に行かなくなってしまったので、
自分の会社の同僚のことだけを考えても、久しぶりにあった人にも挨拶し、
slack 上では知っているけど、初めて会う人にも挨拶し、会社の OB にも会えて、みんな元気そうだったし、

長いことあってなくて、どうしてるかなーと思っているような人が、(その場にはいないものの)
知り合い経由で元気そうにしてることも聞けて嬉しかった。

Python の話は、ほとんどしなかった。
コメント(0) 
共通テーマ:日記・雑感

DjangoCongressJP 2023 [Python]

https://djangocongress.jp/
参加した

自分が見た中で興味深かったのは

- グラフデータベースを用いた Djangoアプリ作成入門
- データ分析者にとっての Django: Streamlit や Dash との比較

セッションの間の休憩やお昼休み時間が長くとってあったのがよかった。
みんな、真面目にトークを聞こうとして来ているので、トークがぎっちり詰まっているスケジュールだと、
僕のように参加した人との雑談を楽しみにしている人には肩身が狭いのだが、DjangoCongressJP では、トークも聞けて
雑談も出来て、ちょうどいいイベントだった。

パーティーとその後の二次会が本番だった。
久しぶりに会った知り合いや初めて会う同僚が多くて僕は楽しかったが、初めて参加した方が楽しかったか心配。
初めて参加した人が楽しくて来年も参加したくなるといいなと思った。
コメント(0) 
共通テーマ:日記・雑感

Python3.12 がリリースされた [Python]

Python 3.11 が昨年の10月にリリースされた時、今後は毎年10月に Python の新しいバージョンがリリースされると発表されていた。

そして 2023-10-02 に 3.12がリリースされた
https://www.python.org/downloads/release/python-3120/

その間に Python3.7 が Deprecated になった。
Python3.7 って、ついこないだじゃなかったっけ?・・・と調べたら 2018年だった。
5年ならしょうがないか。

最近 Deprecated になるビルトインライブラリ多い印象。

勢いがあって、開発者が多いからこそだと思うが、書いたコードが、Python のバージョンアップに追随しないと、どんどん動かなくなっていきそうで、おじさんには厳しい。
コメント(0) 
共通テーマ:日記・雑感

PyPy を Python2.7 の代わりに使う [Python]

Ubuntu 22.04 では Python2.7 が apt でインストールできるが、Ubuntu の、その後のバージョンでは Python2.7 が apt ではインストールできなくなってしまった。

これは、あまり言わないほうがいいのかもしれないけれど、Python (正確にはrpython) で書かれた Python 実装の PyPy で、Python2.7 系と Python3 系が同時並行にメンテナンスされている。

https://www.pypy.org/

Ubuntu の場合

sudo snap install pypy --classic

で pypy コマンドがインストールでき、それが Python2.7 相当になっている

pypy -V
Python 2.7.18 (8d509266596ab6a70defcf87c8b29f57b8e32426, Jun 15 2023, 10:18:34)
[PyPy 7.3.12 with GCC 10.2.1 20210130 (Red Hat 10.2.1-11)]

PyPy の CPython との互換性はかなり高いので、もし Python2.7 でしか動かないコードがあって、Python2.7 の動く環境がないという場合は、PyPy を使ってみるのも手かなと思う。

・・・というところまで考えて、
Github actions で Python2.7 が drop された https://github.com/actions/setup-python/issues/672 が、 pypy2.7 でテストを実行できることに気づいた。
https://github.com/nakagami/CyMySQL/commit/eca2d81b1cadeef4c23ec3385bf9445abe79e24e

もちろん完璧ではないが、pypy2.7 でのテストを CPython2.7 でのテストの代わりとして実行することにした
コメント(0) 
共通テーマ:日記・雑感