คำตอบสั้น ๆ ก็คือเราใช้ Flask สำหรับ Python ในส่วนแบ็คเอนด์ Backbone สำหรับ Javascript ที่ส่วนหน้าและเก็บข้อมูลของเราใน MongoDB, Redis และ ElasticSearch เราโฮสต์บน AWS
กองคืออะไร?
ต้องใช้เทคโนโลยีจำนวนมากในการจัดส่งเว็บไซต์ให้คุณและพวกเขาทำหน้าที่หลากหลายรวมไปถึง:
- การสร้างหน้าเว็บในเบราว์เซอร์หรือแอปจัดแต่งทรงผม (สีแบบอักษร) และทำให้เป็นแบบอินเทอร์แอคทีฟ (เช่นเปลี่ยนหัวใจสีแดงและแสดงช่องแสดงความคิดเห็นเมื่อคุณคลิกที่) สิ่งนี้เรียกว่า ส่วนหน้าหรือฝั่งไคลเอ็นต์
- รวบรวมข้อมูลที่จำเป็นสำหรับหน้า (เช่นคำถามคำตอบชื่อผู้ใช้และรูปภาพจำนวนของหัวใจ) และส่งไปยังคอมพิวเตอร์หรือโทรศัพท์ของคุณ สิ่งนี้เรียกว่า แบ็กเอนด์หรือฝั่งเซิร์ฟเวอร์
- จัดเก็บข้อมูลนี้เพื่อให้สามารถใช้งานได้ทุกเวลาที่ต้องการและช่วยให้เราสามารถค้นหาข้อมูลที่ต้องการได้อย่างแม่นยำ สิ่งนี้เรียกว่าฐานข้อมูลหรือที่เก็บข้อมูล
- คอมพิวเตอร์ที่เชื่อมต่อกับอินเทอร์เน็ตและเปิดอยู่เสมอเพื่อให้ทุกคนสามารถเข้าถึงเว็บไซต์ได้ตลอดเวลา คอมพิวเตอร์ถูกเรียกว่า เซิร์ฟเวอร์ และพวกเขาเป็น เจ้าภาพ ที่ไหนสักแห่ง.
- หน้าที่สำคัญและรองอื่น ๆ อีกมากมาย
ในแต่ละเลเยอร์เหล่านี้มีตัวเลือกที่ดีจำนวนมากและตัวเลือกที่ทีมใดทีมหนึ่งทำขึ้นอยู่กับประสบการณ์และความสะดวกสบายของสมาชิกในทีมรวมทั้งเรื่องการปฏิบัติเช่นค่าใช้จ่ายและข้อกำหนดเฉพาะด้านประสิทธิภาพ
สแต็กเต็มของเรา (เกือบ)
เทคโนโลยีบางอย่างได้รับการติดตั้งอัพเดตและจัดการโดยสมาชิกของทีมของเราบนเซิร์ฟเวอร์และแล็ปท็อปของเราเอง พวกเขารวมถึง:
- Backbone เพื่อจัดระเบียบจาวาสคริปต์ของเรา
- ใช้เข็มทิศเพื่อนำมาใช้ใหม่และจัดระเบียบ CSS ของเรา
- Flask เป็นเฟรมเวิร์ก Python เพื่อให้บริการ JSON + HTML API และแสดงผลเพจ HTML แบบเต็ม
- pyres สำหรับคิวงานของเรา (ขึ้นฉ่ายเร็ว ๆ นี้)
- MongoDB เพื่อจัดเก็บข้อมูลของเรา (อาจจะเป็น Postgres เร็ว ๆ นี้)
- Redis เพื่อแคชสิ่งต่าง ๆ เช่นตัวดึงข้อมูลรอบไซต์คำถามที่มีแนวโน้มและสถิติการใช้งานทุกประเภท
- ElasticSearch เพื่อการค้นหาพลังงาน
- Nginx เพื่อให้บริการเว็บไซต์
- พยายามทำให้ย่อขนาดบีบอัดและแก้ไข Javascript และ CSS ของเรา
- Capistrano เพื่อปรับใช้แอพของเราและทำงานอื่น ๆ ที่เป็นประโยชน์เล็กน้อย
- Puppet เพื่อตั้งค่าซอฟต์แวร์ที่เราต้องการบนเซิร์ฟเวอร์ใหม่
เทคโนโลยีบางอย่างเป็นบริการที่สร้างและจัดการโดย บริษัท อื่น บ่อยครั้งที่มีประสิทธิภาพมากกว่าในการปล่อยให้คนอื่นมุ่งเน้นไปที่ปัญหาที่เฉพาะเจาะจงแทนที่จะทำทุกอย่างด้วยตนเอง บริการบางอย่างที่เราใช้คือ:
- AWS หรือ Amazon Web Services เพื่อโฮสต์เซิร์ฟเวอร์ของเราสินทรัพย์คงที่และเป็น CDN
- Cloudflare สำหรับ DNS การแคชและการรักษาความปลอดภัยระดับหนึ่ง
- Google Analytics และ Mixpanel สำหรับการวิเคราะห์
- Papertrail สำหรับการบันทึกจากส่วนกลาง
- ยามสำหรับการติดตามข้อผิดพลาดฝั่งไคลเอ็นต์
- DataDog สำหรับตรวจสอบเซิร์ฟเวอร์และบริการของเรา
- New Relic สำหรับตรวจสอบประสิทธิภาพของแอพ Flask
- ลูกค้าจะส่งอีเมลตามสิ่งที่คุณทำหรือไม่ทำในแอพ
- Github สำหรับการทำงานร่วมกันของรหัสและโฮสติ้ง
และอาจอื่น ๆ อีกมากมาย
ต้องใช้หลายชิ้นในการสร้างและใช้งานเว็บไซต์ แต่ด้วยความช่วยเหลือของเครื่องมือที่สร้างขึ้นมาอย่างดีมันไม่ยากเลย!
เวลาไม่ต่อเนื่องหรือต่อเนื่อง? ทำไม? + ตัวอย่าง
ข้อมูลที่ไม่ต่อเนื่องโดยทั่วไปคือคำตอบทั้งจำนวน ชอบต้นไม้หรือโต๊ะหรือคนกี่คน ขนาดของรองเท้าก็ไม่ต่อเนื่องเช่นกัน แต่น้ำหนักส่วนสูงและเวลาเป็นตัวอย่างของข้อมูลต่อเนื่อง วิธีหนึ่งในการตัดสินใจว่าคุณใช้เวลาสองครั้งเช่น 9 วินาทีและ 10 วินาทีคุณมีเวลาระหว่างสองสิ่งนี้หรือไม่? ใช่บันทึกเวลาโลกของ Bolt ใช้เวลา 9.58 วินาทีถ้าคุณใช้ 9 โต๊ะและ 10 โต๊ะคุณสามารถมีโต๊ะทำงานกี่อันในระหว่างนี้หรือไม่? ไม่มีโต๊ะ 9 1/2 โต๊ะคือโต๊ะ 9 โต๊ะและโต๊ะหัก!
X ^ 2> 0 คำสั่งหรือไม่ใช่คำสั่ง? + ตัวอย่าง
Color (blue) ("Non-statement") ในคณิตศาสตร์แบบแยกคำสั่งเป็นจริงของเท็จ แต่เนื่องจากสิ่งนี้มีตัวแปร x จึงไม่มีวิธีกำหนดว่ามันเป็นจริงของเท็จหรือไม่เว้นแต่คุณจะได้รับค่าสำหรับ x . ในตัวอย่างคำสั่งจะเป็นจริงถ้าหาก x! = 0 เท่านั้น
X ^ 2 + y ^ 2 = 9 เป็นฟังก์ชั่นหรือไม่? + ตัวอย่าง
X ^ 2 + y ^ 2 = 9 ไม่ใช่ฟังก์ชันเพื่อให้สมการเป็นตัวแทนของฟังก์ชันค่าใด ๆ ของ x จะต้องมีค่าที่สอดคล้องกันมากที่สุดของ y ซึ่งสอดคล้องกับสมการ สำหรับ x ^ 2 + y ^ 2 = 9 สี (ขาว) ("XXXX") ถ้า (เช่น) x = 0 สี (ขาว) ("XXXX") มีสองค่าสำหรับ y (คือ +3 และ -3) ซึ่งตอบสนองสมการและดังนั้นสมการไม่ใช่ฟังก์ชัน