Mối tình bắt đầu trên chuyến tàu lúc 7 giờ 22 phút

Chương kế tiếp:

Truyện tương tự

Vì Sao Ngươi Lại Muốn Trở Thành Phản Diện Lần Nữa?

(Đang ra)

Vì Sao Ngươi Lại Muốn Trở Thành Phản Diện Lần Nữa?

이만두

Trước giờ, dù có ghét tình tiết nào trong tiểu thuyết, tôi cũng chỉ im lặng mà bỏ qua.Nhưng khoảnh khắc cặp song sinh phản diện giết Daisy — nhân vật mà tôi yêu thích nhất — tôi đã không thể nhẫn nhịn

7 7

Chuyện Tôi Nhặt Được Một Cô Gái Ở Ngõ Hẻm, Người Vốn Là Nữ Chính Của Một Trò Chơi Otome Sau Kết Thúc Tồi Tệ

(Đang ra)

Chuyện Tôi Nhặt Được Một Cô Gái Ở Ngõ Hẻm, Người Vốn Là Nữ Chính Của Một Trò Chơi Otome Sau Kết Thúc Tồi Tệ

Mặt Nạ Bí Ngô

Đây là hành trình làm lại cuộc đời của một nam chính lẽ ra sẽ kết thúc trong vai kẻ qua đường, và một cựu nữ chính đáng lẽ phải đón nhận một kết cục bi thảm.

1 2

Góc Nhìn của Kẻ Toàn Tri

(Đang ra)

Góc Nhìn của Kẻ Toàn Tri

고속도루

Và mười năm sau, cả thế giới này cũng sẽ diệt vong.

7 8

Chúng tôi không phải bạn bè

(Đang ra)

Chúng tôi không phải bạn bè

Niko Saito

Một cuộc sống thanh xuân học đường đầy màu sắc chính thức bắt đầu!

3 4

LUCK: EX

(Đang ra)

LUCK: EX

iamthezero

Anh ấy là King, Anh Hùng Mạnh Nhất.

1 3

Web novel (Chương 61 ~ 80) - Chương 66: Thử thách đầu tiên với backend

Chương 66: Thử thách đầu tiên với backend

Enjoy!

--------------------------------

Thử thách đầu tiên với backend

Ngay khoảnh khắc Takuya-san nói: “Bắt đầu từ backend trước,” tôi đã thẳng thắn thốt lên điều mình đang băn khoăn.

“Backend… cụ thể là làm những gì vậy ạ?”

Takuya-san quay lại, mỉm cười nhẹ như mọi khi.

“Nghe trăm lần không bằng thấy tận mắt. Để anh cho em xem thứ đang chạy thật.”

Nói rồi, anh ấy quay về phía chiếc PC của mình, những ngón tay bắt đầu gõ lách cách trên bàn phím. Cửa sổ Command Prompt mở ra, vài dòng lệnh được thực thi. Tôi không thực sự hiểu chuyện gì đang diễn ra, nhưng động tác của Takuya-san dứt khoát, trôi chảy, như thể đang chơi một nhạc cụ quen thuộc.

“Rồi, khởi động xong.”

Anh ấy mở trình duyệt, nhập vào thanh địa chỉ: localhost:3000/users. Khi nhấn Enter, cả màn hình lập tức hiện lên dày đặc những dòng chữ tiếng Anh.

“Có cả đống tiếng Anh hiện ra kìa! Đây là API à?”

“Đúng rồi. Đây là cái anh làm để test thôi, nhưng về cơ bản, backend làm những việc như thế này.”

Trên màn hình, rõ ràng đang hiển thị một dạng dữ liệu nào đó. Những cái tên trông như tên người, kèm theo các con số giống ID. Takuya-san nói đó là định dạng JSON, nhưng với tôi lúc ấy, nó chỉ giống một chuỗi chữ tiếng Anh nối tiếp nhau.

“Giờ thử thay phần users này bằng sản phẩm của Mizunoya mà xem.”

Takuya-san vừa nói vừa chỉ tay vào màn hình.

“Khi Chihiro-chan dùng điện thoại xem sản phẩm, ở phía sau, dữ liệu cũng được lấy về theo cách tương tự như thế này.”

