2022年7月31日日曜日

SQLAlchemy で既存のテーブルを操作する方法

SQLAlchemy で既存のテーブルを操作する方法

概要

テーブルなどは SQL コマンドで直接作っている場合にデータの操作を SQLAlchemy から行う方法を紹介します

環境

  • Python 3.10.2
  • sqlalchemy 1.4.39

サンプルコード

テーブルなどは作成しないでそのままモデルを生成して操作すれば良さそうです
カラムの型さえあっていれば良さそうで鍵の制約や NULL 情報はなくても大丈夫でした

リフレクションする方法もあるようですが単純なテーブルで 1 つだけ操作したい場合などはこれで十分かなと思います

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.schema import Column
from sqlalchemy.types import (Integer,
                              String,
                              DateTime)

engine = create_engine("mysql://user001:xxx@192.168.100.10/your_table_name?charset=utf8mb4")
SessionClass = sessionmaker(engine)
db_session = SessionClass()

Base = declarative_base()


class User(Base):

    __tablename__ = 'user'

    id = Column(String(32), primary_key=True)
    name = Column(String(8))
    age = Column(Integer)
    created_at = Column(DateTime)
    updated_at = Column(DateTime)

users = db_session.query(User).all()

ちなみに Ubuntu の場合は libmysqlclient-dev パッケージが必要になります

2022年7月29日金曜日

AttributeError: module 'sysconfig' has no attribute '_get_default_scheme'. Did you mean: 'get_default_scheme'?

AttributeError: module 'sysconfig' has no attribute '_get_default_scheme'. Did you mean: 'get_default_scheme'?

概要

pipenv install しようとしたらタイトルのエラーが発生しました
対処方法を紹介します

環境

  • Ubuntu 18.04
  • pyenv 2.2.3

対処方法

virtualenv のアップグレードと pipenv の再インストールを行いログアウト -> ログインします

  • pip install --upgrade virtualenv
  • pip install pipenv

このあとログアウトして再度ログインすれば解決するはずです

2022年7月28日木曜日

docker-compose で起動した gitlab の root ユーザのパスワードをリセットする方法

docker-compose で起動した gitlab の root ユーザのパスワードをリセットする方法

コマンド

  • docker-compose exec gitlab gitlab-rake "gitlab:password:reset"
docker-compose exec gitlab gitlab-rake "gitlab:password:reset"
Enter username: root
Enter password:
Confirm password:
Password successfully updated for user with username root.

上記のようにターミナルで入力すれば OK
プロンプトが出てくるのが少し時間がかかるので注意

2022年7月27日水曜日

開発工数を見積るときの個人的なポイント

開発工数を見積るときの個人的なポイント

概要

あくまでも個人的な考えです

まずはやることを洗い出す、必ずここからスタートする

やることがなければ工数の算出もできません
まずは自分がやるべきこと、タスクを洗い出しましょう

更に言うとそのタスクは可能な限り細かく洗い出したほうがいいです
その上でこの設計にはこれくらいかかりそう、この実装にはこれくらいかかりそう、テストはこれくらいかなと見積もりましょう

そのほうがより具体的になりますし見積もりの精度も向上すると思っています
また後述していますがそのプロジェクトや開発以外も掛け持ちしている場合はそれらに割くタスク、工数も洗い出して置くと良いです

洗い出しのコツは先にざっくり出してそこから細かくしていく

例えば「設計」「開発」「テスト」くらいはじめはざっくり洗い出してそこから更に設計では「API設計」「ライブラリ設計」「DB設計」など必要になりそうなコンポーネントレベルで細かくしていくとやりやすいです

自分の技量を低く計る

自分の生産性をある程度数値化しておいた上で見積もる場合は少し低めの数字で見積もりましょう
理由は常にそのパフォーマンスが出るわけではないのと書くコードがセンシティブであったり複雑である場合もあり神経を使いながら書くことでパフォーマンスが落ちることもあるのでそういった状況が発生することも踏まえて低めにしておくといいかなと思います

