رقصنده با کد – Telegram
رقصنده با کد
783 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
آیا اینترنت خونگیتون مثل قبل کار میکنه (بله) یا مشکل داره (خیر)؟
Final Results
31%
بله
69%
خیر
امشب خیلی وحشی‌تر از همیشه داره حمله میکنه. از سر شب انگار توی کوچه آهنگ بندری گذاشتن.
قطع نمیشه و وسطش صداهای انفجار خیلی شدیدی شنیده میشه. خدا رحم کنه.
اگر به نون علاقه دارید ، پیشنهاد می‌کنم این مستند رو ببینید. روی سایتای ایرانی هم پیدا میشه.

World Eats Bread
وضعیت نت بهتر شد؟ خودم سه تا استان رو چک کردم گویا اوکیه
Anonymous Poll
63%
بله
38%
خیر
اگر شبکه علاقه دارید یا تایم خالی دارید ، حتما این دوره رو ببینید و اگر میتونید برید ترکیه ( به خاطر اینکه آزمونش توی ترکیه نسبت به دبی و کشورهای دیگه خیلی ارزونتره ) پیشنهاد میکنم حتما مدرکش رو بگیرید:

Udemy - CompTIA Network+ N10-009 - 2025 2025-4

روی دانلودلی پیداش می‌کنید. مدرسش خوب توضیح میده. نصفش رو دیدم و تا اینجای کار حس میکنم تلاشش این بوده که چیزایی که توضیح میده کاربردی باشه نه صرفا چیزی که حفظ بشه و تموم بشه

IT Cert Doctor
سوال گذری

بدون سرچ و بدون نگاه کردن کامنت‌ها بگید event delegation چیه

(۲ هدف از این سوال هست. تست دانش فنی و نحوه توضیح دادن جواب - خیلی‌ها به قسمت دوم بی‌توجهن)
This media is not supported in your browser
VIEW IN TELEGRAM
یکی از خاص‌ترین چیزایی که این چند وقت اخیر دیدم.
توضیح در مورد دوره‌ها:

متاسفانه امکان ضبط دور‌ه‌ها وجود نداره.

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

هر ۱۰ دقیقه ویدیو ، تقریبا نصف روز کامل ادیتش زمان میبره.

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

33°37'16.3"N 50°04'17.4"E
قصد دارم منتورینگ برنامه‌نویسی ۳ نفر رو برای تابستان جاری، رایگان بر عهده بگیرم تا کمک کوچکی بهشون کرده باشم.

تنها شرطش اینکه که دانش آموز یا دانشجوی تازه وارد باشی و قصدت برای یادگیری جدی باشه.

باقی دوستان قدیمی‌تر قطعا بیشتر از من بلدن و بنده جلوشون درس پس میدم.

راه ارتباطی:
@alithecodeguy

پاورقی:
این پست رو توی لینکدین هم گذاشتم. ممنون میشم لایکش کنید بیاد بالا شاید به درد کسی خورد.
https://www.linkedin.com/posts/alithecodeguy_%D9%82%D8%B5%D8%AF-%D8%AF%D8%A7%D8%B1%D9%85-%D9%85%D9%86%D8%AA%D9%88%D8%B1%DB%8C%D9%86%DA%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%DB%B3-%D9%86%D9%81%D8%B1-%D8%B1%D9%88-%D8%A8%D8%B1%D8%A7%DB%8C-activity-7345757970611236865-40pt?utm_source=share&utm_medium=member_android&rcm=ACoAACtcWEYBTrZMU9DqRUSmbHsrw5UuZpcD8m0
این چند روزه توی لاگین با گوگل (توی اپلیکیشن‌ها) به مشکل میخورم و این محدود به اینترنت ایران نیست. شما هم تجربش کردید؟
تقریبا سکته‌ای کار میکنه
قابلیت Intersection Observer API چیست؟

قابلیت Intersection Observer API یک قابلیت داخلی مرورگر هست که به شما این امکان رو میده تا به‌صورت غیرهمزمان (Async) بفهمید که یه عنصر (Element) کی وارد دید کاربر (Viewport) میشه یا از دید خارج میشه.

🔍 به زبون ساده یعنی:

این API کمک می‌کنه متوجه بشید که یه بخش از صفحه واقعاً داره توسط کاربر دیده میشه یا نه.

