update docs
This commit is contained in:
parent
4c7d575a17
commit
316ef3713e
6 changed files with 80 additions and 13 deletions
|
@ -1,6 +1,6 @@
|
|||
# Ahenk Geliştirici Dokümantasyonu
|
||||
|
||||
Bu dizinde Ahenk arka yüz geliştiricileri ve Ahenk eklenti geliştiricileri için faydalı olacak dokümantasyon ve kaynaklar bulunmaktadır. Ağırlıklı olarak Türkçe olması planlansa da içerisinde İngilizce sayfalar, yazılar veya terimler de bulunabilir.
|
||||
Bu dizinde Ahenk arka yüz geliştiricileri ve Ahenk plugin geliştiricileri için faydalı olacak dokümantasyon ve kaynaklar bulunmaktadır. Ağırlıklı olarak Türkçe olması planlansa da içerisinde İngilizce sayfalar, yazılar veya terimler de bulunabilir.
|
||||
|
||||
<!-- TODO Geliştirici Dokümantasyonuna aynı zamanda https://docs.liderahenk.org/ahenk/dev adersinden de ulaşabilirsiniz. -->
|
||||
|
||||
|
@ -12,5 +12,6 @@ Bu dizinde Ahenk arka yüz geliştiricileri ve Ahenk eklenti geliştiricileri i
|
|||
- *[basitleştirilmiş admin versiyonu](../admin/changelog.md)*
|
||||
- [Çalışma Mekaniği ve Süreçleri](howto.md)
|
||||
- *[basitleştirilmiş admin versiyonu](../admin/howto.md)*
|
||||
- [Yeni Plugin Geliştirme](newplugin.md)
|
||||
- [Geliştirici Günlükleri (gayriresmi)](./dev-notes/)
|
||||
- [Ahenk Python Dökümantasyonu](https://github.com/Pardus-LiderAhenk/lider-ahenk-docs/tree/docs-1.0/docs/developers/ahenk)
|
|
@ -3,4 +3,4 @@ Bu dizin ahenk-go üzerinde veya benzer projeler üzerinde çalışacak yeni gel
|
|||
|
||||
| Geliştiriciler | Görevi | Görev Süresi | Notlar |
|
||||
| -------------- | ------ | ------------ | ------ |
|
||||
| Aliberk Sandıkçı | Stajyer | 6 Temmuz - 31 Ağustos | [asandikci.md](asandikci.md) |
|
||||
| Aliberk Sandıkçı | Stajyer | 6 Temmuz - 3 Eylül | [asandikci.md](asandikci.md) |
|
|
@ -79,9 +79,11 @@ Yazılım geliştirme konusunda uzman olmadığımdan, go dilini daha önce kull
|
|||
- Kodu concurrent bir şekilde tekrar düzenledim, goroutine kullanmaya başladım
|
||||
|
||||
#### 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
|
||||
- Go'da crosscompile program yapmayı öğrendim
|
||||
- Go Dinamik Plugin yapısını kodladım
|
||||
- Resource Usage pluginini ve ahenk-go programını Windows ile uyumlu hâle getirdim (daemon/servis olarak çalışmamakta)
|
||||
- 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
|
||||
- program servis olarak çalışmamakta!
|
||||
- Dökümantasyonları güncelledim
|
||||
- .deb dosyasını güncelledim, windows ve linux için paketleri yayımladım
|
|
@ -10,14 +10,16 @@ Bu dosyada geliştirme sürecinin sürekliliği ve bütünlüğü için gelişti
|
|||
#### Comment Anchors (`exodiusstudios.comment-anchors`)
|
||||
- `TODO` » Future Tasks
|
||||
- `NEXT` » High Priority Tasks
|
||||
- settings.json dosyasına ekleyiniz (default, #12449f, file)
|
||||
- `FILLME` » Reusable code block
|
||||
- settings.json dosyasına ekleyiniz (default, #A8C993, file)
|
||||
- use epic anchors for improve reachability
|
||||
- `FIXME` » Bug or error
|
||||
- `NOTE` » Extra note
|
||||
- `REVIEW` » This code block needs a review
|
||||
- `LINK` » Link to documentation/forum/information
|
||||
- `LINK` » Link to code block with line number/id
|
||||
- see https://github.com/StarlaneStudios/vscode-comment-anchors#link-anchors
|
||||
- see https://github.com/StarlaneStudios/vscode-comment-anchors for more information
|
||||
#### Go (`golang.go`)
|
||||
-
|
||||
##### FIXME build flag issues
|
||||
- package_linux.go ve package_windows.go kodlarındaki aynı fonksiyonlar sorun yaratmakta. Örnek için ahenk-go/pkg/osinfo/os_windows.go ve os_linux.go dosyalarını IDE'nizde birlikte açınız
|
||||
- see these [t](https://github.com/microsoft/vscode-go/issues/2672)w[o](https://github.com/golang/go/issues/29202) issues or [workaround](#workaround) to resolve problem
|
||||
|
@ -30,8 +32,11 @@ 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
|
||||
- Neden bilmiyorum ama bazen bu geçici çözüm işe yaramamakta ¿
|
||||
|
||||
### 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.
|
||||
- Not: Eğer workspace içerisinde ahenk-go haricinde başka dosya veya klasörler varsa bazı ayarlar geçersiz olabilir, `.vscode/settings.json` içerisindeki tüm ayarları kopyalayıp vscode ayarlarındaki setting.json dosyasına yapıştırabilirsiniz. (tabii ki ilk ve son süslü parantez hariç)
|
||||
---
|
||||
|
||||
## Önerilen Makine Düzeni
|
||||
|
@ -49,6 +54,7 @@ Bu dosyada geliştirme sürecinin sürekliliği ve bütünlüğü için gelişti
|
|||
- Windows 10, 11 (Sanal/Fiziksel)
|
||||
|
||||
## Creating Docker Development Environment
|
||||
> For testing and building .deb package
|
||||
1. Install and Create docker environment, [Quick Start](https://sulincix.github.io/sayfalar/html/docker-kullanimi.html)
|
||||
2. Pull docker image
|
||||
```sh
|
||||
|
|
52
dev/newplugin.md
Normal file
52
dev/newplugin.md
Normal file
|
@ -0,0 +1,52 @@
|
|||
# Yeni Plugin Oluşturma
|
||||
> Her ne kadar ilk başlarda [resmi plugin yapısı](https://pkg.go.dev/plugin) kullanılmış olsa da windows üzerinde çalışmadığından ve unload özelliği olmadığından dolayı [dinamik plugin yapısı](./resources.md#dynamic-plugin-logic)(goloader) kullanılmaya başlanmıştır.
|
||||
|
||||
## Plugin Oluşturma
|
||||
- plugin ismi belirleyin, küçük harflerler ve tek kelime olması önerilmektedir. Bu dokümanın devamında plugin isminin **myplugin** olduğu varsayılacaktır.
|
||||
- `plugins/` dizininde plugin isminiz için bir dizin oluşturun, örneğin `plugins/myplugin/`
|
||||
- ilgili dizin içinde `main.go` ve `info.go` dosyalarını oluşturun
|
||||
- plugin içindeki oluşturucağımız fonksiyonların plugin manager ve ana program tarafından anlaşılması için ilk önce bir bağlantı kurmamız gerekmektedir. Plugin manager bu bağlantıyı kurmak için dosyada bir sembol arar. Bunun için `main.go` dosyası içinde ilgili sembolleri oluşturunuz. Sembol isminin `Pluginismi + Connect` olmasına ve ilk harfin büyük olmasına dikkat ediniz, örnek:
|
||||
```go
|
||||
package myplugin
|
||||
|
||||
type plug string
|
||||
|
||||
// exported plugin Symbol
|
||||
var MypluginConnect plug
|
||||
```
|
||||
- Sonrasında oluşturacağınız tüm fonksiyonların (aslında plugin içinde method olarak kullanıyoruz, plugin manager import ettikten sonra fonksiyonmuş gibi kullanıyoruz) sembol türünü alan bir method olduğuna ve büyük harfle başladığına emin olunuz. Aksi taktirde plugininizde oluşturduğunuz bu fonksiyon plugin manager tarafından algılanamaz (interface içinde kullanılamaz) ve ana program tarafından kullanılamaz, örnek:
|
||||
```go
|
||||
func (p plug) MyFunction1() { // ÇALIŞIR
|
||||
fmt.Println(1)
|
||||
}
|
||||
func (p plug) myFunction2() { // ÇALIŞMAZ !
|
||||
fmt.Println(2)
|
||||
}
|
||||
func MyFunction3() { // ÇALIŞMAZ !
|
||||
fmt.Println(3)
|
||||
}
|
||||
func myFunction4() { // ÇALIŞMAZ !
|
||||
fmt.Println(4)
|
||||
}
|
||||
```
|
||||
- `info.go` dosyası içerisinde pluginler yüklenirken kontrol edilecek olan Info() methodunu implemente ediniz. Bir üst adımdaki uyarılara dikkat ediniz. Ayrıca Info() methodunuzun `map[string]interface{}` türünde bir veri döndürdüğünden emin olunuz. `support` kısmı "any", string slice olarak sıralanmış sistemleri (`[]string{"sistem1", "sistem2"}`) veya `map[string]interface` tipinde kategorize edilmiş sistemleri içerebilir, örnek:
|
||||
```go
|
||||
func (p plug) Info() map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
"name": "myplugin",
|
||||
"version": "2.6.3",
|
||||
"support": map[string]interface{}{
|
||||
"linux": []string{"debian", "ubuntu", "pardus21", "pardus23"},
|
||||
"windows": []string{"10", "11"},
|
||||
},
|
||||
"description": "My Plugin",
|
||||
"developer": "mail@domain.tld",
|
||||
}
|
||||
```
|
||||
- Tebrikler, başarıyla bir plugin oluşturdunuz, daha fazla örnek için [plugins/](https://git.aliberksandikci.com.tr/Liderahenk/ahenk-go/plugins/) dizinindeki diğer pluginleri inceleyebilirsiniz. Şimdi sıra bu pluginleri ana koda içe aktarmakta, sıradaki başlığı takip ediniz.
|
||||
|
||||
## Plugini İçe Aktarma
|
||||
- NEXT
|
||||
|
||||
|
||||
|
|
@ -18,6 +18,7 @@
|
|||
- [External Git Repos](#external-git-repos)
|
||||
- [Useful Go Libraries](#useful-go-labraries)
|
||||
- [Plugin Logic](#plugin-logic)
|
||||
- [Dynamic Plugin Logic](#dynamic-plugin-logic)
|
||||
- [Missing Features](#missing-features-in-golang)
|
||||
- [Agent Market Search](#agent-market-search)
|
||||
|
||||
|
@ -127,19 +128,24 @@
|
|||
- [asandikci/go-organization](https://git.aliberksandikci.com.tr/asandikci/go-organization) | Project Structure Resources
|
||||
- [asandikci/go-exercise](https://git.aliberksandikci.com.tr/asandikci/go-exercise) | Go Exercise Resources and Solutions
|
||||
- [asandikci/go-crosscompile](https://git.aliberksandikci.com.tr/asandikci/go-crosscompile) | Information and tests about crosscompiling in go
|
||||
- [asandikci/go-loader-test](https://git.aliberksandikci.com.tr/asandikci/go-loader-test) | Information and tests about [dynamic plugin logic](#dynamic-plugin-logic)(goloader)
|
||||
### Useful GO Labraries
|
||||
- https://github.com/kirsle/configdir | Get User Config and Cache Directories
|
||||
- https://github.com/shibukawa/configdir | Get User Config and Cache Directories
|
||||
- https://github.com/sevlyar/go-daemon | Go Daemon
|
||||
- **Look for more:** [github/list/go](https://github.com/stars/asandikci/lists/go-language)
|
||||
|
||||
### Plugin logic
|
||||
- https://pkg.go.dev/plugin
|
||||
### Plugin Logic
|
||||
- https://pkg.go.dev/plugin | Official Plugin logic
|
||||
- https://github.com/vladimirvivien/go-plugin-example
|
||||
- https://eli.thegreenplace.net/2021/plugins-in-go/
|
||||
- https://www.sobyte.net/post/2021-12/golang-plugin/
|
||||
- https://eli.thegreenplace.net/2023/rpc-based-plugins-in-go/
|
||||
- https://appliedgo.net/plugins/
|
||||
- https://eli.thegreenplace.net/2023/rpc-based-plugins-in-go/ | other
|
||||
- https://appliedgo.net/plugins/ | other
|
||||
|
||||
#### Dynamic Plugin Logic
|
||||
- [asandikci/go-loader-test](https://git.aliberksandikci.com.tr/asandikci/go-loader-test) | Information and tests about dynamic plugin logic(goloader)
|
||||
- https://github.com/eh-steve/goloader
|
||||
|
||||
### Missing Features in Golang
|
||||
- https://github.com/golang/go/issues/20461 | unload plugins
|
||||
|
|
Loading…
Reference in a new issue