ギリギリ、カツカツで計算しない

これも上記に似ていますが納期などは100%フルパワーを続けた場合の納期ではなく 50-70% で開発を続けた場合の納期を考えておきましょう

理由は先程と同じですが常に 100% を出すのは難しいからです
またスケジュールに余裕があると心の余裕もできるので結果的に成果物の精度がよかったり早く終わったりすることもあると思います

機能だけでなくテストやレビュー、リファクタの時間も考慮する

一口に開発と言ってもやることはいろいろとあります
すでに正確にやることが算出されているのであればあとはそれに工数を割り当てるだけでいいのですが大抵の場合はあとからタスクが追加になったり予期せぬ外力というかタスクが振ってくることがあります
なので開発以外のコストも含めて工数を算出したほうがいいかなと思っています

通常の運用業務なども考慮する

もし本当に開発のみであれば考慮する必要はありません
開発しながら運用業務を片持ちしている方も多いと思います
その場合はそれらのコストを割くことも考慮して見積もりましょう

体調の変化や日常の生活も多少は考慮する

常に元気であれば常に 80 - 100% のパフォーマンスは出せるはずです
しかし人間は病気になったりプライベートもあります
なので体調が悪かったり風邪になったりして休む場合もあります
そういった自分の体調の変化も多少考慮しておきましょう
もちろん体は資本なのでそもそも体調を悪くするのは良くないですが何があるかわからないのが人生です

事前に何が必要になるのかイメージする

実際に開発する前にある程度設定すると思います
更にその前段階で何をやるかを具体的にイメージできると良いです
例えば「こういうツールが必要になりそう」「こういう調整が発生するだろうな」「こういう機能が必要になりそう」などある程度具体的にイメージできるとそれをベースにして工数が算出できます

ただこれはある程度経験をしないとわからない部分が多いのでわからないところはわからないまま進めても良いと思います

あとは依頼主との調整

最終的には自分の見積もりを依頼主などにレビューしてもらい OK がもらえるかどうかです
当然早ければ早いほどいいに決まっていますが自分の経験的にギリギリカツカツで見積もった場合は大抵の場合どこかで再スケジューリングが入るか品質が悪くなるかになります

最後に

要するに安かろう悪かろうなのかもしれませんが人間が頑張る分結局ミスも必ずあるということです
もちろんスキルや経験の違いで見積もりが全然違う場合もありますが、それは考えずあくまでも自分がやったらこれくらいになりそうというのを自信を持って言えればいいのかなと思っています

高効率、低コストになるのは経験を積めばできるようになるのでそれまでは自分の技量や技術、生産性を理解するという意味でも自分に合った工数算出をするべきだと思います

あとはファンクションポイント法や過去の実績から見積もる類推見積法などの技もあるのでそういったものを理解してから自分なりに見積もるのもありだと思います

2022年7月26日火曜日

Chromecast この信号には対応していません。入力する信号を変更してください。 になったときの対処方法

Chromecast この信号には対応していません。入力する信号を変更してください。 になったときの対処方法

概要

Sony のテレビで Chromecast を使っているとたまに出るので対応方法をまとめておきました

環境

  • Chromecast with Google TV
  • Sony BRAVIA

Google Home アプリからキャストしてみる

HDMI 経由で画面だけ真っ暗になっているが Chromecast が動作している場合がほとんどです

その場合はまず Google Home アプリからキャストしてみましょう
スマホでアプリを起動してキャストしたり切断したりしてみます
すると画面が戻ってくるのでそのまま操作できるようになると思います

Youtube アプリからキャストしてみる

Google Home アプリが使えない場合は Youtube アプリでも OK です

ただ自分が試してみた感じだと Youtube アプリからだと画面が戻ってこないことが多かったので Google Home アプリのほうがいいのかもしれません

また PC からキャストすることもできますがその場合も画面が真っ暗なままもことが多い印象です

再起動