Ngay khoảnh khắc ấy, trong đầu tôi bỗng nhiên có thứ gì đó khớp lại với nhau.

“À! Thì ra phía sau ứng dụng của Chihiro là mấy thứ này đang chạy!”

Khi Chihiro mở danh sách sản phẩm trong ứng dụng của Mizunoya, một cơ chế giống hệt màn hình trước mắt tôi đang âm thầm vận hành. Mỗi lần em ấy chạm tay vào màn hình, là từng lượt trao đổi dữ liệu như thế này diễn ra. Nghĩ đến đó, mọi thứ bỗng trở nên gần gũi đến lạ.

“Hiểu được đến mức này rồi thì… thử tự tay làm một cái nào.”

Takuya-san mở thêm một cửa sổ mới. Lần này là một trình soạn thảo có tên Visual Studio Code.

“Trước hết, đặt một mục tiêu thật rõ ràng. Khi truy cập localhost:3000/hello thì API sẽ trả về dòng chữ ‘Hello World’.”

“Chúng ta sẽ dùng cơ chế gọi là Controller của NestJS.”

“Ờm… vậy thì phải viết thế nào ạ…”

Tôi nhìn chằm chằm vào màn hình, nhưng hoàn toàn không biết nên bắt đầu từ đâu.

“Cứ copy–paste trước cũng được. Quan trọng là cảm nhận được việc nó chạy.”

Anh Takuya vừa làm mẫu vừa bắt đầu nhập code.

Trên màn hình hiện ra đoạn mã như sau:

import { Controller, Get } from '@nestjs/common';

@Controller()

export class AppController {

@Get('hello')

getHello(): string {

return 'Hello World';

}

}

“@Controller() có nghĩa là ‘class này là cửa sổ tiếp nhận API’.”

Takuya-san kiên nhẫn giải thích từng dòng.

“@Get('hello') nghĩa là khi có truy cập GET tới /hello thì hàm này sẽ được chạy. Trong trường hợp này, nó chỉ đơn giản trả về chuỗi ‘Hello World’.”

“Dấu @ là gì vậy ạ?”

“Đó là decorator — một tính năng của TypeScript. Nó cho phép gán ý nghĩa đặc biệt cho class hoặc hàm.”

Tôi làm theo đúng những gì được chỉ dẫn, gõ từng dòng code một. Cảm giác chẳng khác nào đang chép lại một câu thần chú.

“Rồi, lưu lại xong thì giờ khởi động server nhé.”

Takuya-san nhập lệnh npm run start:dev trong terminal. Vài dòng chữ chạy vụt qua màn hình, rồi cuối cùng hiện lên dòng:

Application is running on: http://localhost:3000

“Giờ thì mở trình duyệt kiểm tra thử nào.”

Anh ấy nhập localhost:3000/hello vào thanh địa chỉ và nhấn Enter.

Trên màn hình hiện lên dòng chữ “Hello World”.

“Wa—! Code em viết… chạy thật rồi!”

Tôi buột miệng thốt lên. Rõ ràng là những dòng code tôi vừa tự tay gõ trên bàn phím, giờ đây đang hiển thị kết quả ngay trên trình duyệt. Chỉ là một việc đơn giản thôi, vậy mà chẳng hiểu sao lại khiến tim tôi rung động đến thế.

“Đó chính là nền tảng của API. Khi truy cập vào một URL, hàm sẽ được thực thi và trả về kết quả.”

“Lần tới em muốn làm API trả về dữ liệu sản phẩm của Mizunoya!”

Trong cơn hưng phấn vì thành công, ý tưởng cứ thế nối tiếp nhau nảy ra trong đầu tôi.

“Ồ, có động lực rồi đấy. Vậy thì tạo thêm endpoint /products nhé.”

Takuya-san trông cũng vui ra mặt.

“Lần này, thử viết thêm vào đoạn code lúc nãy xem.”

Anh ấy bắt đầu thêm một hàm mới bên dưới đoạn code trước đó.

@Get('products')

getProducts() {

return [

{ id: 1, name: '桜餅', price: 150, category: '季節もの' },

{ id: 2, name: '草餅', price: 130, category: '定番' },

{ id: 3, name: 'あんみつ', price: 200, category: 'デザート' }

];

}

