Programmer City «شهر برنامه‌نویس»
1.15K subscribers
4.2K photos
954 videos
159 files
1.96K links
دنیای برنامه‌نویسی و مهندسی کامپیوتر🌈

📱ارتباط با ما: پیج اینستاگراممون🎈
IG: ProgrammerCity

لینک ناشناسمون:
https://t.me/BitnetChat_bot?start=sec-ehdiahcie
Download Telegram
🎯 حالا نوبت توعه!

اگر این خطا رو ببینی:

NullPointerException

اولین کاری که انجام میدی چیه؟

1️⃣ مستقیم راه‌حل رو از اینترنت کپی میکنم.
2️⃣میرم Stack Trace رو بررسی میکنم.
3️⃣ کل کدو از اول مینویسم. 😅
4️⃣ از یه نفر کمک میگیرم.

👇 شماره گزینه رو بنویس.

📌 فردا یک سؤال مهم‌تر:

چه زمانی واقعاً ارزش داره یک مشکل برنامه‌نویسی رو خودمون حل کنیم و چه زمانی بهتره از متخصص کمک بگیریم؟

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
2🔥1
🚀 بخش Case Study #2 | همه مشکلاتو نباید خودت حل کنی!

ساعت ۹ صبح:

یک خطا داری.

ساعت ۱۰:

هنوز خطا داری.

ساعت ۱۲:

سه Stack Overflow خوندی.

ساعت ۲:

پنج راه‌حل مختلف امتحان کردی.

ساعت ۳:

هنوز همون خطاست! 😂

اینجا یک سؤال مهم مطرح میشه:

🤔 آیا ادامه دادن همیشه نشونه پشتکاره؟

نه لزوماً.

گاهی اوقات حرفه‌ای‌ترین تصمیم اینه که بفهمی:

«این مشکلو خودم حل کنم یا از یک متخصص کمک بگیرم؟»

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1👏1
🧠 یک قانون ساده برای خودت داشته باش:

اول تلاش کن → بعد تحقیق کن → بعد کمک بگیر.

یعنی:

① مشکلو دقیق مشخص کن.

② همه Error و Stack Trace رو بخون.

③ مستندات و منابع معتبرو بررسی کن.

④ چند راه‌حل منطقیو امتحان کن.

⑤ اگر هنوز به نتیجه نرسیدی، کمک بگیر.

اما یک نکته مهم:

کمک گرفتن یعنی «من برنامه‌نویسی بلد نیستم».

نه!

کمک گرفتن یعنی داری زمانتو مدیریت میکنی.

اگه یک مشکل ۵ ساعت از وقتتو میگیره و یک متخصص میتونه در ۳۰ دقیقه علتشو پیدا کنه، شاید ادامه دادن بهترین تصمیم نباشه.

زمان هم یک منبعه.

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1👍1
💻 از امروز اگر در پروژه یا کدت به مشکل خوردی، میتونی روی ProgrammerCity حساب کنی.

ما در زمینه‌های مختلف برنامه‌نویسی میتونیم بهت کمک کنیم، از جمله:

🔹 بررسی و رفع خطاهای کد
🔹انجام Debugging و پیدا کردن علت مشکل
🔹 بررسی و اصلاح کد
🔹 کمک در بخش‌های مشخص پروژه
🔹 مشاوره و راهنمایی پروژه
🔹 بررسی ساختار و مشکلات فنی پروژه

📩 برای درخواست بررسی:

1️⃣ زبان/تکنولوژی پروژه رو بگو.
2️⃣ مشکلتو توضیح بده.
3️⃣ اگر Error داری، متن کاملشو بفرست.
4️⃣ در صورت امکان، بخش مربوط به کدو ارسال کن.

بعد از بررسی، بهت میگیم آیا میتونیم مشکلو برات حل کنیم و چکاری لازمه انجام بشه.

🎯 هدف ما اینه که به جای ساعت‌ها درگیر شدن با یک مشکل، سریعتر به یک راه‌حل درست برسی.

📨 برای مشاوره و بررسی پروژه:
[ID: @Fahimeh_riahi]

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1🔥1👏1
🛠 مشکل واقعی یک برنامه‌نویس | Case Study #2

یک جدول Users داریم:

👤 Ali — فعال
👤 Sara — غیرفعال
👤 Reza — فعال

حالا میخوایم فقط کاربران فعالو نمایش بدیم.

