2025年01月01日

PythonでNetlifyにフォルダを爆速デプロイ!

sc_deploy_netlifty.png


はじめに


いままでは、Netlifyの管理画面にアクセスして、フォルダをドラッグアンドドロップすることでアップロードしていました。簡単で便利なのですが、もし手が滑って間違ったフォルダをアップロードしてしまったら……?


うっかり隣の秘密のフォルダーをアップしてしまったら、1秒で全世界に公開されてしまいます。これはもう悪夢です。


「Pythonだけで安全に、確実に、Netlifyへデプロイできたらいいのに」


そう思って始めたのが、今回のプロジェクトです。

しかも、ChatGPT(GPT-4o)を相棒にしたら、驚くほどスムーズに完成しました。


この記事では、完成したスクリプトの紹介と、その過程での苦労やハマりポイントを語ります。


やりたかったこと


・Node.jsやnpmを使わず、PythonだけでNetlifyにデプロイ

・ローカルの静的フォルダ(HTML/画像)をまるごとアップロード

・トークンで自動化できる構成にしたい


最初の試み:files= を使ってPOST


PythonでZIPを作成し、NetlifyのAPIに requests.post(..., files=...) で送ってみました。


files = {'file': (zip_path, f, 'application/zip')}
response = requests.post(url, headers=headers, params=params, files=files)


✅ 成功と表示される

❌ でも中身を確認すると、index.htmlが消えてる!?


さらに、画像やCSSファイルもすべて 0バイト。


原因と解決策


ChatGPTにスクリプトを投げて聞いてみたところ、


Netlify APIは Content-Type: application/zip でZIPバイナリを直送(data=)しないといけない。files= ではmultipart/form-dataになってしまい、NetlifyがZIPとして扱えない。

という指摘。


つまり、こう直す必要がありました:


with open(zip_path, "rb") as f:
binary_data = f.read()
response = requests.post(url, headers=headers, params=params, data=binary_data)


完成スクリプト:python-netlify-folder-deployer


完成したスクリプトはGitHubで公開しています。




・Pythonだけで完結

・Netlify REST APIでZIPアップロード

・draft/production 切り替え対応

・ログ付きで安心


まとめ


・PythonだけでNetlifyにフォルダをアップロードするスクリプトを作った

・最初は files= にハマって404地獄を味わった


Netlifyは便利だけど即時公開なので、爆速な分、慎重さも必要です。

このスクリプトが、あなたの自動デプロイ生活を少しでも快適にできれば幸いです!

posted by MON at 00:00| Comment(0) | TrackBack(0) | 月記 | このブログの読者になる | 更新情報をチェックする

2024年12月01日

D-STAR の自動応答局の中の人をAIにやってもらおう!

d-star_ai_title.png







Heroes League 2024MAリーグ決勝戦進出作品となりました。(が、受賞は逃す)




heros league.png





posted by MON at 00:00 | TrackBack(0) | 月記 | このブログの読者になる | 更新情報をチェックする

2024年11月01日

 先に の意味

公園に,おとなが 8人と 子どもが 6人 います。子どもが 4人 来ました。
公園には,みんなで 何人 いますか。
つぎのような 考えで,( )を 使って,1つの しきに あらわして もとめましょう。

whatisfirst.JPG

posted by MON at 00:00 | TrackBack(0) | 月記 | このブログの読者になる | 更新情報をチェックする

2024年10月01日

WSL + QT = could not connect to displayでドハマリした。


GOLE 2 Pro (Celeron N5095) / Windows 11 で GRC (GNU Radio Companion) を動かそうとして、VcXsrvを使った手順を踏んだところ、GRCは起動しましたが、フローを実行すると

qt.qpa.xcb: could not connect to display 10.255.255.254:0.0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb..

というエラーで止まってしまうという状態になりました。
export QT_QPA_PLATFORM=offscreen
でGUIを無効にすれば実行は可能ですが、状態もわからないし、パラメータを動的に変更することもできないですし、不便ですよね。

で、ドハマリして3日ほど悪戦苦闘していたのですが、 結論から言えば、Display Driverの更新で動作するようになりました。WSLgが有効な環境では VcXsrv も
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
も不要です。

=======================================================


以下、解決までのメモ…

すでにWSLをインストールしていて、
wsl --status で
Linux 用 Windows サブシステムの最終更新日: 2022/03/29
カーネル バージョン: 5.10.102.1

となる場合は、VcXsrv を使用した手順です。

問題となるのは、wsl --version で以下のようにWSLgが含まれる場合です。

WSL バージョン: 2.2.4.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.61
MSRDC バージョン: 1.2.5326
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26091.1-240325-1447.ge-release
Windows バージョン: 10.0.22631.4169

2024年4月以降に wsl --udpdate をした環境はこちらのはずです。

Ubuntu 導入〜 WSLg の動作まで

