portaldacalheta.pt
  • หลัก
  • การจัดการวิศวกรรม
  • Kpi และ Analytics
  • เทคโนโลยี
  • ว่องไว
เทคโนโลยี

คุณสมบัติ Rails 6: มีอะไรใหม่และทำไมจึงมีความสำคัญ



เนื่องจากแฟน ๆ Ruby on Rails ส่วนใหญ่อาจทราบดีว่า Rails 6 กำลังจะเปิดตัวเร็ว ๆ นี้พร้อมกับนำเสนอคุณสมบัติและการเปลี่ยนแปลงที่รอคอยอย่างใจจดใจจ่อ จุดมุ่งหมายของบทความนี้คือเพื่อให้คุณคุ้นเคยกับคุณสมบัติหลักที่เพิ่มเข้ามาใน Rails 6 และสรุปว่าจะช่วยปรับปรุงแอปพลิเคชันของคุณให้ดีขึ้นได้อย่างไรซึ่งจะช่วยประหยัดเวลาในการพัฒนาอันมีค่า

สำหรับผู้เริ่มต้นโปรดจำไว้ว่า Rails 6 ต้องใช้ Ruby 2.5+ และฐานข้อมูลที่อัปเกรดแล้ว ดังนั้นตรวจสอบให้แน่ใจว่าคุณมีแผนที่จะอัปเกรดระบบของคุณตามนั้นในกรณีที่คุณยังไม่ได้ดำเนินการ



คุณสมบัติใหม่เหล่านี้คืออะไร? นี่คือสรุปสั้น ๆ เกี่ยวกับคุณลักษณะสำคัญของ Rails 6 ที่คุณน่าจะใช้ในการก้าวไปข้างหน้า:



การทดสอบใน Rails 6

อย่างมืออาชีพ นักพัฒนา Ruby on Rails เรามุ่งมั่นที่จะรับประกันความครอบคลุมสูงสุดสำหรับรหัสของเรา อย่างไรก็ตามการทดสอบจะกลายเป็นกิจกรรมที่น่าเบื่อเมื่อกรณีทดสอบของเรา 'หนัก' และเราต้องรอหลายนาทีหรือหลายชั่วโมงเพื่อให้กรณีทดสอบดำเนินการ



การทดสอบแบบขนาน

Rails 6 มีคำตอบที่นี่ ได้เพิ่ม parallelize วิธีการ ActiveSupport::TestCase ซึ่งช่วยให้คุณสามารถขนานชุดทดสอบด้วยกระบวนการแยก

ดังนั้นสิ่งที่คุณต้องทำเพื่อทำให้กระบวนการสำหรับการทดสอบของคุณขนานกันคือเพิ่มสิ่งนี้ใน test_helper.rb ของคุณ:



parallelize(workers: 2)

หรือเราสามารถแทนที่คำสั่งที่ใช้ก่อนหน้านี้สำหรับการเรียกใช้การทดสอบ ตัวอย่างเช่น bin/rails test OR bin/rspec spec ตอนนี้สามารถแทนที่ด้วย PARALLEL_WORKERS=15 rails test OR PARALLEL_WORKERS=15 rspec spec

ดังนั้นคุณสามารถเปลี่ยนคำสั่งสำหรับเรียกใช้ชุดทดสอบบนแพลตฟอร์ม CI ต่างๆเช่น Travis, Gitlab, CircleCI และอื่น ๆ



คอร์ปอเรชั่น กับ ค คอร์ปอเรชั่น คืออะไร

นอกจากนี้ยังมีตะขอเมื่อแต่ละกระบวนการถูกสร้าง / ทำลายซึ่งสามารถใช้ได้ดังนี้:

class ActiveSupport::TestCase parallelize_setup do |worker| # setup databases end parallelize_teardown do |worker| # cleanup databases end parallelize(workers: :number_of_processors) end

บันทึก: หากคุณต้องการเรียนรู้เพิ่มเติมคุณสามารถตรวจสอบ คู่มือราง สำหรับรายละเอียดเพิ่มเติม



การทดสอบสายเคเบิลแอ็คชั่น

เนื่องจากเรากำลังพูดถึงการทดสอบที่มีประสิทธิภาพเรามาทำความเข้าใจกันว่า Action Cable ซึ่งเป็นหนึ่งในคุณสมบัติเด่นที่สุดของ Rails 5 ได้รับการปรับปรุงอย่างไร ตอนนี้คุณสามารถทดสอบ Action Cable ได้ทุกระดับ: การเชื่อมต่อ , ช่อง และ การออกอากาศ .

