とりあえず日記

VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ(いまここ🍄)

動的スニペットマクロを7年ぶりに更新&公開しました

秀丸エディタの動的スニペット(ya_hidemaru_snippet)を7年ぶりに更新して、秀丸エディタのマクロライブラリにも公開しました。

動的スニペット(ya_hidemaru_snippet)って何?

emacsyasnippet秀丸エディタ風に解釈したマクロです。

・・・分かりにくいですね・・・・
え~と、100のテキストを効率よく入力するよりも、1の入力で100のテキストを自動生成する考え方ですが、伝わりますかね?

スクリーンショット

とりあえず、どんなマクロなのかスクリーンショットで動作を確認してください。

C#

markdown

cpp_class

cpp_main

cpp_once

hidemaru

ダウンロード

秀丸エディタのマクロライブラリからダウンロードして下さい。
https://hide.maruo.co.jp/lib/macro/ya_hidemaru_snippet-1-1-0.html

導入方法やユーザー定義のスニペットを追加する方法

GitHubに説明を用意しました一読してください。
https://github.com/ohtorii/ya_hidemaru_snippet

その他

スニペットの思想は前回記事(7年前!!)を参照してください。
http://d.hatena.ne.jp/ohtorii/20111014/p1

最後に

長い間、Githubでひっそりと公開していましたが。
このたび、公の場(秀丸マクロライブラリ)に公開してみました。
ご愛用していただけるとうれしいです😺

秀丸エディタからEverythingを使用する秀丸マクロを更新しました。(ctrlp.vimっぽいマクロ)

秀丸エディタからEverythingを使用する秀丸マクロ」を4年ぶりに更新しました。
もし宜しければご利用下さい。

動作イメージ


ダウンロード

秀丸エディタのマクロライブラリからダウンロードして下さい。
https://hide.maruo.co.jp/lib/macro/everything-2-0-3.html

更新内容

VIMのCtrlPプラグインに触発されて作り直しました。
https://github.com/ctrlpvim/ctrlp.vim

そもそもEverythingとは何?

窓の杜の記事」を参照して下さい。
https://forest.watch.impress.co.jp/docs/serial/winbasic2018/1125142.html

今後の予定

ファイルを検索する度にダイアログがポップアップしてうっとうしいので、VIMのようにコマンドから実行できないか模索中です。
何か良い方法があればまたマクロを更新します。

「GNU GLOBAL を秀丸エディタで使用するためのマクロ」を公開しました

GNU GLOBAL を秀丸エディタで使用するためのマクロ」を7年ぶりに更新しました。
もし宜しければご利用下さい。

動作イメージ

gtags_jump.mac(タグジャンプを行う本体マクロ)


gtags_wrapper.mac (タグファイル生成をサポートするおまけマクロ)


ダウンロード

秀丸エディタのマクロライブラリからダウンロードして下さい。
https://hide.maruo.co.jp/lib/macro/gtags_for_hidemaru-1-2-0.html

更新内容

gtagsを生成するダイアログの改良が主です。

  • gtagsのコンバート経過をアウトプット枠に出力するようにしました。
  • タグファイル生成中でも秀丸マクロを実行できるようにしました。
  • ダイアログに”現在のフォルダを設定”するボタンを追加した。
  • ダイアログのタイトルにバージョン番号を追加した。

Explorerの右クリックにFish shellを登録するパワーシェルを書いてみた

はじめに

Windows10でこんなことが出来るようにしてみました、まずは画像を見てください。

エクスプローラーの右クリックから Fish Shell Here を選択する。

選択したフォルダでFish Shellが起動します。

動作環境

前もってFish ShellをUbuntuにインストールしています。

パワーシェルのスクリプトを書いた動機

Explorerの右クリックメニューはWindowsレジストリで編集できます。
最近パワーシェルを使うことが多いので、勉強がてらスクリプトを書いてみました。

スクリプト

