Ghi chú

Blog

Ghi chú về frontend, SEO, AI, phân tích dữ liệu và việc xây dựng sản phẩm thực tế.

37 bài viết

17 tháng 8, 202613 phút đọc

DeepSeek tăng giá — tôi tìm được cùng V4 Flash rẻ hơn cả mức giá cũ

Sáng 17 tháng 8, tôi nhận ra chi phí DeepSeek API tăng lên khoảng năm lần so với bình thường. Sau đó tôi tìm và thử một provider khác chạy đúng checkpoint DeepSeek-V4-Flash-0731 với giá hiện tại thấp hơn khoảng 45% so với mức giá cũ của DeepSeek.

DeepSeekRunwareLLM APIHạ tầng AIMô hình open-weight
13 tháng 8, 202618 phút đọc

Cách tôi chuyển WebP động, GIF và APNG sang H.264 MP4 mà không làm hỏng khung hình hay thời gian

Quy trình sản xuất của tôi tái tạo các khung hình đầy đủ mà người dùng thực sự thấy, giữ nguyên thời gian nguồn, chọn một CFR cho mỗi MP4 cuối, dùng khung chung nhỏ nhất mà không phóng to, mã hóa các đoạn H.264 tương thích, ghép chúng mà không qua lần mã hóa mất dữ liệu thứ hai, rồi xác thực cả tệp lẫn việc phân phối qua HTTP. Trong một lần chạy được đo, 217 WebP động với tổng dung lượng 1.49 GB trở thành một H.264 MP4 78.49 MB.

H.264FFmpegMP4WebP độngGIFAPNGNén videoXử lý phương tiện
13 tháng 8, 202620 phút đọc

Tôi từng cảnh báo cho mọi thứ: biến nhiễu lỗi trình duyệt thành hệ thống giám sát production thực sự hữu ích

Hệ thống báo lỗi frontend ban đầu của tôi coi việc chặn quảng cáo, lỗi GTM, AbortError, Script error mơ hồ và lỗi chunk Next.js thực sự là cùng một mức độ. Sau đó tôi xây lại hệ thống giám sát dựa trên nguồn sở hữu, tác động lên người dùng, chất lượng bằng chứng, tương quan sự kiện và khả năng phục hồi.

Giám sát lỗi trình duyệtKhả năng quan sát frontendLỗi JavaScriptGiám sát productionNext.jsHiệu năng web
13 tháng 8, 202627 phút đọc

Vì sao tab Next.js cũ có thể hỏng sau khi triển khai: HTML lỗi thời, chunk bị thiếu và lệch phiên bản

Sau một lần triển khai, hệ thống giám sát sản xuất của tôi ghi nhận một chunk thuộc chính ứng dụng Next.js không tải được. Nhật ký chứng minh sự cố đã xảy ra, chứ không chứng minh nguyên nhân. Từ trường hợp đó, bài viết phân tích tab mở lâu, HTML lỗi thời, tài nguyên /_next/static bị thiếu, lệch phiên bản, thời gian lưu giữ, deploymentId, thứ tự phát hành, giám sát và phục hồi có kiểm soát.

Next.jsTriển khaiLệch phiên bảnBộ nhớ đệm webĐộ tin cậy giao diệnTài nguyên tĩnh
13 tháng 8, 202616 phút đọc

Một tick đã làm hỏng CFR của tôi: vì sao 5580 không phải 5625 và 3751 không phải 3750

Bộ kiểm tra của tôi liên tục từ chối MP4 16 fps vì một gói có thời lượng 5580 tick thay vì 5625. Sau đó nó phát hiện 3751 tick ở nơi 24 fps phải chính xác là 3750. Hai lỗi này buộc tôi tách riêng thời gian của nguồn, lượng tử hóa CFR, cơ sở thời gian MP4, PTS/DTS, ghép kênh và kiểm tra ở cấp gói.

FFmpegH.264CFRDấu thời gian videoPTS và DTSKiểm tra MP4
13 tháng 8, 202616 phút đọc

