หน้าแรก
หน้าแรก
Websockets ได้รับความนิยมมากขึ้นทุกวัน เราได้ยินมาว่าพวกเขาคือ อนาคต เราได้ยินมาว่าใช้งานได้ง่ายกว่าที่เคยด้วย ActionCable ใน Rails 5 แต่จริงๆ แล้ว websockets คืออะไรกันแน่? ทำงานอย่างไร ในโพสต์นี้ เราจะตอบคำถามเหล่านี้โดยการสร้างเซิร์ฟเวอร์ WebSocket แบบง่ายๆ ตั้งแต่เริ่มต้นใน Ruby เมื่อเสร็จแล้ว
ที่ Honeybadger เราใช้ apticron เพื่อติดตามการอัปเดต aptpackage สำหรับเซิร์ฟเวอร์ทั้งหมด ตอนแรกฉันมีอีเมล aapticron ส่งมาที่กล่องจดหมายของฉัน แต่เมื่อถึงจุดหนึ่ง ฉันตัดสินใจว่าฉันต้องการให้มีอีเมลเหล่านั้นในช่องการแจ้งเตือน Slack ของเรา Slack มีแอปอีเมลที่มีประโยชน์ซึ่งสามารถรับอีเมลและโพสต์ลงในช่อง
เราเพิ่งมาถึงเหตุการณ์สำคัญที่ฮันนี่แบดเจอร์ หน้าการขายของเราไม่ได้เป็นส่วนหนึ่งของแอป Rails หลักของเราอีกต่อไป มันอยู่ในรายการความปรารถนาของฉันมาหลายปีแล้ว แต่ไม่ได้มีความสำคัญสูงสุดอย่างแน่นอน ส่วนหนึ่งของการย้ายข้อมูลนี้ ฉันพบว่าตัวเองใช้ URI.join เพื่อสร้างลิงก์เปลี่ยนเส้นทางโดยเฉพาะ แต่ฉันพบปั
เวลาสารภาพ สภาพแวดล้อมการพัฒนาของฉันไม่ได้เปลี่ยนแปลงไปมากนักในช่วงสี่ปีที่ฉันได้ทำงานกับ Honeybadger แต่ในช่วงเวลานั้นฮันนี่แบดเจอร์มีความซับซ้อนมากขึ้น โดยขึ้นอยู่กับบริการประมาณ 10 รายการที่จะใช้งานได้ นั่นเป็นเหตุผลที่เรามุ่งสู่ Docker เพื่อพัฒนาท้องถิ่น แทนที่จะให้นักพัฒนาทุกคนต้องตั้งค่า Post
เมื่อคุณปรับใช้แอปพลิเคชันของคุณกับ EC2 ควรใช้กลุ่มการปรับขนาดอัตโนมัติ กลุ่มการปรับขนาดอัตโนมัติช่วยให้แอปพลิเคชันของคุณสามารถปรับขนาดขึ้นและลงเพื่อตอบสนองความต้องการ หรือกู้คืนจากอินสแตนซ์ที่ล้มเหลว ทั้งหมดนี้ไม่มีการแทรกแซงด้วยตนเอง อย่างไรก็ตาม เพื่อให้ทำงานได้ ตรวจสอบให้แน่ใจว่าทุกอินสแตนซ์พร้อ
ฉันไม่จบปริญญาวิทยาการคอมพิวเตอร์ พวกเราหลายคน Rubyists ไม่ทำ ดังนั้นฉันจึงหลีกเลี่ยงการเรียนรู้เกี่ยวกับสัญกรณ์ big-O เป็นเวลานาน มันดูคล้ายกับคณิตศาสตร์ที่สูงกว่าเล็กน้อย ฉันหมายถึง:O(N^2) . มาเร็ว. แต่ฉันได้เรียนรู้กฎทั่วไป: การค้นหารายการเฉพาะใน Hash นั้นเร็วกว่าใน Array หลีกเลี่ยงการวนซ้ำซ้อ
ทำไมการประชุม Ruby ถึงไม่พูดถึง Ruby อีกต่อไป การสนับสนุน Rocky Mountain Ruby 2016 ล่าสุดของเราแสดงให้เห็นถึงความหลากหลายที่เพิ่มขึ้นของชุมชน คนที่เราส่งให้การประชุมไม่ใช่นักพัฒนาโดยการค้า - และในวินาทีนั้นฉันกังวลเกี่ยวกับเนื้อหาทางเทคนิคของการเจรจา แต่หลังจากดูพวกเขา เห็นได้ชัดว่าแม้แต่ Rubyists
เมื่อวันก่อนฉันกำลังค้นหาคำแนะนำเกี่ยวกับข้อยกเว้น Ruby ที่เขียนขึ้นสำหรับผู้เริ่มต้น - ผู้ที่รู้ไวยากรณ์พื้นฐานของ Ruby แต่ไม่ค่อยแน่ใจว่าข้อยกเว้นคืออะไรหรือเหตุใดจึงมีประโยชน์ หาไม่เจอ เลยตัดสินใจไปเอง ฉันหวังว่าคุณพบว่ามีประโยชน์. หากมีประเด็นใดที่ทำให้สับสน โปรดทวีตหาฉันที่ @StarrHorne :) ข้อย
ฉันจำได้ครั้งแรกที่ฉันเห็น ActiveRecord ของราง มันเป็นการเปิดเผย ย้อนกลับไปในปี 2548 และฉันกำลังเขียนโค้ดคำสั่ง SQL ด้วยมือสำหรับแอป PHP ทันใดนั้น การใช้ฐานข้อมูลเปลี่ยนจากงานน่าเบื่อ เป็นงานง่ายและ - ฉันกล้าพูด - สนุก ...จากนั้น ผมก็เริ่มสังเกตเห็นปัญหาด้านประสิทธิภาพ ActiveRecord ไม่ได้ช้า ฉัน
หากคุณเคยทำงานกับข้อยกเว้นของ Ruby มาก่อน คุณจะรู้ว่าคุณสามารถระบุได้ว่าข้อยกเว้นใดจะได้รับการช่วยเหลือและข้อยกเว้นใดบ้าง: begin raise ArgumentError rescue ArgumentError # Rescues the `ArgumentError` end ...และคุณอาจรู้ว่าเมื่อคุณช่วย พ่อแม่ คุณก็ช่วย ลูกๆ ของมันด้วยเช่นกัน begin raise Arg
เมื่อคุณกำลังทำงานในโครงการใหม่ คุณกำลังตัดสินใจอยู่ตลอดเวลาซึ่งจะทำให้ง่ายขึ้นหรือยากขึ้นในการขยายขนาดในภายหลัง บางครั้งก็เป็นการดีที่จะเลือกกำไรระยะสั้น สะสมหนี้ทางเทคนิคเล็กน้อย เพื่อให้คุณสามารถจัดส่งได้เร็วขึ้น แต่ในบางครั้ง เรารับหนี้ทางเทคนิคเพราะเราไม่รู้ว่ามีทางเลือกอื่น ฉันสามารถพูดแบบนี
ที่ Honeybadger เราพึ่งพา Sidekiq อย่างมากในไปป์ไลน์การประมวลผลของเรา เกือบทุกอย่างที่เราทำจะผ่านคิวในบางจุด ด้วยเหตุนี้ ฉันต้องการให้แน่ใจว่าเรากำลังดำเนินการ Sidekiq เป็นอย่างดี ด้วยการย้ายไปยัง EC2 ครั้งล่าสุด เราเปลี่ยนจากการมีชุดเซิร์ฟเวอร์ที่มีอายุการใช้งานยาวนานที่เสถียรเป็นชุดอินสแตนซ์ที่เปล
คุณลักษณะใหม่ที่มาพร้อมกับ Ruby 2.4 นั้นได้รับการปรับปรุงการรองรับ Unicode โดยเฉพาะวิธีการเช่น upcase และ downcase ทำงานตามที่คาดไว้โดยเปลี่ยน ä เป็น Ä แล้วย้อนกลับ สิ่งนี้ทำให้ฉันสงสัย:มีการปรับปรุง Unicode อื่นใดอีกบ้างตั้งแต่ปี 2013 เมื่อฉันอ่านบล็อกโพสต์บล็อกของ André Arko ใน Ruby เป็น UTF-8 ตอน
หากคุณได้ติดตามความพยายามของ Ruby 3x3 คุณอาจเคยได้ยินเกี่ยวกับ Optcarrot มันเป็นโปรแกรมจำลอง NES ที่เขียนด้วย Ruby บริสุทธิ์ เมื่อเร็ว ๆ นี้ฉันได้ดูแหล่งที่มาของ Optcarrot และมีรายละเอียดที่น่าสนใจอย่างหนึ่งที่ติดอยู่กับฉัน ใช้ประโยชน์จากคุณลักษณะของแฮชของ Ruby อย่างกว้างขวางซึ่งมักถูกมองข้าม แต่ม
TLDR:สำหรับหัวข้อย่อย ให้ดูที่ CHANGELOG ฉันเพิ่งส่งการอัปเดตหลักล่าสุดไปยัง gem ของเราเพื่อรายงานข้อยกเว้นใน Ruby แม้ว่า v2release เป็นการเขียนใหม่ทั้งหมดซึ่งรวมถึงกลยุทธ์การกำหนดค่าใหม่ v3 มีการเปลี่ยนแปลงที่แตกหักน้อยกว่า แต่มีการปรับปรุงคุณสมบัติและการใช้งานมากมาย มีหลายสิ่งให้พูดถึง ดังนั้นฉั
ฉันเพิ่งเผยแพร่บทความที่ฉันทดสอบวิธีสตริงของ Ruby ส่วนใหญ่ด้วยอักขระ Unicode บางตัวเพื่อดูว่าจะทำงานโดยไม่คาดคิดหรือไม่ หลายคนทำ การวิจารณ์อย่างหนึ่งที่บางคนมีเกี่ยวกับบทความนี้คือฉันใช้สตริงที่ไม่ปกติสำหรับการทดสอบ พูดตามตรง ฉันรู้สึกคลุมเครือเล็กน้อยเกี่ยวกับการทำให้ Unicode เป็นมาตรฐาน ฉันสงสัยว
วันนี้ฉันอยากจะพูดเกี่ยวกับหนึ่งในเทคนิคที่ฉันโปรดปรานในการปรับปรุงประสิทธิภาพ เป็นแหล่งที่มาของประสิทธิภาพเล็กๆ น้อยๆ ที่เพิ่มพูนขึ้นในที่สุด และลดการใช้งานของคุณลงเหลือเพียงเศษหินที่คุกรุ่นเป็นบางครั้งเท่านั้น เป็นครั้งคราวเท่านั้น เทคนิคนี้เรียกว่า การท่องจำ แม้จะมีคำศัพท์วิทยาศาสตร์คอมพิวเตอร์
โมดูล (และคลาส) มีไว้เพื่อซ้อนกัน เศษโค้ด เช่น ActiveRecord::RecordNotFound เป็นเรื่องธรรมดามากจนเราไม่คิดถึงเรื่องนี้ซ้ำสอง แต่สิ่งที่ฝังอยู่ภายในการติดตั้งแบบซ้อนของ Ruby - และระบบโหลดอัตโนมัติของ Rails - เป็นกับดักสองสามอย่างที่อาจทำให้โค้ดของคุณล้มเหลวในรูปแบบที่แปลกและมหัศจรรย์ ในโพสต์นี้ เราจะ
ในฐานะนักพัฒนา เราใช้เวลามากมายในการทำให้โปรแกรมของเราทำงานจนมองข้ามไปได้ง่าย ๆ ว่าโปรแกรมเหล่านั้นจะออกอย่างไร และที่สำคัญ! เมื่อโปรแกรมของคุณทำงานอย่างถูกต้องเมื่อออก จะทำให้จัดการได้ง่ายขึ้นมาก และทำให้มีแนวโน้มที่จะทำงานกับเครื่องมือ devops มาตรฐานมากขึ้น มีหลายวิธีที่คุณสามารถออกจากโปรแกรม Rub
ทุกวันนี้เป็นเรื่องปกติที่จะเห็น #freeze ใช้ในรหัสทับทิม แต่มักไม่ชัดเจนว่าทำไมจึงมีการใช้การแช่แข็ง ในบทความนี้ เราจะพิจารณาสาเหตุที่พบบ่อยที่สุดที่นักพัฒนาซอฟต์แวร์อาจหยุดการทำงานของตัวแปร เพื่อแสดงเหตุผลแต่ละข้อ ฉันได้คัดลอกโค้ดตัวอย่างจาก Codebase ของ Rails และโครงการโอเพนซอร์สยอดนิยมอื่นๆ การสร