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
ابزارهای هوش مصنوعی که هیشکی بهت نمیگه چون سکرته !

1. useTrag.com:
یه دستیار باهوش که کدهای برنامه‌نویسیت رو بررسی میکنه و اشکالات رو پیدا میکنه. مثل یه برنامه‌نویس با تجربه عمل میکنه و بهت میگه کجای کارت ایراد داره!

2. Pixyer.AI:
تصویربرداری حرفه‌ای از محصولات رو برات انجام میده. انگار یه عکاس حرفه‌ای داری که عکس‌های تبلیغاتی محصولاتت رو میگیره.

3. CapGo.AI:
این یکی مثل یه اکسل خیلی باهوشه! میتونه خودش داده‌ها رو تحلیل کنه و گزارش‌های هوشمند بهت بده.

4. Averi.ai:
مدیر بازاریابی دیجیتال شخصیته! استراتژی‌های بازاریابی رو طراحی میکنه و کمپین‌هات رو مدیریت میکنه.

5. GiddyGiddy.com:
یه همراه مجازی که باهات چت میکنه و حرف میزنه. مثل یه دوست که همیشه در دسترسه!

6. TableSprint.com:
کمکت میکنه سریع و راحت اپلیکیشن بسازی، بدون اینکه نیاز به دانش فنی زیادی داشته باشی.

7. Kusho.AI:
یه ابزار تست هوشمند که مسیرهای مختلف نرم‌افزارت رو چک میکنه تا مطمئن شی همه چیز درست کار میکنه.

8. PricingMaker.com:
قیمت‌گذاری محصولات و خدماتت رو هوشمندانه انجام میده. با تحلیل بازار، بهترین قیمت رو پیشنهاد میده.

9. SmartLeadMagnet.com:
محتوای جذاب و ارزشمند تولید میکنه که بتونی باهاش مشتری جذب کنی - مثل کتاب‌های الکترونیکی یا راهنماها.

10. PodLM.ai:
پادکست تولید میکنه! میتونه متن رو به پادکست تبدیل کنه یا حتی محتوای پادکست رو خودش بسازه.

خب رفیق، اینا ابزارهای جدید و باحالی هستن که میتونن خیلی از کارهات رو راحت‌تر کنن. البته حواست باشه که هر کدوم رو قبل از استفاده تو کسب و کارت خوب تست کنی تا مطمئن شی برات مفیده.

@DevTwitter | <Safakaram/>
خوب بنچمارک 2021 آپدیت شد.
برید ببینید که php خام با دیتابیس pgsql کجا رفته!! درست چسبیده پشت سر node.js :))
حالا اونا به کنار laravel swoole ( همون لاراول اوکتان یا ورژن 8 لاراوله ) و lumen swoole هم اضافه شدن که توی تصویر میبینید که چطور جنگو رو لت و پار کردن :)))
واسه .net core عزیز هم فاتحه رو میخونم رفته توی رتبه ی 36 نشسته الان میگید واو چه رتبه ی خوبیه باید بگم که 5 فریم ورک php و همچنین خود php با ماژول ngx ازش جلو هست :))))
رتبه ی php با ماژول ngx و دیتابیس pqsql رتبه ی 20 ام هست.
شکست سنگین را بر تمام جنگو کار ها و asp کار ها تبریک عرض میکنم.
بنچمارک :
https://www.techempower.com/benchmarks/

پ.ن : حالا جنگو کار ها عزیز قبل آپدیت بنچمارک که اصلا php و لاراول اوکتان نبود خیلی قبولش داشتید حالا آپدیت شده باید دوبرابر قبولش داشته باشید :))
عمو عرفان برا همه ی افراد آرزوی موفقیت میکند و قصد تخریب ندارد.
@DevTwitter | <ERFAN MOHAMMADI/>
⚠️ ویروس ویندوزی برای دزدی و جاسوسی روی آداپتور تبدیل USB به پورت شبکه RJ45
که چینی‌‌ها در(aliexpress) میفروشند

🚨 چیپ حافظه فلش SPI که روی این تبدیل است به عنوان ذخیره‌ساز همراه با ویروس کار گذاشته شده
بیش از 10هزار بار فروش داشته😱

