ANKI'nin yabancı dil öğrenmenize ve röportaja hazırlanmanıza nasıl yardımcı olabileceğine dair iki hikaye

Her zaman tembel bir programcının iyi bir programcı olduğuna inandım. Neden? Çünkü çalışkan birinden bir şey yapmasını isteyin, o gidip yapacaktır. Ve tembel bir programcı 2-3 kat daha fazla zaman harcayacak, ancak bunu onun yerine yapacak bir senaryo yazacaktır. Bunu ilk seferde yapmak makul olmayan bir süre alabilir, ancak tekrarlanan görevlerde bu yaklaşım çok hızlı bir şekilde karşılığını verecektir. Kendimi tembel bir programcı olarak görüyorum. Bu giriş kısmıydı, şimdi işimize dönelim.

İlk hikaye

Birkaç yıl önce İngilizcemi nasıl geliştirebileceğimi merak ediyordum. Aklıma edebiyat okumaktan daha iyi bir şey gelmedi. Elektronik okuyucu aldım, kitapları indirdim ve okumaya başladım. Okurken bilmediğim kelimelerle karşılaştım. Okuyucuya yerleşik sözlükleri kullanarak bunları hemen tercüme ettim, ancak bir özelliği fark ettim: kelimeler hatırlanmak istemiyordu. Birkaç sayfa sonra bu kelimeyle tekrar karşılaştığımda, %90 ihtimalle yine çeviriye ihtiyaç duydum ve bu her seferinde oldu. Sonuç olarak, okuma sırasında yabancı kelimeleri çevirmenin yeterli olmadığı, başka bir şey yapmanız gerektiği ortaya çıktı. İdeal seçenek onu günlük hayata tanıtmak ve kullanmaya başlamak olacaktır, ancak İngilizce konuşulan bir ülkede yaşamıyorum ve bu pek olası değil. Sonra bir zamanlar okuduğumu hatırladım Aralıklı Tekrar.

Nedir ve neyle yenir? kısacası şu var unutma eğrisi, Wikipedia'dan bir alıntı daha:

Zaten ilk saat içinde alınan tüm bilgilerin% 60'a kadarı unutulur, ezberlemeden 10 saat sonra öğrenilenlerin% 35'i hafızada kalır. Daha sonra unutma süreci yavaş ilerler ve 6 gün sonra başlangıçta öğrenilen toplam hece sayısının yaklaşık %20'si hafızada kalır ve bir ay sonra aynı miktar hafızada kalır.

Ve buradan çıkan sonuç

Bu eğriye dayanarak çıkarılabilecek sonuçlar, etkili ezberleme için ezberlenen materyalin tekrarlanmasının gerekli olduğudur.

Böylece bir fikir bulduk aralıklı tekrar.

ANKI aralıklı tekrarlama fikrini uygulayan tamamen ücretsiz ve açık kaynaklı bir programdır. Basitçe söylemek gerekirse, bilgisayarlı flash kartların bir tarafında soru, diğer tarafında cevap bulunur. Normal kullanarak soru/cevap yapabileceğiniz için html/css/javascriptO zaman gerçekten sınırsız olanaklara sahip olduğunu söyleyebiliriz. Ayrıca özel olarak genişletilebilir eklentilerve bunlardan biri gelecekte bizim için çok faydalı olacak.

Kartları manuel olarak oluşturmak uzun, sıkıcı ve yüksek olasılıkla, bir süre sonra bu görevi unutacaksınız ve bir noktada kendime şu soruyu sordum: bu görevi otomatikleştirmek mümkün mü? Cevap evet, yapabilirsin. Ve ben yaptım. Hemen söyleyeceğim, daha fazlası POC (Kavram kanıtı), ancak hangisi kullanılabilir? Kullanıcılardan ilgi gelirse ve diğer geliştiriciler de dahil olursa, teknik açıdan okuma yazma bilmeyen kullanıcıların bile kullanabileceği bitmiş bir ürüne dönüştürülebilir. Şimdi, yardımcı programımı kullanmak biraz programlama bilgisi gerektiriyor.

