Yazılım dünyası çok dallanıp budaklandı. O kadar çok teknoloji var ki, eğitimleri piyasanın ihtiyaçları yönünde ve dünya gündemine uygun olarak düzenlemek gerekiyor.
Microsoft Windows dünyada çok popüler bir işletim sistemi olmakla birlikte .NET Core o kadar çok popüler sayılmaz.
JavaScript, Java, Python gibi diller çok daha fazla kullanılmaktadır. Hedef Pardus işletim sistemiyse eğer bu yazılım dillerine odaklanmak gerekmektedir.
1) WEB YAZILIM EĞİTİMİ
MongoDB
Express
Angular (HelloWorld, CRUD, WebRTC, WebXR, Notifications)
NodeJS
2) MOBİL YAZILIM EĞİTİMİ
Flutter (HelloWorld, KVKK’lı Üyelik, Speech Recognition, TTS, FaceID, VoiceID, AR, VR, Notifications)
MongoDB, Firebase
Python
Parse
3) YAPAY ZEKA EĞİTİMİ
Python
Big Data
Tensorflow
Dialogflow (ChatBot)
AutoML
4) OYUN GELİŞTİRİMİ EĞİTİMİ
C++
Unity/Unreal Engine
5) İLERİ TEKNOLOJİ EĞİTİMİ
Blockchain (HyperLedger Fabric (GoLang), Ethereum 2.0 (Solidity), Diem (Move), Bitcoin)
IoT (Kubernetes, Java)
Kuantum Bilişim (Post-Kuantum Güvenlik, DWaveSys, IBM)
6) SİSTEM VE GÜVENLİK EĞİTİMİ
Network
Pardus
Kvkk
ISO 27001
Backup
Siber Güvenlik
DDoS
Bulut
Post-Kuantum Güvenlik Algoritmaları
7) VERİTABANI VE BİG DATA EĞİTİMİ
Oracle/SQL Server
No-SQL Veritabanları
Big Data
Java
Raporlama
Eğitimlerin içeriğine dikkat ederseniz bu eğitimleri Pardus yüklü bilgisayarlarda verebilirsiniz, eğitimler platform bağımsızdır. Her bir eğitim 100 günde verilecek şekilde planlanabilir, sıralamalar ve kısmen içerik değiştirilebilir.
Ve bu eğitimler JavaScript, Java, C++, Python, GoLang gibi platform bağımsız dillere odaklanmaktadır.
C# aslında kaliteli bir nesne-yönelimli programlama dilidir. Fakat .NET 5 ile ilgili iki kötü gelişme bulunmakta:
- Windows.Forms gibi platform-bağımlı bir özelliği eklediler, halbuki bunu platform bağımsız yapmaları gerekiyordu.
- .NET Core bilgisayardan bilgi toplayan bir servis içeriyor. Telemetry servisinin casusluk ve yapay zeka eğitimi amaçlı bilgi topladığını düşünüyoruz. Microsoft zararı yok dese de by-default bilgi toplamasının hoş olmadığını biliyorsunuz.
Buna karşın .NET Core Pardus’ta kullanılabilir, Pardus üzerinde eğitimleri verilebilir. Yalnız biz Linux testlerimizde .NET Core EF Core SQL Server nuget paketlerinin Linux’ta problem çıkardığını ve direkt çalışmadığını gördük, o yüzden NodeJS öneririm, böylece JavaScript/TypeScript diliyle hem client ve hem server tek eğitimde daha kolay verilebilir.
Bulut konusunda edindiğimiz bilgiler:
Azure’da 10 siteye kadar bedavaya web sitesi ve restful api hostingi yapabilirsiniz. Sqlite veritabanı kullanırsanız eğitim amaçlı backend servislerini Azure Linux Web App’larına ücret ödemeden yükleyebilir ve yayınlayabilirsiniz.
AWS’de giriş seviyeyi istediğiniz kadar ücretsiz Linux/Windows makina açabilirsiniz. Bu sanal sunucuları hosting ve test amacıyla kullanabilirsiniz.
Firebase Hosting’de giriş seviyesi Angular projelerinizi ücretsiz yayınlayabilir. Ücretsiz Notifications servisini kullanabilir, Firebase No-SQL veritabanlarını ücretsiz kullanabilirsiniz.
Google’ın ve Microsoft’un bazı yapay zeka hizmetleri ücretsizdir, bunları eğitimlerde kullanabilirsiniz. Dialogflow ile hiçbir ücret ödemeden Siri benzeri bir ChatBot uygulaması hazırlayabilirsiniz.
Ek Gereksinimler:
WebRTC ve WebXR konuları için bilgisayarlarda kamera, mikrofon ve hoparlör bulunmalıdır.
Kuantum Bilgisayar
DWaveSys’e GitHub hesabıyla kaydolduğunuzda ayda 1 dk kadar ücretsiz Kuantum İşlemci kullanmanıza izin veriyor. Python kullanıyorsunuz ve Api ile Kuantum işlemcide işlem yapıp sonuç alabiliyorsunuz. Bu hizmetten eğitimlerde faydalanılabilir. IBM’de de benzeri hizmet var diye tahmin ediyorum.
Neden Angular?
React ve Vue’nun daha popüler olduğunu, özellikle Vue’nun daha çok tercih edilmeye başlandığını biliyorum. Ancak:
1) Angular ekibi boş durmuyor, Angular’ın performansını artırmaya yönelik çalışıyorlar.
2) Angular ile all-in-one çözümler daha kolay.
3) Angular’da HTML, SCSS, ve TS dosyaları tamamen ayrıştırılmış durumda.
4) MEAN uygulamaları yaygın.
5) Arkasında Google var ve daha güvenli.
Buna karşın üç önemli dezavantaj var:
1) Angular hatalı işlem yaparsanız yavaş; mesela html’de döngülerde fonksiyon kullanırsanız, istemci işlemcisine ve ramine fena yüklenen uygulamalara neden olabilirsiniz.
2) Angular demode oluyor havası var. Gerekçe olarak backward-compatibility sorunlarını öne sürüyorlar.
3) Angular’da SSR işi çok zor. Yani web siteniz SEO uyumlu olmuyor ve bunu çözmekte hayli zorlandım hatta çözemedim.
Buna karşın Themeforest’taki temalarda ve sektörde büyük projelerde Angular’ın tercih edildiğini gözlemlemeniz mümkün, çünkü arkasında Google var, bence bu iyi bir sebep.
Neden Flutter?
Her ne kadar React Native’de Mac OS X’e gerek olmadan uygulamayı geliştirmeye ek olarak expo ile iPhone’a uygulamayı aktarıp test etmek daha kolay olsa da, Flutter’ın kısa zamanda React Native kadar popüler olduğunu göz önüne alarak nihai karar olarak Flutter’da karar kıldım.
GoLang için biraz erken, devir Python devri
Yapay Zeka ve Big Data denildiğinde genelde akla Python geliyor şu sıralarda. Ancak bilmenizi isterim ki Python yavaş ve çok eski bir dil, bundan dolayı yakın gelecekte yüksek performanslı GoLang’e geçeceğimizi gözlemlemeniz mümkün.
Neden Firebase?
Firebase en hızlı ve en güçlü No-SQL, Mobil ve Yapay Zeka altyapısının backendini sağlıyor. Alternatifi olan Parse projesi Facebook tarafından kapatıldı ve popüleritesini kaybediyor. Ancak bir sorunumuz var: Google’ın Firebase’in ucuz bir on-premise çözümünü sağlaması lazım ki yurtiçi bulutlara yükleyip kullanabilelim. Firebase’in on-premise alternatifi MongoDB’dir.
DevOps:
GitHub/GitLab, CI/CD hizmetleri genel olarak ücretsizdir, eğitimlerde kullanabilirsiniz.
Daha ayrıntılı eğitim müfredatı önerileri:
1) WEB YAZILIM EĞİTİMİ (100 GÜN):
- Angular: HelloWorld, CRUD, WebRTC, WebXR, Notifications (25 gün)
- Geliştirim Ortamı: Visual Studio Code ve GitHub/GitLab (1 gün)
- Backend: NodeJS, JavaScript/TypeScript, OOP, KVVK’lı Üyelik Sistemi, Express, Socket.io (25 gün)
- DB: Sqlite, MongoDB, Firebase (25 gün)
- Bulut: AWS, Azure, Google Cloud, Yerli Bulutlar (6 gün)
- DevOps ile Proje Geliştirimi ve Yayınlama (15 gün)
- Test ve Güvenlik (3 gün)
2) MOBİL YAZILIM EĞİTİMİ (100 GÜN):
1. Flutter (25 gün)
2. Android Studio/Visual Studio Code ve GitHub/GitLab (1 gün)
3. KVVK’li Üyelik, FaceID, VoiceID, Speech Recognition, TTS, Notifications (10 gün)
4. AR, VR (10 gün)
5. Python Backend ve Restful Servisler ve KVKK’lı üyelik sistemi (15 gün)
6. MongoDB, Firebase (15 gün)
8. Erişilebilirlik (1 gün)
9. DevOps ile Proje Geliştirimi ve Yayınlama (15 gün)
10. Test ve Güvenlik (3 gün)
Neden Bitcoin’e karşıyım?
Bitcoin ve Satoshi Nakamoto önemli bir buluş yaptı. Fakat Bitcoin kuantum bilgisayarlara dirençli değil ve güncellenemiyor. O bu işin deneme sürümüydü ancak artık güvenli sayılmaz, yani artış ve düşüşler sahte olabilir, o yüzden artık Diem (move), Ethereum 2.0 (solidity) ve HyperLedger Fabric (golang) gibi yeni sürüm kuantum bilgisayarlara dirençli blockchain teknolojilerine odaklanılması gerekmektedir.
KVKK’lı Üyelik Ne Demek?
- Veritabanında Kullanıcılar tablosunda Şifre alanı Post-Kuantum Güvenlik Algoritması ile tek yönlü hashlenerek kaydedilmelidir.
- Veritabanındaki kişisel veriler post-kuantum güvenlik algoritmaları ile encyrpt edilerek saklanmalıdır.
- Üyelik sisteminde ORM üzerinden (veya DB seviyesinde) mutlaka AuditLog olmalıdır. Logların güvenliği sağlanmalıdır.
- Kullanıcıların kişisel verileri yönetim panelinde açıkça olmamalı, sadece yetkisi olan kullanıcıların görebileceği şekilde gizli olmalıdır.
- Kullanıcıların kişisel verilerinin hangi tarihte (zaman-pulu) hangi amaçla erişildiğinin ve işlendiğinin loglarının tutulması iyi olur.
- Güvenlik için iki-faktörlü kimlik doğrulaması yapılmalıdır. SMS yerine Authenticator tavsiye edilmektedir.
- SSL kullanılmalıdır. (Let’s Encrypt ücretsiz SSL sağlamaktadır.)
- Veritabanı komple encrypt edilerek diske kaydedilmelidir. (Veritabanı yazılımlarının bu tür özellikleri bulunuyor).
- İstemci tarafında hassas veri kaydedilmemelidir.
- Şifrelerin güçlü olması ve zamanla değiştirilmesi sağlanmalıdır.
- Issuer ve Audience (JWT) kontrolleri yapılmalıdır.
- Google seviyesinde güvenlik hedeflenmelidir.