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

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
تلگرام در کره شمالی، و یوتیوب، تلگرام و واتس‌اپ در روسیه فیلتر نیستند!

© AliSaedvandi

🔍 ircf.space
@ircfspace
یه اپی با پایتون زدم که میتونه از یک single source (برای مثال یک عکس) برای چندین پلتفرمی که داریم توسعه میدیم ( برای مثال یک اپلیکیشن اندرویدی یا حتی برای IOS و..) که قراره ایکون لانچر اپ از اون Folder Structure ، بخونه ، به راحتی این فولدر و عکس های مختلف در سایز های مختلف درست کنه و اون رو توی پروژه تون اضافه کنید

https://github.com/aminrms/app_icon_generator/

@DevTwitter | <Amin Ramezani/>
Forwarded from Linuxor ?
آقای ayub_kokabi اومدن و کتاب Refactoring UI رو ترجمه کردن؛ دانلودش کردم خیلی خوب بود شما هم تستش کنید : دانلود

@Linuxor
📚چهارمین جلسه از سلسله جلسات CEAM 📚

🔹 از نیاز مشتری تا خلق ارزش؛ نگاهی به مدیریت محصول در دنیای B2B

🎙ارائه‌دهنده: مهندس اسماعیل وکیلی

🧑‍💻مدیر محصول و عضو سابق هیئت مدیره پیام پرداز

📆 چهارشنبه ۱۵ مرداد
ساعت ۱۶
📍اصفهان، گروه فناوری اطلاعات و ارتباطات مهیمن

📎 لینک ثبت نام

✈️CE Alumni Meetup
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Syntax | سینتکس (Sovren)
از کدوم بیشتر استفاده می کنید؟
Anonymous Poll
60%
gpt
14%
gemini
8%
claude
10%
grok
9%
others
Forwarded from Gopher Academy
مقاله «Writing Go Code like a Pro!» در Go Chronicles، همراه با نکات مهم و مثال‌های کوچک برای درک بهتر:

---

🧠 نکات کلیدی برای نوشتن کد حرفه‌ای در Go

1. نام‌گذاری متغیرها و توابع

* از camelCase استفاده کنید و از snake\_case پرهیز شود.
مثال: myVariable بجای my_variable ☑️
* نام‌ها را کوتاه ولی واضح نگه دارید؛ بسته به scope، اسم کوتاه‌تر مناسب‌تر است.
* برای شاخص‌ حلقه‌ها از حروف تک مثل i استفاده کنید، نه index.

> بیشترین زمان را برای خواندن کد دیگران می‌گذارید، پس کدی بنویسید که دیگران بدون دردسر بفهمند.

---

2. نام‌گذاری پکیج‌ها

* نام پکیج‌ها باید کوتاه، پایین‌نویس (lowercase) و معمولاً مفرد باشند (مثلاً service بجای services, utils توصیه نمی‌شود).

---

3. طراحی ساختار پروژه

* پروژه‌های کوچک: تمام فایل‌ها در ریشه، مثل main.go.
* برای پروژه‌های با چند executable: ساختار پیشنهادی:


cmd/
app1/
app2/
internal/
go.mod
README.md

* فقط وقتی نیاز واقعی به جداکردن logic دارید، پکیج مجزا در internal/ بسازید.

---

4. رعایت اصول Domain-Driven Structure

* پکیج‌ها را براساس سرویس‌ها و موجودیت‌های دامنه تعریف کنید (مثلاً پکیج‌هایی مثل account, inventory).
* اجتناب از ساختار تقلیدی MVC یا مدل‌هایی که ممکن است منجر به circular dependency شود.

---

5. شروع ساده و افزایش تدریجی ساختار

* اگر ایده‌ای ندارید، فقط با go.mod و main.go شروع کنید؛ بعد با رشد پروژه، نیاز به طبقه‌بندی دقیق‌تر را تشخیص دهید. شروع مینیمال، کد قابل نگهداری را تسهیل می‌کند.

---

6. فایل‌های مرتبط را کنار هم نگه دارید

* توابع مرتبط، typeها و handlerهای یک واحد منطقی را در فایل‌های نزدیک یا مشابه قرار دهید؛ این کار خوانایی را بالا می‌برد.

---

7. اندازه فایل مهم نیست... مگر نگهداری را دشوار کند

* فایل‌های بزرگ ایرادی ندارند، تا وقتی که نگهداری آن‌ها راحت باشد. لازم نیست برای چند فایل ساده، پکیج ایجاد کنید.

---

8. وقتی لازم نیست پکیج جدا نسازید

* از ایجاد پکیج‌های کم‌اهمیت یا بسیار جزئی خودداری کنید؛ مگر قصد reuse مجزا یا جداسازی واضح logic را داشته باشید.)

---

9. به علائم هشدار ساختار دقت کنید

اگر موارد زیر را دیدید، زمان بازبینی ساختار فرارسیده:

* مشکل در یافتن نقاط کد،
* تغییرات گسترده در بخش‌های متفاوت،
* سخت شدن debug،
* وابستگی حلقوی یا پیچیدگی error handling.

