2026年10月8日 星期四

回應

 若是真的要討論 我的觀察,戰場要整個看 最新興起的是短程精確地對地武器 非瞄準線直射的間接射擊 一個是無人機,另一個是光纖導引飛彈 中國的紅劍十這類 不論你什麼坦克都無解,絕對是大患 但,這類武器怕炮襲 不過炮襲沒有精確位置,只能少量減少壓制 要反制這類,你只有同類武器還是光纖導引飛彈,才能尋找擊殺 所以沒有這兩樣,你的戰車都形同虛設 ------------------- 先不論戰車排的戰術 也不論戰車發展史告訴我們什麼最重要 你得先解決這兩個其中之一 在守勢你戰車才有機會 而且這兩個都必須壓過敵方 才有未來 榴彈炮也是陸軍最大問題 若823小型碉堡炮可以持續發揮火力 那何須太依賴 M108 這兩個是絕對優先於600量!反正在地面非山區,天氣好,都是被看不到的光纖飛彈擊殺 問題極度嚴重 但因爲有反艦飛彈,空軍,防空飛彈擋着 讓陸軍繼續擺爛

2026年10月1日 星期四

專案

ob.recordChangedPath(del) 完善

 state.recordChangedPath 完善(不用 delete)不參與資料庫

isDataChanged 測試

 array.sort 機制再檢查

state 再次確認,測試

form 的再確認,事件綁定

view.include 的事件綁定順序 

------------------------------------- 

b-data: $track(), $bind(), class DataBinding

 listener 再確認 

CompositeModel 再次確認

view 再確認

---------- 

form 改變

不再使用 listener

改用 isDataChanged 

------------------------------------- 

errorMsg 釐清

validate

2026年6月4日 星期四

rust 交換兩個 String 變量的值

fn swap_strings(a: &mut String, b: &mut String) {
    let temp = std::mem::take(a);
    *a = std::mem::take(b);
    *b = temp;
}

fn main() {
    let mut s1 = String::from("hello");
    let mut s2 = String::from("world");

    swap_strings(&mut s1, &mut s2);

    println!("{s1}");
    println!("{s2}");
}

2026年5月19日 星期二

lazy.nvim

 # 1. 建立存放設定的目錄
New-Item -ItemType Directory -Force -Path $env:LOCALAPPDATA\nvim\lua\plugins

# 2. 下載 lazy.nvim 到標準資料套件庫路徑
git clone https://github.com $env:LOCALAPPDATA\nvim\lazy\lazy.nvim


:checkhealth lazy

 

:Lazy sync 

2026年4月30日 星期四

抓取 dom 標籤的正則

// 抓取所有標籤 

/<!([^]{0,}?)>|<([a-z][^]{0,}?)(?:\s[^]{0,}?|)([\/]?)>|<\/([a-z][^]{0,}?)>/sg

-------------------------------

// 抓取有 attr 的標籤 

// 可以避免 <script> 內容的干擾

// 先試圖抓取有問題的標籤 <script>...</script> 

/<script(|\s.*?)>.*?<\/script>|(?<=<[^/][^\/>\s]+)(\s[^\/>]+)(?=\/?>)/gs; 

 

javascript 正則需要跳脫的字元

 . ^ $ * + ? ( ) [ ] { } | \ /

2026年4月10日 星期五

to do

一般性 bind-prop的測試

 

測試模板的編譯 

然後用 view 跑模板

----------------------

prop 完善 

state ------ objProxy  listener test(找機會再測試)

view.msg(把錯誤資料綁定在 observer 上)

 ---------------------- 

tempale.bracket

(注意 html load 順序)  

view manager

如何匯入不同的 viewModule  

 ---------------------- 

view.bracket  

view.loader

(注意 html load 順序) 

 ---------------------- 

view.watch(用 onCommited 取代)

不要依次用 watch 發射 event

 ----------------------

form 的修改,

大多採用舊的簡易 prototype 避免麻煩 

尤其是id 設置方式

(根據主要資料 id, attr-name)混合

沒有 id ,或撞 id 則不用 cache 

form.focus 

記錄 foucusin,然後 form 設置在 callback_onCommited 

 ----------------------

form 測試 

 ----------------------

template static 

 template angularJs

 ---------------------- 

view.template.setting 完善

template.server 的設定最晚弄

 

view.loading 測試 

model.init

model.store ??? 

測試 workerMnanger 正不正確 

 ---------------------- 

測試 view compile by server (用 iframe 比較簡單)

 

2026年3月26日 星期四

要注意測試的地方 array.slice()

 array.slice() 會造成 ob 有多個 parent

必須在 [....].set 時候做檢查 data.ob 是否有 parent

若有則返回一個乾淨的 data

array.slice()的結果跟預設不同

內部的 item 指向不同物件 

2026年2月26日 星期四

取代 jsx

https://github.com/developit/htm 

 

取代 jsx

 

使用 htm (最推薦的字串替代方案)

如果你覺得 React.createElement 太難讀,開發者常用的方案是 htm。它利用 ES6 的樣版字串 (Template Literals),讓你能在瀏覽器中直接執行類似 JSX 的語法,完全不需要編譯。

你可以直接透過 CDN 引入,適合快速原型開發:
HTML

<script type="module">
  import { h, render } from 'https://esm.sh/preact';
  import htm from 'https://esm.sh/htm';

  // 初始化 htm
  const html = htm.bind(h);

  function App (props) {
    return html`<h1>Hello ${props.name}!</h1>`;
  }

  render(html`<${App} name="World" />`, document.body);
</script> 

2025年12月25日 星期四

鼻病藥方

114/12/25 

 辛夷散: 4*7,  防風: 1*7,  小青龍湯: 4*7,  魚腥草: 1*7,  白芷: 1*7,  枇杷:1*7,  川貝:??