یک نفر این Query رو مینویسه:

SELECT * FROM Users
WHERE Status = Active;

اما...

💥 Error!

🤔 به نظرت مشکل کجاست؟

گاهی مشکل از پیچیده بودن Query نیست...

گاهی فقط یک جزئیات کوچیک باعث میشه کل کد کار نکنه!

امروز قدم‌به‌قدم بررسیش میکنیم. 👇

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1👏1
🔍 مشکل این Query چیه؟

SELECT * FROM Users
WHERE Status = Active;

در SQL اگر مقدار Active یک مقدار متنی باشه، باید داخل کوتیشن قرار بگیره:

شکل درست:

SELECT * FROM Users
WHERE Status = 'Active';

حالا Query میتونه مقدار موردنظرو به‌عنوان متن مقایسه کنه.

📌 اما نکته مهم‌تر اینه:

وقتی یک Query کار نمیکنه، فقط دنبال «نسخه درست» نباش!

اول بررسی کن:

🔹 نوع داده ستون چیه؟
🔹 مقدار واقعی داخل جدول چیه؟
🔹 متنو درست نوشتی؟
🔹 شرط WHERE دقیقاً چیو بررسی میکنه؟

🧠پس Debugging یعنی مرحله‌به‌مرحله دنبال علت گشتن؛ نه اینکه تصادفی کدهای مختلفو امتحان کنیم.


━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1👏1😍1
🎯 چالش SQL امروز

این Query چه کاربرانیو برمیگردونه؟

SELECT * FROM Users
WHERE Age >= 18
AND Status = 'Active';

1️⃣ تمام کاربران
2️⃣ فقط کاربران فعال
3️⃣ کاربران فعال با سن ۱۸ سال یا بیشتر
4️⃣ کاربران با سن کمتر از ۱۸ سال

👇 جواب درستو با شماره گزینه مشخص کن.

📅 فردا میریم سراغ یک مشکل رایج دیگه:

🐍 یک خطای Python که خیلی‌ها در اولین پروژه‌هاشون باهاش روبه‌رو میشن!

و دوباره یک مشکل واقعی رو با هم بررسی میکنیم.

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1🔥1👏1
🛠 مشکل واقعی یک برنامه‌نویس | Case Study #3

این کد Python رو ببین:

numbers = [1, 2, 3, 4]

for i in range(5):
print(numbers[i])

به نظرت چه اتفاقی میفته؟ 🤔

کد شروع به اجرا میکنه:

1
2
3
4

اما بعد...

💥 Error!

چرا؟

امروز میخوایم این خطا رو مثل یک Debugger بررسی کنیم. 👇

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1🔥1
🔍 بیایم قدم‌به‌قدم بررسی کنیم.
لیست ما فقط ۴ عضو داره:

numbers = [1, 2, 3, 4]

اندیس‌هاش:

0️⃣ → 1
1️⃣ → 2
2️⃣ → 3
3️⃣ → 4

اما:

range(5)

این اعداد رو تولید میکنه:

0, 1, 2, 3, 4

وقتی i به 4 میرسه، Python دنبال این میگرده:

numbers[4]

اما چنین عضوی وجود نداره!

💥 IndexError

یک راه‌حل:

for i in range(len(numbers)):
print(numbers[i])

یا ساده‌تر:

for number in numbers:
print(number)

📌 قبل از اینکه Error رو حفظ کنی، یاد بگیر علتشو پیدا کنی.

ارور، دشمن برنامه‌نویس نیست؛ یک سرنخه. 🕵️‍♀️

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
🏆1
🎯 حالا نوبت توئه!
اگر این خطا رو ببینی:

IndexError: list index out of range

اولین چیزی که بررسی میکنی چیه؟

1️⃣ تعداد اعضای لیست و Index مورد استفاده
2️⃣ نسخه Python
3️⃣ اتصال اینترنت
4️⃣ کل کد رو پاک میکنم و دوباره مینویسم 😅

👇 شماره گزینه رو بنویس.

💻 اگر تو هم روی پروژه‌ات با Error یا Bug درگیری، میتونی اطلاعات مشکلت رو برای ProgrammerCity بفرستی تا بررسی کنیم.

فقط این‌ها رو ارسال کن:

🔹 زبان یا تکنولوژی مورد استفاده
🔹 توضیح مشکل
🔹 متن کامل Error
🔹 بخش مرتبط کد

