ラァンフォーヱヴアー

出先・常駐先用コマンドリスト。2020年からリモートワークなので常駐なくなったけど。その他思ったことメモ。

デイユースホテルのススメ!

最近ブログの紹介ページを見直してたらこんな一文が…

以下書きます/書く予定です。

このブログを作った時はメインコンテンツの一つにするつもりだったけど、某コロナによってそういうスペースに行かず自宅で仕事するようになった。
でもさすがに家にこもりっぱなしは飽きる。情勢も多少落ち着き、また少しずつ出るようになったので共有。

最近ハマりつつあるのはデイユースホテル。そもそも一時的とはいえ人が暮らす前提の場所なので快適さが段違い。
他の仕事するスペースと比較すると割高なのは事実だけどリターンはある。

デイユースホテルとその他お仕事スペース

独断と偏見なところも多分にあるけど、こんな感じ。 あくまで仕事をする場所としての快適さや設備という目線。

ここでいうお仕事とはITエンジニア・コンサルタント中心に「MSオフィス作業やコーディング等 基本的に一日中PCを触る仕事」を想定。

職場 自宅 茶店 ネットカフェ コワーキングスペース デイユースホテル
Wi-Fi速度*1 △~◎ ×~〇 〇~◎ 〇~◎ 〇~◎
仕事道具・設備の調達*2 〇~◎ ×~△ ×~〇 〇~◎ △~◎
セキュリティ(IT)*3 〇~◎ △~〇 △~〇 △~〇
セキュリティ(物理)*4 〇~◎ △~〇
ドリンク・軽食*5 ×~〇 〇~◎ 〇~◎ △~〇 △~◎
価格帯 0円 0円 1注文250円~ 1時間500円前後 1時間1000円~2000円程度 1日5000円~8000円程度
1時間あたりの価格帯 0円 0円 約100円〜 500円前後 1000~2000円程度 約600円~1000円程度
(遠慮なく)滞在できる時間 無限 無限 1注文2~3時間 プラン次第 プラン次第 プラン次第

デイユースホテルで仕事するときのノウハウ

仕事時間を考慮して予約しておくこと!

デイユースホテルは、利用時間限られていることも多い。自分の仕事予定時間分だけ利用できるのか利用プランを確認しておくこと。 特にデイユースだと残業レベルの時間帯で利用できるホテルは少ない印象。

ある程度前から予約しておくこと!

安くて長時間利用できるホテルは意外と埋まってるため。

ケーブル類忘れずに!

PCは持っていくとして、スマホの充電ケーブルや1mくらいのタコ足延長ケーブルもあると便利。 コンセントが微妙な位置にしか無いことがたまにあるため。

会社システムにログインするためのもの忘れずに!

認証用のカードとかワンタイムパスワードトークンとか。普段家で仕事してると置きっぱなしにしがち。

別の通信手段を確保しておくこと!

特に初めて行くホテルは通信状況見えないことが多い。Wi-Fiありとなっていても通信が遅いとか、VPNや社内サイト等が利用できないとかもあり得る。 スマホテザリングやモバイルWi-Fiを念のため用意することをお前に教える(シャンクス)。

始業前から準備しておくこと!

同じく初めて行くホテルは勝手が分からないことが多い。
持ってきたPCセットアップやネットワーク利用に時間かかりがち。