با استفاده و اجرای طولانی مدت کد خود را به فرآیندها سیستم تزریق می کند،
توانایی شناسایی و فرار از ماشین های مجازی دارد،
توانایی تغییر تنظیمات پروکسی را
توانایی استخراج کلیدهای فشرده شده
برای رد گم کردن از عناصر زبان روسی
توانای ذخیره سازی حجیم داده های دزدیده شده در حافظه فلش روی برد را دارد
گزارش تحلیل
منبع
🔥دفعه بعدی که یک قهوه ساز سفارش دادید باز کردید یک انتن کد Morse دید تعجب نکنید 😁
در خرید های خود دقت کنید ، خطر از آنچه فکر میکنید به شما نزدیک تر است
استفاده از لینوکس ، و توصیه های امنیتی را جدی بگیرد


❤️ ممنون از حمایت هاتون 💐🌺
Forwarded from Sudoer (Morteza Bashsiz)
دل‌نوشته

واقعا زندگی خیلی کار سختیه
خیلی هم کار سختیه
من بر این باور بودم و هستم همیشه که برای خوب زندگی کردن باید چندتا کار رو خوب انجام بدم
۱. تلاش کنم
۲. برنامه داشته باشم
۳. پیگیر باشم
۴. مشتاق باشم
۵. با اراده باشم
و این رو هم همیشه در نظر دارم که شانس خیلی مهمه و هیچ راه ساده‌تری برای زندگی و هیچ میان‌بری وجود نداره
Forwarded from DevAcademy
برا بچه هایی که دنبال کارآموزی هستن،این لینک چک کنن شاید بدردشون خورد

https://career.dgshahr.com/job-detail/75f135b3-5b0f-417e-9284-088548230688


💻@DevAcaademy
💬
@DevAcademyGroup
🔔قطعی شد🔔

🐍یادگیری عمیق با پایتون

🔥DEEP LEARNING by PYTHON

16 ساعت؛ 2.5 میلیون تومان
🗓جمعه ها از 28 دی
🎙توضیحات مدرس دوره 👉کلیک
🎥وبینار رایگان👉کلیک
✍️لینک ثبت نام👉کلیک

📌مشاوره و ثبت نام:
🙍‍♂️@ParsPajouhaanCEE
📞021-88322992(105)

🌐 وبسایت 📱 کانال تلگرام 📱 اینستاگرام
وقتی تو مرورگر google.com رو تایپ میکنی چه اتفاقی میوفته

@DevTwitter
Forwarded from Gopher Academy
🤝Mohammad AbdorrahmaniMohammad Abdorrahmani


اگه شما هم با Golang کد می‌زنید، خبر خوب اینه که ورژن 1.24 قراره تو فوریه 2025 منتشر بشه و کلی بهبود خفن آورده که کارمون رو هم سریع‌تر می‌کنه، هم راحت‌تر.


هایلایت‌های این نسخه:
1️⃣ سوئیچ به SwissTable تو کامپایلر:
گولنگ با این تغییر، مدیریت مپ‌ها رو خیلی بهینه‌تر کرده! رم کمتر مصرف می‌شه و عملیات خوندن/نوشتن سریع‌تر شده.


2️⃣ آپدیت استاندارد لایبرری:
دو پکیج جدید داریم:
os.Root برای راحت‌تر کردن کارهای مربوط به دایرکتوری‌ها.
weak برای هندل کردن weak pointers که خیلی وقتا به درد می‌خوره.


یه قابلیت جدید برای alias کردن sliceها که به خصوص با افزایش استفاده از جنریک‌ها خیلی کاربردیه.


3️⃣ بهبود ابزارها (Tooling):
یه قابلیت خفن به اسم متا-پترن اضافه شده که نصب ابزارهایی مثل mockgen رو راحت‌تر از همیشه می‌کنه.


خروجی JSON برای go test: تحلیل تست‌ها دیگه یه لذت شده!
GOAUTH: حالا می‌تونید راحت‌تر به ریپوزیتوری‌های پرایوت مثل GitHub وصل بشید.


https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
Forwarded from Gopher Academy
در نسخه 1.24 زبان برنامه‌نویسی Go (Golang)، ویژگی جدیدی به نام SwissTable به عنوان بخشی از بهبودهای مربوط به map (نوع داده‌ای دیکشنری یا associative array در Go) معرفی شد. این ویژگی بهینه‌سازی‌هایی در عملکرد و کارایی map ارائه می‌دهد. در زیر به بررسی این ویژگی و مزایای آن می‌پردازیم:

---

### ۱. SwissTable چیست؟
- SwissTable یک ساختار داده‌ای جدید برای پیاده‌سازی map در Go است که از الگوریتم‌ها و تکنیک‌های بهینه‌شده برای بهبود عملکرد استفاده می‌کند.
- این ساختار داده‌ای بر اساس جدول هش (hash table) کار می‌کند، اما با بهینه‌سازی‌هایی که باعث افزایش سرعت و کاهش مصرف حافظه می‌شود.