wsl --update
wsl --install Ubuntu-2x.04

$ sudo apt update
$ sudo apt grade
$ sudo apt install x11-apps
$ xeyes


この時点で
can't open display:0
で xeyes が立ち上がらない環境は、この先いくら頑張っても望み薄ですので、ディスプレイドライバーの更新を行いましょう!

なお、MS公式の Linux 用 Windows サブシステム で Linux GUI アプリを実行する からリンクされているIntel GPU ドライバーでダウンロードできる、gfx_win_101.3790_101.2114.exe は古いらしくダメでした。

intel uhd.png

正解は、N5095 as Intel 7th-10th Gen Processor Graphicsの場合、gfx_win_101.2130.exe でした。

intel uhd update.png

Ubuntu側の環境で
export DISPLAY=:0.0
export DISPLAY=172.26.192.1:0
などの export DISPLAY をいろいろ試したり、Qtの環境をいろいろ試したり、.wslgconfig に
LIBGL_ALWAYS_SOFTWARE=1
やら .wslconfig に
guiApplications=false
やら書いてもダメでした。

コンピューターの世界は日進月歩で進化しており、その過程を体感できることは喜ばしいことです。しかし、以前の手法が通用しない時が発生しがちなのは困ったものです。
posted by MON at 00:00| Comment(0) | TrackBack(0) | 月記 | このブログの読者になる | 更新情報をチェックする

2024年09月01日

Higole GOLE2 Pro レビュー

Higoleの GOLE2 Pro というミニPCを2024年3月に購入してしばらく使ったのでレビュー。

gole1andgole2pro.JPG

言いたいこと:付属のType-C アダプターは常時12V出力なので、絶対に他の機器で使用しないこと!!



昔からミニPCにロマンを感じる派で、いままでさまざまな機種を使ってきました。
Higole の GOLE1 は 2017年4月に GearBest というサイトで $165.59 USD (1ドル110円くらいだった) で購入したようです。

GOLE1はバッテリー&モニター搭載、さらに外部端子が充実した最小クラスのフル Windows 端末として唯一無二の存在で、なにかと便利に使っていたのですが、いくつか不満な点もありました。

・バッテリーが充電されている状態で電源ボタンを押しても起動しない場合がある。その場合は、リセットボタンを細い棒で押す。
・電源ランプが外に出ていないので、LANコネクタの隙間から斜めに覗いて確認する必要がある。
・ストレージが64GBしかないので、大型のWindows Updateが来た場合に、即 windows.old を削除するなどの対応が必要。
・Android 5.1が8GBを占めていて邪魔(パーテーションをすべて削除してクリーンインストールした。)
TouchSettings.gtを書き戻しても、画面端は反応しない。
・SDカードは 32GB 以下のみかつ UHS-1 は非対応なので、Class 10 かつ UHS-1 なしという、ちょっと特殊なSDカードを大事に使用。
・WLANのアンテナがコネクタを塞いでいて邪魔(WLANはOFFで使用)
・ボタンのタクトスイッチが正面についていてケース内で誤動作しやすく、押し心地も安っぽい。

どれも致命的なものではありませんでしたが、
・Atom Z8350は今となってはさすがに遅い
ということで、後継機を期待していました。



GOLE2 Pro の前に、GOLE1 Proという Celeron J4125 のマシンが発売されていましたが、発熱の問題があるようで、購入をためらっていました。
しばらく迷っているうちに、GOLE2 Proが発売され、本機種は強制空冷となり、CPUも Celeron N5095 となってパフォーマンスが向上したので Aliexpress のコインを割引の上限まで貯めて購入しました。

ali_gole2pro.jpg

クーポン込みで、30,904円だったので、Amazon.co.jp よりはだいぶお買い得でした。(その分、不具合があった場合の手続き等が面倒ですが…)

GOLE1と比較すると…
・電源状態のLEDが外から見えるようになった。
・少し大きく、重くなった。(241g→343g)
・ファンの音は多少気になる
・電源ボタン側のUSB Type-CコネクタはPD充電器を使用できる。
・CPU/RAM/Storageも増えてパフォーマンスが向上した。

ということで、正常進化の後継機として活躍してくれそうです。

ただし、
・本体端のUSB Type-C は12V入力専用で、付属のType-C アダプターは常時12V出力
なので、付属の ACアダプタを他の機器に使用すると、(他の機器が)焼損する恐れがあります。
(ACアダプタのラベルに 12V の記載しかないので、まさかPD対応の充電器ではない…ってコト!?思い、Type-C 単体のコネクタをわざわざ調達して確認しました。)

12vac2.JPG
12vac1.JPG

ここは安全のため(GOLE1同様に)普通のDCジャックにして欲しかった。

posted by MON at 00:00| Comment(0) | TrackBack(0) | 月記 | このブログの読者になる | 更新情報をチェックする
【今是昨非】http://nomulabo.com/