2020年10月21日水曜日

powershellでgrep → Select-String "xxxx"

 AzureのTemplate.jsonでこんな行があった。

"commandToExecute": "powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe ~~~

PowerShellからIISの役割と管理ツールをインストールしているっぽい。


手持ちのWindows10端末でPowerShellを起動して実行するとエラー。

PS C:\Users\lydian> Install-WindowsFeature

Install-WindowsFeature : 用語 'Install-WindowsFeature' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。

VMのWindowsServer2016で試しても同じエラー。
よくよく確認すると、Windows10とPowerShell(x86)では動作しないことがわかった。。

で、WindowsServer2016のPowerShellで再度確認。

PS C:\Users\Administrator\Desktop> Install-WindowsFeature -name Web-Server
Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             NoChangeNeeded {}

一応、それらしい応答があった。この「-name」が何かが気になったので調べた。

役割、役割サービス、または機能のインストールまたはアンインストール | Microsoft Docs

ローカル サーバーにインストール済みの利用可能な役割と機能の一覧を表示するには、「Get-WindowsFeature」と入力し、Enter キーを押します。

次にこの「Get-WindowsFeature」を試す。

PS C:\Users\Administrator> Get-WindowsFeature
Display Name                                            Name                       Install State
------------                                            ----                       -------------
[ ] Active Directory Federation Services                ADFS-Federation                Available
[ ] Active Directory Rights Management サービス         ADRMS                          Available
    [ ] Active Directory Rights Management サーバー     ADRMS-Server                   Available
    [ ] ID フェデレーション サポート                    ADRMS-Identity                 Available

こんな感じでズラズラ表示された。よくよく探すと
「[X] Web サーバー (IIS)                                  Web-Server                     Installed」
の行もあった。

長い行から目視で探すのも大変なので、これをgrepみたいにして探したいなと思ったのが始まり。

*** --- *** --- *** --- ***

PowerShellにはgrepの仕組みは無いようで、代わりに「Select-String "文字"」を使うらしい。
なので、「Get-WindowsFeature | Select-String "Web-Server"」としても結果は無しだった。。

「Get-WindowsFeature」に使えるものかがわからないので、代わりに「dir」と組み合わせて確認した。

PS C:\Users\Administrator> dir
    ディレクトリ: C:\Users\Administrator
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-r---       2020/07/30     17:26                Contacts
d-r---       2020/07/30     17:26                Desktop
d-r---       2020/07/30     17:26                Documents
d-r---       2020/07/30     17:26                Downloads
d-r---       2020/07/30     17:26                Favorites
d-r---       2020/07/30     17:26                Links
d-r---       2020/07/30     17:26                Music
d-r---       2020/07/30     17:26                Pictures
d-r---       2020/07/30     17:26                Saved Games
d-r---       2020/07/30     17:26                SearchesPS
C:\Users\Administrator> dir | Select-String "Links"
Links

 これはOK。つぎは

PS C:\Users\Administrator> dir | Select-String "es"
Desktop
Favorites
Pictures
Saved Games
Searches

と、検索文字が含まれると複数マッチすることもわかった。
日本語の場合は?

PS C:\Users\Administrator\Desktop> dir
    ディレクトリ: C:\Users\Administrator\Desktop
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2020/05/22      9:46                sakura-tag-v2.4.0-bui
d-----       2020/05/22     11:54                共有フォルダ
-a----       2020/05/22     15:59         179676 ASP.NET4.6.PNG
-a----       2020/05/22      9:47           1008 サクラエディタ.lnk

PS C:\Users\Administrator\Desktop> dir | Select-String "サクラ"
PS C:\Users\Administrator\Desktop>


日本語だとNGになった。「powershell dir select-string」でググると、

【連載】PowerShell Core入門 - 基本コマンドの使い方 [8] 文字列の一致検索 Select-String、Out-String|サーバ/ストレージ|IT製品の事例・解説記事

