diff --git a/.github/README.md b/.github/README.md index 9643ba627b..92dd13b1dd 100644 --- a/.github/README.md +++ b/.github/README.md @@ -66,6 +66,9 @@ + + +
diff --git a/.github/README_az.md b/.github/README_az.md new file mode 100644 index 0000000000..d4f78cc13f --- /dev/null +++ b/.github/README_az.md @@ -0,0 +1,710 @@ +

+ + + + + Fiber + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +

+

+ Fiber Go dili üçün ən sürətli HTTP aparıcısı FasthttpExpress kitabxanasına bənzər arxitektura üzərində qurulmuş web framework'dür. Sıfır yaddaş ayrılması(zero-memory allocation) və performans nəzərə alınmaqla birlikdə development prosesini sürətləndirməkasanlaşdırmaq üçün qurulmuşdur. +

+ +## ⚡️ Sürətli Başlanğıc + +```go +package main + +import "github.com/gofiber/fiber/v2" + +func main() { + app := fiber.New() + + app.Get("/", func(c *fiber.Ctx) error { + return c.SendString("Hello, World 👋!") + }) + + app.Listen(":3000") +} +``` + +## 🤖 Performans Dəyərləri + +Bu testlər [TechEmpower](https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=plaintext) və [Go Web](https://github.com/smallnest/go-web-framework-benchmark) tərəfindən gerçəkləşdirilmişdir. Bütün nəticələri görmək üçün [Wiki](https://docs.gofiber.io/extra/benchmarks) səhifəsinə göz ata bilərsiniz. + +

+ + +

