21 posts tagged with "vietnamese"

View All Tags

Rusty Diary (02)

Doko

Doko

Administrator

Sau một thời gian làm việc với Rust theo dạng qua loa chơi chơi thì mình sẽ ghi chú lại những thứ mình nhớ được. Bao gồm từ cơ bản đến khó hơn một chút.

Rusty diary, part 2

Immutable#

Mặc định biến trong rust là immutable, trừ khi dùng mut, nên nếu:

fn main() {
let x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);
}

Utawarerumono Timeline

Doko

Doko

Administrator

Thuyết tiến hóa#

Trong quá trình khám phá và nghiên cứu về lịch sử phát triển của loài người về mặt sinh học. Người ta cho rằng con người được tiến hóa từ loài vượn cổ cách đây nhiều triệu năm theo thuyết tiến hóa của Darwin. Tuy nhiên ngày càng có nhiều bằng chứng cho thấy con người và loài tinh tinh hiện đại đều có chung tổ tiên, tức là đã có một bước nhảy nào đó trong chuỗi tiến hóa của nhân loại, mà ngay cả các nhà khoa học vô thần cũng phải thừa nhận. Loài này chưa được tìm thấy, hay còn gọi là Missing Link trong chuỗi, nhưng dự đoán đã có sự phân hóa từ khoảng 6 đến 11 triệu năm trước.

Đó cũng chính là nguồn cảm hứng cho cả series Utawarerumono, series Visual Novel pha yếu tố nhập vai chiến thuật (Tactical RPG) từ Leaf, một nhánh con từ công ty mẹ là Aquaplus, một hãng làm VN nổi tiếng của Nhật Bản.

Tổng quan#

Utawarerumono hiện bao gồm 3 game chính:

  • Utawarerumono: Prelude to the Fallen
  • Utawarerumono: Mask of Deception
  • Utawarerumono: Mask of Truth

Trong đó game đầu tiên đã phát hành trên PC từ 2002, chưa từng có bản dịch tiếng Anh chính thức nào nhưng có bản dịch do fan làm. Đến năm 2006 thì được port lên Playstation 2, có thêm lồng tiếng, đổi gameplay và bỏ các cảnh người lớn trong game, và đến năm 2006 thì được port lên PSP.

Đến năm 2015 và 2016, 2 phần tiếp theo (Mask of Deception và Mask of Truth) được phát hành tại Nhật và 1 năm sau đó nữa thì được phát hành tại thị trường phương Tây, có tiếng Anh.

Năm 2018, bản remake của game đầu tiên được phát hành và đến tháng 1 năm 2021 thì cả 3 game đã được release lên Steam, đánh dấu sự trở lại thị trường PC sau gần 20 năm.

Bối cảnh#

Đây là một series VN thể loại fantasy, lấy cảm hứng từ văn hóa Nhật Bản và người Ainu. Tiếng Ainu khác với tiếng Nhật và không có bộ chữ chính thống (cũng giống như ngôn ngữ của đồng bào thiểu số Việt Nam), nên phần tên người cũng được dịch hơi khác so với cách romaji thông thường.

Đoạn sau đây trở đi là spoiler, nên dừng đọc nếu không muốn bị spoil hết nội dung.

Rusty Diary (01)

Doko

Doko

Administrator

Sau một thời gian làm việc với Rust theo dạng qua loa chơi chơi thì mình sẽ ghi chú lại những thứ mình nhớ được. Bao gồm từ cơ bản đến khó hơn một chút.

Sau một thời gian làm việc với Rust theo dạng qua loa chơi chơi thì mình sẽ ghi chú lại những thứ mình nhớ được. Bao gồm từ cơ bản đến khó hơn một chút.

Đổi git remote origin

Doko

Doko

Administrator

git

Mặc định khi clone một project từ git (github, gitlab,…), trong thư mục của project sẽ có một thư mục con tên .git. Trong đó có một số file và thư mục có dạng:

Flutter Architecture với Provider và Provider Architecture MVVM (phần 1)

Doko

Doko

Administrator

flutter

Để khỏi mất thời gian giới thiệu. Chúng ta có luôn 2 từ khoá, cũng là 2 thư viện được sử dụng để thiết kế khung code cho Flutter. Do Flutter là UI framework dạng widget/component tương tự với React, ta cũng có thể dùng Redux nhưng khối lượng code sẽ dày lên không cần thiết. Và qua một thời gian nghiên cứu, thì Provider architecture có vẻ phù hợp hơn cả:

Tại thời điểm viết bài, 2 lib cần thiết có version tương ứng là:

provider: 4.0.2
provider_architecture: 1.0.5

Chúng ta sẽ xây dựng một app đơn giản: 2 màn hình:

RESTful với JavaLite và MySQL / SQLite

Doko

Doko

Administrator

javalite

1. Giới thiệu#

