TGViewer
Channel Public Channel
برنامه نویسی

برنامه نویسی

@rezadolati01

لیست گروه های برنامه نویسی:

🍁 @programming_list
Subscribers
5.35K
Photos
1.8K
Videos
1.2K
Links
332
Recent Posts 20 shown
Post #4698 189
🌐 دانستنی فنی

🔸 عدد ۵۰۰,۰۰۰ دلار برای اصلاح یک خط کد دیتابیس!

🔸 آیا می‌دانستید در سیستم رزرو بلیت هواپیمایی صابر (Sabre) و سامانه بین‌المللی بانکداری مرکزی (SWIFT)، هنوز کدهایی از دهه ۱۹۶۰ به زبان اسمبلی IBM و FORTRAN اجرا می‌شوند که هیچ انسانی حق دستکاری آن‌ها را ندارد؟

🔸 چرا این سیستم‌ها بازنویسی نمی‌شوند؟
در سال ۲۰۱۲، یک بانک بزرگ استرالیایی تصمیم گرفت سیستم Core Banking خود را از کدهای قدیمی بازنویسی کند؛ این پروژه ۷۵۰ میلیون دلار هزینه برداشت و با صدها اختلال روبرو شد!

🔸 جالب‌تر اینکه:
در تراکنش‌های بین‌بانکی، میلیاردها تراکنش مالی در روز با سیستمی به نام COBOL مدیریت می‌شوند. طبق آمار رویترز، حدود ۴۳٪ از سیستم‌های بانکی هسته در آمریکا روی COBOL اجرا می‌شوند و به ازای هر سال بازنشستگی برنامه‌نویسان مسلط به این زبان، حقوق متخصصان نگهدارنده آن تا ۲ برابر افزایش پیدا می‌کند!

🆔 @rezadolati01
Post #4697 212
🌐 خروجی دقیق قطعه کد زیر در محیط استاندارد مرورگر/Node.js چیست؟

async function test() {
console.log(1);
await null;
console.log(2);
}

console.log(3);
test();
console.log(4);

Promise.resolve().then(() => console.log(5));

setTimeout(() => console.log(6), 0);

🔸 گزینه‌ها:
1️⃣ 3, 1, 2, 4, 5, 6
2️⃣ 3, 1, 4, 2, 5, 6
3️⃣ 3, 1, 4, 5, 2, 6
4️⃣ 1, 3, 4, 2, 5, 6


🆔 @rezadolati01
Post #4696 230
🌐 آمار رسمی Stack Overflow و GitHub از وضعیت هوش مصنوعی در سال جاری:

🔸طبق گزارش رسمی پیمایش سالانه توسعه‌دهندگان (Stack Overflow Developer Survey):

🔸 بیش از ۷۶٪ از برنامه‌نویسان هم‌اکنون از ابزارهای هوش مصنوعی در روند روزانه توسعه استفاده می‌کنند یا قصد استفاده از آن را دارند.

🔸 با این حال، ۴۳٪ از برنامه‌نویسان حرفه‌ای نسبت به دقت و امنیت کدهای تولیدی توسط مدل‌های هوش مصنوعی هنوز ابراز بی‌اعتمادی می‌کنند.

🔸 ۵۲٪ از مهندسان ارشد اعلام کرده‌اند بیشترین چالش کنونی تیم‌ها، «هزینه زمانی دیباگ کردن کدهای AI» است که در نگاه اول درست به نظر می‌رسند اما خطاهای پنهان معماری و امنیتی دارند.

🔸 منابع معتبر برای مطالعه بیشتر:
• گزارش جامع استک اورفلو: stackoverflow.co/labs/developer-survey
• گزارش فصلی توسعه‌دهندگان گیت‌هاب: github.blog/news-insights/octoverse

🔸 شما تا چه حد به کدی که AI مینویسه اعتماد میکنید؟

🆔 @rezadolati01
The GitHub Blog Octoverse Archives Insights into the state of open source on GitHub.
Post #4695 238
🌐 ۴ ابزار ضروری و رایگان که کارتون رو چند برابر سریع‌تر می‌کنه:

🔹 1. Ray.so
کدهاتون رو با تم‌های زیبا و خروجی باکیفیت تبدیل به عکس کنید (عالی برای پست، ارائه و مستندات).

🔹 2. DevDocs.io
تمام مستندات و داکیومنت‌های زبان‌ها و فریم‌ورک‌های معروف رو یک‌جا، سریع و حتی در حالت آفلاین داشته باشید.

🔹 3. Regex101.com
بهترین و سریع‌ترین محیط برای تست، خطایابی و یادگیری عبارات منظم (Regular Expressions).

