Öğrencilerim İçin Hazırladığım Program ve Güncelleme Olayı Hakkında Yardım

Merhaba arkadaşlar eğitimde dijital içeriklerin eksikliği benim gibi ilkokul düzeyinde öğretmenlik yapan sınıf öğretmeni arkadaşları gerçekten zorluyor. Yeni nesil okuma alışanlığı ,çocukluk zamanlarımızdaki (okuma yarışı vb.) gibi etkinlikleri eğlenceli bulmuyor. Sınıf içerisine özellikle ilkokul birinci sınıf düzeyinde okuma alışkanlığı kazandırma, hızlı okuma eğitimi gibi bir çalışma yapmaya karar verdim ve öğretmen arkadaşlarımızla kullanmaya eksiklik ve eklenebilir yenilikler hakkında görüş almaya başladım.
Programın mantığı seçilen harf gruplarıyla ilgili belirli bir süre için ekranın 4 farklı köşesinde ve ortasında olmak üzere 5 farklı koordinatta, belirlenen geçiş süresinin hızına göre değişen yazıları hızlı okutmaya çalışıp yarıştırırken eğlendirmeyi ve ekran okumayı, hızlı algılama becerilerini geliştirmeyi sağlamak.
-Görsel tasarım PyQt5 kütüphanesi kullanılarak QtDesigner desteğiyle geliştirildi.
-Veritabanı konusunda sqlite3’ten faydalanıldı.(Binlerce farklı kelime ve cümle veritabanına eklendi)
-Exe formatına çevirmek için auto-py-to-exe modülü kullanıldı.
-Tek paket kurulum dosyasına çevirme için de farklı araçlar denedim ve en sonunda advanced installer programında karar kılıp .msi formatında tek dosya haline getirdim.
Görseller:




Şimdi bazı konularda sizlerden yardım almam gerekiyor.
1.Güncelleme olayı için şu şekilde çok basitçe bir fikir geliştirdim.Bir pushbutton ile güncelleme olup olmadığı kontrol edilecek.Örneğin ; yazbel.com/updateservice.txt adlı sayfadan request ile dönüt sağlanacak (sayfadaki html içerikte link vb kaynak kodları çekilip ayıklanarak). Ardından indir butonu oluşturularak indirip tekrar kurmaları sağlanabilir.Ancak bu yaklaşım ne kadar işe yarar etkili olur bilemedim.Açıkçası güncelleme hakkında sunduğum bu fikirler tamamen yanlış da olabilir sizler daha iyi yorumlarsınız elbet.
2.Şimdi bir öğrencimle bu çalışmayı yaparken kaç tane doğrusu olup olmadığını kendim sayarak en sonunda dönüt verebilirim ancak çocuk doğru bildikçe doğrularını sayan bir fon sesi veya yeşil efekt ile güdüleyen bir şey ekleme niyetim oldu onu da şu şekilde denemek istedim;speech_recognition adlı modül ile google destekli sesleri algılamak çok da mantıklı bir yaklaşıp olmadı çünkü çocuk hızlı bir şekilde okurken bunu algılaması sonra yazıya dönüştürüldükten sonra uyuşmaması örneğin Efkan için “Efkın ,Efkon” gibi sonuçlar üretmesinen ötürü bu düzenlemeden şimdilik vazgeçtim.

2 Sorunum için verebileceğiniz her türlü fikre açığım çözüm değil yaklaşımlarınız da yeterli olur :slight_smile: Teşekkürler

Düzenleme: Sağ üst ekrandaki sayıdan oluşan label Qtimer ile basitçe tasarlanmış 60 saniyelik bir zamanlayıcı.Video olmayınca merak edilebilir diye açıklamak istedim:)

  1. Guzel bir fikir. Txt dosyasi koyulursa HTML ayiklamaya filan gerek kalmaz. Ornek: https://www.aib.link/file/sectioned-file.txt Dosyada version, ve yeni versiyona link olur. Hatta kullanicinin onayiyla indirilip kurulabilir bile.

  2. Online speech recognition API client kutuphaneleri bu is icin dogru degil. Offline calisan ve speech recognition yapabilen kutuphane kullanmak lazim. Sahsen bir sey oneremeyecegim malesef, ama akademik literature bakilabilir. Bu arada Turkce fonetik bir dil oldugu icin bu isin diger dillerden cok daha kolay olmasi lazim.

