2021-06-15 [長年日記]

_ [Arduino][ラズパイ]サーボで世界を動かす

ラズパイZeroでは、ハードウェアPWMじゃないとガタガタしてきれいに動かんかった http://hara.jpn.com/_default/ja/Topics/RaspPi_Motor.html

Arduinoでは、どのピンからPWM吐けるかわからんかった、D3につなぐのを間違えてA3につないでた。
しかし動かん。さらにオチはブレッドボードにArduinoを強めに押し込んだら動いたwwww浅くて接触がwww

ちょっと検索すると何でもできる、先人の知恵はありがたい。

https://deviceplus.jp/hobby/entry_f04/
https://spiceman.jp/arduino-nano/


2021-06-01 [長年日記]

_ [ubuntu]sshポート22から変更した

アタック多いですよね。そんだけ。

  • edit sshd_config
  • restart sshd
  • edit router config (open port)
  • test login via ssh

2021-05-16 [長年日記]

_ [ubuntu]RAID死んだので直した

まあ日常。
状況は:

  • HDDが3本, sda,sdb,sdc
  • sdaとsdbでraid1
    • /boot と / を md1, md0 にしている
  • sdcは/homeとかのbackup

md0が片方死んだ。半月前くらいにメールが来たが片肺放置。
sdaが生きてる、sdbが死んだ。ここまではメールでわかる。

よし、sdbを外そう。→どっちかわからん
抜いて起動しなかったらそれが生きてるやつ(sda)だ。正解探して何度かやってるうちに起動しなくなったのでこのエントリが生まれることになる。

「ああ、とにかくデータ救出だ〜」

dailyでHDD3に逃がしてあるものは何か?mountできたらバックアップスクリプトを読もう、 /etc消えたら死ぬ、メールとwebの設定とかに精神削って時間膨大に使いたくない。

以下、別マシンで作業:
sdaかsdbかどっちかわからんのでRAIDのHDD2本取り出して、1本でmd0を組んでmountすると無慈悲な応答が返る。

system call failed: structure needs cleaning

ガーガー /dev/md0 に向けてe2fsckする。Fix? が出まくり、つまりこれが死んでた方か。
2Tのfsckは1日かかるとかいうので即Ctrl-C、ていうかなんでsdbを吸ってんだ?sdaから吸えばいいだろう。

もう1本は差すだけでRAIDが2つ構築されてmountできた。 sdaがこいつか。なんかしらんけどbootしないけどな。

バックアップスクリプトにあるのは以下の3つだった。/etcはない。メールサーバとかもう思い出すの無理。sambaも無理。

  1. /home
  2. /var/www
  3. /opt

/etc全救出。たぶん助かった。

でもsdaで起動しないので調べたところ、boot-repairをubuntuインストーラUSBから使って全てハイハイ従ったら終わった。 途中、GUIアプリに表示されるコマンド列をマウスで貼り付けて実行しろって画面になる。こういうUXは珍しいのではないか。 コマンドペーストしてからGUIに戻り進行しているとエラーが出た。"unknown bootloader"みたいな。

.....無視して起動したら起動した。うむ、rebuildしとる。あとは待つだけ。

「リビルド終わったら作業終了、しかしubuntu18か、全部終わったら20にするかなあ」などと余裕で出掛けてると、リビルド20%で死んだとメールが来た。WDの新品なのに。

$ sudo fdisk -l /dev/sdb    
fdisk: cannot open /dev/sdb: Input/output error

初期不良感やばいが面倒なので気にしない。

rebootしたらsdb->sdcになってた。もう一回addしてみるとrebuild始まった...
ああ、partition typeを0xfdにするの忘れてた。やり直し。 しかしLinux Raid Autodetectってなんだ?惰性?と思ったらこういうことか。

mdadm fail
mdadm remove
fdisk # change type
mdadm add

wait.....終わった。RAID1修復完了。

余談だがRAID1を構成する2台の購入時期がズレるように、片肺で引っ張る術を身に着けた。
と思ったら知らん間にメーカーも揃ってなかった。

/dev/sda: ST2000DM006-2DM164: 47 C
/dev/sdb: WDC WD20EFZX-68AWUN0: 42 C
/dev/sdc: ST2000DM001-1CH164: 43 C

次回に備えて 「SATA1: sda、一番上がRAIDじゃないバックアップ用のHDD」と覚えておく。
sda/sdb、どっちでも起動するけど。

_ [ubuntu]18→20にUpgradeしたら起動しなくなった話

ここから別の話。
RAID1のHDD交換は完了した。そこで、18→20.04にdo-release-upgradeしたら起動しなくなった。

error: symbol 'grub_file_filters' not found. 
Entering rescue mode... 
grub rescue>

Oh、真っ黒。心も真っ黒になる....

何度もインストールUSBからboot-repairを動かした。 なんと毎回毎回やり方間違ってた! コマンドペースト、実行→GUIに戻らずrebootしてた!RAIDのときはそんなことせずやってたので、間違いなく疲れてる。