昼間でも「起こさないでください(Don't disturb)」タグは貼っておくこと!

一度清掃の人が間違えて入ってきたことがあるため。一応自衛策。

ホテルならではの要素をうまく利用すること!

例えば、「朝食(昼食・夕食)付プラン」があったり「大浴場」が利用できたりする。
バイキング朝食ガッツリ行けたり、休憩時間に大きな風呂に入れたりと、かなりリフレッシュ度合は高い。
上司、顧客などに嫌なこと言われても精神的に勝てる。

こんなところか。思いついたら追加する。

*1:インターネット接続環境の有無や速度。令和なのでWi-Fi前提。 ×:無いまたは無いも同然 △:激遅で仕事に支障でる 〇:テキスト主体ならまず支障ない ◎:動画見れる

*2:有償無償問わず仕事に必要な道具や設備を借りたり買ったりできる。 ×:無い △:スマホの充電ケーブルくらい 〇:PC周辺機器や文具など大半 ◎業務用のコピー機など個人で持たないレベルの道具

*3:PCへ不正アクセスされない等IT面のセキュリティ。 ×:オープン △:大半のパブリックネットワーク ○:家庭のような限られた人間のみアクセス ◎:社内ネットワーククラス

*4:仕事をする上で資料見られないとかPC盗まれないとかの物理的な面でのセキュリティ。プライバシーと言い換えてもいいかも。×は屋外レベル △は第三者のいるオープンスペース 〇はある程度仕切りがあったり関係者しかいないオープンスペース、声出すのは厳しい ◎は鍵のかかる個室、声出せる

*5:ドリンクや軽食が入手。無償の方が評価いいが有償もあり。×不可 △給茶機か自販機 〇ドリンクバーや軽食 ◎ちゃんとした食事

シェルスクリプトのファイルを分割せずに済む方法をまとめてみた(Linux)

はじめに

シェルスクリプトで困るのが入力に癖のあるコマンド。
別のプロンプトを起動して操作する形式だったり、対話形式が必須だったり、ファイル指定形式でないと受け付けなかったり。
(SQL*Plusなどが典型的。sqlplus user/password @hogehoge.sqlみたいな)

そのようなコマンドを含むシェルスクリプトを1ファイルにまとめる方法をまとめてみた。多くの環境で動くと思うけど一応Bash念頭。

あるコマンドの標準出力を別の標準入力にする場合

これはご存知の皆様も多いかと。まとめて示す。

  • パイプ(pipe): あるコマンドの次にパイプライン(|←コレ)を置き、続けてコマンドを置くと前のコマンドの標準出力を後のコマンドの標準入力に渡すことができる。
    書き方としてはこんな感じ。
outputcommand | inputcommand

具体例としては

$ echo -e "hoge\nhuga" | grep "hoge"
hoge
  • リダイレクト (redirect): あるコマンドの次に小なり記号(<←コレ)を置き、続けてファイルを置くと後のファイルを前のコマンドの標準入力に渡すことができる。 書き方としてはこんな感じ。
command < file

具体例としては

$ cat test.txt
hoge
huga
$ grep hoge < test.txt
hoge

別プロンプトがシェルからの入力を受け付ける場合(SQL*Plusなど)

ヒアドキュメント(Here document)を使う。リダイレクトの複数行版みたいなもの。
「<<ある文字列」から「ある文字列」の間までの改行を含む文字列を標準入力に流し込むことができる。「ある文字列」はなんでもいい。

これが威力を発揮するのは例えばSQL*Plusみたいな「制御のためにOSのシェルではないプロンプトを起動する」ケース。
例えばOracleDBの起動シェルスクリプトを作成する場合、以下のようにstartdb.sh、startdb.sqlの2ファイルを用意する必要がある。
ただ数行レベルかつDBを起動するという目的が同じスクリプトをわざわざ分けたくないと考える。

% cat startdb.sh
#!/bin/sh
sqlplus / as sysdba
exit 0

% cat startdb.sql
startup
quit

よってヒアドキュメントを使用する。具体例を以下に示す。ここでは「ある文字列」をHEREとしている。先に説明した通りどんな文字列でもいい。

% cat startdb1.sh
#!/bin/sh
sqlplus / as sysdba  <<HERE
startup
quit
HERE
exit 0

これで1ファイルのままstartdb.sh、startdb.sql分の働きをすることができる。
なおヒアドキュメントの詳細は以下のとおり。

  • <<HERE: 文字列の解釈はシェルに順ずる。つまりヒアドキュメント内に$hogeという文字列があればそれはシェル関数であり、hoge関数内の文字列に置き換わる。
  • <<'HERE': 文字列をそのまま扱う。つまりヒアドキュメント内に$hogeという文字列があればそのまま$hogeという文字列として渡される。
  • <<(タブ文字)HERE: 行頭のタブ文字は無視する。インデントをしている場合に適する。

対話形式コマンドを自動入力する場合

商用ソフト等でまれにある対話形式が必須で、かつパイプやリダイレクト(ヒアドキュメント)を受け付けないようなコマンドを自動化したいケース。
コマンドexpectコマンドを使う。メジャーなdistroで入ってるイメージないので追加インストールが必要になるかも。
使い方は説明長くなりそうなので省略する。気が向いたら追記するかも。

echoコマンドの結果をファイルとして扱う(プロセス置換)

ややマニアックな方法?かも。あるコマンドの結果をファイルとして扱う方法。
ちょっとややこしいので具体例を示す。

$ cat read_test.sh
#!/bin/sh

while read line
do
  echo $line
done < $1

exit 0
$ cat file.txt
aaa
bbb
ccc
$ ./read_test.sh file.txt
aaa
bbb
ccc
$ ./read_test.sh <(echo -e "aaa\nbbb\nccc")
aaa
bbb
ccc
$

説明を加える。
ファイルを読み込むコマンド(read_test.sh)を呼び出す処理をしたい(./read_test.sh file.txt)が、 そのためにわざわざ別ファイル(file.txt)をつくりたくないとする。
その場合はファイルの中身に相当する処理をechoコマンド結果として実行している。

さいごに

これまでシェルスクリプトをX年書いてきてぶつかったパターンはだいたいこんな感じ。
特にラスト2つは結構調べた記憶があるので今後の備忘録。

ブログの構成ちょっと見直したよ

文章力を上げる一環として、ブログが読みやすく、記事にたどり着きやすくなるよう修正。

  • 自己紹介部分
  • 右側ペインの表示順
  • カテゴリーの内容(記事のカテゴリーも直した)

あとブログの横幅が狭い気がしてちょっと触ろうとしたけど、結局しっくりこず元に戻した。
はてなの人が作ったデザインに素人が手を出してはいけないか。
でも表とか貼ると狭い気がするし。うーん。
今後もちょこちょこ直すかも。

だいたい一週間に一回くらい書きたいなと思いつつ、ネタもそんなにないので悩み中。
仕事がすっかりクラウドメインになり、勉強中度合が高くなっているのでクラウド系の記事を増やすかも。

飛行機に乗るときのノウハウ

最近文章力を鍛えるべく、ブログ更新量を挙げようと思っている。
そこで技術はあんまり関係ないけど、最近飛行機に乗る機会があったので気づきをメモ。

  • 窓側席を取る。
    窓側が景色見れるのはもちろん搭乗時に優先して載せてもらえる。逆に降りるとき遅れるのかとも思ったがそんな感じはなかった。ケースバイケースかも。
    ちな新幹線はトイレ行きやすい通路側とる派。
  • 陸側の座席を取る。
    例えば羽田から沖縄へ旅行する場合、行きは右側の窓席。帰りは左側の窓席。
    趣味によるけど陸見れた方が離着陸で変化があって面白い気がする。海は離陸直後および着陸直前でどこ飛んでるかわからない。
  • 非常口席を取る。
    足元が広い。ただし、いざとなった時に避難通路になることから手荷物を座席に置けないのでちょっと不便かも。
  • (LCCの場合)帰りは荷物制限緩いプランにすべき。
    大抵お土産が膨らむから。

個人~中小規模iPaaS系サービス(事前調査編)

長らくIFTTTの無料プランで「RSSをLINEに飛ばす」をやってた。
が、仕事でエンタープライズなiPaaS(Informatica、Mulesoft)を触ったこともあり、個人用~中小企業向けiPaaSの情勢を調べてみた。

まだ実際に触ってないのでサイトからの情報だけだけど、せっかくなので公開する。
だいたい個人~中小規模で手を出せなくはない金額の範囲で調査。Webサイトに値段の記載がなく「営業に連絡してください。お見積りいたします。」は対象外。
事前調査編としたが使用報告編があるかは未定。

調査内容は2022/5/11時点の情報。特に金額は為替で頻繁に変わるっぽい。公式に日本円表記がないものは1USD=120円、1EUR=140円で計算。

サービス名(リンク付) プラン 対応サービス数 寸評
IFTTT Free 0円
Pro 1,100円
Pro+ 2,100円
700以上 今ずっと使っている。この手で最古参だと思う。Freeは5個のみだが正直それで困ってない。
Zapier Free 0円
Starter 2,666円
Proffe 6,534円
Team 39,870円
Company 79,872円
4000以上 IFTTTの対抗馬でよく出てくる印象。Freeは5個かつ1ステップのみ。
ゼロワン Free 0円
Personal 3,300円
Professional 16,500円
Corporate 55,000円
(不明) 日本製。単なるiPaaSでなくWebサイト、DBも一体化したNoCodeのWebアプリ作成サービス?Freeは1個(30日間)とありお試し版のみっぽい。
Make
(旧Integromat)
Free 0円(0USD)
Core1,080円(9USD)
Pro 1,920円(16USD)
Teams 3,480円(29USD)
1174 Freeは1,000回実行まで。日本コミュニティもあるみたいだが、オープンなコミュニティというよりはITコンサル集団?
n8n
n8n Cloud
オンプレミス 0円(0EUR)
Start 2,800円(20EUR)
Pro 7,000円(50EUR)
Power 16,800円(120EUR)
(不明) オンプレ版はフリーソフト。fair-codeなので外部サービスとしての提供は不可。社内利用、非営利、個人利用が可能。クラウド版はビジネス利用可能のようだ。
Anyflow スターター 30,000円
ベーシック 60,000円
スタンダード 100,000円~
7 日本製。12か月単位の契約が前提かつこのお値段なので個人利用は現実的でなさそう。利用できるアプリが少ないようだが詳細不明。高額なこともあり、SI的に都度ベンダが作りこむのかもしれない。

AWS Step FunctionsAzure Logic Appsも上がってくるが、 クラウド自身の利用料なり契約なりが必要なのでiPaaS単機能のために使うというのは少し微妙なのであんまりちゃんと調べてない。

それなりにあるがMakeはサイトで対応サービス細かくみられるつくりになっていて好感。あとは楽ではなくなるかもしれないけどn8nも面白そう。

Google Home(Nest)が特定コマンドだけ受け付けなくなった話

毎度お久しぶりな感じ。 サポートに投げるレベルで困ったことがあったので共有。

事象

Google Home Mini(いわゆる第一世代)が、音量変更だけ受け付けなくなった。

  • 音声変更のコマンドだけ。ほかのコマンドは大丈夫。
  • OK Google, 音量を〇〇にして」->スルー。LEDが4つがめんどくさそうに1回点滅するだけ。実際は変わらない。
  • 本体の左右をタップでの変更はできる。

結論

なんか普通には思いつかない方法だった。

  1. Google Homeアプリ -> 右上自分のアカウント -> アシスタントの設定 -> 言語 を「日本語」から「English(United States)」へ変更。
  2. "OK Google, volume to XX percent"とコマンド。 -> 英語では音量変更できることを確認。
  3. 言語を「日本語」へ戻す。
  4. 本体の電源ケーブル引っこ抜いて1分後挿し直す。
  5. 復活ッ!

よもやま

Google Homeの夜間モードが思ったような夜間モードじゃなかったので(最大音量下げるが朝自動で戻らない)、ルーティンの時間指定で夜音量さげてたんだけど。

ふと気づいたら機能しなくなってる。 電源ケーブル抜き差しでもダメ。音量コマンドいろいろ変えてもだめ。

サポート投げる。サポートからも「電源抜き差ししろ、Wifiの電源も抜き差ししろ」と言われるが変化なし。

サポートから工場出荷状態リセットを指示される。正直それやるのめんどいからサポートに聞いたようなところあるが、渋々実施。

が、それでもだめ。さすがに想定外。

サポートも想定外だったであろう、エスカレーションとなったらしくシリアルコードとか詳細聞かれる。ここまではチャットだったがメールベースになった。

翌日、翌々日、ファームバージョンとか履歴のスクショとか要求される。1~2回で結論に書いた方法提示あり。でなおった。

さらによもやま

Google Homeのサポートめちゃくちゃ早い。この手のチャットベースのサポートってB2Bの有償サポート(〇racle、S〇P…?)でもチンタラしてるイメージあったけど、5分以内、想定外事象でも10分以内くらいで帰ってくる。

何ならこっちに操作依頼して10分経つとあおり入れてくるくらい。まだやってんだよ!感もあるがすごい。

担当者の方も名前見る限り日本語圏の方ではなさそうだけど日本語レベル高い。少なくとも文面は言われてもわからないレベル。外国人風の名前を設定している日本人なのかもしれないけど。B2Bの有償(略)

流石は天下のGoogle。旧Nestかもしれんけど。

BIOSでインストールしたWindows10をUEFIに変更する方法、または私は如何にしてWindows11無償アプデを止めてRyzen7を愛するようになったか

結論だけ知りたい人用(結構危険なことやっているので自己責任で)

  1. バックアップする(推奨)
  2. Windows→[ディスクの管理]でWindowsのインストールドライブが何番か確認。
  3. mbr2gpt /validate /disk:(確認した番号) /allowFULLOSでうまく動くか確認。
  4. mbr2gpt /convert /disk:(確認した番号) /allowFULLOS で変更する。ReAgent.xmlエラーでるかもしれないけど成功。
  5. Windows再起動してBIOSUEFIに変更して起動。
  6. ReAgent.xmlエラー出たらreagentc /disable reagentc /enableを実行。

本文

相変わらず久しぶりの更新。

Windows11アプデまだやらないにしても無償のうちにReadyな状態にはしておきたいところ。Microsoft謹製ツールで対応しているかチェックできる。

https://aka.ms/GetPCHealthCheckApp

NGだった。いくつか問題あるが、BIOSで以下を有効にせよというのがあるっぽい(ツールは教えてくれないけど)。

  • fTPM2.0
  • UEFIセキュアブート

UEFIに切り替えたところWindows10インストールドライブが認識せず、Windowsが起動しない…? (BIOS画面スクショとるの面倒なので省略)

色々調べるとそもそもWindowsUEFIでインストールしてないとダメらしい。2017年ごろ10年ぶりに作った自作PCみたいな感じなのでそういうのはあんまり気にしてなかった。 確認方法は以下URLを参考にさせていただいた。

itlogs.net

まず、Windows右クリック→[ディスクの管理]でどのディスクがWindows起動ドライブ(Cドライブ)かチェック。 手元の環境ではディスク1だったので以下そうしている。大抵の人は0かも。

コマンドプロンプトを管理者モードで起動して、まずは検証コマンド。いわゆるドライラン。実際には実行せず結果だけ見る。

mbr2gpt /validate /disk:1 /allowFULLOS
Microsoft Windows [Version 10.0.19043.1415]
(c) Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>mbr2gpt /validate /disk:1 /allowFULLOS
MBR2GPT: Attempting to validate disk 1
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512 bytes
MBR2GPT: Validation completed successfully

どうやら成功するらしい。じゃあやってみる。

mbr2gpt /convert /disk:1 /allowFULLOS
C:\WINDOWS\system32>mbr2gpt /convert /disk:1 /allowFULLOS
MBR2GPT will now attempt to convert disk 1.
If conversion is successful the disk can only be booted in GPT mode.
These changes cannot be undone!

MBR2GPT: Attempting to convert disk 1
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512 bytes
MBR2GPT: Trying to shrink the OS partition
MBR2GPT: Creating the EFI system partition
MBR2GPT: Installing the new boot files
MBR2GPT: Performing the layout conversion
MBR2GPT: Migrating default boot entry
MBR2GPT: Adding recovery boot entry
MBR2GPT: Fixing drive letter mapping
MBR2GPT: Conversion completed successfully
Call WinReReapir to repair WinRE
MBR2GPT: Failed to update ReAgent.xml, please try to  manually disable and enable WinRE.
MBR2GPT: Before the new system can boot properly you need to switch the firmware to boot to UEFI mode!

ちょっとだけ不安な時間かかる(といっても2-3分)し、ちょっと不穏なメッセージ出てるけどsuccessfullyらしい。 参考にさせてもらったサイトでも同じエラー出てるのでそういうものなんだろう。

Windows再起動&F2連打でBIOS画面に入り、UEFIに切り替えて起動したところ無事切り替わった。

エラーメッセージも調べてみるとReAgent.xmlとはWinRE(Windowsを強制終了し続けると起動するor回復ディスクで起動するメンテモード的なやつ)の起動に関わるものっぽい。 回復ディスク作ってあるので不要といえば不要だが一応きれいにしておく。

ちなみに参考サイト news.mynavi.jp

reagentc /info
reagentc /disable
reagentc /enable
Microsoft Windows [Version 10.0.19043.1415]
(c) Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:

    Windows RE の状態:         Enabled
    Windows RE の場所:         \\?\GLOBALROOT\device\harddisk1\partition4\Recovery\WindowsRE
    ブート構成データ (BCD) ID: (公開していい情報かわからなかったので省略。disableにすると0並びになる)
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0

REAGENTC.EXE: 操作は成功しました。


C:\WINDOWS\system32>reagentc /disable
REAGENTC.EXE: 操作は成功しました。


C:\WINDOWS\system32>reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:

    Windows RE の状態:         Disabled
    Windows RE の場所:
    ブート構成データ (BCD) ID: 00000000-0000-0000-0000-000000000000
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0

REAGENTC.EXE: 操作は成功しました。


C:\WINDOWS\system32>reagentc /enable
REAGENTC.EXE: 操作は成功しました。


C:\WINDOWS\system32>reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:

    Windows RE の状態:         Enabled
    Windows RE の場所:         \\?\GLOBALROOT\device\harddisk1\partition4\Recovery\WindowsRE
    ブート構成データ (BCD) ID: (省略)
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0

REAGENTC.EXE: 操作は成功しました。

今回はうまくいったが、失敗するようなら %SystemRoot%\System32\Recovery」フォルダーにあるReAgent.xmlファイルが破損している可能性があるらしい。 その場合は同ファイルを待避して「reagentc /enable」でReAgent.xmlファイルを再作成するらしい。

本件のオチ。

Ryzen第一世代(Summit Ridge)はWindows11に対応しておらず、実質無償アプデはできないことが確定になった。

docs.microsoft.com

Ryzen 7 1700でそんなに困ってないけど買い替えるか…

本件のオチ(2022/01/01追加)

非推奨ながら条件満たさなくてもインストール可能な方法をMicrosoft公開している。

試してないから情報のみ。

support.microsoft.com

本件のオチ(2022/03/15追加)

Ryzen買い替えてしまった。右下のWin11更新ボタンの自己主張が強い…