Cách tôi giảm một video vận hành từ ~280 MB xuống ~50 MB bằng H.264

Một video thật trong hệ thống vận hành đã giảm từ khoảng 280 MB xuống khoảng 50 MB sau khi tôi xây dựng lại cấu hình H.264 quanh CRF 28, x264 veryslow, giới hạn độ phân giải thuộc lớp 720p, tốc độ khung hình thực sự hữu ích và yêu cầu giải mã vừa phải. Ở giai đoạn trước, chính ví dụ đó đã giảm từ khoảng 350 xuống 238 MB; kiểm tra thư viện cũ cũng cho thấy các tệp H.264 ở mức vài megabit mỗi giây là chuyện phổ biến.

H.264FFmpegx264Nén videoHiệu năng trang mạngTối ưu đa phương tiện
16 tháng 4, 20268 phút đọc

Tôi xây dựng Gitae để chẩn đoán sự cố website sâu hơn việc chỉ báo “up hay down”

Tôi xây dựng Gitae để trả lời một câu hỏi thực tế: website thật sự không truy cập được hay vấn đề chỉ nằm ở phía local? Công cụ kết hợp kiểm tra từ VDS bên ngoài ở Moscow và Helsinki với DNS, HTTPS/TLS, port, routing, IP, hosting và tín hiệu CMS, coi mỗi kết quả là bằng chứng hỗ trợ chứ không phải kết luận tuyệt đối.

GitaeChẩn đoán websiteGiám sát websiteDNSSSLPingTraceroutePortHostingSEO
14 tháng 4, 20266 phút đọc

Vì sao TypeScript hoạt động rất tốt với Codex khi xây phần mềm production

Trong môi trường production, TypeScript mang lại cho Codex thứ mà một prompt hay không thể thay thế: contract kiểm tra được bằng máy, feedback nhanh từ compiler và con đường an toàn hơn cho các refactor lớn.

TypeScriptCodexLập trình với AIGiao phần mềmJavaScriptQuy trình phát triển
6 tháng 4, 20266 phút đọc

Tôi xây dựng Jurfi.com: studio trên trình duyệt cho bản nháp pháp lý có cấu trúc

Tôi xây dựng Jurfi.com để biến biểu mẫu và mẫu tài liệu thành các bản nháp pháp lý có cấu trúc ngay trong trình duyệt, lưu bản nháp cục bộ và giữ việc rà soát như một phần rõ ràng của quy trình, mà không tuyên bố phần mềm có thể thay thế luật sư.

JurfiJurfi.comTài liệu pháp lýLegalTechSaaSSoạn thảo tài liệuCông cụ trình duyệt
5 tháng 4, 20265 phút đọc

Doanh thu SaaS đầu tiên của tôi: một khoản thanh toán thực sự chứng minh điều gì

Khoản thanh toán đầu tiên cho một sản phẩm SaaS do tôi tự xây dựng có giá trị nhỏ, nhưng nó thay đổi chất lượng bằng chứng tôi có. Đây là những gì một giao dịch có thể xác nhận, những gì nó chưa thể chứng minh và vì sao khả năng lặp lại quan trọng hơn bản thân cột mốc.

SaaSDoanh thu đầu tiênNhà phát triển độc lậpXác thực sản phẩmXây dựng sản phẩmHành trình khởi nghiệpTrải nghiệm developer
3 tháng 4, 202610 phút đọc

Cách tôi dùng Codex để review 15 dự án mà vẫn giữ quyền kiểm soát thủ công

Review 15 dự án phần mềm trước đây đồng nghĩa với việc chìm trong các bước kiểm tra lặp lại. Codex giúp tôi rà bug, test, SEO, bản dịch, localization và tính nhất quán nhanh hơn rất nhiều, nhưng tôi luôn coi phát hiện của AI là manh mối chứ không phải kết luận, và mọi thay đổi đều phải được tôi xác minh.

CodexAI codingCode reviewKiểm thử phần mềmDeveloper workflowBản địa hóaTechnical SEONăng suất lập trình viên
2 tháng 4, 20269 phút đọc