sdaとsdbにgrub-installして両系起動確認。/etc/default/grubのquiet外した。起動時にはブリブリ文字が出てくれんと困る。 止まるところとか気づけるし。(普段見ないけど) sd{abc}問題はいつの間にか直ってた。sdaとsdbでRAID、sdcがバックアップ。

25時になったので飲む。そして寝る。

shutdown が異様に遅くなった。ログ見てもわからんのでこれで対応。

_ [tdiary]スタイル調整

更新フォームのtextareaが小さすぎるのでtheme/base.cssをいじくって対応した。
heightの調整はここを見た。

--- a/theme/base.css
+++ b/theme/base.css
@@ -266,3 +266,12 @@ div.profile span {
        font-size: 0.9em;
        display: block;
 }
+
+/* 
+* textarea
+*/
+form.update textarea{
+  font-size: 0.8em;
+  width: 95%;
+  height: 85vh;
+}                                                                                                                                                                                                                                                                           

2021-05-14 [長年日記]

_ [Gnome][ubuntu]拡張機能

Alt-tabの挙動改善するやつ、治ってた。やっぱり快適。
切ると微妙にラグが発生する
https://github.com/bdaase/remove-alt-tab-delay


2021-05-12 [長年日記]

_ [Python]pyenvが謎の仕様変更

anyenv管理下でnodenv,pyenv,phpenvを使っているがいつの間にやらpyenvが初期化時に毎回文句言うようになった。端末起動するたびにこれが出る。しばく。

WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.

anyenv管理から外した。
pyenv initの出力どおりに.zshrcをいじって対応。

$ pyenv init
# Add pyenv executable to PATH by adding
# the following to ~/.profile:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

# Load pyenv automatically by appending
# the following to ~/.zshrc:

eval "$(pyenv init -)"

# and the following to ~/.profile:

eval "$(pyenv init --path)"

# If your ~/.profile sources ~/.zshrc,
# the lines should be inserted before the part
# that does that.

# Make sure to restart your entire logon session
# for changes to ~/.profile to take effect.

2021-05-08 [長年日記]

_ [ubuntu]RAID1 HDD死亡

突然メールが来た。 DegradedArray event on /dev/md/0: とかいうやつ。あるある。

23:58:54 成仏か。
WD Red plusってのをポチってみた。なんかもう年貢みたい。

May  5 23:58:54 newbaden kernel: [123304.448624] sd 3:0:0:0: [sdb] tag#1 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
May  5 23:58:54 newbaden kernel: [123304.448629] sd 3:0:0:0: [sdb] tag#1 CDB: Synchronize Cache(10) 35 00 00 00 00 00 00 00 00 00
May  5 23:58:54 newbaden kernel: [123304.448638] print_req_error: I/O error, dev sdb, sector 0
May  5 23:58:54 newbaden kernel: [123304.450719] ata4: exception Emask 0x1 SAct 0x0 SErr 0x0 action 0x0
May  5 23:58:54 newbaden kernel: [123304.462010] ata4: irq_stat 0x40000001
May  5 23:58:54 newbaden kernel: [123304.473638] sd 3:0:0:0: [sdb] tag#7 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
May  5 23:58:54 newbaden kernel: [123304.473639] sd 3:0:0:0: [sdb] tag#7 CDB: Synchronize Cache(10) 35 00 00 00 00 00 00 00 00 00
May  5 23:58:54 newbaden kernel: [123304.473642] print_req_error: I/O error, dev sdb, sector 9766920
May  5 23:58:54 newbaden kernel: [123304.484605] md: super_written gets error=10
May  5 23:58:54 newbaden kernel: [123304.495227] md/raid1:md0: Disk failure on sdb3, disabling device.
May  5 23:58:54 newbaden kernel: [123304.495227] md/raid1:md0: Operation continuing on 1 devices.

2021-05-05 [長年日記]

_ [Windows]MySQL Workbenchが動かなかった件

SSHの踏み台経由でDBに接続する設定をしていざ接続すると、例外が出る。
libsshのバグ?何?

while(1ヶ月位){
 なんやー();
 放置();
}

アプリのログ読んだら、「known_hostsが書けないので死にます」と言っていた。 サーバの設定じゃなくてWorkbenchの設定(Edit-Preference)known_hostsの場所って設定があった。

これがWSL内の~/ssh/known_hostsを指しとる。フガッとWindows上のC:User/user/.ssh に移動して解決。


2021-04-28 [長年日記]

_ [php]xdebugの設定

やってみた。xdebugのバージョンは3.

環境:

  • WebServer: Amazon EC2
  • editor: emacs + TRAMP
  • sshで接続
xdebug.client_host = 自宅のIPアドレス
xdebug.client_port = 9000 (いくつでもいい)

自宅ルータに穴を開けることになった。久しぶりの作業で管理画面の使い方も忘れ気味...

M-x geben で開始、M-x geben-end で終了。
あとはbでブレークポイント張ったりvで変数見たり。

まあここにあるけどね! https://qiita.com/k1LoW/items/257858be52d435fddab8


2021-04-27 [長年日記]

_ [ubuntu][bluetooth]サスペンド復帰時にBTデバイスを自動接続する

BTスピーカを使っているがsuspendから復帰後に設定画面に行って接続している。アホくさい。