Programı kullanarak kitap okuyorum AIOkuyucu. Harici sözlüklere bağlanma özelliği vardır ve bir kelimeyi çevirdiğinizde, çeviri için çağırdığınız kelimeyi bir metin dosyasına kaydeder. Geriye kalan tek şey bu kelimeleri tercüme etmek ve ANKI kartları oluşturmak.

İlk başta çeviri için kullanmaya çalıştım Google Translate, Lingvo API'si vesaire. Ancak ücretsiz hizmetlerde işler yolunda gitmedi. Geliştirme sürecinde ücretsiz limiti tükettim, ayrıca lisans şartlarına göre kelimeleri önbelleğe alma hakkım yoktu. Bir noktada kelimeleri kendim tercüme etmem gerektiğini fark ettim. Sonuç olarak bir modül yazıldı. dsl2html hangisine bağlanabilirsiniz DSL sözlükleri ve bunları nasıl dönüştüreceğini kim bilebilir? HTML biçim.

Bir sözlük girdisi şu şekilde görünür *. Html, seçeneğimle karşılaştırıldığında seçeneğim AltınDict

ANKI'nin yabancı dil öğrenmenize ve röportaja hazırlanmanıza nasıl yardımcı olabileceğine dair iki hikaye

Bağlantılı sözlüklerde bir kelime aramadan önce onu şuraya getiriyorum: sözlük formu (lemma) kütüphaneyi kullanma Stanford CoreNLP. Aslında bu kütüphane sayesinde Java ile yazmaya başladım ve asıl plan her şeyi Java ile yazmaktı ancak süreç içerisinde kütüphaneyi buldum. düğüm-java bununla Java kodunu nodejs'den nispeten kolay bir şekilde çalıştırabilirsiniz ve kodun bir kısmı JavaScript'te yazılmıştır. Bu kütüphaneyi daha önce bulsaydım Java'da tek bir satır bile yazılmazdı. Süreçte doğan bir diğer yan proje ise yaratımdır. DSL belgelerinin bulunduğu depo ağda şu biçimde bulundu *.chm, dönüştürüldü ve ilahi forma getirildi. Orijinal dosyanın yazarı rumuzlu bir kullanıcı ise yojik Bu yazıyı gördüğünde yaptığı çalışmalardan dolayı kendisine çok teşekkür ediyorum; onun belgeleri olmasaydı büyük ihtimalle başaramazdım.

İngilizce bir kelimem var, sözlük girişi şu biçimde *. HtmlGeriye kalan tek şey her şeyi bir araya getirmek, kelime listesinden ANKI makaleleri oluşturmak ve bunları ANKI veritabanına girmek. Bu amaçla aşağıdaki proje oluşturuldu veri2anki. Giriş olarak bir kelime listesi alabilir, tercüme edebilir, ANKI oluşturabilir *. Html makaleler ve bunları ANKI veritabanına kaydedin. Makalenin sonunda nasıl kullanılacağına dair talimatlar bulunmaktadır. Bu arada ikinci hikaye aralıklı tekrarların yararlı olabileceği yerdir.

İkinci hikaye.

Programcılar da dahil olmak üzere daha fazla/daha az nitelikli bir uzmanlık arayışı içinde olan herkes, bir röportaj için hazırlanma ihtiyacıyla karşı karşıyadır. Röportajlarda sorulan kavramların birçoğu günlük pratikte kullanılmıyor ve unutuluyor. Bir röportaja hazırlanırken, notları, bir kitabı, bir referans kitabını karıştırırken, zaten bildiğiniz bilgileri ayıklamanın çok fazla zaman ve dikkat gerektirdiği gerçeğiyle karşılaştım çünkü bu her zaman açık değildir ve yapmanız gerekir. ne olduğunu anlamak için dikkatlice okuyun. alakasız. Gerçekten tekrarlanması gereken bir konuya geldiğinizde, genellikle zaten yorgun olduğunuz ve hazırlığınızın kalitesinin düştüğü görülür. Bir noktada neden bunun için de ANKI kartlarını kullanmayayım diye düşündüm. Örneğin bir konu hakkında not alırken hemen soru-cevap şeklinde bir not oluşturun, daha sonra tekrarladığınızda bu sorunun cevabını bilip bilmediğinizi hemen anlayacaksınız.

