Dev Perfects – Telegram
Dev Perfects
41 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://news.1rj.ru/str/dev_perfects/455


ارتباط:
https://news.1rj.ru/str/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Gopher Academy
در نسخه‌های جدید زبان برنامه‌نویسی Go (Golang)، بهبودهای قابل توجهی در ابزارها (Tooling) انجام شده است. یکی از این بهبودها، معرفی قابلیت جدیدی به نام متا-پترن (Meta-Pattern) است که نصب و استفاده از ابزارهای جانبی مانند `mockgen` را بسیار ساده‌تر و کارآمدتر می‌کند. در اینجا به بررسی این قابلیت و مزایای آن می‌پردازیم:

---

### ۱. متا-پترن (Meta-Pattern) چیست؟
- متا-پترن یک قابلیت جدید در ابزارهای Go است که به توسعه‌دهندگان اجازه می‌دهد تا ابزارهای جانبی (مانند `mockgen`، `protoc`، و غیره) را به‌طور خودکار نصب و مدیریت کنند.
- این قابلیت با استفاده از فایل‌های پیکربندی (مانند `go.work` یا go.mod) کار می‌کند و نیاز به نصب دستی ابزارها را کاهش می‌دهد.

---

### ۲. مزایای متا-پترن:
- ساده‌سازی نصب ابزارها: با استفاده از متا-پترن، می‌توانید ابزارهای مورد نیاز پروژه خود را به‌طور خودکار نصب کنید.
- مدیریت وابستگی‌ها: این قابلیت به شما کمک می‌کند تا وابستگی‌های ابزارها را به‌طور موثرتری مدیریت کنید.
- یکپارچه‌سازی با ابزارهای موجود: متا-پترن با ابزارهای موجود Go (مانند go generate و go mod) به‌طور کامل یکپارچه شده است.

---

### ۳. نحوه استفاده از متا-پترن:
برای استفاده از متا-پترن، می‌توانید از فایل‌های پیکربندی مانند go.work یا go.mod استفاده کنید. در اینجا یک مثال آورده شده است:

#### مثال ۱: استفاده از متا-پترن در go.mod
module example.com/myproject

go 1.20

require (
github.com/golang/mock v1.6.0
)

// تعریف ابزارهای مورد نیاز
toolchain {
mockgen = "github.com/golang/mock/mockgen@v1.6.0"
}


#### مثال ۲: استفاده از متا-پترن در go.work
go 1.20

use (
.
./submodule
)

// تعریف ابزارهای مورد نیاز
toolchain {
mockgen = "github.com/golang/mock/mockgen@v1.6.0"
protoc = "google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.0"
}


---

### ۴. نصب خودکار ابزارها:
با استفاده از متا-پترن، می‌توانید ابزارهای مورد نیاز خود را به‌طور خودکار نصب کنید. برای این کار، کافی است دستور زیر را اجرا کنید:

go install toolchain


این دستور به‌طور خودکار ابزارهای تعریف شده در go.mod یا go.work را نصب می‌کند.

---

### ۵. استفاده از ابزارها:
پس از نصب ابزارها، می‌توانید از آن‌ها در پروژه خود استفاده کنید. به عنوان مثال، برای استفاده از `mockgen`، کافی است دستور زیر را اجرا کنید:

go generate ./...


این دستور به‌طور خودکار فایل‌های mock را برای پروژه شما ایجاد می‌کند.

---

### ۶. مثال کامل:
در اینجا یک مثال کامل از استفاده از متا-پترن برای نصب و استفاده از `mockgen` آورده شده است:

#### فایل go.mod:
module example.com/myproject

go 1.20

require (
github.com/golang/mock v1.6.0
)

toolchain {
mockgen = "github.com/golang/mock/mockgen@v1.6.0"
}


#### فایل main.go:
package main

import (
"example.com/myproject/mocks"
"testing"
)

func TestSomething(t *testing.T) {
mock := mocks.NewMockMyInterface(t)
mock.On("MyMethod").Return(nil)

// تست خود را اینجا بنویسید
}


#### اجرای دستورات:
# نصب ابزارها
go install toolchain

# ایجاد فایل‌های mock
go generate ./...

# اجرای تست‌ها
go test ./...


---

### ۷. نتیجه‌گیری:
- متا-پترن یک قابلیت جدید و مفید در ابزارهای Go است که نصب و مدیریت ابزارهای جانبی را بسیار ساده‌تر می‌کند.
- این قابلیت به خصوص برای ابزارهایی مانند `mockgen`، `protoc`، و سایر ابزارهای تولید کد بسیار مفید است.
- اگر از Go استفاده می‌کنید، به‌روزرسانی به نسخه‌های جدید را در نظر بگیرید تا از این بهبودها و قابلیت‌های جدید بهره‌مند شوید.

