Conversation
…agement and fintech platforms
…s for consistency
ปรับปรุงการใช้คำในบทความเกี่ยวกับการออกแบบฟังก์ชันใน Go โดยเปลี่ยนคำว่า 'อินพุต' และ 'เอาต์พุต' ให้เป็น 'Input' และ 'Output' เพื่อความสอดคล้องและชัดเจนยิ่งขึ้น
Renamed to "Accept interfaces, return structs" and translated content to English for better accessibility.
Updated the article to reflect a Thai translation and improved explanations of using interfaces as inputs and structs as outputs in Go programming.
- Upgrade Hugo version to 0.145.0 - Update GitHub Actions to latest versions: - actions/checkout@v7 - actions/configure-pages@v6 - actions/upload-pages-artifact@v5 - actions/deploy-pages@v5 - Update LoveIt theme submodule to latest commit
Remove YAML front matter from the about page as it is no longer required for rendering or metadata management.
- Update SEO descriptions for all pages - Remove informal language and emojis for a more professional tone - Add licensing context to database posts
Bilingual (Thai + English) tutorial covering Rust installation, Cargo, variables, data types, functions, control flow, and comments. First article in the 8-part 'Learning Rust' series.
Bilingual tutorial covering Rust's ownership model, move semantics, references, borrowing rules, slices, and lifetimes. Part 2 of the 8-part 'Learning Rust' series.
Bilingual tutorial covering structs, impl methods, enums with data, Option<T>, pattern matching, and Result<T,E> introduction. Part 3 of the 8-part 'Learning Rust' series.
Bilingual tutorial covering Vec, HashMap, String vs &str, iterator adaptors, and error handling with Result and the ? operator. Part 4 of the 8-part 'Learning Rust' series.
Bilingual tutorial covering trait definitions, default implementations, generics, trait bounds, trait objects, and standard library traits. Part 5 of the 8-part 'Learning Rust' series.
Bilingual tutorial covering async/await, Tokio runtime, task spawning, channels, async I/O, tokio::select!, and graceful shutdown. Part 6 of the 8-part 'Learning Rust' series.
Bilingual tutorial building the actual rs-wsProxy project — Cargo.toml dependencies, clap CLI args, AppState, config parsing, tracing logging, Axum router with WebSocket upgrade handlers, and the verify pipeline. Part 7 of the 8-part 'Learning Rust' series. Source: https://github.com/bouroo/rs-wsProxy
…ment Bilingual tutorial completing the rs-wsProxy project — TCP connection with DNS resolution, bidirectional WS↔TCP pump with BytesMut zero-copy, stream splitting, TLS with rustls, graceful shutdown, unit/integration testing, Docker multi-stage build, Kubernetes manifests, and CI/CD. Final part of the 8-part 'Learning Rust' series. Source: https://github.com/bouroo/rs-wsProxy
- Add <!--more--> summary split to Part 4 English - Fix broken series navigation links in Part 8 English conclusion (incorrect slugs → correct article paths)
Weave the real inspiration into the series narrative: saw a Facebook post from rayrag.com showing RO playable in a browser via WebSocket to an emulator server → curiosity → learned Rust from scratch → built rs-wsProxy. Updated intros and conclusions in Parts 1, 7, and 8 (both Thai and English). Also fixes <!--more--> placement in Parts 1 and 8, and corrects the roBrowser link to its GitHub repo.
…evisiting Rust' The author already had prior Rust experience (e.g. the 2023 Rust FFI article). Updated all 'from zero/scratch' phrasing across Parts 1 and 8 (both Thai and English) to reflect a review/refresh tone instead. - TH: 'การเรียนรู้ Rust ตั้งแต่ศูนย์' → 'การกลับมาทบทวน Rust อีกครั้ง' - EN: 'learning Rust from scratch' → 'revisiting Rust' - EN series title: 'From Zero to...' → 'Building a...'
Migrate featured image references in post frontmatter from the global `/img/featured-image.webp` to local `featured-image.jpeg` files for better asset management.
There was a problem hiding this comment.
Code Review
This pull request introduces a comprehensive set of blog posts and pages written in both English and Thai, covering topics such as Go, Rust, database optimization, and cloud-native infrastructure, alongside Hugo configurations. The review feedback is highly constructive, pointing out several syntax errors, typos, and copy-paste mistakes within the code blocks of the markdown files (such as unclosed quotes, duplicate lines, and invalid return values like nill). It also highlights broken image links, redundant imports, and offers valuable security and portability recommendations, such as obfuscating public email addresses and using HTTPS instead of SSH for submodules.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| } | ||
|
|
||
| // This block executes when a termination signal is received | ||
| sig := <-closeChan: |
| func processStackPointer(d *Data) err { | ||
| // Use the original pointer on the stack | ||
| d = &Data{value: 42} | ||
| return nill |
| การทำงานกับคีย์และค่าใน HashMap มีเรื่องของการเป็นเจ้าของ (ownership) ที่สำคัญ เมื่อเราใส่ค่าแบบ `String` ลงใน HashMap HashMap จะเป็นเจ้าของค่านั้น หมายความว่าเราจะไม่สามารถใช้ตัวแปรเดิมที่เคยถือค่านั้นได้อีกต่อไปหลังจากที่ใส่เข้าไปแล้ว หากต้องการรักษาการเป็นเจ้าของไว้เราสามารถใช้อ้างอิง (`&String`) แทนได้ แต่ต้องแน่ใจว่าข้อมูลที่อ้างอิงนั้นมีอายุยืนยาวกว่า HashMap | ||
|
|
||
| ```rust | ||
| use std::collections ฮ HashMap; |
| ORDER BY | ||
| created_at; |
|
|
||
| ตัวอย่างที่เป็นประโยชน์มากขึ้นคือการใช้ `select!` ในการทำ bidirectional communication ระหว่าง WebSocket และ TCP socket เช่นในโปรเจกต์ wsProxy ของเรา: | ||
|
|
There was a problem hiding this comment.
There appears to be a copy-paste error here. The line println!("Interval tick"); is duplicated and placed outside the select! block's arm, which is invalid syntax and will cause a compilation error.
| ตัวอย่างที่เป็นประโยชน์มากขึ้นคือการใช้ `select!` ในการทำ bidirectional communication ระหว่าง WebSocket และ TCP socket เช่นในโปรเจกต์ wsProxy ของเรา: | |
| } | |
| } |
| Compared to relational DBs, NoSQL DBs are designed to be optimized for specific data types, resulting in higher performance (if used for the right type of task). | ||
|
|
||
| ## Types of NoSQL DB | ||
|  |
There was a problem hiding this comment.
| authorLink: "https://kawin.dev" | ||
| description: "บทความนี้จะแนะนำวิธีการซ่อนเว็บของเราไว้ข้างหลัง cloudflare อย่างมิดชิด" | ||
| aliases: | ||
| - /posts/go_solid/ |
| authorLink: "https://kawin.dev" | ||
| description: "This article will guide you on how to securely hide your website behind Cloudflare." | ||
| aliases: | ||
| - /posts/go_solid/ |
| [](https://linkedin.com/in/kawin-vir) [](https://twitter.com/bouroo) | ||
|
|
||
| # Tech Stack | ||
|                |
There was a problem hiding this comment.
The URL for the Rancher badge appears to have a typo. The domain img.io is likely incorrect and should be img.shields.io. This will cause the badge image to be broken.
|                | |
|                |
| use std::net::ToSocketAddrs; | ||
| use std::net::ToSocketAddrs; | ||
| use std::net::ToSocketAddrs; | ||
| use std::net::ToSocketAddrs; |
No description provided.