Out-Stringというコマンドレットに-Streamというオプションを指定すると、表示されているテキストを行単位で処理させることができるようになる。次のように見た目は一緒だが、出力されるテキストがそのままオブジェクトとして扱われるように変わっている。
Out-String -Streamを利用すると出力された文字列を対象とすることができる

という説明があって、このコマンドをdirにパイプでつなげればうまくいきそうな気がした。

PS C:\Users\Administrator\Desktop> dir | Out-String -Stream | Select-String "サクラ"
-a----       2020/05/22      9:47           1008 サクラエディタ.lnk

うまくいった!これで同じく「Get-WindowsFeature」にもできそう。

PS C:\Users\Administrator\Desktop> Get-WindowsFeature | Out-String -Stream | Select-String "Web-Server"
[X] Web サーバー (IIS)                                      Web-Server                     Installed

いけた!!

*** --- *** --- *** --- ***

同じような質問が解決した後に見つかったので、ついでに投稿しておいたw

PowerShell Select-String matches nothing despite trying everything in TFM - Stack Overflow


2020年10月18日日曜日

microSD 256GBを購入、ディスクチェック記録 その2

 今年のAmazonPrimeでFireHD10とSDカードを購入したので、その記録になります。
前回の記録をなぞりながら書いていきます。

 購入したものはAmazon限定の初耳メーカー「【Amazon.co.jp 限定】SEKC microSDXCカード 256GB A1 UHS-I(U3) V30 Class10対応 4K ULTRA HD対応 最大読出速度100MB/s 2年間保証 SDアダプタ付 SV30A1256」
 3,650円で購入しました。





Windows上で認識されています。































 まずはWindowsでフォーマット









 フォーマットが終わったので、CriystalDiskMarkでチェックします。
細かいことはよくわかりませんが、前より数値はよい感じです。














------------------------------------------------------------------------------
CrystalDiskMark 7.0.0 Shizuku Edition x64 (C) 2007-2019 hiyohiyo
                                  Crystal Dew World: https://crystalmark.info/
------------------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

[Read]
Sequential 1MiB (Q=  8, T= 1):    96.679 MB/s [     92.2 IOPS] < 85907.18 us>
Sequential 1MiB (Q=  1, T= 1):    95.828 MB/s [     91.4 IOPS] < 10937.53 us>
    Random 4KiB (Q= 32, T=16):     9.552 MB/s [   2332.0 IOPS] <112232.20 us>
    Random 4KiB (Q=  1, T= 1):     8.989 MB/s [   2194.6 IOPS] <   455.04 us>

[Write]
Sequential 1MiB (Q=  8, T= 1):    86.202 MB/s [     82.2 IOPS] < 96152.52 us>
Sequential 1MiB (Q=  1, T= 1):    88.925 MB/s [     84.8 IOPS] < 11765.71 us>
    Random 4KiB (Q= 32, T=16):     3.725 MB/s [    909.4 IOPS] <185515.47 us>
    Random 4KiB (Q=  1, T= 1):     3.620 MB/s [    883.8 IOPS] <  1129.85 us>

Profile: Default
   Test: 1 GiB (x5) [Interval: 5 sec] <DefaultAffinity=DISABLED>
   Date: 2020/10/18 12:26:28
     OS: Windows 10 Professional [10.0 Build 18363] (x64)





 ディスク内容の消去
これも前回と同じく、コマンドプロンプトでdiskpartを実行、そのあとの画面で
・list disk
・select disk x
・list partition
・clean
・list disk
を実行していきます。



















 前回と同じく未フォーマット状態になりました。

















 Check Flashでディスクチェック。これも前回と同じ方法で実施します。
・右クリック「管理者として実行」
・「物理デバイスとして」
・「読み書きテスト→最小パターン」
・「フルパス1回」


















 3時間少しして完了しました。
パス #1 が完了しました。 0 個のエラーが検出されました。
テストが完了しました。 合計 0 個のエラーが検出されました。




































 今回も特に大きな支障は無さそうでした。よかった!






2020年9月19日土曜日

CiscoのCMLをインストールした覚書(2020/9/19)

 VIRLの次期バージョン、CML(Cisco Modeling Labs)がリリースされていたことは知っていたのですが、ここ1年近くVIRLにすら触ることがほとんどなく勿体ないことをしていました。

 早速ですが連休ということもあり、時間をかけてインストールしていきたいと思います。

・必要なファイルをダウンロード
 インストール用のデータはCiscoのMyAccountからダウンロードします。VIRLのライセンスが有効であれば、引き続き使用することができます。
 「2.0 License」をクリックすると製品版として使用するためのトークンコードが表示されるので、コピーしておきましょう。



・インストール用ファイルとしてVMware用のovaファイルと、イメージのISOファイルがあります。
 VMware Playerは14以降が対応しています。


・暗号技術の輸出に関する誓約が表示されるので、(多分)民間人は上の「Commercial/Civilian entity」を選択しておけばよいと思います。

・ダウンロードが終わったら、念のためにハッシュを確認しておきましょう

FileName : cml2_p_controller-2.0.0-13.el8.x86_64-93.ova
MD5 Checksum :922937ccbac00ab1d5d237bf6fb2dfe0
SHA512 Checksum :9420dd6f2bce12c984d3d5ca45a1b43cc88ed8a307158a48ef1e45c9f934a8da99b7fe9d84350d17880c6a2f4c72e0d0c52d3f68dc05bf99d9fc9dbe52d38a3a

FileName : refplat_p-20200409-fcs.iso
MD5 Checksum :42db2f82c0a392972262f36deb38acc0
SHA512 Checksum :9ea2992e7c4863404ed7110c937df5851343fa3a26e22dfdd6557daef831e4456ef4b264656f66016179e0359805ee61fe8c48b56a4a8fa56fec91c7ea7efc9c


Windowsのコマンドで、

MD5:「certutil -hashfile ファイル名 MD5
SHA512:「certutil -hashfile ファイル名 SHA512

とするとハッシュ値を確認することができます。

>certutil -hashfile cml2_p_controller-2.0.0-13.el8.x86_64-93.ova MD5
MD5 ハッシュ (対象 cml2_p_controller-2.0.0-13.el8.x86_64-93.ova):
922937ccbac00ab1d5d237bf6fb2dfe0
CertUtil: -hashfile コマンドは正常に完了しました。

>certutil -hashfile cml2_p_controller-2.0.0-13.el8.x86_64-93.ova SHA512
SHA512 ハッシュ (対象 cml2_p_controller-2.0.0-13.el8.x86_64-93.ova):
9420dd6f2bce12c984d3d5ca45a1b43cc88ed8a307158a48ef1e45c9f934a8da99b7fe9d84350d17880c6a2f4c72e0d0c52d3f68dc05bf99d9fc9dbe52d38a3a
CertUtil: -hashfile コマンドは正常に完了しました。

*** --- *** --- *** --- ***

・CML OVAの構築

VMware Workstation Playerの「仮想マシンを開く」

ダウンロードしたファイルを開く


「インポート」


しばらくすると、仮想マシンを読み込むことができました

仮想マシン設定の編集を行います。

メモリ:8GB以上を推奨 (VMwareの推奨最大メモリ、青▲をクリックしました)
CPU:「Intel VT-x/EPT~」にチェック
ハードディスク:16GB以上を推奨
CD:「起動時に接続」にチェック、「ISOイメージ~」で「refplat_p-20200409-fcs.iso」を指定します。
ネットワークアダプタ:ブリッジ接続(環境に応じて変更してください)

編集を終えて「OK」をクリックしたら、「仮想マシンの再生をクリック」します。


「Continue」→「(TAB)Accept EULA」
ここでは「system user」、「admin controller user」のアカウントを作る必要があり、それぞれLinuxシステムユーザ、WebGUIで使用する管理者ユーザの2つとなります。「Continue」を選択すると操作ヘルプが表示されます。

 個人で使用しているので「CML-Personal」を選択します。



  Linuxシステムユーザの名前とパスワードを設定します。
Username: sysadmin(デフォルト)
Password: 任意(8文字以上が必須で、推奨として1文字以上の大文字と数字、記号2文字を組み込む)


 WebUIで使用するユーザの名前とパスワードを設定します。
Username: admin
Password: 任意


 次にIPアドレスの設定になります。個人的にはVIRLのときと同じくStaticで設定しておいた方がよいかと思います。




 最終確認画面で「Confirm」を選択すると、再起動後、ブラウザでアクセスするためのIPアドレスが表示されます。




 この画面が表示されたら、ブラウザでアクセスできるようになります。


 アクセスする際に警告が表示されますが、「詳細」→「~にアクセスする」で開けます。

 唐突なCentOSのログイン画面で少し驚いたw
こちらはシステム周りの設定ページのようです。

 ポート番号を外したIPアドレスでアクセスすると、CMLのログイン画面が表示されます。

 ログイン後、赤い警告として「System Health Issue」が表示されているので、マウスを近づけるとライセンスの適用ができていないことがわかります。「Edit Settings」で進みます。

 インストール直後は試用版になっているので、「Register」から冒頭で控えておいたトークンコードを貼り付けて「Register」します。

 ライセンス状況が、「Authorized」に変わりました。画面右上の「Lab Manager」で元の画面に戻ります。


 とりあえず、ノートラブルでインストールから起動までできました。
ブログにまとめながら進めたので3時間ほどかかりましたが、資料を参照しながらであれば1時間もかからずに終わると思います。
次は「Add Lab」と、VIRL時代のラボのインポートも実施したいと思います。


参考URL

2020年6月18日木曜日

正規表現の否定先読み

 いやー、、今回は(今回も)手こずった…

正規表現の否定先読み。

最初は本を読んでイマイチしっくりこなかったので色んなサイトを見比べて、実際入力してみても説明と結果が合わない。。

で、最終的に腑に落ちた自分の考え方は以下の通り。

文字列、「aaatestccc」の「test」を検索対象として、
検索対象の直前/直後にフィルタしたい文字の有無をチェックするという動作になる。



testより左にある文字列(aaa)を直前(?<)
testより右にある文字列(ccc)を直後(?)

かなり分かりづらいですが、「先読み」「後読み」の区別は、
検索対象文字列をフィルタ文字の先に書くか、後に書くかの違いになります。

(検索対象文字列をフィルタ文字より)先読み
(検索対象文字列をフィルタ文字より)後よみ

これらの文字(aaa/ccc)が
入っていて欲しい場合は「=」(肯定)
不要な場合は「!」(否定)