Google Home アプリからキャスタとの接続/切断を試してもダメな場合に Google Home アプリから再起動することができるのでそれを試してみましょう

ハードウェアリセットする前に可能であればソフトウェアリセットから試しましょう

強制再起動

上記全部が試せない場合は電源コンセントを抜いて再起動しましょう

このとき HDMI ケーブルは接続したままがいいと思います
HDMI ケーブルを抜いて再起動したあとに HDMI ケーブルをあとから接続しても画面が真っ暗のままになっていることが多いです
先に接続してから再起動するとうまく認識してくれることがありそうです

ただ強制再起動しても復帰しないことがあったのでその場合は Chromecast 自体をリセットして再セットアップする感じになるかなと思います

最後に

なぜかたまになるので対処方法をまとめておきました
Chromecast にキャッシュが溜まって遅くなったりすることもあるので定期的な再起動は必要なのかもしれません

2022年7月22日金曜日

Gitlab のバックアップファイル名からバージョン部分を抽出する方法

Gitlab のバックアップファイル名からバージョン部分を抽出する方法

正規表現+Python だとこんな感じです

サンプルコード

import re
file_name = "1658186282_2022_07_18_14.9.5-ee_gitlab_backup.tar"
m = re.search(r'\d+\.\d+\.\d+-ee', file_name)
m.group()

'14.9.5-ee'

2022年7月21日木曜日

RaspberryPi4 に Ubuntu20.04 をインストールする

RaspberryPi4 に Ubuntu20.04 をインストールする

概要

過去に RaspberryPiOS をインストールする方法を紹介しました

今回は Ubuntu 20.04 をインストールする方法を紹介します

環境

  • macOS 11.6.7
  • Raspberry Pi Imager 1.7.2
  • Ubuntu 20.04 32bit

Imager のインストール

ここを参考にインストールします

最初に削除する

SD カードが不整合を起こしている可能性があるのでまずはフォーマットします

ここでポイントですがフォーマットする際はかならず FAT32 でフォーマットします
Mac のディスクユーティリティでフォーマットすると MacOS ジャーナリングでフォーマットされてしまいうまく RaspberryPi4 が OS を認識できないので注意しましょう

OS の選択で Ubuntu を選択する

「Ubuntu Server 20.04.4 LTS」の32ビット版を選択します
64ビット版だとなぜか「failed to open device sdcard」のエラーで起動しません

右下の歯車からネットワークなどの設定を行う

ホスト名、ユーザ、ネットワーク情報を設定しましょう

書き込み

あとは書き込みボタンを押せばOKです
10分ほどで完了します

動作確認

RaspberryPi4 に差し込んで起動してみましょう
Imager で書き込んだ際に設定したユーザ名でログインできることを確認しましょう

最後に

ラズパイは使用するデバイス (SDカード) や OS の種類によって動作したりしなかったりするのでドラブルシューティングが大変です

64bit 版を Imager から書き込むと起動の際に「failed to open device sdcard」のエラーで起動しないので注意しましょう

2022年7月20日水曜日

Vue3 を触ってみた

Vue3 を触ってみた

概要

過去に Vue2 + vuetify を試しました
今回は Vue3 を試してみました
ちなみに執筆時点ではまだ beta 版になります

環境

  • macOS 11.6.7
  • node 18.4.0
  • yarn 1.22.19

インストール

  • brew install yarn
  • yarn global add @vue/cli

プロジェクト作成

  • vue create hello-world

vue3 にアップグレード

  • vue upgrade --next

プロジェクト作成時に vue3 を選択した場合は不要です

とりあえず動かす

  • cd hello-world
  • yarn serve

これで localhost:8080 で vue3 で動作しているサンプルを確認できます

vuetify が使えるか試す

  • vue add vuetify
? Choose a preset: (Use arrow keys)
  Configure (advanced) 
❯ Default (recommended) 
  Vite Preview (Vuetify 3 + Vite) 
  Prototype (rapid development) 
  Vuetify 3 Preview (Vuetify 3)

