son commit

- ne yazık ki yarım kaldı, dokümantasyonu tamamlayamadım
This commit is contained in:
Aliberk Sandıkçı 2023-09-09 19:49:02 +03:00
parent 316ef3713e
commit 32f7df79f0
Signed by: asandikci
GPG key ID: 25C67A03B5666BC1
3 changed files with 45 additions and 10 deletions

View file

@ -80,10 +80,6 @@ Yazılım geliştirme konusunda uzman olmadığımdan, go dilini daha önce kull
#### Son Hafta (28 Ağustos - 3 Eylül 2023)
- Go'da crosscompile program yapmayı öğrendim ve projeye uyguladım
- Go Dinamik Plugin yapısını kodladım (goloader)
- Resource Usage pluginini bitirdim
- Hardware cihazlarını algılamak için hardware paketini kodladım
- Resource Usage pluginini ve ahenk-go programını Windows ile uyumlu hâle getirdim
- Go Dinamik Plugin yapısını kodladım (goloader) -eksik-
- Resource Usage pluginini ve ahenk-go programını Windows ile uyumlu hâle getirdim -eksik-
- program servis olarak çalışmamakta!
- Dökümantasyonları güncelledim
- .deb dosyasını güncelledim, windows ve linux için paketleri yayımladım

View file