🔹 4. OverAPI.com
مجموعه کامل چیت‌شیت‌ها (Cheatsheet) برای تمام زبان‌ها و ابزارهایی که روزمره باهاشون سروکار دارید.

🆔 @rezadolati01
Post #4694 247
🌐 بهینه‌سازی و کدهای خواناتر در پایتون با Walrus Operator (:=)

🔸 آشنایی با Walrus Operator (:=)؛ چطور کدهای جمع‌وجورتری بنویسیم؟

🔸 عملگر والروس (:=) که از پایتون ۳.۸ معرفی شد، به شما اجازه میده هم‌زمان با ارزیابی یک عبارت، مقدار اون رو به یک متغیر اختصاص بدید.

❌ روش سنتی (کد طولانی‌تر):

line = file.readline()
while line != "":
print(line.strip())
line = file.readline()

✅ روش مدرن با Walrus Operator:

while (line := file.readline()) != "":
print(line.strip())

📌 یک مثال کاربردی دیگر در شرط‌ها:

# به جای اینکه دو بار طول لیست یا رشته چک بشه:
if (n := len(data)) > 10:
print(f"طول لیست بزرگ است: {n} آیتم")

🔹 به چه دردی میخوره؟
خوانایی بیشتر و جلوگیری از اجرای محاسبات تکراری.

🆔@rezadolati01
  • ❤ 1
Post #4693 294
🌐 چرا جستجو در دیتابیس بدون Index کند است؟ (Sequential Scan)


🔸 ​وقتی جدولی در دیتابیس (مثلاً با ۱ میلیون رکورد) داشته باشید و روی فیلد email ایندکس نساخته باشید، دیتابیس برای پیدا کردن یک رکورد مجبور است تک‌تک سطرها را از بالا تا پایین بررسی کند که به آن Sequential Scan (یا Full Table Scan) می‌گویند و پیچیدگی زمانی آن O(N) است.


🔸 ​ساختمان داده Index (معمولاً بر پایه درخت B-Tree) ساختاری مشابه فهرست کتاب دارد که پیچیدگی جستجو را به O(\log N) کاهش می‌دهد.
-- وضعیت کند برای جدول بزرگ (بررسی تک تک سطرها)
SELECT * FROM users WHERE email = 'target@example.com';

-- راه حل: ساخت ایندکس برای جستجوی فوری
CREATE INDEX idx_users_email ON users(email);

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

🆔 @rezadolati01
Post #4691 292
🌐 تزریق وابستگی (Dependency Injection) به زبان ساده


🔸 وقتی کلاس‌ها یا ماژول‌ها مستقیماً به همدیگر وابسته باشند (Tight Coupling)، تست کردن و تغییر دادن کد عذاب‌آور می‌شود. اصول Dependency Injection (DI) یعنی شیء‌های مورد نیاز را از بیرون به کلاس تزریق کنیم، نه اینکه کلاس خودش آن‌ها را بسازد.

# ❌ روش بد و سخت برای تست (وابستگی سخت‌محور)
class MySQLDatabase:

def connect(self):
return "Connected to MySQL"


class UserService:

def __init__(self):
self.db = MySQLDatabase() # وابستگی درون‌کلاسی


# ✅ روش صحیح با Dependency Injection
class PostgreSQLDatabase:

def connect(self):
return "Connected to PostgreSQL"


class UserServiceDI:

def __init__(self, db_driver):
self.db = db_driver # وابستگی تزریق می‌شود (هر دیتابیسی می‌تواند باشد)

def get_user_data(self):
return self.db.connect()


# تزریق وابستگی هنگام ساخت نمونه
postgres_db = PostgreSQLDatabase()
service = UserServiceDI(db_driver=postgres_db)
print(service.get_user_data())

🆔 @rezadolati01
Post #4690 354
🌐 مقدمه جالبی از اینکه موتورهای هوش مصنوعی شطرنج چگونه ساخته می‌شوند و چه تفکری پشت پیاده‌سازی آنها نهفته است.

🔸https://www.chessengines.org

🆔 @rezadolati01
Post #4689 331
🌐 ایده‌مپوتنسی (Idempotency) یعنی چی و چرا باید بدونیم؟

🔸 فرض کن روی دکمه‌ی «پرداخت» اپلیکیشن دوبار پشت سر هم کلیک می‌کنی. اگر سیستم تو Idempotent نباشد، ممکنه دو بار از حسابت پول کم بشه!

🔸 مفهوم ایده‌مپوتنسی یعنی: اجرای چندباره‌ی یک عملیات، دقیقاً همان نتیجه‌ی اجرای بار اول را داشته باشد و تغییر اضافه‌ای ایجاد نکند.

