IranCoderz – Telegram
IranCoderz
2.35K subscribers
3.1K photos
418 videos
26 files
823 links
It's all about Programming

contact: @far1d_ghaderi
Adz: @IranCoderzAdz
Download Telegram
رفتار درست با ریویورهایی که گیر الکی می‌دن

https://github.com/pzoj/pzoj-contest/pull/1

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19👍7
‏شما وقتی با مرورگرتون وارد وبسایت های مختلف میشید اثر انگشت خاصی رو از خودتون جا میذارید، این fingerprint شامل اطلاعات دستگاهی که باهاش وارد شدید، اکستنشن های نصب شده، زبان های کیبورد، تایم زون سیستم و خیلی موارد دیگه میشه.
‏برای همین خیلی جاها رو حتی وقتی با vpn مطمئن وارد شدید باز هم میتونند تشخیص بدن که شما از vpn استفاده میکنید.

‏جمع آوری این اطلاعات برخلاف کوکی نیازی به اجازه‌ی کاربر نداره و خیلی راحت بدون اینکه کاربر متوجه بشه اطلاعات جمع آوری میشه.

‏برای اینکه fingerprint خودتون رو ببینید وارد لینک زیر بشید.

https://fingerprint.goldenowl.ai

💬 sabber_dev

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
54👍1
وضعیت کد شرکتی که تمام اصول کلین ‌کد، دیزاین‌ پترن‌ها و‌ معماری‌های مختلف رو تو مصاحبه‌ش می‌پرسه

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
😁42👍2🤯2
مسئله‌های لیت‌کد یکی از بهترین منابعی هستن که می‌تونید با حل کردن اون‌ها مهارت حل مسئله خودتون رو بالا ببرید. سعی کنید هر چند وقت یه بار، برید و یکم سر به سرشون بذارید. اگه تو مسئله‌ای هم به مشکل خوردید، ریپو زیر حدود ۱۰۰۰ مسئله از لیت‌کد رو با ++C حل کرده و جواب اون‌ها رو گذاشته که می‌تونید ازشون ایده بگیرید.

4️⃣ https://github.com/haoel/leetcode

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1
This media is not supported in your browser
VIEW IN TELEGRAM
💻سیستم Update Queue تلگرام:

تلگرام برای پوش کردن تغییرات مثل پیام جدید، ادیت، ری اکشن، تایپینگ و… به کلاینت‌ها از سرویس Updates تو پروتکل MTProto استفاده میکنه، ایده ی کلی و کلیدی خیلی ساده اس و اینه که کلاینت ها یه state محلی نگه میدارن و آپدیتارو دقیقا با ترتیب درست اعمال میکنن؛ اگه شکافی بینشون افتاد، Difference می‌گیرن و دوباره پرش میکنن.

چرا اینکارو کرده و کلا چالشا چیه؟
• ترتیبش مهمه چون ممکنه یه اپدیت وابسته به چیزی باشه که توی خود همون پچ میاد
• تحویل دقیق باید انجام بشه و هیچی گم نشه
• مقیاسش هم میلیون‌ها کاربر همزمان باید بگیرنش، مثل کانال های بزرگ

از اونجایی که هر پیامرسان منبع عظیمی از اتفاقاتیه که هر لحظه میوفته ما میتونیم اسم این اتفاقات رو event بزاریم. تلگرام هم یه پیامرسان مولتی کلاینته، یعنی هر کاربر میتونه چندین دیوایس برای یه حساب داشته باشه، پس وقتی یه ایونت اتفاق میوفته که باید یه کاربر از اون خبردار بشه باید اون ایونت رو به دیوایس های دیگه ی کاربر هم بفرسته، حدودا با مرتبه زمانی On^2.

مکانیزم اینجوریه که وقتی دیوایسی انلاین باشه و سوکت همون سوکتی باشه که keep alive هست یا اخرین rpc رو کال کرده سرور ایونت رو توی queue برای اون دیوایس نگه نمیداره و مستقیم میفرسته به کلاینت، حالا از اونجایی که کلاینت های دیگه ممکنه افلاین باشن یا حتی توی بکگراند پروسسشون کیل شده باشه عقب میمونن. حالا وقتی اون دیوایسی که عقب مونده بود با باز شدن سوکتش درخواست گرفتن اپدیت هارو وقتی که افلاین بوده رو از سرور میکنه و اطلاعات لوکالش رو میفرسته به سرور، من برای ساده شدنش اینجوری میگم که دیوایس میاد به سرور میگه من تا این زمان t رو داشتم و بعد این رو بهم بده، سرور هم میاد حساب کتابش رو میکنه و جواب رو توی یه پچ میفرسته! حالا چی توی این پچ هست و چی رو میفرسته رو میتونم یه رشته توییت دیگه در موردش بزنم.

حالا اگه اعدادی که توی پچ میاد با اعداد توی کلاینت نخونه عملا میگیم گپ اتفاق افتاده، برای همین هم کلاینت باید رکویست getDiff رو بزنه.
رکویست updates.getDifference به کلاینت اجازه می‌ده بگه:
من الان pts = X و seq = Y هستم و هر چی بین این و حالت جدید هست بهم بده.
• سرور ممکنه جواب بده:
difference: همه ی آپدیت های گمشده
differenceSlice: بخشی از آپدیت ها یعنی هنوز باید به فچ کردن ادامه بدی
differenceEmpty: چیزی تغییر نکرده

جالبترش اینه که توی نسخه های جدیدترش برای کانال ها مکانیسم جدا getChannelDifference هست، چون هر کانال pts مستقل داره و این باعث میشه شما فقط کانال هایی رو بگیری که تغییر کردن! برای سوپر گروه هم مکانیزم همینه.

این باعث می‌شه حتی اگر چند ساعت آفلاین باشی، بعد از اتصال دوباره دقیقاً همه‌چی رو بگیری و هیچ پیامی رو از دست ندی

حتی با packet loss یا reconnect، state کلاینت خراب نمیشه و سرور مجبور نیست برای هر کلاینت همه چی رو دوباره بفرسته. فقط gap ها sync میشن


🤖_AbolfazlAbbasi

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥17👍2
This media is not supported in your browser
VIEW IN TELEGRAM
یه سایت بصری خفن برای اینکه کارکرد الگوریتمای مختلف رو ببینید و بهتر درکش کنین:
https://algorithm-visualizer.org/

🤖 _AbolfazlAbbasi

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
108
💸 اکانت یکی از برنامه‌نویس‌های معروف هک شده و پکیج‌های جاوا اسکریپت اون که بیشتر از ۱ ‌میلیارد دانلود داشتن، آلوده شدن. پکیج‌هایی مثل chalk, strip, ansi, debug و حدود ۱۵ پکیج‌ دیگه از پکیج‌های آلوده شده هستن و آدرس مقصد تراکنش‌های کریپتو رو به آدرس هکرها تغییر می‌دن و یه‌ جورایی کل اکو سیستم جاوااسکریپت آلوده شده. پیشنهاد شده فعلا رو ولت‌های نرم‌افزاری تراکنشی انجام ندید.

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8🤯8👍2
اگه استیو جابز زنده بود امشب وسط رویداد اپل یه بمب به خودش می‌بست، می‌رفت وسط کنفرانس و‌ همه رو منفجر می‌کرد.

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19👎4
IranCoderz
اگه استیو جابز زنده بود امشب وسط رویداد اپل یه بمب به خودش می‌بست، می‌رفت وسط کنفرانس و‌ همه رو منفجر می‌کرد. 🚀@IranCoderz 👨‍💻
اصلا انتظار نوآوری خاصی نمی‌رفت، ولی این‌که بزرگ‌ترین ویژگی خودشون که دیزاین‌های قشنگشون بود رو هم کاملا زیر سوال بردن و از اون سمت، هیچ چیز خاصی هم ارائه نکردن واقعا
ناامید کننده بود.

پ‌ن: همه آیفون‌ها حافظه پایه 256گیگ ‌دارن و از این لحاظ می‌شه گفت بهترین قیمت رو نسبت به چند سال اخیر داریم.
👍12👎31
IranCoderz
اصلا انتظار نوآوری خاصی نمی‌رفت، ولی این‌که بزرگ‌ترین ویژگی خودشون که دیزاین‌های قشنگشون بود رو هم کاملا زیر سوال بردن و از اون سمت، هیچ چیز خاصی هم ارائه نکردن واقعا ناامید کننده بود. پ‌ن: همه آیفون‌ها حافظه پایه 256گیگ ‌دارن و از این لحاظ می‌شه گفت بهترین…
بهترین چیزی که اپل امشب معرفی کرد، آیفون ایر بود که نازک‌ترین‌ آیفون تاریخه و همون‌طور که تو عکس می‌بینید، کل گوشی باتریه و بقیه چیزها رو بردن کنار دوربین چیدن رو هم. به گفته اپل، قدرت ایر نزدیک آیفون ۱۷ پرو هست. البته این نازک بودن بدون تلفات نبوده و دوربین‌ گوشی به یک عدد محدود شده، ضعیف‌ترین باتری رو بین مدل‌های امسال داره و همچنین فقط یک اسپیکر داره و صدای استریو رو پشتیبانی نمی‌کنه. آخرین آیفونی که صدای استریو رو پشتیبانی نمی‌کرد iPhone SE 2016 بود.

Who asked for this اپل جان؟

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
17👎4
لینوس تروالدز این پول ریکوست لینوکس رو ببینه سکته می‌زنه

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
29😁92👍2💩1
This media is not supported in your browser
VIEW IN TELEGRAM
🥳امروز ۲۵۶مین روز سال، روز جهانی برنامه‌نویس‌هاست. روزتون مبارک باشه بچه‌‌ها 🍾❤️

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
35
IranCoderz
📝#خلاصه کتاب برنامه‌نویس عمل‌گرا - بخش ۱ کیفیت در کار برنامه‌نویسی کار آسونی نیست. ما باید نیازهای مبهم کاربر رو به زبون کامپیوتر تبدیل کنیم. نویسنده می‌گه برنامه‌نویس مثل یه استادکار باید بلد باشه از بین ابزارها بهترین رو انتخاب کنه. پس نباید فقط به یک…
📝#خلاصه کتاب برنامه‌نویس عمل‌گرا - بخش ۲

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


