رقصنده با کد – Telegram
رقصنده با کد
784 subscribers
1.69K photos
850 videos
207 files
665 links
Here are some interesting things I've come across during my learning process. That's it. Admin ID:
@alithecodeguy
Download Telegram
همیشه گفتم اینکه چه ابزاری کار می‌کنید واقعا مهم نیست. هر ابزاری رو سریع میشه یاد گرفت ، به شرط اینکه مفهوم کف اون رو بدونید. یعنی واقعا درک کرده باشید که توی پس زمینه چه اتفاقی قراره رخ بده.

برای پرفورمنس هم همینه. مفهوم بزرگیه و ابزارهای زیادی هم توی این حوزه هستن ولی بهتره اول بدونید داستان چیه.
برای شروع ، سه تا لینک زیر خیلی بهتون کمک میکنه :
https://web.dev/articles/ttfb
https://web.dev/articles/fcp
https://web.dev/articles/lcp
یه روز یه پیرمرد بد چهره‌ای ، یه بچه خوشکل رو میبینه ، میگه اون کوه دور رو میبینی ، بیا پیاده بریم پشت اون کوه ، مجانی با هم یه کارایی کنیم. (سانسور)

بچه جواب قشنگی میده. میگه به راه دورت بیام ، به پول زیادی که میدی بیام ، به چهره قشنگت بیام... به چیت بیام؟

شده داستان شرکت‌های ایرانی. خیلیاشون نقش همین پیرمرد غیور رو دارن.

نه قراره تجربه کسب کنید ، نه قراره حقوق خوبی بگیرید ، نه قراره رزومه خاصی بشه ، نه بار علمی داره ، نه روابط خوبی توی شرکت در جریانه.

به چیش می‌رید؟
رقصنده با کد
Photo
برای استفاده از React Compiler عجله نکنید ولی کم کم یادگیریش رو شروع کنید و مقدماتش رو پیش برید. مهمترین و شاید تنها مقدمش اینه که React Rules رو رعایت کنید:

۱- کامپوننتها و هوک‌ها باید Pure باشند ، یعنی :
- کامپوننت‌ها باید idempotent باشند. یعنی به ازای ورودی یکسان خروجی یکسان داشته باشند. به عبارت دیگه به ازای props ، state و context یکسان ، خروجی همیشه یکسان باشه
- ساید افکت‌ها باید خارج از لایف سایکل رندر اتفاق بیفته
- باید props و state رو immutable نگه داریم. به عبارتی نباید مستقیم تغییرشون داد
- مقادیری که به هوک‌ها پاس داده میشن ، نباید تغییر کنن.
- بعد از اینکه مقداری رو به کامپوننت child پاس دادیم ، اون مقدار دیگه توی کامپوننت parent تغییر نکنه.

۲- ریکت مسول کال کردن کامپوننت‌ها و هوک‌هاست
- هیچ وقت یک کامپوننت رو به شکل فانکشن مستقیما کال نکنید.
- هوک‌ها فقط باید داخل کامپوننت‌ها استفاده بشن. به شکل یک مقدار عادی باهاشون برخورد نکنید.

۳- قوانین مخصوص‌ هوک‌ها:
- همیشه هوک‌ها رو در بالاترین سطح یک کامپوننت استفاده کنید. مثلا نرید توی حلقه for بنویسیدشون
- هوک‌ها رو فقط از داخل فانکشن‌ها ریکتی صدا بزنید ، نه فانکشن‌های عادی جاوااسکریپتی

نکته خیلی مهم : use خالی در ریکت ، hook نیست بلکه api هستش پس قوانین شماره ۳ لزوما در موردش صدق نمیکنه.

مطالب بیشتر در کانال رقصنده با کد:
https://news.1rj.ru/str/danceswithcode
امروز یعنی پنج‌شنبه ۸ آبان ۱۴۰۴ ، هر سوالی دارید مستقیم توی پی‌وی بپرسید ازم. یا با چت جواب میدم یا جلسه میذاریم.

هزینه‌ای نداره و رایگانه ولی ترجیحا سوالاتی بپرسید که با سرچ پیدا نشه.

@AliTheCodeGuy

اگر بلد باشم که جواب میدم. بلد هم نباشم باهم یاد میگیریم.
نکته جالبی که در مورد کتاب C (و احتمالا هر کتاب دیگه‌ای که خیلی جدی‌تر در مورد برنامه‌نویسی صحبت میکنه) وجود داره اینه که ادبیاتش متفاوت از ادبیات داکیومنت‌های دنیای جاوااسکریپته.

ادبیات دنیای جاوااسکریپت خیلی گوگولیه و سعی میکنه خیلی فنی صحبت نکنه و از کلمات ساده استفاده کنه ولی توی داکیومنت‌های C انگار یه دانشمند ریاضی نشسته جلوتون و داره چیزی رو براتون شرح میده.
خشک ، قاطع ، عمیق ، لغات سخت
اگر به کرنل لینوکس و نوشتن درایور علاقه دارید ، این کتاب پیشنهاد میشه :
https://lwn.net/Kernel/LDD3/

این ویدیو رو هم ببینید:
https://www.youtube.com/watch?v=QatE61Ynwrw

#kernel #driver #linux #book
ولی هدفهاتون رو بنویسید بذارید جایی که هر روز ببینیدش.

نه به خاطر انرژی و متافیزیک و این چرندیات ، بلکه به خاطر اینکه اگر به هر دلیل از شرایطتون ناراضی بودید ، هدفتون یادتون بیفته و ببینید آیا این نارضایتیون در مسیر هدفتونه یا کلا راهتون کج شده و دارید به خاطر چیزی که توی مسیرتون تاثیر نداره اعصاب خودتون رو خرد می‌کنید.