---

### ۲. مزایای SwissTable:
- سرعت بیشتر: SwissTable با استفاده از تکنیک‌های بهینه‌سازی مانند SIMD (Single Instruction, Multiple Data) و cache-friendly data structures**، سرعت عملیات‌های درج، حذف و جستجو در `map` را افزایش می‌دهد.
- **مصرف حافظه کمتر
: این ساختار داده‌ای از حافظه بهینه‌تری استفاده می‌کند و باعث کاهش مصرف حافظه در مقایسه با پیاده‌سازی‌های قدیمی‌تر map می‌شود.
- مقیاس‌پذیری بهتر: SwissTable برای کار با مجموعه‌های داده‌ای بزرگ و کوچک به‌طور همزمان بهینه‌سازی شده است.

---

### ۳. تغییرات در Go 1.24:
- در Go 1.24، تیم توسعه‌دهندگان Go تصمیم گرفتند از SwissTable به عنوان پیاده‌سازی پیش‌فرض برای map استفاده کنند.
- این تغییر به‌طور خودکار برای همه کاربران Go اعمال می‌شود و نیازی به تغییر کد یا تنظیمات خاصی ندارد.

---

### ۴. تأثیر SwissTable بر برنامه‌های Go:
- برنامه‌های موجود: برنامه‌هایی که از map استفاده می‌کنند، به‌طور خودکار از مزایای SwissTable بهره‌مند می‌شوند. این بهبودها شامل افزایش سرعت و کاهش مصرف حافظه است.
- برنامه‌های جدید: توسعه‌دهندگان می‌توانند از map با اطمینان بیشتری استفاده کنند، زیرا عملکرد آن به‌طور قابل توجهی بهبود یافته است.

---

### ۵. مقایسه با پیاده‌سازی قدیمی `map`:
- پیاده‌سازی قدیمی: در نسخه‌های قبلی Go، map با استفاده از یک ساختار داده‌ای مبتنی بر hash table پیاده‌سازی می‌شد که عملکرد خوبی داشت، اما برای برخی موارد خاص (مانند مجموعه‌های داده‌ای بزرگ) بهینه‌سازی نشده بود.
- SwissTable: این ساختار داده‌ای جدید با استفاده از تکنیک‌های پیشرفته‌تر، عملکرد map را در همه موارد بهبود می‌بخشد.

---

### ۶. مثال استفاده از `map` در Go:
در Go، map به صورت زیر استفاده می‌شود:

package main

import "fmt"

func main() {
// ایجاد یک map
m := make(map[string]int)

// درج داده در map
m["apple"] = 5
m["banana"] = 3

// خواندن داده از map
fmt.Println("تعداد سیب‌ها:", m["apple"])

// حذف داده از map
delete(m, "banana")

// بررسی وجود کلید در map
if value, exists := m["banana"]; exists {
fmt.Println("تعداد موزها:", value)
} else {
fmt.Println("موز وجود ندارد.")
}
}


با استفاده از SwissTable، این عملیات‌ها (درج، حذف، و جستجو) سریع‌تر و با مصرف حافظه کم‌تری انجام می‌شوند.

---

### ۷. نتیجه‌گیری:
- SwissTable یک بهبود بزرگ در پیاده‌سازی map در Go است که در نسخه 1.24 معرفی شد.
- این ویژگی باعث افزایش سرعت، کاهش مصرف حافظه، و بهبود مقیاس‌پذیری map می‌شود.
- توسعه‌دهندگان Go می‌توانند بدون نیاز به تغییر کد، از مزایای این بهبودها بهره‌مند شوند.

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


https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
بررسی دو مفهوم stateful و stateless توی طراحی سیستم ها بخصوص توی وب و api ها

این روش ها هرکدوم مزایا و معایب خودشونو دارن که من چند تاشو میگم

1- دارای حالت (stateful) : توی یک سیستم دارای حالت ، سرور میاد و اطلاعاتی که مربوط به وضعیت کاربر میشن رو ذخیره میکنه داخل session ؛ برای مثال وقتی وارد یک سایت فروشگاهی میشیم اطلاعاتی مثله (سبد خرید ، احراز هویت و ...) به دست سرور توی session ما ذخیره میشن.

از مزایای این روش اینه که مناسبه برای سیستم هایی که نیاز به پیگیری وضعیت کاربر دارن مثل (بازی ها ، چت ها ، سبد خرید و ....)

معایبش هم اینه که باید منابع بیشتری مصرف کنید و مقیاس پذیری سخت تری داره