🚀مسئولیت رشد ما با خودمونه
به‌عنوان برنامه‌نویس نباید منتظر بقیه بمونیم؛ خودمون باید دنبال رشد و آپدیت موندن باشیم. نویسنده‌های این کتاب راه‌های زیر رو برای پیشرفت شخصی پیشنهاد می‌کنن:

- هر سال یه زبان برنامه‌نویسی جدید یاد بگیرین.
- هر ماه (یا حداقل هر چند وقت یک‌بار) یه کتاب فنی بخونین.
- توی کلاس‌ها، ورک‌شاپ‌ها و کامیونیتی‌ها شرکت کنین و فعال باشین.
- محیط کار رو تغییر بدین تا به روتین عادت نکنین. مثلا اگه همیشه با VS Code کار می‌کنین، یه مدت یه ادیتور دیگه رو امتحان کنید.
- افراد تاثیرگذار حوزه‌تون رو دنبال کنین، مقاله‌های روز رو بخونین و برای خودتون پروژه شخصی داشته باشین.


🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥2👍1
یکی از چالش‌های همیشگی برنامه‌نویس‌ها:قیمت‌گذاری پروژه‌هاست!
برای ساده‌تر شدنش، یه ابزار آنلاین ساختم که از یه نقل قول از برایان تریسی به نام «قانون ارزش ساعت» ایده گرفتم
بچه های برنامه نویس شما معمولا چطوری قیمت گذاری میکنن؟

projesanj.netlify.app

* esmaeilbfd *

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥43👍1
This media is not supported in your browser
VIEW IN TELEGRAM
اگه تو یه کشور درست حسابی بودیم، محسن مدحج بخاطر رویا فروشی و کلاه‌برداری، به احتمال زیاد می‌رفت زندان یا یه جریمه خیلی سنگینی می‌شد و به نحوی جلوش رو می‌گرفتن ولی خب اینجا مسئولین خودشون درگیر دزدین و مشکلی با مدحج و‌ امثال اون ندارن.

اگه دیدید کسی از اطرافیانتون سمت مدحج و امثال مدحج می‌ره، آگاه کردنشون کمترین کاریه که می‌تونید بکنید.

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍354😁1
یه رزومه خفن با هم ببینیم

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
39😁15🤯3🔥2😭2
هم‌وطن عزیزمون رفته به یه خارجی پیام داده و گفته می‌خوام یه برنامه مثل چیزی که داری درست کنم ولی خیلی وقت‌گیره، بهتره خودت سورسش رو بهم بدی چون اگه ندی می‌شینم کلونش می‌کنم.

اینطوری باید یه پروژه رو اوپن سورس کرد👍🏻

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
44😁111👍1
💡تا حالا فکر کردین استراتژی Redis برای پاک کردن کلیدهای cache که ttl اونها اکسپایر شده چیه؟ ☝️

در واقع redis دو تا استراتژی داره که از ترکیب این دو برای مدیریت این موضوع استفاده میکنه.

1- استراتژی اول که بهش میگن lazy_expiration ساده ترینشه اینه که وقتی درخواستی برای گرفتن یه کلید اومد اول چک میکنه اون کلید اکسپایر شده یا نه اگه آره اون رو همونجا پاک میکنه و نال برمیگردونه.

2- خب اگه یه کلید برای مدت‌ها صدا زده نشه چی؟ اینجاست که میرسیم به استراتژی دوم یعنی active_expiration و به این شکله که میاد مثلا هر 100 میلی ثانیه توی لوپ یه batch که شامل مثلا 20 کلید تصادفی هست رو بررسی میکنه و اونایی که اکسپایر شدن رو پاک میکنه. اگه توی اون لوپ بیشتر از 25 درصد کلیدها پاک بشن اون رو زباله تشخیص میده و حدس میزنه کلیدهای بیشتری هم اکسپایر شدن پس یه batch دیگه اجرا میکنه و در نهایت لوپ تموم میشه تا دوباره لوپ بعدی.

برای همین برخلاف تصور، کلیدهای cache بالافاصله با اتمام ttl حذف نمیشن و ممکنه برای مدتی توی حافظه سرور باقی بمونن مخصوصا اگه حجم کلیدها بالا باشه.

پ.ن: چک کردن تعداد کلیدها در هر لوپ و تعداد اجرای لوپ‌ در ثانیه توی کانفیگ redis قابل تنظیمه، ولی نکته ای که هست هر چی تعداد رو بالاتر ببرین کلیدها سریعتر حذف میشن اما cpu بیشتری درگیر میشه.

📱 Farshsd Tofighi

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3
This media is not supported in your browser
VIEW IN TELEGRAM
📱 یه روز کاری تو توییچ رو ببینیم

🚀@IranCoderz 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8😭75👍1