Vì sao tôi dùng 3–5% cuối của giới hạn Codex trên ChatGPT Plus cho các tác vụ engineering lớn — Cập nhật: đến mùa hè 2026 cách này không còn hoạt động

Cập nhật: đến mùa hè 2026 workflow này không còn đáng tin cậy với tôi. Bộ đếm 5 giờ biến mất khỏi tài khoản, chỉ còn giới hạn tuần hiển thị và tác vụ dài có thể dừng khi giới hạn tuần cạn.

CodexChatGPT PlusCông cụ AI cho lập trìnhWorkflow lập trình viênKỹ thuật phần mềmMigration TypeScriptCleanup ESLintRefactorgiới hạn sử dụng Codexcập nhật 2026
1 tháng 4, 202612 phút đọc

Tôi đã đăng 10.000 bài SEO bằng AI và cuối cùng website về 0 trang được Google lập chỉ mục

Xuất bản hàng loạt bằng AI ban đầu trông như một đường tắt: Google crawl toàn bộ 10.000 URL bài viết được tạo, nhưng chỉ khoảng 1.000 trang thực sự được index, xuất hiện trên Search và mang lại traffic thật. Sau đó chính các trang này cũng biến mất dần, cho đến khi toàn bộ website về 0 trang được lập chỉ mục. Trải nghiệm này thay đổi cách tôi nhìn AI, SEO, dịch thuật và trách nhiệm biên tập.

SEO với AIAI tạo sinhGoogle SearchNội dung quy mô lớnLập chỉ mụcViết với AI hỗ trợSEO đa ngôn ngữ
31 tháng 3, 20268 phút đọc

Năm năm với MacBook M1 8/256GB: Vì sao tôi vẫn chưa thay máy

Tôi mua chiếc MacBook M1 bản cơ bản với 8GB bộ nhớ và SSD 256GB với giá khoảng 1.000 USD, rồi dùng máy khoảng 15 giờ mỗi ngày cho lập trình, xử lý media, viết lách, học tập và các dự án cá nhân. Năm năm sau, tôi thấy rõ giới hạn của nó, nhưng lý do nghĩ đến nâng cấp là vì workload của tôi lớn hơn, không phải vì chiếc máy đã hết hữu dụng.

MacBookAppleM1Apple SiliconPhát triển phần mềmĐánh giá dài hạnĐộ bền phần cứng
30 tháng 3, 20266 phút đọc

Tôi dịch blog sang 20 ngôn ngữ bằng ChatGPT — rồi bắt đầu nhận traffic tìm kiếm từ khắp thế giới

AI đã thay đổi hoàn toàn chi phí của việc xuất bản đa ngôn ngữ với tôi. Từ một blog chỉ có một ngôn ngữ, tôi chuyển sang xuất bản mỗi bài ở tối đa 20 ngôn ngữ và tạo thêm nhiều điểm vào từ tìm kiếm tự nhiên.

Bản địa hóa bằng AISEO đa ngôn ngữChatGPTNext.jsSEO quốc tếBlog
27 tháng 3, 20266 phút đọc

Tôi ra mắt QRViz như một trình tạo QR tĩnh miễn phí — và đặt cược việc phân phối vào SEO

QRViz là một công cụ tạo mã QR tĩnh chạy trong trình duyệt, không phải nền tảng campaign. Tôi ra mắt qrviz.com như một công cụ tạo mã QR miễn phí, không ngân sách quảng cáo, không paid acquisition và không funnel kiếm tiền. Việc được người dùng tìm thấy phụ thuộc hoàn toàn vào SEO, nên phân phối là phần bất định nhất.

Công cụ tạo mã QRQrvizRa mắt sản phẩmSEODự án phụPhát triển webPhát triển sản phẩm
18 tháng 2, 20265 phút đọc

Vì sao tôi thấy kiếm khách hàng khó hơn xây một SaaS

