投稿者の投稿

メールサーバー: dovecot にdomainのついたユーザアカウントでログインできるようにする

vi 10-auth.conf

auth_username_format = %Ln

テスト用の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

linuxで超大量のファイルを消す

find ./ -name “*.txt” -exec rm -fv {} \;

Hello world!

WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。

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」なり好きに追加できる
                        });
                    });
                }
              });
            }
          });
        });
      }
  });