ฉันเชื่อมาโดยตลอดว่าโปรแกรมเมอร์ที่ขี้เกียจก็คือโปรแกรมเมอร์ที่ดี ทำไม เพราะขอให้คนทำงานหนักทำอะไรเขาก็จะไปทำ และโปรแกรมเมอร์ขี้เกียจจะใช้เวลามากกว่า 2-3 เท่า แต่จะเขียนสคริปต์ที่จะทำเพื่อเขา อาจใช้เวลานานเกินสมควรในการทำเช่นนี้ในครั้งแรก แต่การทำงานซ้ำๆ วิธีนี้จะให้ผลเร็วมาก ฉันคิดว่าตัวเองเป็นโปรแกรมเมอร์ที่ขี้เกียจ นั่นคือคำนำ ทีนี้มาลงลึกเรื่องธุรกิจกันดีกว่า
เรื่องที่หนึ่ง
ไม่กี่ปีที่ผ่านมา ฉันสงสัยว่าจะพัฒนาภาษาอังกฤษของฉันได้อย่างไร ไม่มีอะไรดีไปกว่าการอ่านวรรณกรรม ฉันซื้อเครื่องอ่านอิเล็กทรอนิกส์ ดาวน์โหลดหนังสือ และเริ่มอ่าน ในขณะที่อ่าน ฉันมักจะเจอคำศัพท์ที่ไม่คุ้นเคย ฉันแปลทันทีโดยใช้พจนานุกรมที่มีอยู่ในเครื่องอ่าน แต่ฉันสังเกตเห็นคุณสมบัติหนึ่ง: ไม่ต้องการจดจำคำศัพท์ เมื่อฉันเจอคำนี้อีกครั้งในสองสามหน้าต่อมา ด้วยความน่าจะเป็น 90% ที่ฉันจำเป็นต้องแปลอีกครั้ง และสิ่งนี้ก็เกิดขึ้นทุกครั้ง สรุปก็คือการแปลคำที่ไม่คุ้นเคยขณะอ่านนั้นไม่เพียงพอ คุณต้องทำอย่างอื่น ทางเลือกที่เหมาะสมที่สุดคือการแนะนำมันในชีวิตประจำวันและเริ่มใช้มัน แต่ฉันไม่ได้อยู่ในประเทศที่พูดภาษาอังกฤษและไม่น่าเป็นไปได้ แล้วฉันก็จำได้ว่าครั้งหนึ่งฉันเคยอ่านเกี่ยวกับ .
มันคืออะไรและกินกับอะไร? สรุปมีเท่านี้ครับ อ้างเพิ่มเติมจาก Wikipedia:
ภายในชั่วโมงแรกข้อมูลมากถึง 60% ที่ได้รับจะถูกลืม และ 10 ชั่วโมงหลังจากการท่องจำ 35% ของสิ่งที่เรียนรู้จะยังคงอยู่ในความทรงจำ จากนั้น กระบวนการลืมดำเนินไปอย่างช้าๆ และหลังจาก 6 วัน ประมาณ 20% ของจำนวนพยางค์ที่เรียนเริ่มแรกทั้งหมดจะยังคงอยู่ในความทรงจำ และจำนวนเท่ากันจะยังคงอยู่ในความทรงจำหลังจากผ่านไปหนึ่งเดือน
และบทสรุปต่อจากนี้
ข้อสรุปที่สามารถสรุปได้ขึ้นอยู่กับเส้นโค้งนี้คือเพื่อการท่องจำที่มีประสิทธิภาพจำเป็นต้องทำซ้ำเนื้อหาที่จดจำ
เราก็เลยเกิดไอเดียขึ้นมา .
เป็นโปรแกรมโอเพ่นซอร์สฟรีที่ใช้แนวคิดการเว้นระยะห่าง พูดง่ายๆ ก็คือ แฟลชการ์ดที่ใช้คอมพิวเตอร์จะมีคำถามอยู่ด้านหนึ่งและคำตอบอีกด้านหนึ่ง เนื่องจากคุณสามารถถามคำถาม/คำตอบได้ตามปกติ html/css/จาวาสคริปต์แล้วเราก็บอกได้เลยว่ามันมีความเป็นไปได้ที่ไร้ขีดจำกัดอย่างแท้จริง นอกจากนี้ยังสามารถขยายความพิเศษได้อีกด้วย และหนึ่งในนั้นก็จะเป็นประโยชน์ต่อเราอย่างมากในอนาคต
การสร้างการ์ดด้วยตนเองนั้นใช้เวลานาน น่าเบื่อ และมีความเป็นไปได้สูง หลังจากนั้นไม่นาน คุณจะลืมงานนี้ และเมื่อถึงจุดหนึ่ง ฉันก็ถามตัวเองว่า เป็นไปได้ไหมที่จะทำให้งานนี้เป็นแบบอัตโนมัติ คำตอบคือใช่ คุณทำได้ และฉันก็ทำมัน ฉันจะพูดทันทีมันมากขึ้น แต่อันไหนใช้ได้.. หากมีความสนใจจากผู้ใช้และนักพัฒนารายอื่นเข้ามามีส่วนร่วม ก็สามารถนำผลิตภัณฑ์ดังกล่าวมาสู่ผลิตภัณฑ์สำเร็จรูปที่แม้แต่ผู้ใช้ที่ไม่มีความรู้ด้านเทคนิคก็สามารถใช้ได้ ตอนนี้การใช้ยูทิลิตี้ของฉันต้องมีความรู้ด้านการเขียนโปรแกรมบ้าง
ฉันอ่านหนังสือโดยใช้โปรแกรม . มีความสามารถในการเชื่อมต่อพจนานุกรมภายนอก และเมื่อคุณแปลคำใดคำหนึ่ง ระบบจะบันทึกคำที่คุณเรียกให้แปลเป็นไฟล์ข้อความ สิ่งที่เหลืออยู่คือการแปลคำเหล่านี้และสร้างการ์ด ANKI
ตอนแรกฉันพยายามใช้ในการแปล , ฯลฯ แต่สิ่งต่างๆ ไม่ได้ผลกับบริการฟรี ฉันหมดขีดจำกัดฟรีในระหว่างกระบวนการพัฒนา นอกจากนี้ ตามเงื่อนไขของใบอนุญาต ฉันไม่มีสิทธิ์แคชคำ เมื่อถึงจุดหนึ่งฉันก็รู้ว่าต้องแปลคำเหล่านั้นด้วยตัวเอง เป็นผลให้มีการเขียนโมดูล ที่คุณสามารถเชื่อมต่อได้ และใครจะรู้วิธีแปลงพวกมันให้เป็น HTML รูปแบบ.
นี่คือลักษณะรายการพจนานุกรมใน *. htmlตัวเลือกของฉันเมื่อเทียบกับตัวเลือก