@ -32,7 +32,9 @@ Bu dosyada geliştirme sürecinin sürekliliği ve bütünlüğü için gelişti
- Sorunlar
- Her seferinde manuel olarak ayarın değiştirilmesi lazım
- herhangi bir sistem için çalışırken diğer sistemin kodu içinde diagnotics çalışmamakta. Örneğin `tags=windows` etkinken eğer package_linux.go dosyasına gidersek go eklentisinin çoğu yapılandırma özellikleri çalışmamakta ve uyarı vermekte
- Neden bilmiyorum ama bazen bu geçici çözüm işe yaramamakta ¿
- Nedenini tam olarak bilmiyorum ama bazen bu geçici çözüm işe yaramamakta ¿
- go build satırını yorum işaretine bitişik yaz!, `// go:build linux && !windows` değil, `//go:build linux && !windows`
- go build satırından sonra bir satır boşluk bırak ?
### Otomatik Eklenti Ayarları
- Eklentileri Manuel olarak yüklemeniz gerekmektedir. Konfigrasyonlarını ise VSCode/Codium üzerinden kendiniz yapabilirsiniz veya `.vscode/settings.json` dosyasını direkt kullanabilirsiniz.
@ -44,7 +46,8 @@ Bu dosyada geliştirme sürecinin sürekliliği ve bütünlüğü için gelişti
- 1 adet Liderahenk sunucusu (Fiziksel/Sanal)
- veya herhangi bir yerel/diğer XMPP sunucusu
- 1 adet GNU/Linux Dağıtımı (Fiziksel/WSL)
- Wine yüklenmiş
- Wine yüklü
- [bakınız](#wine-geliştirme-ortamının-oluşturulması)
- Docker [godeb](#creating-docker-development-environment)
- Paket buildlemek ve mini testler için
- içinde Pardus sanal makine
@ -67,3 +70,36 @@ docker pull asandikci/godeb
docker run -it -d --name build1 asandikci/godeb:latest "bin/bash"
docker attach build1 --detach-keys "ctrl-k"
```
<br>
<details>
<summary>-- wine --</summary>
### Wine Geliştirme Ortamının oluşturulması
> Daha önce hiç Wine kullanmadıysanız **ve** bilgisayarınız sanal makinede windows çalıştırabilecek güçte ise bu başlığı atlamanız önerilir.
> adımlar wine8.15(staging) ve go1.21.0 sürümleri kullanılarak yapılmıştır
- paket yöneticinizden `wine` veya `wine-staging` paketini indiriniz ve `wineboot -u` komutunu çalıştırınız
- https://go.dev/dl/ adersinden en son yayınlanan .msi dosyasını indiriniz.
- terminal üzerinde `wine control` komutunu çalıştırınız ve kontrol panelini açınız
- Add/Remove Program
- bir önceki adımda indirdiğiniz .msi dosyasını yükleyiniz
- yükleme konumu olarak `C:\users\KullanıcıAdınız\go\` dizinini seçiniz
- terminal üzerinde `wine regedit` komutunu çalıştırınız ve kontrol panelini açınız
- **HKEY_CURRENT_USER** > **Environment** dosyasına geliniz.
- GOPATH'i `C:\users\KullanıcıAdınız\go` şeklinde düzenleyiniz (kurulumda kurduğunuz path)
- PATH'i `C:\users\KullanıcıAdınız\go\bin` şeklinde düzenleyiniz
- https://github.com/eh-steve/goloader#build adresinde yer alan ayarları yapınız, GOROOT değişkenini kullanmak yerine işlemi manuel olarak yapmanız önerilir.
- Artık `make local_wine` komutu ile go dosyasını buildleyip, `wine /usr/bin/ahenk-go` komutu ile çalıştırabilirsiniz. (sisteminiz sadece `ahenk-go` yazınca da wine ile çalıştıracağını anlayabilir)
#### Wine ile ilgili ek bilgiler
- eğer halihazırda bir wine kurulumunuz varsa ve farklı bir dizin kullanmak istiyorsanız `winetricks` uygulamasını yükleyerek yeni bir prefix oluşturabilirsiniz.
- sonrasında çalıştıracağınız tüm komutları `env WINEPREFIX=~/.local/share/wineprefixes/PREFIX_ISMI wine KOMUT` öneki ile çalıştırınız. ([yukarı](#wine-geliştirme-ortamının-oluşturulması)daki komutların tümünü ve sonrasında çalıştıracağınız ahenk-go)
- bazı kabuklarda tilde ~ sembolü çalışmayabiliyor, full dizini yazının.
- eğer yeni bir prefix oluşturduysanız Makefile dosyasını gözden geçiriniz ve **özellikle** `WINE_C` değişkenini değiştiriniz !
- Herhangi bir sorun olduğunda ve çözüm bulamadığınızda winetricks uygulamasından ilgili prefix'i seçip herşeyi sil seçeneğini seçip, tüm adımları baştan yapabilirsiniz.
- eğer wine konsolu üzerinde sürekli fixme hataları çıkıyorsa kodu `env WINEDEBUG=fixme-all wine KOMUT` ile çalıştırınız
- goloader, jit, kernel veya pluginlerin yüklenmesi ile ilgili sorun/panic oluşuyorsa `make local_wine_safeplugins` komutunu deneyiniz
- bu komut pluginleri paket olarak içeri import eder ve hangi pluginde sorun olduğunu daha anlaşılabilir bir şekilde gösterir.
- dolayısı ile unload vb. diğer plugin özellikleri çalışmaz, sadece debugging amaçlı kullanınız !
- FIXME `panic: Failed to find GetStdHandle procedure in kernel32.dll: Path not found.` ve `panic: Failed to load kernel32.dll: Path not found.` hatalarının çözümü bulunamadı! Eğer siz de bu hatayı alırsanız wine yerine windows kullanmayı deneyiniz veya sorunu çözerseniz bu dökümantasyona ekleyiniz.
</details>

View file

@ -1,6 +1,8 @@
# Yeni Geliştiriciler için Açıklamalar
Bu projede devam edecek olan geliştiriciler, stajyerler veya katkı sağlamak isteyen harici *contributor*lar için başlangıç kılavuzu, açıklamalar ve öneriler. Bu dosyayı, hâlihazırda olan dökümantasyonların sırasıyla daha iyi anlaşılması için oluşturulmuş bir roadmap gibi düşünebilirsiniz.
SON UPDATE: howto.md ve changelog.md dosyalarını güncellemeye ve dev-notes/asandikci.md dosyasındaki son hafta için yazdıklarımı (commit=316ef3713e9119b0869baea40406fcf5482faf10) yapmaya vaktim yetmedi, bu dosyadan ana mantığı anlamaya çalışın ama goloader kullandıktan beri güncellemediğim için plugin mantığı çok eksik kalacak... goloader-changes branchına ve son commit'e bakınız ve anlamaya çalışınız!
## Gereklilikler
### Geliştirme Ortamının kurulması
- Geliştirme ortamı için go dilini paket yöneticinizden veya resmi sitesinden kurunuz (>=1.21.0)
@ -99,6 +101,7 @@ Go dili ve ortamın kurulması haricinde bunlar hakkında bilgi sahibi olmanız
- cli flag, argument management (cobra) (gerekli mi?)
- daha iyi versiyon yönetimi, deb/exe ve version dosyası için senkronizasyon
- otomatik versiyon güncellemesi
- go kodları için otomatik testler (package_test.go ve makefile içinde)
- daha fazlası için [buraya](./changelog.md#next) bakınız
<br><br>