วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

5
ฉันสามารถใช้ใบอนุญาต MIT เพื่อมอบรหัสที่เป็นลายลักษณ์อักษรก่อนหน้านี้ให้นายจ้างเพื่อป้องกันตัวเองและไม่สูญเสียลิขสิทธิ์ได้หรือไม่?
สถานการณ์ของฉัน: ฉันได้เขียนกรอบงานก่อนที่จะเริ่มงานใหม่ ฉันเป็นเจ้าของลิขสิทธิ์ มันมีลอจิกจำนวนมากอยู่ข้างในเช่นซอฟต์แวร์ชิ้นใดก็ได้ (duh!) ฉันไม่ต้องการใช้เฟรมเวิร์กทั้งหมดในงานใหม่ของฉัน แต่ฉันจำเป็นต้องใช้บางส่วนใหม่ในเฟรมเวิร์กที่คล้ายกันซึ่งฉันกำลังสร้างสำหรับงานใหม่ของฉัน มันเป็นไปไม่ได้ที่จะนำมาใช้ใหม่ / คิดใหม่ตรรกะทั้งหมดตั้งแต่เริ่มต้น มันมีตรรกะมากมายและตรรกะก็คือตรรกะคุณไม่สามารถทำให้มันแตกต่างกันมาก ตัวอย่างเช่นคุณสามารถโค้ด HashMap ได้หลายเวอร์ชัน ฉันเดิมพันพวกเขาจะคล้ายกันมากและรุ่นที่สามสามารถอ้างได้ว่าคุณละเมิดลิขสิทธิ์ของรุ่นแรก :( ไม่สามารถลอง API ใหม่ได้ คุณสามารถคิดค้น API ของ HashMap ใหม่ได้หรือไม่ บางทีคุณสามารถเปลี่ยนput(k,v)เป็นadd(k,v)แต่ไม่มากไปกว่านั้น ความคิดของฉันเพื่อปกป้องตัวเองและรหัสก่อนหน้าของฉัน: ฉันจะบอกนายจ้างของฉันว่าฉันกำลังสร้างเฟรมเวิร์กใหม่ตามที่ฉันเคยเขียนภายใต้ใบอนุญาต MIT ดังนั้นในอนาคตถ้าฉันใช้เฟรมเวิร์กก่อนหน้าของฉันที่อื่นหรือแม้แต่เวอร์ชันอื่นที่ได้มาซึ่งมีโค้ดบางส่วนคล้ายกับเฟรมเวิร์กใหม่นี้ที่ฉันกำลังสร้างสำหรับนายจ้างพวกเขาไม่สามารถบอกได้ว่าฉันเป็นใคร ใช้รหัสของพวกเขาสิ่งที่ฉันเขียนให้พวกเขา คำถามของฉัน: ฉันไม่ได้แจกจ่ายรหัสให้ใคร ฉันไม่ต้องแจกจ่ายรหัสลิขสิทธิ์ MIT ให้กับทุกคนหากฉันเป็นเจ้าของลิขสิทธิ์ถูกต้องหรือไม่ ฉันหมายความว่ามีคนขอให้ฉันปล่อยรหัสที่ฉันอ้างว่าตอนนี้อยู่ภายใต้ใบอนุญาตของ MIT หรือไม่? มันจะไม่ใช่จุดจบของโลกและฉันก็เห็นด้วยที่จะทำเช่นนั้นภายใต้การคุกคามทางกฎหมาย กลยุทธ์นี้มีเหตุผลหรือไม่? เป้าหมายสุดท้ายของฉันคือการใช้เฟรมเวิร์กการเข้ารหัสก่อนหน้าของฉันโดยไม่สูญเสียลิขสิทธิ์ ในเวลาเดียวกันฉันไม่ต้องการแจกจ่ายรหัสนี้เป็นโครงการโอเพนซอร์สให้กับทุกคน ฉันมีโครงการโอเพ่นซอร์สอื่น ๆ ที่ฉันแจกจ่ายได้อย่างอิสระ แต่โครงการนี้ฉันต้องการเก็บไว้ในตัวเองเพื่อที่ฉันจะสามารถใช้กับงานของฉันได้ (ไม่ใช่งานของผู้รับเหมา) มันก็เหมือนกับการอ้างว่าคุณมีกรอบภายใต้ใบอนุญาต MIT โดยไม่ต้องเผยแพร่และ …

6
แนวปฏิบัติที่เหมาะสมที่สุดสำหรับวิธีทดสอบหน่วยที่ใช้แคชอย่างหนัก
ฉันมีวิธีการทางตรรกะทางธุรกิจจำนวนมากที่เก็บและดึงข้อมูล (พร้อมการกรอง) วัตถุและรายการวัตถุจากแคช พิจารณา IList<TObject> AllFromCache() { ... } TObject FetchById(guid id) { ... } IList<TObject> FilterByPropertry(int property) { ... } Fetch..และFilter..จะเรียกAllFromCacheซึ่งจะเติมแคชและส่งคืนถ้ามันไม่ได้มีและเพียงแค่กลับมาจากมันถ้ามันเป็น ฉันมักจะอายห่างจากการทดสอบหน่วยเหล่านี้ แนวปฏิบัติที่ดีที่สุดสำหรับการทดสอบหน่วยกับโครงสร้างประเภทนี้คืออะไร ฉันถือว่าการเติมแคชใน TestInitialize และลบบน TestCleanup แต่นั่นไม่รู้สึกว่าถูกต้องสำหรับฉัน (อาจเป็นได้)

3
การตรวจจับ IEnumerable“ สถานะเครื่อง”
ฉันเพิ่งอ่านบทความที่น่าสนใจที่เรียกว่าน่ารักเกินไปกับผลตอบแทน c # มันทำให้ฉันสงสัยว่าวิธีที่ดีที่สุดคือการตรวจสอบว่า IEnumerable เป็นคอลเล็กชันที่นับได้จริงหรือว่าเป็นเครื่องสถานะที่สร้างด้วยคีย์เวิร์ด yield ตัวอย่างเช่นคุณสามารถแก้ไข DoubleXValue (จากบทความ) เป็นดังนี้: private void DoubleXValue(IEnumerable<Point> points) { if(points is List<Point>) foreach (var point in points) point.X *= 2; else throw YouCantDoThatException(); } คำถามที่ 1) มีวิธีที่ดีกว่าในการทำเช่นนี้หรือไม่? คำถามที่ 2) นี่คือสิ่งที่ฉันควรกังวลเมื่อสร้าง API หรือไม่
17 c#  api-design 

5
การตั้งชื่อเชิงพรรณนาเทียบกับ 80 บรรทัดอักขระ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบ เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันมักจะได้ยินวิธีการเขียนโปรแกรมที่มีค่าทั้งสองนี้: (1) บรรทัดของรหัสควรเป็น 80 ตัวอักษรหรือน้อยกว่าและ (2) ใช้ชื่อที่สื่อความหมายสำหรับตัวแปรวิธีการชั้นเรียน ฯลฯ ฉันเข้าใจเหตุผลของคำแนะนำทั้งสองนี้ พวกเขาดูเหมือนจะแลกเปลี่ยนกันบ่อยครั้ง หากฉันเก็บรหัสของฉันไว้ต่ำกว่า 80 ตัวอักษร / บรรทัดฉันจะใช้ชื่อที่มีความหมายน้อยกว่า (โดยเฉพาะใน Python ที่แต่ละการเยื้องนับเป็น 4 ตัวอักษร) แต่ถ้าฉันใช้ชื่อที่มีความหมายมากขึ้น ดังนั้นคำถามของฉันคือคำแนะนำสองชิ้นนี้สำคัญกว่าที่จะต้องปฏิบัติตามหากต้องเลือกตัวเลือก ฉันสงสัยว่านี่เป็นโปรแกรมเมอร์อิสระ (มือสมัครเล่น) แต่ที่สำคัญกว่านั้นจากมุมมองของวิศวกรซอฟต์แวร์ที่ทำงานให้กับ บริษัท ขนาดใหญ่

4
Dilemma ของ QA เทียบกับการวนซ้ำ
ใน บริษัท ของฉันเราประสบความสำเร็จในการปฏิบัติงานด้วยความคล่องตัว - แต่ไม่ต้องใช้การทำซ้ำ เหตุผลหลักคือเราไม่สามารถหาวิธีที่สะอาดเพื่อให้เหมาะสมใน QA ในรอบการวนซ้ำ เราเข้าใจว่า QA เป็นบิตของการตรวจสอบเพิ่มเติมสำหรับบิวด์บางตัว (รีลีสผู้สมัคร) ก่อนที่บิลด์นี้จะนำไปใช้กับลูกค้า จุดประสงค์คือเพื่อหลีกเลี่ยงการกระทำที่มุ่งร้ายเพียงอย่างเดียวที่สร้างความเสียหายต่อการเปิดตัวทั้งหมด เนื่องจากคุณไม่เคยรู้ว่าที่หนึ่งมันเป็น QA ต้องรอจนกว่าทุกคุณลักษณะ / กระทำสำหรับการเปิดตัวอยู่ในการสร้าง (ไม่มีคำพูดสุดท้ายที่มีชื่อเสียง "อนุญาตให้เปลี่ยนแปลงเพียงเล็กน้อย") หาก QA พบข้อบกพร่องในตัวเลือกการเปิดตัวนักพัฒนาแก้ไขข้อบกพร่องเหล่านี้ในสาขาการเปิดตัวที่เกี่ยวข้อง (และผสานเข้ากับลำตัว) เมื่อแก้ไขบั๊กทั้งหมดแล้วบิลด์ใหม่จะถูกปรับใช้เพื่อให้ QA ทำการทดสอบอีกครั้ง เฉพาะเมื่อไม่พบข้อบกพร่องในตัวเลือกการเปิดตัวบางอย่างมันจะถูกเสนอให้กับลูกค้าเพื่อการตรวจสอบ โดยปกติจะใช้เวลาประมาณสองถึงสามผู้สมัครประมาณหนึ่งสัปดาห์ต่อการเปิดตัว เวลาในการเขียนการแก้ไขนั้นปกติแล้วจะต่ำกว่าความพยายามในการทดสอบ ดังนั้นเพื่อให้นักพัฒนาไม่ว่างพวกเขาทำงานในการเปิดตัว N + 1 ในขณะที่ QA ทำงานบน N หากไม่มีการใช้การวนซ้ำนี่จะไม่มีปัญหาเพราะเราสามารถซ้อนทับงานสำหรับการปล่อย N และ N + 1 อย่างไรก็ตามจากสิ่งที่ฉันเข้าใจว่าสิ่งนี้ไม่เข้ากันกับวิธีการทำซ้ำเช่น Scrum หรือ XP พวกเขาต้องการให้ทำซ้ำได้ในตอนท้ายด้วยความพยายามในการทดสอบทั้งหมดเพื่อรวมไว้ในการทำซ้ำ …
17 agile  teamwork  qa  sdlc 

1
แบบแผนการใช้อักษรตัวพิมพ์ใหญ่สำหรับฟิลด์ที่มีการป้องกัน C #
การใช้อักษรตัวพิมพ์ใหญ่สำหรับชื่อฟิลด์ที่ได้รับการป้องกันใน C # คืออะไร มัน _myVar (เช่นฟิลด์ส่วนตัว) หรือ MyVar (ชอบคุณสมบัติ) หรือไม่

3
การตัดสินใจสำหรับข้อยกเว้นที่ไม่ได้ตรวจสอบใน Scala
ในฐานะโปรแกรมเมอร์ Java ฉันมีความสำคัญอย่างยิ่งต่อข้อยกเว้นที่ไม่ได้ตรวจสอบ โปรแกรมเมอร์ส่วนใหญ่ใช้เป็นเส้นทางในการเข้ารหัสความง่ายเท่านั้นเพื่อสร้างปัญหาในภายหลัง นอกจากนี้โปรแกรม (แม้ว่าจะไม่เป็นระเบียบ) ที่มีข้อยกเว้นที่ตรวจสอบนั้นมีความแข็งแกร่งมากเมื่อเปรียบเทียบกับโปรแกรมที่ไม่ได้ตรวจสอบ น่าแปลกที่ Scala ไม่มีสิ่งใดที่เรียกว่าข้อยกเว้นที่ตรวจสอบแล้ว Java ที่เลือกและไม่ถูกตรวจสอบทั้งหมดจะถูกตรวจสอบใน Scala แรงจูงใจในการตัดสินใจครั้งนี้คืออะไร? สำหรับฉันมันเปิดปัญหามากมายเมื่อใช้รหัสภายนอกใด ๆ และถ้าโดยบังเอิญเอกสารไม่ดีก็จะส่งผลให้ฆ่า

3
รูปแบบของรัฐละเมิดหลักการทดแทน Liskov หรือไม่?
ภาพนี้นำมาจากการใช้การออกแบบและรูปแบบที่ใช้โดเมนขับเคลื่อน: พร้อมตัวอย่างใน C # และ. NET นี่คือแผนภาพคลาสสำหรับรูปแบบสถานะที่ a SalesOrderสามารถมีสถานะต่างกันในช่วงเวลาของชีวิต อนุญาตให้ช่วงการเปลี่ยนภาพบางอย่างระหว่างรัฐที่แตกต่างกัน ตอนนี้OrderStateคลาสเป็นabstractคลาสและวิธีการทั้งหมดได้รับการสืบทอดไปยังคลาสย่อย หากเราพิจารณาคลาสย่อยCancelledซึ่งเป็นสถานะสุดท้ายที่ไม่อนุญาตให้มีการเปลี่ยนสถานะเป็นสถานะอื่นเราจะต้องoverrideใช้วิธีการทั้งหมดในคลาสนี้เพื่อโยนข้อยกเว้น ตอนนี้ไม่ได้เป็นการละเมิดหลักการทดแทนของ Liskov เนื่องจาก sublcass ไม่ควรเปลี่ยนพฤติกรรมของผู้ปกครองหรือไม่ การเปลี่ยนคลาสนามธรรมเป็นอินเตอร์เฟสแก้ไขสิ่งนี้หรือไม่? จะแก้ไขได้อย่างไร?

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

5
ฉันจะสร้างลิขสิทธิ์ซอฟต์แวร์ของตัวเองได้อย่างไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิด7 ปีที่แล้วปีที่ผ่านมา ฉันเห็นใบอนุญาตจำนวนมากสำหรับซอฟต์แวร์ประเภทใด ๆ เช่น GNU GPL, ใบอนุญาต BSD, ใบอนุญาต MIT และ LGPL กระบวนการสร้างใบอนุญาตซอฟต์แวร์ใหม่เช่น "สัญญาอนุญาตทั่วไปของ John Doe" คืออะไร

6
จ้างนักพัฒนา - ระบุ IDE เป็นข้อกำหนดหรือไม่
ฉันได้ดูการโพสต์งานบางอย่างและพบว่ามีจำนวนพอสมควรของพวกเขาในรายการ IDEs ภายใต้หัวข้อ 'ทักษะที่จำเป็น' แม้แต่ตำแหน่งระดับสูง นี่ไม่ได้แปลเป็นภาษาท้องถิ่นสำหรับ บริษัท ใด บริษัท หนึ่ง แต่เป็นสิ่งที่เกิดขึ้นครั้งเดียวในทุกการโพสต์ ฉันรู้สึกงุนงงกับความต้องการของงานนี้เนื่องจากที่ปรึกษาของฉันและผู้เขียนโค้ดที่ดีที่สุดที่ฉันเคยเห็นในชีวิตของฉันคือนินจา VIM / Emacs ในทำนองเดียวกันเมื่อฉันทำงานกับคนที่ฉันไม่สนใจเครื่องมือใด ๆ ที่พวกเขาใช้ตราบใดที่พวกเขามีประสิทธิผลในทีม ใครช่วยอธิบายเหตุผลเบื้องหลังการว่าจ้างผู้จัดการทำให้ IDEs เป็นงานที่ต้องการอย่างเป็นทางการได้หรือไม่?
17 ide 

2
จะเริ่มโปรแกรมการแข่งขันได้อย่างไร [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบ เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันฝึกการเขียนโค้ดมาระยะหนึ่งแล้ว แต่ปัญหาคือฉันต้องใช้เวลามากในการเขียนวิธีแก้ปัญหา ฉันต้องการถามว่าการเขียนโปรแกรมการแข่งขันสามารถช่วยฉันในการปรับปรุงนี้ ถ้าใช่แล้วฉันจะเริ่มต้นได้อย่างไรและจะใช้เว็บไซต์ใด (เช่นTopCoder ) เห็นได้ชัดว่าฉันไม่สามารถแก้ปัญหาที่ยากได้ในตอนนี้ ฉันควรทำอย่างไรดี? ถ้าไม่ฉันควรทำยังไงดี? ฉันยังมีปัญหาอื่นที่ฉันต้องการเรียนรู้การเขียนโค้ด แต่สิ่งที่ฉันรู้สึกว่าฉันไม่ค่อยดี ฉันควรทำอย่างไรดี? มันเหมือนกับการดักฟังฉันจากภายใน ฉันรู้ว่าบางคนอาจไม่พบคำถามนี้ให้ข้อมูล แต่อย่างน้อยโปรดให้ฉันได้รับคำตอบ

5
วิธีทำให้การสร้างโหมดดูที่รันไทม์เจ็บปวดน้อยลง
ฉันขอโทษสำหรับคำถามยาว ๆ มันอ่านได้เล็กน้อยว่าเป็นคำโหยหวน แต่ฉันสัญญาว่ามันจะไม่! ฉันได้สรุปคำถามของฉันด้านล่าง ในโลกของ MVC สิ่งต่าง ๆ ตรงไปตรงมา รูปแบบมีสถานะมุมมองแสดงรูปแบบและตัวควบคุมทำสิ่งต่าง ๆ เพื่อ / กับรุ่น (โดยทั่วไป) ตัวควบคุมไม่มีสถานะ ในการทำสิ่งต่าง ๆ ที่คอนโทรลเลอร์มีการขึ้นต่อกันของบริการบนเว็บ, ที่เก็บ, ล็อต เมื่อคุณยกตัวอย่างคอนโทรลเลอร์ที่คุณสนใจเกี่ยวกับการจัดหาการพึ่งพาเหล่านั้นไม่มีอะไรอื่น เมื่อคุณเรียกใช้การกระทำ (เมธอดบนตัวควบคุม) คุณใช้การอ้างอิงเหล่านั้นเพื่อดึงหรืออัปเดตโมเดลหรือเรียกบริการโดเมนอื่น ๆ หากมีบริบทใด ๆ ให้พูดเช่นผู้ใช้บางคนต้องการดูรายละเอียดของรายการใดรายการหนึ่งคุณจะส่ง Id ของรายการนั้นเป็นพารามิเตอร์ไปยัง Action ไม่มีที่ใดในคอนโทรลเลอร์มีการอ้างอิงถึงสถานะใด ๆ จนถึงตอนนี้ดีมาก ป้อน MVVM ฉันรัก WPF ฉันรักการผูกข้อมูล ฉันรักเฟรมเวิร์กที่ทำให้การผูกข้อมูลกับ ViewModels ง่ายยิ่งขึ้น (โดยใช้ Caliburn Micro atm) ฉันรู้สึกว่าสิ่งต่าง ๆ …
17 c#  design  wpf  mvvm 

2
คนรักษาชุดทดสอบอย่างไร
โดยเฉพาะฉันอยากรู้เกี่ยวกับประเด็นต่อไปนี้: คุณจะรู้ได้อย่างไรว่ากรณีทดสอบของคุณผิด (หรือล้าสมัย) และจำเป็นต้องได้รับการซ่อมแซม (หรือถูกทิ้ง) ฉันหมายถึงแม้ว่ากรณีทดสอบจะไม่ถูกต้อง แต่ก็อาจผ่านไปแล้วและยังคงเงียบซึ่งอาจทำให้คุณเชื่อว่าซอฟต์แวร์ของคุณทำงานผิดปกติ ดังนั้นคุณจะตระหนักถึงปัญหาดังกล่าวของชุดทดสอบของคุณได้อย่างไร คุณจะรู้ได้อย่างไรว่าชุดการทดสอบของคุณไม่เพียงพออีกต่อไปและควรเพิ่มกรณีทดสอบใหม่ ฉันเดาว่าสิ่งนี้เกี่ยวข้องกับการเปลี่ยนแปลงข้อกำหนด แต่มีวิธีการที่เป็นระบบในการตรวจสอบความเพียงพอของชุดทดสอบหรือไม่?

4
ฉันสามารถใช้อัลกอริทึมใดเพื่อตรวจสอบว่าบทความหรือโพสต์ซ้ำกันหรือไม่
ฉันพยายามตรวจสอบว่าบทความหรือโพสต์ฟอรัมเป็นรายการซ้ำภายในฐานข้อมูลหรือไม่ ฉันได้รับความคิดนี้มาสรุปว่าคนที่ทำซ้ำเนื้อหาจะใช้หนึ่งในสาม (จากมากไปหายากที่จะตรวจจับ): คัดลอกง่ายวางข้อความทั้งหมด คัดลอกและวางส่วนของข้อความที่รวมเข้ากับของตนเอง คัดลอกบทความจากไซต์ภายนอกและปลอมแปลงเป็นบทความของตนเอง เตรียมข้อความสำหรับการวิเคราะห์ โดยทั่วไปมีความผิดปกติใด ๆ เป้าหมายคือการทำให้ข้อความเป็น "บริสุทธิ์" ที่สุด เพื่อผลลัพธ์ที่แม่นยำยิ่งขึ้นข้อความจะได้รับการ "มาตรฐาน" โดย: การลอกช่องว่างสีขาวที่ซ้ำกันและตัดส่วนนำและต่อท้าย บรรทัดใหม่มีมาตรฐานถึง \ n แท็ก HTML ถูกลบออก การใช้ RegEx เรียกว่า Daring Fireball URL จะถูกปล้น ฉันใช้รหัส BB ในแอปพลิเคชันของฉันเพื่อไปที่ (ä) ccented และต่างประเทศ (นอกเหนือจาก Enlgish) จะถูกแปลงเป็นแบบฟอร์มที่ไม่ใช่ต่างประเทศ ฉันเก็บข้อมูลเกี่ยวกับแต่ละบทความใน (1) ตารางสถิติและใน (2) ตารางคำหลัก (1) ตารางสถิติสถิติ ต่อไปนี้จัดเก็บเกี่ยวกับเนื้อหาที่เป็นข้อความ (คล้ายกับโพสต์นี้) ความยาวข้อความ นับจดหมาย การนับจำนวนคำ …
17 algorithms 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.