変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

【HTML】リサイズdiv

単にマウスでサイズを変えられるdivタグのサンプル。※IE不可

resize: both を指定するだけ。

中の文字は white-space: nowrap; で自動改行しないモードがよさげ。

枠線をドラッグするには、 枠線をdivで描画しないとダメっぽい。

と思ったけど、JS使えば枠線ドラッグも可。

※IEやChromeでマウスをキャプチャする仕組みが不明瞭なので広げる時はゆっくり操作。


  • カテゴリー:
  • HTML

[HTML]ボタン

HTMLで【実行】とか【キャンセル】と文字だけのボタンは簡単に作れるけど、

【絵・テキスト】なボタンはAタグでしかできないらしい。

まず

<a href="" class="btn1">ボタン1</a> 
a.btn1{
  display:block;
  text-align:center;
  width:6em;height:1.5em;/*ボタンの大きさ*/
  background:url(絵) no-repeat;/*絵/
  background-color:#00913D;/*ボタンの色*/
  text-decoration:none !important; /*テキストの下線消し*/
}

で作ると

とりあえず出来た

だが、テキストの上下の余白をもっと取ると絵がSVGだったら絵がでかくなって困る。

CSSの仮想クラス:beforeを使って絵だけの設定をできるけど、

<a href="#" class="btn2">ボタン2</a>

を作り

a.btn2 {
  padding: 0.5em;
  margin: 10px 0;
  display: block;
  width: 6em;   height: 1.5em; /* ボタンの大きさ */
  color: #fff !important; /*テキストの下線消し*/
  background: #00913D;
  text-decoration: none;
  font-weight: bold;
  font-size:16px;
  border-radius: 3px;
  text-align:center;
}
a.btn2:before {
  content: ""; /* 外すと絵が出なくなる(謎 */
  display: inline-block;  /* 絵とテキストを横に並べる */
  width: 18px;   height: 18px; /* 絵のサイズ */
 margin: -3px 5px 0 0; /* 主にテキストとの間隔 */
  background: url("絵") no-repeat; /* 絵 */
  background-color:#00913D;
  background-size: contain;
 vertical-align: middle;  /* テキストと縦位置調整 */
}

で、デザインを調整するとできる様だ。

大体満足な出来

絵を後ろに出すなら :after に変えればいい

こんな感じ

しかしCSSの調整が大変過ぎる。

<a href="#" class="btn4"><img src="arrow.svg" class="img4"><span>ボタン4</span></a>
a.btn4{
  background-color:#00913D;
  text-decoration:none !important;
  border-radius: 3px;
}
a .img4{
  margin: 4px 5px 6px 5px; /*ちょっと絵を上に*/
  width: 18px;   height: 18px;
  vertical-align: middle;
}
a span {  vertical-align: middle; }

の方が楽かな

でも、デザインの全般的な見直し・・・とか来ると痛いなぁ


  • カテゴリー:
  • HTML

[Wnidows]PowerShell

