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