とりあえず Default を選択します
すると

Error: You cannot call "get" on a collection with no paths. Instead, check the "length" property first to verify at least 1 path exists.

となりインストールできず使えませんでした

コーディングを進める

あとは

  • src/components/HelloWorld.vue
  • src/App.vue

このあたりを書き換えながらやれば動くものが作れます

参考サイト

2022年7月19日火曜日

MySQL ですべてのテーブルのレコード数を一発で確認する方法

MySQL ですべてのテーブルのレコード数を一発で確認する方法

概要

レコードがまだ残っているのか確認するときに便利です

環境

  • macOS 11.6.7
  • MySQL 8.0.29

スクリプト

1行

export DB_NAME=test && export DB_USER=root && export DB_PASS='' && for table_name in `mysql -u ${DB_USER} --password=${DB_PASS} ${DB_NAME} -e "show tables \G" | grep Tables_in | awk '{print $NF}'`; do echo $table_name; mysql -u ${DB_USER} --password=${DB_PASS} ${DB_NAME} -e "select count(*) from $table_name;"; done

改行あり

export DB_NAME=test && \
export DB_USER=root && \
export DB_PASS='' && \
for table_name in `mysql -u ${DB_USER} --password=${DB_PASS} ${DB_NAME} -e "show tables \G" | grep Tables_in | awk '{print $NF}'`
do
  echo $table_name
  mysql -u ${DB_USER} --password=${DB_PASS} ${DB_NAME} -e "select count(*) from $table_name;"
done

P.S table_rows は概算値なので正確な値は取得できない

以下のそのパターンです

全テーブルの合計のレコード数を取得

export DB_NAME=test && mysql -u root -p ${DB_NAME} -e "SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = \"${DB_NAME}\";"

テーブルごとに表示する

export DB_NAME=test && mysql -u root -p ${DB_NAME} -e "SELECT table_name, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = \"${DB_NAME}\";"

参考サイト

2022年7月16日土曜日

monero のマイニングで 0.01 を達成したので Payout してみた

monero のマイニングで 0.01 を達成したので Payout してみた

概要

RaspberryPi4 で開始してから10ヶ月で Payout 可能な値にまでなりました

環境

  • macOS 11.6.7
  • RaspberryPi4

かかった期間

  • 2021/10 - 2022/07 の約10ヶ月

2021/10 - 2021/12 まで RaspberryPi4 のみ
2022/01 - 2022/07 まで RaspberryPi4 + MacBookAir

MacBookAir の追加

マイニング初期は RaspberryPi のみでマイニングしていたのですが 3ヶ月経過あたりから MacBookAir も追加しました

MacBookAir は半日だけマイニングさせています
だいたい半日で 0.00005000 XMRほどマイニング してくれるパワーリソースです

MacBookAir は Early 2014 で CPU は Intel® Core™ i7-4650U CPU @ 1.70GHz です
第4世代だとこれくらいのマイニングしかできないようです (それでも RaspberryPi4 よりは上)

RaspberryPi4 の SD カード故障

ちょうど 10ヶ月で SD カードが一つ壊れました
SD カードの種類にもよりますがフルでマイニングしているとかなり寿命が縮むのかもしれません

Payout する

自分は https://supportxmr.com/ を使っていたのでここから Payout します

手数料が取られますが問題ないのであれば Pay をクリックします
クリックすると PaymentQueued になるので待ちましょう

ウォレットで動作確認

Payment queued からだいたい 1 時間くらいでウォレットに送金されていました
手数料が 0.001 取られるので 0.01 はありませんでした

最後に

低スペックマシンで monero を Payout できるまでマイニングしてみました
チリも積もれば山となるので毎日コツコツ頑張ることが大事だなと思いました

2022年7月15日金曜日

RaspberryPi4 で Failed to open device sdcard が発生したので対処した

RaspberryPi4 で Failed to open device sdcard が発生したので対処した

