สวัสดี ยินดีต้อนรับสู่ LCBO API ?
หากคุณพบว่าตัวเองสงสัยว่า "LCBO API คืออะไร" ให้ฉันอธิบาย ในออนแทรีโอ ประเทศแคนาดา การขายเครื่องดื่มแอลกอฮอล์ทั้งหมดจะต้องดำเนินการผ่านองค์กรของรัฐบาลที่เรียกว่าคณะกรรมการควบคุมสุราแห่งออนแทรีโอ (LCBO) ซึ่งดูแลการขายปลีกและการจัดจำหน่ายเครื่องดื่มแอลกอฮอล์ทั่วทั้งจังหวัด LCBO มีร้านค้าปลีกจำนวนมากและเว็บไซต์ที่โฮสต์แค็ตตาล็อกของทุกผลิตภัณฑ์ ร้านค้า และแม้แต่ระดับสินค้าคงคลัง พวกเขาเผยแพร่แคตตาล็อกตามฤดูกาลพร้อมสูตรอาหาร บทบรรณาธิการ และเนื้อหาอื่นๆ ที่เรียกว่าอาหารและเครื่องดื่ม พวกเขายังบริจาครายได้หลายพันล้านดอลลาร์ให้กับระบบการรักษาพยาบาลสาธารณะของเราทุกปี มันเป็นสถานการณ์ที่น่าทึ่งเมื่อคุณลองคิดดู สถานที่อื่นๆ ก็มีระบบที่คล้ายกัน แต่ตามความรู้ของฉัน ไม่มี LCBO ที่กว้างและลึกเท่านี้ ตอนนี้คุณรู้ว่ามันคืออะไร เจ๋งใช่มั้ย?
สิ่งนี้อาจน่าสนใจสำหรับคุณแม้ว่าคุณจะไม่ได้อาศัยอยู่ในออนแทรีโอ แคนาดาก็ตาม หาก:
ตลอดระยะเวลาของโครงการนี้ ฉันต้องดิ้นรนอย่างมากกับแนวคิดในการรับการสนับสนุนทางการเงิน ในด้านหนึ่ง LCBO API จำเป็นต้องใช้มัน อีกด้านหนึ่ง ฉันรู้สึกเบื่อหน่ายกับความยุ่งยากที่อาจเกิดขึ้น ตอนนี้ฉันมีวิธีแก้ปัญหา ที่สมบูรณ์แบบ สำหรับปัญหานี้แล้ว!
ตอนนี้ฉันกำลังรักษาโรคมะเร็งเม็ดเลือด โดยเฉพาะมะเร็งต่อมน้ำเหลืองบีเซลล์ขนาดใหญ่ชนิดแพร่กระจาย ฉันจะเขียนเพิ่มเติมเกี่ยวกับเรื่องนั้นเร็วๆ นี้ที่อื่น แต่ในปีที่ผ่านมา ผู้คนจากทุกที่สนับสนุนฉันในทุกวิถีทางที่ทำได้ และมันทำให้ฉันเปลี่ยนไป ฉันอยากให้เราทำสิ่งที่ยิ่งใหญ่เพื่อแสดงว่าเราใส่ใจเหมือนกัน!
หากคุณเคยต้องการสนับสนุนโครงการนี้ในอดีต โปรดบริจาคเงินให้กับ Hamilton Health Sciences ในนามของ LCBO API พวกเขากำลังช่วยชีวิตฉันอยู่
บริจาคให้กับ Hamilton Health Sciences
ฉันกำลังเข้ารับการรักษาที่ Juravinski Cancer Center แต่จริงๆ แล้วคุณสามารถเลือกทางเลือกใดก็ได้ หรือจะคงไว้ตามค่าเริ่มต้นก็ได้ ไม่สำคัญว่าจำนวนจะน้อยหรือมาก พวกเขาจะแจ้งให้ฉันทราบเมื่อคุณบริจาค ฉันจะจัดทำตารางรายการเพื่อติดตามยอด มาดูกันว่าเราจะระดมทุนได้เท่าไหร่!
สุดท้ายนี้ ฉันอยากจะกล่าวถึงที่ทำงานของฉันเป็นพิเศษ Crowdmark พวกเขาใจดีและเข้าอกเข้าใจกันอย่างไม่น่าเชื่อตลอดมา และฉันก็คงไม่สามารถทำได้หากไม่มีพวกเขา เรากำลังทำงานอย่างไม่รู้จักเหน็ดเหนื่อยเพื่อพัฒนาสถานะปัจจุบันของการประเมินในระดับอุดมศึกษา หากคุณใส่ใจเรื่องการศึกษาและการเรียนรู้ ฉันขอแนะนำให้คุณลองดูเรา
ในฤดูใบไม้ร่วงปี 2551 ฉันเป็นนักพัฒนาเว็บน้องใหม่โดยมีประสบการณ์ไม่กี่ปี ฉันหิวกระหายความท้าทายและได้รับการยอมรับ แอพกำลังกลายมาเป็นสิ่งที่สำคัญในเวลานั้น และผมอยากสร้างมันขึ้นมาอย่างยิ่ง ฉันตัดสินใจว่าจะต้องการสร้างสิ่งที่ต้องสร้าง API นี้ก่อน ฉันไม่เคยสร้างแอปนั้นเลยเหรอ?
หากคุณพิจารณา Codebase นี้นานพอ คุณมีแนวโน้มที่จะพบกับช่วงเวลาแห่งความหงุดหงิด จุดจบ ความสับสนวุ่นวาย ฯลฯ ฉันหวังว่าคุณจะไม่มุ่งเน้นไปที่สิ่งนั้นหรือคิดในแง่ลบใดๆ ที่คุณอาจพบ ฉันไม่ใช่คนคนนั้นอีกต่อไปแล้ว และฉันก็ไม่อยากให้คุณเป็นคนนั้นด้วย ฉันเป็นหนังสือที่เปิดกว้างเกี่ยวกับเรื่องนี้! เปิดประเด็นแล้วถามคำถาม ฉันจะซื่อสัตย์และให้ความเคารพมากที่สุด ฉันขอให้คุณทำเช่นเดียวกันเท่านั้น
ฉันกำลังปล่อยโปรเจ็กต์นี้ภายใต้ GNU GPLv3 ฉันคิดว่านี่เป็นตัวเลือกที่ยุติธรรมและมีความรับผิดชอบที่สุดสำหรับโปรเจ็กต์ประเภทนี้ หากคุณรู้สึกแตกต่าง ให้เปิดประเด็นแล้วเราจะพูดคุยกันอย่างเปิดเผยเกี่ยวกับเรื่องนี้ ฉันเพียงแต่ขอด้วยความเคารพว่าคุณอย่านำตราสินค้าและการออกแบบมาใช้ซ้ำ ฉันพอใจกับการนำเอกสารกลับมาใช้ซ้ำได้ แต่ต้องเปลี่ยนสไตล์ ข้อมูลประจำตัว และตราสินค้า หากคุณต้องการปรับใช้แอปเวอร์ชันแยกส่วนของคุณเอง
จะเกิดอะไรขึ้นหากแทนที่จะใช้แอปพลิเคชันขนาดใหญ่ที่พยายามทำทุกอย่างในรูปแบบเดียวในที่เดียว เรากลับคิดว่าใหญ่กว่านี้ล่ะ? จะเกิดอะไรขึ้นหากโปรแกรมรวบรวมข้อมูลเป็นโปรเจ็กต์ที่แยกจากกันอีกครั้ง ซึ่งรับผิดชอบในการรวบรวมและทำให้ข้อมูลเป็นมาตรฐาน ผู้อื่นสามารถสร้างโหนด API ในแพลตฟอร์มใดก็ได้ที่พวกเขาต้องการ โหนดเหล่านั้นจะลงทะเบียนกับผู้ให้บริการข้อมูลและรับข้อมูลที่อัปเดตทันทีที่พร้อมใช้งานและให้ข้อมูลนั้นแก่ ผู้ใช้ทุกประเภท
แทนที่จะมีเซิร์ฟเวอร์ API ที่คล้ายกันหลายสิบตัวที่พยายามทำสิ่งเดียวกัน การต่อสู้เพื่อทรัพยากรของ LCBO.com เราสามารถมุ่งเน้นความพยายามของเราในการสร้างมูลค่าให้กับข้อมูลนี้ แทนที่จะต่อสู้เพื่อเป็นเจ้าของข้อมูลนั้น เราสามารถนำระเบียบวินัยอื่นๆ เข้ามาเกี่ยวข้องเพื่อสร้างมูลค่าใหม่ที่เหนือกว่าที่เห็นได้ชัด ให้ชุมชนคราฟต์เบียร์และไวน์มีส่วนร่วม สร้างสิ่งนี้ขึ้นมา ทำให้มันใหญ่กว่าออนแทรีโอ
ฉันไม่รู้ว่าเรื่องแบบนั้นจะเป็นไปได้แค่ไหน แต่ฉันรู้ว่าถ้ามีคนอื่นสนใจ ฉันอยากจะพูดคุยเรื่องนี้
นอกจากนี้ บางทีเราควรพิจารณาเรียกเก็บค่าธรรมเนียมที่เหมาะสมจากผู้ใช้ในองค์กรเพื่อเข้าถึงโหนด API เงินนั้นสามารถนำไปใช้เป็นทุนในการโฮสต์เพื่อรักษาสิ่งต่าง ๆ อย่างยั่งยืน มันยังสามารถใช้เป็นทุนสำหรับโครงการสนับสนุนสำหรับผู้ที่ไม่สามารถดื่มได้ หรือผู้ที่ไม่ต้องการดื่ม หรือผู้ที่ต้องการดื่มน้อยลง เพื่อตอบแทนชุมชนของเรา และสร้างความแตกต่างอย่างแท้จริง
แต่ฉันต้องการให้ผู้อื่นช่วยแบ่งเบาภาระในการรักษาและจัดการทั้งหมดนี้ สุขภาพและความสุขของฉันและครอบครัวเป็นสิ่งสำคัญอันดับหนึ่ง รองลงมาคืออาชีพการงานของฉัน ตามด้วยเพื่อนและชุมชน โปรเจ็กต์นี้ไม่ใช่เวลาจมอันดับ 1 ของฉันอีกต่อไป มันไม่ยั่งยืนสำหรับฉัน และไม่ดีต่อสุขภาพสำหรับฉัน แต่หากคุณได้รับแรงบันดาลใจจากข้อความนี้ โปรดติดต่อฉันโดยเปิดเผย แต่เป็นการส่วนตัวในตอนแรกก็โอเคเช่นกัน
ฉันหวังว่าสิ่งนี้จะทำให้คุณตื่นเต้น!
ฉันช่วยตัวเองไม่ได้ ฉันเขียนเพิ่มเติมเกี่ยวกับแนวคิดของฉันเกี่ยวกับเรื่องนี้: doc/lcboapi-proposed.md
ด้วยวิธีนี้ เราจึงสามารถเริ่มรู้ว่าฉันทำสิ่งนี้เพื่อใครจริงๆ และสิ่งที่ทำให้ฉันตื่นเต้นและเป็นแรงบันดาลใจในการทำเช่นนี้ตั้งแต่แรก: โอกาสในการเรียนรู้และเติบโต และช่วยเหลือผู้อื่นให้ทำเช่นเดียวกัน สำหรับใครที่สงสัยว่าจะเป็นยังไง มาดูกัน ?
คุณอาจเรียกใช้แอปได้โดยตรงบนสภาพแวดล้อมโฮสต์ของคุณ โดยไม่จำเป็นต้องมีอะไรพิเศษเกินไปเท่าที่เกี่ยวข้องกับการพึ่งพาระบบ ฉันพัฒนาบนฮาร์ดแวร์ของ Apple หากคุณทำเช่นนั้น คุณอาจประสบความสำเร็จในการใช้ Postgres.app และ Homebrew ในการติดตั้ง Redis มิฉะนั้นคุณสามารถใช้นักเทียบท่าได้
หากคุณมีประสบการณ์กับแพลตฟอร์มอื่น โปรดทำการประชาสัมพันธ์หรือปัญหา แล้วเราจะดำเนินการเพิ่มแพลตฟอร์มของคุณลงใน README ได้
นอกจากนี้ หากสิ่งต่อไปนี้ไม่สมเหตุสมผลสำหรับคุณ ให้เปิดประเด็นขึ้นมา บางทีเราอาจทำ screencast เพื่อสาธิตกระบวนการ หรืออาจมีใครสักคนที่เก่งในเรื่องนั้นมาทำเรื่องนั้น
สิ่งที่ฉันอธิบายด้านล่างนี้เป็นเพียงวิธีเดียวในการตั้งค่าสภาพแวดล้อมการพัฒนาเพื่อรัน LCBO API บนคอมพิวเตอร์ของคุณ หากผู้อื่นมีการปรับปรุง (ยังมีที่ว่างสำหรับหลาย ๆ คน เช่น สคริปต์จุดเข้าใช้งานเพื่อบูตฐานข้อมูล dev เป็นต้น) หรือแม้แต่แนวทางที่แตกต่างกัน เช่น การใช้ Vagrant + VirtualBox เปิดปัญหาหรือ PR ฉันยินดีที่จะเพิ่มพวกเขา
หากคุณต้องการช่วยฉันก็อยากให้คุณ
config/secrets.yml
และ .env
ขั้นแรก คุณจะต้องตั้งค่าการกำหนดค่าบางอย่างที่ไม่มีให้ในพื้นที่เก็บข้อมูลสาธารณะ เหตุผลที่ทำเช่นนี้คือเพื่อปกป้องข้อมูลส่วนตัว เช่น คีย์ API และโทเค็นลับ แต่ยังเป็นเพราะนักพัฒนาบางรายอาจชอบการตั้งค่าที่แตกต่างกันเล็กน้อยสำหรับการตั้งค่าส่วนบุคคลและสิ่งต่างๆ เช่นนั้น
คุณจะต้องสร้างไฟล์ 2-3 ไฟล์ ได้แก่ config/secrets.yml
และ . .env
มีเวอร์ชันเทมเพลตใน repo ภายใต้ config/secrets.yml.example
และ .env.example
คุณสามารถคัดลอกไฟล์เหล่านั้นเพื่อเริ่มต้นได้:
cp config/secrets.yml.example config/secrets.yml
cp .env.example .env
หากคุณเพียงต้องการบูตแอปและเข้าถึงภายในเครื่อง คุณควรดำเนินการ ณ จุดนี้ หากคุณต้องการใช้ Crawler และให้บันทึกสแนปช็อตที่บันทึกไว้ใน Amazon S3 คุณจะต้องเพิ่มข้อมูลรับรอง AWS และบัคเก็ตของคุณไปที่ config/secrets.yml
การตั้งค่าที่เหลือมีความสำคัญเฉพาะในสภาพแวดล้อมการใช้งานจริง ไม่ได้ใช้งานจริง หรือสำคัญเฉพาะในกรณีที่คุณไม่ชอบการตั้งค่าเริ่มต้น และเช่นเคย หากคุณต้องการคำชี้แจง โปรดเปิดและแก้ไขปัญหา เรายินดีที่จะช่วยเหลือ
ขั้นแรก คุณจะต้องติดตั้งไคลเอ็นต์ Docker สำหรับระบบของคุณ คุณสามารถดูข้อมูลได้ที่นี่ เมื่อคุณติดตั้ง Docker แล้ว คุณสามารถเริ่มต้นสิ่งต่างๆ ได้:
ต่อไปคุณจะต้องสร้างคอนเทนเนอร์:
docker-compose build
เมื่อเสร็จแล้ว คุณสามารถบูตเครื่องทั้งหมดได้โดยการออก:
docker-compose up
ณ จุดนี้ คุณไม่มีข้อมูลใด ๆ ในฐานข้อมูล ดังนั้นหากคุณโหลดแอป http://localhost:3000 แอปจะไม่ทำอะไรมากนัก แต่จะทำหน้าที่ให้บริการข้อมูล และไม่มีข้อมูลอยู่ในนั้น เรามาทำอะไรสักอย่างเกี่ยวกับเรื่องนั้นกัน
ไปข้างหน้าและปิดคอนเทนเนอร์:
Ctrl-C
นั่นหมายถึงให้กดปุ่ม Control
+ C
พร้อมกัน
คุณสามารถดาวน์โหลดไฟล์ดัมพ์ฐานข้อมูลการผลิตล่าสุดที่เก็บถาวรได้จากบัญชี Amazon S3 ส่วนตัวของฉันที่นี่ โปรดทราบว่ามีตารางที่ละเอียดอ่อน (อีเมล ผู้ใช้ คีย์) และข้อมูลนั้นถูกแยกออกจากไฟล์นี้
ดาวน์โหลดและแตกไฟล์เก็บถาวรในไดเร็กทอรี tmp
ของโปรเจ็กต์นี้:
cd tmp
curl -O https://heycarsten.s3.amazonaws.com/lcboapi-2019-01-21.tgz
tar xzf lcboapi-2019-01-21.tgz
cd ..
ไฟล์มีขนาดประมาณ 300MiB ดังนั้นอาจใช้เวลาสักครู่ในการดาวน์โหลด ทั้งนี้ขึ้นอยู่กับความเร็วการเชื่อมต่อของคุณ (สิ่งนี้เกิดขึ้นในบรรทัดที่ขึ้นต้นด้วย curl
)
เมื่อคุณดาวน์โหลดและแตกไฟล์ฐานข้อมูลแล้ว คุณสามารถโหลดข้อมูลลงในฐานข้อมูลได้:
docker-compose run --rm app rake db:create
docker-compose run --rm app bash -c 'pv tmp/lcboapi-2019-01-21.sql | psql -q -h db -U $POSTGRES_USER $POSTGRES_DB > /dev/null'
บรรทัดแรกซึ่งลงท้ายด้วย rake db:create
จะสร้างสคีมาฐานข้อมูลใน Postgres สำหรับการพัฒนาและการทดสอบ บรรทัดที่สองจะโหลดดัมพ์ฐานข้อมูลลงในฐานข้อมูลการพัฒนา แถบความคืบหน้าจะระบุจำนวนข้อมูลที่ถูกส่งไปยังฐานข้อมูล เมื่อสร้างดัชนีเสร็จแล้ว การดำเนินการนี้อาจใช้เวลาสักครู่ขึ้นอยู่กับเครื่องของคุณ ซึ่งเป็นปริมาณข้อมูลพอสมควร จากนั้นคุณสามารถเปิดแอปได้อีกครั้ง:
docker-compose up
คุณยังสามารถลบไฟล์เก็บถาวรและแตกไฟล์ SQL ออกจากไดเร็กทอรี tmp
ของคุณได้อย่างปลอดภัย ณ จุดนี้
หากคุณพบว่าการพิมพ์
docker-compose
ซ้ำไปซ้ำมานั้นน่าเบื่อ ให้ดูที่เชลล์นามแฝงคุณสามารถเพิ่มบรรทัดนามแฝงลงในโปรไฟล์เชลล์ของคุณ เช่น
alias dc=docker-compose
จากนั้นคุณก็สามารถพิมพ์dc
แทนที่จะต้องพิมพ์docker-compose
ทุกครั้งลองนึกถึงนามแฝงอื่น ๆ ที่คุณสามารถสร้างเพื่อปรับปรุงเรื่องนี้ให้ดียิ่งขึ้นไปอีก ?
ตอนนี้ไปที่ http://localhost:3000/products/438457
บูม. คุณมี LCBO API ทำงานบนคอมพิวเตอร์ของคุณ! - - -
เมื่อคุณทำงานกับแอปเสร็จแล้ว เพียงกด Ctrl+C
เพื่อปิดทุกอย่าง ครั้งต่อไปที่คุณต้องการทำงานอีกครั้ง ให้รัน docker-compose up
เท่านี้คุณก็พร้อมแล้ว!
หากคุณเพิ่ม gem ใหม่ให้กับ Gemfile
คุณจะต้องติดตั้งแพ็คเกจใหม่และอัปเดตการอ้างอิง Docker ค่อนข้างเก่งในการทำเช่นนี้ โดยสามารถบอกได้ว่า Gemfile
มีการเปลี่ยนแปลงเมื่อใด และรู้ว่าจะต้องสร้าง app
Container ใหม่ให้กับคุณ
หากต้องการเปิดคอนโซล Rails และตรวจสอบวัตถุภายในแอปพลิเคชัน ให้ทำดังนี้
docker-compose exec app rails c
เมื่อดำเนินการแล้ว คุณสามารถทำสิ่งต่างๆ เช่น:
ดึงข้อมูลผลิตภัณฑ์แรกในฐานข้อมูล:
Product.first
ค้นหาร้านค้าปลีก LCBO #25 (ร้านค้าในพื้นที่ของฉัน):
Store.find(25)
หากคุณเปลี่ยนรหัสในแอป คุณจะต้องทำการ reload!
คำสั่งในคอนโซลเพื่อรีเฟรชการเปลี่ยนแปลง
ภายในโฟลเดอร์ spec
คุณจะพบชุดทดสอบสำหรับ LCBO API น่าเสียดายที่ไม่ครอบคลุม แต่ก็ไม่ได้แย่เกินไปเช่นกัน ฉันต้องดิ้นรนตลอดอาชีพการงานเพื่อรักษาชุดทดสอบที่ฉันพอใจ เราควรปรับปรุงการทดสอบเหล่านี้!
หากต้องการรันชุดทดสอบ:
docker-compose exec app rspec
คุณจะเห็นจุดสี .
จำนวนหนึ่ง แต่ละอันแสดงถึงกรณีทดสอบที่ผ่านการทดสอบ ดีแล้ว. หากเกิดความล้มเหลว คุณจะเห็น F
สีแดง แย่เลย... ล้อเล่น! จริงๆแล้วมันดี! การทดสอบทำให้คุณมีอำนาจในการเปลี่ยนแปลงสิ่งต่างๆ ในโค้ดเบสที่มีอยู่ และดูว่าคุณทำให้เกิดการถดถอยใดๆ กับฟังก์ชันการทำงานที่มีอยู่หรือไม่ แน่นอนว่าไม่มีอะไรสมบูรณ์แบบ แต่ฉันสามารถบอกคุณได้อย่างไม่ต้องสงสัย จากประสบการณ์ การทดสอบเป็นสิ่งที่ดี
เมื่อแอปพลิเคชันมีขนาดใหญ่ขึ้นเรื่อยๆ และซับซ้อนมากขึ้นเรื่อยๆ การไม่มีการทดสอบกลายเป็นฝันร้ายอย่างแท้จริง การเปลี่ยนแปลงแอปพลิเคชันของคุณและเพิ่มคุณสมบัติเป็นกระบวนการที่เปราะบางอย่างยิ่ง สิ่งต่างๆ เช่น การใช้ภาษาที่มีระบบประเภทและกระบวนทัศน์การเขียนโปรแกรมอื่นๆ สามารถช่วยได้มากเช่นกัน แต่ฉันเห็นว่าไม่มีทางแทนที่ชุดทดสอบการยอมรับที่มั่นคงเป็นอย่างน้อยได้
นี่เป็นส่วนหนึ่งของ LCBO API ที่ทำให้ทุกสิ่งเป็นไปได้ โปรแกรมรวบรวมข้อมูลสำหรับเว็บไซต์ที่ซับซ้อนนั้นสร้างและบำรุงรักษาได้ยาก LCBO API เวอร์ชันแรกมีชุดทดสอบเต็มรูปแบบสำหรับ Crawler เมื่อทุกอย่างเปลี่ยนไปเมื่อหลายปีก่อน ฉันเลิกใช้โค้ดเบสนั้นและสร้างบางสิ่งให้เร็วที่สุดเท่าที่จะเป็นไปได้ในอันนี้
ตรรกะของโปรแกรมรวบรวมข้อมูลอยู่ใน lib/crawler.rb
จากนั้นคุณจะเห็นงานต่างๆ ทั้งหมดที่เกิดขึ้นต่อเนื่องกัน รวมไปถึงการรวบรวมข้อมูลเว็บไซต์ LCBO ทั้งหมด
ตรรกะการแยกวิเคราะห์อยู่ใน lib/lcbo.rb
และไฟล์ต่างๆ ทั้งหมดภายใน lib/lcbo/*
ซึ่งรวมถึงคำขอต่างๆ ทั้งหมดที่จำเป็นต้องเกิดขึ้น และโค้ดที่รับผิดชอบในการเปลี่ยนข้อมูลจากคำขอเหล่านั้นให้เป็นข้อมูลที่มีโครงสร้าง ที่สามารถเข้าไปในฐานข้อมูลได้ในที่สุด
ฉันออกแบบโปรแกรมรวบรวมข้อมูลให้ดำเนินการคำขอแบบอนุกรม นี่เป็นแนวทางที่ดีมากเมื่อคุณรวบรวมข้อมูลเว็บไซต์เดียว มันง่ายสำหรับเส้นทางที่เป็นเส้นทางที่ดีที่สุดเสมอหากทำได้ และเป็นการสุภาพ เราสามารถปิด งาน AWS Lambda และรวบรวมข้อมูลทุกหน้าบน LCBO.com ได้ในเวลาไม่กี่วินาที แต่นั่นอาจดูหยาบคาย และเราอาจจะทำ DDoS เว็บไซต์ของพวกเขาในชั่วขณะหนึ่ง ซึ่งไม่ดี
/manager
)สิ่งนี้ครอบคลุมแอปพลิเคชัน Ember เมื่อคุณสมัคร/เข้า LCBO API และสร้างคีย์ API นี่คือสิ่งที่คุณโต้ตอบด้วย มันค่อนข้างล้าสมัย ฉันยังไม่ได้ลองสร้างมัน ฉันใช้ Ember มาตั้งแต่วันแรก ดังนั้นหากคุณมีคำถามใดๆ เกี่ยวกับเรื่องนี้ โปรดแก้ไขปัญหา ฉันค่อนข้างสนุกกับการพูดคุยเกี่ยวกับส่วนนี้ของ LCBO API และทำงานร่วมกับคุณทุกคนเพื่อปรับปรุงส่วนนี้
/static
) มีไซต์คนกลาง เมื่อคุณเยี่ยมชม lcboapi.com นี่คือสิ่งที่คุณกำลังมองหา นอกจากนี้ยังมีแอป React ขนาดเล็กมาก (ล้าสมัยด้วย) ซึ่งมีข้อความ "ลองดูสิ" ทางด้านขวาของหน้าแรก มี Gemfile เป็นของตัวเองและสร้างสคริปต์ static/generate
เมื่อเรียกใช้งานจะสร้างไซต์และซิงค์การเปลี่ยนแปลงลงในโฟลเดอร์ public
ในแอป Rails โฟลเดอร์ public
จะทำหน้าที่เป็นเนื้อหาแบบคงที่
มีทางตันมากมายใน codebase นี้ กิ่งก้านที่ไปถึงฟีเจอร์หนึ่งๆ ถึง 40-60-80% แล้วหยุดนิ่ง การทดลอง ฯลฯ เช่นเคย หากคุณพบบางสิ่งที่ถูกใจคุณ ? เพียงแจ้งปัญหาแล้วเราจะตอบกลับโดยเร็วที่สุด
คงจะดีไม่น้อยหากเราสามารถเชื่อมโยงจุดจบบางส่วนเข้าด้วยกันได้ ฉันจะสนใจอย่างยิ่งที่จะเพิ่ม JSON:API และ GraphQL เข้าไปในที่สุด การออกแบบการตอบกลับ API ในปัจจุบันเริ่มตั้งแต่ปี 2008!!! ฉันรู้สึกประหลาดใจที่ไม่มีใครบ่นเกี่ยวกับเรื่องนี้เลย
คุณลักษณะอันดับ 1 ที่มีการร้องขอมากที่สุดที่ฉันไม่เคยใช้คือหมวดหมู่ มันอยู่ในนี้ ฉันลืมไปว่าทำไมฉันไม่เคยส่งมัน ฉันจำไม่ได้ว่าต้องมีของสุดท้ายอะไรบ้าง แต่บางทีนั่นอาจจะเป็นสิ่งที่ดีก่อน สิ่งที่ต้องทำ? นอกจากนี้ยังมีโปรดิวเซอร์และออริจินส์ที่ยังไม่จบสิ้น
ฉันยังมี repos อื่นๆ อีกมากมายและการทดลองเล็กๆ น้อยๆ ที่ฉันทำตลอดหลายปีที่ผ่านมา ฉันหลงใหลเสมอกับแนวคิดเรื่องการทำนายระดับสินค้าคงคลัง บางแห่งมีเครื่องมือวิเคราะห์การถ่ายโอนข้อมูลชุดข้อมูลที่เขียนด้วยภาษา Go เพื่อวิเคราะห์การทิ้ง CSV สำหรับสินค้าคงคลังของผลิตภัณฑ์โดยเฉพาะ ในช่วงเวลาหนึ่ง ฉันยินดีที่จะเผยแพร่สิ่งเหล่านั้นเช่นกันหากมีความสนใจ
ฉันจะทิ้งมันไว้ที่นี่ก่อน และจะรอการติดต่อกลับจากคุณ ฉันอยากจะเพิ่มฐานความรู้นี้ต่อไปไม่ว่าผู้คนต้องการดูในรูปแบบใดก็ตาม (การฉายภาพหน้าจอ บทสัมภาษณ์ เอกสารแบบอินไลน์ ฯลฯ) ฉันก็อยากให้คุณทำเช่นเดียวกัน หากคุณไม่แน่ใจก็ถามได้