Bu arada programin kaynak kodunu yayinlamayi dusundunuz mu?

1 Beğeni

İlerleyen süreçte paylaşmayı düşünüyorum ki paylaşacağım yer tanıtım şeklinde yazbel forumunda olacaktır.

Sadece bir tane çözemediğim sorunum, daha doğrusu takıntım kaldı.Malumunuz python projesini exe vb formatlara hatta tek kurulum paketi haline de getirsem kurulum sonrası klasörde veritabani.db gibi dosya kabak gibi görünüyor. Tamamen dışarıdan müdahale edilebilecek bir veritabanı dosyası. Bunu şifrelemek için sqlcipher3 kullanmak daha doğrusu kurmaya çalışmak istedim bir türlü yapamadım. DB browser cipher ile de veitabanına deneme şifre koydum ancak sanırım sqlite3 ve sqlcipher3 komutlarından kaynaklı farklılıklardan dolayı veritabanına erişim sağlayamıyorum.

Şunu düşündüm dosya yazbel.db değil de VCRUNTIME140_3.dll gibi klasörde bulunan diğer dosyalar gibi isimlendirilse program veritabanı bağlantısını gerçekleştirirken os.rename ile .db haline getirilip işlemler ypaıldıktan sonra tekrar .dll ismi verilse normal bir kullanıcı için tahmin edilemez bir yapı oluşturur ancak benim gibi takıntılıysa ona da bir şekilde müdahale edilebilir diye düşündüm :smiley:

Veritabanında 4 kolon şeklinde 2000 satır var. Bunu listeye de çekip programda liste şeklinde de tanımlarım ancak ne kadar mantıklı bir yol olur bilemedim.