🔸 مثال خوب (Idempotent): تنظیم کردن وضعیت سفارش به «ارسال شده» (SET status = 'shipped'). هرچند بار هم این کوئری اجرا بشه، وضعیت همون می‌مونه.

🔸 مثال بد (Not Idempotent): کم کردن موجودی انبار (UPDATE stock = stock - 1). هر بار اجرا بشه، یک واحد دیگه کم میشه!

🔸 طراحی APIها و دیتابیس‌ها بدون در نظر گرفتن این اصل، سیستم رو در برابر خطاهای شبکه بسیار آسیب‌پذیر می‌کنه.

🆔 @rezadolati01
  • ❤ 1
Post #4688 321
🌐 چرا دیتابیس گاهی کند می‌شود؟ (قدرت ایندکس‌ها با یک مثال ساده)

🔸 فرض کن یک جدول به نام users داری که یک میلیون رکورد کاربر توش ذخیره شده. وقتی می‌خوای کاربر با ایمیل خاصی رو پیدا کنی، دیتابیس مجبور میشه کل جدول رو سطر به سطر نگاه کنه (به این میگن Full Table Scan). حالا اگر روی ستون email یک Index بسازیم، دیتابیس مثل فهرست یک کتاب عمل می‌کنه و در کسری از ثانیه رکورد رو پیدا میکنه.

🔸مثال SQL:

-- وضعیت بدون ایندکس: جستجوی خط به خط کل جدول (کند در حجم بالا)
SELECT * FROM users WHERE email = 'amir@example.com';

-- راه‌حل: ساخت ایندکس روی ستون جستجو
CREATE INDEX idx_user_email ON users(email);

-- حالا کوئری بالا با سرعت فوق‌العاده بالا و با الگوریتم B-Tree اجرا میشه!

🔸 نکته کلیدی: ایندکس‌ها سرعت SELECT را فوق‌العاده زیاد می‌کنند، اما عملیات‌های INSERT و UPDATE را کمی کندتر می‌کنند؛ پس روی هر ستونی نباید ایندکس ساخت.

🆔 @rezadolati01
  • ❤ 1
Post #4687 336
🌐 باگی که نزدیک بود کل وب رو فلج کنه!

🔸 سال ۲۰۰۶، برنامه‌نویس‌ها متوجه شدند الگوریتم جستجوی باینری (Binary Search) که دهه‌ها تو کتاب‌های دانشگاهی تدریس می‌شد و توی هزاران نرم‌افزار بزرگ استفاده می‌شد، یک باگ پنهان داشت!

🔸 ماجرا چی بود؟ محاسبه‌ی میانگین دو عدد به صورت (low + high) / 2 زمانی که عدد high و low خیلی بزرگ می‌شدند، باعث سرریز عدد (Integer Overflow) می‌شد و برنام رو کرش می‌داد یا تو حلقه‌ی بی‌نهایت می‌انداخت.


🔸 این فکت نشون میده حتی پایه‌ای‌ترین و ساده‌ترین کدهایی که سال‌ها فکر می‌کنیم بی‌نقص هستند، ممکنه سوراخ‌های امنیتی عمیقی داشته باشن.

🆔 @rezadolati01
Post #4686 347
🌐 به نظر شما پیچیدگی زمانی (Time Complexity) تکه کد زیر چقدره؟

def solve(n):
count = 0
i = 1
while i < n:
count += 1
i *= 2
return count

🔸گزینه ها:

الف) O(N)
ب) O(N^2)
ج) O(\log N)
د) O(1)

🆔 @rezadolati01
  • ❤ 3
Post #4685 352
🌐 تله‌ای که اکثر برنامه‌نویسان تازه‌کار (و حتی حرفه‌ای) توش می‌افتند!

🔸 دونالد کنوث جمله‌ی معروف و درخشانی داره: "بهینه‌سازی زودهنگام، ریشه‌ی تمام شرارت‌ها (یا مشکلات) در برنامه‌نویسیه."

🔸خیلی وقت‌ها قبل از اینکه پروژه‌ای حتی یک کاربر واقعی داشته باشه، ساعت‌ها وقت می‌گذاریم تا الگوریتم رو از O(N) به O(\log N) برسونیم یا از ساختارهای داده‌ی فوق‌پیچیده استفاده کنیم.

🔸 نتیجه چی میشه؟ کدی که خواندن، تست کردن و تغییر دادنش سخت شده، در حالی که گلوگاه (Bottleneck) اصلی جای دیگهٔ دیگه‌ای (مثلاً توی دیتابیس یا شبکه) قرار داره.