2- بی حالت (stateless) : توی این مدل سیستم ها هیچ اطلاعاتی از درخواست های قبلی کاربر ذخیره نمیشن توی session. و هر درخواست مستقل از درخواست قبلی ارسال میشه و همه ی اطلاعات مورد نیاز باید توی همون درخواست دریافت بشه.


مزایای این روش سرعت بیشتری که داره هست چون نیاز ندارید به session دسترسی داشته باشید و مقیاس پذیری بالایی داره

معایب هم می تونیم به مدیریت پیچیده ای که ممکنه برای حفظ وضعیت کاربر ها ایجاد بشه اشاره کنیم و همینطور به ارسال اطلاعات تکراری و اضافی در هر درخواست اشاره کنیم.

@DevTwitter | <Ali/>
Forwarded from Gopher Academy
در نسخه‌های جدید زبان برنامه‌نویسی Go (Golang)، به‌روزرسانی‌هایی در استاندارد لایبرری (Standard Library) انجام شده است که شامل اضافه شدن پکیج‌های جدید و بهبود پکیج‌های موجود می‌شود. در اینجا به دو پکیج جدید که اشاره کردید، یعنی `os.Root` و `weak`**، می‌پردازیم:

---

### ۱. **پکیج `os.Root`
:
این پکیج جدید برای ساده‌سازی کارهای مربوط به مدیریت دایرکتوری‌ها و مسیرهای فایل‌سیستمی معرفی شده است.

#### ویژگی‌های کلیدی:
- دسترسی آسان به دایرکتوری‌های ریشه: این پکیج توابعی را فراهم می‌کند که دسترسی به دایرکتوری‌های ریشه (مانند / در لینوکس یا C:\ در ویندوز) را ساده‌تر می‌کند.
- مدیریت مسیرها: توابعی برای کار با مسیرهای نسبی و مطلق، تغییر دایرکتوری جاری، و بررسی وجود فایل یا دایرکتوری ارائه می‌دهد.
- سازگاری با سیستم‌عامل‌های مختلف: این پکیج به‌طور خودکار با تفاوت‌های بین سیستم‌عامل‌ها (مانند لینوکس، ویندوز، و macOS) سازگار است.

#### مثال استفاده:
package main

import (
"fmt"
"os"
)

func main() {
// دریافت دایرکتوری ریشه
root := os.Root()
fmt.Println("دایرکتوری ریشه:", root)

// تغییر دایرکتوری جاری به دایرکتوری ریشه
err := os.Chdir(root)
if err != nil {
fmt.Println("خطا در تغییر دایرکتوری:", err)
return
}

// لیست فایل‌ها و دایرکتوری‌ها در دایرکتوری ریشه
files, err := os.ReadDir(".")
if err != nil {
fmt.Println("خطا در خواندن دایرکتوری:", err)
return
}

for _, file := range files {
fmt.Println(file.Name())
}
}


---

### ۲. پکیج `weak`:
این پکیج جدید برای مدیریت weak pointers (اشاره‌گرهای ضعیف) معرفی شده است. weak pointers به توسعه‌دهندگان اجازه می‌دهند تا به یک شیء اشاره کنند بدون اینکه مانع از جمع‌آوری آن توسط Garbage Collector (GC) شوند.

#### ویژگی‌های کلیدی:
- مدیریت حافظه هوشمند: weak pointers به توسعه‌دهندگان کمک می‌کنند تا از memory leaks جلوگیری کنند، زیرا این اشاره‌گرها مانع از جمع‌آوری شیء توسط GC نمی‌شوند.
- استفاده در ساختارهای داده پیچیده: این پکیج برای مواردی مانند کش‌ها (caches)**، **لیست‌های وابسته**، و سایر ساختارهای داده‌ای که نیاز به مدیریت حافظه دقیق دارند، مفید است.
- **سازگاری با Garbage Collector
: weak pointers به‌طور کامل با GC Go سازگار هستند و هیچ تأثیر منفی بر عملکرد آن ندارند.

#### مثال استفاده:
package main

import (
"fmt"
"runtime"
"weak"
)

func main() {
// ایجاد یک شیء
obj := "این یک شیء است"

// ایجاد یک weak pointer به شیء
wp := weak.New(&obj)

// بررسی وجود شیء
if val, ok := wp.Get(); ok {
fmt.Println("شیء وجود دارد:", *val)
} else {
fmt.Println("شیء جمع‌آوری شده است.")
}

// حذف اشاره‌گر به شیء
obj = ""
runtime.GC() // اجرای Garbage Collector

// بررسی دوباره وجود شیء
if val, ok := wp.Get(); ok {
fmt.Println("شیء هنوز وجود دارد:", *val)
} else {
fmt.Println("شیء جمع‌آوری شده است.")
}
}