JavaLite là một bộ frameworks (gồm nhiều framework con) dùng để đơn giản hóa một số tác vụ, đầu việc thường làm khi phát triển ứng dụng, thường là web. Bài hướng dẫn sau đây tập trung vào việc tạo một ứng dụng Restful với MySQL / SQLite.

Thủ thuật Timing trong Aegisub

Doko

Doko

Administrator

Timing hiểu đơn giản là căn thời gian cho câu phù hợp với mạch nói trong phim. Và tiêu chuẩn của mình là thế này:

  • Không bao giờ được đặt 2 câu do 2 người nói trên cùng 1 frame hoặc cùng 1 style. Cái này gặp trên các file sub trên subscene rất nhiều. Nhưng mình không cho phép. Mỗi câu phải có một line riêng, không có gạch đầu dòng.

Điều quan trọng trong lúc time là câu nói phải phù hợp. Ở đây lấy cái Stand By Me hôm nọ làm ví dụ.

RxJava Legacy (03) - Observable và chuỗi Observer hoạt động ra sao?

Doko

Doko

Administrator
info

Đây là bài viết cũ, ở thời điểm hiện tại RxJava 3 đã ra mắt nhưng concept và các khái niệm cơ bản vẫn còn dùng được. Series gốc có thể tìm thấy tại đây.

Cách hoạt động của Observable và chuỗi observer#

Chuỗi ObservableObserver rất quan trọng. Cần phải hiểu cách hoạt động của chúng để hiểu được RxJava hoạt động ra sao.

Để bắt đầu, chúng ta lấy một ví dụ đơn giản của đơn giản:

RxJava Legacy (01) - Retro Lambda

Doko

Doko

Administrator
info

Đây là bài viết cũ, ở thời điểm hiện tại RxJava 3 đã ra mắt nhưng concept và các khái niệm cơ bản vẫn còn dùng được. Series gốc có thể tìm thấy tại đây.

Java 8+ với rất nhiều tính năng và cú pháp mới được giới thiệu, trong đó có Lambda Expression được sử dụng để viết anonymous class ngắn gọn hơn. Hiện nay Android Studio 3 đã hỗ trợ cú pháp Java 8 gần như hoàn chỉnh (đã hoàn chỉnh ở API 24) nhưng vì lý do nào đó mà các bạn không thể sử dụng Android Studio 3 thì Retrolambda chính là giải pháp.

Message Queue với Bull (NodeJS + TypeScript)

Doko

Doko

Administrator

Bull là một trong số các thư viện hỗ trợ message queue rất tốt trên NodeJS (bên cạnh RabbitMQ, Kafka, rsmq, agenda,...), và dựa trên Redis để lưu dữ liệu.

Message queue là giải pháp để giải quyết các vấn đề trong công nghệ, thường là backend:

  • Xử lý background.
  • Gửi thông tin theo hàng đợi.
  • Xử lý đồng bộ, concurrency.

Bull là thư viện có thể giúp cả 3 vấn đề trên, và bản thân cũng có 3 thành phần chính:

  • Producer: Thành phần tạo ra các công việc (job) và ném chúng vào queue (hàng đợi).
  • Consumer: Thành phần nhận việc từ queue.
  • Listener: Thành phần lắng nghe các sự kiện diễn ra trong hàng đợi (completed, failed, stalled).

RxJava Legacy (02) - Immutable

Doko

Doko

Administrator
info

Đây là bài viết cũ, ở thời điểm hiện tại RxJava 3 đã ra mắt nhưng concept và các khái niệm cơ bản vẫn còn dùng được. Series gốc có thể tìm thấy tại đây.

Bất biến#

Có 2 vấn đề mà lập trình viên luôn luôn phải giải quyết trong quá trình làm việc:

  • Xử lý vấn đề.
  • Giảm thiểu độ phức tạp của công việc.

Cái thứ nhất thì không phải bàn cãi.

TypeScript + CRA 3 + Absolute Import + Electron

Doko

Doko

Administrator
info

Lưu ý: Ở thời điểm hiện tại, CRA 3.0 đã hỗ trợ absolute import. Ta không cần phải dùng đến craco để import mà có thể dựa vào src/ làm alias gốc.

Kể từ phiên bản Create React App (CRA 2.0), ta đã có thể tạo project với TypeScript mà không cần dùng đến create-react-app-typescript. Và nhờ có Babel 7 với khả năng hỗ trợ TypeScript mạnh, việc migrate sang TypeScript trở nên dễ dàng hơn rất nhiều.

Tuy nhiên...

Tản mạn về H264 (2/2)

Doko

Doko

Administrator

PHẦN IV: MÃ HÓA VIDEO H264#

Trước tiên ta cần hiểu quy trình xử lý video. Ở đây có 2 công đoạn chính là encode (mã hóa) và decode (giải mã) video. Được mô tả như sơ đồ dưới đây. Decoder là chương trình / thiết bị có nhiệm vụ giải nén / giải mã video về dạng chưa nén để có thể xem được (uncompressed). Như đã nói ở trên, H264 là một chuẩn nén, chuẩn những cú pháp để xử lý video cho cả 2 quá trình encode và decode. H264 được xây dựng trên nền tảng MPEG2 và MPEG4 trước nó và có nhiều cải tiến.