register.ps1

#
#Fish shellをExplorerの右クリックメニューに登録する。
#
#(方法)
#Windowsのレジストリを利用する。
#
#(注意)
#レジストリへ書き込むため管理者として実行して下さい。
#


$script:script_path=Split-Path -Parent $MyInvocation.MyCommand.Path

function regist ($root, $item, $icon_filename, $command) {
	#add "...<snip>...\fish_shel"
	New-Item -Force -Path "${root}" -Name $fish

	#set "fish_shell\(default)"
	Set-ItemProperty -Force -Path "${root}\${item}" -Name "(default)" -Value "Fish Shell Here"
	if (Test-Path ${icon_filename}){
		#add "fish_shell\Icon"
		New-ItemProperty -Force -Path "${root}\${item}" -Name Icon -PropertyType String -Value ${icon_filename}
	}else{
		Write-Output "Not found icon file."
	}

	#add "fish_shell\command"
	New-Item -Force -Path "${root}\${item}" -Name command

	#set "fish_shell\command\(default)""
	Set-ItemProperty -Force -Path "${root}\${item}\command" -Name "(default)" -Value $command
}

function main () {
	$fish="fish_shell"
	$icon_filename="${script_path}\image\fish_shell.ico"
	regist "Registry::HKEY_CLASSES_ROOT\directory\BackGround\shell" "${fish}" "${icon_filename}" "bash.exe -c fish"
	regist "Registry::HKEY_CLASSES_ROOT\directory\shell" "${fish}" "${icon_filename}" 'cmd.exe /c cd /d "%1"&&bash.exe -c fish'
}

main
ディレクトリ構成
ー register.ps1
   +ー image
         +ー fish_shell.ico    (optional!!)

fish_shell.ico は無くても大丈夫です、その場合はExplorerの右クリックメニューにアイコンが表示されないだけです。

最後に

今更ですがWindows10とMACのシェルをFish Shellに乗り換えました。
シェルはもうこれでいいんじゃないでしょうか?

DHCP(dnsmasq)のIPリース情報をブラウザで表示する

はじめに

我が家では家庭内DHCPとしてdnsmasqを利用しています。


DHCPでリースされたIPアドレスを確認するには、サーバへSSHでログインし dnsmasq.leases のファイル内容を確認しますが、
毎回サーバへログインするのが面倒になってきました。


そこで、WEBサーバを立ち上げてDHCPのIPリース状況をWEBブラウザから簡単に確認できるようにしました。


先行事例
先行事例をgoogleで簡単に調べましたが特に見つかりませんでした。
探している時間が勿体ないのでさっさと作りました。

方針

  • DHCPのリース情報が書かれている、以下ファイル内容をWEBブラウザから確認できるようにする。
    • /var/lib/dnsmasq/dnsmasq.leases
  • httpサーバはDHCP(dnsmasq)をインストールしているサーバに構築する。
  • 今回は目的が単純なので重装備のapacheは利用せずにpythonのウェブサーバ機能を利用する。
  • 家庭内LANで利用するのでセキュリは後回しにします、まずは最速最短でサーバを構築し運用を開始する。

作成したWEBスクリプト

$vi /var/www-py/cgi-bin/index.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

print('Content-type: text/html; charset=UTF-8\r\n')
print('<H1>%s</H1>\n' % "dnsmasq.leases")

f=open("/var/lib/dnsmasq/dnsmasq.leases", "rt")
try:
  for line in f:
    print(line.strip() + "<br>\n")
finally:
  f.close()
スクリプトを実行できるように権限を付与する
$ ls -l /var/www-py/cgi-bin/index.py
-rwxr-xr-x. 1 root root 121  612 15:13 /var/www-py/cgi-bin/index.py

実行方法

#ファイヤウォールのポートを空ける
#webサーバが起動しているときだけポートを空けたいので --permanent は付けない。
#ファイヤウォールの制御は後述でスクリプトにします。
$firewall-cmd --add-port=8000/tcp --zone=public
$firewall-cmd --reload