ก่อนจะหาคำในพจนานุกรมที่เชื่อมโยงกันก็นำมาให้ การใช้ห้องสมุด . ที่จริงแล้วเพราะไลบรารีนี้ ฉันจึงเริ่มเขียนด้วยภาษา Java และแผนเดิมคือเขียนทุกอย่างด้วยภาษา Java แต่ในกระบวนการฉันพบไลบรารี ซึ่งคุณสามารถรันโค้ด Java จาก nodejs ได้อย่างง่ายดาย และโค้ดบางส่วนเขียนด้วย JavaScript หากฉันพบไลบรารี่นี้ก่อนหน้านี้ คงไม่มีการเขียนบรรทัดใดในภาษา Java เลย โปรเจ็กต์ด้านอื่นที่เกิดขึ้นระหว่างกระบวนการคือการสร้างสรรค์ ซึ่งพบบนเครือข่ายในรูปแบบ *.ชมดัดแปลงและนำมาสู่ร่างอันศักดิ์สิทธิ์ หากผู้เขียนไฟล์ต้นฉบับเป็นผู้ใช้ตามชื่อเล่น โยชิก เมื่อเขาเห็นบทความนี้ ฉันขอบคุณเขามากสำหรับงานที่เขาทำ หากไม่มีเอกสารประกอบของเขา ฉันก็คงจะไม่ประสบความสำเร็จ
ฉันมีคำเป็นภาษาอังกฤษรายการพจนานุกรมอยู่ในรูปแบบ *. htmlสิ่งที่เหลืออยู่คือรวบรวมทุกอย่างเข้าด้วยกัน สร้างบทความ ANKI จากรายการคำแล้วป้อนลงในฐานข้อมูล ANKI เพื่อจุดประสงค์นี้โครงการต่อไปนี้จึงถูกสร้างขึ้น . สามารถนำรายการคำศัพท์มาป้อน แปล สร้าง ANKI ได้*. html บทความและบันทึกไว้ในฐานข้อมูล ANKI ในตอนท้ายของบทความมีคำแนะนำวิธีใช้งาน ในระหว่างนี้ เรื่องที่สองคือจุดที่การเว้นระยะห่างซ้ำๆ จะเป็นประโยชน์
เรื่องที่สอง.
ทุกคนที่กำลังมองหาความเชี่ยวชาญพิเศษที่มีคุณสมบัติไม่มากก็น้อย รวมถึงโปรแกรมเมอร์ ต้องเผชิญกับความจำเป็นในการเตรียมตัวสำหรับการสัมภาษณ์ แนวคิดหลายประการที่ถูกถามในการสัมภาษณ์ที่คุณไม่ได้ใช้ในชีวิตประจำวันและถูกลืมไป เมื่อเตรียมตัวสัมภาษณ์ พลิกดูบันทึก หนังสือ หนังสืออ้างอิง ผมต้องเผชิญกับความจริงที่ว่ามันต้องใช้เวลาและความเอาใจใส่อย่างมากในการกรองข้อมูลที่คุณรู้อยู่แล้ว เพราะมันไม่ชัดเจนเสมอไปและคุณต้อง อ่านให้ละเอียดเพื่อทำความเข้าใจว่ามันคืออะไร ไม่เกี่ยวข้อง เมื่อคุณมาถึงหัวข้อที่ต้องทำซ้ำจริงๆ มักจะเกิดขึ้นว่าคุณเหนื่อยแล้วและคุณภาพในการเตรียมตัวก็แย่ลง เมื่อถึงจุดหนึ่ง ฉันคิดว่าทำไมไม่ใช้การ์ด ANKI เพื่อสิ่งนี้ด้วยล่ะ ตัวอย่างเช่น เมื่อจดบันทึกหัวข้อใดหัวข้อหนึ่ง ให้สร้างบันทึกในรูปแบบคำถามและคำตอบทันที จากนั้นเมื่อคุณทำซ้ำ คุณจะรู้ได้ทันทีว่าคุณรู้คำตอบสำหรับคำถามนี้หรือไม่
ปัญหาเดียวที่เกิดขึ้นคือการพิมพ์คำถามยาวและน่าเบื่อมาก เพื่อให้กระบวนการง่ายขึ้น โครงการที่ฉันเพิ่มฟังก์ชันการแปลง ข้อความในการ์ด ANKI สิ่งที่คุณต้องมีคือเขียนไฟล์ขนาดใหญ่หนึ่งไฟล์ซึ่งคำถามและคำตอบจะถูกทำเครื่องหมายด้วยลำดับอักขระที่กำหนดไว้ล่วงหน้า ซึ่ง parser จะเข้าใจว่าคำถามอยู่ที่ไหนและคำตอบอยู่ที่ไหน
เมื่อไฟล์นี้ถูกสร้างขึ้น คุณจะเรียกใช้ data2anki และสร้างการ์ด ANKI ไฟล์ต้นฉบับนั้นง่ายต่อการแก้ไขและแชร์ คุณเพียงแค่ต้องลบการ์ดที่เกี่ยวข้องและรันโปรแกรมอีกครั้ง จากนั้นเวอร์ชันใหม่จะถูกสร้างขึ้น
การติดตั้งและการใช้งาน
กำลังติดตั้ง ANKI + AnkiConnect
- ดาวน์โหลด ANKI จากที่นี่:
- ติดตั้งปลั๊กอิน AnkiConnect:
การติดตั้ง
- ดาวน์โหลด จากพื้นที่เก็บข้อมูล GitHub
git clone https://github.com/anatoly314/data2anki - ติดตั้งการพึ่งพา
cd data2anki && npm install - ดาวน์โหลดการพึ่งพา Java
- กำลังแกะกล่อง jar-dependencies.zip และใส่เนื้อหาลงไป data2anki/java/jars
- ดาวน์โหลด จากพื้นที่เก็บข้อมูล GitHub
ใช้ในการแปลคำศัพท์:
ในไฟล์ data2anki/config.json:
ในคีย์ โหมด ป้อนค่า dsl2anki
ในคีย์ modules.dsl.anki.deckName и modules.dsl.anki.modelName เขียนตามนั้น и (ต้องสร้างไว้แล้วก่อนสร้างการ์ด) ปัจจุบันรองรับเฉพาะประเภทโมเดลเท่านั้น ขั้นพื้นฐาน:
มีช่องด้านหน้าและด้านหลัง และจะสร้างการ์ดใบเดียว ข้อความที่คุณป้อนไว้ด้านหน้าจะปรากฏที่ด้านหน้าของการ์ด และข้อความที่คุณป้อนไว้ด้านหลังจะปรากฏที่ด้านหลังของการ์ด
คำเดิมอยู่ที่ไหน? สนามหน้าและคำแปลจะเข้ามา สนามหลัง.
ไม่มีปัญหาในการเพิ่มการสนับสนุน บัตรพื้นฐาน (และบัตรกลับด้าน)โดยที่บัตรย้อนกลับจะถูกสร้างขึ้นสำหรับคำและการแปล โดยที่คุณจะต้องจดจำคำต้นฉบับตามการแปล สิ่งที่คุณต้องมีคือเวลาและความปรารถนา
ในคีย์ modules.dsl.dictionariesPath ลงทะเบียนอาร์เรย์ด้วยการเชื่อมต่อ *.ดีเอสแอล พจนานุกรม พจนานุกรมที่เชื่อมต่อแต่ละพจนานุกรมคือไดเร็กทอรีที่ไฟล์พจนานุกรมอยู่ตามรูปแบบ:
ในคีย์ modules.dsl.wordToTranslatePath ป้อนเส้นทางไปยังรายการคำที่คุณต้องการแปล
- เปิดโดยที่แอปพลิเคชัน ANKI ทำงานอยู่
node data2ankiindex.js - กำไร!!!
ใช้สำหรับสร้างการ์ดจากมาร์กดาวน์
ในไฟล์ data2anki/config.json:
- ในคีย์ โหมด ป้อนค่า markdown2anki
- ในคีย์ modules.markdown.anki.deckName и modules.dsl.anki.modelName เขียนตามนั้น и (ต้องสร้างไว้แล้วก่อนสร้างการ์ด) สำหรับ markdown2anki รองรับโหมดเฉพาะรุ่นเท่านั้น ขั้นพื้นฐาน.
ในคีย์ modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors คุณเขียนตัวเลือกที่คุณทำเครื่องหมายจุดเริ่มต้นของคำถามและคำตอบตามลำดับ บรรทัดที่มีตัวเลือกจะไม่ถูกแยกวิเคราะห์และจะไม่จบลงในการ์ด parser จะเริ่มทำงานจากบรรทัดถัดไป
ตัวอย่างเช่น การ์ดคำถาม/คำตอบนี้:

มันจะมีลักษณะเช่นนี้ในมาร์กดาวน์:
#QUESTION# ## คำถามที่ 5. เขียนฟังก์ชัน mul ซึ่งจะทำงานอย่างถูกต้องเมื่อเรียกใช้ด้วยไวยากรณ์ต่อไปนี้ ```จาวาสคริปต์ console.log(mul(2)(3)(4)); // เอาต์พุต : 24 console.log(mul(4)(3)(4)); // เอาต์พุต : 48 ``` #ANSWER# ด้านล่างนี้คือโค้ดตามด้วยคำอธิบายวิธีการทำงาน: ```ฟังก์ชัน javascript mul (x) { return function (y) { // ฟังก์ชัน anonymous return function (z) { // ฟังก์ชั่นที่ไม่ระบุชื่อส่งคืน x * y * z; }; }; } ``` ในที่นี้ ฟังก์ชัน `mul` ยอมรับอาร์กิวเมนต์แรกและส่งกลับฟังก์ชันนิรนามซึ่งรับพารามิเตอร์ตัวที่สอง และส่งกลับฟังก์ชันนิรนามซึ่งรับพารามิเตอร์ตัวที่สาม และส่งกลับการคูณของอาร์กิวเมนต์ที่ถูกส่งต่อไปตามลำดับ ในฟังก์ชัน Javascript ที่กำหนด inside มีสิทธิ์เข้าถึงตัวแปรฟังก์ชันภายนอก และฟังก์ชันเป็นอ็อบเจ็กต์คลาสแรก ดังนั้นฟังก์ชันจึงสามารถส่งคืนได้เช่นกัน และส่งผ่านเป็นอาร์กิวเมนต์ในฟังก์ชันอื่น - ฟังก์ชันเป็นตัวอย่างหนึ่งของประเภท Object - ฟังก์ชันสามารถมีคุณสมบัติและมีลิงก์กลับไปยังวิธี Constructor - ฟังก์ชันสามารถจัดเก็บเป็นตัวแปรได้ - ฟังก์ชันสามารถส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชันอื่นได้ - ฟังก์ชันสามารถ กลับจากฟังก์ชันอื่นตัวอย่างที่นำมาจากที่นี่:
นอกจากนี้ยังมีไฟล์พร้อมตัวอย่างอยู่ในโฟลเดอร์โปรเจ็กต์
examples/markdown2anki-example.md- ในคีย์ modules.markdown.pathToFile
จดเส้นทางไปยังไฟล์โดยที่ *.md ไฟล์คำถาม/คำตอบ
- เปิดโดยที่แอปพลิเคชัน ANKI ทำงานอยู่
node data2ankiindex.js - กำไร!!!
นี่คือลักษณะที่ปรากฏบนโทรศัพท์มือถือ:

ผล
บัตรที่ได้รับในเวอร์ชันเดสก์ท็อปของ ANKI จะซิงค์กับระบบคลาวด์ของ ANKI ได้อย่างราบรื่น (ฟรีสูงสุด 100 MB) จากนั้นคุณสามารถใช้งานได้ทุกที่ มีโปรแกรมไคลเอ็นต์สำหรับ Android и iPhoneนอกจากนี้ยังสามารถใช้งานผ่านเว็บเบราว์เซอร์ได้อีกด้วย ดังนั้น หากคุณมีเวลาว่าง แทนที่จะเลื่อนดูเฟซบุ๊กอย่างไร้จุดหมาย หรือดูรูปแมวในอินสตาแกรม คุณก็สามารถเรียนรู้สิ่งใหม่ๆ ได้
ถ้อยคำส
ดังที่ได้กล่าวไปแล้ว นี่เป็น POC ที่ใช้งานได้ซึ่งคุณสามารถใช้ได้มากกว่าผลิตภัณฑ์สำเร็จรูป ประมาณ 30% ของมาตรฐานตัวแยกวิเคราะห์ DSL ไม่ได้ถูกนำมาใช้ ดังนั้น ก็ยังมีความคิดที่จะเขียนมันขึ้นมาใหม่ด้วย JavaScriptเพราะฉันต้องการ "ความสม่ำเสมอ" และยิ่งไปกว่านั้น ตอนนี้ยังเขียนได้ไม่เหมาะที่สุดอีกด้วย ตอนนี้ parser กำลังสร้างต้นไม้ แต่ในความคิดของฉัน สิ่งนี้ไม่จำเป็นและไม่จำเป็นต้องทำให้โค้ดซับซ้อน ใน markdown2anki โหมดรูปภาพจะไม่ถูกแยกวิเคราะห์ ฉันจะพยายามตัดทีละเล็กทีละน้อย แต่เนื่องจากฉันเขียนเองก่อนอื่นฉันจะแก้ไขปัญหาที่ตัวเองจะก้าวไป แต่ถ้าใครต้องการความช่วยเหลือก็ยินดี หากคุณมีคำถามเกี่ยวกับโปรแกรม เรายินดีที่จะช่วยเหลือผ่านประเด็นที่เปิดอยู่ในโครงการที่เกี่ยวข้อง เขียนคำวิจารณ์และข้อเสนอแนะอื่น ๆ ที่นี่ ฉันหวังว่าโครงการนี้จะเป็นประโยชน์กับใครบางคน
ป.ล. หากคุณสังเกตเห็นข้อผิดพลาดใด ๆ (และน่าเสียดายที่มีข้อผิดพลาดอยู่บ้าง) โปรดเขียนถึงฉันทางข้อความส่วนตัว ฉันจะแก้ไขทุกอย่างให้ถูกต้อง
ที่มา: will.com