色々できる(ハズ

EXEからアイコンを取り出す方法をさがしていたら、PowerShellでもできるらしい。

※Ver6からはSystem.Drawing.Iconが無い様だ。Windows10はVer5だから動くけど。

しかし、文法が ソースっぽさとコマンドラインが混ざってる(メンドクサイ

例えば、PowerShellの窓を開き

元ネタ:https://suzuzusu.hatenablog.com/entry/2016/10/14/043726
###########################################################
# アイコンを抽出して保存
###########################################################
function ExtractionIcon( 
            $Path,      # 抽出する .exe のフルパス
            $OutFile    # 出力する .ico のフルパス
        ){

    # アセンブリロード
    Add-Type -AssemblyName System.Drawing
    Add-Type -AssemblyName System.IO

    $str1 = "ExtractionIcon :Path=`"$Path`", :OutFile=`"$OutFile`""
    $str1
    # アイコンデータ抽出
    $IconData = [System.Drawing.Icon]::ExtractAssociatedIcon( $Path )

    # 出力用ファイルストリーム
    $FS = New-Object System.IO.FileStream( $OutFile, [System.IO.FileMode]::Create )

    # 保存
    $IconData.Save( $fs )
    $fs.Close()

    # オブジェクトの始末
    $fs.Dispose()
    $IconData.Dispose()
}

と貼り付けると、

窓が開いている間だけ使える。(便利

しかし、この関数を呼び出す時はコマンドプロンプトっぽく

> ExtractionIcon "C:\Program Files (x86)\Sarad\DiCE\dice.exe" "a:\aaa\aaa.ico"

と打つ。

関数の中では、関数っぽく呼び出すのだから・・・

コマンドプロンプトから1コマンドづつ打って動作を確かめた後、

関数化する際には

「コマンドっぽい記述は関数っぽく書き直さないといけない。」

のが面倒だな。

後、Windowsでパパっと使う都合上、デスクトップに貼る場合、

Join-Path $env:UserProfile\Desktop "sample.ico"

で済ましたいがOneDriveをインストしてしまうと、アンスコしてもパスが変わってしまうから

Join-Path [System.Environment]::GetFolderPath("Desktop") "sample.ico"

と書かないと動かないPCも出てくる。

更に、コマンドラインのパラメータの区切りは空白文字なのは常識なので

コマンドのパラメータにコマンドを使うと、 どっちのパラメータなのか判らなくなる。

〇 コマンド  (コマンド パラメータ1 パラメータ2)  パラメータ3

× コマンド  コマンド パラメータ1 パラメータ2  パラメータ3

だから、パラメータにコマンドの戻り値を使うなら、PowerShellでは()で括る仕様になっている。

先のEXEからアイコンを取り出すコマンドをコマンドラインから呼び出すには

ExtractionIcon "C:\Program.....\xxx.exe" (Join-Path [System.Environment]::GetFolderPath("Desktop") "sample.ico")

となってしまう。

最後に、今のPowerShellはRestrictedで、スクリプトファイルは実行不可で、

一時的に許可するなら

> pwsh.exe -ExecutionPolicy RemoteSigned xxxx.ps1 

ps1のショートカットの場合も

powershell -ExecutionPolicy RemoteSigned -File ${元の内容}

となる。

ま、当然何でもできるから危なっかしい。

いくらPS1を実行不可にしても気の利いたショートカットを作られたら・・・

結局、MSが作ると、

大抵は使い物にならない

しかし、使い物になる様にバージョンアップすると

危なっかしい。

これは定説だな。



[git]コマンド

多分、こんな感じかな

  1. 参照系
    1. git clone ${リポジトリィ}
      • カレント・ディレクトリィにドコかのリポジトリィをコピる。
    1. git pull
      • リモートリポジトリの最新状態に更新
  2. 更新系
    1. とりあえずクローンする
    2. git checkout ${ブランチ}
      • 新たなブランチで履歴を作る時は、-b ${新しいブランチ} を使う
      • 既存のブランチでも、初回は git fetch ${ブランチ} で情報の取得が必要
    3. git add ${ファイル名}
      • コミット対象ファイルに追加
    4. git rm ${ファイル名}
      • コミット対象ファイルから削除
    5. git mv ${ファイル名}
      • コミット対象ファイル名の変更
    6. git commit -m ${メッセージ}
    7. git push origin ${ブランチ}
  3. 管理
    1. git init
      • カレント・ディレクトリィにリポジトリィを作る。
    2. git branch ${ブランチ}
      • ブランチを作る
      • ブランチを削除する時は -d ${ブランチ}

な感じで使えばいいかな



[Excel]Alt+F11の競合

ExcelでVBAエディタは ALT + F11 で開いていたが、

暫く振りに使ったら無反応だった。

仕様が変わったのかな?思ったら

NVIDEA GeForce Expressの中で「 ALT + F11 」をフックしていたせいだった。

普通は自分の画面上でしか 自分の ショートカットは有効にならないが

ゲームの画面をキャプチャ等をするには、

デスクトップ内で 自分の ショートカット を有効にする方法(ジャーナルだったかん?)を使うしかない。

このため「ゲーム内のオーバーレイ」で登録してある「ショートカット」は全てのアプリの 「ショートカット」 より優先されるのだ。

対処法で一番確実なのは

NVIDEA GeForce Expressで 「ゲーム内のオーバーレイ」 を無効化

もし、Excelの操作をキャプチャで使ってるなら、

  1. 隠れているインジーケータから
  2. NVIDEAを右クリックして
  3. GeForce Expressをクリック
  4. 画面右上の方の歯車のアイコンをクリック
  5. 左側の全般をクリック
  6. 画面中央の「ゲーム内のオーバーレイ」の「設定」ボタンを押下
  7. 「キーボード ショートカットリスト」を下スクロールし
  8. 「ブロードキャストライブ」のとこの「 ALT + F11 」 を探し出し、
  9. クリックしてスペースバーを押して「None」表示に切り替える。
  10. 「戻る」ボタン押下「完了」ボタン押下
  11. 「ゲーム内のオーバーレイ」状態に変わり、ちょっと何をすればいいか困る状態に陥る(かもしれないけど
  12. デスクトップの右上の「X」ボタン押下と、「ゲーム内のオーバーレイ」が解除される。

かな。



[ReadyNAS212]公開キーでログインできない

アカウント管理画面から公開キーをアップロードできるんだけど・・・

公開キーをアップロードしたら「RSYNCのみ」って書いてあった

TeraTermで公開キーを使ってログインしようとすると

一瞬「Rejected」の文字が見え、直ぐにTeraTermが終了してしまう。

原因は、 アカウント管理画面が複数の公開キーを保存できる様な仕組みになっているけど、

command="/frontview/bin/validate-rsync" ssh-rsa AAAA・・・

となっているので、/frontview/bin/validate-rsync というコマンドを実行して即終了している。

※RSYNCのみなんだからこれで正解なんだろう。

しかも、管理画面で作成した ssh_authorized_keys ファイルは書き換えも上書きもできない。

COMMANDの中身のファイルを見ると、rsync形式のコマンドチェックになっているから、

$SSH_ORIGINAL_COMMANDの内容がrsyncコマンドっぽくないのでダメらしい

しかし、TeraTermから $SSH_ORIGINAL_COMMANDを送る方法が見当たらなし。

見つけてもrsyncのコマンドを実行するだけなんで意味は無さそう。

...
# Add Begin.
"")
RC_FILE=/home/`whoami`/.bash_profile  # Need ".bash_profile" file.
exec $SHELL --rcfile $RC_FILE
;;
# Add End.
*)
echo "Rejected"
;;
esac

これで、 キーストアに「command=”/frontview/bin/validate-rsync”」が書かれているけど、インタラクティブな接続もできるようになる。

TeraTermから $SSH_ORIGINAL_COMMANDを送る方法があれば、rsync コマンド+ログインを送ればいいのかもしれない。

rsync --server****** ; exec $SHELL --rcfile /home/'whoami’/.bash_profile

しかし、問題が発生。今まで他のサーバーでやってる様に

※TeraTermで電子鍵を作成する
※TeraTermでパスワード認証でログイン
※TeraTermに公開キーをドロップする
# mv {公開キーファイル名}  .ssh/authorized_keys

とすると公開キーでログインできるが、管理画面で公開キーをアップロードした後では

ドロップすると、先ssh_authorized_keysの「 /frontview/bin/validate-rsync 」が「rejected」してくる!

authorized_keysと ssh_authorized_keys は併用できるから

TeraTerm用とRSYNC用に分けて運用した方がよさそうだ。



[ReadyNAS212]node-v14.17.6 インスト

やはりバージョンがあがっていたので、

# sudo wget https://nodejs.org/dist/v14.17.6/node-v14.17.6.tar.gz
# tar xvzf node-v14.17.6.tar.gz
# cd node-v14.17.6
# export CCFLAGS='-march=armv7-a'
# export CXXFLAGS='-march=armv7-a'
# sudo -E ./configure     ※要python
# date; sudo -E make -j4 ; date;
Fri Sep 17 21:03:47 JST 2021
・・・
Fri Sep 17 23:04:00 JST 2021
-j4でも結構限界に近い

最初は -j8 でやってみたら、盛りすぎてエラったらしい。

virtual memory exhausted: Cannot allocate memory
tools/v8_gypfiles/v8_compiler.target.mk:259: recipe for target '/home/{ユーザ}/node-v14.17.6/out/Release/obj.target/v8_compiler/deps/v8/src/compiler/js-operator.o' failed
make[1]: *** [/home/{ユーザ}/node-v14.17.6/out/Release/obj.target/v8_compiler/deps/v8/src/compiler/js-operator.o] Error 1
make[1]: *** Waiting for unfinished jobs....

では

# date; sudo -E make -j4 ; date;
Fri Sep 17 21:03:47 JST 2021
...
Fri Sep 17 23:04:00 JST 2021


[ReadyNAS212]gcc-11.2.0

バージョンが上がってたので、

# apt-get install build-essential libssl-dev
# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-11.2.0/gcc-11.2.0.tar.gz
# tar xzf gcc-11.2.0.tar.gz
# cd gcc-11.2.0
# ./contrib/download_prerequisites
2021-09-17 00:49:04 URL:http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840/2383840] -> "gmp-6.1.0.tar.bz2" [1]
2021-09-17 00:49:06 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.6.tar.bz2 [1287202/1287202] -> "mpfr-3.1.6.tar.bz2" [1]
2021-09-17 00:49:07 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> "mpc-1.0.3.tar.gz" [1]
2021-09-17 00:49:09 URL:http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291/1658291] -> "isl-0.18.tar.bz2" [1]
gmp-6.1.0.tar.bz2: OK
mpfr-3.1.6.tar.bz2: OK
mpc-1.0.3.tar.gz: OK
isl-0.18.tar.bz2: OK
All prerequisites downloaded successfully.
# mkdir build
# cd build/
# ../configure --enable-languages=c,c++ --prefix=/usr/local/gcc-11.2.0 --disable-bootstrap
# date; make; date
Fri Sep 17 01:17:54 JST 2021
(中略)
Fri Sep 17 04:14:29 JST 2021

