THẢO LUẬN

thg 5 25, 2018 4:51 CH

@huukimit Đây là code chưa custom của buildPayload method ạ...

protected function buildPayload($notifiable, Notification $notification)
    {
        return [
            'id' => $notification->id,
            'type' => get_class($notification),
            'data' => $this->getData($notifiable, $notification),
            'read_at' => null,
        ];
    }

Sau khi e custom lại như code dưới, cùng trong DatabaseChanel luôn ạ, thì nó không lưu được vào DB để query nữa... E đang tìm hiểu tại sao ạ?

protected function buildPayload($notifiable, Notification $notification)
    {
        return [
            'id' => $notification->id,
            'type' => get_class($notification),
            'idUser' => Auth::user()->id,
            'data' => $this->getData($notifiable, $notification),
            'read_at' => null,
        ];
    }
+1
thg 5 25, 2018 4:43 CH

@minhtuancnttk39

Tạo DatabaseChanel mới như thế thì mình đặt tên khác chứ đúng không bạn? Vì DatabaseChanel có sẵn rồi ạ?

Bạn đặt tên như nào cũng được, miễn là class bạn tạo khác namespace và extends cái class cũ. Và overwrite lại method send.

A có thể cho em hỏi buildPayload method trong DatabaseChanel ta có thể thêm user_id được không ạ? (Ý em là thêm như thế để e có thể truy xuất được người gửi comment để thông báo cho author ấy ạ..

Chính xác! Từ phiên bản Laravel 5.6, thay vì khai báo trực tiếp một array trong method send, thì method send sẽ gọi sang buildPayload (được thêm mới) để lấy dữ liệu. Chắc chắn bạn đang dùng Laravel 5.6, như vậy bạn overwrite lại buildPayload là được.

+2
thg 5 25, 2018 4:25 CH

Bạn cho mình hỏi:

  • Tạo DatabaseChanel mới như thế thì mình đặt tên khác chứ đúng không bạn? Vì DatabaseChanel có sẵn rồi ạ?

  • A có thể cho em hỏi buildPayload method trong DatabaseChanel ta có thể thêm user_id được không ạ? (Ý em là thêm như thế để e có thể truy xuất được người gửi comment để thông báo cho author ấy ạ..

+1
thg 5 25, 2018 8:38 SA

cái này giải quyết đươc vấn đề gì vậy ad?

0

Chuẩn rồi bạn ^^ Thuận tiện cho việc test trên nhiều version

0
thg 5 25, 2018 7:15 SA

Cảm ơn bài viết của bác nhé. nhưng có câu này cần chỉnh lại "Custom Control public một thuộc tính là Camera được sử dụng để điều khiển xem Video Stream được hiển thị từ camera phía trước hoặc phía sau của thiết bị." 2 chữ đầu phải sữa lại thành CameraOptions nhé. Để vậy đọc khó hiểu

0

Cám ơn bạn nhé! Chức năng này thích hợp dùng để phân biệt các môi trường test (dev, stg, pro) trên cùng 1 bản build, nhiều lúc QA bị nhầm khi download build từ testflight về 😄

0

👍 Em cứ mạnh dạn chia sẻ đi 👍

Anh cùng mọi người khác sẽ tích cực vào review, bàn luận mà 😉

0

dạ vâng, e cảm ơn a đã giải đáp thắc mắc cho e ạ. e định sớm viết một bài về việc tìm hiểu blockchain, mong a sẽ review và góp ý cho e ạ. e cảm ơn ạ

+1

Trong ví dụ ở phần 3 này mình lấy ví dụ đơn giản và chỉ là góc nhìn một chiều của 1 người đào. Nhưng thực tế hoạt động đào tiền ảo là hoạt động MẠNG NGANG HÀNG. Nghĩa là bạn phải luôn luôn kết nối và trao đổi (sync) song song với ít nhất 3 người đào khác, để luân chuyển cái mảng Blockchain.

Bạn đọc phần 4 thì sẽ hiểu đến sự tranh chấp Block trong Blockchain. Không có chuyện một mình bạn tự tung tự tác với cả Blockchain, bạn luôn phải chiến đấu với những người khác để đạt được chuỗi Blockchain dài nhất. Và giao dịch trong đó chỉ có một mình giao dịch của bạn thì liệu những người kia có tin tưởng bạn nữa không? Bạn không nên quên sau mỗi lượt đào bạn phải sync lại toàn bộ BLockchain (kết nối với những người đào khác bằng mạng ngang hàng và so sánh xem dữ liệu đã đào được như thế nào)

Nếu bạn đọc đến phần 5 thì sẽ hiểu là, khả năng bạn nhận được cả 100 phần thưởng kia thì sẽ rất thấp vì bạn đào xong rồi nhưng người khác đào nhanh hơn đã đào trước bạn và được thưởng trước bạn.

Trong thế giới BitCoin thì sau 6 lượt đào mới chính thức nhận đc phần thưởng. Sẽ ra sao nếu bạn hì hục đào ra 6 Block và nhận ra toàn bộ điện năng bỏ ra đều không được tiền thưởng.

0

Con số 6 blocks, hay 6 confirmations, là con số thường dùng dành cho một transaction bình thường em ạ, bởi để thay đổi chuỗi 6 blocks bằng một chuỗi khác dài hơn, sẽ cần một lượng sức mạnh tính toán rất lớn, và con số 6 này được coi là an toàn để một service có thể coi một transaction là thành công và gần như không thể bị đảo ngược.

Ngày nay, sức mạnh tính toán của mạng lưới Bitcoin ngày càng lớn, kéo theo việc đào được 1 block càng ngày khó hơn, thế nên nhiều nơi họ chỉ cần 2 confirmations thôi là coi là OK rồi.

Còn UTXO của coinbase transaction thì phải chờ tới 100 blocks thì mới dùng được em ạ 😄 Đó là thiết kế trong các client bitcoin rồi. 😄

0

Cho mình hỏi, nếu chạy code MyCoin.DaoTienAo("DiaChiViTienCuaToi"); liên tục thì t sẽ đào được rất nhiều coin à, chẳng cần biết có ai giao dịch hay không, ở đây là mình đã không tạo sẵn dữ liệu giao dịch Screen Shot 2018-05-25 at 12.40.51.png

0

dạ vâng e cảm ơn, vậy tức là sau khi một block được thêm vào sổ cái thì (vdu như là 2 block e đề cập bên trên) vậy thì UTXO của coinbase sẽ phải chờ thêm khác block khác được nối thêm vào sổ cái ( chắc chắn xác định được block nào dành chiến thắng) thì miner đó mới có thể sử dụng coinbase phải k a ( theo e tìm hiểu thì hình như là 6 block thì phải)

0

em bị lỗi này anh ạ .. Class App\Repositories\Contracts\ProductRepositoryInterface does not exist

0

cảm ơn câu hỏi của bạn, nếu nhìn vào ví dụ 1 ngay bên dưới thì bạn sẽ rõ hơn: ở đây closure là hàm numberGenerator() và hàm định nghĩa trong closure chính là hàm checkNumber()

0
thg 5 25, 2018 2:26 SA

Cách của bác đựa ra rất hay. Nhưng mình xin nêu 1 số điểm như sau để cùng thảo luận Nếu không hợp lý bác có thể phản bác lại 😃

  • Thứ 1: Ví dụ bài toán như sau: Activity_A (gọi Api-> có kết quả sẽ hiện ra 4 fragment) ViewPager (có 4 Fragment)

             1. Fragment_1 (user click gì đó rồi gọi Api_Frag_1)
    
             2. Fragment_2 (user click gì đó rồi gọi Api_Frag_2)
    
             3. Fragment_3 (user click gì đó rồi gọi Api_Frag_3)
    
             4. Fragment_4 (user click gì đó rồi gọi Api_Frag_4)
    

*Lưu ý: Giao diện thông báo của mỗi Fragment là khác nhau

Nếu như trường hợp như bác đã nêu thì chỉ show status trên những Acivity nào extends từ BaseActivity. Fragment sẽ không có method để gọi Vậy Fragment lúc này cũng sẽ lại phải dựng BaseFragment và có các phương thức như trên thì mới gọi được. => Còn cách của mình thì ko cần quan tâm nó ở Activity hay Fragment hay Dialog, .... thì vẫn gọi được

  • Thứ 2: Bác để ý thấy là cách của bác setVisibility quá nhiều ko. Nguyên nhân là do bác để chung tất cả vào 1 chỗ. Còn cách của mình thì cần các nào thì mới addView vào thôi và khi đổi status thì sẽ xóa cái cũ đi và add cái mới vào => cách mình có nhẹ hơn chút ít
0

xem tut chùa nhiều rồi giờ phải sống có ích cho xã hội thôi 😄

+1
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 5 24, 2018 4:01 CH

Nếu cái này làm bằng reactjs thì bạn coi cái hashrouter history của react router v4 thử

0

rất hay bạn ơi ! 😄

+1

bạn chưa sử dụng cái dấu 3 chấm ... ròi... sự lợi hại của 3 chấm. hihi

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í