テスト用のSMTPサーバーを作る
SMTPサーバが受信したメールをすべて mailuser に渡す設定
postfix-pcreのインストールapt install postfix-pcre
vi aliases.regexp
/(?!^root$|^mailuser$)^.*$/ mailuser
vi transport
/^.@.$/ local
docker でSqlServer 2022を動かす
docker pull mcr.microsoft.com/mssql/server:2022-latest
docker run -v E:\udemy\docker\sqlserver\data:/var/opt/mssql/data/ -e “ACCEPT_EULA=Y” -e “MSSQL_SA_PASSWORD=vCfr6198” -p 11433:1433 –name sql1 –hostname sql1 -d mcr.microsoft.com/mssql/server:2022-latest
ubuntu KVMのブリッジで仮想マシンを外のネットワークと通信するためのnetplanの設定(NATは使わない)
network:
version: 2
renderer: networkd
ethernets:
enp5s0:
dhcp4: no
bridges:
br0:
dhcp4: no
addresses:
- 10.10.10.88/16
interfaces:
- enp5s0
routes:
- to: default
via: 10.10.10.1
nameservers:
addresses: [10.10.10.1]
parameters:
forward-delay: 0
stp: false
optional: true
history | grep hoge はめんどくさい
mkdir /usr/local/mycommand
cat > /usr/local/mycommand/his <<EOF
#/bin/bash
history | grep \$1
EOF
chmod 755 /usr/local/mycommand/his
echo ‘export PATH=$PATH:/usr/local/mycommand’ >> /etc/profile
UBUNTUでTOMCATを使用する場合で、ファイルを書き込むときの設定
/etc/systemd/system/multi-user.target.wants/tomcat9.service
# Security
User=tomcat
Group=tomcat
PrivateTmp=yes
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
CacheDirectory=tomcat9
CacheDirectoryMode=750
ProtectSystem=strict
ReadWritePaths=/etc/tomcat9/Catalina/
ReadWritePaths=/var/lib/tomcat9/webapps/
ReadWritePaths=/var/log/tomcat9/
ReadWritePaths=/upload_folder/ <- ここに追加
外のフォルダーをマウントするとき
mount -t cifs -o user=hogehoge,password=hogehoge,dir_mode=0777,uid=999,gid=999 //192.168.0.21/out_folder /upload_folder
uid=999はtomcat
CSSメモメモ
1..container では
display: grid;
2.最初は小さい画面から作成する。
その後で大きい画面
@media screen and (min-width: 376px)
376->600くらいの方がいい
3.ブロックのセンタリングは
margin: 0 auto;
4.サイズ指定は%で指定する
width: 31.2%;
5.画像の高さは横幅で拡縮
height: auto;
6.均等配置は
justify-content: space-between;
7.ハイパーリンクの心得
color: inherit;
text-decoration: none;
8.ul で横並び
display: flex;
list-style-type: none;
justify-content: space-between;
9.grid チップス 繰り返すこともできる
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: repeat(3, 22px);
gap: 5px;
10.子要素の配置 grid バージョン
display: grid;
place-items: center; <-start center | center end などなど
11.子要素の配置 flex バージョン
display: flex;
justify-content: left | center | right; <- どれか
align-items: start | center | end; <- どれか
tinyMCEを使う
tinymce.init({
selector: '#質問内容',
language: 'ja' ,
language_url: 'tinymce_6.8.2/tinymce/js/tinymce/langs/ja.js',
autoresize_min_height: 200,
autoresize_max_height: 10000,
promotion: false,
statusbar: false,
plugins: 'autoresize anchor autolink charmap codesample emoticons image link lists media searchreplace table visualblocks wordcount ',
toolbar: 'undo redo | blocks fontfamily fontsize | bold italic underline strikethrough | link image media table mergetags | align lineheight | tinycomments | checklist numlist bullist indent outdent | emoticons charmap | removeformat',
tinycomments_mode: 'embedded',
mergetags_list: [
{ value: 'First.Name', title: 'First Name' },
{ value: 'Email', title: 'Email' },
],
init_instance_callback: editor => {
editor.on('drop', event => {
const file = event.dataTransfer.files[0];
editor.on('Change', () => {
if (file != undefined && file != null && file.name != '') {
const doc = editor.getDoc();
const imgs = Array.from(doc.images);
// const len = imgs.length;
imgs.forEach(img => {
if (img.src.match(/^blob/) || img.currentSrc.match(/^blob/)) {
fetch(img.src)
.then(response => {
return response.blob();
})
.then(blob => {
const fData = new FormData();
fData.append('image', blob, file.name);
fData.append('action_cmd', 'upload');
fetch(
"質問Detail.do",
{
method: 'POST',
body: fData
}
)
.then(response => {
return response.json();
})
.then(json => {
img.src = json.result; // この「img」オブジェクトが挿入される
タグなので、「class」なり「data-caption」なり好きに追加できる
});
});
}
});
}
});
});
}
});