🔸 قانون طلایی: اول کد رو تمیز و خوانا بنویس، بعد با ابزار مانیتورینگ (Profiler) ببین مشکل واقعی کجاست و همون بخش رو بهینه‌سازی کن.

🆔 @rezadolati01
Post #4684 341

Forwarded from هوش مصنوعی (Ray)

🔆 چطوری بدون اینترنت و رایگان، روی لپ‌تاپت مدل‌های پیشرفته هوش مصنوعی اجرا کنی؟

🔹 خیلی وقت‌ها بخاطر تحریم‌ها، قطعی اینترنت، هزینه‌های اکانت پریمیوم یا حفظ حریم خصوصی داده‌ها، نمی‌تونیم یا نمی‌خوایم اطلاعاتمون رو بفرستیم روی سرورهای OpenAI یا Anthropic.
چاره کار؟ Local AI یا اجرای محلی مدل‌هاست!

🔹 ۳ ابزار برتر برای اجرای آفلاین LLMها روی سیستم شخصی:

1️⃣ Ollama (پادشاه سادگی و خط فرمان):
مثل Docker برای مدل‌های هوش مصنوعی عمل می‌کنه.
با یک دستور ساده میتونی مدل‌های خفنی مثل Llama 3 یا DeepSeek یا Qwen رو دانلود و توی ترمینال باهاش چت کنی.
💻 دستور نصب و اجرا:
ollama run llama3


2️⃣ LM Studio (محیط گرافیکی شبیه ChatGPT):
اگه با ترمینال حال نمیکنی، این ابزار یه UI فوق‌العاده شبیه ChatGPT بهت میده.
بهت اجازه میده مدل‌های مختلف (با پسوند GGUF) رو سرچ، دانلود و تست کنی.
قابلیت اتصال API محلی به ادیتورهایی مثل VS Code رو هم داره!

3️⃣ Jan.ai (اپلیکیشن متن‌باز و سبک):
کاملاً Open-source و بسیار خوش‌دست.
نیازی به تنظیمات پیچیده نداره و روی ویندوز، مک و لینوکس با چند کلیک نصب میشه.

🔹 حداقل سیستم مورد نیاز چیه؟

رم (RAM): حداقل ۱۶ گیگابایت (برای مدل‌های ۸ میلیارد پارامتری مثل Llama-3-8B).
کارت گرافیک (GPU): داشتن گرافیک Nvidia با VRAM بالای ۶ تا ۸ گیگ سرعت رو چند برابر می‌کنه، اما روی CPU هم اجرا می‌شن!

🔹 چرا این روش آینده داره‌؟
داده‌های شخصی شما هیچ وقت از کامپیوترتون خارج نمیشه، صفر درصد قطعی داره و کاملاً رایگانه.

🦾 @ai_inf
  • ❤ 1
Post #4683 313

Forwarded from PyCoders (پایتون)

🔆 تکنیک ناشناخته و حرفه‌ای functools.singledispatch (اورلود کردن توابع در پایتون بدون if/elseهای طولانی!)

​🔹 چطوری تو پایتون تابع Overloading تمیز بنویسیم؟

​خیلی وقت‌ها پیش میاد که میخوایم یه تابع بستگی به اینکه چه جنس ورودی‌ای (String, List, Dict...) بهش میدیم، رفتار متفاوتی داشته باشه. روش مبتدیانه چیه؟ نوشتن یه سلسله if isinstance(...) طولانی!

​اما روش سینیورها توی پایتون استفاده از singledispatch از کتابخونه استاندارد functools هست.

from functools import singledispatch

@singledispatch
def process_data(data):
raise NotImplementedError("این تایپ پشتیبانی نمیشه!")

@process_data.register(str)
def _(data):
return f"متن پردازش شد: {data.upper()}"

@process_data.register(list)
def _(data):
return f"لیست پردازش شد با طول: {len(data)}"

@process_data.register(dict)
def _(data):
return f"کلیدهای دیکشنری: {list(data.keys())}"

# تست تابع
print(process_data("hello")) # متن پردازش شد: HELLO
print(process_data([1, 2, 3])) # لیست پردازش شد با طول: 3

🔹به چه دردی میخوره؟

کد بسیار کپسوله، خلوت و خوانا میشه.
اصل Open/Closed رعایت میشه (میتونی بعداً بدون دست زدن به تابع اصلی، تایپ جدید اضافه کنی).