Ortaya çıkan tek sorun, soruları yazmanın çok uzun ve sıkıcı olmasıydı. Süreci kolaylaştırmak için, veri2anki projeye dönüştürme işlevini ekledim markdown ANKI kartlarındaki metin. İhtiyacınız olan tek şey, soru ve cevapların önceden belirlenmiş bir karakter dizisiyle işaretleneceği ve ayrıştırıcının sorunun nerede olduğunu ve cevabın nerede olduğunu anlayacağı büyük bir dosya yazmaktır.

Bu dosya oluşturulduktan sonra data2anki'yi çalıştırırsınız ve ANKI kartları oluşturur. Orijinal dosyanın düzenlenmesi ve paylaşılması kolaydır; yalnızca ilgili kartı/kartları silmeniz ve programı yeniden çalıştırmanız yeterlidir; yeni bir sürüm oluşturulacaktır.

Kurulum ve kullanım

  1. ANKI + AnkiConnect'in Kurulumu

    1. ANKI'yi buradan indirin: https://apps.ankiweb.net/
    2. AnkiConnect eklentisini yükleyin: https://ankiweb.net/shared/info/2055492159

  2. Montaj veri2anki

    1. İndirmek veri2anki github deposundan
      git clone https://github.com/anatoly314/data2anki
    2. Bağımlılıkları yükle
      cd data2anki && npm install
    3. Java bağımlılıklarını indirin https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Paketi açma jar-bağımlılıkları.zip ve içeriğini içine yerleştirin data2anki/java/kavanozlar

  3. Kelimeleri çevirmek için kullanın:

    1. Dosyada data2anki/config.json:

      • anahtarda kip değeri girin dsl2anki

      • anahtarda module.dsl.anki.deckName и module.dsl.anki.modelName buna göre yaz Deste Adı и Model adı (kartlar oluşturulmadan önce zaten oluşturulmuş olmalıdır). Şu anda yalnızca model türü desteklenmektedir Basic:

        Ön ve Arka alanları vardır ve tek bir kart oluşturur. Ön kısmına girdiğiniz metin kartın ön yüzünde, Arka kısmına girdiğiniz metin ise kartın arkasında görünecektir.

        kelimenin orijinali nerede? Ön sahave çeviri şu şekilde olacak: Arka alan.

        Destek eklemekte sorun yok Temel (ve ters kart)Kelime ve çeviri için ters bir kartın oluşturulacağı, çeviriye bağlı olarak orijinal kelimeyi hatırlamanız gerekeceği yer. İhtiyacınız olan tek şey zaman ve arzu.

      • anahtarda module.dsl.dictionariesPath bağlı * ile bir dizi kaydedin.dsl sözlükler. Bağlı her sözlük, sözlük dosyalarının aşağıdaki formata uygun olarak yerleştirildiği bir dizindir: DSL sözlük yapısı

      • anahtarda module.dsl.wordToTranslatePath çevirmek istediğiniz kelimelerin listesinin yolunu girin.

    2. ANKI uygulaması çalışırken başlatın
      node data2ankiindex.js
    3. KAR !!!

  4. Markdown'dan kart oluşturmanın kullanım alanları

    1. Dosyada data2anki/config.json:

      • anahtarda kip değeri girin markdown2anki
      • anahtarda module.markdown.anki.deckName и module.dsl.anki.modelName buna göre yaz Deste Adı и Model adı (kartlar oluşturulmadan önce zaten oluşturulmuş olmalıdır). İçin markdown2anki yalnızca mod model türü desteklenir Basic.
      • anahtarda module.markdown.selectors.startQuestionSelectors и module.markdown.selectors.startAnswerSelectors sırasıyla sorunun ve cevabın başlangıcını işaretlediğiniz seçicileri yazarsınız. Seçicinin bulunduğu satır ayrıştırılmayacak ve kartta yer almayacak; ayrıştırıcı bir sonraki satırdan çalışmaya başlayacaktır.

        Örneğin, bu soru/cevap kartı:

        ANKI'nin yabancı dil öğrenmenize ve röportaja hazırlanmanıza nasıl yardımcı olabileceğine dair iki hikaye

        Markdown'da şöyle görünecek:
        #QUESTION# ## Soru 5. Aşağıdaki sözdizimiyle çağrıldığında düzgün çalışacak bir mul işlevi yazın. ```javascript console.log(mul(2)(3)(4)); // çıktı : 24 console.log(mul(4)(3)(4)); // çıktı : 48 ``` #ANSWER# Aşağıda kodun ardından nasıl çalıştığı anlatılmaktadır: ```javascript function mul (x) { return function (y) { // anonim işlev return function (z) { // anonim işlev dönüş x * y * z; }; }; } ``` Burada 'mul' işlevi ilk argümanı kabul eder ve ikinci parametreyi alan anonim işlevi döndürür ve üçüncü parametreyi alan ve ardışık olarak iletilen argümanların çarpımını döndüren anonim işlevi döndürür Javascript işlevinde tanımlı inside'nin dış fonksiyon değişkenine erişimi vardır ve fonksiyon birinci sınıf nesnedir, dolayısıyla fonksiyon tarafından da döndürülebilir ve başka bir fonksiyona argüman olarak iletilebilir. - Bir işlev, Nesne türünün bir örneğidir - Bir işlevin özellikleri olabilir ve yapıcı yöntemine bir bağlantısı olabilir - Bir işlev değişken olarak saklanabilir - Bir işlev, başka bir işleve parametre olarak aktarılabilir - Bir işlev, başka bir işlevden döndü
        

        Buradan alınan örnek: 123-JavaScript-Röportaj-Sorular

        Proje klasöründe örneklerin bulunduğu bir dosya da bulunmaktadır. examples/markdown2anki-example.md

      • anahtarda modüller.markdown.pathToFile
        dosyanın yolunu yazın, burada *.md soru/cevap dosyası

    2. ANKI uygulaması çalışırken başlatın
      node data2ankiindex.js
    3. KAR !!!

