</homeCode>
Photo
تصور کن داری با ماشین با سرعت ۱۲۰ تا توی اتوبان میرونی، بعد همونلحظه بدون اینکه ماشین رو نگه داری، موتور معمولیش رو درمیاری و با یه موتور جت عوض میکنی! پایتون دقیقاً چنین غولیه.
یعنی چی کدهای خودش رو موقع اجرا تغییر میده؟
توی زبانهای قدیمیتر یا سختگیرتر، وقتی کد رو اجرا میکنی همهچیز قفل میشه و برنامه فقط طبق همون ریل اولیه پیش میره. اما توی پایتون، «کد» خودش مثل یک خمیر بازی توی حافظهست. یعنی برنامه موقعی که داره کارش رو انجام میده، میتونه دست ببره توی دل خودش، رفتار توابعش رو کلاً عوض کنه یا حتی کدهای جدید بسازه و اجرا کنه!
به این خصوصیت اصطلاحاً میگن متاپروگرمر (Metaprogramming) یا توی برخی موارد مانکی پچینگ (Monkey Patching).
📚 منابع معتبر چی میگن؟
طبق مستندات رسمی پایتون (docs.python.org) و کتاب مرجع Fluent Python (انتشارات O'Reilly)، پایتون همهچیز (حتی خود توابع و کلاسها) رو به چشم Object میبینه. این معماری به برنامه اجازه میده با ابزارهایی مثلexec()
یا دستکاری مستقیم__code__
توابع، ساختار منطقی خودش رو در زمان اجرا (Runtime) بازنویسی کنه.
💻 یه مثال خیلی ساده و ملموس:
فرض کن یه تابع داری که کارش جمع کردنه، اما وسط اجرا تصمیم میگیری کلاً رفتارش رو به ضرب تغییر بدی:
# تابع اولیه که جمع میکنه
def do_math(a, b):
return a + b
print(do_math(2, 3)) # خروجی: 5
# حالا موقع اجرا، کدِ تابع رو بازنویسی میکنیم!
code_str = "def do_math(a, b): return a * b"
exec(code_str)
# بدون متوقف شدن برنامه، همون تابع حالا ضرب میکنه!
print(do_math(2, 3)) # خروجی: 6
دیدی چی شد؟ بدون اینکه برنامه رو ببندیم یا از اول اجرا کنیم، ماهیت کدمون وسط کار عوض شد!
❤4
<Devdocs />
Photo
اگه برگردیم ب سال ۱۴۰۰
ب یکی بگیم دلار میرسه به ۲۰۰ هزار تومن
ب ریشمون میخندید😂💔
ب یکی بگیم دلار میرسه به ۲۰۰ هزار تومن
ب ریشمون میخندید😂💔
💔10❤3
اینجا ۱۰ دلیل مهم رو بررسی میکنیم که چرا اول باید پایههای جاوااسکریپت رو محکم کنید:
۱. ریکت جادو نیست، همون جاوااسکریپته!
🪄
۲. کابوس دیباگ کردن و پیدا کردن ارورها 🐛
۳. گیر کردن تو متدهای آرایه و آبجکت 🔄
۴. اشتباه گرفتن سینتکس ES6 با امکانات ریکت 🧩
۵. عدم درک عمیق هوکها (Hooks) 🪝
۶. مشکل در ارتباط با سرور و APIها 🌐
۷. رندرهای اضافی و افت پرفورمنس 🚀
۸. ندانستن نحوه کار واقعی مرورگر (DOM) 🖥️
۹. وابستگی مطلق به یک تکنولوژی خاص ⛓️
۱۰. رد شدن در مصاحبههای استخدامی 💼
۱. ریکت جادو نیست، همون جاوااسکریپته!
🪄
ریکت یک زبان جدید نیست، فقط یک کتابخونهست. اگر قوانین و منطق اصلی جاوااسکریپت رو ندونید، درک مفاهیم ریکت براتون مثل حفظ کردن یک متن به زبان بیگانه میشه.
۲. کابوس دیباگ کردن و پیدا کردن ارورها 🐛
وقتی کُد ارور میده، اگه JS رو خوب بلد نباشید، اصلا متوجه نمیشید این ارور مربوط به خود ریکت هست یا به خاطر یک اشتباه ساده تو منطق جاوااسکریپت به وجود اومده. این یعنی ساعتها سردرگمی بیدلیل.
۳. گیر کردن تو متدهای آرایه و آبجکت 🔄
قلب تپندهی ریکت، چرخیدن روی دادههاست. اگر روی متدهایی مثلmap،filterوreduceتسلط نداشته باشید، برای رندر کردن یک لیست ساده هم به مشکل میخورید.
۴. اشتباه گرفتن سینتکس ES6 با امکانات ریکت 🧩
خیلی از تازهکارها فکر میکنن ساختارهایی مثل Destructuring (باز کردن آبجکتها) یا Spread Operator (...) مخصوص ریکت هستن! در حالی که اینها ابزارهای مدرن جاوااسکریپت هستن که در تمام پروژهها کاربرد دارن.۵. عدم درک عمیق هوکها (Hooks) 🪝
هوکهای پرکاربردی مثلuseEffectوuseStateکاملا بر اساس مفاهیم عمیق جاوااسکریپت مثل Closure و Scope کار میکنن. بدون درک این مفاهیم، استفاده از هوکها همیشه براتون یک کار کپیپیست و طوطیوار میمونه.
۶. مشکل در ارتباط با سرور و APIها 🌐
در هر پروژهای باید اطلاعات رو از بکاند بگیرید. اگر مفهوم برنامه نویسی ناهمگام (Asynchronous JS)،Promiseها وasync/awaitرو به خوبی درک نکرده باشید، هندل کردن دیتای سمت سرور حسابی کلافهتون میکنه.
۷. رندرهای اضافی و افت پرفورمنس 🚀
برای بهینهسازی اپلیکیشنهای ریکت و جلوگیری از پردازشهای الکی، باید تفاوت بین Reference Typeها (مثل آبجکتها و آرایهها) و Primitive Typeها (مقادیر اولیه) رو در جاوااسکریپت کاملاً درک کرده باشید.
۸. ندانستن نحوه کار واقعی مرورگر (DOM) 🖥️
با اینکه ریکت از ابزاری به اسم Virtual DOM استفاده میکنه، اما ندونستن اینکه DOM واقعی چیه و چطور کار میکنه، باعث میشه دید مهندسی کاملی به پروژهتون نداشته باشید و نتونید فرآیندها رو بهینهسازی کنید.
۹. وابستگی مطلق به یک تکنولوژی خاص ⛓️
اگر فقط ریکت بلد باشید، با تغییر تکنولوژی شرکتها آسیبپذیر میشید. اما برنامهنویسی که جاوااسکریپتِ قوی داره، فردا روزی میتونه توی مدت کوتاهی Vue، Angular یا حتی فریمورکهای موبایل رو راحت یاد بگیره.
۱۰. رد شدن در مصاحبههای استخدامی 💼
تقریباً هیچ شرکتی فقط نمیپرسه "چطوری یک کامپوننت ریکت بسازم؟". در مصاحبههای فنی فرانتاند، سوالات اصلی و چالشبرانگیز روی مفاهیم عمیق جاوااسکریپت، معماری وب و منطق برنامهنویسی تمرکز دارن.
❤7👏1
</homeCode>
Photo
تا دستت میخوره روی کیبورد و اولین حرف رو لمس میکنی، اون بالا برای طرف مقابل مینویسه: is typing...
تا حالا فکر کردی این اتفاق چطوری تو یکصدم ثانیه میافته؟
داستان کوتاه: چشمک ۵ ثانیهای
تصور کن «دیار» میخواد توی یک گروه پیامی بفرسته:
۱. چشمک فرستنده: به محض لمس اولین حرف روی کیبورد، برنامه تلگرام روی گوشی دیار یک سیگنال خیلی کوچک و سریع (مثل یک چشمک) میسازه که معنیش اینه: «دست دیار روی صفحه کلیده!»
۲. پیک هوشمند: این چشمک در یکصدم ثانیه به سرور مرکزی تلگرام میرسه. سرور هم سریع به گوشی شما خط میده: «دیار داره تایپ میکنه!» و متن is typing... روی صفحه شما میشینه.
۳. قانون ۵ ثانیه: اگر دیار ۵ ثانیه دست نگه داره و چیزی ننویسه، سرور فرض میکنه مکث کرده و اون ۳ تا نقطه خودبهخود پاک میشن.
حالا پشت صحنه فنی چی میگذره؟
اگر بخوایم نگاه مهندسیتری داشته باشیم، این فرایند ۴ مرحله اصلی داره:
شناسایی اکشن (Input Event): با اولین لمس کیبورد، کلاینت تلگرام رویداد تایپ را در گوشی فرستنده ثبت میکند.
ارسال دستورsetTyping: تلگرام یک درخواست بسیار کمحجم به نامmessages.setTypingرا روی پروتکل اختصاصی خود (MTProto) به سرور میفرستد.
پخش زنده خبر (Broadcast): سرور از طریق اتصال دائم شبکه، یک آپدیت به نامupdateChatUserTypingبرای تمام اعضای آنلاین آن چت ارسال میکند.
مکانیزم انقضا (Timeout): تا زمانی که کاربر به نوشتن ادامه دهد، این سیگنال هر ۴ تا ۵ ثانیه تکرار میشود. با توقف تایپ یا ارسال پیام، ارسال سیگنال قطع شده و وضعیت typing از روی صفحه اعضا پاک میشود تا ترافیک شبکه بهینهماند.
❤11👍2
طبق تجربه یی که با دستابیس های mongoDB و mySQL داشتم
و از لحاط تجربه کاری و راحتی mongoDB راحت تره نسبت به mySQL
و از لحاط تجربه کاری و راحتی mongoDB راحت تره نسبت به mySQL
👍8
</homeCode>
طبق تجربه یی که با دستابیس های mongoDB و mySQL داشتم و از لحاط تجربه کاری و راحتی mongoDB راحت تره نسبت به mySQL
این کد برای پیدا کردن تمام کاربران هست که مربوط به sql میشه
و این کد هم برای پیدا کردن تمام کاربران هستش که مربوط به mongoDB هستش
const getAllUser = async () => {
try {
const [rows] = await pool.execute(
`
SELECT *
FROM users
WHERE is_active = TRUE
ORDER BY created_at DESC
`
);
return rows;
} catch (error) {
console.error("Error finding active users:", error);
throw error;
}
};و این کد هم برای پیدا کردن تمام کاربران هستش که مربوط به mongoDB هستش
const user = await userModel.find({
isActive: true,
});❤7🔥1
</homeCode>
Photo
کروم ۱۵۲ جدیدترین آپدیت مرورگر گوگله (که در اواخر آگوست ۲۰۲۶ منتشر شده) و دست پر اومده تا کار ما توسعهدهندهها رو راحتتر کنه. هدف اصلی این آپدیت اینه که کدهامون تمیزتر بشه و برای کارهای ظاهری، خیلی کمتر به جاوااسکریپت وابسته باشیم.
بیایید قابلیتهای جدید CSS تو این نسخه رو بررسی کنیم و ببینیم چطور جای جاوااسکریپت رو گرفتن:
۱. استایل دادن به ویدیو و موزیک در حال پخش
قبلاً با جاوااسکریپت: اگه میخواستید وقتی یک ویدیو پخش میشه، سایه دورش بیفته یا وقتی متوقف (Pause) میشه تاریک بشه، باید با جاوااسکریپت رویدادهایplayوpauseرو ردیابی میکردید و کلاسهای CSS رو به صورت دستی به تگ ویدیو اضافه یا کم میکردید.
الان با CSS: کروم ۱۵۲ انتخابگرهای جذابی مثل:playing،:pausedو:mutedرو معرفی کرده. خیلی ساده تو فایل استایل مینویسیدvideo:playingو استایل دلخواهتون رو میدید! مرورگر خودش بقیه کارها رو هندل میکنه.
۲. کنترل شفافیت رنگها بدون دردسر
قبلاً با جاوااسکریپت: فرض کنید یک متغیر رنگی مثل--main-colorداشتید و میخواستید همون رنگ رو با شفافیت ۵۰٪ تو یک بخش دیگه استفاده کنید. مجبور بودید کد رنگ رو تغییر بدید یا با جاوااسکریپت اون رو محاسبه کنید.
الان با CSS: با تابع جدیدalpha()، میتونید همون لحظه شفافیت هر رنگی رو تغییر بدید. یعنی به CSS میگید "همون رنگ اصلی رو بردار، فقط شفافیتش رو کم کن". این کار ساخت تمهای تاریک و روشن (Dark/Light mode) رو بینهایت ساده میکنه.
۳. جابهجا کردن پنجره اپلیکیشنها (window-drag)
قبلاً با جاوااسکریپت: وقتی یک وباپلیکیشن دسکتاپ (PWA) میساختید، برای اینکه کاربر بتونه با کلیک روی هدر برنامه، کل پنجره رو بکشه و جابهجا کنه، باید کلی کد جاوااسکریپت برای مدیریت کلیک و حرکت موس مینوشتید.
الان با CSS: فقط کافیه به عنصری که نقش هدر رو داره ویژگیwindow-drag: drag;رو بدید! خود مرورگر میفهمه که این بخش برای جابهجا کردن پنجره است و بدون یک خط کدنویسی اضافه، کار میکنه.
۴. مدیریت کلیک روی پسزمینه مودالها
قبلاً با جاوااسکریپت: وقتی یک پاپآپ باز میشد، برای اینکه کاربر با کلیک روی فضای تاریک پشتش بتونه اون رو ببنده، باید تو جاوااسکریپت چک میکردید که کاربر دقیقاً کجا کلیک کرده تا تداخلی با محتوای اصلی پاپآپ پیش نیاد.
الان با CSS: با پشتیبانی جدید کروم از::backdrop، کلیک کردن روی پسزمینه دیالوگها خیلی هوشمندانهتر مدیریت میشه و دیگه نیازی به نوشتن منطقهای پیچیده تو جاوااسکریپت برای پیدا کردن محل کلیک ندارید.
❤5🔥1
Forwarded from </ MoDev > (mohammad TooVinS)
می تونید از سایت زیر استفاده کنید برای ساخت تِم دلخواه خودتون برای VsCode :
🔗 https://themes.vscode.one/
✦ @programming_codiing
🔗 https://themes.vscode.one/
✦ @programming_codiing
❤5
حتما ۴ تا از پروژه هایی که با جاوااسکریپت درست میکنید با کلاس ها باشع
حالا حتما نه
ولی بسازید
حالا حتما نه
ولی بسازید
class
❤3
Forwarded from Persian GitHub
توی پروژههای Node.js، کار مستقیم با دیتابیس خیلی زود پیچیده میشه.
TypeORM این بخش رو ساده میکنه؛ یک ORM برای TypeScript و JavaScript با پشتیبانی از PostgreSQL، MySQL، MongoDB، SQLite و چند دیتابیس دیگه.
https://github.com/typeorm/typeorm
@RepoFA
TypeORM این بخش رو ساده میکنه؛ یک ORM برای TypeScript و JavaScript با پشتیبانی از PostgreSQL، MySQL، MongoDB، SQLite و چند دیتابیس دیگه.
https://github.com/typeorm/typeorm
@RepoFA
❤3
Persian GitHub
توی پروژههای Node.js، کار مستقیم با دیتابیس خیلی زود پیچیده میشه. TypeORM این بخش رو ساده میکنه؛ یک ORM برای TypeScript و JavaScript با پشتیبانی از PostgreSQL، MySQL، MongoDB، SQLite و چند دیتابیس دیگه. https://github.com/typeorm/typeorm @RepoFA
بریم سراغ یادگیری این ابزار
که از نون شب برام واجب تره
که از نون شب برام واجب تره
❤3