概要

いままで問題なく動いていたのに突如 RaspberryPi4 が起動しなくなりました 原因は SD をうまく認識してくれなくなったので対処してみました

結論から先に述べておくと 32GB 以下の SD カードに変更して OS を RaspberryPiOS 32bit にすると動きました

環境

  • macOS 11.6.7
  • Raspberry Pi Imager 1.7.2

エラー詳細

RaspberryPi4 を起動すると以下のようなエラーが出てループします
どうやら SD カードが壊れてしまったのが原因っぽいです

SD カードをフォーマットし直して OS を再度書き込む

これが一番簡単な対処方法になります
ただデータが取り出せないので取り出したいデータがある場合は諦めましょう

また SD カードをフォーマットする際には必ず FAT32 でフォーマットします
MacOS の場合ディスクユーティリティを使うと MacOS 拡張というフォーマットを使うためこれで SD カードに OS を書き込んでも RaspberryPi 4 が認識してくれないので注意が必要です

ダメな場合は eprom のリセットを試してみる

SD カードに eprom をリセットするためのイメージを書き込んで差し込み起動するだけでリセットできます

画面が緑色になればリセット成功です
その後再度 SD カードに OS を書き込んで試してみてください

それでもダメな場合は USB からブートしてみる

RapsberryPi4 であれば USB からでもブートできます
同じように Imager から USB に OS を書き込んで起動できるか確認してください
この際 OS は RaspberryPiOS 32bit にしましょう
USB ブートの場合 OS が対応していないケースがあります

もし USB から起動できた場合は SD カードスロット自体が物理的に故障した可能性が高いです

USB ブート後に bootloader をアップグレードしてみる

  • vcgencmd bootloader_version
  • sudo rpi-eeprom-update -a

これで再度 SD カードからブートできるか試してみましょう

(解決方法) 32GB 以下の SD カードを使う

なぜか自分はこれで解決しました
更に OS は RaspberryPiOS 32bit になります

本当は Ubuntu 20.04 を使いたかったのですがそれだとうまく起動できずタイトルのエラーになりました

どうして SD カード (スロット) が壊れたのか

おそらくですが正常にシャットダウンする前に電源を抜き差ししたのが原因かなと思います
可能な限り RaspberryPi4 は起動しっぱなしがいいのかもしれません

もしくは電源プラグの抜き差しでオンオフしないで電源ボタンを作成してそこから起動するのがいいのかもしれません

スロットに関してははんだが外れていたりピンが切れている可能性が考えられます
これに関しては修理するのはかなり難しいかなと思います

最後に

昨日まで動いていた SD カードが急に動かなくなったのでソフトウェアな問題というよりかはハードウェア的な問題を疑ったほうが良いかなと思います

データは諦めてもいいように常にバックアップを取得しておくかクラウドサービスにアップロードしておきましょう

参考サイト

2022年7月13日水曜日

Homebrew で管理している Ruby をアップグレードしたら bundler が使えなくなったときの対処方法

Homebrew で管理している Ruby をアップグレードしたら bundler が使えなくなったときの対処方法

概要

Homebrew で管理している Ruby をアップデートしたら bundler が使えなくなったので対応方法を紹介します

環境

  • macOS 11.6.7
  • Ruby 3.1.2p20

エラー詳細

/usr/local/lib/ruby/gems/3.0.0/bin/bundle:23:in `load': cannot load such file -- /usr/local/lib/ruby/gems/3.1.0/gems/bundler-2.3.15/exe/bundle (LoadError)
        from /usr/local/lib/ruby/gems/3.0.0/bin/bundle:23:in `<main>'

bundler を再度インストール

  • gem install bundler

.zshrc を書き換え

export PATH="/usr/local/lib/ruby/gems/3.0.0/bin:$PATH"

export PATH="/usr/local/lib/ruby/gems/3.1.0/bin:$PATH"

2022年7月12日火曜日

emacs で簡単に計算する方法