📌 چه کاربردهایی داره؟
بارگذاری تنبل (Lazy Loading) تصاویر — فقط وقتی که تصویر به دید کاربر نزدیک شد، لود بشه.
اجرای انیمیشن‌ها وقتی عنصر وارد دید شد (مثل Fade In)
پیاده‌سازی اسکرول بی‌نهایت (Infinite Scroll) — وقتی کاربر به انتهای صفحه رسید داده‌های جدید لود بشه.
بررسی دیده‌شدن تبلیغات (Ad Viewability)

🏗 چطوری کار می‌کنه؟

شما میاید یه IntersectionObserver می‌سازید، بهش می‌گید کدوم عنصرها رو بررسی کنه، و یه تابع کالبک (Callback Function) بهش می‌دید.
هر وقت اون عنصر با توجه به تنظیمات (Threshold) وارد دید شد یا از دید خارج شد، اون تابع اجرا میشه.

چرا بهتر از رویداد Scroll هست؟

اگه از رویداد scroll استفاده کنید، باید مدام وضعیت عنصر رو با getBoundingClientRect چک کنید.
این کار هم پرهزینه‌ست و هم می‌تونه باعث کند شدن مرورگر بشه.
ولی Intersection Observer کاملاً بهینه‌سازی شده و توسط خود مرورگر مدیریت میشه.
پس خیلی سریع‌تر و سبک‌تره.

✍️ یه مثال خیلی ساده


const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
console.log('🎯 عنصر وارد دید شد!');
observer.unobserve(entry.target); // دیگه نیازی به بررسی دوباره نیست
}
});
}, {
root: null, // یعنی نسبت به ویوپورت مرورگر
threshold: ۰.۱ // یعنی وقتی ده درصد عنصر دیده شد، تابع اجرا بشه
});

const target = document.querySelector('#myElement');
observer.observe(target);
اشتراک تجربه:

نظرهای متفاوتی در مورد نحوه یادگیری هستش که میشه به سه دسته کلی تقسیمش کرد:

۱. فقط یک موضوع رو یاد بگیریم و خیلی توش متخصص بشیم.

۲. روی یک موضوع عمیق بشیم ولی از بقیه چیزها هم یه کمی بدونیم (مدلT)

۳. از موضوعات مختلف مربوط به حوزه خودمون به یک اندازه بدونیم.

اینکه چه کاری دارید انجام می‌دید و چه آینده‌ای برای خودتون ترسیم کردید ، میتونه توی انتخاب هر یک از این سه گزینه نقش داشته باشه.

نظر خودم معمولا گزینه ۲ بود ولی با ورود هوش مصنوعی و نوآوری که توی فرآیند تولید نرم‌افزار رخ داد ، خیلی‌ها نظرشون به گزینه ۳ تغییر کرد.

اما یک اتفاق عجیب رخ داد!

هوش مصنوعی ، خیلی خیلی زود روی تاریک خودش رو نشون داد.

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

با همه این اوصاف ، فکر میکنم که باز برگشتیم سر گزینه ۲ و ماه عسل هوش مصنوعی توی مسیر توسعه نرم‌افزار تمام شد. در واقع برنامه‌نویسها به زودی به نقطه‌ای خواهند رسید که یا کلا کنار میکشن و اجازه میدن صفر تا صد کار رو هوش مصنوعی انجام بده و اینها نهایتا پرامپت بنویسن ، یا برمیگردن به گذشته و سعی میکنن مدل یادگیری T رو پیش بگیرن.

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

پیشنهاد میکنم سراغ این دوره نرید:

Udemy - JavaScript Complete Grandmaster Course 2025 2025-4
بالخره باگ پیش میاد.

سعی کنید محصولتون اول بالا بیاد ، بعد چکش کاریش کنید.
اگر NextJs بلد هستید بیاید کل کل کنیم 😁️️️️

به نظرتون چرا توی داکیومنت نکست ، برای نحوه prefetch شدن لینک‌ها ، دوتا حرف متفاوت زده؟
This media is not supported in your browser
VIEW IN TELEGRAM
زیباترین ویدیویی که با هوش مصنوعی تولید شده
از پیامهایی که دوستان میدن و پست‌هایی که توی لینکدین میبینم ، میتونم حجم استرس تعدیلی‌ها و اخراجی‌ها رو درک کنم.

ولی طبق تجربه من :

