THẢO LUẬN

thg 12 4, 2022 5:36 SA

@nampt.me ,free chỉ xài được 500 giờ à,sao không hướng dẫn cấu hình django,py thon đi,mình làm theo docs và web nước ngoài hoài mà không được

0
thg 12 4, 2022 5:29 SA

Như mình có đề cập thì 1 project có thể tạo được nhiều services. Trong docs của railway mình không thấy đề cập đến giới hạn nhưng theo mình hiểu thì có thể triển khai được nhiều app nhé.

0

@minhtuan.nguy image.png

Hi anh, mặc dù trong bài viết của anh không có phần này, nhưng mà em đọc nhiều bài viết khác thì đa số đều có ghi vào log là AA trước, sau đó mới send payload, em tìm hiểu mấy ngày nay rồi, vẫn không hiểu lý do tại sao. Mong anh giải đáp giúp em thắc mắc này, em cảm ơn anh ạ 😁 image.png

0
thg 12 4, 2022 4:30 SA

@umi0063 image.png còn lỗi này là khi mình push lên host được mà nó lại báo application error port

0
thg 12 4, 2022 4:26 SA

@umi0063 image.png không bít mình biến env của mình sai 0

0
thg 12 4, 2022 4:12 SA

mà host này cho làm 4,5 app của 4,5 ngôn ngữ như heroku 0,thí dụ vửa làm laravel,vừa làm frame khác

0
thg 12 4, 2022 4:12 SA

Google dịch luôn cả code import 😄

0
thg 12 4, 2022 4:00 SA

@umi0063 ,railway, à sao có lúc push lên được sao lại bị lỗi application error $port gì đó,huhu mình cũng từ heroku sang

0
thg 12 4, 2022 2:29 SA

Bằng ngôn ngữ lập luận đanh thép, số liệu cụ thể thiết thực, tác giả đã đúc kết kinh nghiệm thực tiễn của mình, cho độc giả thấy cách thức và tinh thần bất khuất quả cảm vượt qua khó khăn. 👍️ 💯

0
Avatar
đã bình luận cho bài viết
thg 12 4, 2022 2:01 SA

@longyu ủa bạn đang nói đến railway hay flashvps

0
thg 12 4, 2022 1:56 SA

@umi0063 ,mình có tạo gunicorn và procfile mà,à có lúc thì nó báo lỗi error port gì đó,à bản free chỉ dùng được 500 giờ à,

0

Cảm ơn bạn rất nhiều vì đã ủng hộ mình. Đăng ký để xem những bài viết khác của mình trong tương lai nhé 😄

0
Avatar
đã bình luận cho bài viết
thg 12 3, 2022 10:32 CH

@longyu sorry bạn, mình tìm hiểu thêm thì cần phải cấu hình thêm django gunicorn nữa mà hiện tại chưa hỗ trợ đủ cho python

Mình sẽ tìm hiểu và phát triển thêm

0

Cho em hỏi ở bước chuẩn hóa, tại sao không lại được coi là positive vậy ạ?

0
thg 12 3, 2022 2:34 CH

mình đang dùng deploy django mà nó cứ báo lỗi not support language, hoặc lỗi thiếu pyproject.toml 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
thg 12 3, 2022 5:56 SA

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
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í