---

💡 جمع‌بندی نهایی

* تأکید روی خوانایی، نگهداری‌پذیری و ساختار معقول.
* شروع از ساده‌ترین حالت، حفظ نام‌گذاری استاندارد Go و اجتناب از ساختارهای پیچیده غیر idiomatic Go.
* اجازه دهید پروژه در طول زمان ساختار مناسب خودش را بیابد، نه طراحی اولیه‌ی کاملاً دقیق.
Forwarded from Gopher Academy
📝 نکات کاربردی درباره strings.Builder

1. چهار روش نوشتن مختلف

strings.Builder از چهار روش برای افزودن محتوا پشتیبانی می‌کند:

* Write([]byte), WriteByte(byte), WriteRune(rune), WriteString(string)
بسته به نوع داده‌ای که در اختیار دارید، می‌توانید روش مناسب را استفاده کنید

2. نحوه ذخیره‌سازی داخلی

این نوع از یک slice داخلی استفاده می‌کند که نوشتن‌ها به صورت append در آن انجام می‌شوند. بنابراین عملکرد آن مشابه append روی slice است

3. استفاده‌ی بهینه با Grow(n)

قبل از نوشتن با حجم بالا، بهتر است با Grow(n) ظرفیت را از پیش افزایش دهید تا از realloc جلوگیری شود:

* اگر ظرفیت فعلی کافی باشد، گسترش اتفاق نمی‌افتد.
* اگر ظرفیت کافی نباشد، با فرمول current_capacity*2 + n افزایش پیدا می‌کند

4. عملکرد String()

متد String() بدون تخصیص حافظه اضافی، یک رشته جدید از buffer داخلی ایجاد می‌کند—با استفاده از `unsafe`، فقط اشاره‌گر را باز می‌گرداند

### 5. هرگز یک Builder غیرصفر را کپی نکنید

کپی کردن یک `strings.Builder` که قبلاً نوشته شده باشد منجر به panic می‌شود:

var b1 strings.Builder
b1.WriteString("ABC")
b2 := b1
b2.WriteString("DEF") // panic!


فقط اشیاء صفر مقدار (بدون نوشتن) قابل کپی هستند

6. عدم پشتیبانی هم‌زمانی (Concurrency)

strings.Builder ایمن برای استفاده هم‌زمان از چند goroutine نیست؛ خواندن یا نوشتن هم‌زمان می‌تواند منجر به نتایج غیرمنتظره شود

7. پیاده‌سازی io.Writer

رابط Write(p []byte) (int, error) پیاده‌سازی شده است، بنابراین می‌توانید از strings.Builder به عنوان یک io.Writer استفاده کنید—مثلاً log‌سازی، fmt.Fprintf و …

---

⚡️ مثال استفاده

package main

import (
"fmt"
"strings"
)

func main() {
var sb strings.Builder
sb.Grow(100)

sb.WriteString("Hello")
sb.WriteByte(' ')
sb.WriteRune('世')
sb.WriteString("界")

fmt.Println(sb.String()) // خروجی: "Hello 世界"
fmt.Printf("Len=%d, Cap=%d\n", sb.Len(), sb.Cap())
}


در این مثال:

* از Grow(100) برای کاهش realloc استفاده کردیم.
* با ترکیب WriteString, WriteByte, و WriteRune یک رشته UTF‑8 ساختیم.
* قابلیت گرفتن طول و ظرفیت نیز وجود دارد.
|
Forwarded from tiivik️
⭕️سیاست رقابت اتحادیه اروپا (Competition Policy EU) و
جستجو در پرونده‌های رقابتی اتحادیه اروپا
این منبع رسمی به شما اجازه می‌دهد تا تصمیمات منتشر شده مرتبط با پرونده‌های ضد انحصار، ادغام شرکت‌ها و کمک‌های دولتی در اتحادیه اروپا را بیابید.

امکان جستجو بر اساس موارد زیر وجود دارد:

حوزه سیاسی (مقررات ضد انحصار، کمک‌های دولتی، ادغام‌ها)؛
شماره پرونده؛
نام (از جمله نام شرکت‌ها)؛
تاریخ صدور رأی؛
بخش اقتصادی (بر اساس طبقه‌بندی NACE:

[
طبقه‌بندی آماری فعالیت‌های اقتصادی در اتحادیه اروپا

کشور عضو و تاریخ انتشار.
🆔
@tiivik
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔥 ابزار کاربردی nethogs برای مدیریت پهنای باند شبکه 🔥
———————————————————

اگر دوست داری بدونی کدام پردازش بیشترین پهنای باند شبکه رو مصرف می‌کنه، nethogs بهترین گزینه است! این ابزار ساده و قدرتمند، به راحتی مصرف اینترنت هر پردازش رو بهت نشون می‌ده.

### نصب nethogs در توزیع‌های مختلف لینوکس:

sudo apt install nethogs         # اوبونتو، دبیان
sudo yum install nethogs # سنت‌اواس، ردهت
sudo dnf install nethogs # فدورا
sudo pacman -S nethogs # آرچ لینوکس
sudo zypper install nethogs # اوپن‌سوزه
apk add nethogs # آلپاین لینوکس

### نحوه اجرا:

sudo nethogs

یا می‌تونی با مشخص کردن اینترفیس شبکه دستور رو اجرا کنی:

nethogs eth1
nethogs eth0 eth1 ppp0
sudo /usr/sbin/nethogs eth0

### سوئیچ‌های کاربردی nethogs:

* -d : تنظیم تأخیر برای نرخ به‌روزرسانی
* -h : نمایش راهنمای دستورات
* -p : حالت شنود پرومیسکویوس (Promiscuous Mode) – (توصیه نمی‌شود)
* -t : حالت Trace
* -V : نمایش نسخه برنامه

نویسنده: حسین سیلانی 
📢 اخبار و آموزش‌های بیشتر در کانال: 
https://t.iss.one/linuxtnt
یه مینی پروژه بازی‌سازی با Vanilla JS که برای یادگیری بیشتر خودم شروع به توسعه‌ش کردم.
توش سعی کردم قواعد clean code رو رعایت کنم و خود کدها هم پیچیدگی خاصی ندارن و قابل درکن.
اگه هنوز اول راه JS هستید، پیشنهاد می‌کنم یه نگاهی بهش بندازید، شاید بهتون ایده بده یا کمکتون کنه.

https://github.com/whosfatima/Snake_Mini_Game

@DevTwitter | <whosfatima/>
Forwarded from یه شعر (Poem Bot)
مولانا | دیوان شمس | رباعیات | رباعی شمارهٔ ۹۴۱

ای لاله بیا و از رخم رنگ آموز
وی زهره بیا و از دلم چنگ آموز
و آنگه که نوای وصل آهنگ کند
ای بخت بد بیا و آهنگ آموز

#مولانا | گنجور
📍@iipoem
بررسی نظرسنجی Stack Overflow 2025

نتایج نظرسنجی امسال سایت Stack Overflow منتشر شده. بیاید ببینیم صنعت و تکنولوژی های مختلف تو چه وضعیتی قرار دارن. تو این ویدیو یه بررسی خیلی سریع رو این نتایج انجام میدیم. در نهایت نتایج بهتون میگه که Rust رو بیشتر جدی بگیرید و دوستش داشته باشید، اگه از شغلتون خوشحال نیستید خیلی طبیعیه و تقریبا مثه بقیه هستید، آدما به هوش مصنوعی اعتماد ندارن و هنوز هم اونو یه تهدید جدی برای شغلشون نمیدونن :)

لینک یوتیوب

https://www.youtube.com/watch?v=8D8xQV9pgFw

@DevTwitter | <Rouzbeh/>
Forwarded from Bardiaism
توی لینوکس میخواید اپلیکیشنی که به کمک timezone موقعیت مکانی شمارو حدس میزنه و سرویسشو تحریم میکنه گول بزنید؟
یه environment variable هست به اسم TZ که اکثر فریم‌ورک‌ها ازش پیروی میکنن. اونو روی timezone مورد نظر تنظیم کنید و بعد برنامه رو اجرا کنید.

مثلا برای نیویورک:
export TZ=America/New_York

یا برای برلین:
export TZ=Europe/Berlin

روی خیلی برنامه‌ها جواب میده.

همچنین میتونید از اینجا لیست کاملی از مقادیر timezone رو ببینید:
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

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

https://ds-fall2025.github.io/sorting_algo/

https://github.com/hrnrxb/sorting_algo

از کلاس ساختمان داده دانشگاه آزاد شیراز هست که اگر خواستید میتونید از سایت زیر به محتوای درسی نابشون دسترسی پیدا کنید

https://ds-fall2025.github.io/ds-fall2025/

@DevTwitter | <hrnrxb/>
وسط نبودنش داره اذیتم می‌کنه

@DevTwitter
از چک کردن ده‌ها سورس و پلتفرم برای پیگیری اخبار، پیپرها و ریپوهای داغ اخیر در دنیای AI خسته شدی؟

من یه پروژه AI News Aggregator Bot زدم که با استفاده از RSS Feed، جدیدترین و دست اول‌ترین اخبار، مقالات علمی، پروژه‌ها و ریپوهای داغ اخیر AI رو جمع‌آوری می‌کنه و مستقیم می‌فرسته به کانال تلگرام!

اینجوری دیگه همه چیزو یه جا داری و لازم نیست هزار تا سورس جدا رو چک کنی.

لینک ریپو:
https://github.com/hrnrxb/AI-News-Aggregator-Bot

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

در آینده نزدیک هم می‌خوام یه سیستم Sentiment Analysis قوی بندازم پشتش تا بر اساس میزان هایپ بودن، مقدار کلیک شدن و احساسات اون خبر، بازم بهترین‌ها رو گلچین کنه و هوشمندتر عمل کنه!

@DevTwitter | <hrnrxb/>