ゆう's Blog
grep または

grep コマンドで複数のパターンを検索する際には、-E オプションを使用するか、| をエスケープ(\|)する必要があります。-E オプションを使用すると、grep は拡張正規表現をサポートします。これにより、| をエスケープせずに複数のパターンを検索できます。

sshd -T | grep -i -E 'SyslogFacility|PermitRootLogin|PermitEmptyPasswords|PasswordAuthentication'

「|」の前後のスペースを入れない。

スペースを入れると意図したマッチングが変わる可能性があります。例えば、次のように記述すると:
regexp1 | regexp2

この場合、正規表現は「regexp1」と「regexp2」にスペースがあることを期待します。したがって、スペースを入れると、マッチする条件が変わるため、注意が必要です。

sudo権限を付与

root で。

# visudo

以下の行を追加。username は sudo 権限を付与したいユーザ名。
username ALL=(ALL) ALL

VNC サーバ

server(root)

dnf install tigervnc-server
vi /etc/tigervnc/vncserver.users
systemctl enable --now vncserver@:1.service
dnf --enablerepo=epel,epel-next group install "Xfce" "base-x"
dnf --enablerepo=epel,epel-next install vlgothic-*
dnf groupinstall "Input Methods"
vi /etc/yum.repos.d/google-chrome.repo
dnf install google-chrome-stable
dnf install gedit

server(user(test))

vncpasswd
vi ~/.vnc/config

localhost
nolisten=tcp

local-1

$ ssh -v -C -L 50000:localhost:5901 192.168.1.3 -l test

local-2

$ vncviewer

JavaScriptにおけるグローバル変数

<script>
const globalVar = "変数の値が変更されない";
let globalVar = "変数の値が変更される可能性がある";

let globalVar2;

function myFunction() {
    globalVar2 = "関数内で得られた変数をグローバル変数とする";
}
</script>

※ let、const キーワードを使用して宣言されたグローバル変数は、windowオブジェクトのプロパティとはなりません。

JavaScriptで、変数名を動的に生成したい

直接的にはできないが、オブジェクトのプロパティを使用して同様のことを行うことができる。

let obj = {};
for (let i = 0; i < 10; i++) {
    obj['key' + i] = i;
}

objという名前の空のオブジェクトを作成し、ループ内でkey0からkey9までのプロパティを動的に追加しています。各プロパティの値は、そのキーの末尾の数字と同じです。つまり、key0の値は0、key1の値は1、というようになります。
このオブジェクトのプロパティは、以下のようにアクセスできます:

console.log(obj.key0);  // 0
console.log(obj.key1);  // 1
// ...
console.log(obj.key9);  // 9

または、

console.log(obj['key0']);  // 0
console.log(obj['key1']);  // 1
// ...
console.log(obj['key9']);  // 9

これらの方法を使用すれば、JavaScriptでkey0=0、key1=1、…といった動的な変数を作成することができます。ただし、これらの"変数"は実際にはobjオブジェクトのプロパティであることを覚えておいてください。このため、objオブジェクトを介さないとアクセスできません。

ffmpeg で mp4 をアニメ webp に変換する

ループ無し(デフォルト)
ffmpeg -i input.mp4 output.webp

無限ループ(-loopオプションが必要)
ffmpeg -i input.mp4 -loop 0 output.webp

※ 「-i input.mp4」 : 入力ファイルを指定します。この場合、「input.mp4」という動画ファイルが入力となります。

※ Image Viewer で見るとみんなループしてしまう。
確認は、web ページ上でする。

ffmpeg -i input.mp4 -vf scale=640:-1 output.webp

※ 「-vf scale=640:-1」は幅を640ピクセルに設定し、高さをアスペクト比を保持したまま自動的に設定します。逆に、「-vf scale=-1:640」は高さを640ピクセルに設定し、幅をアスペクト比を保持したまま自動的に設定します。

PHPでImagickを使用して画像をWebPに変換する

<?php
$image = new Imagick('input.jpg'); // 入力画像ファイル
$image->setImageFormat('webp'); // 出力形式をwebpに設定
$image->setImageCompressionQuality(80); // 画像の品質を設定(0-100の範囲、高いほど品質が良い)
$image->writeImage('output.webp'); // 出力ファイル名
?>

PHPでImagickとGDの利用可能性を判別する

if (extension_loaded('imagick')) {
    echo 'Imagickを使用します。';
} elseif (extension_loaded('gd')) {
    echo 'GDを使用します。';
} else {
    echo 'ImagickもGDも利用できません。';
}

.svgファイルで内容が、href="data:image/png;base64,~

これは SVG ではありません。「href="data:image/png;base64,~"」は「データURLスキーム」と呼ばれるもので、画像データを直接HTMLやCSSに埋め込むための形式です。

この形式では、「data:」の後にメディアタイプ(この場合は「image/png」)、次にデータのエンコーディング(この場合は「base64」)、そして実際のエンコードされたデータ(この場合は「~」)が続きます。

したがって、このデータURLはPNG画像を表しています。SVGとは異なり、PNGはラスターグラフィックス形式で、ピクセルデータを直接エンコードします。一方、SVGはベクターグラフィックス形式で、画像を数学的な形状とパスで記述します。

php-fpmを使っている場合、実行ユーザは?

/etc/php-fpm.d/www.conf で設定されているuserとgroup。

例えば、
user = apache
group = apache