خیلی بهتون کمک میکنه.

مثال : ‌قصد مهاجرت دارید و دارید یه جایی کار می‌کنید که پول رفتن رو جور کنید. دیگه چه فرقی داره صبحونه بدن یا ندن ، چه فرقی داره کی چی گفت ، چه فرقی داره پروژه جدید تعریف شد یا نشد. تا وقتی پوله میاد و طبق برنامه پس‌انداز می‌کنید پس هیچی نباید ناراحتتون کنه.
خب می‌دونید همیشه تاکید کردم که یادگیری رو فقط از روی منابع انگلیسی و ترجیحا داکیومنت‌های رسمی انجام بدید و روی این موضوع هم کاملا پافشاری میکنم ولی یه نکته ریز بگم :

هرزگاهی ویدیو‌ها و کورس‌های متفاوت و جدید رو روی دور تند ببینید. نه برای یادگیری مبحث اصلی (چون معتقدم چیزی که از روی ویدیو یاد گرفته میشه ناقصه) ، بلکه به خاطر دیدن دست‌خط‌های مختلف ، تکنیک‌های جدید ، ترندهای بازار و آشنایی با کتابخانه‌های مختلف. خیلی بهتون کمک میکنه.
This media is not supported in your browser
VIEW IN TELEGRAM
این فقط یک ثانیه از اتفاقاتیه که تو بازی‌ها آنلاین میوفته!

#network
https://news.1rj.ru/str/danceswithcode
شغل‌های ابو‌علی‌سینا:

- پزشک
- فیلسوف و متکلم
- دانشمند ریاضی و هندسه
- دانشمند فیزیک
- دانشمند نجوم
- سیاست‌مدار
- وزیر
- استاد
- نویسنده

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

گابریل کولت.
رقصنده با کد
فرض کنید توی شرایطی هستید که یا باید کمی بد خلقی کنید تا کارمندا جدی بگیرن و کار پیش بره (که البته باعث کدورت بعضی‌ها میشه) ، یا باید ریلکس برخورد کنید و مطمن باشید شرکت ۲ ماه دیگه جمع میشه و حداقل نصف کارمندا اخراج میشن. گزینه دیگه‌ای ندارید. چه می‌کنید؟
اگر مشت رو نمونه خروار در نظر بگیرید ، این نظرسنجی نشون میده حداقل ۱۰ درصد همکاراتون ، اون قدری که نشون میدن دوست شما نیستن و سر سوزن براشون ارزش نداره که شما و زن و بچتون گشنه بمونید صرفا به خاطر اینکه اونا ترجیح دادن به جای تلاش برای تکمیل تسک ، برن پلی‌استیشن بازی کنن یا بشینن دور هم اصطلاحا چال کنن. حالا هی بگید اون همکاری که بیخیاله و همه چی رو دایورت کرده ، چه قدر آدم کولیه.

این بده.
Forwarded from Books
مسئله

توی جاوااسکریپت ۶ تا Promise داریم، مثلاً:

const tasks = [
() => fetch("/api/1"),
() => fetch("/api/2"),
() => fetch("/api/3"),
() => fetch("/api/4"),
() => fetch("/api/5"),
() => fetch("/api/6"),
];


می‌خوایم:
• سه‌تای اول با هم (موازی) اجرا بشن؛
• وقتی هر سه تموم شدن، سه‌تای دوم شروع بشن

راه حل:

با Promise.all و تقسیم آرایه

async function runInGroups(tasks, groupSize = 3) {
for (let i = 0; i < tasks.length; i += groupSize) {
const group = tasks.slice(i, i + groupSize); // سه تا سه تا
await Promise.all(group.map(fn => fn())); // هم‌زمان اجرا می‌شن
}
}

runInGroups(tasks, 3)
.then(() => console.log("All done!"))
.catch(console.error);

مثال تستی با delay

const delay = (id, t) => () => 
new Promise(res => setTimeout(() => {
console.log(`done ${id}`);
res();
}, t));

const tasks = [
delay(1, 1000),
delay(2, 1500),
delay(3, 500),
delay(4, 1000),
delay(5, 1200),
delay(6, 800),
];

runInGroups(tasks, 3).then(() => console.log(" all finished"));

اگر بخوای انعطاف‌پذیرتر باشه (مثلاً در حین اجرا گروه‌ها ساخته بشن یا با تعداد نامشخص Promise)، می‌شه از کتابخانه‌هایی مثل p-limit استفاده کرد

مطالب بیشتر در کانال رقصنده با کد:
https://news.1rj.ru/str/danceswithcode
که خارج از کشور تبعیض نژادی نیست و آزادی عقیده وجود داره هان؟

چندتا نمونه بیارم که فقط برای اسم اسلامیشون رجکت شدن ، مخصوصا محمد و علی و حسین و حسن. اینایی که رجکت میکنن هم دولت نیستن. مردم عادین.

دوست من ، هیچ جای دنیا عملا نه آزادی عقیده وجود داره ، نه عدالت ، نه برابری.

اینارو فقط میگن که قشر ضعیف دلشون خوش باشه.
دلیل علمیش رو نمی‌دونم ولی ارتباط مستقیمی بین بدخلقی حین کار و تخصص میبینم. (بدخلقی به معنای جدی بودن و نتیجه رو توی اولویت قرار دادن)

انگار از یه جایی به بعد ، ذهن سعی میکنه همه ریسورس‌هاش رو آزاد کنه برای مهارت و تخصص بیشتر و شاید به خاطر همینه نه تنها شوخی خنده حین کار ، بلکه مهمونی و تلویزیون و ... هم کنسل میشه.

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

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

توی لباس جدی ، نمیشه کار کرد.
(نظر شخصیه)