۰- این موضوع فقط برای ایران نیست. تقریبا همه شرکت‌ها توی همه کشورها راه تعدیل رو پیش گرفتن. فقط بهانه‌ها متفاوته.

۱- بازار آیتی هر ۵ سال یکبار یک شوک جدید بهش وارد میشه بعدش درست میشه.

۲- اگر درآمد ثانویه نداشتید ، الان زمان خوبیه که بهش فکر کنید.

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

۴- اون تخصصی که عاشقش هستید رو (اگر آی‌تی نیست) ، برید تفننی یاد بگیرید. این یادگیری تفننی ، یه روز کشتی نجاتتون میشه.

۵- توی شرایط فعلی به هر شکلی که می‌تونید به قول خارجی‌ها survive کنید ولی بهترین فرصت خودشناسی هستش. تا چند سال دیگه این فرصت رو پیدا نمی‌کنید.
پروتکل gRPC یه راه برای اینه که دو تا برنامه (مثلاً دو تا سرور، یا یه موبایل و یه سرور) بتونن با هم حرف بزنن و داده رد و بدل کنن.

باهاش می‌تونی خیلی راحت بگی:
«هی سرور! این تابع رو با این ورودی اجرا کن و نتیجه رو برگردون.»

خیلی شبیه به REST یا API های HTTP هست، ولی:

- سریع‌تره (چون از HTTP/2 و باینری استفاده می‌کنه)
- کم‌حجم‌تره (به جای JSON از protobuf استفاده می‌کنه)
- قراردادی‌تره (یه فایل proto می‌نویسی که مشخص می‌کنه درخواست و پاسخ چه شکلیه)

مزایای gRPC:

سریع
کم‌حجم
چندزبانه (جاوا، پایتون، Go، جاوااسکریپت و … می‌فهمنش)
خیلی خوب برای میکروسرویس‌ها

معایب gRPC:

عدم پشتیبانی مستقیم توسط مرورگرها
دیباگ و لاگ‌گیری سخت‌تر
نسبتاً جدید و ناشناخته‌تر
نیاز به ساختن فایل proto و generate کردن کد

مثال با nodejs:

helloworld.proto
‍‍‍

syntax = "proto3";

package helloworld;

// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
string name = 1;
}

// The response message containing the greetings
message HelloReply {
string message = 1;
}



npm init -y
npm install @grpc/grpc-js @grpc/proto-loader


server.js


import grpc from '@grpc/grpc-js';
import protoLoader from '@grpc/proto-loader';

// Load proto file
const packageDefinition = protoLoader.loadSync('helloworld.proto', {});
const proto = grpc.loadPackageDefinition(packageDefinition).helloworld;

// Implement the SayHello RPC
function sayHello(call, callback) {
console.log('Received request for:', call.request.name);
callback(null, { message: `Hello, ${call.request.name}!` });
}

// Start the gRPC server
const server = new grpc.Server();
server.addService(proto.Greeter.service, { SayHello: sayHello });
server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {
console.log('Server running at http://0.0.0.0:50051');
server.start();
});


client.js


import grpc from '@grpc/grpc-js';
import protoLoader from '@grpc/proto-loader';

// Load proto file
const packageDefinition = protoLoader.loadSync('helloworld.proto', {});
const proto = grpc.loadPackageDefinition(packageDefinition).helloworld;

// Create client
const client = new proto.Greeter('localhost:50051', grpc.credentials.createInsecure());

// Make request
client.SayHello({ name: 'Ali' }, (err, response) => {
if (err) {
console.error(err);
return;
}
console.log('Greeting:', response.message);
});


Run it!
node server.js
node client.js

Server running at http://0.0.0.0:50051
Received request for: Ali

Greeting: Hello, Ali!

#grpc #nodejs

@danceswithcode
چالش:

می‌دونیم که اپ‌های PWA همیشه از صفحه اول باز می‌شن. ولی گاهی ممکنه که نیاز داشته باشیم که یک لینک‌داخلی‌تر رو مستقیم باز کنیم. مثلا به جای این آدرس:
/
بخواهیم این آدرس رو مستقیم باز کنیم.
/posts/warzone

ولی به صورت پیش فرض همیشه از / باز بشه.

چه راهی بلدید براش؟

یکی از راه‌هاش Deeplink هستش

@danceswithcode