emacs で簡単に計算する方法

概要

calc モードだと別のバッファが起動したりと色々面倒です

環境

  • macOS 11.6.7
  • emacs 28.1

quick-calc を使う

M-x quick-calc でミニバッファに式を入力してエンターを押します

結果は勝手にコピーされるのでカレントバッファでペーストすれば答えもすぐに使えます

リージョンを選択して計算できないのが少し残念です

2022年7月11日月曜日

phpMyAdmin を docker で起動する方法

phpMyAdmin を docker で起動する方法

概要

phpMyAdmin を docker で起動する方法を紹介します
docker-compose.yml の記載方法も紹介します

環境

  • macOS 11.6.7
  • MySQL 8.0.29
  • docker 20.10.12
  • phpMyAdmin 5.2.0

docker

docker run --name myadmin -d \
-e PMA_HOST=192.168.1.2 \
-e PMA_PORT=3306 \
-p 80:80 \
phpmyadmin

docker-compose

version: '3.1'

services:
  phpmyadmin:
    image: phpmyadmin
    restart: always
    ports:
      - 80:80
    environment:
      - PMA_HOST=192.168.1.2
      - PMA_PORT=3306

参考サイト

2022年7月9日土曜日

MySQL で IP ベースでアクセスできるようにする方法

MySQL で IP ベースでアクセスできるようにする方法

概要

デフォルトだと localhost からのみアクセスできます
-h を指定してホスト名や IP ベースでアクセスできるようにするにはユーザを追加する必要があります

環境

  • macOS 11.6.7
  • MySQL 8.0.29

IP ベースでアクセス可能なユーザを新規に作成する

権限を追加で付与するわけではなくユーザを新規で追加する必要があります

  • CREATE USER 'user01'@'192.168.1.2' IDENTIFIED BY 'xxx';
  • GRANT ALL ON *.* TO 'user01'@'192.168.1.2' WITH GRANT OPTION;
  • FLUSH PRIVILEGES;

MySQL が IP で LISTEN しているか確認する

デフォルトだと localhost のみ LISTEN しているので IP で LISTEN するように変更します

  • netstat -an | grep 3306
tcp4       0      0  127.0.0.1.3306         *.*                    LISTEN
  • vim ~/.my.cnf
[mysqld]
bind-address = 127.0.0.1,192.168.1.2
  • brew services stop mysql
  • brew services start mysql
  • netstat -an | grep 3306
tcp4       0      0  192.168.1.2.3306       *.*                    LISTEN
tcp4       0      0  127.0.0.1.3306         *.*                    LISTEN

動作確認

ユーザの一覧を表示して追加した IP からのアクセスできるレコードがあることを確認します

  • SELECT Host,User FROM mysql.user \G

付与した権限情報は以下で確認できます

  • SHOW GRANTS FOR 'user01'@'192.168.1.2' \G

あとは mysql クライアントで -h で IP を指定して接続できることを確認します

  • mysql -u user01 -h 192.168.1.2 -p

2022年7月8日金曜日

docker で 10GB のイメージを作成する方法

docker で 10GB のイメージを作成する方法

概要

テストなどで巨大なイメージを使いたいとき用です

環境

  • Ubuntu 20.04
  • docker 20.10.7

10GB のファイルを作成

  • dd if=/dev/zero of=./10GB.dummy bs=1G count=10

Dockerfile

  • vim Dockerfile
FROM alpine:latest

ADD ./10GB.dummy /home

ビルド

  • docker build -t 10gb .
Sending build context to Docker daemon  10.74GB
Step 1/2 : FROM alpine:latest
 ---> e66264b98777
Step 2/2 : ADD ./10GB.dummy /home
 ---> 44d47f282112
Successfully built 44d47f282112
Successfully tagged 5gb:latest

注意事項

build context とイメージを配置する領域と dd で作成したデータ分で合計30GB以上の空きが必要になります

2022年7月7日木曜日

Gitlab にてっとり早く巨大データを配置する方法