📩 گاهی فقط یک جزئیات کوچیک، علت مشکلیه که ساعت‌ها درگیرشی.

فردا میتونیم بریم سراغ یک موضوع جذاب‌تر:

🔐 یک اشتباه رایج در پروژه‌های واقعی که میتونه باعث مشکل امنیتی بشه!

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
💯1
🛠 مشکل واقعی یک برنامه‌نویس | Case Study #4
🔐 «فقط برای تست»؛ یکی از خطرناک‌ترین جمله‌ها در برنامه‌نویسی!


فرض کن داری یک پروژه میسازی که به یک API وصل میشه.

برای تست، این اطلاعات رو داخل کدت میذاری:

API_KEY = "my-secret-key"

همه‌چیز درست کار میکنه.

پروژه رو روی Git هم Push میکنی.

چند روز بعد متوجه میشی:

😐 «صبر کن... API Key هنوز داخل Git هست!»

و اینجاست که یک اشتباه خیلی ساده میتونه تبدیل به یک مشکل امنیتی واقعی بشه. 🚨

امروز ببینیم چرا نباید اطلاعات حساس رو مستقیم داخل کد قرار بدیم.

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1🔥1
🔐 اطلاعات حساس مثل:

🔑 API Key
🔑 Password
🔑 Database Credentials
🔑 Access Token

نباید به شکل مستقیم داخل Source Code قرار بگیرن.

بد:

API_KEY = "my-secret-key"

چرا؟

چون ممکنه:

📌 کد وارد Git بشه.

📌 Repository اشتباهی Public بشه.

📌 فرد دیگری به پروژه دسترسی پیدا کنه.

📌 حتی بعد از حذف کردن، اطلاعات حساس در History باقی بمونه.

راه بهتر استفاده از روش‌هایی مثل:

Environment Variables
Secret Management
فایل‌های تنظیمات خارج از Repository

هست.

📌 یک قانون ساده:

اگر چیزی Secret است، نباید بخشی از Source Code معمولی باشه.

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1🔥1
🎯 یک سؤال مهم:

اگر متوجه بشی Password دیتابیس به اشتباه داخل GitHub قرار گرفته، اولین کار درست چیه؟

1️⃣ فقط Password رو از فایل پاک میکنم.
2️⃣ Repository رو Delete میکنم.
3️⃣ Credential رو تغییر/منقضی میکنم و بعد مشکل را بررسی میکنم.
4️⃣ کاری نمیکنم چون Repository خصوصی بوده.

👇 شماره گزینه رو بنویس.

📌 فردا میریم سراغ یک موضوع خیلی واقعی‌تر در کار تیمی:

🐞 کدی که کار میکنه، ولی هنوز خوب نیست!

میبینیم Code Review چطور میتونه چنین مشکلاتی رو پیدا کنه.

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1🏆1
🛠 مشکل واقعی یک برنامه‌نویس | Case Study #5
🐞 کد کار میکنه؛ پس چرا باید تغییرش بدیم؟

فرض کن این کدو نوشتی:

def calculate_total(price, quantity):
return price * quantity

تستش میکنی.

جواب درسته.

پس Task رو انجام دادی.

پس میگی:

«تموم شد!»

اما وقتی Pull Request میسازی، هم‌تیمیت یک Comment میذاره:

💬 «Can we improve this?»

😐

«ولی کد که درست کار میکنه!»

دقیقاً اینجاست که Code Review اهمیت پیدا میکنه.

چون:

درست کار کردن ≠ بهترین راه‌حل ممکن

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1
👀 در Code Review فقط دنبال Bug نمیگردیم.

ممکنه بررسی کنیم:

🔹 کد خواناست؟
🔹 اسم متغیرها واضح هست؟
🔹 منطق بیش از حد پیچیده نیست؟
🔹 کد تکراری وجود داره؟
🔹 خطاهای احتمالی مدیریت شدن؟
🔹 تست مناسب وجود داره؟

مثلاً این:

x = p * q

کار میکنه.

ولی این:

total_price = product_price * quantity

برای کسی که فردا کدو میخونه، خیلی واضح‌تره.

📌 کدی که امروز مینویسی، فقط برای کامپیوتر نیست.

یک انسان دیگه هم باید بتونه اونو بفهمه.

و Code Review دقیقاً برای همین مهمه.

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1
🎯 چالش ProgrammerCity