“Anh giả lập dữ liệu sản phẩm của Mizunoya để làm ví dụ.”

Takuya-san vừa nói vừa giải thích.

“Lúc nãy ‘Hello World’ chỉ là một chuỗi ký tự đơn giản. Còn lần này, anh trả về một mảng. Dấu ngoặc vuông [ ] là mảng, còn ngoặc nhọn { } là object.”

“Mỗi sản phẩm là một object. Rồi gói chúng lại trong một mảng để trả về nhiều sản phẩm cùng lúc.”

À ra vậy… hóa ra cấu trúc dữ liệu cũng có ý nghĩa của riêng nó.

“Dữ liệu mà Chihiro nhìn thấy… là do em tạo ra…”

Cổ họng tôi nghẹn lại vì xúc động. Lập trình, thứ vốn xa lạ và trừu tượng, bỗng chốc trở nên rất thật, rất đặc biệt.

Tôi lưu code, server tự động khởi động lại. Sau đó truy cập vào localhost:3000/products.

Trên màn hình, dữ liệu sản phẩm của Mizunoya hiện ra dưới dạng JSON:

[

{"id":1,"name":"桜餅","price":150,"category":"季節もの"},

{"id":2,"name":"草餅","price":130,"category":"定番"},

{"id":3,"name":"あんみつ","price":200,"category":"デザート"}

]

Sakuramochi, kusamochi, anmitsu—tất cả đều là những món bánh đang được bán thật sự ở nhà Chihiro.

“Cái này… là thứ hiển thị trên điện thoại của Chihiro đúng không ạ?!”

Tôi phấn khích đến mức không giấu được cảm xúc.

“Đúng vậy. Ứng dụng của Chihiro-chan ở phía sau đang gọi chính API này.”

Có thể nào, chính dữ liệu này rồi sẽ đến tay Chihiro. Cô ấy chạm vào màn hình, và những dòng dữ liệu tôi tạo ra sẽ hiện lên trước mắt cô. Nghĩ đến đó thôi, ngực tôi đã nóng lên.

Tôi nhìn chằm chằm vào màn hình một lúc, rồi chợt nảy ra một thắc mắc.

“Takuya-san… làm sao anh có thể giỏi đến vậy ạ?”

Kỹ năng của anh ấy, trong mắt tôi, gần như là phép màu. Phải làm thế nào mới có thể đạt đến trình độ ấy?

“Anh học từ nền tảng ở Khoa Thông tin của Đại học Tsukuba.”

Takuya-san quay lại nhìn tôi.

“Học đàng hoàng ở đại học thì sẽ hiểu một cách có hệ thống. Tự học thôi thì cũng có giới hạn.”

“Đại học Tsukuba, Khoa Thông tin… liệu em có vào được không nhỉ?”

Lần đầu tiên, tôi cảm thấy một ngôi trường đại học trở nên cụ thể đến thế. Trước giờ, đại học chỉ là một khái niệm mơ hồ, nhưng giờ đây, nó hiện ra như một nơi có thể tạo nên những con người như Takuya-san—và có lẽ, cả con người mà tôi muốn trở thành.

“Với Kenta thì hoàn toàn có thể. Cứ giữ phong độ này mà cố gắng.”

Lời nói của anh khiến tôi đưa ra quyết định trong lòng. Tôi sẽ học lập trình vì Chihiro. Và tôi sẽ trở nên giỏi về kỹ thuật như Takuya-san. Vì thế, tôi sẽ nhắm đến Khoa Thông tin của Đại học Tsukuba.

Trên màn hình, dữ liệu sản phẩm của Mizunoya vẫn lặng lẽ hiện ra. Sakuramochi, kusamochi, anmitsu—những món bánh Nhật mà Chihiro yêu quý, giờ đây đang tỏa sáng bên trong chương trình do chính tôi tạo nên.

Hành trình học IT của tôi, từ hôm nay, chính thức bắt đầu.

====================

Đầu năm đầu tháng mà phải trải nghiệm 300 bài cốt thiếu nhi thế này "( – ⌓ – )

Hãy bình luận để ủng hộ người đăng nhé!