Bài học trực tiếp từ trải nghiệm xây SaaS của tôi: engineering cho feedback rõ và kiểm tra được, còn phân phối, positioning, messaging và retention cần một vòng lặp khác, khó dự đoán hơn nhiều.

Tăng trưởng SaaSThu hút khách hàngMarketing sản phẩmBootstrappingXây dựng công khaiPhân phối
17 tháng 2, 20266 phút đọc

Tôi tự xây một sản phẩm SaaS. Khi bật thanh toán, công việc đã thay đổi

Tôi xây sản phẩm này một mình vào buổi tối, cuối tuần và ngày nghỉ. Khi thanh toán được bật, bug, onboarding, moderation, retention và niềm tin không còn là việc để sau mà trở thành một phần của việc vận hành sản phẩm thật.

SaaSPhát triển soloRa mắt sản phẩmPaymentsReliabilityVận hành sản phẩm
22 tháng 1, 20264 phút đọc

I Got 550 Views from One Image, Voiceover, and Subtitles: What Three Shorts Tests Actually Taught Me

A simple YouTube Short built from one static image, a voiceover, and subtitles reached 550 views. After three early tests, the useful lesson was not a proven formula, but a repeatable way to experiment without confusing a promising signal with proof.

YouTube ShortsContent ExperimentsShort-form VideoVideo EditingCapCutCreator Workflow
20 tháng 1, 20266 phút đọc

Tôi thấy gần 6.000 đơn ứng tuyển cho một vị trí Frontend ở Moscow. Con số đó nói gì — và không nói gì — về thị trường IT Nga

Cuối 2023, recruiter nói với tôi rằng 300–500 hồ sơ cho một vị trí đã là rất nhiều. Đến ngày 20 tháng 1 năm 2026, tôi thấy một vị trí Frontend cấp trung ở Moscow tiến sát 6.000 đơn chỉ trong vài giờ. Đây là cách tôi phân biệt tín hiệu thật sự của con số đó với những điều nó không thể chứng minh.

Sự nghiệpThị trường việc làm ITFrontendNgaMoscowTuyển dụngTìm việc
1 tháng 1, 20265 phút đọc

DeepSeek đã thay đổi workflow Node.js của tôi thế nào: hơn 4.000 commit trong sáu tháng

Biểu đồ GitHub năm 2025 của tôi đi từ gần như trống sang hơn 4.000 commit trong nửa cuối năm. Bài viết này nói về cách AI coding thay đổi workflow side project Node.js của tôi, nơi nó tiết kiệm thời gian, nơi nó sai và vì sao verification vẫn quan trọng hơn tốc độ sinh code.

Node.jsDeepSeekAI CodingDeveloper ProductivitySide ProjectsSoftware Engineering
30 tháng 12, 20256 phút đọc

My First TikTok at 28: What a Vertical Product Demo Taught Me About Traffic

At 28, I posted my first TikTok and cross-posted the same product demo to Reels and Shorts. The useful lesson was not the view count: it was how much a 9:16 frame changes a desktop interface, and how to measure short-form traffic without confusing reach with acquisition.

TikTokProduct MarketingProduct DemosAnalyticsIndie Dev
16 tháng 11, 20257 phút đọc

Tôi mua một tên miền 25 năm tuổi: URL chết nhận hơn 1.000 request mỗi ngày

Sau khi ra mắt website trên một tên miền được đăng ký lần đầu vào năm 2000, tôi thấy hơn 1.000 request mỗi ngày vào URL cũ và hơn 900 lỗi trong Yandex Webmaster chỉ sau một đêm. Bài viết phân biệt điều tôi thực sự xác nhận được, lý do dùng 410 có chọn lọc và cách tôi sẽ audit một tên miền cũ hiện nay.

SEOHTTPDevOpsTên miềnWeb crawling
14 tháng 11, 20257 phút đọc

Yandex đã lập chỉ mục 12.500 trang nhưng lưu lượng từ Nga gần như bằng 0: vấn đề Cloudflare tôi đã bỏ sót