---

### ۳. مزایای این پکیج‌ها:
- `os.Root`:
- ساده‌سازی کار با دایرکتوری‌ها و مسیرها.
- کاهش نیاز به کدنویسی دستی برای مدیریت مسیرها.
- سازگاری با سیستم‌عامل‌های مختلف.

- `weak`:
- جلوگیری از memory leaks با استفاده از weak pointers.
- مدیریت هوشمند حافظه در ساختارهای داده پیچیده.
- بهبود عملکرد برنامه‌هایی که نیاز به مدیریت دقیق حافظه دارند.

---

### ۴. نتیجه‌گیری:
- `os.Root` و `weak` دو پکیج جدید و مفید در استاندارد لایبرری Go هستند که به توسعه‌دهندگان کمک می‌کنند تا کدهای بهینه‌تر و قابل‌حفظ‌تری بنویسند.
- اگر از Go استفاده می‌کنید، به‌روزرسانی به نسخه‌های جدید را در نظر بگیرید تا از این بهبودها و قابلیت‌های جدید بهره‌مند شوید.

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


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

---

### ۱. alias کردن sliceها چیست؟
- alias کردن به معنی تعریف یک نام جدید برای یک نوع داده موجود است. این کار به توسعه‌دهندگان اجازه می‌دهد تا از نام‌های کوتاه‌تر یا توصیفی‌تر برای انواع داده‌ای پیچیده استفاده کنند.
- در Go، این قابلیت به‌طور خاص برای sliceها بسیار مفید است، زیرا sliceها یکی از پرکاربردترین انواع داده‌ای در Go هستند.

---

### ۲. چرا alias کردن sliceها مهم است؟
- بهبود خوانایی کد: با استفاده از aliasها، می‌توانید از نام‌های توصیفی‌تر برای sliceها استفاده کنید که باعث خوانایی بیشتر کد می‌شود.
- کاهش تکرار کد: اگر از sliceها با انواع داده‌ای پیچیده استفاده می‌کنید، alias کردن باعث کاهش تکرار کد و ساده‌تر شدن آن می‌شود.
- سازگاری با جنریک‌ها: با معرفی جنریک‌ها در Go، alias کردن sliceها به توسعه‌دهندگان اجازه می‌دهد تا از جنریک‌ها به‌طور موثرتری استفاده کنند.

---

### ۳. نحوه alias کردن sliceها:
در Go، می‌توانید از کلمه کلیدی `type` برای تعریف alias استفاده کنید. در اینجا چند مثال آورده شده است:

#### مثال ۱: alias کردن یک slice ساده
package main

import "fmt"

// تعریف یک alias برای slice از اعداد صحیح
type IntSlice = []int

func main() {
var numbers IntSlice = []int{1, 2, 3, 4, 5}
fmt.Println(numbers) // خروجی: [1 2 3 4 5]
}


#### مثال ۲: alias کردن یک slice با جنریک‌ها
package main

import "fmt"

// تعریف یک alias برای slice از هر نوع داده‌ای با استفاده از جنریک‌ها
type GenericSlice[T any] = []T

func main() {
var numbers GenericSlice[int] = []int{1, 2, 3, 4, 5}
fmt.Println(numbers) // خروجی: [1 2 3 4 5]

var names GenericSlice[string] = []string{"Alice", "Bob", "Charlie"}
fmt.Println(names) // خروجی: [Alice Bob Charlie]
}


#### مثال ۳: alias کردن sliceهای پیچیده
package main

import "fmt"

// تعریف یک alias برای slice از sliceهای اعداد صحیح
type IntSliceSlice = [][]int

func main() {
var matrix IntSliceSlice = [][]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}
fmt.Println(matrix) // خروجی: [[1 2 3] [4 5 6] [7 8 9]]
}


---

### ۴. مزایای alias کردن sliceها:
- خوانایی بهتر: با استفاده از aliasها، می‌توانید از نام‌های توصیفی‌تر برای sliceها استفاده کنید که باعث خوانایی بیشتر کد می‌شود.
- کاهش تکرار کد: اگر از sliceها با انواع داده‌ای پیچیده استفاده می‌کنید، alias کردن باعث کاهش تکرار کد و ساده‌تر شدن آن می‌شود.
- سازگاری با جنریک‌ها: alias کردن sliceها به توسعه‌دهندگان اجازه می‌دهد تا از جنریک‌ها به‌طور موثرتری استفاده کنند.

---

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

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


https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
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