این قابلیت به توسعه‌دهندگان کمک می‌کند تا زمان کمتری را صرف نصب و پیکربندی ابزارها کنند و بیشتر روی توسعه کد تمرکز کنند.

https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
Forwarded from Gopher Academy
در نسخه‌های جدید زبان برنامه‌نویسی Go (Golang)، بهبودهای قابل توجهی در ابزارها و قابلیت‌های مرتبط با تست‌ها و احراز هویت (authentication) انجام شده است. در اینجا به دو بهبود مهم اشاره می‌کنیم:

---

### ۱. خروجی JSON برای `go test`:
یکی از بهبودهای مهم در ابزار تست Go، پشتیبانی از خروجی JSON برای نتایج تست‌ها است. این قابلیت تحلیل و گزارش‌گیری از تست‌ها را بسیار ساده‌تر و لذت‌بخش‌تر می‌کند.

#### ویژگی‌های کلیدی:
- خروجی ساختارمند: نتایج تست‌ها به صورت JSON ارائه می‌شوند که باعث می‌شود تحلیل و پردازش آن‌ها به‌طور خودکار ساده‌تر شود.
- سازگاری با ابزارهای گزارش‌گیری: خروجی JSON با ابزارهای گزارش‌گیری و تحلیل تست (مانند CI/CD pipelines) به‌طور کامل سازگار است.
- جزئیات بیشتر: خروجی JSON شامل اطلاعات دقیق‌تری مانند زمان اجرای هر تست، وضعیت (pass/fail)، و پیام‌های خطا است.

#### نحوه استفاده:
برای دریافت خروجی JSON از go test`، می‌توانید از فلگ -json` استفاده کنید:

go test -json ./...


#### مثال خروجی JSON:
{
"Time": "2023-10-01T12:34:56Z",
"Action": "run",
"Package": "example.com/myproject",
"Test": "TestSomething",
"Output": "=== RUN TestSomething\n"
}
{
"Time": "2023-10-01T12:34:57Z",
"Action": "pass",
"Package": "example.com/myproject",
"Test": "TestSomething",
"Elapsed": 0.12
}


#### مزایا:
- تحلیل خودکار: می‌توانید از ابزارهای تحلیل JSON (مانند jq) برای پردازش نتایج تست‌ها استفاده کنید.
- یکپارچه‌سازی با CI/CD: خروجی JSON به راحتی با سیستم‌های CI/CD (مانند GitHub Actions, GitLab CI, Jenkins) یکپارچه می‌شود.
- گزارش‌گیری پیشرفته: می‌توانید گزارش‌های دقیق‌تری از تست‌ها ایجاد کنید و آن‌ها را در داشبوردهای مختلف نمایش دهید.

---

### ۲. GOAUTH: احراز هویت آسان‌تر برای ریپوزیتوری‌های خصوصی:
قابلیت جدید GOAUTH به توسعه‌دهندگان اجازه می‌دهد تا به راحتی به ریپوزیتوری‌های خصوصی (مانند GitHub Private Repositories) متصل شوند. این قابلیت فرآیند احراز هویت را ساده‌تر و امن‌تر می‌کند.

#### ویژگی‌های کلیدی:
- پشتیبانی از چندین ارائه‌دهنده: GOAUTH از ارائه‌دهندگان مختلفی مانند GitHub, GitLab, Bitbucket و غیره پشتیبانی می‌کند.
- مدیریت توکن‌ها: می‌توانید توکن‌های دسترسی (access tokens) را به‌طور امن مدیریت کنید.
- سازگاری با `go get` و `go mod`: GOAUTH به‌طور کامل با ابزارهای مدیریت وابستگی Go (مانند go get و go mod) یکپارچه شده است.

#### نحوه استفاده:
برای استفاده از GOAUTH، کافی است توکن دسترسی خود را در فایل پیکربندی Go قرار دهید. به عنوان مثال:

# تنظیم توکن دسترسی برای GitHub
export GOPRIVATE=github.com/myorg/*
export GOAUTH_TOKEN=ghp_your_github_token_here


#### مثال استفاده با go get:
go get github.com/myorg/private-repo


#### مزایا:
- امنیت بهتر: توکن‌های دسترسی به‌طور امن مدیریت می‌شوند و نیازی به ذخیره آن‌ها در کد نیست.
- ساده‌سازی فرآیند: دیگر نیازی به تنظیمات دستی برای احراز هویت نیست.
- پشتیبانی از چندین ارائه‌دهنده: می‌توانید از GOAUTH برای اتصال به ریپوزیتوری‌های خصوصی در GitHub, GitLab, Bitbucket و غیره استفاده کنید.

---

### ۳. نتیجه‌گیری:
- خروجی JSON برای `go test` تحلیل و گزارش‌گیری از تست‌ها را بسیار ساده‌تر و لذت‌بخش‌تر می‌کند.
- GOAUTH فرآیند احراز هویت برای ریپوزیتوری‌های خصوصی را ساده‌تر و امن‌تر می‌کند.

این بهبودها به توسعه‌دهندگان کمک می‌کنند تا زمان کمتری را صرف تنظیمات و تحلیل تست‌ها کنند و بیشتر روی توسعه کد تمرکز کنند. اگر از Go استفاده می‌کنید، به‌روزرسانی به نسخه‌های جدید را در نظر بگیرید تا از این بهبودها و قابلیت‌های جدید بهره‌مند شوید.


https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
Forwarded from LinAcademy (Pakrohk)
روز مرد رو به تمام پسرای و مردای LinAcademy و نرم افزار آزاد دوست تبریک میگم ❤️ از طرف ادمین های لین آکادمی با عشق.

@LinAcademy
#پست_موقف
توی کانال همیشه سعی میکنم اطلاعات دقیق و تست شده منتشر کنم
🚨در مورد پست اخر اطلاعاتی به دست من رسید که نشون میده
⚠️اطلاعات دقیق نبوده و ممکنه است اشتباه باشه

💠علت شک به صحت اطلاعات :
داشتن درایور ویندوزی و حافظه در این سیستم ها روی خود تبدیل ها چیز غیر معمولی نیست
این که سورس این درایور ها منتشر نشود هم غیر معمول نیست
رفتار های نرم افزار دلیلی بر بدافزار بودن نیست این که یک نرم افزار بی کیفیت و بد بنویسی نمیشه گفت بد افزار
وجود false positives در اسکنر ها عادی است دلیل نمیشه
اعتبار منبع اصلی به دلایل فنی زیر سوال رفت

✳️ تا برسی های بیشتر پست آرشیو و از دسترس عمومی خارج شد
Forwarded from Linuxor ?
پهنای باند (Bandwidth) یعنی چه حجمی از داده "می‌تونه" رد شه، ولی گذردهی (Throughput) یعنی واقعاً "چقدر" رد می‌شه. مثل اینه که یه لوله بزرگ آب داشته باشی (پهنای باند)، اما به خاطر فشار کم یا نشتی، فقط یه بخشی از آب برسه (گذردهی).


@Linuxor
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
روز مرد مبارک 🥂🎉❤️

@TheRaymondDev
Forwarded from Python Hints
می‌خوام راجب این صحبت کنم (از پروفایل خودم).

من پیغمبر مخالفت با اهمیت تعداد کامیت بودم و هستم؛ حداقل ۳-۴ ساله دارم این حرف رو میزنم و دلیلش رو هم گفتم (اینکه چندتا گیت‌هاب خودم به اینو اون دادم و ...)

ولی یک جو احمقانه توی لینکدین و توییتر راه افتاده ضد این بخش؛ ببین از من که گذشته ولی این صحبت‌های احمقانه برای کل جامعه برنامه‌نوبسی بد هست چند مورد :

۱- کسی که پروفایلش انقدر کامیت داره؛ حرفه‌ای نیست چون شرکت‌های بزرگ خودشون گیت‌لب دارند و ...

همینجا جواب این رو میدم:
احمق جون تو تازه‌کاری گیت‌لب زمانی به یک سری باگ‌ها خورد (توی یوتیوب سرچ کنید) که خیلی شرکت‌ها برگشتند روی گیت‌هاب و نسخه organization رو خرید زدند.
خیلی از فعالیت‌های گیت‌هاب من ازونجا شروع شد.

۲- اینا همش ادا بازیه و ...

حماقت محض
هست این حرف؛ اگر به اینجا رسیدی که این حرف رو زدی (شما تا حالا کسی رو دیدی عکس این کاشی‌کاری رو توی رزومه‌اش بذاره ؟)
هیچ شرکت و یا شخص با سوادی رو نمی‌شناسم که حتی ۱ درصد این موزاییک براش مهم باشه (مگر بچه‌هایی که روش نقاشی می‌کشند. اونم کل کل برنامه نویسی هست البته)

و چیزهای از این دست.
در نهایت اینکه؛ من خودم بیشتر کامیت‌های گیت‌هابم برای کارهای شخصی (اسکریپت؛ ایده؛ داکیومنت؛ کانفیگ و حتی تمرین هست)

از این 2176 تا کامیت شاید 700-800 تاش برای شرکت‌هایی هست که روی گیت‌هاب هستند؛ باقیش کارهای خودمه؛ و حتی اگر یک روز تا ۱۰ شب هم سرکار باشم هرطور شده باید تا آخر شب ۲-۳ تا مطلب کتابی که خوندم رو برای خودم تمرین کنم (این بدترین حالت هست).

ولی خیلی وقتا تیکه کدی زده شده توی شرکت که بنظرم راه خوبی نبوده و باگ میخوره؛ روی گیت‌هاب خودم یک سناریو مشابه براش درست می‌کنم و سعی می‌کنم اون مشکل رو حل کنم یا پروفایلینگ براش بگیرم و اپتیمایز کنم چون من خالق همه پروژه‌های شرکت‌ها نیستم و خیلی وقتا بیزینس بهم اجازه نمیده روش رو تغییر بدم.

خلاصه که وظیفه ما :
هشدار دادن راجب افراد سودجو بود؛ که نیروی HR به این کاشی کاری گیت‌هاب اهمیتی نده برای دعوت به مصاحبه.
اما این موج تخریب افراد تازه‌کار و با انگیزه بالا هم کاری بس کثیف‌تر هست که مطمئنم از جامعه توسعه دهنده شروع نشده.
مثال از خودم زدم برای حمایت از تمام دولوپرهای تازه‌کار و با انگیزه دمتون
گرم ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Syntax | سینتکس (Daimon)
می‌خوام راجب این صحبت کنم (از پروفایل خودم).

من پیغمبر مخالفت با اهمیت تعداد کامیت بودم و هستم؛ حداقل ۳-۴ ساله دارم این حرف رو میزنم و دلیلش رو هم گفتم (اینکه چندتا گیت‌هاب خودم به اینو اون دادم و ...)

ولی یک جو احمقانه توی لینکدین و توییتر راه افتاده ضد این بخش؛ ببین از من که گذشته ولی این صحبت‌های احمقانه برای کل جامعه برنامه‌نوبسی بد هست چند مورد :

۱- کسی که پروفایلش انقدر کامیت داره؛ حرفه‌ای نیست چون شرکت‌های بزرگ خودشون گیت‌لب دارند و ...

همینجا جواب این رو میدم:
احمق جون تو تازه‌کاری گیت‌لب زمانی به یک سری باگ‌ها خورد (توی یوتیوب سرچ کنید) که خیلی شرکت‌ها برگشتند روی گیت‌هاب و نسخه organization رو خرید زدند.
خیلی از فعالیت‌های گیت‌هاب من ازونجا شروع شد.

۲- اینا همش ادا بازیه و ...

حماقت محض
هست این حرف؛ اگر به اینجا رسیدی که این حرف رو زدی (شما تا حالا کسی رو دیدی عکس این کاشی‌کاری رو توی رزومه‌اش بذاره ؟)
هیچ شرکت و یا شخص با سوادی رو نمی‌شناسم که حتی ۱ درصد این موزاییک براش مهم باشه (مگر بچه‌هایی که روش نقاشی می‌کشند. اونم کل کل برنامه نویسی هست البته)

و چیزهای از این دست.
در نهایت اینکه؛ من خودم بیشتر کامیت‌های گیت‌هابم برای کارهای شخصی (اسکریپت؛ ایده؛ داکیومنت؛ کانفیگ و حتی تمرین هست)

از این 2176 تا کامیت شاید 700-800 تاش برای شرکت‌هایی هست که روی گیت‌هاب هستند؛ باقیش کارهای خودمه؛ و حتی اگر یک روز تا ۱۰ شب هم سرکار باشم هرطور شده باید تا آخر شب ۲-۳ تا مطلب کتابی که خوندم رو برای خودم تمرین کنم (این بدترین حالت هست).

ولی خیلی وقتا تیکه کدی زده شده توی شرکت که بنظرم راه خوبی نبوده و باگ میخوره؛ روی گیت‌هاب خودم یک سناریو مشابه براش درست می‌کنم و سعی می‌کنم اون مشکل رو حل کنم یا پروفایلینگ براش بگیرم و اپتیمایز کنم چون من خالق همه پروژه‌های شرکت‌ها نیستم و خیلی وقتا بیزینس بهم اجازه نمیده روش رو تغییر بدم.

خلاصه که وظیفه ما :
هشدار دادن راجب افراد سودجو بود؛ که نیروی HR به این کاشی کاری گیت‌هاب اهمیتی نده برای دعوت به مصاحبه.
اما این موج تخریب افراد تازه‌کار و با انگیزه بالا هم کاری بس کثیف‌تر هست که مطمئنم از جامعه توسعه دهنده شروع نشده.
مثال از خودم زدم برای حمایت از تمام دولوپرهای تازه‌کار و با انگیزه دمتون
گرم ❤️
احتمالاً ساعت ۱۰:۰۰ صبح توی یوتوب یک لایو داشته باشیم و دستگاه xiaomi note 11 pro 5G (Veux) رو با کرنل داون‌استریم برای پست‌مارکت پورت کنیم‌.


سخت‌افزارش فعلا در دسترسم نیست، اما کرنل داون‌استریمش موقع بیلد شدن یک سری خطا داشت که حالا برای بیلد کردنش نیازمند اینه که بشینیم و ببینیم چطور میشه حلش کرد :))



@SohrabContents
Grokking_Relational_Database_Design-asbook.ir (3).pdf
29.6 MB
یکی از بچه ها توی گروه پرسید که چه منبعی برای Database design رو پیشنهاد میدی
منم کتاب Grokking Relational Database Design
رو پیشنهاد میدم که میتونید فایلشو رو دانلود کنید فقط یه نکته ای که هست این فایل کلا ۵ فصلشو داره از ۸ تا فصل(که همینم غیر رایگان خیلی سخت پیدا شد)
و میتونید اون سه تای دیگرو از این رپوی گیت هاب بخونید

#⃣ #book



🥷 CHANNEL | GROUP
Forwarded from Linuxor ?
گفتن Firewall نگفتن Wall پس زیادی روش حساب باز نکن.


@Linuxor
Forwarded from 🎄 یک برنامه نویس تنبل (  MΞ)
👆👆
https://territorial.io

توی بازی که معرفی کردیم یه مشکلی که بود کانکشن وبسوکتش بعضا قطع میشد و چون بصورت دیفالت reconnect نمیشه چیزی هم براش پیاده نکردن و در جای حساس یهو همه چی پر
واسه همین مجبور شدیم کار غیراخلاقی کنیم و بصورت گلوبال WebSocket رو override کردیم و قابلیت ریکانکت شدن رو بهش اضافه کردیم:

https://gist.github.com/maanimis/42dd254450a10f8f087ae8447d8c91ee

@TheRaymondDev
واقعا کتاب خوبیه و کلی چیز از طراحی دیتابیس یاد میگیرید.
اگه دوست داشته باشید میتونم بعدا براساس همین کتاب یکسری پست درست کنم
Forwarded from Sadra Codes
اوف 🔥
Forwarded from Linuxor ?
قبل VS Code یادتونه بین Editor ها چه دعوایی داشتیم، اصلا یهویی چی شد همه اومدیم VS Code


@Linuxor
Forwarded from Linuxor ?
این تیتر هم جالب بود 9 الگورتیمی که بر دنیای ما حکمرانی می‌کنند.

@Linuxor
Forwarded from Linuxor ?
توی کامپیوتر به موقعیتی که توش برای به دست آوردن یه ویژگی یا مزیت، مجبور به چشم‌پوشی یا کاهش کیفیت ویژگی دیگه ای باشین Trade Off می‌گن؛ این مقاله اومده و 15 تا از Trade Off های معروف کامپیوتر رو جمع آوری کرده :

https://blog.algomaster.io/p/system-design-top-15-trade-offs


@Linuxor
Forwarded from Gopher Academy
🔵 عنوان مقاله
Go Developer Survey 2024 H2 Results

🟢 خلاصه مقاله:
خلاصه‌ی گزارش جامعه‌ی برنامه‌نویسی Go از نظرسنجی اخیرشان نشان می‌دهد که بیش از 4000 پاسخ از توسعه‌دهندگان تجزیه و تحلیل شده است و نشان دهنده‌ی رضایت زیاد آن‌ها از جهت‌گیری زبان Go است، اما بزرگترین چالش آن‌ها حفظ استانداردهای کدنویسی یکسان است. در زمینه‌ی سیستم‌عامل، Linux و macOS پیشتازند، در حالی که در زمینه‌ی محیط‌های توسعه، VS Code و GoLand محبوب‌ترین‌ها هستند و در بخش ابری، AWS بیشترین استفاده را دارد. همچنین آمارهای جالبی در مورد میزان استفاده توسعه‌دهندگان Go از LLM (مدل‌های زبان بزرگ) ارائه شده است.

🟣لینک مقاله:
https://golangweekly.com/link/163964/web


👑 @gopher_academy