NASを再初期化したせいか、/etc/sudoers が無いので、sudoパッケージをインストしてからsudo設定。

# apt-get install sudo
# chmod +w /etc/sudoers
# vi /etc/sudoers
Defaults        secure_path="/usr/l..."
↓
Defaults        secure_path="/usr/local/gcc-11.2.0/bin:/usr/l..."
# chmod -w /etc/sudoers
# sudo vi /etc/ld.so.conf.d/arm-gcc-11.2.0.conf
で以下を追記。
# gcc-11.2.0 configuration
/usr/local/gcc-11.2.0/lib

gccのビルド&インストが終わったら・・・

# sudo ldconfig
/sbin/ldconfig.real: /usr/local/gcc-11.2.0/lib/libstdc++.so.6.0.29-gdb.py is not an ELF file - it has the wrong magic bytes at the start.

/sbin/ldconfig.real: /usr/lib/libreadycloud.so.1 is not a symbolic link

新たな敵が出現した?(かも

# ls -l /usr/lib/libreadycloud.so.1
-rwxr-xr-x 1 root root 86568 Jan  8  2021 /usr/lib/libreadycloud.so.1
  1. 対策1
    • /usr/local/gcc-11.2.0/lib/libstdc++.so.6.0.29-gdb.py を削除する。
      • rm /usr/local/gcc-11.2.0/lib/libstdc++.so.6.0.29-gdb.p
  2. 対策2
    • /usr/lib/libreadycloud.so.1をリンクファイルに変える。
      • rm /usr/lib/libreadycloud.so.1
      • WinSCPで同名のリンクファイル(リンク先:libreadycloud.so.1.0.0)を作成。

これはsudoインスト・プロテクトなのか?

それよりもNAS上のエラーが出ている間、アプリのインストやアンスコが失敗判定になっていたから、

これで正しいんだろう。

ソースがかなりの容量(3GB近く)になっているので圧縮。

# tar cvzf gcc-11.2.0_pack.tar.gz gcc-11.2.0/

make install はソースを展開したディレクトリィに特化してる(ハズな)ので再利用時は注意。

おっと、ユーザをsudoグループに追加するのを忘れていた。

#  gpasswd -a {ユーザ名} sudo


[ReadyNas212]Node.jsインスト再び

前回インストからしばらく経ったので、Node.js本家からVer14をインスト。

curl -fsSL https://deb.nodesource.com/setup_14.x | bash -
apt-get install -y nodejs
Reading package lists... Done
N: Skipping acquire of configured file 'main/binary-armel/Packages' as repository 'https://deb.nodesource.com/node_14.x jessie InRelease' doesn't support architecture 'armel'

## Run `sudo apt-get install -y nodejs` to install Node.js 14.x and npm
## You may also need development tools to build native addons:
     sudo apt-get install gcc g++ make
## To install the Yarn package manager, run:
     curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
     echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
     sudo apt-get update && sudo apt-get install yarn

今回もダメだった。一応 apyでもやってみたが

# sudo apt-get install -y nodejs
# node -v
v0.10.29

安定のVer0でした。ちゃんとお掃除しとこ。

# sudo apt-get remove -y nodejs
NASの状態 By PHPSystemInfo

Node.jsの32Bit版はarmhf (ARM 32-bit hard-float, ARMv7 and up: arm-linux-gnueabihf)対応なのはそのまま。




top