🐍 @python_rd
Post #4682 398
🌐 درس‌های رشته کامپیوتر دانشگاه هلسینکی فنلاند که به رایگان در این سایت قرارداده شده‌اند و شامل حوزه‌های مختلفی می‌شود. از امنیت و هوش مصنوعی گرفته تا tdd و کلی مبحث مرتبط به devops

🔸https://www.mooc.fi

Selected Courses:
https://www.elementsofai.com
https://fullstackopen.com/en
https://www.elementsofai.com
https://cybersecuritybase.mooc.fi

🆔 @rezadolati01
  • ❤ 2
Post #4680 475
🌐 ابزار فوق‌العاده Command Line برای جستجو در کد (ripgrep).

🔸 سریع‌ترین ابزار سرچ در کد که از VS Code هم سریع‌تره!

اگر روی پروژه‌های بزرگ کار میکنی و جستجوی فایل‌ها یا عبارات داخل کد کلافت میکنه، ابزار ripgrep (rg) زندگی‌ت رو عوض میکنه.


🔸 چرا ripgrep؟

با زبان Rust نوشته شده و سرعتش در حد نور هست!

فایل‌های داخل .gitignore رو به صورت خودکار فیلتر میکنه تا سرچ الکی انجام نشه.

نسبت به grep یا سرچ داخلی ادیتورها مصرف رم بسیار کمتری داره.

🔸 نحوه نصب و استفاده ساده:

# نصب روی مک یا لینوکس
brew install ripgrep

# سرچ یک عبارت در کل پروژه
rg "process_user_data"

🆔 @rezadolati01
Post #4679 420
🌐 سندروم ایمپاستر (خودکم‌بینی) و راهکار مواجهه باهاش.

🔸 «من هیچی بلد نیستم و بقیه فک میکنن من برنامه‌نویسم!» 🎭

🔸اگر تا حالا موقع نگاه کردن به کدهای یه برنامه‌نویس دیگه حس کردی تو هیچی بلد نیستی و اشتباهی وارد این شغل شدی، تبریک میگم! تو درگیر Imposter Syndrome هستی (چیزی که حتماً بالای ۷۰٪ برنامه‌نویس‌های دنیا تجربه کردن).

🔸 چطور باهاش بجنگیم؟

هیچکس همه چیز رو حفظ نیست: برنامه نویس ارشد با ۱۰ سال سابقه هم روزی ۱۰ بار گوگل و StackOverflow رو باز میکنه.

کدهای قدیمی‌ت رو ببین: کد ۶ ماه پیشت رو با امروز مقایسه کن، نه با کد یه برنامه‌نویس ۱۵ سال سابقه!

یادگیری منهای مقایسه: تو صنعت نرم‌افزار، فریم‌ورک‌ها روزانه تغییر میکنن؛ قراره همیشه شاگرد بمونیم.

🆔 @rezadolati01
  • 👍 4
Post #4678 495
🌐 الگوی Circuit Breaker (قطع‌کننده مدار) در سیستم‌های توزیع‌شده


🔸 مشکل: فرض کن سرویس شما داره به یک API خارجی (مثل درگاه پرداخت یا سرویس پیامک) درخواست می‌فرسته. اگر اون سرویس قطعی پیدا کنه، تمام Request های کاربرای شما توی صف منتظر می‌مونن، ریسورس‌های سرور (مثل RAM و CPU) پر میشه و کل سیستم شما هم دان (Down) میشه!

🔸 راه حل: الگوی Circuit Breaker مثل فیوز برق خونه عمل می‌کنه:

حالت Closed: همه چیز عادیه و درخواست‌ها رد میشن.

حالت Open: اگر تعداد خطاها از یک حد مجاز (مثلاً ۱۰ خطای پشت هم) بالاتر بره، فیوز می‌پره! دیگه هیچ درخواستی به سرویس مقصد فرستاده نمیشه و سریعاً یک پاسخ جایگزین (Fallback) به کاربر داده میشه تا سرور فلج نشه.

حالت Half-Open: بعد از چند دقیقه، سیستم یک درخواست تست می‌فرسته؛ اگر موفق بود فیوز وصل میشه، وگرنه باز می‌‌مونه.

🔸نتیجه: جلوی Cascading Failure (خراب شدن زنجیره‌ای سرویس‌ها) رو می‌گیره.

🆔 @rezadolati01
  • 👍 1
Older posts →

About this channel

How can I read @rezadolati01 without a Telegram account?
TGViewer shows the public web preview Telegram publishes for برنامه نویسی: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does برنامه نویسی have?
برنامه نویسی (@rezadolati01) has 5.35K subscribers on Telegram, refreshed roughly every 30 minutes.
Does برنامه نویسی know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →