2020年5月10日日曜日

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

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

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

・「検索」→「検索マークの切り替え」 もしくは
・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)

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

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


2019年12月29日日曜日

Anacondaの作業フォルダとプロンプトを変更する(Windows10 64bit)

Anacondaは実行すると作業フォルダは下記がデフォルトになります。

C:\Users\ユーザ名\

これ、不要なフォルダが表示されて作業したい.pyファイルが探しづらいんですよね。。

なので、デフォルトの作業フォルダを変更したいと思います。

旧: C:\Users\ユーザ名\
新: C:\Users\Desktop\Dropbox_xx\Dropbox\JupyterHome\
↑ 「\U」がパスに含まれると失敗する可能性大です!
(別環境で「r'C:~」として動いているのですが、今回の環境ではエラーとなりました)
https://ja.stackoverflow.com/a/11585 も試しましたがダメでした。

新: C:\Dropbox_xx\Dropbox\JupyterHome

スタートメニュー → Anaconda3(64bit) → Anaconda Prompt を起動

プロンプトが起動したら、下記のコマンドを入力

(base) C:\Users\ユーザ名>jupyter notebook --generate-config

Writing default config to: C:\Users\ユーザ名\.jupyter\jupyter_notebook_config.py

ユーザ名の配下に「.jupyter」フォルダができているので、jupyter_notebook_config.pyを
テキストエディタで開く。
「c.NotebookApp.notebook_dir =」を検索して、行頭の#を削除して、’’の間に
作業フォルダを入力する。

c.NotebookApp.notebook_dir = 'C:\Dropbox_xx\Dropbox\JupyterHome'

※これで期待した動作にならない場合は、Jupyter Notebookプロパティを開いて、リンク先の
%USERPROFILE%
を削除すると動作するとの情報もありました。

3時間近くハマってしまった…。

今回の環境 conda info
platform : win-64
user-agent : conda/4.7.12 requests/2.22.0 CPython/3.7.4 Windows/10 Windows/10.0.17134

2019年11月28日木曜日

python3 Webサーバ実行時の文字化け

「実践力を身につける Pythonの教科書」というPythonプログラミングで学習中です。

この本のP.224 HTMLフォームをブラウザで表示したら文字化けしてしまった。
ソースはこれ↓
<meta charset="UTF-8">
<form>
  <input type="text" name="body" value="">
  <input type="hidden" name="mode" value="read">
  <input type="submit" value="発言">
</form>
このファイルはUTF-8で保存しているのだけど、Google Chromeではshift-jisで表示されたため
文字化けしていることがわかった。

※現在のchromeではエンコードを手動で変更できなくなってしまったので
下記の拡張機能を使うと変更できるようになる。
テキストエンコーディング - Chrome ウェブストア

これを使ってshift-jisに変更すると、たしかに表示されるようになった。
でも、元々UTF-8で保存したのがなぜshift-jisになったのかというと、
インストールしているPythonがshift-jisで出力する設定になっているらしい。

>>> import sys
>>> print(sys.stdout.encoding)
cp932
>>> 
***** ----- ***** ----- *****

この本はAmazonレビューの通り読みやすく理解しやすいのでおすすめだと思います。






2019年10月29日火曜日

show runにvlanが表示されない

(1)VLAN情報が表示されない

Switch#show run

vlan 825-826
!
vlan 827
 name test

いつもは表示される、こんなVLAN設定が表示されない
 →vtp設定が「server」、「client」モードになっているかも

■確認コマンド
Switch#show vtp status
VTP Operating Mode                : Server
-------------------------------------------------

■トランスペアレントモードに設定する
Switch(config)#vtp mode transparent
Setting device to VTP Transparent mode for VLANS.


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


(2)インタフェース設定にVLANが表示されない

Switch#show run

interface GigabitEthernet0/1
 switchport trunk encapsulation dot1q
 switchport mode trunk
 media-type rj45
 negotiation auto

通信を許可するvlanが表示されない

■確認コマンド
Switch#show int trunk

Port        Mode             Encapsulation  Status        Native vlan
Gi0/1       on               802.1q         trunking      1

Port        Vlans allowed on trunk
Gi0/1       1-4094

Port        Vlans allowed and active in management domain
Gi0/1       1,825-827

Port        Vlans in spanning tree forwarding state and not pruned
Gi0/1       1,825-827

トランクポートとしてvlan1-4094を通す設定にしているから表示されなかった。
通したいvlanのみ明確に指定する必要がありました。

■Switch(config-if)#switchport trunk allowed vlan 825,826

Switch(config-if)#do sh run int gi0/1
interface GigabitEthernet0/1
 switchport trunk allowed vlan 825,826 ←表示されるようになった


2019年9月28日土曜日

tp-linkルータを買った(AC2600)

 4年ほど前の2015年にNECのAterm WG1200Sというブロードバンドルータを使っていたのですが、WiFiに接続できるMACアドレス制限機能が20台までと少なく、他にも色々不便を感じていたこともあったので、買い替えの検討をしました。

買ったのは費用的なところからAC2600(\7,590-)という製品にしました。AC5400とか、Wi-Fi6に対応している機器は2~3万するので見送りました…。

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

■セットアップ
スマホにアプリを入れて出来るらしいのですが、こちらは見送り。
セットアップ側のPCは有線LANが無いのでWi-Fiで本体にアクセスすることになります。

IP:192.168.0.1
SSID名とパスワードは本体の底面に記載されています。パスワードが数字のみなので
これは後で変更が必要ですね。

取り急ぎISPに接続出来るようにしてから速度がどれくらい変わったのか測定しましたが、驚きの結果でした。

■Google
ダウンロード 77.1Mbps → 213.6Mbps
アップロード 55.2Mbps → 212.8Mbps

Fast.com
ダウンロード 77Mbps → 370Mbps
アップロード 79Mbps → 470Mbps

ブロードバンドスピードテスト
ダウンロード 80.00Mbps → 215.63Mbps
アップロード 72.24Mbps → 171.21Mbps

いずれも3倍近い速さとなっています!!

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

自宅のNWは192.168.11.0/24で構成しているので、変更が必要になりますが、順番としては
・LAN側アドレスの変更
・DHCPの変更
・DHCP固定IP
という順番にしないとエラーとなり設定できません。
…のはずが、192.168.11.1に変更してから再起動をするとDHCPの付与範囲も自動で変更されていました。これはすごく便利!!


LANのIPアドレスを変更してから再起動すると…



















自動でDNSも変更してくれています。便利。

システムログも見れるし、Atermでの不満を一掃してくれる予感がします。
次回はWi-Fiアクセス制限、DHCP固定割り当て、ポートマッピングの設定をしたいと思います。