کدوم یکی خواناتر و قابل‌فهم‌تره؟

1️⃣x = p * q

2️⃣total_price = product_price * quantity

3⃣فرقی نمیکنه؛ هر دو یک نتیجه میدن.

👇 شماره گزینه رو بنویس و اگر دوست داشتی بگو چرا.

💡 یک نکته مهم:

گاهی Code Review باعث میشه چیزی رو اصلاح کنیم که اصلاً Bug نیست؛ فقط باعث میشه کد خواناتر، قابل نگهداری‌تر و بهتر بشه.

📅 در قسمت بعدی میریم سراغ یک سؤال مهم:

اگر Code Review گرفتیم و با نظر Reviewer موافق نبودیم، چطور حرفه‌ای برخورد کنیم؟

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1
🛠 مشکل واقعی یک برنامه‌نویس | Case Study #6
💬 اگر با نظر Reviewer موافق نباشیم چی؟

میری Pull Request رو باز میکنی.

یکی از هم‌تیمی‌ها نوشته:

💬 «I think we should change this approach.»

اما تو مطمئنی روشی که استفاده کردی درسته.

😐 حالا چی؟

بگی:

«نه، روش من بهتره.»

یا بدون فکر نظرشو قبول کنی؟

هیچ‌کدوم!

چون یکی از مهارت‌های مهم کار تیمی اینه که بتونی درباره کدت گفت‌وگو کنی، نه اینکه ازش دفاع احساسی کنی.

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1
💡 وقتی با یک نظر در Code Review موافق نیستی، اول سعی کن بفهمی دلیل پیشنهاد چیه.

مثلاً به جای:

«ولی این کد درست کار میکنه.»

بگو:

«میشه بگی چه مشکلی ممکنه با این روش داشته باشیم؟»

یا:

«من این روش رو به خاطر X انتخاب کردم؛ به نظرت روش پیشنهادی چه مزیتی داره؟»

حالا ممکنه یکی از این اتفاق‌ها بیفته:

🔹 متوجه میشی Reviewer نکته‌ای دیده که تو ندیدی.

🔹 متوجه میشی دو راه‌حل مختلف وجود داره.

🔹 یا حتی ممکنه بعد از توضیح، مشخص بشه پیشنهاد اولیه مناسب این شرایط نیست.

📌 پس Code Review مسابقه «چه کسی درست میگه؟» نیست.

هدفش اینه که بهترین تصمیم برای پروژه گرفته بشه.

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1
🎯 یک موقعیت واقعی:

یه Reviewer روی کدت Comment گذاشته و پیشنهاد داده یک بخشو تغییر بدی.

تو فکر میکنی روش فعلی بهتره.

چه کار میکنی؟

1️⃣ میگم «کد من مشکلی نداره.» 😐
2️⃣ بدون بررسی پیشنهادش رو انجام میدم.
3️⃣ دلیل انتخابمو توضیح میدم و نظرشو درباره راه‌حل‌ها میپرسم.
4️⃣ یا Comment رو نادیده میگیرم.

👇 شماره گزینه رو بنویس.

📅 فردا میخوایم یک قدم جدی‌تر برداریم:

🔎 یک قطعه کد واقعی رو با هم Code Review میکنیم و ببینیم چه ایرادهایی میشه از داخلش پیدا کرد.

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1
🛠 مشکل واقعی یک برنامه‌نویس | Case Study #7
🔎 بیایم یک کد واقعی رو Code Review کنیم!

🔎 Code Review Challenge

فرض کن یکی از اعضای تیم این کد Python رو برای Pull Request فرستاده:

def get_user(users, id):
for user in users:
if user["id"] == id:
return user
return None


def show_user(users, id):
user = get_user(users, id)
print(user["name"])

کد اجرا میشه.

اما آیا واقعاً مشکلی نداره؟

🤔 اگر Reviewer این کد باشی، چه چیزی توجهتو جلب میکنه؟

فعلاً جوابو نمیگیم.

خودت نگاهش کن و حداقل یک مشکل احتمالی پیدا کن. 👇

━━━━━━━━━━━━━━━━━━
°⋆⸜ 𝙋𝙧𝙤𝙜𝙧𝙖𝙢𝙢𝙚𝙧'𝙨 𝘾𝙞𝙩𝙮 ⸝⋆°
➤ Code • Learn • Build
@programercity
━━━━━━━━━━━━━━━━━━
1