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) #### Son Hafta (28 Ağustos - 3 Eylül 2023)
- Go'da crosscompile program yapmayı öğrendim ve projeye uyguladım - Go'da crosscompile program yapmayı öğrendim ve projeye uyguladım
- Go Dinamik Plugin yapısını kodladım (goloader) - Go Dinamik Plugin yapısını kodladım (goloader) -eksik-
- Resource Usage pluginini bitirdim - Resource Usage pluginini ve ahenk-go programını Windows ile uyumlu hâle getirdim -eksik-
- Hardware cihazlarını algılamak için hardware paketini kodladım - program servis olarak çalışmamakta!
- Resource Usage pluginini ve ahenk-go programını Windows ile uyumlu hâle getirdim
- 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 - Sorunlar
- Her seferinde manuel olarak ayarın değiştirilmesi lazım - 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 - 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ı ### 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. - 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) - 1 adet Liderahenk sunucusu (Fiziksel/Sanal)
- veya herhangi bir yerel/diğer XMPP sunucusu - veya herhangi bir yerel/diğer XMPP sunucusu
- 1 adet GNU/Linux Dağıtımı (Fiziksel/WSL) - 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) - Docker [godeb](#creating-docker-development-environment)
- Paket buildlemek ve mini testler için - Paket buildlemek ve mini testler için
- içinde Pardus sanal makine - içinde Pardus sanal makine
@ -66,4 +69,37 @@ docker pull asandikci/godeb
```sh ```sh
docker run -it -d --name build1 asandikci/godeb:latest "bin/bash" docker run -it -d --name build1 asandikci/godeb:latest "bin/bash"
docker attach build1 --detach-keys "ctrl-k" 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 # 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. 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 ## Gereklilikler
### Geliştirme Ortamının kurulması ### Geliştirme Ortamının kurulması
- Geliştirme ortamı için go dilini paket yöneticinizden veya resmi sitesinden kurunuz (>=1.21.0) - 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?) - cli flag, argument management (cobra) (gerekli mi?)
- daha iyi versiyon yönetimi, deb/exe ve version dosyası için senkronizasyon - daha iyi versiyon yönetimi, deb/exe ve version dosyası için senkronizasyon
- otomatik versiyon güncellemesi - 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 - daha fazlası için [buraya](./changelog.md#next) bakınız
<br><br> <br><br>