Yandex đã lập chỉ mục 12.500 trang, nhưng lưu lượng từ Nga gần như bằng 0. Tôi khoanh vùng vấn đề xuống đường đi mạng, tắt proxy Cloudflare, chuyển cache, nén và bảo vệ cơ bản sang Nginx trên VDS của mình rồi khôi phục khả năng truy cập.

DevOpsSEONginxCloudflareMạngHạ tầng
27 tháng 10, 20256 phút đọc

Website Next.js tĩnh của tôi nhận hàng nghìn lượt quét lỗ hổng mỗi ngày. Nginx gần như không bận tâm

Log của tôi đầy những probe tìm WordPress, PHP backdoor, .env và .git/config. Trên stack Next.js tĩnh + Nginx, phần lớn chỉ kết thúc bằng miss và 404 có chi phí thấp, trong khi tải CPU không thay đổi lúc tôi quan sát. Đây là điều trải nghiệm đó thực sự nói về bảo mật website tĩnh — và những gì nó không chứng minh.

Bảo mậtNext.jsNginxDevOpsStatic HostingAttack Surface
27 tháng 10, 20255 phút đọc

Yandex mang traffic đến website mới của tôi trong khi Google gần như đứng yên

Trên cùng một dự án mới, Google chỉ tạo ra khoảng 300 lượt nhấp trong một giai đoạn dài, còn Yandex Webmaster cho thấy đà tăng rõ rệt, có lúc báo +500% lượt nhấp. Điều quan trọng là phân biệt dữ liệu thực sự chứng minh điều gì và điều gì vẫn chỉ là giả thuyết.

SEOGoogle SearchYandexGoogle Search ConsoleYandex WebmasterTechnical SEO
17 tháng 10, 20257 phút đọc

Yandex lập chỉ mục 4.278 trang Next.js của tôi chỉ sau một đêm — điều đó thực sự chứng minh gì?

Yandex gần như đồng loạt đưa 4.278 trang được tạo tĩnh bằng Next.js của tôi vào chỉ mục. Đây là một cột mốc kỹ thuật thực sự, nhưng không phải bằng chứng về thứ hạng hay lưu lượng truy cập. Bài viết này phân biệt rõ điều mà kết quả đó nói được về SSG và SEO lập trình, và điều nó không thể chứng minh.

SEONext.jsSSGYandexSEO lập trìnhLập chỉ mục
16 tháng 10, 20257 phút đọc

Tháng SEO đầu tiên của tôi: 632 lượt truy cập tự nhiên và một lần kiểm tra traffic bot

Tôi dùng một side project cá nhân để chuẩn bị cho sáng kiến SEO lớn hơn ở công ty. Sau một tháng, dự án có 632 lượt truy cập tự nhiên, nhưng một ngày đạt 83 lượt truy cập cho thấy traffic đáng ngờ và sai lệch khi replay có thể khiến kết quả trông tốt hơn thực tế.

SEOWeb AnalyticsTraffic BotYandex MetricaThử nghiệm SEO
6 tháng 10, 20254 phút đọc

Tôi suýt bỏ qua Yandex Webmaster. Hai tuần sau, nó mang lại nhiều traffic hơn Google

Tôi làm một side project bằng Next.js để thực hành trước một dự án công việc mà SEO sẽ rất quan trọng. Trong hai tuần đầu, tôi ghi nhận 58 khách từ Google và 200 từ Yandex, rồi hiểu rõ vì sao traffic, indexing và diagnostics phải được tách riêng.

SEONext.jsGoogle SearchYandexSearch ConsoleIndexing
5 tháng 10, 20257 phút đọc

Yandex Metrica vs Google Analytics: Vì sao sau một tuần tôi thích Metrica hơn

Tôi chạy Google Analytics và Yandex Metrica song song trong một tuần trên một dự án mới. Metrica được tôi mở nhiều hơn chủ yếu nhờ Webvisor và session replay, nhưng đó là kết luận về workflow của tôi, không phải bằng chứng rằng một nền tảng tốt hơn cho tất cả mọi người.

Web AnalyticsUXSession ReplayYandex MetricaGoogle AnalyticsGA4
3 tháng 10, 20255 phút đọc