直前の「aaa」が入っていて欲しい場合→「(?<=aaa)」
直前の「aaa」は不要な場合→「(?
直後の「ccc」が入っていて欲しい場合→「(?=ccc)」
直後の「ccc」は不要な場合→「(?!ccc)」 




例として、タイトルの否定先読みは
検索対象:「test(?!ccc)」
対象文字列:「aaatestccc」「bbbtestcde」「atestc」
とした場合、「testの直後にcccが無い文字列」を意味します。なので、
NG:「aaatestccc」
OK:「bbbtestcde」
OK:「atestc」
となります。

Online regex tester and debugger でチェックしました。




読み取りづらいかもしれませんが、比較した図を載せておきます。







 混乱した理由としては、先読み後読みについて、検索対象文字とフィルタ対象文字の順番がごっちゃになってるサイトが多く、検索対象としても微妙な内容が多かったからです。

否定先読みなのに「(?!ccc)test」としてたり、(順番が逆)
「b(?!aiu)[aeiou]t」としてたり(aiuは除くのだから[ou]にするべきでは)

これだけ情報が錯綜するということは、後から読む人が混乱する原因に多いになりえると思うので、コメントを付けるとか、この記法はあまり使わない方がいいかと思う。。

https://rubular.com/
このチェックサイトもわかりやすかった!

2020年5月10日日曜日

サクラエディタで検索時に前回の検索情報をデフォルトで表示させたい

 ちょいちょい置換を試すときに、検索ダイアログを表示させると、前回検索した内容がリセットされることがあって、そのたびにプルダウンで探して、、というのが地味にストレスでした。。

 これも解消方法がありましたので設定方法を記載します。

「共通設定」→「検索」→「カーソル位置の文字列をデフォルトの検索文字列にする」のチェックをオフにする

これだけです!!

この設定がデフォルトではチェックが入っているので、毎回カーソルがある文字が検索文字としてセットされてしまっているんですね。秀丸もこんな挙動だった気がするので、これが普通なんですかね。。

 ちなみに秀丸の場合は

「その他」→「動作環境」→「検索」→「検索の動作」→「カーソル位置の次の文字から検索を開始」のチェックをオフにする




サクラエディタを英語表記に切り替えたい

サクラエディタは日本で開発されたエディタで、海外でも使われているかは不明なのですが、日本国内で勤務されている外国人の方が、職場で許可されているエディタとして使われているケースもあるかと思います。



各メニューを英語表記に切り替えるには、

「設定」→「共通設定」→「ウィンドウ」→「言語」
を「Japanese」から別の言語に切り替えれば変更できます。

上記を実行する前に、各国言語のdllを用意して、sakura.exeと同じフォルダに格納しておく必要があります。

私は英語に切り替えたかったのですが、公式サイトからdllがうまく探せませんでした。
検索したところ、下記URLから入手できました。

SAKURA Editor - Browse /language2 at SourceForge.net
https://sourceforge.net/projects/sakura-editor/files/language2/

sakura_lang_en_US2-2-0-0.zip 2015-02-22 37.4 kB


以上です!

サクラエディタで検索後の黄色い表示を消したい

サクラエディタで検索すると、検索文字に黄色いマークが付きますよね。

これは探しやすくてとてもわかりやすいのですが、用無し後には邪魔になってしまうんですよね。。
で、イマイチ消し方もよくわからない…ということで消し方です!

・「検索」→「検索マークの切り替え」 もしくは
・Ctrl+F3

このメニュー名から機能がわからないので気づきませんでした。。
「検索マークの解除」とかにしてくれればいいのに…


ということで、はい!消えました!



2020年5月6日水曜日

サクラエディタでUWSCのKBD待ち時間を置換したい

 毎度、タイトルにセンスが無くて何をしたいのか分かりづらいのですが、、

 先ほどUWSCの使用を開始しまして、「超速 Windowsマクロテクニック」という本を読み始めました。

 そこで、メモ帳を起動して「hello world.」という文字を入力するマクロを作成して、そのtest.UWSを編集するところがあります。

ACW(GETID("(無題)8 - sakura 2.2.0.1","TextEditorWindowW166"),276,266,1838,1120,0)
BTN(LEFT,CLICK,346,1485,156)
ACW(GETID("(無題)8 - sakura 2.2.0.1","TextEditorWindowW166"),276,266,1838,1120,0)
BTN(LEFT,CLICK,589,1018,172)
KBD(VK_H,DOWN,1406)
KBD(VK_E,DOWN,94)
KBD(VK_H,UP,0)
KBD(VK_E,UP,109)
KBD(VK_L,CLICK,94)

 このKBDの行末近くにある数値がミリ秒待つ指定になり、これを5(ミリ秒)に変えましょうとあります。
で、これが何十行もあるので手動で書き換えるのは面倒くさい。なので置換で一気に処理できないかと考えました。

 ただ、これを機械的に指定するところでまた悩みました。。
結論から書くと


置換前:「(^KBD\(\D+)(\d+)(\))」
置換後:「${1}5${3}」
となります。

----正規表現の意味----
^ : 行頭
() : グループを意味する。複数ある場合最初の()が1、次の()が2...となる
\( , \): 「(」や「)」を指定するため「\」でエスケープ処理します
\D : 数値以外の文字
+ : 直前の文字(1回以上、最長一致)
\d : 数値
$数値 : 置換後に残したいグループ
--------------------


今回苦しんだのは、2つあって、
(1): ○○を含む行の✕✕を置換したい
(2): 置換後のグループと置換したい数値がバッティング
でした。

(1)は「KBD」を含む行にしないと、関係ない「BTN」などの行も対象になってしまいます。
(2)は「$1」と置換したい「5」という数値が「$15」と認識される
でした。
(1)はグループを分けまくる、(2)は{}で囲むという方法で解決できました。

参考にしたサイト

基本的な正規表現一覧 | murashun.jp
https://murashun.jp/blog/20190215-01.html

正規表現を覚えよう!サクラエディタでの文字列置換(番号指定参照) | キャスレーコンサルティング株式会社
https://www.casleyconsulting.co.jp/blog/engineer/4414/


サクラエディタのヘルプにも記載されてましたね。。ぱっと見で気づかなかった。
後から見て、そういうことかと理解できました。

${n} (鬼) (安全な)番号指定参照
後ろにそのまま続けて数字を書くことができます。

2020年5月4日月曜日

サクラエディタで空行を削除、置換マクロの注意点

コピペした情報をテキストで整形する際に空行を削除したくなるときがあります。





















こういう状態で置換で「\r\n」、「」としても、下のように1行にまとまる、悲しい結果になるのと、毎回検索するのが面倒なのでマクロに登録しようと思います。













マクロを使わずに置換する場合は、
置換前:「^\r\n」
置換後:「」
で大丈夫でした。古いバージョンのサクラエディタだとうまくいかない場合もあるので
その場合は「^[\r\n]+」とすると良いです。

----正規表現の意味----
^ : 行頭
[] : []内で指定した文字のどれか 今回は「\r」「\n」「\r\n」のいずれかを意味します。
\r 、 \n 、 \r\n : OSの違いによる改行コード
+ : 1つ左の文字の1個以上繰り返し

つまり、行頭に\r,\n,\r\nのどれかが1個以上ある場合、それは削除するという動作になります。
--------------------



マクロを使う場合
ファイル名は適当に「replace_blank-del.mac」などとして、

//キーボードマクロのファイル
S_ReplaceAll('^\\r\\n', '', 60); // すべて置換
S_ReDraw(0); // 再描画
と記述します。青字の//以降の部分はコメントなので記述不要です。

記述方法がなかなか理解できず悩みました。。

ヘルプには、
構文
void S_ReplaceAll ( S1 , S2 , i1 )
引数 内容
S1 文字列 置換前の文字列
空文字列 (’’) は受け付けない。
S2 文字列 置換後の文字列
i1 整数数値 置換ダイアログの状態を10進数数値で指定する 
設定値
引数 i1 の設定値は次のとおりです。
それぞれの bit が 0=チェックOFF / 1=チェックON
bit 内容
0 単語単位で探す
1 英大文字と小文字を区別する
2 正規表現
3 見つからないときにメッセージを表示
4 置換ダイアログを自動的に閉じる
5 先頭(末尾)から再検索する
6 クリップボードから貼り付ける
7 0=ファイル全体 / 1=選択範囲
9,8 00=選択文字 / 01=選択始点挿入 / 10=選択終点追加 

とあります。

S1」は検索する文字列で、\をヒットさせるには\\と2つ続ける必要があります。
「S2」は置換後の文字なので''と空にします。
「i1」については、使用する機能をチェックONとして、そのビット数を2進数から10進数に変換した値を指定します。


文章では分かりづらいと思うので図で示すとこんな感じです。



8ビット目の、「選択始点挿入」にチェックをする場合は、256を足すので、60+256=316と記述します。


2020年3月28日土曜日

サクラエディタで対象文字を消さずに置換

 これもタイトルだけだと意味不明かと思いますが、やりたいのはこんなことです。

下図のような電子書籍など、なんでもいいのですがテキストにコピペしたときに改行されない場合があります。


























Contents Title Page Copyright Epigraph Introduction: My Story The Fundamentals Why Tiny Changes Make a Big Difference 1 The Surprising Power of Atomic Habits 2 How Your Habits Shape Your Identity (and Vice Versa) 3 How to Build Better Habits in 4 Simple Steps The 1st Law Make It Obvious 4 The Man Who Didn’t Look Right 5 The Best Way to Start a New Habit 6 Motivation Is Overrated; Environment Often Matters More 7 The Secret to Self-Control The 2nd Law Make It Attractive 8 How to Make a Habit Irresistible 9 The Role of Family and Friends in Shaping Your Habits 10 How to Find and Fix the Causes of Your Bad Habits

これの見出しの数字を改行して整形したい場合、数字を探してクリックしてEnterで改行してと、チマチマした作業が発生します。これを正規表現で実行するには以下のように対応します。

法則的には
[数字のあとに半角スペース]が見出しの数字となっていそうです。

置換前:(\d+ )
置換後:\r\n$1

とします。
()でくくると、グループという概念でひとまとまりになります。
\dは数字を意味します
+は直前(左)の文字を1文字以上が該当
「 」←半角スペース
\r\nはWindowsの場合とりあえず改行として指定してます。
$1というのはグループの1番目を意味します。

実行した結果は以下のとおりです。

Contents Title Page Copyright Epigraph Introduction: My Story The Fundamentals Why Tiny Changes Make a Big Difference
1 The Surprising Power of Atomic Habits
2 How Your Habits Shape Your Identity (and Vice Versa)
3 How to Build Better Habits in
4 Simple Steps The 1st Law Make It Obvious
4 The Man Who Didn’t Look Right
5 The Best Way to Start a New Habit
6 Motivation Is Overrated; Environment Often Matters More
7 The Secret to Self-Control The 2nd Law Make It Attractive
8 How to Make a Habit Irresistible
9 The Role of Family and Friends in Shaping Your Habits
10 How to Find and Fix the Causes of Your Bad Habits

置換というと、対象の文字を違う文字に変換するのですが、()と$を使うと対象文字を残したまま変換することができます!!

ちなみに、加工している対象は「Atomic Habits」、日本語では「ジェームズ・クリアー式 複利で伸びる1つの習慣」という書籍です。

サクラエディタで全角文字を半角文字に変換

日経ソフトウェアの目次をテキストにコピペしたら、なんと英数字が全角という。。
ページ番号は半角数字なので謎過ぎます。

特集1 2大人気言語 Python&JavaScript同時入門
・2大人気言語 Python&JavaScript同時入門
一緒に学べば効率的! 比較するからよくわかる(006p)
特集2 不動産価格 「予測AI」 を作る
・不動産価格 「予測AI」 を作る 買いどきを確実に知りたい! (028p)

 見た目に気持ち悪いので、これらを一括で変換する方法を探しました。

マクロを探すまでもなく、機能が用意されていました。
「変換」→「全角英数→半角英数(A)」
キーボードで操作する場合は
Ctrl+A → Alt+C → A

マクロで実行するには、
zen-han.mac
//キーボードマクロのファイル
S_SelectAll(0); // すべて選択
S_ToHanEi(0); // 全角英数→半角英数
これで保存して登録すればオッケーです!!

・「共通設定」→「マクロ」→[名前], [Id], [File]を設定→設定」→「OK」
・「共通設定」→「ツールバー」→「種別:外部マクロ」→「作成したマクロ」→「→」で登録



2020年1月12日日曜日

おうちで学べるデータベースのきほんのハマったとこ

前提:第3版を読んでいます

p.182
都市の名称の最大値、最小値の部分

mysql> select max (name) from city where countrycode = 'JPN';
ERROR 1630 (42000): FUNCTION world.max does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual

何がエラーか解らなかったけど、、

mysql> select max(name) from city where countrycode='JPN';
+-----------+
| max(name) |
+-----------+
| Zama      |
+-----------+
1 row in set (0.01 sec)

答え:maxとカッコの間に半角空白が入っているとエラーになります。
冊子では明らかにスペースがあるんだけど…。

***** ----- ***** ----- *****

p.192
人口を更新するクエリ
mysql> update city set name = 'Kyoto',population = 1469069 where countrycode='JPN' and district = 'Kyoto' and name = 'Kioto';
Query OK, 0 rows affected (0.00 sec)

p.188のStep1でKyotoに変更しているので、この流れのままだと変更されません。
mysql> update city set name = 'Kyoto',population = 1469069 where countrycode='JPN' and district = 'Kyoto' and name = 'Kyoto';
が正しいです。

***** ----- ***** ----- *****

正誤表
https://www.shoeisha.co.jp/book/detail/9784798135168

MySQL8サーバへ外部から接続


192.168.11.10のPCにMySQL(サーバとクライアント)をインストールして、
「Command Line Client」で接続しているのですが、別のホスト(192.168.11.15)から接続したくなりました。

現状、192.168.11.10から
①OK:「Command Line Client」で「パスワード」
②NG:コマンドプロンプトで「mysql -u root -p」
③NG:コマンドプロンプトで「"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -h 192.168.11.10 -u root -p」
④OK:コマンドプロンプトで「"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u root -p」

という状態で、「mysqlのパスが通っていない」、「localhostしか接続が許可されてない」状態のようです。

■パスを通す
Windows10の場合、コンパネのシステムプロパティから「環境変数」の「Path」に新規に
「C:\Program Files\MySQL\MySQL Server 8.0\bin」を設定すればOKです。
コマンドプロンプトで「mysql --version」と実行してエラーがなければOKです。

■現状確認

mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)