proc

Tản mạn về H264 (1/2)

Doko

Doko

Administrator

Như chúng ta đã biết, sự kết hợp giữa hình ảnh tĩnh và âm thanh theo trình tự thời gian phù hợp được gọi là video / phim (theo tiếng Việt). Và dần dần, video đã trở thành một nền tảng đa phương tiện hữu ích cho đời sống, đặc biệt là phân phối thông tin đại chúng.

Và dù ở dạng nào, video về bản chất vẫn là tập hợp những khung hình tĩnh được kết hợp theo khung thời gian phù hợp, sao cho người xem có cảm giác liền mạch như đang chứng kiến một sự việc động. Video trong máy tính và truyền thông cũng không ngoại lệ, dù ở dạng mã hóa nào (analog – tương tự / hay digital – kỹ thuật số).

Eiga Doraemon – Nobita no Shin Kyouryuu (2020)

Doko

Doko

Administrator

Thông tin#

  • Tên: Eiga Doraemon – Nobita no Shin Kyouryuu (Doraemon: Nobita và chú khủng long mới)
  • Tựa gốc: ドラえもん のび太の新恐竜
  • Ngày công chiếu (Ngày/tháng/năm): 07/08/2020
  • Ngày phát hành DVD/BD: 16/12/2020
  • Nguyên tác: Fujiko F. Fujio
  • Hãng sản xuất: Toho, Shin-Ei Animation
  • Thời lượng: 1 giờ 50 phút

Hướng dẫn viết test ReactJS cho người mới bắt đầu

Doko

Doko

Administrator

react-testing

Các lập trình viên đều biết việc test là rất quan trọng trong quá trình phát triển phần mềm, nhất là với các ứng dụng lớn. Lý do thì rất nhiều:

  • Bạn sẽ có thể làm vỡ, hỏng ứng dụng dù chỉ đổi 1 dòng code.
  • Test thủ công sau mỗi lần sửa là quá phiền.
  • Test giúp cho chúng ta tài liệu hoá các case khó, khoai.
  • Biết viết test giúp cho chúng ta có ưu thế hơn các ứng viên khác khi tìm việc.

Tuy nhiên với nhiều người mới làm quen, việc viết test thực sự khá... lạ. Chúng ta sẽ phải làm việc trong một "môi trường" hoàn toàn mới, có thể là không biết bắt đầu từ đâu, đi như thế nào cho đúng. Có thể chúng ta sẽ mất hàng giờ chỉ để viết một cái test đơn giản chỉ vì viết phát là lỗi lên lỗi xuống. Hoặc cũng có thể chúng ta đã quá quen với việc nhấn F11 để debug cái DOM và console log trình duyệt một cách tiện lợi, còn viết test thì không như vậy.

Nhưng việc gì cũng có cách của nó. Viết test không khó. Và với cách tiếp cận đúng, chúng ta có thể tự tin viết test như thần, kể cả khi mới bắt đầu.

Mục tiêu của bài viết dài hơi này là để các bạn có thể tự viết case test đầu tay của mình. Chúng ta sẽ tạo một ứng dụng nhỏ và viết test cover cho nó. Chúng ta sẽ thảo luận xem: Cái gì nên test và tại sao lại test nó. Chúng ta sẽ dùng các kĩ thuật khác nhau để giúp chúng ta viết test mà không cần phải viết rồi xem thử trên trình duyệt.

Sử dụng SSH với cPanel và Putty

Doko

Doko

Administrator

SSH là một giao thức bảo mật dùng để truyền tải thông tin an toàn có mã hóa qua mạng. Có 2 cách để thực hiện là truy cập bằng username / password (những ai hay sử dụng VPS chắc không lạ) và truy cập qua SSH key.

Các hosting con hỗ trợ cPanel cũng có tính năng này (tất nhiên là bên quản trị host phải bật SSH phía server). Linux được xây dựng giao thức này đi kèm, trong khi người sử dụng Windows cần sử dụng một chương trình ngoài, ở đây đề cập tới Putty.

Bước 1: Tạo cặp key Public/Private#

  • Đăng nhập vào cPanel với username và password của bạn.

cpanel

Resident Evil 6 Review

Doko

Doko

Administrator

re6

  • Tên game: Resident Evil 6 / Biohazard 6
  • Phát triển: Capcom
  • Phát hành: Capcom
  • Năm phát hành: 2013
  • Hệ máy: PC / PS3 / XBox 360 (Review bản PC).
  • Steam Store: Link

Resident Evil 6, phiên bản mới nhất của series trò chơi hành động kinh dị nổi tiếng (một thời) của Capcom, và gần như đã trở thành một ví dụ tiêu biểu của thể loại này bên cạnh các series khác như Silent Hill, Dead Space,...