Yandex crawl blog của tôi mà bỏ /en. Redirect 308 đã ngăn các URL thành 404

Sau khi thêm khoảng 3.000 trang /en/blog/... vào sitemap, tôi thấy Yandex thử các đường dẫn tương ứng /blog/.... Những redirect 308 đã có sẵn khiến các request đó không kết thúc ở 404. Bài học quan trọng không phải là Yandex “làm hỏng” sitemap, mà là một lớp redirect sạch có thể tăng độ bền cho kiến trúc URL đến mức nào.

SEOYandexSitemapRedirect 308SEO kỹ thuậtCrawling
2 tháng 10, 20256 phút đọc

Hai website mới tăng vọt trên Google rồi traffic giảm khoảng 10× chỉ sau vài ngày

Trong hai lần ra mắt liên tiếp, impressions trên Google tăng mạnh ngay lập tức rồi traffic giảm xuống khoảng một phần mười chỉ sau vài ngày. Mẫu hình là có thật; tôi không thể chứng minh nguyên nhân là “Google honeymoon”.

SEOGoogle SearchSearch ConsoleOrganic trafficTechnical SEO
1 tháng 10, 20255 phút đọc

2.000 trang biến mất khỏi tìm kiếm Yandex chỉ sau một đêm. Đây là điều tôi thực sự có thể kết luận

Trong Yandex Webmaster, tôi thấy 2.000 trên khoảng 8.000 trang không còn tham gia tìm kiếm. Mức giảm 25% rất đáng chú ý, nhưng bài học quan trọng hơn là không đánh đồng thay đổi trạng thái tìm kiếm quan sát được với một nguyên nhân đã được chứng minh.

SEOYandex WebmasterIndexingKhả năng hiển thị tìm kiếmTechnical SEO
11 tháng 7, 20253 phút đọc

Tôi đã đặt hơn 10 câu hỏi tại MoscowJS 66 và giành hai giải thưởng

Tại MoscowJS 66, tôi đã đặt hơn 10 câu hỏi trong các bài nói về bot Telegram, LangChain.js, kiến trúc site builder và kiểm thử kiểu TypeScript. Hai câu được chọn là câu hỏi hay nhất và tôi ra về với hai giải thưởng.

Sự kiệnJavaScriptTypeScriptAILangChain.jsCộng đồngMoscowJS
23 tháng 6, 20257 phút đọc

Những gì tôi mang về từ PiterJS #79: monolith cũ, FrontOps, hiệu năng web và những câu hỏi tốt hơn

PiterJS #79 tại St. Petersburg tập trung vào việc duy trì những hệ thống đã tồn tại: monolith legacy, FrontOps và các chỉ số hiệu năng web. Tôi ra về với ghi chú thực tế, hai giải thưởng từ phần Q&A và một lời nhắc về giá trị của việc thật sự tham gia các meetup trực tiếp.

PiterJSJavaScriptFrontOpsDockerHiệu năng webCộng đồng
17 tháng 6, 20256 phút đọc

I Launched a Next.js Blog in 21 Languages. Here’s What 439 Google Impressions Actually Told Me

In its first week, my 21-language Next.js blog recorded 439 Google impressions and 5 clicks. Later, 436 of 471 pages were indexed. The useful lesson was learning to separate visibility, indexing, and actual search performance.

Next.jsSEOI18nMultilingual SEOGoogle SearchWeb Development
7 tháng 6, 20254 phút đọc

MoscowJS 65 sau sáu năm làm việc với JavaScript: vì sao tôi vẫn đi meetup địa phương

Ngày 5 tháng 6 năm 2025, tôi tham dự MoscowJS 65 tại T Bank. Bốn bài nói tiếp cận AI từ những góc khác nhau, nhưng điều tôi rút ra lại đơn giản hơn: meetup địa phương vẫn mang lại thứ mà tài liệu và video ghi hình không thể thay thế hoàn toàn.

JavaScriptMoscowJSMeetupCộng đồng developerAI