- 投稿日:
Pythonでデーモンを作ったので、その手順のメモ
確認環境
Env | Ver |
---|---|
OS | 2020-05-27-raspios-buster-arm64 |
Python | 3.7.3 |
python3-systemd | 234-2+b1 |
やったこと
- python-systemdのインストール
sudo apt-get install python-systemd python3-systemd
~/foo.py
を以下の内容で作成
from systemd import journal
journal.send('Hello world')
journal.send('Hello, again, world', FIELD2='Greetings!', FIELD3='Guten tag')
journal.send('Binary message', BINARY=b'\xde\xad\xbe\xef')
- 実行権限を付与する
chmod 755 ~/foo.py
- systemdの定義ファイルを次の要領で作成
sudo nano /etc/systemd/system/foo.service
として以下の内容を書く
[Unit]
Description = Foo
[Service]
ExecStart = python3 /home/pi/foo.py
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
- デーモンを有効化する
sudo systemctl enable foo.service
- デーモンを開始する
sudo systemctl start foo.service
- ジャーナルを見る
systemctl status roomenv.service
- なんかログが出てれば成功
ExecStart
にsudo
を書くと動かない(root権限で動作する模様)
- 投稿日:
Surface Pro 7 PUV-00027、Core i5 1035G4 MEM 8GBモデルのお話です。
タブレットというよりノートPCとしてみた方が適切かなと言う印象です。まぁ中身は単なるWindows 10なので当然と言えばそうですね。
今の所の印象としてはラグジュアリーで長時間駆動可能なミドルエンド2in1ノートといったところです。
タブレットとして
開発機クラスの存在を持ち運べると言う意味では悪くありません。しかし敢えてSurfaceである必要があるのかと言うと今のところ明確な回答は出せないです。いわゆるタブレットととしてみるとどうしても微妙と言わざるを得ないという部分が率直な感想。
悪くはない解像度
2736 x 1824の解像度を持つディスプレイと言う事で、この点においては魅力的ですが、12.3インチしかないため初期設定のスケーリング200%で運用しています。
ちょっと大きすぎるかも
これは利点でもあるのですが、今のところ運用する上で最大のボトルネックになっているところです。
満員電車で使うのは割と憚れるサイズです。使えない事は無くはないとは思いますが後述する重量との兼ね合いで難易度は高いと感じました。
とにかく重い
重量が800g弱あるため垂直にしても水平にしても斜めにしてもどう持っても重いです。片手で持つのは辛く、両手で持つと横持ちは大きいため肩がこりました。縦持ちなら比較的マシという程度。
文字入力周りについて
ソフトウェアキーボード或いはタッチキーボードとでも呼ぶものでしょうか、要するに画面上で使うキーボードのことです。AndroidのGoogle日本語入力に慣れてると大変入力効率が悪く、取り敢えず入力が出来るレベルの代物にしか見えませんでした。
因みにタイプカバーを立って使うのはスペース的にも形状的にも難しいと思うので、あくまでタブレットとして使う場合、どうやってこのキーボードを使っていくかが鍵になりそうです。
特にIMEとキーボードが一体化している点が個人的に色々と難しいポインツで、これは知る限り切り離せません。まぁAndroidなんかもそうなので理解はできるのですが、利点かと思えばデメリットしかなく、大人しくMS-IMEを使おうとか言う内容になります。
Google 日本語入力
みんな大好きGoogle日本語入力はPCのときとよく似た振る舞いをしてくれるおかげで変換候補や入力中の文字が確認し辛い問題があります。
変換のしやすさ
変換候補が出てくる所がカーソルから離れていて見辛いです。
キーボードの種類
二種類しかなく左右分割の英字キーボードか分割なしのキーボードだけです。フリック入力などありません。
MS-IME
嫌われ者のIMEですが、こちらは入力方式に富んでいます。
まず入力中の文字や変換候補はキーボードの上側に表示されます。見やすくていいですね。
キーボードの種類も多くフリック入力からフルキーボードまで選び放題です。但しフルキーボードは平置きにしないと使いづらいと思います。
フリック入力
みんな大好きフリック入力!AndroidのGoogle日本語入力とはレイアウトが異なりますが、慣れれば十分使えそうな代物ではあります。
しかし英字モードをQWERTY方式に出来ないのは個人的にはマイナスです。
フルキーボード
ShiftやAltなどの制御キーがついており、コーディングなどで重宝しそうですが本体を持って使うには不向きに感じました。
左右分割キーボード
最初に戻ってきましたが、結局のところこれが一番マシな選択肢に思えました。肩こりますけど。両手で持って両手で叩けます。肩こりについては慣れなのかなという気もしました。
ノートPCとして
タイプカバーとマウスを使って開発をしていても8hくらいはバッテリーが持つため、ノートPCとしては優秀かなという気はします。
実業務とかにありがちな重くてまともに開発できないといったことはVSCode + MySQL + Laravelでは感じなかったです。それなりにサクサクという感じ。
Office一式が入っていることや、人によっては液タブとしても使える点とかを考慮すれば総合的なコスパはいいのかもしれませんが、ごく単純な開発機としてみた場合のコスパはあまり高くないような気もします。ぶっちゃけ開発しないならAndroidタブレットで十分でしょうし、開発するにしてもタイプカバーとマウスを含めれば1kgを超えるため余りお手軽に持ち運べる感はありません。
買って軽く数日使った程度では評価するのが難しいと悟ったので、また使い込めたらその頃になんか書きたいと思います。可能性はあるデバイスだと信じているので...。
- 投稿日:
確認環境
Windows
あらかじめgpgのパスをPATHに通しておくと良い
参考値:C:\Program Files (x86)\GnuPG\bin
Env | Ver |
---|---|
Windows 10 Pro | Build 19042.804 |
git | 2.30.0.windows.1 |
VSCode | 1.53.2 |
Kleopatra | Gpg4win-3.1.15 |
Linux
Windows側からVSCodeのRemote - SSHで接続
Env | Ver |
---|---|
Ubuntu Desktop | 20.04.2 |
git | 2.25.1 |
gpg | 2.2.19 |
手順
Windows
- Kleopatoraを起動
- ファイル> New Pair Key
- 個人用のOpenPGP鍵ペアを生成
- 期限なし、パスフレーズは適当に
- Exportから
-----BEGIN PGP PUBLIC KEY BLOCK-----
の中身を全部GitHubのGPG keys/ Add new
に貼り付ける - 追加後にでてきた
Key ID
をgit config --global user.signingkey KeyID
としてcmd
に流す - 以下を流す(
gpg.program
はなくても動くが、あったほうが問題が起きない)
```bat
git config --global commit.gpgsign true
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
``` - 管理者権限で
cmd
を起動し次のシンボリックリンクを作成mklink /D %USERPROFILE%.gnupg %AppData%\GnuPG
- VSCodeで適当なリポジトリを作成
- なんか適当にコミットする
- GitHubに投げる
- GitHubのコミット履歴にverified signatureがついてたら成功
Linux
- Windows側のKleopatoraから公開鍵と秘密鍵をエクスポートして持ってくる
gpg --import FooBarpublic.asc
で公開鍵をインポートgpg -k
でインポートされていることを確認し、下記XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
相当の部分をコピペ
pub rsa3072 2021-01-17 [SC]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid [ 不明 ] Foo Bar <foobar@example.com>
sub rsa3072 2021-01-17 [E]
gpg --edit-key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
trust
5
を選ぶquit
gpg -k
で信用度が[ 究極 ]
になっていることを確認gpg --import FooBarSECRET.asc
で秘密鍵をインポート- SSHで繋いでいる時でタイムアウトする場合、GUIプロンプトからの入力になっている可能性があるので、どうにかして入力
- XRDP経由なら
pkill gnome-session
を叩くと入れる
- Windowsの時と同様に次のコマンドを流す
git config --global user.signingkey KeyID
git config --global commit.gpgsign true
- VSCodeで適当なリポジトリを作成
- 何か適当にコミットする
- コミットがコケたらXRDPから入力する
- GitHubに投げる
- GitHubのコミット履歴にverified signatureがついてたら成功
CLIからやる場合でパスフレーズを何度も打ちたくないケース
以下の手順が参考になる
トラブルシュート
Key ID
を確認したい
以下のコマンドで確認可能
gpg --list-signatures
GPGキーを消したい
- 投稿日:
ここ最近回線速度が異様に遅かったので早くなるかな?と思って申し込んでみました。結果としては早くなったと思います。
OCN は IPv6 標準対応
OCNは以下のプランではIPoEによるIPv6接続に標準対応しているとしています。
- OCN光
- OCN forドコモ光
- OCN光withフレッツ
但し契約時期による条件あり
但し標準提供されるのは以下の条件に限られており、それ以外のユーザーは何かしらの手続きが必要である可能性があります。
- 2017年7月25日以降にOCN光をご利用開始したお客さま
- 2017年9月1日以降にOCN forドコモ光をご利用開始したお客さま
- 2018年6月15日以降にOCN光withフレッツをご利用開始したお客さま
条件外のユーザー(ドコモ光)はどうすれば?
2017/08/31 以前に OCN for ドコモ光を利用開始したユーザーについて
OCN のお知らせ詳細なるページで「メールに記載のURLからフォームへアクセスしお手続きをお願いいたします。」と案内されていますが、2019/12/17現在このフォームは消滅しており利用することができません。
NTT 西ユーザーなら自分で NTT に申し込めば行ける?
OCN のお知らせ詳細では以下のような案内があるためNTT のサイトから申し込んでみることにしました。申込みから一時間ほどで利用できるようになります。書いてある通り無料です。
しかしこれだけではv6通信はできませんでした。やはりOCN側が対応している必要があるようですね。
IPoE 提供には NTT 西日本のフレッツ・v6 オプション(無料)が必要となるため、お客さまに代わり OCN が NTT 西日本へ代行申込をいたします。
サポートにメールをすると今でも申し込み手続きが可能
上述の通り、申し込みフォームは既にありません。何故なくなったのかは知りませんがきっとなにか深い大人の事情でもあるのでしょう。
しかし私はなんとしてでも無料で煩雑な手続きもせず追加機材も用意せずIPv6を使いたかったのでOCNのQ&Aを読み漁り、それっぽいワードでググりまくり、OCNメールを開き「【重要】OCN IPv6インターネット接続機能(IPoE)」の提供について」というメールを何度も読み返し「本件に関するお問い合わせ先」なるリンクに気がついたので、その先にあったお問い合わせフォームからメールに記載のフォームが使えないがIPoEによるIPv6接続を利用できないか?と問い合わせをしてみました。
サポートに問い合わせした結果、24hほどで以下のようなメールが届いたので適当に埋めて返信
そして IPv6 開通!
上記メールに返信をしてから48hほどで以下のようなメールが来たのでルーターを再起動したところ無事IPv6に繋がりました。やったー!
WSR-1166DHP4で利用できた!
IPv6対応ルーターも増えてきて値段もだいぶお手頃になってきたので、本当に繋がるかどうかもよくわからないまま買ったルーターでしたが、無事繋がりました。
上述のメールの案内に書かれている通りルーターを再起動したところネットが不通になり、ルーターのコンパネにアクセスしてみると回線識別画面になっていました。
ぼちぼち安くてそこそこ小さいのでおすすめです。アンテナ生えてないからコンパクト。
バッファロー11ac対応866+300Mbps無線LANルータ(親機単体)(ブラック) WSR-1166DHP4-BK
OCN バーチャルコネクト!
もしや…!と思ったらキタコレ!(漣風に
しかしコケる
ファッ!?
まぁネットワークにエラーはつきもの、リトライです。
IPv6接続成功!
リトライしたらフツーに行けました。良かった。
ちゃんとIPv6で繋げてます。因みにv4でも繋がります。v4のIPを振っている自宅サーバーにもv4環境からアクセスできました。出てるのはこのブログのIPなので隠す意味は特にないのですが、一応…w
契約情報もちゃんと更新されてます。
速度の変化
直近の測定値を見ると大分早くなったような気がします。劇的に早いというわけではないと思いますが、実用上は必要十分だと思います。流石に光で100Mbps切ってるのは問題なので…。(ADSLかよ
- 投稿日:
いつも使う時に忘れるので自分用の備忘録がてら。組み合わせることでGrep結果の集計とか、ある程度パターン化されているエクセル設計書の集計とかに使える
こんな地獄のような数式使わないに越したことはないと思うんですが、世の中それで済んだらExcelなんて要らないんですよね!
パターンで文字切り出し
A2
に<hoge>あいうえお</hoge>
みたいな文字があるとして
D2
に<hoge>
, E2
に</hoge>
があるとする場合、B2
辺りに以下の数式を入れると特定の文字列で囲まれた文字列を切り出せる
=MID(A2,FIND(D$2,A2)+LEN(D$2),(FIND(E$2,A2)-FIND(D$2,A2)-LEN(D$2)))
条件付き書式を複数列反映
D
列の値を条件として同一行複数列に書式設定するものとする
条件式で$D1="HOGE"
のように列名をロックした式を設定し、範囲をA:G
のようにすると、常にD
列を参照した状態で範囲的に設定できる
最初に出現する行位置の特定
=MATCH("hoge",A:A,0)
ワイルドカード
アスタリスクを生やす
=MATCH("*hoge",A:A,0)
セクション行のグルーピング
Grepとかで抜き出した結果をエクセルに貼り付けてグルーピングする時に使えるやつ
これを
Title |
---|
C:\Hoge\Foo\Src\Hoge001.txt |
100,1: aaaa |
101,1: bbb |
C:\Hoge\Foo\Src\Hoge002.txt |
10,1: aaaa |
11,1: bbb |
18,8: cccc |
... |
こうしたい
Title | Section |
---|---|
C:\Hoge\Foo\Src\Hoge001.txt | Hoge001 |
100,1: aaaa | Hoge001 |
101,1: bbb | Hoge001 |
C:\Hoge\Foo\Src\Hoge002.txt | Hoge002 |
10,1: aaaa | Hoge002 |
11,1: bbb | Hoge002 |
18,8: cccc | Hoge002 |
... | ... |
手法
Sectionを抜く列を作る
B2
だけは決め打ちで2
を入れておき、B3
以降に設定
=IF(ISERROR(FIND(E$2,A3)),B2,ROW())
Section名を抜く列を作る
C2
以降に設定、タイトル行ならD2
とE2
の値を元にA
列の内容を切り出し、タイトル行でなければB
列の値を行番号とし、C
列の行を当てに行くロジック
=IF(ISERROR(FIND(D$2,A2)),INDIRECT("C"&B2),MID(A2,FIND(D$2,A2)+LEN(D$2),(FIND(E$2,A2)-FIND(D$2,A2)-LEN(D$2))))
複数条件でのCOUNTIF
COUNTIF()
で複数条件を実現するには文字列結合した列を作る事があると思いますが、COUNTIFS()
ならその必要はない
=COUNTIFS(条件列1, 条件1, 条件列2, 条件2, ...)
便利関数メモ
よく使うやつ
IF()
,AND()
,OR()
,NOT()
- 条件分岐でよく使う
SUM()
- 集計用。
SUMIFS()
はあんま使ったことない
- 集計用。
COUNTIF()
,COUNTIFS()
- 条件付き集計
COUNT()
,COUNTA()
,COUNTBLANK()
- 個数カウント
VLOOKUP()
,MATCH()
- 検索用
ADDRESS()
,INDIRECT()
,INDEX()
MATCH()
結果からセルを当てる時に有用INDIRECT()
はシート名を書いておくとシート名の変更時に追従しやすい(その際シート名管理用のセルをどっかに作っておく)
FIND()
,LEN()
,MID()
- 文字列切り出しの鉄板
まれに使うやつ
DATEDIF()
- DATEの差分がINTで取れる便利な子