Killarney - Ring of Kerry by bus
6:36
Howth, Dublin, Ireland
13:38
Жыл бұрын
Walk and talk in Dublin
12:10
Жыл бұрын
Life Alone.
5:03
Жыл бұрын
Random moments in Dublin
9:15
Жыл бұрын
Intro
0:40
2 жыл бұрын
Пікірлер
@PavinWannasirilak
@PavinWannasirilak Күн бұрын
ขออนุญาตแชร์ความเห็นผมด้วยนะครับ น่าสนใจดีครับ ผมคิดว่าท่านี้ค่อนข้างเป็นการ tweak ให้มันทำงานตามต้องการ มากกว่าความเป็นธรรมชาติที่มันควรจะเป็นครับ ปัญหามันคือแค่ topics ที่ถูก pass ไปเพื่อทำการ clean ถูก pass ไปแค่ครั้งเดียว ตอนสร้าง cleaner และยังไม่ได้ถูก clean ในทันทีด้วย "ทั้งที่มันควรถูกส่งไปใหม่ทุกๆครั้งที่เมื่อต้องการ clean" ตรงนี้ครับที่ผมว่ามันผิดธรรมชาติไปนิดจึงต้องมีท่ายากปรับแก้ไขให้เข้ารูปเข้ารอย ส่ิงที่ทำให้ส่ง topics ไปใหม่ไม่ได้ทุกๆครั้งๆที่ต้องการ clean เพราะ logic ยังปนกันอยู่ระหว่าง "การตั้งเวลาการทำงานของ worker" และ "การ clean topics" ถ้า cleaner รับผิดชอบแค่หน้าที่ว่า clean topics ต้องทำยังไง และให้การตั้งเวลาเป็นหน้าที่ของ AggregatorService ปัญหานี้จะจบทันทีเลยครับ สิ่งที่ผมพูดก็คือ เราจะย้าย worker ไปเป็น property ของ Aggregator แทน จากนั้นภายใน method run() ก็สั่ง worker.schedule() แบบเดียวที่ทำใน cleaner แล้ว argument ที่ pass ให้กับ schedule() คือ callback ที่ภายในสั่ง cleaner.cleanStaleMessages(topics) จบเลยครับ แต่ถ้าหากกลัวว่าหากมี service อื่นที่มี topcis เป็น property แบบนี้เหมือนกันแล้วต้องการคลีน เราจะต้อง duplicate logic ที่ service ต้องมี worker คอยตั้งเวลาทำทุกๆ 1 ชั่วโมงแบบนี้ไปเรื่อยๆเหรือเปล่า เราก็สามารถแยก logic ตรงนั้นออกมาเป็นคลาสได้อีกครับ เช่น oneHourWorker.schedule(() => {// ทำอะไรก็ได้ทุกๆ 1 ชั่วโมง }) คือแยก logic ออกมาทำหน้าที่เดียวเลยครับคือ spawn thread มาตั้งเวลา แบบนี้ก็อาจจะมีคำถามอีกว่างั้นจะทำทั้งหมดนี้ต้อง import class หลายๆคลาสที่ทำหน้าที่แยกกันมาทุกครั้งเลยหรือเปล่า งั้นไปสุดทางเลยได้ครับ เราสามารถ compose class ใหม่มาให้มันมีหน้าที่แบบเฉพาะเจาะจงยิ่งขึ้นได้ เช่นชื่อคลาส ScheduleTopicsCleaner ทำให้เวลาจะทำงานแบบนี้ก็ import แค่ custom class นั้นคลาสเดียว แต่ไม่สูญเสียความ flexible แบบเต็มเปี่ยมที่เรามีแต่ละคลาสย่อยๆทำหน้าที่ของตัวเองได้ดีแล้ว อันนี้ขอยกตัวอย่างเป็น code ไปเลยนะครับใน typescript พี่น่าจะอ่านเข้าใจได้ไม่ยาก รบกวนลองพิจารณาดูนะครับ point ผมแค่ การแบ่งคลาสแบบนี้น่าจะยังไม่ได้มีหน้าที่ความรับผิดชอบแบบแม่นยำพอ พี่ถึงได้สะดุดว่าต้องทำยังไงดีจึงออกมาเป็นท่ายากนี้เล็กน้อย แต่พอเข้าใจได้ครับ อยากให้ทำคลิปแบบนี้ออกมาแลกเปลี่ยนอีกเรื่อยๆครับพี่ ชอบมากครับ www.typescriptlang.org/play/?#code/JYOwLgpgTgZghgYwgAgCoHsAOwEG8BQyRywAJgFzIgCuAtgEbQDchxAzmHADYSX3roecECwC++fAi5w2bZACUImdG2Bh0UAJ7ICxZDAhgEACwzYEbABQBKSmZwBtALo7WeolEPUoIZM5Z64uKS0rLIAIIA5pGekXDqUADK0ABuOCi6xOrmbHZYjk4BxADuGgDW0JQA8iAQABLo3gDq5cxuyFIQwpXIiSYQpNQ89hYAwkK1UEVECOggHFDUCAmWnsqqCZqUiutqGprWru5ZxsBsAHTZOHIAvMhrKnta5wZGpvkWNtPuYKcXpVAKlBkHdasVkDV6o0oC1AdAvu09L8zudOt1gaCIOC+sYBkMICM2OMupMEYEJHpFiAbEdjshkRc0ZNURNCZYGZcPmxrN8ghIpDI5Di8cMucT0bSiACgdVag1mq0MVQsRC5dDYUCycQmT1CeLJiDleC9RN4Tz2ky2VcLHlzM5DpljhzpdBzmx+oMeJYaTcAHySulEDk6qAsklWrnmwOiKPEPkhQVoMWm4GOjqsrnsrm2goOxHEGAaZCWWbzMD0j7IdAwCs5POBvTAGtZ8xuzg8esN46ljj3CC0dApCAASRApAgAA9DdaLjBQKRR+OJ961P3Dn6SJBaOcyCCbndrTvSLGu3oe+XPAOhyNp1y3ZguOlVv3ByOx5OADTIAAM1gc38KfMux7QQIHOLh0EiSwAAM4GQDhuBQa0+yvAZyAAElwS9XxGI9RGgk8G3EaN2njAUwkheUYUVAN3VxT0IBLbguHoRAykoH1-RSdAyE7Ok2EMUdICgFJuG9dd-TTQMEGY1iEDKLVjlEL8AEZv3U5AACpkAANm-LTdN-Xl8GCCQgA
@BBConfig
@BBConfig 3 күн бұрын
Credit free image used in the thumbnail - www.pexels.com/photo/calm-body-of-water-surrounded-by-mountains-3151191/
@MmTna-q3c
@MmTna-q3c 5 күн бұрын
ดูทำความเข้าใจ มาลองTest 😂
@BBConfig
@BBConfig 24 күн бұрын
- Video ตอนที่แล้วของผมเรื่อง Consistent Hashing - kzbin.info/www/bejne/qYvVg4t3dp19fsk - Code haproxy ส่วนที่ผมคิดว่ามันนำ weight มาคำนวณ virtual node : github.com/haproxy/haproxy/blob/7868dc9c45aeb29774baac98711f563755b610d6/src/lb_chash.c#L550
@ChatchavitNitipongpun
@ChatchavitNitipongpun Ай бұрын
วะ วะ วะ ไวววววว สุดยอดครับ คลิปเร็ว งานคุณภาพ 😀
@BBConfig
@BBConfig Ай бұрын
😊ขอบคุณคร้าบผม
@dream07312
@dream07312 Ай бұрын
Nice video krub, i want to know about alternative of "consistency hashing" please leave keyword again?
@BBConfig
@BBConfig Ай бұрын
Thanks very much krub. The alternative is Rendezvous Hashing which is stateless, doesn't need all the complication of virtual node - blog.techlanika.com/rendezvous-hashing-dad794931065
@BBConfig
@BBConfig Ай бұрын
1:56 - เป้าหมายหลักของ Consistent Hashing 5:37 - Evenly distributed load - ใช้โปรแกรมเล็กๆทดสอบการกระจายของ load 7:47 - Partitioning scheme ง่ายด้วยการใช้ modulo 15:14 - Minimal rebalancing 21:22 - Partitioning ด้วยวิธีของ Consistent Hashing 27:01 - Implement Consistent Hashing อย่างง่ายๆ เพื่อความง่าย ผมไม่ได้ check ว่า hash ของแต่ละ replica ซ้ำกันหรือเปล่านะครับ ถ้า imeplment ของจริงต้อง check นะครับ 34:25 - Virtual node
@BBConfig
@BBConfig Ай бұрын
ตอนแก่า Java HashMap ทำงานอย่างไร - kzbin.info/www/bejne/gIXUo6ihbphpp68
@SurfKider
@SurfKider Ай бұрын
ดีมากๆเลยครับ ขอบคุณครับ
@BBConfig
@BBConfig Ай бұрын
ขอบคุณคร้บผม ดีใจมีคนชอบเรื่องนี้ครับ
@BBConfig
@BBConfig Ай бұрын
Art work ในวิดีโอ จาก instagram.com/gulin.watercolor/?hl=en ครับ
@dream07312
@dream07312 2 ай бұрын
Thx a lot nice video krub, i have a question, How do we know if the bloomfilter space initially set is no longer enough?
@BBConfig
@BBConfig Ай бұрын
Thanks very much krub. Most of the time, bloom-filter is used in system that can (more or less) control the expect entries of data krub. In use case of my project, we limit maximum data entries in a chunk of data (1 chunk for one bloom instance). So we let library calculate the size of bloom e.g newBloom(maxNumEntries, false-positive-rate) . So we don't really monitor if false-positive rate is increase or not, we just control the max-entries inserted to the bloom instead.
@dream07312
@dream07312 Ай бұрын
@@BBConfig Thank for your answer krub 🙏
@BBConfig
@BBConfig 2 ай бұрын
ข้อมูลเพิ่มเติมที่ผมเพิ่งเห็น ตัว doc เองก็พูดถึงเคสที่ ReadWriteLock อาจจะไม่ช่วยให้ performance ดีขึ้น " if the read operations are too short the overhead of the read-write lock implementation (which is inherently more complex than a mutual exclusion lock) can dominate the execution cost" docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReadWriteLock.html วิดีโอต้นเรื่องที่ผมไปเจอที่อ้างว่า ReadWriteLock นั้น overhead สูง kzbin.info/www/bejne/pmW3oqaamK-td8k
@BBConfig
@BBConfig 2 ай бұрын
"Confluent Cloud Is Now 100% KRaft and You Should Be Too" - www.confluent.io/blog/zookeeper-to-kraft-with-confluent-kubernetes/
@BBConfig
@BBConfig 2 ай бұрын
Data ที่ผมใช้มากจาก Kaggle : Goodreads Book Reviews Data Set - www.kaggle.com/datasets/pypiahmad/goodreads-book-reviews1?select=goodreads_books.json
@Chetclocknarokmeejing
@Chetclocknarokmeejing 2 ай бұрын
รู้สึกไม่เสียดายเวลาเลยครับที่เข้ามาดูคลิปนี้
@BBConfig
@BBConfig 2 ай бұрын
ขอบคุณมากๆครับที่เข้ามารับชมรับฟัง
@realpaoz
@realpaoz 2 ай бұрын
พี่จบตรงสายหรือเป็น self-taught ครับ
@BBConfig
@BBConfig 2 ай бұрын
ผมจบสายตรง software engineer ครับ แต่ 90% ที่ใช้ในงานคือ self-taught ครับ เพราะสายนี้มันเปลี่ยนแปลงเร็วมาก
@justwannado666
@justwannado666 2 ай бұрын
คลิปมีประโยชน์มากครับ ผมเรียนเขียนโค้ดได้1ปี คลิปนี้ช่วยให้เห็นจุดที่ควรพัฒนาตัวเองต่อไปเลยครับ
@BBConfig
@BBConfig 2 ай бұрын
ขอบคุณคร้าบ สู้ๆครับผม ความชำนาญมาจากการฝึกฝน เป็นกำลังใจให้คร้าบ
@dream07312
@dream07312 2 ай бұрын
Thankyou for your content, It's cool 🙏
@BBConfig
@BBConfig 2 ай бұрын
ขอบคุณคร้าบผม 🙂
@ta3113ta
@ta3113ta 2 ай бұрын
ความรู้ใหม่เลยครับ
@BBConfig
@BBConfig 2 ай бұрын
ขอบคุณสำหรับคอมเมนต์คร้าบผม ดีใจมีผู้รับชมรับฟังครับ
@BBConfig
@BBConfig 2 ай бұрын
0:37 requestor กับการขอข้อมูลจาก server สำรอง 4:37 โปรแกรมง่ายๆเพิ่อใช้ในการทดสอบปัญหา 12:30 ใช้ iptables เพื่อ drop packet ขาออกจาก server 16:52 tcp retransmit 23:00 ปรับค่า tcp_retries2
@BBConfig
@BBConfig 3 ай бұрын
Timeline 1:13 เริ่มเขียน feed / client แบบ step-by-step เพื่อแสดงให้เห็นการทำงานที่ต้องการ 9:52 Client พิเศษที่เป็นจุดเริ่มให้มีการใช้ lock สองตัว 16:46 สิ่งที่ทำให้เกิด deadlock 18:28. jstack and thread dump 24:36. อธิบายอีกครั้งให้ละเอียดขึ้น 34:12 CountdownLatch
@BBConfig
@BBConfig 3 ай бұрын
ขอแก้ความคลาดเคลื่อนนาทีที่ 8:53 เวลาหา node ที่ต้องการ โค้ดจะหา key ที่ตรงกันนะครับ ในคลิปผมพูดผิดว่าหา value ที่ตรงกัน
@Mrfloridec
@Mrfloridec Жыл бұрын
Hey. Do you like this tour?
@xintu8123
@xintu8123 Жыл бұрын
You seemed so relaxed lol 😆
@jamesfagan7823
@jamesfagan7823 Жыл бұрын
It's always raining when I am in Cork
@BBConfig
@BBConfig Жыл бұрын
I was lucky that the next two days were sunny so I could walk around the city. I also went to Killarney and had a very nice time there.
@adampannwitz4432
@adampannwitz4432 Жыл бұрын
Nice work!
@BBConfig
@BBConfig Жыл бұрын
Thanks a lot 😊