MW211 EXIT

devlog
VB.net/インデックスによる処理順指定
2025年12月05日
┌───────────┬───────────┬──────────────┐
│         昇順         │         降順         │           任意順           │
├───────────┼───────────┼──────────────┤
│                      │                      │Dim is As Integer() = {     │
│                      │                      │    2,                      │
│                      │                      │    3,                      │
│                      │                      │    1                       │
│                      │                      │}                           │
│Dim i As Integer      │Dim i As Integer      │Dim i As Integer            │
│For i = 1 To 3        │For i = 3 To 1 Step -1│For Each i As Integer in is │
│    MsgBox i          │    MsgBox i          │    MsgBox i                │
│Next i                │Next i                │Next i                      │
└───────────┴───────────┴──────────────┘
分類:VB.net
Docker/docker-compose.yml(2)
2025年12月04日
docker-compose.ymlにおけるbuild:とimage:の関係
┌──────┬───────────────┐
│            │            image:            │
│            ├───────┬───────┤
│            │     なし     │     あり     │
├───┬──┼───────┼───────┤
│      │なし│   (エラー)   │pullする      │
│build:├──┼───────┼───────┤
│      │あり│image名を委任 │image名を任意 │
└───┴──┴───────┴───────┘
分類:Docker
Docker/docker-compose.yml(1)
2025年12月03日
docker-compose.ymlにおける以下の違い
┌─┬───────┬─────┐
│①│environment:  │リスト形式│
│  │  - HOGE=FUGA │          │
├─┼───────┼─────┤
│②│environment:  │マップ形式│
│  │  HOGE: FUGA  │          │
└─┴───────┴─────┘
①がコマンドラインをそのまま移行した形、但し②の方が機能的にはよい
分類:Docker
Linux/echoをsudoで
2025年11月21日
┌──────────────────────────────────────┐
│$ echo 'xyz' > t.txt
│-bash: t.txt: Permission denied
└──────────────────────────────────────┘
上記のように権限がない場合、以下でもダメ
┌──────────────────────────────────────┐
│$ sudo echo 'xyz' > t.txt
│-bash: t.txt: Permission denied
└──────────────────────────────────────┘
こんな時は、teeコマンドを使えばよい(「>」→「| sudo tee」)
┌──────────────────────────────────────┐
│$ sudo echo 'xyz' | sudo tee t.txt
└──────────────────────────────────────┘
分類:Linuxシェル
MSSQL/年月が独立している場合の最大年月(分割)
2025年08月23日
年月に分割するとなった場合、無理くりこんな感じが思い浮かぶ。
┌──────────────────────────────────────┐
│SELECT CONVERT([int],                                                       │
│     LEFT( MAX(FORMAT([年], '0000') + '/' + FORMAT([月], '00')), 4)) AS [年],│
│       CONVERT([int],                                                       │
│    RIGHT(MAX(FORMAT([年], '0000') + '/' + FORMAT([月], '00')), 2)) AS [月] │
│    FROM (                                                                  │
│        VALUES (2024, 12),                                                  │
│               (2025,  1),                                                  │
│               (2025,  2)                                                   │
│    ) AS [表]([年], [月]);                                                  │
│--→年「2025」、月「2」                                                     │
└──────────────────────────────────────┘

しかし、ここまでくるとハナから日付型にしてしまった方がシンプルでわかりやすい。
┌──────────────────────────────────────┐
│SELECT YEAR( MAX(DATEFROMPARTS([年], [月], 1))) AS [年],                    │
│       MONTH(MAX(DATEFROMPARTS([年], [月], 1))) AS [月]                     │
│FROM (                                                                      │
│    VALUES (2024, 12),                                                      │
│           (2025,  1),                                                      │
│           (2025,  2)                                                       │
│) AS T([年], [月]);                                                         │
│--→年「2025」、月「2」                                                     │
└──────────────────────────────────────┘
分類:MSSQL
MSSQL/年月が独立している場合の最大年月
2025年08月22日
それぞれで最大値をとるとおかしなことになる。
┌──────────────────────────────────────┐
│SELECT FORMAT(MAX([年]), '0000') + '/' + FORMAT(MAX([月]), '00')            │
│    FROM (                                                                  │
│        VALUES (2024, 12),                                                  │
│               (2025,  1),                                                  │
│               (2025,  2)                                                   │
│    ) AS [表]([年], [月]);                                                  │
│--→「2025/12」                                                             │
└──────────────────────────────────────┘

でも、結合してから最大値をとれば、案外簡単にうまくいく。
┌──────────────────────────────────────┐
│SELECT MAX(FORMAT([年], '0000') + '/' + FORMAT([月], '00'))                 │
│    FROM (                                                                  │
│        VALUES (2024, 12),                                                  │
│               (2025,  1),                                                  │
│               (2025,  2)                                                   │
│    ) AS [表]([年], [月]);                                                  │
│--→「2025/02」                                                             │
└──────────────────────────────────────┘