#!/bin/sh

#bluetoothctl paired-devices # 全部やるならこの結果を用いてloopすればいい

DEVICE=xx:xx:xx:xx:xx:xx # スピーカのID

if bluetoothctl info $DEVICE | grep "Connected: yes" > /dev/null ; then
  :
  #echo "Connected"
else
  #echo "Not connected. try to connect."
  bluetoothctl connect $DEVICE
fi

を作って、/lib/systemd/system-sleep/ からキックする.

lib/systemd/system-sleep/reconnect_bt_devices:

#!/bin/sh

case $1 in
  post)
    run_myscript
    ;;
esac

まだ実験してないけどな!

(2021/4/28追記)動いてなかった。ハハッ
systemdからキックする。動いた。
https://mongonta.com/f270-howto-exec-command-beforeafter-suspend-on-systemd/

手でやらなくていい!ああ素晴らしい。


2021-04-23 [長年日記]

_ [CodeIgniter] CodeIgniterの練習

http://blog.a-way-out.net/blog/2020/12/29/how-to-install-codeigniter-404/ を写経します。

create project

composer create-project codeigniter4/appstarter ci4test

edit .env

cd ci4test
cp env .env
vi .env

diff:

17c17
< # CI_ENVIRONMENT = production
---
> CI_ENVIRONMENT = development
23a24
> app.baseURL = 'http://localhost:8080/'
54,58c55,59
< # database.default.hostname = localhost
< # database.default.database = ci4
< # database.default.username = root
< # database.default.password = root
< # database.default.DBDriver = MySQLi
---
> database.default.hostname = localhost
> database.default.database = test.db
> database.default.username = root
> database.default.password = root
> database.default.DBDriver = SQLite3
123c124
< # logger.threshold = 4
---
> logger.threshold = 9

この設定で、writable/test.dbが作られ、DBとして使われる。

Timezoneなど設定する vi app/Config/App.php

実行

php spark serve # Webサーバ動く
XDEBUG_MODE=coverage composer test # テスト動く
php spark session:migration 
php spark migrate # migration動く
sqlite3 test.db # migrationの結果を確認

ログはここ。 writable/logs/log-2021-04-23.log

画面追加したい

controller追加

http://localhost:8080/blog/(index) を表示したい

app/Controllers/Blog.php:

<?php
namespace App\Controllers;

class Blog extends BaseController{

    public function index()
    {
        echo view('BlogIndex');
    }

    public function comment()
    {
        echo 'I am not flat!';
    }
}

Layoutを作る.

app/Views/default.php:

<!doctype html>
<html>
  <head>
    <title>My Layout</title>
  </head>
  <body>
    <h1>写経</h1>
    ここから<hr>
    <?= $this->renderSection('content') ?>
    <hr>ここまで
  </body>
</html>

<?= $this->renderSection('content') ?> にビューが読み込まれる

BlogIndex.phpを作る

<?= $this->extend('default') ?> # 上記default.phpを使う
<?= $this->section('content') ?> # ここからendSection()までをレイアウトのrenderSection()に読ませる
<h1>うelcome to my Blog!</h1>
<p>今日は暑かったですでござる</p>
<?= $this->endSection('content') ?>

以上で画面追加できる。

_ あとは

  • ビューヘルパー
  • DBアクセス
  • jsonの返し方

など。


検索キーワード:

記事

  • 2021-06-15
    • 1. [Arduino][ラズパイ]サーボで世界を動かす
  • 2021-06-01
    • 1. [ubuntu]sshポート22から変更した
  • 2021-05-16
    • 1. [ubuntu]RAID死んだので直した
    • 2. [ubuntu]18→20にUpgradeしたら起動しなくなった話
    • 3. [tdiary]スタイル調整
  • 2021-05-14
    • 1. [Gnome][ubuntu]拡張機能
  • 2021-05-12
    • 1. [Python]pyenvが謎の仕様変更

カテゴリ

Amazon | Android | apache | Arduino | bash | bluetooth | Books | CakePHP | CakePHP3 | CakePHP4 | Chrome | Chromebook | CodeIgniter | CSS | Docker | Eclipse | Emacs | etc | Firefox | Flask | Gadget | git | Gnome | Google | Heroku | HTML | hugo | Internet | iPhone | IS01 | IS03 | Java | JavaScript | json | Kotlin | Laravel | LINE | magento | mysql | nginx | nodejs | Oops | PC | Perl | php | Python | Qt | Ruby | ruby | Shell | tdiary | twitter | ubuntu | unix | Web | Windows | windows | WindowsMobile | WX5 | YAML | zsh | ここか | そば | つくる | つり | できごと | アクアリウム | ギター | セキュリティ | プリンタ | ベース | ボクシング | ポエム | マネー | メシ | ラズパイ | 仕事 | 作家 | 壮絶 | 妄想 | 忘れる | 料理 | | 暑い | 痛い | 社会 | 自転車 | | 車輪 | | 野球 | 銭湯 | 音楽 |

全部 : / 今日 :

近頃

links

profile

もっとヒゲ伸ばしたい。