THẢO LUẬN

Nó chỉ tốn thời gian & dài dòng nếu như bạn chỉ dùng Presenter cho 1 platform (ví dụ Android). Trong 1 project có nhiều module cho nhiều platform (ví dụ: Android, Java app cho PC...) thì interface cho presenter là cần thiết. Khi đó tuỳ vào từng platform mà có cách implement prenter khác nhau. Ý kiến cá nhân của mình là thế.

0
thg 6 9, 2017 4:59 SA

Brunch chỉ đơn gian tập trung vào đơn giản hóa việc config. Nếu một dự án lớn bạn sẽ nhận ra config ko quan trọng bằng việc module bundler sẽ làm đc những gì. Tôi vẫn suggest các bạn sử dụng Webpack.

+1
thg 6 9, 2017 4:41 SA

Cảm ơn bạn, đúng thứ mình đang cần.

+1
thg 6 9, 2017 4:20 SA

Tôi đã sử dụng qua Grunt -> Gulp -> Webpack và tôi thấy Brunch chỉ có thể so sánh với Gulp hoặc Grunt thôi, chưa thể so sánh với Webpack được. Webpack có điểm mạnh là Code Splitting (Chia nhỏ file js và chỉ load khi cần -> Async). Ví dụ tôi khởi tạo dự án A, bên trong tôi tạo thêm 3 dự án con là A1 viết bằng TypeScript, A2 viết bằng ES6, A3 viết bằng CoffeeScript. Khi build sẽ xuất ra các 'bundle' riêng cho từng dự án và chỉ được chạy khi tôi gọi.

Những gì nó làm được là quá nhiều cho nên tôi vẫn đánh giá cao hơn là tốc độ của Brunch.

+1
thg 6 8, 2017 3:16 CH

hình như ở start project: tác giả thiếu link đính kèm?

0

Ở cách 1, m có thể để self.displayAlert() ngay dưới dòng code: self.img.image = UIImage(data: Data(_:data as! Data)) và nó vẫn chạy bình thường, không biết cách này có vấn đề gì ko. Ở cách 2, cho m hỏi: DispatchGroup là chạy trên 1 thread khác (ko phải main thread) đúng ko.

0

à cho m hỏi, private let _sharedManager = BookManager(), m để trong class thì nó báo lỗi. B giải thích chỗ này được ko.

0

Oh, giờ mới biết cái ni á, thank bạn nhé.

0

Cảm ơn bạn, sắp tới mình sẽ cho ra những bài về OperationQueue, mong bạn đón xem và góp ý.

0

Các cách trên của bạn OK. Ngoài ra Eloquent còn support "hàm ăn sẵn" như này

$posts = Post::withCount('comments')->get(10);

echo $posts[0]->comments_count;
+2

Bài viết rất bổ ích. Cám ơn tác giả.

0
thg 6 7, 2017 8:32 SA

(baiphuc)

0
thg 6 7, 2017 6:52 SA

Anh cho hỏi khi nào có các phần khác ạ? Em đang làm app sử in bluetooth để in hoá đơn qua máy in hoá đơn bluetooth, mà gặp core bluetooth này khó quá

0

Nếu như phân mảnh dữ liệu, đến lúc cần thì làm như thế nào cho hợp lý bác nhỉ?

0
thg 6 7, 2017 5:46 SA

Anh thấy việc dùng alias tiện lợi hơn nhiều mà, không phải nhớ chính xác đường dẫn. Nhất là khi vào tinker gõ =)) Anh thì toàn dùng alias khi có thể thôi 😄

0
thg 6 7, 2017 5:45 SA

uh, việc bên trong Facade không có gì thật sự gây rất nhiều khó khăn khi tiếp cân =)) Facade tiện lợi cho nhiều người, nhưng cũng nhiều người không thích dùng nó 😄 Quan trọng là trong team thống nhất với nhau về việc sử dụng là được rồi, cũng không nên quá khắt khe. 😃

+2
thg 6 7, 2017 3:35 SA

Một comment nhỏ nữa là em không bao giờ dùng class alias khi use cả. Em luôn dùng use Illuminate\Support\Facades\Cache; thay vì use Cache. Đơn giản là em không thích dùng alias quá nhiều anh ạ. :3

0
thg 6 7, 2017 3:20 SA

@thangtd90 😄 Đúng là bản thân em cũng mất thời gian dài dài để hiểu các cách xử lý của laravel. Nhớ hồi đầu em muốn tra api để gọi phương thức cho nhanh mà thấy toàn class "rỗng" à. 😄 Em biết cách khai báo class alias, không chỉ facade mà bất cứ thứ class "quái quỷ" nào cũng alias được. Thực tế thì em cũng hay dùng facade vì nó tiện và quan trọng nhất là các bạn em cũng dùng như thế. :3

+1
thg 6 7, 2017 3:16 SA

Chào Hoàng. Cái Swift Package Manager này có trong Swift 3.0 rồi bạn. Mình chỉ giới thiệu cái thư viện này thôi, còn dùng cái nào quen thuộc với mình, và đáp ứng đủ nhu cầu của mình là được. 😃

0

Cảm ơn bạn Hoàng đã đọc bài viết này. "Kiểm tra và diễn dịch kiểu của một instance của một class lúc runtime": Cái này là vì ở iOS thì classes có thể kế thừa 1 class khác, còn structs thì không. Nên bên class có 1 cơ chế là có thể kiểm tra kiểu dữ liệu(type) của một thể hiện(instance) có phải là superclass hay là các subclasses bằng từ khoá is. Và có thể cast 1 instance về 1 kiểu khác trong cấu trúc nhánh cha con mà nó ở trong đó. Ví dụ: thường dùng nhất là tableView.dequeueReusableCell sẽ trả về 1 UITableViewCell, nhưng ta có thể cast nó về 1 custom cell như là let cell = tableView.dequeueReusableCell(withIdentifier identifier: String, for indexPath: IndexPath) as! CustomCell cell bây giờ là kiểu CustomCell chứ k đơn thuần là UITableViewCell nữa v.v... website thì mình hay đọc https://developer.apple.com/documentation/https://www.raywenderlich.com/ thôi.

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í