Windows10 ProでDockerを使ってみる。Docker Desktop for Windows。【メモ】

Dockerを使ってみようと思います。

キッカケになった動画がこちら。

ちょっとやってみようかな、という気になりました。

まず、公式からDocker Desktop for Windowsを入れます。

Windows10のHyper-Vというのをオンにします。「Windowsの機能の有効化または無効化」とWindows10の検索窓で打つと、設定画面が出るはずです。そこから「Hyper-V」を探しましょう。

「Hyper-V」をオンにすると、パソコンの再起動が必要なのですが、このとき軽くエラーが出ます。

Cubaseを入れている場合は、パソコンを再起動するとSteinbergのSoft-elicenserまわりでエラーが出るので、eLicnencer Control Centerを起動して、メニューの「操作」タブから「修復」を選び、きちんと動くようにします。

そうしたら、Dockerを起動します。アプリなので、普通に起動。
Windows検索窓で「Docker」と打つと、「Docker Desktop」というのが出てきます。
それを実行。

・Dockerfileから仮想環境を作る。

Docker Desktopは実行した状態で、PowerShellを起動します。
プロジェクトの場所に行き、

docker-compose up -d

というコマンドを打つと、仮想環境が作られ、バックグラウンドでコンテナが実行されます。

参考『docker-compose run, up, build, createの違い。それぞれの役割を知る。 – Qiita』
https://qiita.com/yuta-38/items/29facbe3f236bf250651

 

以上でDockerの仮想的なLinuxによりプロジェクトが動いている状態になったので、プログラムを書いていけばOKのようです。

こちらのYouTubeの解説が分かりやすいです。

これで、Dockerで仮想環境が作成されたので、あとはその環境(コンテナと言います)を起動させて仮想環境のLinux上でコマンドを打ち、そこに何かを入れても良いでしょう。

Pythonのrequirements.txtがある場合は
pip install -r requirements.txt

でパッケージをインストールです。

ちなみにコンテナの起動や停止、コンテナ内に入るコマンドプロンプトの起動、コンテナの削除などは、Docker Desktopアプリからボタンを押すだけで可能なので、コマンドを打つ必要は無いようです。

かなり便利ですね。

・Docker環境のデータベースにWindows10のデータベース接続クライアントから接続する

Windows10のデータベース接続クライアントからDockerの仮想環境内のデータベースに接続出来ました。Heidi SQLというデータベース接続クライアントを使いましたが、特に特別な設定は不要で、仮想環境を実行中にWindows10から仮想環境のLinuxのMySQLに接続できました。
ここまで出来れば、もう何でも出来る感じがします。

こちらの記事が役に立ちました。