rootはlocalhostからしかアクセスできない(らしい)

■localhost以外からの接続を許可する
mysql>create user 'root'@'192.168.11.%' identified by 'パスワード';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.11.%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

※mysql8.xはググってヒットする内容と設定方法が変わって糞ハマりました。。
「grant all privileges on *.* to user1@"192.168.1.%" identified by 'パスワード' with grant option;」
上記は古いMySQLのコマンドなので、エラーが出ます。

'パスワード'は現状と違うパスワードを入れると、ローカル接続とリモートパスワードが異なるのでこれもハマりポイントでした。。参照したサイトが'root'と記載していた。。

mysql> select user,host from mysql.user;
+------------------+-----------------+
| user             | host            |
+------------------+-----------------+
| root             | %               | ←間違えてrootをパスワードとして追加してしまった
| root             | 192.168.11.0/24 | ←間違えてrootをパスワードとして追加してしまった
| mysql.infoschema | localhost       |
| mysql.session    | localhost       |
| mysql.sys        | localhost       |
| root             | localhost       |
+------------------+-----------------+

その場合、ややこしいのでユーザ設定を削除しましょう。
mysql> drop user 'root'@'192.168.11.0/24';
Query OK, 0 rows affected (0.01 sec)

mysql> drop user 'root'@'%';
Query OK, 0 rows affected (0.01 sec)

これで、やっと接続できるようになりました。
・192.168.11.10からC:\Program Files\MySQL\MySQL Server 8.0\bin>mysql -h 192.168.11.10 -u root -p
・192.168.11.15からは「HeidiSQL」というソフトを使って接続できています

はーーーー、、、、疲れた。。


2020年1月4日土曜日

Office Excel 2016 桁区切りを使うとフォントが変わる

ある計算をして、大きい数値になったときに桁区切りボタンを使うと数値が見やすくなります。

今回の状況、計算結果 : 15678000

ただ、桁区切りボタンをそのセルに適用するとフォントが変わってしまうという現象が起きました。

こちら元の状態(フォントはIPAゴシック)




桁区切りボタンを押した後(フォントはMS Pゴシック)



この汚いフォントになぜ勝手に変わってしまうのか悩みましたが、解決方法が分かりましたので
備忘で記載しておきます。

***** ----- ***** ----- *****

「ホーム」タブ → 「セルのスタイル」をクリック → 「桁区切り」を右クリック → 「変更」をクリック














「フォント」のチェックを外す















これで次回からヘンなフォントにならなくなります。

Excelのバージョン確認(2016)

・ファイルを開いた状態から
 → 「ファイル」→「アカウント」

でバージョンが確認できました。