+ +## ⚙️ Qurulum Prosesi + +Go dilinin `1.17` və ya daha yuxarı versiyasının ([yükləmək üçün](https://go.dev/dl/)) yükləndiyindən əmin olun. + + +Bir qovluq yaratdıqdan sonra, `go mod init github.com/your/repo` ([go modulları haqqında əlavə bilgilər](https://go.dev/blog/using-go-modules)) komandasını eyni qovluğun daxilində işə salaraq proyektinizi başladın. Növbəti addım olaraq Fiber'i [`go get`](https://pkg.go.dev/cmd/go/#hdr-Add_dependencies_to_current_module_and_install_them) komandasını işlədərək yükləyin: + +```bash +go get -u github.com/gofiber/fiber/v2 +``` + +## 🎯 Özəlliklər + +- Güclü [routing](https://docs.gofiber.io/guide/routing) +- [static faylların](https://docs.gofiber.io/api/app#static) təqdimatı +- Yüksək [performans](https://docs.gofiber.io/extra/benchmarks) +- [Daha az yaddaş istifadəsi](https://docs.gofiber.io/extra/benchmarks) +- [API son nöqtələri (endpoint)](https://docs.gofiber.io/api/ctx) +- [Middleware](https://docs.gofiber.io/category/-middleware) & [Next](https://docs.gofiber.io/api/ctx#next) dəstəyi +- [Rapid](https://dev.to/koddr/welcome-to-fiber-an-express-js-styled-fastest-web-framework-written-with-on-golang-497) server tərəfli proqramlaşdırma +- [Template mühərrikləri](https://github.com/gofiber/template) +- [WebSocket dəstəyi](https://github.com/gofiber/websocket) +- [Server-Sent events](https://github.com/gofiber/recipes/tree/master/sse) +- [Rate Limiter](https://docs.gofiber.io/api/middleware/limiter) +- [18 dildə](https://docs.gofiber.io/) mövcuddur +- Və daha daha necələri, [Fiber'i kəşf et](https://docs.gofiber.io/) + +## 💡 Fəlsəfə + +[Node.js](https://nodejs.org/en/about/)'dən [Go](https://go.dev/doc/)'ya yeni keçən gopher'lar veb aplikasiyalar və mikroservislər yazmağa başlamadan öncə dilin özünəməxsus sintaksisini öyrənməklə məşğul olurlar. Fiber, bir veb framework olaraq MinimalizmUNIX'in yoluna əsasən və onun qanunlarına riyaət edərək qurulmuşdur. Bu sayədə sahədə yeni olan gopher'lər özlərini isti və güvənilir bir xoş gəldin ilə Go dünyasında qarşılana bilərlər. + +Fiber, internet üzərində olan ən məşhur veb framework'lərdən biri olan Express'dən əsinlənmişdir. Biz Express'in rahatlıq və asanlığını, Go'nun çiy performansı ilə birləşdirdik. Əgər daha öncədən Node.js üzərində (Express və ya bənzərləri) veb aplikasiyası yaratdıysanız, əksər metodlar və prinsipləri sizə tanış gələcəkdir. + +Biz istifadəçilərdən gələn [issue'lara](https://github.com/gofiber/fiber/issues), Discord [kanalımıza](https://gofiber.io/discord) və bütün internetə sürətli, rahat, hər tapşırığa, hər səviyyədən olan mühəndisə uyğun, və dostcasına bir Go web framework'ü olmağı hədəfləmişik. Express'in JavaScript dünyasında etdiyi kimi. + +## ⚠️ Limitlər +* Fiberin unsafe istifadəsi səbəbilə, hər zaman Go'nun son versiyası ile uyğun olmaya bilər. Fiber 2.40.0, Go 1.17 və 1.20 versiyaları ilə test edildi. +* Fiber net/http interfeysləri ilə uyğun deyildir. Yəni gqlgen, go-swagger kimi net/http ekosisteminin parçası olan proyektləri istifadə edə bilməzsiniz. + +## 👀 Misallar + +Aşağıda geniş istifadə olunan misallardan bəziləri list halında verilmişdir. Əgər daha çox kod misalları görmək istəyirsinizsə [Əlavə misallardan ibarət github repository'sini](https://github.com/gofiber/recipes) və ya [API dokumentasiyasını](https://docs.gofiber.io) ziyarət edin. + +#### 📖 [**Sadə Routing**](https://docs.gofiber.io/#basic-routing) + +```go +func main() { + app := fiber.New() + + // GET /api/register + app.Get("/api/*", func(c *fiber.Ctx) error { + msg := fmt.Sprintf("✋ %s", c.Params("*")) + return c.SendString(msg) // => ✋ register + }) + + // GET /flights/LAX-SFO + app.Get("/flights/:from-:to", func(c *fiber.Ctx) error { + msg := fmt.Sprintf("💸 From: %s, To: %s", c.Params("from"), c.Params("to")) + return c.SendString(msg) // => 💸 From: LAX, To: SFO + }) + + // GET /dictionary.txt + app.Get("/:file.:ext", func(c *fiber.Ctx) error { + msg := fmt.Sprintf("📃 %s.%s", c.Params("file"), c.Params("ext")) + return c.SendString(msg) // => 📃 dictionary.txt + }) + + // GET /john/75 + app.Get("/:name/:age/:gender?", func(c *fiber.Ctx) error { + msg := fmt.Sprintf("👴 %s is %s years old", c.Params("name"), c.Params("age")) + return c.SendString(msg) // => 👴 john is 75 years old + }) + + // GET /john + app.Get("/:name", func(c *fiber.Ctx) error { + msg := fmt.Sprintf("Hello, %s 👋!", c.Params("name")) + return c.SendString(msg) // => Hello john 👋! + }) + + log.Fatal(app.Listen(":3000")) +} + +``` + +#### 📖 [**Route Adlandırılması**](https://docs.gofiber.io/api/app#name) + +```go +func main() { + app := fiber.New() + + // GET /api/register + app.Get("/api/*", func(c *fiber.Ctx) error { + msg := fmt.Sprintf("✋ %s", c.Params("*")) + return c.SendString(msg) // => ✋ register + }).Name("api") + + data, _ := json.MarshalIndent(app.GetRoute("api"), "", " ") + fmt.Print(string(data)) + // Prints: + // { + // "method": "GET", + // "name": "api", + // "path": "/api/*", + // "params": [ + // "*1" + // ] + // } + + + log.Fatal(app.Listen(":3000")) +} + +``` + +#### 📖 [**Static Fayl Təqdimatı**](https://docs.gofiber.io/api/app#static) + +```go +func main() { + app := fiber.New() + + app.Static("/", "./public") + // => http://localhost:3000/js/script.js + // => http://localhost:3000/css/style.css + + app.Static("/prefix", "./public") + // => http://localhost:3000/prefix/js/script.js + // => http://localhost:3000/prefix/css/style.css + + app.Static("*", "./public/index.html") + // => http://localhost:3000/any/path/shows/index/html + + log.Fatal(app.Listen(":3000")) +} + +``` + +#### 📖 [**Middleware & Next**](https://docs.gofiber.io/api/ctx#next) + +```go +func main() { + app := fiber.New() + + // Match any route + app.Use(func(c *fiber.Ctx) error { + fmt.Println("🥇 First handler") + return c.Next() + }) + + // Match all routes starting with /api + app.Use("/api", func(c *fiber.Ctx) error { + fmt.Println("🥈 Second handler") + return c.Next() + }) + + // GET /api/list + app.Get("/api/list", func(c *fiber.Ctx) error { + fmt.Println("🥉 Last handler") + return c.SendString("Hello, World 👋!") + }) + + log.Fatal(app.Listen(":3000")) +} + +``` + +
+ 📚 Daha çox misalllar + +### Views engines + +📖 [Config](https://docs.gofiber.io/api/fiber#config) +📖 [Engines](https://github.com/gofiber/template) +📖 [Render](https://docs.gofiber.io/api/ctx#render) + +Fiber defaults to the [html/template](https://pkg.go.dev/html/template/) when no view engine is set. + +If you want to execute partials or use a different engine like [amber](https://github.com/eknkc/amber), [handlebars](https://github.com/aymerick/raymond), [mustache](https://github.com/cbroglie/mustache) or [pug](https://github.com/Joker/jade) etc.. + +Checkout our [Template](https://github.com/gofiber/template) package that support multiple view engines. + +```go +package main + +import ( + "github.com/gofiber/fiber/v2" + "github.com/gofiber/template/pug" +) + +func main() { + // You can setup Views engine before initiation app: + app := fiber.New(fiber.Config{ + Views: pug.New("./views", ".pug"), + }) + + // And now, you can call template `./views/home.pug` like this: + app.Get("/", func(c *fiber.Ctx) error { + return c.Render("home", fiber.Map{ + "title": "Homepage", + "year": 1999, + }) + }) + + log.Fatal(app.Listen(":3000")) +} +``` + +### Grouping routes into chains + +📖 [Group](https://docs.gofiber.io/api/app#group) + +```go +func middleware(c *fiber.Ctx) error { + fmt.Println("Don't mind me!") + return c.Next() +} + +func handler(c *fiber.Ctx) error { + return c.SendString(c.Path()) +} + +func main() { + app := fiber.New() + + // Root API route + api := app.Group("/api", middleware) // /api + + // API v1 routes + v1 := api.Group("/v1", middleware) // /api/v1 + v1.Get("/list", handler) // /api/v1/list + v1.Get("/user", handler) // /api/v1/user + + // API v2 routes + v2 := api.Group("/v2", middleware) // /api/v2 + v2.Get("/list", handler) // /api/v2/list + v2.Get("/user", handler) // /api/v2/user + + // ... +} + +``` + +### Middleware logger + +📖 [Logger](https://docs.gofiber.io/api/middleware/logger) + +```go +package main + +import ( + "log" + + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/logger" +) + +func main() { + app := fiber.New() + + app.Use(logger.New()) + + // ... + + log.Fatal(app.Listen(":3000")) +} +``` + +### Cross-Origin Resource Sharing (CORS) + +📖 [CORS](https://docs.gofiber.io/api/middleware/cors) + +```go +import ( + "log" + + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/cors" +) + +func main() { + app := fiber.New() + + app.Use(cors.New()) + + // ... + + log.Fatal(app.Listen(":3000")) +} +``` + +Check CORS by passing any domain in `Origin` header: + +```bash +curl -H "Origin: http://example.com" --verbose http://localhost:3000 +``` + +### Custom 404 response + +📖 [HTTP Methods](https://docs.gofiber.io/api/ctx#status) + +```go +func main() { + app := fiber.New() + + app.Static("/", "./public") + + app.Get("/demo", func(c *fiber.Ctx) error { + return c.SendString("This is a demo!") + }) + + app.Post("/register", func(c *fiber.Ctx) error { + return c.SendString("Welcome!") + }) + + // Last middleware to match anything + app.Use(func(c *fiber.Ctx) error { + return c.SendStatus(404) + // => 404 "Not Found" + }) + + log.Fatal(app.Listen(":3000")) +} +``` + +### JSON Response + +📖 [JSON](https://docs.gofiber.io/api/ctx#json) + +```go +type User struct { + Name string `json:"name"` + Age int `json:"age"` +} + +func main() { + app := fiber.New() + + app.Get("/user", func(c *fiber.Ctx) error { + return c.JSON(&User{"John", 20}) + // => {"name":"John", "age":20} + }) + + app.Get("/json", func(c *fiber.Ctx) error { + return c.JSON(fiber.Map{ + "success": true, + "message": "Hi John!", + }) + // => {"success":true, "message":"Hi John!"} + }) + + log.Fatal(app.Listen(":3000")) +} +``` + +### WebSocket Upgrade + +📖 [Websocket](https://github.com/gofiber/websocket) + +```go +import ( + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/websocket" +) + +func main() { + app := fiber.New() + + app.Get("/ws", websocket.New(func(c *websocket.Conn) { + for { + mt, msg, err := c.ReadMessage() + if err != nil { + log.Println("read:", err) + break + } + log.Printf("recv: %s", msg) + err = c.WriteMessage(mt, msg) + if err != nil { + log.Println("write:", err) + break + } + } + })) + + log.Fatal(app.Listen(":3000")) + // ws://localhost:3000/ws +} +``` + +### Server-Sent Events + +📖 [More Info](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events) + +```go +import ( + "github.com/gofiber/fiber/v2" + "github.com/valyala/fasthttp" +) + +func main() { + app := fiber.New() + + app.Get("/sse", func(c *fiber.Ctx) error { + c.Set("Content-Type", "text/event-stream") + c.Set("Cache-Control", "no-cache") + c.Set("Connection", "keep-alive") + c.Set("Transfer-Encoding", "chunked") + + c.Context().SetBodyStreamWriter(fasthttp.StreamWriter(func(w *bufio.Writer) { + fmt.Println("WRITER") + var i int + + for { + i++ + msg := fmt.Sprintf("%d - the time is %v", i, time.Now()) + fmt.Fprintf(w, "data: Message: %s\n\n", msg) + fmt.Println(msg) + + w.Flush() + time.Sleep(5 * time.Second) + } + })) + + return nil + }) + + log.Fatal(app.Listen(":3000")) +} +``` + +### Recover middleware + +📖 [Recover](https://docs.gofiber.io/api/middleware/recover) + +```go +import ( + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/recover" +) + +func main() { + app := fiber.New() + + app.Use(recover.New()) + + app.Get("/", func(c *fiber.Ctx) error { + panic("normally this would crash your app") + }) + + log.Fatal(app.Listen(":3000")) +} +``` + +
+ +### Güvənilir Proxy İstifadəsi + +📖 [Config](https://docs.gofiber.io/api/fiber#config) + +```go +import ( + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/recover" +) + +func main() { + app := fiber.New(fiber.Config{ + EnableTrustedProxyCheck: true, + TrustedProxies: []string{"0.0.0.0", "1.1.1.1/30"}, // IP address or IP address range + ProxyHeader: fiber.HeaderXForwardedFor}, + }) + + // ... + + log.Fatal(app.Listen(":3000")) +} +``` + + + +## 🧬 Daxili Middleware + +Aşağıda Fiber'in daxilində olan middleware'lər siyahı şəklində göstərilmişdir. + +| Middleware | Açıqlama | +|:---------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [basicauth](https://github.com/gofiber/fiber/tree/master/middleware/basicauth) | Sadə bir auth middleware'idir və HTTP Basic Auth yaratmaq üçün istifadə olunur. Keçərli vəsiqə(credentials) bilgiləri üçün sonrakı handler'i, əksik və ya keçərsiz vəsiqə bilgiləri üçün 401 qaytarır. | +| [cache](https://github.com/gofiber/fiber/tree/master/middleware/cache) | Response'ları dayandır və keşə yerləşdir. | +| [compress](https://github.com/gofiber/fiber/tree/master/middleware/compress) | Fiber üçün sıxışdırma(compression) middleware'idir. Default olaraq `deflate`, `gzip` və `brotli` dəstəkləyir. | +| [cors](https://github.com/gofiber/fiber/tree/master/middleware/cors) | Çeşidli seçimlərlə başlanğıclar arası mənbə paylaşımı (CORS) aktivləşdirin. | +| [csrf](https://github.com/gofiber/fiber/tree/master/middleware/csrf) | CSRF exploit'lərindən qorunun. | +| [encryptcookie](https://github.com/gofiber/fiber/tree/master/middleware/encryptcookie) | Encrypt middleware'i cookie dəyərlərini şifrələyər. | +| [envvar](https://github.com/gofiber/fiber/tree/master/middleware/envvar) | Environment dəyərlərini göstərilən konfigə görə çölə açar. | +| [etag](https://github.com/gofiber/fiber/tree/master/middleware/etag) | Keşlərin daha səmərəli istifadəsinə və bant genişliyinə qənaət etməyə imkan verən ETag middleware'i, məzmun dəyişməyibsə veb serverin response'u yenidən göndərməməsinə şərait yaradır. | +| [expvar](https://github.com/gofiber/fiber/tree/master/middleware/expvar) | Expvar middleware, HTTP serverlərinin bəzi runtime dəyərlərini JSON formatında göstərər. | +| [favicon](https://github.com/gofiber/fiber/tree/master/middleware/favicon) | Əgər faylın yolu(path) göstərilmişsə loglarda olan favicon'u yox sayar və ya saxlama deposundan götürər | +| [filesystem](https://github.com/gofiber/fiber/tree/master/middleware/filesystem) | Fiber üçün fayl sistem middleware'i. Alireza Salary'ə xüsusi təşəkkürlər. | +| [limiter](https://github.com/gofiber/fiber/tree/master/middleware/limiter) | Fiber üçün rate limitləyən middleware. Açıq API'lara vəya şifrə yeniləmə kimi endpoint'lərə yönəlik təkrarlanan requestlərin qarşısını alır. | +| [logger](https://github.com/gofiber/fiber/tree/master/middleware/logger) | HTTP istək/cavab (request/response) logger'i. | +| [monitor](https://github.com/gofiber/fiber/tree/master/middleware/monitor) | Monitor middleware'i serverin metriklərini report edər. Express-status-monitor'dan əsinləndi. | +| [pprof](https://github.com/gofiber/fiber/tree/master/middleware/pprof) | Matthew Lee'yə xüsusi təşəkkürlər \(@mthli\) | +| [proxy](https://github.com/gofiber/fiber/tree/master/middleware/proxy) | Birdən çox server'ə proxy istəyi göndərməyiniz üçündür. | +| [recover](https://github.com/gofiber/fiber/tree/master/middleware/recover) | Recover middleware'i stack chain'ni hər hansı bir yerindəki paniklərdən qurtulmasına kömək edir və kontrolu mərkəzləşdirilmiş [ErrorHandler'ə](https://docs.gofiber.io/guide/error-handling) ötürür.| +| [requestid](https://github.com/gofiber/fiber/tree/master/middleware/requestid) | Hər request üçün ayrı request id yaradır. | +| [session](https://github.com/gofiber/fiber/tree/master/middleware/session) | Session üçün middleware. NOT: Bu middleware Fiber'in öz Storage struktrunu istifadə edir. | +| [skip](https://github.com/gofiber/fiber/tree/master/middleware/skip) | Skip middleware'i verilən şərt true olduğu halda handler'i görməz və keçər. | +| [timeout](https://github.com/gofiber/fiber/tree/master/middleware/timeout) | Bir request üçün maksimum zaman əlavə edər və zaman aşımı olarsa ErrorHandler'ə göndərilir. | + +## 🧬 Xarici Middleware + +[Fiber komandası](https://github.com/orgs/gofiber/people) tərəfindən dəstəklənən və inkişaf etdirilən middleware'lərin siyahısı. + +| Middleware | Description | +| :------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [adaptor](https://github.com/gofiber/adaptor) | Fiber request handlerindən net/http handler'inə çeviricisi. @arsmn'ə xüsusi təşəkkürlər! | +| [helmet](https://github.com/gofiber/helmet) | Fərqli-fərqli HTTP header'lər istifadə edərək aplikasiyanızı daha təhlükəsiz saxlamağa kömək edir. | +| [jwt](https://github.com/gofiber/jwt) | JWT, JSON Web Token(JWT) girişi qaytaran bir middleware'dir. | +| [keyauth](https://github.com/gofiber/keyauth) | Key giriş middleware'i, key əsaslı bir authentication metodudur. | +| [redirect](https://github.com/gofiber/redirect) | Yönləndirmə üçün middleware. | +| [rewrite](https://github.com/gofiber/rewrite) | Rewrite middleware'i verilən qanunlara əsasən URL yolunu(path) yenidən yazar. Geriyə dönülü uyğunluq üçün və ya yalnızca təmiz və açıqlayıcı linklər yaratmaq üçün yaradılmışdır. | +| [storage](https://github.com/gofiber/storage) | Fiber'in Storage arxitekturasını dəstəkləyən bir çox storage driver verir. Bu sayədə saxlamaya (storage) ehtiyac duyan Fiber middleware'lərində rahatlıqla istifadə oluna bilər | +| [template](https://github.com/gofiber/template) | Bu paket, Fiber `v1.10.x`, Go versiyası 1.13 və ya daha yuxarı olduqda istifadə oluna bilər və 8 template mühərriki var. | +| [websocket](https://github.com/gofiber/websocket) | Yerlilərin dəstəyi ilə Fiber üçün Fasthttp, WebSocket'ə əsaslıdır. | + +## 🕶️ Möhtəşəm Siyahı + +Əlavə yazılar, middleware'lər, misallar, və alətlər üçün bizim [möhtəşəm siyahımıza](https://github.com/gofiber/awesome-fiber) göz atın. + +## 👍 Dəstək + +Əgər `Fiber`'ə dəstək olmaq və ya **təşəkkür etmək** istəyirsinizsə: + +1. Proyektə [GitHub Ulduzu](https://github.com/gofiber/fiber/stargazers) əlavə edin. +2. Proyekt haqqında [şəxsi twitter hesabınızda](https://twitter.com/intent/tweet?text=Fiber%20is%20an%20Express%20inspired%20%23web%20%23framework%20built%20on%20top%20of%20Fasthttp%2C%20the%20fastest%20HTTP%20engine%20for%20%23Go.%20Designed%20to%20ease%20things%20up%20for%20%23fast%20development%20with%20zero%20memory%20allocation%20and%20%23performance%20in%20mind%20%F0%9F%9A%80%20https%3A%2F%2Fgithub.com%2Fgofiber%2Ffiber) tweet atın. +3. [Medium](https://medium.com/), [Dev.to](https://dev.to/) və ya şəxsi blogunuz üzərindən bir incələmə və ya tədris verici bir yazı yaza bilərsiniz +4. Bir [stekan kofe alaraq](https://buymeacoff.ee/fenny) bizə daha çox dəstək ola bilərsiniz. + +## ☕ Dəstəkçilər + +Fiber açıq qaynaqlı bir proyekt olduğu üçün, gəlirlərini ianələr əsasında idarə edir və bu ianələri domeyn adı, gitbook, netlify, serverless hosting xərcləri üçün istifadə edilir. Əgər Fiber'ə daha çox dəstək olmaq istəyirsinizsə ☕ [**burdan bir stekan kofe alın**](https://buymeacoff.ee/fenny) + +| | İstifadəçi | İanə | +| :--------------------------------------------------------- | :----------------------------------------------- | :------- | +| ![](https://avatars.githubusercontent.com/u/204341?s=25) | [@destari](https://github.com/destari) | ☕ x 10 | +| ![](https://avatars.githubusercontent.com/u/63164982?s=25) | [@dembygenesis](https://github.com/dembygenesis) | ☕ x 5 | +| ![](https://avatars.githubusercontent.com/u/56607882?s=25) | [@thomasvvugt](https://github.com/thomasvvugt) | ☕ x 5 | +| ![](https://avatars.githubusercontent.com/u/27820675?s=25) | [@hendratommy](https://github.com/hendratommy) | ☕ x 5 | +| ![](https://avatars.githubusercontent.com/u/1094221?s=25) | [@ekaputra07](https://github.com/ekaputra07) | ☕ x 5 | +| ![](https://avatars.githubusercontent.com/u/194590?s=25) | [@jorgefuertes](https://github.com/jorgefuertes) | ☕ x 5 | +| ![](https://avatars.githubusercontent.com/u/186637?s=25) | [@candidosales](https://github.com/candidosales) | ☕ x 5 | +| ![](https://avatars.githubusercontent.com/u/29659953?s=25) | [@l0nax](https://github.com/l0nax) | ☕ x 3 | +| ![](https://avatars.githubusercontent.com/u/635852?s=25) | [@bihe](https://github.com/bihe) | ☕ x 3 | +| ![](https://avatars.githubusercontent.com/u/307334?s=25) | [@justdave](https://github.com/justdave) | ☕ x 3 | +| ![](https://avatars.githubusercontent.com/u/11155743?s=25) | [@koddr](https://github.com/koddr) | ☕ x 1 | +| ![](https://avatars.githubusercontent.com/u/29042462?s=25) | [@lapolinar](https://github.com/lapolinar) | ☕ x 1 | +| ![](https://avatars.githubusercontent.com/u/2978730?s=25) | [@diegowifi](https://github.com/diegowifi) | ☕ x 1 | +| ![](https://avatars.githubusercontent.com/u/44171355?s=25) | [@ssimk0](https://github.com/ssimk0) | ☕ x 1 | +| ![](https://avatars.githubusercontent.com/u/5638101?s=25) | [@raymayemir](https://github.com/raymayemir) | ☕ x 1 | +| ![](https://avatars.githubusercontent.com/u/619996?s=25) | [@melkorm](https://github.com/melkorm) | ☕ x 1 | +| ![](https://avatars.githubusercontent.com/u/31022056?s=25) | [@marvinjwendt](https://github.com/marvinjwendt) | ☕ x 1 | +| ![](https://avatars.githubusercontent.com/u/31921460?s=25) | [@toishy](https://github.com/toishy) | ☕ x 1 | + +## ‎‍💻 Koda Dəstək Göstərənlər + +Code Contributors + +## ⭐️ Proyekti Ulduzlayanlar + +Stargazers over time + +## ⚠️ Lisenziya + +Müəllif Hüququ (c) 2019-bugün [Fenny](https://github.com/fenny) və [Contributors](https://github.com/gofiber/fiber/graphs/contributors). `Fiber` pulsuz və açıq qaynaqlı proqram təminatıdır və [MIT License](https://github.com/gofiber/fiber/blob/master/LICENSE) altında lisenziyalaşmışdır. Rəsmi loqo [Vic Shóstak](https://github.com/koddr) tərəfindən yaradılmışdır və [Creative Commons](https://creativecommons.org/licenses/by-sa/4.0/) lisenziyası altında paylanmışdır (CC BY-SA 4.0 International). + +**Üçüncü Parti Kitabxana Lisenziyaları** + +- [colorable](https://github.com/mattn/go-colorable/blob/master/LICENSE) +- [isatty](https://github.com/mattn/go-isatty/blob/master/LICENSE) +- [runewidth](https://github.com/mattn/go-runewidth/blob/master/LICENSE) +- [fasthttp](https://github.com/valyala/fasthttp/blob/master/LICENSE) +- [bytebufferpool](https://github.com/valyala/bytebufferpool/blob/master/LICENSE) +- [dictpool](https://github.com/savsgio/dictpool/blob/master/LICENSE) +- [fwd](https://github.com/philhofer/fwd/blob/master/LICENSE.md) +- [go-ole](https://github.com/go-ole/go-ole/blob/master/LICENSE) +- [gopsutil](https://github.com/shirou/gopsutil/blob/master/LICENSE) +- [msgp](https://github.com/tinylib/msgp/blob/master/LICENSE) +- [schema](https://github.com/gorilla/schema/blob/master/LICENSE) +- [uuid](https://github.com/google/uuid/blob/master/LICENSE) +- [wmi](https://github.com/StackExchange/wmi/blob/master/LICENSE) diff --git a/.github/README_ckb.md b/.github/README_ckb.md index ae8afa6c81..04583f8e2c 100644 --- a/.github/README_ckb.md +++ b/.github/README_ckb.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_de.md b/.github/README_de.md index 78950f3984..94f88aa46a 100644 --- a/.github/README_de.md +++ b/.github/README_de.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_es.md b/.github/README_es.md index 9b4ed1e94c..3f16fe8bd9 100644 --- a/.github/README_es.md +++ b/.github/README_es.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_fa.md b/.github/README_fa.md index 6861f70eed..0442e2af05 100644 --- a/.github/README_fa.md +++ b/.github/README_fa.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_fr.md b/.github/README_fr.md index d3b20711e1..6e19a47115 100644 --- a/.github/README_fr.md +++ b/.github/README_fr.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_he.md b/.github/README_he.md index 2b7d4ef008..dfd43cc3c3 100644 --- a/.github/README_he.md +++ b/.github/README_he.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_id.md b/.github/README_id.md index c8826096ce..f0968fe207 100644 --- a/.github/README_id.md +++ b/.github/README_id.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_it.md b/.github/README_it.md index 62a1cc8184..311e324066 100644 --- a/.github/README_it.md +++ b/.github/README_it.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_ja.md b/.github/README_ja.md index 90de60688e..637c20d5f7 100644 --- a/.github/README_ja.md +++ b/.github/README_ja.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_ko.md b/.github/README_ko.md index d26be91101..3a9fb4256b 100644 --- a/.github/README_ko.md +++ b/.github/README_ko.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_nl.md b/.github/README_nl.md index b349e31db3..405bcb871a 100644 --- a/.github/README_nl.md +++ b/.github/README_nl.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_pt.md b/.github/README_pt.md index 9d62c55031..783489b965 100644 --- a/.github/README_pt.md +++ b/.github/README_pt.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_ru.md b/.github/README_ru.md index 844d57c58d..17c98d4321 100644 --- a/.github/README_ru.md +++ b/.github/README_ru.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_sa.md b/.github/README_sa.md index 3c2a8ca4bd..af7519e2dd 100644 --- a/.github/README_sa.md +++ b/.github/README_sa.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_tr.md b/.github/README_tr.md index 5971d56a23..f229c8de66 100644 --- a/.github/README_tr.md +++ b/.github/README_tr.md @@ -60,6 +60,9 @@ + + +
diff --git a/.github/README_uk.md b/.github/README_uk.md index 5d3206a8da..d68ff24c08 100644 --- a/.github/README_uk.md +++ b/.github/README_uk.md @@ -66,6 +66,9 @@ + + +
diff --git a/.github/README_zh-CN.md b/.github/README_zh-CN.md index d0d1a27dd7..2520ca4d2a 100644 --- a/.github/README_zh-CN.md +++ b/.github/README_zh-CN.md @@ -63,6 +63,9 @@ + + +
diff --git a/.github/README_zh-TW.md b/.github/README_zh-TW.md index 3d7ce42ba3..cb5cffc941 100644 --- a/.github/README_zh-TW.md +++ b/.github/README_zh-TW.md @@ -66,6 +66,9 @@ + + +