- 投稿日:
変数の文字列を文字列で置換
@ECHO OFF
SET text="hoge piyo fuga"
REM 置換文字を標準出力
ECHO %text:hoge=XXX%
REM 置換文字を変数に設定
SET replaced_text=%text:hoge=XXX%
ECHO %replaced_text%
@ECHO ON
変数の文字列を変数の文字列で置換
SET "var=value"
とSET var="value"
の差は後述のAppendixを参照
CALL
を付けているのは、これがないと変数名そのものが文字列として扱われるため
@ECHO OFF
SET "text2=foo bar baz"
SET "search_word=baz"
SET "replacer=ZZZ"
REM 置換文字を標準出力
CALL ECHO %%text2:%search_word%=%replacer%%%
REM 置換文字を変数に設定
CALL SET replaced_text2=%%text2:%search_word%=%replacer%%%
ECHO %replaced_text2%
REM 検索文字列を削除
CALL SET replaced_text3=%%text2:%search_word%=%%
ECHO %replaced_text3%
@ECHO ON
Appendix
SETコマンドの記述方法を変えた場合の出力結果の差について
SET "var=foo bar ZZZ" |
SET var="foo bar ZZZ" |
---|---|
foo bar ZZZ |
"foo bar ZZZ" |
参考
- 投稿日:
ローカルで個人メモを管理したいがRedmineでは物足りない。そうだGiteaを使おう。
この記事ではDockerを使用せず、バイナリからセットアップします。
Gitのリポジトリをホスティングできる部分までは確認してます。
外部に公開することは一切考慮していません。ローカルマシンでの個人利用を想定しています。
確認環境
Env | Ver |
---|---|
Ubuntu | 20.04.4 LTS |
WSL2 | 1.0.3.0 |
Gitea | 1.18.5 |
MySQL | Ver 15.1 Distrib 10.3.37-MariaDB |
Git | 2.25.1 |
前提条件
- WSL2上にUbuntu 20.04.4 LTSをインストール済
- GitとMySQLは構築済
手順
公式の手順ではユーザーがgit
ですが、ここではgitea
に変えてます
他にも多少変えてます
Giteaディレクトリの作成とバイナリ配置
# 動作用ユーザーの追加
sudo adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/gitea \
gitea
# 必要なフォルダを切る
sudo mkdir -p /var/lib/gitea/{custom,data,log}
sudo chown -R gitea:gitea /var/lib/gitea/
sudo chmod -R 750 /var/lib/gitea/
sudo mkdir /etc/gitea
sudo chown root:gitea /etc/gitea
sudo chmod 770 /etc/gitea
# バイナリのインストール
wget -O gitea https://dl.gitea.com/gitea/1.18.5/gitea-1.18.5-linux-amd64
chmod +x gitea
sudo cp gitea /usr/local/bin/gitea
# mysqlにログイン
mysql -u XXX -pYYY
DBのセットアップ
SET old_passwords=0;
CREATE USER 'gitea' IDENTIFIED BY 'gitea';
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea';
FLUSH PRIVILEGES;
quit
Giteaの起動とWebインストール
以下のコマンドを叩き表示されたURLを開き、Webインストーラーで適当に設定
gitea web -c /etc/gitea/app.ini
Webインストール後の後処理とデーモンへの登録
# 自分以外書き換え不能に変更
sudo chmod 750 /etc/gitea
sudo chmod 640 /etc/gitea/app.ini
# デーモンの定義を作成
cat <<'EOF' | sudo tee /etc/init.d/gitea
#!/bin/sh
## BEGIN INIT INFO
# Provides: gitea
# Required-Start: $syslog $network
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: A self-hosted Git service written in Go.
# Description: A self-hosted Git service written in Go.
## END INIT INFO
# Do NOT "set -e"
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
DESC="Gitea - Git with a cup of tea"
NAME=gitea
SERVICEVERBOSE=yes
PIDFILE=/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
WORKINGDIR=/var/lib/$NAME
DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="web -c /etc/$NAME/app.ini"
USER=gitea
STOP_SCHEDULE="${STOP_SCHEDULE:-QUIT/5/TERM/1/KILL/5}"
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
do_start()
{
GITEA_ENVS="USER=$USER GITEA_WORK_DIR=$WORKINGDIR HOME=/home/$USER"
GITEA_EXEC="$DAEMON -- $DAEMON_ARGS"
sh -c "start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\
--background --chdir $WORKINGDIR --chuid $USER \\
--exec /bin/bash -- -c '/usr/bin/env $GITEA_ENVS $GITEA_EXEC'"
}
do_stop()
{
start-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PIDFILE --name $NAME --oknodo
rm -f $PIDFILE
}
do_status()
{
if [ -f $PIDFILE ]; then
if kill -0 $(cat "$PIDFILE"); then
echo "$NAME is running, PID is $(cat $PIDFILE)"
else
echo "$NAME process is dead, but pidfile exists"
fi
else
echo "$NAME is not running"
fi
}
case "$1" in
start)
echo "Starting $DESC" "$NAME"
do_start
;;
stop)
echo "Stopping $DESC" "$NAME"
do_stop
;;
status)
do_status
;;
restart)
echo "Restarting $DESC" "$NAME"
do_stop
do_start
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
exit 2
;;
esac
exit 0
EOF
# デーモン登録
sudo chmod 755 /etc/init.d/gitea
sudo update-rc.d gitea defaults
# デーモン起動
sudo service gitea start
自動起動する場合はWindowsのスタートアップ時に以下が走るようにしておけばOK
wsl -d Ubuntu -u root -- service gitea start
トラブルシュート
この記事を書くにあたってハマったことのまとめ
gitea 起動時にpermission denied
とエラーが出る
/var/lib/gitea/custom/options/locale: permission denied
以下のコマンドを流せばいける。公式のコマンドではコケる
gitea web -c /etc/gitea/app.ini
サービス起動時にFailed to get home directory
とエラーが出る
2023/03/03 13:17:38 ...s/setting/setting.go:656:loadFromConf() [F] Failed to get home directory: cannot get home directory
/etc/init.d/gitea
のdo_start()
の部分を以下の内容にすればいける
do_start()
{
GITEA_ENVS="USER=$USER GITEA_WORK_DIR=$WORKINGDIR HOME=/home/$USER"
GITEA_EXEC="$DAEMON -- $DAEMON_ARGS"
sh -c "start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\
--background --chdir $WORKINGDIR --chuid $USER \\
--exec /bin/bash -- -c '/usr/bin/env $GITEA_ENVS $GITEA_EXEC'"
}
git push
でエラーが出る
RPC failed; HTTP 413 curl 22 The requested URL returned error: 413
nginxからgiteaにリバースプロキシしてる場合はconfのserverセクションに以下を追加
client_max_body_size 0;
参考
- Installation from binary - Docs
- 公式ドキュメント
- 投稿日:
このオプションはGoogle Chrome 112.0.5615.49にはありませんが、116.0.5845.188, 117.0.5938.88, 120.0.6099.225では表示されていました
Windows 11でGoogle Chromeを利用しているケースで正確な位置情報が取得できない場合の対処方法の紹介です。KING OF TIMEとかUberEatsの位置情報取得が上手く行かないときに使えると思います。
確認環境
Env | Ver |
---|---|
Windows 11 | 22621.1105 |
Google Chrome | 109.0.5414.120 |
手順
- Windowsの設定を開く
- プライバシーとセキュリティ>位置情報を開く
- デスクトップアプリに位置情報へのアクセスを許可するをON
- 以下のアドレスを開き設定をEnabledに変更
chrome://flags/#enable-winrt-geolocation-implementation
- Google Mapsなど適当な位置利用サイトを開き、位置情報取得操作を行う
- 位置情報の利用を許可
- Windows側の位置情報が反映されればOK
関連記事
- 投稿日:
この記事では設定のプライバシーとセキュリティ>位置情報にある「既定の位置」の「既定値に設定」が動かない場合の解決法を紹介します。
確認環境
Env | Ver |
---|---|
Windows 11 | 22621.1194 |
問題事象
「既定値に設定」ボタンを押しても何も起きない
解決方法
- Microsoft Storeを開く
Maps
で検索- Windowsマップというアプリを入手する
- 設定のプライバシーとセキュリティ>位置情報を開く
- 「既定の位置」の「既定値に設定」をクリックする
- マップアプリが開き座標を選択できれば解決です
あとがき
せめてマップアプリが入ってませんとかエラーくらい出してほしい
問題が起きてるときはボタン押しても何も起きないので意味不明すぎる…