Bu arada pip install sqlcipher3 e terminalin verdiği dönüt;

   error: subprocess-exited-with-error

  × Building wheel for sqlcipher3 (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [12 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build\lib.win-amd64-cpython-311
      creating build\lib.win-amd64-cpython-311\sqlcipher3
      copying sqlcipher3\dbapi2.py -> build\lib.win-amd64-cpython-311\sqlcipher3
      copying sqlcipher3\__init__.py -> build\lib.win-amd64-cpython-311\sqlcipher3
      running build_ext
      Builds a C extension linking against libsqlcipher library
      building 'sqlcipher3._sqlite3' extension
      error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for sqlcipher3
Failed to build sqlcipher3
ERROR: Could not build wheels for sqlcipher3, which is required to install pyproject.toml-based projects

@aib Burada yazdığınız imzalama olayını uygulamaya çalışıyorum bakalım çözebilirm belki.

Aslında yazbel.db dosyanı ilk oluşturduktan sonra ismini ve sonluğunu değiştire bilirsin, .db uzantısını sile de bilirisin yalnızca ismi kalacak şekilde, sqlite3 connection yapınca dosya uzantısına göre değil dosyanın içinde olan header kısmına göre db olduğunu anlıyor. Yani os.rename kullanmana gerek yok.

1 Beğeni

Teşekkürler ,evet güzel bir yaklaşım.Ancak hiç bulaşılamaması için bir şeyler denesek :slight_smile:
Aslında bu şekilde harmanlayarak normal bir kullanıcının müdahalesi engellenmiş olabilir. Ancak sizin gibi bir arkadaş kurulum ardından klasör içerisine göz attığı anda python ile geliştirildiğini bu klasörde mutlaka bir veritabanı olduğunu düşünebilir :slight_smile:
Tamamen takıntı
hash değerlerinin karşılaştırılması ile denemeye çalışıyorum bakalım belki bir sonuca varırırm.

Düzenleme : İmzalama yöntemiyle hash değerlerini karşılaştırarak bir çözüm ürettim.Ancak ne kadar etkili olur bilemiyorum.

Hata bu

microsoft.com uzantili linklerin dogru yere gittigine asla guvenmeyin. Visual Studio Tools kurmak gerekiyor. ~1 sene once soyleydi:

Visual Studio Build Tools (from Thank you for downloading Visual Studio - Visual Studio at time of writing).

MSVC v### - VS #### - C++ x64/x86 build tools (Latest)
Windows ## SDK
Windows Universal CRT SDK

Bir dosyanin uzantisi sadece Windows kullanicilarinin dosyaya cift tikladiginda ne oldugunu belirler.

Mudahale etmesini niye engellemek istiyoruz?

1 Beğeni

Hocam açıkçası şöyle bir hassasiyetim var. Bu içerik ilkokul seviyesinde öğrenciler için kullanılacak özellikle 1.sınıfta okuma yazma öğrenen çocuklar için.Kelimeler gelişim seviyelerine uygun olarak seçildi. Veritabanının içeriğinin değiştirilmesi ,bu değiştirilmiş halinin dağıtılması kullanılması sorun oluşturabilir benim ,kullanan öğretmenlerin ve öğrenciler için. Açıkçası online bir veritabanı kullanılabilir ancak bağlantı problemleri vb. durumlardan dolayı offline kullanmak istedim.

Üstteki mesajımda bahsettiğim gibi sizin daha önceki bir konudaki imzalama (hash kontrol) tavsiyenizi denedim sorun yok çalışıyor. İmzalama yöntemi ilk aşamada güvenlik için beni tatmin etti . Kurulum vs. sorun çıkarmıyor fakrlı makinede de çalışıyor.

AES ile şifreleyerek verileri veritabanına kaydedip ekstra olarak hash değer kontrolü yaparak çift katmanlı bir işlem uyguladım. Herkese fikirleri için teşekkür ederim.

Oysa ilkokulda bir ogrencinin database’i gorup degistirmesi, belki OSURUK kelimesini ekleyip gulmesi ne kadar guzel olurdu, degil mi? Hayatimizin her yerinde olan ve her yerini kontrol eden programlarin bir tanesinin nasil calistigini, senin-benim gibi insanlar tarafindan yazildigini, gerekli bilgiye sahip insanlar tarafindan degistirilebildigini kesfetmesi, belki programciliga heveslenmesi…

Boyle programlara ve beraber gelistirme, inceleme, kurcalama (“hacking”) kulturune cok daha fazla ihtiyacimiz var bir hizli okuma programindan. Birinden onlarca bulursunuz belki, herhangi bir app store’da aratsaniz. Ozellikle de para vermeye hazirsaniz. Oysa oteki hobileri, bos zamani olan ogretmenlere ve bu insanlarin bos vakitlerini belirli kulturleri yaymaya harcamalarini gerektiriyor. Paraya veya tepeden inme efora vurmaya kalksaniz toplumun bir kismini kalkindirmaya esdeger!

Konuyla ve cok daha gecerli dertlerle alakasiz olabilir yazdiklarim, ben sadece sevdigim ve yaymak icin vakit harcadigim bir kulturden bakis acisi getirmek istedim.

5 Beğeni

Hocam yazdıklarınıza katılmamak elde değil. Ben de aslında bahsettiğiniz kültürden gelen sonra hayatın yönlendirmesiyle farklı alanlara kayan birisiyim. Açıkçası meyve veren ağaç taşlanır misali durumlarla karşılaşmamak için ki karşılan çok insan vardır kendi güvenliğimi almak zorunda kalıyorum:)

"OSURUK " kelimesini ekleyip gülecek yetenekte öğrenci yetiştirmek lazım ancak kimse onun yetişmesine ,yeteğini tebrik etmeye maalesef şu an için çalışmıyor. Programcı suçludur :slight_smile: Ancak şahsen konuşacak olursam bakış açısını vermeye çalışıyorum. Mesela geçmiş konularımdan alfabetik sıralama olayı tamamen buna yönelikti.

Ayrıca dediğim gibi bahsettiğiniz kültür takıntıyı da doğuruyor:)

1 Beğeni

Hocam, malesef yillar icerisinde o kadar korkunc hikayeler duydum ki, hak veriyorum.

Bu arada DB degistirilmisse uyari vermek geldi aklima, ara yol olarak. Zaten bir suru sey yazdigim icin bir de onu karistirmayayim dedim.

1 Beğeni