การทดสอบการเชื่อมต่อ มีจุดมุ่งหมายเพื่อตรวจสอบว่ามีการกำหนดตัวระบุของการเชื่อมต่ออย่างถูกต้องหรือไม่หรือคำขอเชื่อมต่อที่ไม่เหมาะสมจะถูกปฏิเสธ:



class ApplicationCable::ConnectionTest

การทดสอบช่อง สามารถเขียนเพื่อตรวจสอบว่าผู้ใช้สามารถติดตามช่องได้หรือไม่และช่องนั้นมีสตรีม:

class ChatChannelTest

ออกอากาศไปยังช่อง สามารถทดสอบได้ดังนี้:



# app/jobs/chat_relay_job.rb class ChatRelayJob

บันทึก: ดูเคล็ดลับเพิ่มเติมเกี่ยวกับวิธีการทดสอบได้ ที่นี่ .

การแทรกและการเพิ่มจำนวนมาก

ในบางจุดเราทุกคนต้องแทรกระเบียนหลายรายการในคราวเดียวและพบวิธีแก้ปัญหามากมายเมื่อทำเช่นนั้น Rails 6 มาพร้อมกับวิธีการใหม่นอกกรอบ - insert_all คล้ายกับ update_all

จะไม่เริ่มการเรียกกลับใด ๆ และจะดำเนินการค้นหา SQL เพียงครั้งเดียว มีวิธีการเพิ่มเติม upsert_all ซึ่งช่วยให้คุณสามารถใช้ไฟล์ เพิ่มการดำเนินการ ซึ่งเปิดเผยโดยฐานข้อมูลสมัยใหม่มากมายเช่น Postgres ตอนนี้คุณสามารถลดการค้นหาการแทรกของคุณและทำให้โค้ดของคุณมีประสิทธิภาพมากขึ้น นอกจากนี้บอกลาอัญมณีที่ใช้ก่อนหน้านี้เช่น activerecord-import

เดียว INSERT แบบสอบถาม SQL จัดทำโดยวิธีการเหล่านี้และคำสั่ง SQL เดียวจะถูกส่งไปยังฐานข้อมูลโดยไม่ต้องสร้างอินสแตนซ์โมเดลหรือเรียกใช้การเรียกกลับและการตรวจสอบ Active Record นอกจากนี้ยังสามารถกำหนดเกณฑ์เมื่อคีย์หลัก - ดัชนีที่ไม่ซ้ำกันหรือข้อ จำกัด ที่ไม่ซ้ำกันถูกละเมิดโดยมีตัวเลือกในการข้ามหรือเรียกใช้การค้นหาที่เพิ่มขึ้น

ตัวอย่างบางส่วนอยู่ด้านล่าง:

result = Article.insert_all( [ { id: 1, title: 'Handling 1M Requests Per Second', author: 'John', slug: '1m-req-per-second' }, #...snip... ], returning: %w[ id title ], unique_by: :index_articles_on_title_and_author ) result = Article.upsert_all( [ { id: 1, title: 'Handling 1M Requests Per Second', author: 'John', slug: '1m-req-per-second' }, { id: 1, .... }, # duplicate 'id' here { id: 2, .... }, { id: 3, .... }, # duplicate 'title' and 'author' here { id: 4, .... }, { id: 5, .... }, # duplicate 'slug' here { id: 6, .... } ] )

วิธีการ insert, insert! และ upsert เป็นห่อรอบ insert_all, insert_all! และ upsert_all ตามลำดับ

บันทึก: มีบทความที่ดีมากซึ่งกล่าวถึงการสืบค้นข้อมูลจำนวนมากเกี่ยวกับฐานข้อมูลที่แตกต่างกัน หากคุณต้องการข้อมูลเพิ่มเติมโปรดตรวจสอบว่าคุณ ลองดูสิ .

การสลับระหว่างฐานข้อมูลหลายฐานข้อมูล

หนึ่งในคุณสมบัติหลักของแอพพลิเคชั่นขนาดใหญ่ที่หลายคนชื่นชอบก็คือคุณสมบัตินี้: Rails 6 ได้เพิ่มการรองรับฐานข้อมูลที่หลากหลายสำหรับแอปพลิเคชันของคุณในตัวและพร้อมใช้งานทันที!

แผนภาพการสลับระหว่างฐานข้อมูล

แฮ็คหมายเลขบัตรเครดิตที่ถูกต้อง

แน่นอนว่าตัวเลือกการออกแบบยังคงเป็นของคุณไม่ว่าคุณจะต้องการแยกแอปพลิเคชันของคุณออกเป็นไมโครเซอร์วิสหลาย ๆ ตัวโดยแต่ละตัวจะมีฐานข้อมูลแยกกันหรือใช้เส้นทางเสาหินหรือเพิ่มแบบจำลองการอ่านสำหรับแอปพลิเคชันของคุณ

อย่างไรก็ตามการมีความสามารถในการทำได้ง่ายเช่นนี้มีศักยภาพในการประหยัด มาก ของเวลาในการพัฒนา

นี่คือวิธีใหม่ของคุณ database.yml ไฟล์จะมีลักษณะ:

development: primary: database: my_primary_db user: root primary_replica: database: my_primary_db user: ro_user replica: true animals: database: my_animals_db user: root animals_replica database: my_animals_db user: ro_user replica: true

วิธีที่น่าสนใจในการระบุวิธีเปลี่ยนไปใช้ฐานข้อมูลต่างๆมีดังนี้

class AnimalsModel

ที่นี่คือ หน้า GitHub อย่างเป็นทางการ ซึ่งได้รับการบันทึกไว้อย่างดีเช่นกัน โดยส่วนตัวแล้วฉันรอคอยที่จะมีความสามารถในการแบ่งฐานข้อมูลในการอัปเดต Rails ในอนาคตเช่นกัน (เช่น นี้ ).

กล่องจดหมายการดำเนินการ

คุณลักษณะ Rails 6 ที่น่าสนใจอีกประการหนึ่งคือการเพิ่ม กล่องจดหมายการดำเนินการ ซึ่งเพิ่มความสามารถให้กับ กำหนดเส้นทางอีเมลขาเข้า ไปยังคอนโทรลเลอร์เช่นกล่องจดหมายสำหรับการประมวลผลใน Rails

Action Mailbox มีทางเข้าสำหรับ Mailgun, Mandrill, Postmark และ SendGrid คุณยังสามารถจัดการกับอีเมลขาเข้าได้โดยตรงผ่านทางเข้า Exim, Postfix และ Qmail ในตัว ตอนนี้คุณสามารถจินตนาการถึงประโยชน์ที่อาจเกิดขึ้นได้โดยไม่ต้องลงรายละเอียดเพิ่มเติม อาจเป็นการประมวลผลอีเมลโดยตรงจากฝ่ายช่วยเหลือไปยังตั๋วสนับสนุนอัตโนมัติ Rails 6 ช่วยให้ลูกค้าสามารถตอบกลับโดยตรงทางอีเมลและอื่น ๆ อีกมากมาย ชั้นเปิดให้คุณสำรวจคุณลักษณะนี้และหาแนวทางที่เหมาะสำหรับการใช้งานของคุณ

นี่คือตัวอย่างเล็ก ๆ เพื่อทำความเข้าใจวิธีใช้ Action Mailbox:

COMMENTS_REGEX = /^comment+(.+)@example.com/i # app/mailboxes/application_mailbox.rb class ApplicationMailbox :comments end # app/mailboxes/comments_mailbox.rb class CommentsMailbox

นอกจากนี้วิธีใหม่ในการกำหนดค่าอีเมลมีดังนี้ (โดยใช้ตัวอย่าง Sendgrid):

# config/environments/production.rb config.action_mailbox.ingress = :sendgrid

ใช้ rails credentials:edit เพื่อเพิ่มรหัสผ่านลงในข้อมูลรับรองที่เข้ารหัสของแอปพลิเคชันของคุณภายใต้ action_mailbox.ingress_password โดยที่ Action Mailbox จะค้นหาโดยอัตโนมัติ:

action_mailbox: ingress_password: …

กำหนดค่า SendGrid Inbound Parse เพื่อส่งต่ออีเมลขาเข้าไปยัง /rails/action_mailbox/sendgrid/inbound_emails ด้วยชื่อผู้ใช้ actionmailbox และรหัสผ่านที่คุณสร้างไว้ก่อนหน้านี้ หากแอปพลิเคชันของคุณอยู่ที่ https://example.com คุณต้องกำหนดค่า SendGrid ด้วย URL ต่อไปนี้:

https://actionmailbox: [email protected] /rails/action_mailbox/sendgrid/i

ในกรณีที่คุณต้องการสำรวจเพิ่มเติม Rails มีคำแนะนำเกี่ยวกับเรื่องนี้อยู่แล้ว ที่นี่ .

Zeitwerk

Zeitwerk เป็นตัวโหลดโค้ดใหม่สำหรับ Ruby ด้วยโครงสร้างไฟล์แบบเดิม Zeitwerk จะโหลดคลาสและโมดูลของโปรเจ็กต์ของคุณตามความต้องการซึ่งหมายความว่าคุณไม่จำเป็นต้องเขียนต้องเรียกไฟล์ของคุณเอง หากต้องการเปิดใช้งานใน Rails 6 คุณสามารถดำเนินการดังต่อไปนี้:

config.autoloader = :zeitwerk

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ Zeitwerk ที่นี่ .

คำแนะนำเครื่องมือเพิ่มประสิทธิภาพ

คุณกังวลว่าข้อความค้นหาของคุณใช้เวลาดำเนินการนานเกินไปหรือไม่? ตอนนี้คุณมีวิธีกำหนดการหมดเวลาสำหรับคำถามของคุณแล้วเช่นกัน

ข้อความต่อไปนี้จะเพิ่ม StatementTimeout ข้อยกเว้นหากแบบสอบถามใช้เวลาดำเนินการนานกว่าปกติ:

User.optimizer_hints('MAX_EXECUTION_TIME(5000)').all

รองรับโดย MySQL และคุณจะต้องสำรวจว่าฐานข้อมูลของคุณรองรับหรือไม่

ตัดทอนฐานข้อมูล

สิ่งที่เกี่ยวกับการเพาะข้อมูล? คำสั่งต่อไปนี้จะตัดทอนตารางฐานข้อมูลทั้งหมดของคุณจากนั้นคุณสามารถดำเนินการเริ่มต้นข้อมูลของคุณได้:

rails db:truncate_all

ไม่ต้องลบฐานข้อมูลของคุณเพื่อเริ่มต้นอีกต่อไป คุณอาจเห็นด้วยว่านี่เป็นวิธีแก้ปัญหาที่สวยงามและรวดเร็ว

ข้อความการดำเนินการ

บางทีคุณสมบัติที่โดดเด่นอีกอย่างสำหรับแอพพลิเคชั่นจำนวนมากที่เล่นกับโปรแกรมแก้ไขแบบ WYSIWYG คือการเพิ่มการสนับสนุนสำหรับ บรรณาธิการ Trix โดยกำเนิดในแอปพลิเคชัน Rails 6 นี่จะเป็นการอัพเกรด / เพิ่มเติมที่ดีสำหรับหลาย ๆ โครงการอย่างแน่นอน

โปรแกรมแก้ไข HTML แบบ WYSIWYG ส่วนใหญ่มีขอบเขตอย่างมาก - การใช้งานของเบราว์เซอร์แต่ละตัวจะมีชุดข้อบกพร่องและนิสัยใจคอเป็นของตัวเองและนักพัฒนา JavaScript ก็ต้องแก้ไขปัญหาที่ไม่สอดคล้องกัน Trix หลีกเลี่ยงความไม่สอดคล้องกันเหล่านี้โดยการรักษา contenteditable เป็นอุปกรณ์ I / O: เมื่ออินพุตเข้าสู่ตัวแก้ไข Trix จะแปลงอินพุตนั้นเป็นการดำเนินการแก้ไขบนโมเดลเอกสารภายในจากนั้นแสดงเอกสารนั้นกลับเข้าไปในเอดิเตอร์อีกครั้ง สิ่งนี้ทำให้ Trix สามารถควบคุมสิ่งที่เกิดขึ้นหลังจากการกดแป้นพิมพ์ทุกครั้งได้อย่างสมบูรณ์

การติดตั้ง:

rails action_text:install # app/models/message.rb class Message

คุณสามารถสำรวจ ข้อความการดำเนินการ ในรายละเอียดเพิ่มเติมในเอกสารอย่างเป็นทางการ ที่นี่ .

ความปลอดภัย

ไม่มีการอัปเกรดอย่างจริงจังเสร็จสมบูรณ์หากไม่มีการปรับปรุงความปลอดภัยเล็กน้อย Rails 6 ก็ไม่ทำให้ผิดหวังในด้านการรักษาความปลอดภัยเช่นกัน การอัปเกรดความปลอดภัยครั้งแรกที่โดดเด่นคือการเพิ่มการสนับสนุนสำหรับ การอนุญาตโฮสต์ .

Host Authorization คือมิดเดิลแวร์ใหม่ที่ป้องกัน DNS rebinding การโจมตีโดยอนุญาตอย่างชัดเจนโฮสต์สามารถส่งคำขอไปยัง สิ่งนี้หมายความว่าคุณสามารถกำหนดโฮสต์ที่สามารถเข้าถึงแอปพลิเคชันของคุณได้

การอัปเกรดการรักษาความปลอดภัยอีกครั้งมีจุดมุ่งหมายเพื่อป้องกันการโจมตีที่พยายามคัดลอกค่าที่ลงชื่อ / เข้ารหัสของคุกกี้และใช้เป็นมูลค่าของคุกกี้อื่น ทำได้โดยการซ่อนชื่อคุกกี้ในช่องวัตถุประสงค์ซึ่งจะถูกเซ็น / เข้ารหัสพร้อมกับค่าคุกกี้ จากนั้นในฝั่งเซิร์ฟเวอร์จะอ่านเราตรวจสอบชื่อคุกกี้และทิ้งคุกกี้ที่ถูกโจมตี เปิดใช้งาน action_dispatch.use_cookies_with_metadata เพื่อใช้คุณลักษณะนี้ซึ่งเขียนคุกกี้ด้วยวัตถุประสงค์ใหม่และฝังข้อมูลเมตาที่หมดอายุไว้

Webpack เป็น Bundler เริ่มต้น

ตามที่เป็นมาตรฐานโดยพฤตินัยที่มีเฟรมเวิร์ก JavaScript ที่ทันสมัยมากมายสำหรับการพัฒนาส่วนหน้า Rails 6 ได้เพิ่ม Webpack เป็นชุดรวม JavaScript เริ่มต้นผ่านอัญมณีของเว็บแพ็กเกอร์แทนที่ไปป์ไลน์ Rails Asset นี่เป็นการเพิ่มเติมที่ค่อนข้างตรงไปตรงมาและเราจะไม่ลงรายละเอียดมากนัก พอจะกล่าวได้ว่า Webpack จะช่วยบรรเทาให้กับนักพัฒนาส่วนหน้าที่ทำงานหนักเกินไป

การป้องกันสภาพการแข่งขัน

Rails 6 มีวิธีการใหม่ที่ใช้เพื่อป้องกันเงื่อนไขการแข่งขัน SELECT / INSERT ในโค้ดของเรา (ฉันแน่ใจว่าผู้อ่านหลายคนมีความโชคร้ายที่ต้องเผชิญกับสภาพการแข่งขันขณะที่พวกเขาปรับขนาดโครงการของพวกเขา) ที่นี่คือ เธรด GitHub ในกรณีที่คุณต้องการข้อมูลเพิ่มเติม

ตารางพื้นฐานต้องมีคอลัมน์ที่เกี่ยวข้องที่กำหนดด้วยข้อ จำกัด เฉพาะ แม้ว่าเราจะหลีกเลี่ยงเงื่อนไขการแข่งขันระหว่าง SELECT → INSERT จาก #find_or_create_by แต่จริงๆแล้วเรามีเงื่อนไขการแข่งขันระหว่าง INSERT → SELECT ซึ่งสามารถทริกเกอร์ได้หากการลบระหว่างสองคำสั่งนั้นถูกเรียกใช้โดยไคลเอนต์อื่น แต่สำหรับแอปพลิเคชันส่วนใหญ่นั่นเป็นเงื่อนไขที่เรามีโอกาสโดนน้อยมาก

ข้อมูลรับรองใน Rails 6

ตั้งแต่สมัยของ Rails 5.2 ข้อมูลประจำตัวได้รับการตั้งชื่อใหม่ว่า 'Rails way' เพื่อจัดการกับข้อมูลที่ละเอียดอ่อนพร้อมสัญญาว่าจะกำจัดสิ่งที่น่าอับอาย .env ไฟล์ครั้งแล้วครั้งเล่า ด้วยข้อมูลรับรองคีย์ที่เข้ารหัสสำหรับบริการของบุคคลที่สามสามารถตรวจสอบได้โดยตรงในตัวควบคุมต้นทาง

อย่างไรก็ตามจนถึงตอนนี้ Rails ใช้ไฟล์เข้ารหัสเดียวกันสำหรับทุกสภาพแวดล้อมซึ่งทำให้การจัดการกับคีย์ที่แตกต่างกันในการพัฒนาและการผลิตเป็นเรื่องยุ่งยากเล็กน้อยโดยเฉพาะอย่างยิ่งเมื่อต้องจัดการกับโปรเจ็กต์ขนาดใหญ่และรหัสเดิม

ใน Rails 6 สิ่งนี้ได้รับการแก้ไขในที่สุดด้วยการรองรับข้อมูลประจำตัวต่อสภาพแวดล้อม อีกครั้งรายละเอียดเพิ่มเติมสามารถสำรวจได้อย่างเป็นทางการ เธรด GitHub .

Rails 6 เป็นการอัพเดทที่ดีหรือไม่?

ใช่และในความเป็นจริง Rails 6 สามารถอธิบายได้ว่าเป็นการอัปเดตที่สำคัญแม้ว่าจะมีเพียงไม่กี่คนที่เรียกมันว่าตัวเปลี่ยนเกม เนื่องจาก Ruby on Rails มีมานานหลายปีแล้วจึงมีคนเพียงไม่กี่คนที่คาดหวังการเปลี่ยนแปลงในเชิงปฏิวัติ แต่การเกิดใหม่ครั้งที่หกของมันนำมาสู่ตารางมากมาย

คุณลักษณะบางอย่างที่เปิดตัวใน Rails 6 ดูเหมือนเป็นการปรับปรุงเล็กน้อยในขณะที่คุณสมบัติอื่น ๆ มีศักยภาพในการประหยัดเวลาในการพัฒนาได้มากปรับปรุงความปลอดภัยความแข็งแกร่งและอื่น ๆ บรรทัดล่าง: รางเป็นผู้ใหญ่ นักพัฒนาจำนวนมากยังคงกระตือรือร้นเกี่ยวกับอนาคต และด้วยการเปิดตัว Rails 6 มันก็ดีขึ้นกว่าเดิม

แน่นอนว่ารายการคุณลักษณะของ Rails 6 นี้ไม่สมบูรณ์และหากต้องการดูชุดการเปลี่ยนแปลงทั้งหมดคุณต้องตรวจสอบบันทึกการเปลี่ยนแปลง นอกจากนี้ยังมีการเลิกใช้งานจำนวนมากที่คุณควรพิจารณา สุดท้ายหากคุณยืนยันที่จะดำเนินการเปลี่ยนแปลงทุกอย่างและอัปเดตตัวเองโปรดอ่านไฟล์ บันทึกประจำรุ่นฉบับเต็ม .

ทำความเข้าใจพื้นฐาน

Ruby on Rails ยังคงมีความเกี่ยวข้องในปี 2019 หรือไม่?

Rails มีความเกี่ยวข้องมากกว่าโซลูชันอื่น ๆ ในตลาด Rails และ Ruby กำลังอัพเกรด (Matz กำลังทำให้ Ruby 3X เร็วขึ้น) Rails 6 นำเสนอเทคนิคง่ายๆในการปรับขนาดแอปพลิเคชันของคุณโดยกำเนิด และยังคงเป็นตัวเลือกที่เชื่อถือได้โดยผู้เล่นรายใหญ่หลายรายเช่น Github, Shopify, Basecamp และอีกมากมาย

สื่อดิจิทัล vs การออกแบบกราฟิก

ฉันควรใช้ Rails หรือไม่?

คำตอบขึ้นอยู่กับกรณีการใช้งานของคุณ ยังคงเป็นเฟรมเวิร์กที่ดีที่สุดสำหรับเว็บอีคอมเมิร์ซการจัดการเนื้อหาและแอปพลิเคชันประเภทอื่น ๆ อีกมากมาย นอกจากนี้ยังช่วยลดเวลาในการพัฒนา MVP และเป็นตัวเลือกที่ยอดเยี่ยมเมื่อคุณไม่มีแนวคิดที่ตายตัวหรือต้องการต้นแบบที่รวดเร็วสำหรับแอปพลิเคชันของคุณ

Upsert หมายถึงอะไร?

Upsert คือการดำเนินการฐานข้อมูลซึ่งหมายความว่าขึ้นอยู่กับแอตทริบิวต์ที่จัดเตรียมไว้สำหรับการดำเนินการหากมีระเบียนอยู่แล้วในฐานข้อมูลเราต้องการอัปเดตระเบียนนั้นหรือสร้างระเบียนใหม่หากไม่มีระเบียน Upsert เกิดขึ้นในธุรกรรมเดียวจึงป้องกันไม่ให้เกิดเงื่อนไขการแข่งขันในแอปพลิเคชัน

ข้อดีของการทดสอบแบบขนานคืออะไร?

เราได้เห็นโครงการที่ต้องใช้เวลาหลายชั่วโมงในการเรียกใช้กรณีทดสอบ ด้วยการเรียกใช้ชุดกรณีทดสอบในกระบวนการต่างๆเราสามารถลดระยะเวลาดำเนินการของกรณีทดสอบของเราได้ ด้วยการทดสอบแบบขนาน Rails 6 เราจะไม่ต้องพึ่งพาบริการภายนอกเพื่อทำแบบขนานกรณีทดสอบของเรา

เคล็ดลับพอร์ตโฟลิโอ UX และแนวทางปฏิบัติที่ดีที่สุด

การออกแบบ Ux

เคล็ดลับพอร์ตโฟลิโอ UX และแนวทางปฏิบัติที่ดีที่สุด
One Size Close To: คำแนะนำในการตอบสนองโซลูชั่นภาพในการออกแบบเว็บไซต์

One Size Close To: คำแนะนำในการตอบสนองโซลูชั่นภาพในการออกแบบเว็บไซต์

ส่วนหน้าของเว็บ

โพสต์ยอดนิยม
Nvidia Shield - สิ่งที่แตกต่างบนคอนโซลเกม Android
Nvidia Shield - สิ่งที่แตกต่างบนคอนโซลเกม Android
แผ่นโกงการจัดการโครงการ
แผ่นโกงการจัดการโครงการ
เริ่มต้นใช้งาน Microservices: บทช่วยสอน Dropwizard
เริ่มต้นใช้งาน Microservices: บทช่วยสอน Dropwizard
การแยกการเรียกเก็บเงิน: เรื่องของการเพิ่มประสิทธิภาพ API ภายใน GraphQL
การแยกการเรียกเก็บเงิน: เรื่องของการเพิ่มประสิทธิภาพ API ภายใน GraphQL
กรณีศึกษา: การใช้ ApeeScape เพื่อม้วนปลาใหญ่
กรณีศึกษา: การใช้ ApeeScape เพื่อม้วนปลาใหญ่
 
การประมาณต้นทุนซอฟต์แวร์ในการจัดการโครงการแบบ Agile
การประมาณต้นทุนซอฟต์แวร์ในการจัดการโครงการแบบ Agile
แชทล่ม - เมื่อ Chatbot ล้มเหลว
แชทล่ม - เมื่อ Chatbot ล้มเหลว
ที่ปรึกษาการระดมทุนกับนายหน้า - ตัวแทนจำหน่าย
ที่ปรึกษาการระดมทุนกับนายหน้า - ตัวแทนจำหน่าย
ทำให้ Web Front-end เชื่อถือได้ด้วย Elm
ทำให้ Web Front-end เชื่อถือได้ด้วย Elm
คู่มือสำหรับนักลงทุนเกี่ยวกับน้ำมันปาล์ม
คู่มือสำหรับนักลงทุนเกี่ยวกับน้ำมันปาล์ม
โพสต์ยอดนิยม
  • เมื่อใดจึงจะใช้โหนด js
  • สิ่งที่ทำให้ฐานข้อมูลที่ดี
  • กวดวิชาสปริง mvc สำหรับผู้เริ่มต้น
  • ปัญหาและแนวทางแก้ไขด้านความปลอดภัยของเว็บแอปพลิเคชัน
  • วิธีให้คุณค่ากับบริษัทเทคโนโลยีชีวภาพ
หมวดหมู่
  • การจัดการวิศวกรรม
  • Kpi และ Analytics
  • เทคโนโลยี
  • ว่องไว
  • © 2022 | สงวนลิขสิทธิ์

    portaldacalheta.pt