Gitlab にてっとり早く巨大データを配置する方法

概要

テストなどで Gitlab の領域を逼迫させたいときに使えます

環境

  • Gitlab EE 14.10.5

手順

  1. 適当なプロジェクト作成
  2. 適当なissueの作成
  3. 適当なイメージのアップロード
  4. アップロードしたファイルのパスを確認

ファイルの作成

  • cd ./opt/gitlab-rails/uploads/@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35/2c04a0a7e7e58e866319a6b8bd6af74c/
  • dd if=/dev/zero of=./10GB.dummy bs=1G count=10

動作確認

バックアップを実行してファイルに含まれているか確認します
バックアップのファイルサイズが大きくなっていることを確認しましょう

  • docker-compose exec gitlab gitlab-backup
  • ls -l /backups/app/

注意事項

dd で作成したファイルはゼロ埋めファイルになります
圧縮率がかなり高く 100GB -> 40MB くらいになるので注意しましょう

2022年7月6日水曜日

GoogleWorkspaceの無料期間を過ぎるとどうなるか

GoogleWorkspaceの無料期間を過ぎるとどうなるか

概要

GoogleWorkspaceは個人でも利用できます
個人でも無料期間は14日になっており今回はその期間が終了した場合の挙動を紹介します

環境

  • GoogleWorkspace 個人利用 2022/07/06 時点

コンソールにログインするとサブスクリプションの登録を求められる

以下のような画面になりコンソールにアクセスできなくなります
「解決」を押すとカード情報を登録する画面になります

「後で実行」を選択すれば少しの間は使える

あとで実行をクリックするとコンソールに移動します
軽く試してみましたがアプリの作成など普通にできるようです
ただまたそのうち使えなくなってしまう感じかなと思います

考察

もしかするとアカウントも1つしかなく個人利用なので使えているのかもしれません
法人利用が目的の場合は即刻オプトアウトされるかもしれません

2022年7月4日月曜日

YouPHPTube こと AVideo を docker で構築する

YouPHPTube こと AVideo を docker で構築する

概要

AVideo は Netflix や Youtube のような Web インタフェースを持つビデオ共有サイトを簡単に構築できるツールです
今回は macOS 上で docker を使って構築する方法を紹介します

いくつかバグがあるので手動で修正しながら勧めます

環境

  • macOS 11.6.7
  • docker 20.10.12
  • AVideo 11.6

コードclone

  • git clone --depth 1 https://github.com/WWBN/AVideo.git

MYSQL_RANDOM_ROOT_PASSWORD の書き換え

  • cd AVideo
  • nkf -Lu --overwrite docker-compose.yml
  • vim docker-compose.yml
MYSQL_RANDOM_ROOT_PASSWORD: "yes"

entrypoint の改行コードをLFに変換

  • nkf -Lu --overwrite deploy/docker-entrypoint
standard_init_linux.go:228: exec user process caused: no such file or directory

対策です

イメージのビルドと起動

  • docker-compose up -d

DB のパスワードの確認

  • docker-compose logs database| grep 'GENERATED ROOT PASSWORD'

MYSQL_RANDOM_ROOT_PASSWORD を yes にしたのでランダムに生成されたパスワードを確認します

初期設定

https://localhost にアクセスすると初期設定のページが表示されます
以下を設定しましょう

  • Contact E-mail・・・好きなメールアドレスを設定
  • System Admin password・・・admin ユーザのログインパスワードを設定
  • Confirm System Admin password・・・上記と同じ
  • Database Host・・・「database」にする、今回は docker で起動しているためコンテナ名を設定します
  • Database Password・・・先程確認した MariaDB のパスワードを設定します

記載したら Install ボタンを押しましょう

動作確認

設定が完了すると以下のページになるのでメインページに移動します

メインページに移動して以下が表示されれば OK です
まだ動画も何もないので以下のようになります

最後に

次回はいろいろと使ってみたいと思います

参考サイト