もちろん最小値でも同様。
分類:MSSQL
JavaScript/jQuery対応表
2024年06月04日
┌───────────────┬──────────────────────┐
│            jQuery            │                 VanillaJS                  │
├───────────────┼──────────────────────┤
│$('#ID属性')                  │document.getElementById('ID属性')           │
│                              ├──────────────────────┤
│                              │document.querySelector('#ID属性')           │
├───────────────┼──────────────────────┤
│$('.クラス')                  │document.getElementsByClassName('クラス')   │
│                              ├──────────────────────┤
│                              │document.querySelectorAll('.クラス')        │
├───────────────┼──────────────────────┤
│$('タグ')                     │document.getElementsByTagName('タグ')       │
│                              ├──────────────────────┤
│                              │document.querySelectorAll('タグ')           │
├───────────────┼──────────────────────┤
│.parent()                     │.parentNode                                 │
├───────────────┼──────────────────────┤
│.closest(条件)                │.closest(条件)                              │
├───────────────┼──────────────────────┤
│.find(条件)                   │.querySelectorAll(条件)                     │
├───────────────┼──────────────────────┤
│.html()                       │.innerHTML                                  │
├───────────────┼──────────────────────┤
│.html(値)                     │.innerHTML = 値                             │
├───────────────┼──────────────────────┤
│.text()                       │.innerText                                  │
│                              ├──────────────────────┤
│                              │.textContent                                │
├───────────────┼──────────────────────┤
│.text(値)                     │.innerText = 値                             │
│                              ├──────────────────────┤
│                              │.textContent = 値                           │
├───────────────┼──────────────────────┤
│.val()                        │.value                                      │
├───────────────┼──────────────────────┤
│.val(値)                      │.value = 値                                 │
├───────────────┼──────────────────────┤
│.css('スタイル')              │.style.スタイル     ※スタイルはキャメル文字│
├───────────────┼──────────────────────┤
│.css('スタイル','値')         │.style.スタイル = '値'                      │
├───────────────┤                                            │
│.css({'スタイル','値'})       │                    ※スタイルはキャメル文字│
├───────────────┼──────────────────────┤
│.addClass('クラス')           │.classList.add('クラス')                    │
├───────────────┼──────────────────────┤
│.removeClass('クラス')        │.classList.remove('クラス')                 │
├───────────────┼──────────────────────┤
│.toggleClass('クラス')        │.classList.toggle('クラス')                 │
├───────────────┼──────────────────────┤
│.attr('属性')                 │.attr('属性')                               │
├───────────────┼──────────────────────┤
│.attr('属性', '値')           │.attr('属性', '値')                         │
├───────────────┼──────────────────────┤
│.each(function(index, value) {│.forEach(function(value, index) {           │
│});                           │});                                         │
├───────────────┼──────────────────────┤
│.on('click', function(event) {│.addEventListener('click', function(event) {│
│});                           │});                                         │
├─────────┬─────┴──────────────────────┤
│$(function() {    │window.addEventListener('DOMContentLoaded', (event) => {│
│});               │});                                                     │
└─────────┴────────────────────────────┘

分類:JavaScript
JavaScript/多次元連想配列から配列を抽出する方法
2024年04月09日
┌──────────────────────────────────────┐
│Hashes = [                                                                  │
│    {year:2023, month:10, value: 1},                                        │
│    {year:2023, month:11, value: 2},                                        │
│    {year:2023, month:12, value: 3},                                        │
│    {year:2024, month: 1, value:10},                                        │
│    {year:2024, month: 2, value:20},                                        │
│    {year:2024, month: 3, value:30},                                        │
│];                                                                          │
└──────────────────────────────────────┘
上記のようにDBテーブルのような多次元連想配列があり
列「year」が「2024」の行の、列「value」の値を一次元配列に抽出したい場合
以下のように「.filter()」と「.map()」を組み合わせればよい
┌──────────────────────────────────────┐
│console.log(                                                                │
│    (Hashes.filter((o) => o['year'] == '2024')).map((o) => o['value'])      │
│);                                                                          │
│//→一次元配列「10.20.30」                                                  │
└──────────────────────────────────────┘
→「.filter()」はWHERE条件、「.map()」はSELECT文のようなものだ
分類:JavaScript
JavaScript/in_array()
2024年02月22日
配列中に特定の値があるか判定するPHP関数「in_array()」。
┌──────────────────────────────────────┐
│if (in_array(値, 配列)) {                                                   │
│    // 該当あり                                                             │
│}                                                                           │
└──────────────────────────────────────┘

これをJavaScriptで実現できるjQueryの機能が「$.inArray()」。
┌──────────────────────────────────────┐
│if ($.inArray(値, 配列) >= 0) {                                             │
│    // 該当あり                                                             │
│}                                                                           │
└──────────────────────────────────────┘

最近のJavaScriptでは、配列の「indexOf()」メソッドで実現できるようになった。
┌──────────────────────────────────────┐
│if (配列.indexOf(値) !== -1) {                                              │
│    // 該当あり                                                             │
│}                                                                           │
└──────────────────────────────────────┘

なお、ビット反転により-1を0に変換できるチルダ演算子「~」を用いると
以下のようにスマートに記述できる。
┌──────────────────────────────────────┐
│if (~配列.indexOf(値)) {                                                    │
│    // 該当あり                                                             │
│}                                                                           │
└──────────────────────────────────────┘
分類:JavaScript
送信メール(SMTP)Port
2023年11月20日
【送信メール(SMTP)Port】
  ┌────┬────┬────┐
  │        │  TLS   │StartTLS│
  ├────┼────┼────┤
△│Port  25│   ×   │   ×   │元祖(閉鎖されがち)
  ├────┼────┼────┤
△│Port 465│   △   │   ×   │現在は他用途に転用のため非推奨
  ├────┼────┼────┤
○│Port 587│   ○   │   ○   │推奨
  ├────┼────┼────┤
△│Port2525│   ×   │   ×   │非公認(閉鎖されがちなPort25の代用)
  └────┴────┴────┘
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 … 156 次へ