THẢO LUẬN

7 phút trước

mình đang dùng deploy django mà nó cứ báo lỗi not support language,mà nó hỗ trỡ python 3.11 ,django mình xài py 3.11

0

Cảm ơn comment của bạn nhé. Có thời gian mình sẽ check lại. ❤️

0

Hy vọng sẽ sớm triển khai trên diện rộng để những doanh nghiệp nhỏ như chúng em (https://vc24h.com) ở dưới có thể được hưởng lợi ích từ việc chuyển đổi số: Ứng dụng blockchain trong quản lý chuỗi cung ứng.

0
khoảng 9 giờ trước

Góc nhìn của mình:

Về ownership:

Ownership enforce C++ guidelines, RAII pattern của C++, thực hiện check trong compiler luôn thay vì phải dùng tool rời hay đưa vô guidelines như C++. C++ là một ngôn ngữ cỡ 40 năm tuổi với tỉ dòng code trong rất nhiều project cần "backward compatibility" nên họ không muốn thực thi nó trong compiler ảnh hưởng đến các project đó. Rust lại là ngôn ngữ mới nên nó đưa thẳng vào compiler ngay từ ban đâu luôn. Mặt khác, với statically typed language thì compiler là bạn: "Mọi lỗi nên được kiểm tra ở compile time và cái nào không kiểm tra được ở compile time thì phải được kiểm tra ở runtime". Ownership không khó hiểu, nó là kinh nghiệm đúc ra từ những người sử dụng C/C++.

Về memory

Không chỉ có stack và heap, ít nhất theo model của C cũng phải 4 phần. Move sematic là từ C++, như đã nói ở trên, nó được đúc ra từ khi mấy ổng làm việc với C++,

Array

Array chưa bao giờ liên quan đến push, pop hay bất kỳ method nào, đó là vì library của các ngôn ngữ OOP(broken paradigm) dùng từ như vậy khiến người ta nhầm lẫn, trong Khoa học máy tính nó không đúng. Array có 2 loại Array: Static Array và Dynamic Array. Static Array là primitive trong KHMT rồi. Còn Dynamic Array được bạn cấp phát nó ở runtime bằng cách invoke allocator của OS,/Standard Library. Cái "push", "pop" method đó thuộc các Abstract Data Type trong các ngôn ngữ nó viết sẵn trong thư viện chuẩn. Array không có liên quan gì đến "push", "pop", "enque", "deque". Tác giả (của cuốn sách) do đó sẽ không có lí gì nhắc nó vì nó không phải trong core của language. Dynamic Array được dùng để triển khai Queue, Stack, Deque ở runtime, bạn truy cập nó thông qua pointer/ref ở compile time mà thôi. Vector là API/Abstract Data Type mà std library người ta viết cho bạn để dùng nó sẽ invoke allocator để cấp phát động, String cũng vậy.

String&str

Bản thân String là một smart pointer, nhưng trong chủ đề bài viết thì không cần quan tâm, hãy nói về nhận định không đúng về &str. two components: a pointer to some bytes and a length.

Đầu tiên &str không dùng lưu trữ string, nó là "slice" hay "view", và "string slice" thì view đến một phần string, string mà nó view đến có thể ở trên stack, heap hoặc static storage( e.g, .rodata section). String này có thể là "literal" cũng có thể là String và còn nhiều kiểu String khác trong rust nữa. Bản chất của nó là pointer/reference(safe pointer). "literal string". Không có pointer hay primitve type nào thay đổi được kích thước cả, bởi vậy tụi nó mới là fixed size, mới dùng "static analysis" là compiler. Pointer theo giả định size của nó là usize (nhưng thực tế có thể sẽ khác, trên kiến trúc x86-64 chẳng hạn, chỉ mới dùng 48-bit đầu tiên cho addressing). Nên "&str" hay tất cả các primitive khác luôn luôn xác định kích thước, không có cái gọi là "không cố định kích thước nhưng phải xác định kích thước ở compile time" cả, hiện tại thì chưa thấy ISA nào làm được như vậy cả, cái sugar syntax:

// cả hai RHS đều là hard code trong binary.
let mut x = "abc"; // string slice, ref to "abc"
x = "cdef"; // ref to "acef"

Bạn thay đổi cái string mà x trỏ đến, bạn không thay đổi được string litteral. bạn có thể tham khảo ở đây: immutable, vì nó là hardcode thẳng trong .rodata section, nên lifetime của nó là 'static, đến khi bạn kết thúc chương trình.

Ownership của function

assign và passing là phụ thuộc vào strategy evaluation (C, C++, rust áp dụng call-by-value) và rust nó bắt buộc thực thi thẳng move sematic. Mình muốn nói thêm về nó còn liên quan đến call stack và stack frame, ASM code nữa nằm ngoài phạm vi chủ đề, nhưng passing/assign thường là cùng sematic như vậy.

Cái đoạn mã trên về function thực chất không ai dùng nó cả, tác giả ( The Rust Programming Language) muốn .

Char

Từ C: char: u8 -> 1 byte để encode 1 ký tự ASCII string, array của char Nhưng ngày nay người ta dùng UTF-8, và UTF-8 là backward compatible với ASCII, bởi ngôn ngữ lâu đời như C hay C++ phải thêm vào wchar, wstring để làm việc với Unicode point. Rust là ngôn ngữ mới, nên kiểu Char encode thẳng 1 Unicode point của UTF-8 luôn, tức là dùng [1-4] bytes.

Ownership có phải của nợ không?

Không, rust ngay từ đầu được phát triển để nhắm đến thay C++ trong engine browser của Firefox do đó C++ (cùng Ocalm) ảnh hưởng nhiều nhất đến rust và nó thực sự đang đạt được mục đích được thế kế ban đầu: Rust có mặt trong linux kernel, android, windows, browser và nó power một runtime mới của JS/TS(Deno), bắt đầu được sử dụng trong game development, ...

Rust có đáng học không?

Về bài viết

Mình nghĩ bài viết này là bạn dịch lại ý trong The Rust Programming Language, vì thế nên để nguồn cuốn sách trong bài viết.

Tham Khảo

The Rust Programming Language - Second Edition

call-by-value

immutable

move semantic

two components: a pointer to some bytes and a length

String and str

0

Tác giả hiểu nhầm về các khái niệm rồi, mấy cái này đâu có tránh re-render, những cái này chỉ là tối ưu hóa performance thôi.

+1

@quypuoc1 thì nó cứ lấy 2 bytes rồi convert lần lượt thôi ấy, đến đó nó bị lệch và convert thành junk char 😄

0
Avatar
đã bình luận cho bài viết
khoảng 12 giờ trước

Cảnh 4, có vẻ phù hợp với hoàn cảnh của mình hiện tại. Sau 1.5 năm ở công ty mọi thứ có phát triển nhưng rất chậm, bản thân cũng có thêm 1 ít kinh nghiệm thật sự không nhiều, cảm giác mọi thứ bắt đầu đều đều trở lại. Có lẽ đã đến lúc phải lên một "con thyền mới"...

0

@minhtuan.nguy À em còn 1 thắc mắc nữa là tại sao nó biết được mà convert X với P của payload 2, mà không phải là X với [midfix] để cụm X[midfix] thành junk char ạ. Từ đó có thể Payload2 vẫn covert bình thường.....

0

@minhtuan.nguy À rồi, em hiểu rồi ạ. Em cảm ơn anh

0
khoảng 16 giờ trước

ad ơi cái podman này hình như không cần chạy với quyền root thì phải

0
khoảng 19 giờ trước

@DungNq Anh có biết Lua Thuộc bên nào trong công ty không ạ?, Hay chỉ dành cho dev solo, Tại e chỉ code trên web Roblox và đang có ý định vào cty làm mà ko biết bắt đầu như nào😢

0

cho em hỏi mình thay đổi sao để có kết quả này vậy ak

Input Source sentence: 私は彼の威嚇をぜんぜん怖くない。 Actual Target Translation: <bos> tôi hoàn_toàn không sợ những sự đe_dọa của hắn . <eos>
Predicted Target Translation: tôi hoàn_toàn không sợ những sự đe_dọa của hắn . <eos>

0
Avatar
đã bình luận cho bài viết
Thứ Sáu, 10:00 SA

Thanks bạn. Nhớ ghé blog của mình tại https://thanhle.blog để đọc nhiều nội dung mà mình chia sẻ hơn nhé 😆

+1

lúc bạn cấu hình nó có chỗ Advanced Options á

0

@hmquan08011996 có cả chỗ cấu hình branch hở pro! e ko thấy có khi e tạo workspace

Screen Shot 2022-12-02 at 16.05.26.png

0

Đúng rồi, hạn thi của VC là 1 năm từ ngày mua, năm nay giá cao hơn $10 so với đợt sale năm ngoái

0

giờ tăng giá so vs 1 năm trước hay sao á thầy , e thấy 197.5 $ . Và mua vocher thì sẽ có hạn dùng trong vòng 1 năm hả thầy ?

0

😂

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí