Structuring the accounts so a ban stops where it lands, and keeping each one alive.把帳戶結構做好,讓封鎖止於它落下之處,並讓每個帳戶活得久。
Who誰Mine — the architecture, and everything after purchase我——架構,以及採購之後的一切Manager — buys the accounts from vendors主管——向供應商採購帳戶Vendor — holds the tracking pixel供應商——持有追蹤像素
In plain terms白話說明
Platforms punish at the level of the container, and they link accounts together through shared fingerprints — the same machine, network or card. So the accounts are layered, and each one is run as a separate identity. The layering decides how much a ban costs; the isolation decides whether it spreads.平台以「容器」為單位處罰,並且會透過共同特徵——同一台機器、同一條網路、同一張卡——把帳戶連起來。所以帳戶要分層,每個也要當成獨立身分來跑。分層決定一次封鎖的代價,隔離決定它會不會擴散。
Known properly as:正式名稱: Two-tier Business Manager separation; browser fingerprinting and anti-detect isolation企業管理平台雙層分離;瀏覽器指紋與防關聯隔離
What I have done我做了什麼
Decided 4 Aug. One group holds the page, domain verification and portfolio and never advertises; a second, under the UK entity, holds the accounts that spend. The vendor keeps the tracking history and shares it in — my call, on the judgement that an established account survives review better than a new one, and I can state the cost: that history leaves with the relationship. Day to day, my manager buys the accounts and everything after that is mine — each in its own AdsPower profile on its own VPN, sessions never crossing.2026-08-04 定案。一組持有專頁、網域驗證與資產組合,永不投放;另一組(英國實體)持有真正花錢的帳戶。追蹤歷史留在供應商手上並共享進來——這是我的判斷:老帳戶比新帳戶更容易通過審查;代價我也說得清楚,關係結束那段歷史就一起走。日常上,主管負責採購,之後全歸我:每個帳戶在自己的 AdsPower 設定檔、走自己的 VPN,工作階段互不交叉。
Two things are open. The durable group still has a single administrator on a personal account registered in Vietnam — if that profile is restricted, common and rarely appealable, the page and the domain verification go with it, and a second admin takes two minutes. And I cannot yet rank which signals actually trigger a correlation ban, so I cannot separate a precaution that works from one that only feels safe.有兩件事未解決。耐久那一組仍然只有一名管理員,掛在一個註冊於越南的個人帳號上——該帳號一旦受限(常見且少有申訴空間),專頁與網域驗證會一起失去,而加第二名管理員只需兩分鐘。另外,我還排不出哪些訊號真正觸發關聯封鎖,因此分不清「有效的防範」與「只是心理安慰」。
Designing what we promise so it survives review — and using one campaign to diagnose the others.設計我們承諾什麼,好讓它通得過審查——並用其中一個活動去診斷其他的。
Who誰Mine — offer structure and copy rules我——優惠結構與文案規範Legal — sign-off, pending法務——待審批Copywriter — one headline rewrite文案——一句標題改寫
In plain terms白話說明
Regulators treat free-money offers and promises of profit as the highest-risk advertising there is. Separately: when an advert is rejected you cannot tell whether they rejected the offer or rejected us. So I built one campaign with nothing in it to reject.監管把「送錢」的優惠與「保證獲利」的說法視為風險最高的廣告。另一件事:廣告被拒時,你分不清他們拒的是優惠、還是拒的是我們。所以我做了一個「沒有東西可拒」的活動。
Known properly as:正式名稱: Inducement and outcome-claim risk; isolating a confounded variable誘因與成果承諾風險;隔離混淆變因
What I have done我做了什麼
Four campaign sets now. Set 3, a free e-book library, carries no bonus, no prize and no deposit requirement — so it goes first on any platform that rejected the others. If it passes, the offer was the problem; if it fails, we are. Set 4, a weekly prize wheel, arrived 10 Aug and deliberately reverses our own standing rule that rewards are earned and never framed as luck.目前四個活動組合。組合三是免費電子書,沒有贈金、沒有獎品、不要求入金——所以凡是拒過其他組合的平台,先測它。過了,問題在優惠;不過,問題在我們。組合四是每週抽獎轉盤,8 月 10 日提出,刻意推翻了我們自己「獎勵是賺來的、絕不包裝成運氣」的既有規則。
A prize draw tied to trading is a games-of-chance question in India, not a marketing one, so it needs legal first. Two numbers in it do not work yet — a $200 gift card listed at 0% probability, and a prize table that adds up to 90%, meaning one spin in ten has no defined outcome.把抽獎綁在交易上,在印度是「博彩」的法律問題,不是行銷問題,必須先過法務。裡面還有兩個數字不成立:一張 200 美元禮品卡標示為 0% 機率;以及一張加總只有 90% 的獎品表——等於每十次轉盤就有一次沒有定義結果。
Briefing the designers, then checking what comes back against the specification.給設計師簡報,再把交回來的東西對規格驗收。
Who誰Mine — brief, spec, QC, acceptance我——簡報、規格、驗收3 designers — artwork3 名設計師——素材製作
In plain terms白話說明
Designers need one document that says exactly what to make. If the same instructions live in three places, the copies drift apart and nobody knows which is current. So each campaign gets one self-contained file — brief and layout together — and everything else links to it instead of repeating it. Then the delivered artwork is checked against the numbers, not against whether it looks nice.設計師需要一份「說清楚要做什麼」的文件。同樣的指示放在三個地方,版本就會各自漂移,最後沒人知道哪份是現行的。所以每個活動只有一份自足的檔案——簡報與版面在一起——其他地方一律鏈接、不轉述。交回來的素材按數字驗收,不是看順不順眼。
Known properly as:正式名稱: Single source of truth; specification-driven acceptance testing唯一權威版本;以規格為準的驗收測試
What I have done我做了什麼
26 assets delivered across the two funded campaigns. My checks caught a notification icon at 94×94 pixels where the platform requires at least 192, two banner adverts carrying no risk warning at all, and a headline reading “Instantly Doubled” — untrue, because the offer is 50%.兩個已撥款活動共交付 26 件素材。我的驗收查出:推播圖標只有 94×94,平台下限是 192;兩張橫幅素材完全沒有風險警示;還有一句標題寫「Instantly Doubled(立即翻倍)」——不實,因為優惠是 50%。
Those are compliance defects, not design nitpicks — and all three were inside artwork that had already been signed off as final.那三項是合規缺陷,不是設計吹毛求疵——而且全都藏在已經簽核為定稿的成品裡。
Making sure we can prove which adverts produced real customers.確保我們能證明哪些廣告帶來了真客戶。
Who誰Mine — spec, event design, verification我——規格、事件設計、驗收Dev team — implementation開發團隊——負責開發
In plain terms白話說明
Two different questions get muddled. “Did this click turn into a signup?” is answered by the ad network. “Where did this customer actually come from?” is answered by our own customer database. They are separate systems and both have to be set up — otherwise the two sets of numbers disagree and nobody knows which to trust.兩個問題常被混為一談。「這次點擊有沒有變成註冊?」由廣告平台回答;「這位客戶到底從哪來?」由我們自己的客戶資料庫回答。兩套系統各自獨立、都必須設好——否則兩邊數字對不上,沒人知道該信哪個。
Known properly as:正式名稱: Server-to-server postback; Conversions API; UTM attribution伺服器對伺服器回傳;轉換 API;UTM 歸因
What I have done我做了什麼
I write the specification and verify the result end to end; the dev team builds it. On Meta, sending the data to our own system is mandatory rather than optional — our adverts exist to benchmark the vendor, and the vendor's own tracking cannot be the scoreboard for that. Our database decides when the two disagree.我寫規格、端到端驗收;開發團隊負責建置。在 Meta 這一側,把數據送回我們自己的系統是強制而非選配——我們的廣告本來就是用來評核供應商的,供應商自己的追蹤不能兼任計分板。兩邊不一致時,以我們的資料庫為準。
The implementation belongs to the dev team, not to me. Still outstanding — they owe me the meaning of each part of their internal tracking tag.建置屬於開發團隊,不在我。未結:他們還欠我內部追蹤標籤各段的確切含義。
Choosing how we pay for traffic, and which number decides whether it worked.決定我們怎麼買流量,以及用哪個數字判斷成效。
Who誰Solo — no one else involved獨自負責——無他人參與
In plain terms白話說明
Three decisions stack here. First the objective — what you tell the platform to go and get, which should be something it can actually see happen. Then the bid model: pay per view, per click, or per signup, chosen against how long it takes someone to become a customer. Ours is long — register, verify identity, deposit, then trade — so the platform rarely sees the finish line and cannot optimise towards it well. Third, and most often skipped: knowing roughly what the winning number costs elsewhere, because a cost per signup means nothing until you know whether the normal figure is three dollars or thirty.這裡疊了三個決定。第一是目標——你叫平台去拿什麼,而那件事必須是它真的看得到的。第二是出價模式:按曝光、按點擊、還是按註冊付費,取決於一個人要多久才變成客戶。我們的流程很長——註冊、身分驗證、入金、然後交易——平台很少看到終點,因此很難朝終點優化。第三個最常被跳過:先知道那個關鍵數字在別處大概值多少,因為「每註冊成本」在你不知道正常值是三美元還是三十美元之前,什麼都不代表。
Known properly as:正式名稱: Campaign objective selection; bid model against funnel length (CPC / CPM / CPA); cost benchmarking活動目標選擇;出價模式與漏斗長度(CPC/CPM/CPA);成本基準
What I have done我做了什麼
Adsterra recommends paying per view for long journeys. I chose per click anyway, judged on cost per registration rather than cost per click, and wrote down in advance what would change my mind: if registrations are thin after the 5–7 day test, re-test on per-view.Adsterra 建議長流程用按曝光付費。我仍選按點擊,但以「每註冊成本」而非「每點擊成本」評判,並預先寫明什麼情況會讓我改變決定:5–7 天測試後若註冊量偏薄,改測按曝光。
The reasoning is sound and the reversal condition is set in advance, but none of it has met real traffic. It is a decision, not a result. The bigger hole is that no benchmark sits behind it: when the first cost per registration arrives, I have nothing to compare it against, so "thin" would be a feeling rather than a measurement.推理成立、反轉條件也預先設好,但全都還沒碰過真實流量。這是一個決定,不是一個結果。更大的洞在後面:背後沒有基準值。第一個「每註冊成本」出來時,我沒有任何東西可以拿來比,所謂「偏薄」就只是感覺,不是量測。
Setting up tests so the answer is actually readable.把測試設計成「結果讀得懂」。
Who誰Solo — no one else involved獨自負責——無他人參與
In plain terms白話說明
If you change two things between two adverts, you learn nothing — you cannot tell which change caused the difference. So only one thing changes at a time. And when circumstances force two to change together, you say so out loud instead of reading the result as though it were clean.兩則廣告之間如果同時改了兩件事,你什麼都學不到——因為分不出是哪一項造成差異。所以一次只改一件事。當客觀限制逼你同時改兩件,就要明說,而不是把結果當乾淨數據來讀。
Known properly as:正式名稱: Single-variable isolation; confounding單一變因隔離;混淆
What I have done我做了什麼
Within each campaign the platform button stays identical across all three headline versions, so it stays a headline test. Where I could not keep it clean — both campaigns now run the same four ad formats, so offer and format vary together — I wrote the compromise down as accepted and switched to attributing results by advert name instead.每個活動內,平台按鈕在三個標題版本間完全相同,這樣它才還是一個「標題測試」。無法保持乾淨的地方——兩個活動現在跑同樣四種格式,優惠與格式一起變動——我把這個折衷白紙黑字寫成「已接受」,並改為按廣告名稱歸因。
Getting unreleased artwork to an outside designer without publishing it.把未發布的素材交給外部設計師,而不等於公開它。
Who誰Solo — the designer is the reader, not a contributor獨自負責——設計師是使用者,不是參與者
In plain terms白話說明
The briefs contain things we cannot show publicly — which regulator we name, unresolved compliance questions, a sponsor's crest. Putting them on a secret web address is not safe, because those addresses leak and the hosting keeps every old version online forever. So the site checks who you are before it shows anything.簡報裡有不能公開的東西——我們寫了哪個監管機構、未解決的合規問題、贊助商的隊徽。放在一條「祕密網址」上並不安全,因為網址會外流,而且託管平台會把每一個舊版本永久留在線上。所以這個站在顯示任何內容之前,先確認你是誰。
Known properly as:正式名稱: Zero-trust access gating零信任存取閘門
What I have done我做了什麼
The Creative Hub runs behind Cloudflare Access, and the policy covers both the main address and every past version of the site — that second part is what most people miss. A script refuses to publish if it finds sensitive wording, and confirms the lock is actually responding before it allows anything through.Creative Hub 部署在 Cloudflare Access 之後,策略同時覆蓋主網址與每一個歷史版本——後者才是多數人會漏掉的部分。另有一支腳本,偵測到敏感字眼就拒絕發布,並會先確認那道鎖真的在運作才放行。
The designer currently gets in with a shared passcode on a policy scoped to me, which spreads the secret. It needs its own policy before anyone else is added.設計師目前用共享密碼進入,而那條策略的範圍是我本人,等於把祕密擴散出去。加入其他人之前,需要一條專屬策略。
The landing pages themselves — built by the dev team, specified and tested by me.落地頁本身——由開發團隊建置,由我定規格與測試。
Who誰Dev team — owns the build開發團隊——負責建置Mine — content, brief, testing, tracking spec我——內容、簡報、測試、追蹤規格
In plain terms白話說明
The page that receives paid traffic is where the offer, the legal wording and the measurement all meet. Someone has to own what it says and what it counts; someone else builds and hosts it. Confusing those two roles is how tracking ends up shipping broken.承接付費流量的那一頁,是優惠、法律用語與量測的交會點。內容說什麼、計算什麼,必須有人負責;建置與託管則由另一個人負責。把這兩個角色混在一起,就是追蹤帶著問題上線的原因。
Known properly as:正式名稱: Landing-page conversion architecture落地頁轉換架構
What I have done我做了什麼
Mine: plan the content, write the designer brief, test the page, and specify and verify the tracking. The dev team's: build the page, connect the customer database, wire up the tracking. The honest constraint on everything above is that nothing is live yet — there are no public web addresses, which blocks both submitting the adverts and measuring them.我的:規劃內容、寫設計簡報、測試頁面、定義並驗收追蹤。開發團隊的:建頁面、接客戶資料庫、接追蹤。對以上一切最誠實的約束是——目前什麼都還沒上線;沒有公開網址,廣告送審與成效量測因此同時被擋住。
Reading the category's live ads before writing a brief, instead of guessing from the rulebook.在動筆寫簡報之前,先讀這個類別正在跑的廣告,而不是照著規則書猜。
Who誰Solo — no one else involved獨自負責——無他人參與
In plain terms白話說明
The platforms publish every advert currently running, searchable by advertiser. That means a rival's live creative is evidence of what actually passed review — worth more than the written policy, which says less than the enforcement does. You read what is running, not what is permitted.平台會把目前在跑的每一則廣告公開、可依廣告主搜尋。也就是說,同業還活著的素材,就是「什麼真的通過了審查」的證據——比書面政策更有用,因為政策寫的比實際執行的少。你要讀的是「在跑什麼」,不是「允許什麼」。
Known properly as:正式名稱: Competitive creative analysis; ad library research競品素材分析;廣告資料庫研究
What I have done我做了什麼
One informal look, after our fourth rejection: rival brokers were running wording far bolder than ours and had not been stopped. That observation is what told me the rejection was about the advertiser and the landing page, not the copy — but it was a glance, not a method. Nothing is written down and nothing is tracked over time.只做過一次非正式查看:第四次被拒之後,我看到同業經紀商用著比我們大膽得多的字眼,卻沒被擋。那個觀察讓我判斷「被拒的是廣告主與落地頁,不是文案」——但那是一瞥,不是方法。沒有任何紀錄,也沒有隨時間追蹤。
This is the duty that would have saved four submissions. Had the category's live ads been read first, the pattern — that policy enforcement here targets the advertiser, not the wording — would have been visible before the first rejection rather than after the fourth.這正是本來可以省下四次送審的職責。如果一開始就先讀這個類別在跑的廣告,那個規律——這裡的政策執行針對的是廣告主而非用字——在第一次被拒之前就看得到,而不是第四次之後。
Knowing which platforms exist for this product, which will take us, and which is worth a test.弄清楚這個產品有哪些平台可用、誰會收我們、以及哪一個值得測。
Who誰Mine — research, the risk list, classification我——研究、風險清單、分類判斷Legal — sign-off, pending法務——待審批
In plain terms白話說明
Regulated financial products are a restricted category: the advertiser must be licensed where it advertises and verified with the platform before anything runs, and platforms judge by what is actually sold — the site, the licence, the business model — not by whether the ad avoids a word. Once the two largest refuse a whole category, the question becomes who else is out there, and those networks differ in cost, traffic and terms.受監管的金融產品屬受限類別:廣告主必須在投放地持牌、並通過平台驗證,任何東西才跑得起來;而且平台看的是「實際賣什麼」——網站、牌照、商業模式——不是廣告有沒有避開某個字。當兩大平台整類拒收,問題就變成「還有誰」,而這些網路在成本、流量與條款上差很多。
Known properly as:正式名稱: Restricted-category advertising and jurisdictional licensing gates (SEBI, RBI/FEMA, ASCI); ad network landscape受限類別廣告與司法轄區牌照門檻(SEBI、RBI/FEMA、ASCI);廣告網路版圖
What I have done我做了什麼
India is gated behind SEBI registration, which we do not have, and neither the UK nor the Vietnam side of the account structure unlocks it. That single fact is why Adsterra leads: it accepts forex and CFD advertising where Meta and Google refuse. It is documented — a Cyprus self-serve network, founded 2013, with its formats and pricing written up. I also maintain the live list of six open compliance issues, and all six block spend.印度卡在 SEBI 註冊,我們沒有;英國或越南實體都解不開。單這一點就決定了由 Adsterra 打頭陣:它接受外匯與差價合約廣告,Meta 和 Google 不接受。它也有文件——塞浦路斯的自助式網路、2013 年成立,格式與計價方式都寫下來了。我同時維護著六項未解決的合規問題清單,六項全部擋著開銷。
Adsterra was chosen because it accepts us, not because it won a comparison — the ranking against other networks has not been done. I applied the same test to a request of my own: I wanted “CFD” dropped from the risk warning and flagged it as a legal question rather than a copy one, because removing the word changes neither the disclosure we owe nor how the platform classifies us.Adsterra 是因為「它收我們」而被選中,不是因為它在比較中勝出——與其他網路的排序至今沒有做。同樣的標準我也用在自己身上:我曾想把「CFD」從風險警示中拿掉,並把它標為法律問題而非文案問題,因為拿掉這個字既不改變我們該做的披露,也不改變平台怎麼分類我們。
Deciding who the product is for, when two audiences want opposite things.在兩群人要求相反時,決定產品到底為誰而做。
Who誰Mine — the definition我——產品定義Manager — general direction主管——大方向
In plain terms白話說明
Two very different people use this. Students are beginners, on a phone in the evening, with no patience for jargon. Partner admins are at a desk, scanning tables of referral numbers. Designing something halfway between them fails both.使用者有兩種,差很遠。學員是新手,晚上用手機,對術語沒有耐性;合作夥伴管理員坐在桌前,掃的是轉介數據表。設計成「折衷」,兩邊都不討好。
Known properly as:正式名稱: Two-sided product with asymmetric information density兩端資訊密度不同的雙邊產品
What I have done我做了什麼
One rule I hold the design to: the partner dashboard may be dense, the student screens may not. It is written as a principle so it survives individual design arguments rather than being re-litigated every time.我為設計立的一條規矩:夥伴後台可以密,學員畫面不可以。寫成原則,才不會每次都重新吵一遍。
Where the free part stops and the paying part starts.免費到哪裡為止,付費從哪裡開始。
Who誰Mine — tiers, gate placement, funnel我——層級、門檻位置、漏斗Manager — feature direction主管——功能方向
In plain terms白話說明
Free courses attract people and show us who is serious. Advanced material from professional analysts unlocks once someone funds an account. The same platform also gives introducing brokers a reason to keep their clients engaged, because they can see their members' progress.免費課程負責吸引人,也讓我們看出誰是認真的。專業分析師的進階內容,在對方入金後解鎖。同一個平台也給了 IB 維繫客戶的理由——他們看得到自己會員的學習進度。
Known properly as:正式名稱: Freemium gating tied to a monetisable event與入金掛鉤的免費增值機制
What I have done我做了什麼
Three tiers — visitor, registered, funded client. The course list arrived on 10 Aug and still needs loading into both the website and the database before launch.三個層級——訪客、已註冊、已入金客戶。課程清單 8 月 10 日到位,上線前仍需匯入網站與資料庫。
Making sure the approved wording is what actually ships.確保上線的,就是核准過的那一版。
Who誰Mine — structure and enforcement我——結構與執行2–3 writers — copy passes2–3 名寫手——文字潤飾Stakeholders — approve the framework持份者——核准框架
In plain terms白話說明
In a regulated business, approved copy is not a preference — it is a compliance record. Keeping it in one controlled document means the website gets checked against that document, rather than someone later reverse-engineering the rules from whatever happened to go live.在受監管的行業,核准文案不是偏好,是合規紀錄。把它放在一份受控文件裡,網站就得對照那份文件檢查——而不是事後從「已經上線的東西」反推規則。
Known properly as:正式名稱: Content model as the governing artefact以內容框架作為管控依據
What I have done我做了什麼
The Context Framework workbook is the authority — site map, access tiers, approved copy and a four-phase rollout. Since the Figma version 1.0 file arrived, the design side has a matching rule: where the built site and Figma disagree, Figma is right.Context Framework 工作簿是權威——站點地圖、存取層級、核准文案、四階段上線。Figma 1.0 版到位後,設計側也有一條對應規則:網站與 Figma 不一致時,以 Figma 為準。
One set of visual rules, so twenty-three pages look like one product.一套視覺規則,讓 23 個頁面看起來像同一個產品。
Who誰Mine — the tokens and the system我——變數與系統本身3 designers — final visual touch3 名設計師——視覺潤飾
In plain terms白話說明
Every colour, spacing and type decision is written down once as a named value, and every page refers to that name. Change it once and it changes everywhere. Without that, twenty-three pages slowly drift into twenty-three slightly different products.每一個顏色、間距與字體決定都只寫一次、給它一個名字,所有頁面引用那個名字。改一次,全站一起改。沒有這層,23 個頁面會慢慢漂成 23 個略有不同的產品。
Known properly as:正式名稱: Design tokens as CSS custom properties以 CSS 自訂屬性承載設計變數
What I have done我做了什麼
The full set — colours, spacing, corner radius, motion timing, an 85-pixel navigation bar. Home, Courses, Webinars and Reports have been rebuilt to the Figma 1.0 artboards in both languages; Community and About have no artboard yet and still carry the older styling. Dark mode was shelved on 10 Aug after it kept breaking — it followed the computer's own setting and left pages unreadable.完整一套——顏色、間距、圓角、動態時間、85 像素導覽列。首頁、課程、講座、報告已按 Figma 1.0 版重建(中英雙語);社群與關於我們尚無設計稿,仍是舊樣式。深色模式在 8 月 10 日暫時擱置——它跟著電腦本身的設定走,一直出問題,讓頁面讀不了。
The named values are still copied into every page instead of held in one shared file. It works today, drifts silently, and gets more expensive with every page added.那些命名好的數值,目前仍複製在每個頁面裡,而不是放在一份共用檔。今天能用,會靜默漂移,每加一頁成本更高。
Making sure people can actually read it — measured, not guessed.確保人真的看得清楚——用量的,不是用猜的。
Who誰Solo — no one else involved獨自負責——無他人參與
In plain terms白話說明
There is a published standard for how much contrast text needs against its background, whether everything can be used without a mouse, and whether animation can be turned off. Being measurable is the point: it settles arguments that taste cannot.有一套公開標準,規定文字與背景之間需要多少對比、能不能完全不用滑鼠操作、動畫能不能關掉。「可量測」正是重點——它能了結品味了結不了的爭論。
Known properly as:正式名稱: WCAG 2.1 AAWCAG 2.1 AA
What I have done我做了什麼
Ultima's lime green fails against white, so it is never used as text on light backgrounds — a darker olive carries it instead. One text colour measured 2.26 to 1 against a 4.5 minimum; I raised it until it passed. Gradient-filled text was removed everywhere, because its contrast cannot be measured reliably.Ultima 的萊姆綠在白底上不合格,所以淺色背景一律不用它做文字,改用較深的橄欖色。有一個文字顏色量出來是 2.26 比 1,標準是 4.5,我一路調到合格為止。漸層填色的文字全部移除,因為它的對比度無法可靠量測。
A specific failing measurement, found, fixed and written down. That is the difference between claiming accessibility and doing it.一個具體不合格的數值,被量出來、修好、記下來。這就是「宣稱做到」與「真的做到」的差別。
Making sure a locked course is actually locked.確保「鎖起來的課程」是真的鎖住。
Who誰Solo — no one else involved獨自負責——無他人參與
In plain terms白話說明
Anything stored inside someone's browser can be edited by that person. So the browser can never be the thing that decides whether you are allowed in — the database has to check, on every single request. What sits in the browser is only a note about what to draw on screen.存在使用者瀏覽器裡的任何東西,使用者都能自己改。所以瀏覽器永遠不能是「決定你能不能進去」的那一方——每一次請求都必須由資料庫檢查。瀏覽器裡放的,只是一張「該畫什麼」的便條。
Known properly as:正式名稱: Bearer tokens versus display state; row-level security存取權杖 vs 顯示狀態;資料列層級權限
What I have done我做了什麼
Two values are stored in the browser and only one of them decides anything. The real one holds the login token; the other is a copy used to draw the screen. Editing that copy logs nobody in, because the database checks the real one every time. It is written down as a trap, because the display copy survived from the prototype era and still looks like the real thing.瀏覽器裡存了兩個值,只有一個真的有決定權。真的那個存登入權杖;另一個只是拿來畫畫面的副本。改那個副本登入不了任何人,因為資料庫每次都檢查真的那個。這件事有特別寫下來,因為那個副本是原型時期留下的,看起來仍然很像正主。
“Never trust the browser” is repeated everywhere and understood far less often. Here it is applied to a live system, with the failure mode written down for whoever touches it next.「永遠不要信任瀏覽器」人人會說,真懂的少。這裡它被落實在一個運行中的系統上,並把失效方式寫給下一個接手的人。
Where the real accounts and course progress actually live.真正的帳戶與學習進度存在哪裡。
Who誰Solo — no one else involved獨自負責——無他人參與
In plain terms白話說明
Rather than run our own servers, we use a managed service that supplies the database, the logins and the permission rules. Changes to the database structure are kept as numbered files, so any copy of the system can be rebuilt by replaying them in order.我們沒有自己養伺服器,而是用一個託管服務,由它提供資料庫、登入與權限規則。資料庫結構的每次變更都存成有編號的檔案,任何一份系統都能按順序重放、重建出來。
Known properly as:正式名稱: Backend-as-a-service with declarative migrations後端即服務+宣告式資料庫遷移
What I have done我做了什麼
Live since 29 July. Signing up creates a real account, not a mock success screen. Four structure changes are versioned in the repository, and the project is keyed to the work email account, deliberately not a personal one.7 月 29 日起上線。註冊會建立真正的帳戶,不是假的成功畫面。四次結構變更都在版本庫裡有紀錄,專案綁定工作電郵帳號,刻意不用個人帳號。
The script that turns the source pages into the twenty-three that ship.把來源頁面變成上線那 23 頁的那支腳本。
Who誰Solo — no one else involved獨自負責——無他人參與
In plain terms白話說明
Parts of every page are identical — the login box, the member menu. Rather than maintain twenty-three copies by hand, one script writes them in. You edit the source, run the script, and never touch what comes out, because the next run would overwrite it anyway.每一頁都有一模一樣的部分——登入框、會員選單。與其手動維護 23 份副本,不如讓一支腳本寫進去。你改來源、跑腳本,絕不去動產出的檔案,因為下次一跑就被覆蓋。
Known properly as:正式名稱: Source-versus-artefact separation in a code generation pipeline程式碼產生管線中的來源/產物分離
What I have done我做了什麼
The generator injects the login layer, builds the partner dashboard from scratch, and copies the fonts and images in so the result can be deployed anywhere as-is. On 10 Aug I added an automatic test pass — nine checks across all twenty-three pages, each one there because something actually broke that way: dead links, scripts reaching for elements that do not exist, Chinese pages linking back to English, one language quietly gaining a card the other does not have.這支產生器會注入登入層、從零生成夥伴後台,並把字型與圖片一起複製進去,讓產物原樣就能部署到任何地方。8 月 10 日我加了一套自動測試——九項檢查、跑遍 23 個頁面,每一項都因為真的出過事才存在:失效連結、腳本去抓不存在的元素、中文頁連回英文頁、其中一種語言悄悄多了一張卡片。
A check that only happens once is worth very little three days before launch — and two of that day's bugs got through precisely by looking fine.只做一次的檢查,在上線前三天價值很低——而且那天有兩個 bug,正是因為「看起來沒問題」才溜過去的。
A legal requirement that reached all the way into the product's name.一條一路影響到產品名稱的法律要求。
Who誰Mine — the execution我——執行Compliance — set the requirement合規——提出要求Company IT — domain purchase and DNS公司 IT——網域購買與 DNS
In plain terms白話說明
Education content sitting on the broker's own website can be read as the broker advertising. Keeping them apart protects the education product from the broker's advertising restrictions — but the separation has to be real, at the web-address level, not just a different page on the same site.教育內容如果放在經紀商自己的網站上,可能被視為經紀商在打廣告。把兩者分開,教育產品才不會繼承經紀商的廣告限制——但這個分隔必須是真的,落在網域層級,不能只是同一個站底下的另一頁。
Known properly as:正式名稱: Separation of regulated and non-regulated brand estates受監管與非監管品牌資產分離
What I have done我做了什麼
The product moved to its own purchased domain and was renamed Ultima Edu Center on 30 July to match. Three things deliberately keep the old name — the code repository, the internal preview address and one reference PDF — because renaming those breaks something real and gains nothing.產品搬到公司購入的獨立網域,並於 7 月 30 日改名為 Ultima Edu Center 以配合。有三樣東西刻意保留舊名——程式碼庫、內部預覽網址、一份參考 PDF——因為改了會弄壞真實的東西,卻沒有任何好處。
The domain and DNS sit with group IT. No domain means no confirmation email, which means members cannot sign in. Launch is targeted for 13 August.網域與 DNS 在集團 IT 手上。沒有網域就沒有確認信,沒有確認信會員就無法登入。上線目標是 8 月 13 日。
Keeping an honest list of what is real and what is only a demo.維持一份誠實清單:哪些是真的,哪些只是示意。
Who誰Solo — no one else involved獨自負責——無他人參與
In plain terms白話說明
A convincing prototype is dangerous precisely because it convinces. People commit budget and dates to behaviour that does not exist yet. So there is a standing list of what genuinely works, what is placeholder data, and what is a button that only shows a message.一個有說服力的原型,危險就在於它真的說服了人。大家會為「還不存在的功能」投入預算與排期。所以有一份常設清單:哪些真的能用、哪些是填充數據、哪些只是按了會跳訊息的按鈕。
Known properly as:正式名稱: Fidelity ledger功能實現狀況對照表
What I have done我做了什麼
Working for real: logging in, registering, the course catalogue, the partner dashboard's search and filters, and both languages. Placeholder: some progress figures. Not built: report downloads, webinar registration, forum posting. Demo logins were added on 10 Aug so the product can be shown without touching real accounts.真的能用:登入、註冊、課程目錄、夥伴後台的搜尋與篩選、以及雙語切換。填充數據:部分進度數字。尚未建:報告下載、講座報名、論壇發文。8 月 10 日加了示範帳號,讓產品可以在不碰真實帳戶的情況下展示。
The platform demos well enough to be mistaken for finished. This list is why nobody has been misled by it — and three days before launch it is what tells us what still has to become true.這個平台的展示效果,好到足以被誤認為已完成。這份清單就是至今沒有人被誤導的原因——而在上線前三天,它也告訴我們還有哪些事必須成真。