プログラムは通常のWindows10でコーディングをして、実行は仮想環境のLinux(Windows10で作ったdockerのフォルダがそのままLinuxのフォルダに相互反映されます。

ここが不思議なところですが、仮想Linux上でフォルダを作ったりファイルを変更してもWindows10のファイルも変更されますし、Windows10のdockerプロジェクトで同じことをしても、仮想Linux上で反映されます。

これがdockerの凄いところですね。実行だけ仮想Linuxで、編集などは既存のWindows10の環境(VS Code)などが利用できる感じです。

 

こちらの動画の、Dockerをゲームのセーブデータに例える説明がとても分かりやすかったので、参考にしてみて下さい。

ワードプレスでスマホから画像付きで記事の投稿はできるのか?

 

どうも、りーずです。

 

ワードプレスでスマホから文章と画像の投稿が出来るかのテストです。

全てスマホのブラウザから行います。

まずはこちら。画像です。

ELECOM M-DUX50

ELECOM M-DUX50

いつも使っているマウス。

普通に、ワードプレスの『メディアを追加』を押して、写真を追加する事が出来ました。

キャプションも入れられますね。

メディアのサイズは、フルか中か、などが選べます。パソコンでやるように、マウスで細かくサイズ調整は出来ませんでしたが、『カスタムサイズ』という項目もあり、そこで縦横のピクセル数が入れられるので、数字を見ながら調整も割と行けそうです。

ということで、意外にもワードプレスはスマホ投稿が出来てしまう、という記事でした。

こちらが上の写真で載せた、僕の愛用しているマウスです。
これ無しでは生きていけません。

このように、『デスクトップ用Webサイトを表示』で、パソコンサイトのAmazonを開けば、Amazonアソシエイトリンクも取得出来ます。

今はiPhone6sを使っていますが、もう少し画面サイズの大きいスマホなら余裕で出来そうです。

ちなみに投稿時の欠点も発見しました。
それは、タイトルが見えなくなった部分をスクロールして見る事が出来ないことです。Simejiのスクロールでは右にいきませんでした。

1度全選択してからカットして書き直すしかないようです。

ここから右にいけません。

以上、検証記事でした。

この記事は全部スマホで書きました。

なかなか便利ですね。

機会があったらまた使っていきたいと思います。


※リンクはAmazonアソシエイトを利用しています。

Pythonで作ったスクリプトをexe化する方法。Pyinstallerで.exeファイルにしよう。【Windows10環境】

Pythonで作ったスクリプトをexe化する方法です。スクリプトをWindowsの実行ファイル(.exe)にします。

『pyhon.py→exe化→軽量化→高速化 忘備録(pyinstaller py2exe)』
https://medium.com/lsc-psd/pyhon-py-exe%E5%8C%96-%E8%BB%BD%E9%87%8F%E5%8C%96-%E9%AB%98%E9%80%9F%E5%8C%96-%E5%BF%98%E5%82%99%E9%8C%B2-pyinstaller-py2exe-4cd7c5f70c99

こちらの記事を参考にPythonで作ったスクリプトをexeファイルにしようとしました。


僕は、Pythonのバージョン管理システムはPipenv環境なので「pip」とするところはすべて「pipenv」にしています。各自読み替えて下さい。

・まずはpyinstallerをインストールする
まず

pipenv install pyinstaller

として、pyinstallerのモジュール(ライブラリ)をインストールします。

・次に、exe化したいPythonスクリプトファイル(.py)をexeに変換する

exe化したいスクリプトのファイル名をdo.pyだとすると

pyinstaller do.py --onefile

としてあげて、そのコマンドで作られたdistというフォルダの中に

do.exe

というファイルが作られれば完成です。

これで終わりです。

・コマンドプロンプトを出したくない場合は .py ではなく .pyw としてコマンドを実行する

実は、.pyをそのままexe化すると、プログラム実行時にコマンドプロンプトが起動した状態になります。
これでは気になる方がいると思いますので、その場合は元のスクリプトファイルの名前を

do.pyw

のように、拡張子を pyw にします。
そして

pyinstaller do.pyw --onefile

というコマンドを打つと、出来上がったプログラムファイルでは、コマンドプロンプトが起動しなくなります。ゲームやTkinterを使ったプログラムなどをexe化するときはこちらのやり方を使うと良いかもしれません。

以上です。


・おまけ

もし上記で、エラーが出た場合は、

コマンド実行後に

do.spec

というファイルが作られるので、そのファイルの中にある

hiddenimports=[]
という部分を

hiddenimports=['pkg_resources.py2_warn']

と変えてあげると良いそうです。
ちなみに、ここがポイントで、
'の部分は'(シングルクォート)だと思います(おそらく)。
分からなかったらこれをコピペして下さい。
キーボードでいうと、シフトキーを押しながら7のボタンを打つと出力される記号です。

そうしたら今度は

pyinstaller do.spec --onefile

と打つと、distというフォルダの中に

do.exe

という実行ファイルが出来上がるはずです。

以上で動きました。

何かの参考になれば幸いです。

参考:「パソコンのキーボードの記号の読み方」
http://tabotabo.my.coocan.jp/ccc/kigo.htm

「【Python】GUI表示におけるコンソール画面(コマンドプロンプト)を非表示にする方法」
https://genchan.net/it/programming/python/4183/

Pythonを使ってウェブ上から画像を半自動ダウンロードする方法

Pythonを使ってウェブ上から画像を半自動ダウンロードする方法です。

2020年の9月から、ジブリのホームーページ上で原画の場面写真が一般公開されています。

https://www.ghibli.jp/works/chihiro/

1つ1つダウンロードするのも手ですが、それだとなかなか大変です。

URLのパターンがパターン化されていたので、プログラムを組みました。

Pipenvでまずは環境を作りましょう。
詳しくはこちら

Pythonのバージョン管理をPipenvにした話。Windows10ではPipenvがベストプラクティスな気がする。

実際のプログラムは以下です。 続きを読む

Django3系でStripe決済処理を行う際にcsrftokenをviews.pyに渡す方法【Ajax】

Django3系において、Ajaxでcsrftokenをviews.pyに渡す方法です。

DjangoでStripe決済処理のチェックアウトを行う際にcsrftokenをviews.pyに渡す必要がありました。

しかし、csrftokenを用意していなかったためエラーが発生。CSRFトークンが見つからないよ!というエラーが出ていました。

これはDjangoがデフォルトではミドルウェアによってCSRF対策をしているためです。

そちらの解決方法です。

なんと普通にDjangoの公式に対応方法が書いてありました。
日本語訳は 続きを読む

RailsでHerokuのPostgreSQLからConohaのMariaDBデータベースサーバーに移行する方法

RailsでHerokuのデータベースであるPostgreSQL( Heroku Postgres)からConohaのMariaDBデータベースサーバーに移行する方法です。

ソングストーリー(https://www.songstory.me/)のデータベース数が1万行近くになり、移行が必要になりました。

今回はConoHaのMariaDB(月550円税込み)に移行したいと思います。
理由は、検討した中で一番安いからです。
データベースサーバーを1つ持っていれば違うサービスでも使えます。

基本料金月額500円/10GB。10GBあればテキストデータなら十分すぎると言えるでしょう。

(画像データや動画データは通常はオブジェクトストレージという専用のサーバーに入れます)

ということで、まず必要なのはバックアップです。

Heroku PostgresにHeidiSQLというデータベース接続ツールでアクセスします。
「HeidiSQL」
https://forest.watch.impress.co.jp/library/software/heidisql/

これは使った中では一番使いやすい無料のデータベース管理ソフトです。
ごく稀に固まりますがそこはご愛嬌。

さて、今回は
PostgreSQLからMySQL(MariaDB)への移行なのですが、ここで注意が必要です。 続きを読む

Railsで既存テーブルにカラムを追加した後に順番を変更したかったが上手くいかなかった。schema.rbファイルに設定を書いてしまい、それで良さそうならマイグレーションファイルもそれに合わせて書き直そう(とりあえずの荒業)

Ruby on Rails5で、既存のテーブルにカラムを追加し、そのあとにカラムの順番を変更したかったのですが、上手くいきませんでした。
それでもどうにかカラムを調整してデータベースを構築するための方法です。

結論から言うと、「schema.rbファイルに直接、データ構造の設定を書いてデータベースに反映させて、それで良さそうならマイグレーションファイルを書き直そう」をいう内容です。

今回の手法はとりあえずの荒業(あらわざ)です。
この記事は自分用のメモなので、一応そこだけ留意して下さい。

ただ、Railsの書籍『Ruby on Rails5アプリケーションプログラミング』に「スキーマファイルによるデータベースの再構築の方法(P.316)」が書いてあるので、あながち間違っている訳でもなさそう。鋭意勉強中です。

カラムの追加はハマりポイントでした。

・既存のテーブルにカラム(列)を追加したい
・マイグレーションファイルを作って…と思いきや(うまくいかなかった例)
・マイグレーションファイルに設定を書いて変更するのは諦めてschema.rbファイルに設定を書こう
・新しく、更新した部分のマイグレーションを修正しておこう
・その他もろもろ何かを行う手段など
・役に立ったリンク等
・Herokuで上記のデータベースをコマンドラインで構築する方法

このような内容でお届けします。

ちなみに今回の方法は、変更するテーブルのデータは消えてしまうので、テーブルを1から作り直すのとあまり変わりません。

みなさん、どうやって上手くやっているのでしょうか。
テーブルのカラムの順番を変更したいだけでかなり一苦労でした。

続きを読む