#サーバの起動
$cd /var/www-py
$python -m CGIHTTPServer 8000

#ctl-z で終了します。

WEBブラウザで確認する

プライベートな情報は伏せています。(殆ど黒塗りだな・・・)

サービス化する

OS起動時にWEBサーバを自動起動できるようにサービスを作ります。

サービスの設定ファイル

$vi /usr/lib/systemd/system/www-py.service

[Unit]
Description=www-py server.
After=dnsmasq.service firewalld.service

[Service]
Type=simple
ExecStartPre=/var/www-py/service/start StartPre
ExecStart=/var/www-py/service/start Start
ExecStopPost=/var/www-py/service/start StopPost

[Install]
WantedBy=multi-user.target
サービスから呼ぶスクリプトファイル

サービスが起動しているときだけFirewallのポートを空けたいので、firewall-cmdコマンドに --permanent オプションは付けません。

$vi /var/www-py/service/start

#!/bin/bash

if [ "$1" = "StartPre" ] ; then
  firewall-cmd --add-port=8000/tcp --zone=public
elif [ "$1" = "StopPost" ] ; then
  firewall-cmd --remove-port=8000/tcp --zone=public
elif [ "$1" = "Start" ] ; then
  cd /var/www-py/
  python -m CGIHTTPServer 8000
else
  echo "Unknown arg. arg=$1"
fi
ファイルのアクセス権
ls -l  /var/www-py/service/start
-rwxr-xr-x. 1 root root 105 Jun 12 20:36 /var/www-py/service/start
仕上げ
#サービスを起動&停止して
$systemctl start www-py
$systemctl stop www-py

webサーバのプロセスが残っていないか確認します。
$ps -aux | grep python

#サービス起動時にポートが開き、終了時にはポートが閉じているか確認します。
$firewall-cmd --list-ports --zone=public

#問題なければOS起動時にサービスを読み込むようにします。

$systemctl enable www-py

環境

Raspberry Pi3 b

$uname -a
Linux foo-bar.local 4.9.80-v7.1.el7 #1 SMP Thu Mar 15 13:29:03 UTC 2018 armv7l armv7l armv7l GNU/Linux

$ cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core) 

$ python --version
Python 2.7.5

Release for CentOS Linux 7 (1804) on armhfp

今更ですが・・・
Arm版CentOSの開発をされているFabian Arrotin氏が、
5月10日にRaspberry PiCentOSイメージをリリースされてました。


氏がMLに流したメール
[CentOS-announce] Release for CentOS Linux 7 (1804) on armhfp

Raspberry Piのイメージ

http://mirror.centos.org/altarch/7/isos/armhfp/

  • CentOS-Userland-7-armv7hl-RaspberryPI-GNOME-1804-sda.raw.xz
  • CentOS-Userland-7-armv7hl-RaspberryPI-KDE-1804-sda.raw.xz
  • CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1804-sda.raw.x

最後に

手元のRaspberry Piは全て稼働中なので、新しいディスクイメージを試すだけの余剰機材がないです😰
Raspberry Piを新しく買うことがあれば試してみたいです😃

DD for Windowsでフォールト トレラント ヒープのエラーが発生する

DD for Windows(ディスクイメージの読み書きを行うアプリ)でフォールト トレラント ヒープのエラーが発生したので、情報をネットの海に放流しておきます。

エラーメッセージ

[19164] FTH: (19164): *** Fault tolerant heap shim applied to current process. This is usually due to previous crashes. ***


DD for Windowsを起動したタイミングで出力されます。

動作について

フォールト トレラント ヒープのエラーは発生してますがDD for Windowsは問題なく動作しています。
潜在的にメモリ破壊の問題があるのかも?

環境

Windows10 64bit
DD for Windows Ver.0.9.9.8