Bir cep telefonunda şöyle görünür:

sonuç

ANKI'nin masaüstü sürümünde alınan kartlar, ANKI bulutu ile sorunsuz bir şekilde senkronize edilir (100 MB'a kadar ücretsiz) ve ardından bunları her yerde kullanabilirsiniz. Android ve iPhone için istemciler var ve bunu bir tarayıcıda da kullanabilirsiniz. Sonuç olarak, harcayacak hiçbir şeyin olmadığı zamanınız varsa, amaçsızca Facebook'ta veya Instagram'da kediler arasında dolaşmak yerine yeni bir şeyler öğrenebilirsiniz.

Sonuç bölümü

Bahsettiğim gibi bu, bitmiş bir üründen çok kullanabileceğiniz çalışan bir POC'dir. DSL ayrıştırıcı standardının yaklaşık %30'u uygulanmamaktadır ve bu nedenle, örneğin sözlüklerdeki tüm sözlük girdileri bulunamıyor, onu yeniden yazma fikri de var JavaScript, çünkü "tutarlılık" istiyorum ve ayrıca artık pek optimal yazılamıyor. Şimdi ayrıştırıcı bir ağaç inşa ediyor, ancak bence bu gereksizdir ve kodu karmaşıklaştırmasına gerek yoktur. İÇİNDE markdown2anki modunda görüntüler ayrıştırılmaz. Azar azar kesmeye çalışacağım ama kendim için yazdığım için öncelikle kendim adım atacağım sorunları çözeceğim ama yardım etmek isteyen varsa buyursun. Programla ilgili sorularınız varsa ilgili projelerdeki açık konular üzerinden yardımcı olmaktan memnuniyet duyarım. Diğer eleştiri ve önerilerinizi buraya yazın. Umarım bu proje birilerine faydalı olur.

Not: Herhangi bir hata fark ederseniz (ve ne yazık ki bazı hatalar var), bana kişisel bir mesajla yazın, her şeyi düzelteceğim.

Kaynak: habr.com

Yorum ekle