Python Hints
8.62K subscribers
170 photos
11 videos
9 files
141 links
Python tips and tricks
The Good, Bad and the Ugly

توی این کانال فقط قرار هست در مورد core python صحبت کنیم.

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

Admin: @Abbasi_ai
Download Telegram
هنوز مقامات ج.ا هیچ صحبتی نکردند.

مارکو روبیو و ... هم این پیام رو تأیید کردند.
👍37🔥5❤‍🔥1👏1
#تجربه
ساختمان داده و الگوریتم؛

بیشترین سوالی که همیشه از من می‌شه؛ چقدر باید
Data structure, Algorithm
بلد باشم و یا چندتا leetcode باید حل کنم ؟

اول سوال دوم رو جواب میدم؛ تعداد leetcode هیچ ربطی به سواد الگوریتم شما نداره و ۲ نوع آدم leetcode زیادی حل می‌کنند :

۱- چالش‌های لیت‌کد براشون تفریح هست و توی اوقات فراغت ترجیح میدند اینکار رو انجام بدند.

۲- درک درست از algorithm, data structure پیدا نکردند و در تلاش هستند برای حفظ کردن پترن (که اصلاً هم کار بدی نیست)

مسئله اینه که درواقعیت
Data structure, Algorithm
خیلی شبیه به شطرنج می‌مونه؛ افراد خیلی خیلی کمی توی دنیا وجود دارند که الگوی جدیدی رو بنام خودشون ثبت می‌کنند اما باقی افراد فقط پترن‌های پرتکرار رو تمرین و حفظ می‌کنند.

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

اما یک راهکار بهتر هم هست؛ که ۹۹٪ اپلیکیشن‌ها به شما نمی‌گه (پول توی این هست که شما زمان طولانی‌تری برای یادگیری صرف کنید) راهکار بهتر چیه ؟
اول توضیح هدف:

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


همین توضیح نیاز شما به انجام ۲۰۰ تا تمرین رو به ۱۰ میرسونه.

زمانی که خصوصی برای مصاحبه آموزش میدادم (چندین سال قبل) همیشه بعد از بررسی هر
Data Structure
به افراد یاد میدادم با خوندن سوال اون‌ها رو دسته بندی کنند؛ تمرین بین جلسات هم همین بود.
مثلاً اگر آرایه‌ها رو بررسی کردیم؛ سوالات مربوط به آرایه‌ها رو پیدا کنند، و ۱۰۰ مورد رو بررسی و دسته‌بندی کنند شاید ۴-۵ دسته می‌شدند.

بعد از بررسی الگوریتم‌های مهم آرایه‌ها؛ فقط کافی بود از هر دسته ۱ سوال یا نهایتاً ۲ سوال رو حل کنند.

و اینطوری با تعداد خیلی کمتری حل leetcode به موفقیت می‌رسیدند (معمولاً کمتر از ۳ ماه وقت داشتند)


اما سوال اول؛
چقدر
Data Structure, Algorithm
باید بلد باشیم ؟

برای مصاحبه همه‌ی موارد رو باید بشناسید؛ اما مثلاً برای مصاحبه جونیور هیچوقت از شما red black tree پرسیده نمی‌شه یا مثلاً شاید حتی Trie پس بسته به سطح مصاحبه روی مباحث مختلف وقتتون رو تنظیم کنید.

اما توی کار چطور ؟
خیلی بستگی به نوع کار شما داره؛ مثلاً اگر توسعه دهنده دیتابیس باشید حتماً باید B-tree و انواع موارد بهبود یافته اون رو حتی بهتر از array بشناسید.

اما اگر نه؛ ممکنه هیچوقت بهش نیاز نداشته باشید.
توی ۳ سال اخیر برای من فقط یکبار از Trie لازم شده استفاده کردم، اونم برای پردازش string


پس؛ سعی کنید پترن‌ رو یاد بگیرید بدون اینکه مسئله حل کنید. توی لیت‌کد باید سوالاتی که بنظرتون تکنیک حل یکسان داره رو شناسایی کنید و کنار هم قرار بدید.
تمرکز رو روی مباحثی بذارید که بیشتر به سطح شما میخوره و باقی مباحث رو فقط یکبار بخونید که باهاش آشنا باشید.
شغلی که براش اپلای می‌کنید رو بررسی کنید و الگوریتم و ساختمان داده‌های مهم توی اون کار رو به خوبی هرچه تمام‌تر یاد بگیرید.

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

هیچ علاقه‌ای به دوره خصوصی برگذار کردن ندارم دیگه.
👍4626
Python Hints
یک نگاهی به کانال @pytens بندازید (چون جو هوش مصنوعی داغ هست) توی چندین سال اخیر من مشاور خیلی پروژه‌های داخلی و خارجی بودم توی مواردی که بیزینس یا همکاری با تیم‌های تحقیقاتی بهم یاد داده فهمیدم که تمرکز کسی که میخواد واقعا توی این زمینه کار خوب انجام بده…
این پست و پست قبلیش رو بخونید
بخصوص دوستانی که تازه وارد کانال شدند؛


چون دست به forward شدید بسیار؛ خیلی از پست‌ها بیش از ۱۷۰-۱۸۰ بار forward می‌خوره و مطمئنم مقاومت اینکه کانال رو به باقی معرفی نکنید درون خیلی‌هاتون وجود داره. 😬
20❤‍🔥4👍3
و تمام!!!!

اعلام آتش‌بس توسط هر دو طرف.

آپدیت :

عجب خر تو خری شد؛

عراقچی؛ از ۴ صبح آتش بس می‌تونه صورت بگیره.
اسرائیل میزنه تا آخرین ثانیه‌ها

سپاه؛ خب ماهم با چندتا موشک جواب میدیم چون ثانیه‌های آخر سنگین زده

اسرائیل؛ اینارو رهگیری می‌کنیم، میگیم به اهداف جنگ رسیدیم و تمام.

خبرگزاری‌های آمریکا؛ ونس، ویتکاف، روبیو با مقامات ایران مذاکره مستقیم و غیرمستقیم داشتند.
ترامپ؛ چندتا پست درمورد صلح:
بخصوص، صلح با زور

همه چیز بنظر صلح میاد؛

سپاه، دوباره شلیک ۱ موشک به سمت حیفا.
مثل اینکه آتش بس پذیرفته نشده.


بنظر میاد؛ ترامپ هم پست‌هاش راجب صلح رو پاک کرده (کندی اینترنت اجازه بررسی به بنده نداد)

واقعاً خاورمیانه از فیلم ترکی و فیلم هندی هم غیرقابل پیش‌بینی تر هست
👍32❤‍🔥22
Please open Telegram to view this post
VIEW IN TELEGRAM
57
Forwarded from RandRng
اینو یکی از دوستانم توی گروه فرستاد :

یک باگ امنیتی جدی روی WinRAR پیدا شده (critical) هست.

اگر ازین ابزار استفاده می‌کنید؛ حتماً هرچه سریعتر به آخرین نسخه آپدیت کنید.
👍296
#هشدار مجدد؛

حواستون به دعوت به همکاری‌های با کار دلاری و یورویی باشه!

مجدداً زیاد شده؛ اگر بهتون سورس کد دادن که روی سیستم خودت اجرا کن و فلان فیچر رو بهش اضافه کن.

اول دقیق سورس کد رو بخونید؛
دوم دقیق سورس کد رو بخونید؛
سوم راجب شرکت تحقیق کنید؛
چهارم درخواست بدید با ایمیل شرکت براتون ارسال بشه (رو دامنه اصلی)؛
پنجم کد رو روی محیط مجازی باز کنید، اگر حتی ۱ دونه dependency داشت که نمی‌شناختید.


متأسفانه این مدت خیلی زیاد شده (بسیاری از بچه‌ها که از قدیم پست‌های کانال‌های بنده رو خوندن می‌دونستند) و خیلی‌هاتون بهم اطلاع دادید.

ولی امروز یک قربانی جدید گرفت و متأسفانه کیف پول دیجیتال این دوستمون رو خالی کردند.
👍927
Python Hints
یک نمونه exploit خیلی ساده برای تست؛ سورس کد رو گذاشتم که خودتون اجرا کنید و مطمئن باشید امن هست. اما بجای ls میشد هرکار دیگری هم کرد یا خوندن passwd می‌شد خیلی کارهای دیگه‌ای کرد. هیچوقت هیچ فایل Pickle ایی رو از کسی قبول نکنید اگر قبول کردید روی سیستم…
اینم یک یادآوری قدیمی؛

یادآوری کنم ؟
کمتر از ۱ سال پیش huggingface سرورهاش اینطوری هک شد!
شانس خوبش این بود که تیم امنیتی کلاه سفید بود و بهش گزارش داد.

اون موقع گفتم :

بنظر میاد بچه‌های huggingface پست‌های مارو نمی‌خونند.
👍384❤‍🔥1🔥1
پسر اینترنت با vpn حداقل ۳ برابر سرعت دانلود بهتری داره 😂
👍94❤‍🔥2👏1
Python Hints
💪 Sticker
#موقت

وقتی تو ایران بعنوان تیم برنامه‌نویسی یا IT یا ... کار می‌کنی
👍33
Python Hints
#موقت وقتی تو ایران بعنوان تیم برنامه‌نویسی یا IT یا ... کار می‌کنی
.... این همه نفت تو خاورمیانه رو می‌بینی ؟

تیرکس رو هم می‌شناسی ؟ همون دایناسور ...... که همرو میخورده

ببین توی خاورمیانه اون جوری به چخ رفته که نفت در اومده ازش؛ حتی استخونش هم نمونده.

بعد هنوز یک سری .... به درست شدن این خاورمیانه ..... اعتقاد دارند.


#موقت

پیام Qoute شده بالا از چت من با یک دوست عزیز هست؛ دقیقاً پیامی که توی صحبت‌ها راجب خاورمیانه و اینکه از ایران بره رو عیناً کپی کردم.

فقط جاهایی که .... گذاشتم خودتون بجاش فحش بذارید چون من اونجاها فحش داده بودم (شرایط جنگ و قطعی اینترنت بود این بحث)
👍327🔥6👏3
این سایت رو یکی از دوستان توی گروه معرفی کرد و سوال پرسید راجبش :

MyLink

بنظرم برای آموزش مورد خوبی بنظر میاد؛ هم متنی هست هم اپلیکیشن موبایل داره هم چالش و ...

من یک نگاه کلی انداختم و بنظرم مطالب خوبی هم داره (حیف که Rust رو نداره) مهمترین نکته‌اش اینه که تمرکزش روی چیزهایی هست که برای استخدام شدن بهش نیاز دارید.

اگر با لینکی که دادم ثبت‌نام کنید؛ 100gem می‌گیرید و روزانه هم دنبال کنید و ...
اگر تعداد refer بالا رفت؛ شخصا سعی می‌کنم توی این چندروز Django, SQL رو دنبال کنم و اگر خوب بود بهتون پیشنهاد می‌دم که حتما انجام بدید و سایت رو دنبال کنید.

اگر خواستید اینکار انجام بشه (من بخونم و دقیق نظر بدم) فقط کافیه با لینک بالا ثبت‌نام کنید و ۱ چالش رو هم انجام بدید.

پ.ن:
فکر میکنم بعد از هر درس و پروژه و ... سطح شما و میزان حقوق بین‌الملل رو هم حدود بهتون بگه.
28👍17
Python Hints
این سایت رو یکی از دوستان توی گروه معرفی کرد و سوال پرسید راجبش : MyLink بنظرم برای آموزش مورد خوبی بنظر میاد؛ هم متنی هست هم اپلیکیشن موبایل داره هم چالش و ... من یک نگاه کلی انداختم و بنظرم مطالب خوبی هم داره (حیف که Rust رو نداره) مهمترین نکته‌اش اینه…
بخشی از لیست موضوعات و مدارک ارائه شده.

فقط فراموش نکنید؛ باید حتما ۱ تاپیک رو انجام بدید تا به من هم Gem بده (بعدش دوره Django, SQL رو بررسی می‌کنم)

چون دیدم خیلی از دوستان ثبت‌نام کردند ولی تعداد کمی شروع کردن به انجام topic ها
23👍2
یک ابزار داریم (روی Rust) که توی چندتا بخش نیاز به پردازش یک سری header های درخواستی که میاد داره.
یا مثلا بعضی جاها کاربر می‌تونه permission هارو باهاشون کار کنه و ...

همیشه خیلی سریع پردازش انجام می‌شد و تمام؛ دیروز یکی از مشتری‌ها اعلام کرد که ابزار خیلی کند شده (برای یک سرور خاص البته) بعد از کلی بررسی متوجه شدم :

تعداد فایل‌هایی که روی این سرور دارند خیلی خیلی زیاد هست ولی چون حجم خیلی خیلی پایینی داره اکثرا و توی یک هارد کوچیک جا شده؛ مشتری توقع داره سرعت بالاتر باشه.
نسبت به سروری که مثلا ۵۰۰ تا فایل ۱۰ گیگ داره.

حدودا ۳۲-۳۴٪ سرعت با تغییر operator های معمولی چک کردن هدر و پردازش permission, .... به Bitwise operator بدست اومد.
گفتم یک مثال هم اینجا بزنم؛ فقط توی این مثال به چندتا چیز توجه کنید:

۱- زوج بودن عدد محاسبات سنگینی نداره هرچند؛ محاسبه باقی‌مانده از AND گرفتن سنگین تر هست.

۲- پایتون زبان سطح بالاس؛ محاسبه باقی مانده و AND سربارهای پایتونی داره که باعث میشه تفاوت کمتر بشه و CPython هم بسیار اپتیمایز شده هست.

۳- مثال خیلی ساده هست.

با این حال مفهوم رو آموزش میده و تفاوت اندک هم میشه دید.
👍195
Python Hints
یک ابزار داریم (روی Rust) که توی چندتا بخش نیاز به پردازش یک سری header های درخواستی که میاد داره. یا مثلا بعضی جاها کاربر می‌تونه permission هارو باهاشون کار کنه و ... همیشه خیلی سریع پردازش انجام می‌شد و تمام؛ دیروز یکی از مشتری‌ها اعلام کرد که ابزار خیلی…
اگر خواستید تفاوت بیشتری ببینید و تمرین کنید؛ روی پکت‌های DNS کار کنید.
codecrafters

یک تسک براش داره (قبلا معرفی شده)
و سعی کنید روی اون‌ها کار کنید.

در نهایت برای یادگیری این تریک‌ها (چون میدونم می‌پرسید) می‌تونید راجب Competitive Programming بخونید؛ مقدماتی هست این مباحث ولی بیشتر اونجاها بصورت تریک گفته می‌شه وگرنه که Computer Science درس اول راجب سیستم اعداد اینارو داریم.
19👍1
Python Hints
یک ابزار داریم (روی Rust) که توی چندتا بخش نیاز به پردازش یک سری header های درخواستی که میاد داره. یا مثلا بعضی جاها کاربر می‌تونه permission هارو باهاشون کار کنه و ... همیشه خیلی سریع پردازش انجام می‌شد و تمام؛ دیروز یکی از مشتری‌ها اعلام کرد که ابزار خیلی…
پرسیدید؛ چرا AND انجام شده؟

هرعددی نهایتاً بصورت binary توی کامپیوتر ذخیره میشه مثلاً 10 میشه (۸بیتی در نظر بگیریم)

00001010
یا برای 5 می‌شه
00000101

اولین عدد سمت راست همیشه 2⁰ رو ضربدر خودش می‌کنه تا به دسیمال همون سیستم عددی خودمون تبدیل بشه.

2⁰=1
هست، پس اگر سمت راستی ترین بیت 1 باشه اون عدد فرد هست.
👍224
Python Hints
این سایت رو یکی از دوستان توی گروه معرفی کرد و سوال پرسید راجبش : MyLink بنظرم برای آموزش مورد خوبی بنظر میاد؛ هم متنی هست هم اپلیکیشن موبایل داره هم چالش و ... من یک نگاه کلی انداختم و بنظرم مطالب خوبی هم داره (حیف که Rust رو نداره) مهمترین نکته‌اش اینه…
نظرم روی سایت قبلی:

سایت خوبی هست؛ اما من طرفدارش نیستم.
احتمالا قبل از خواب بهش نگاه کنم؛ یا اینکه فقط بپرم و سوالاش رو حل کنم.

برای کسی که تازه وارد هست سایت خیلی خوبیه (مخصوصا اگر روزی ۱۰ دقیقه بیشتر نمی‌خواد توی یک موضوع جدید وقت بذاره)

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

اگر نظرم عوض شد اعلام می‌کنم
👍2810
Python Hints
۳- سایت
libgen.is
رو دنبال کنید، اکثر کتاب‌های معرفی شده اینجا هستند.
دوستان libgen.is هنوز فعال هست اما ممکنه بعضی ISP ها برخی از دامنه‌های libgen رو بلاک کنند.

با سرچ می‌تونید دامنه‌های مختلفش رو پیدا کنید؛ فقط حواستون باشه گوگل خیلی سرچ انجین خوبی برای این موارد نیست و حتما هم باید Safe Search اون رو خاموش کنید.

دامنه libgen.li و libgen.gs رو تست کردم و بلاک نشده.

ولی برای جستجو بهتر:
duckduckgo.com
yandex.com
موتور جستجوی بهتری هستند.
❤‍🔥22👍114
Python Hints
#تجربه ساختمان داده و الگوریتم؛ بیشترین سوالی که همیشه از من می‌شه؛ چقدر باید Data structure, Algorithm بلد باشم و یا چندتا leetcode باید حل کنم ؟ اول سوال دوم رو جواب میدم؛ تعداد leetcode هیچ ربطی به سواد الگوریتم شما نداره و ۲ نوع آدم leetcode زیادی…
راجب این موضوع و leetcode :

یک سری مشکلات رو با leetcode و یا data structure, algo این چندروز مطرح کردید که منطقی هم بود (منم دنبال راهکار بودم)

۱- وقتی تگ‌های سوال + سطحش رو می‌بینم می‌فهمم چطوری باید حلش کرد ولی اگر اون‌ها نباشه تو بعضی سوالات کامل می‌مونم.

۲- خیلی از سوالات leetcode مفهومی هست؛ دقیقا هم نمی‌دونم بدرد کارم میخوره در آینده یا نه و همین بی‌انگیزه‌ام می‌کنه (به این دسته دوستان گفتم که منم همین مشکل رو دارم با leetcode)

۳- سطح بندی leetcode که باعث میشه خیلی‌ها جلوی خودتون رو بگیرید

مورد آخر رو اول بگم؛ تکنیک پست قبلی خیلی مهم هست از هر سطح و موضوع باید یک تعداد مشخصی سوال رو انتخاب کنید برای حل کردن؛ اینکه تو ذهنتون به این فکر می‌کنید :
نکنه فلان سوال که سطح ساده/متوسط هم داره یک نکته جدید داشته باشه نسبت به این یکی

یک اشتباه بزرگ هست.
به خودت سخت نگیر؛ مطمئن شو مفاهیم رو یاد گرفتی.

اما برای مورد دوم و اول؛ چندروزی بود که داشتم جستجو می‌کردم و نهایتا یک سایت رو پیدا کردم :

MyLink

فرقش چیه ؟ سوالاش کاربردی تر هست؛ می‌تونید جوابهای دیگران رو ببیند. براش الگوریتم و زمان و ... مهم نیست و مهم حل کرده مسئله هست که همین چون ذهن رو آزاد می‌کنه باعث میشه بیشتر خوش بگذره (البته خیلی هم کد داغون نمی‌تونید بزنید چون تهش تست اجرا نشده؛ زمان تموم میشه)
وقتی مسئله رو حل کردید؛ براساس رای دیگران می‌تونید جوابهای رو ببیند:
best practice, clever, ...

دسته بندی‌هایی هست که وجود داره.

راجب سطح سوالات:
موقع ثبت‌نام سطح فعلی و توانایی و زبانی که می‌خوای تمرین کنی رو ازت می‌پرسه؛ بعد براساس اون فیلدهایی که پر کردی سوالات رو بهت نشون میده.
مثلا دسته بندی :
Fundamental, Rank-Up, Practice and Repeat
وجود داره براش.

خلاصه لزوما ساختمان داده و الگوریتم نیست بلکه تمرین بهتر شدن توی زبان برنامه‌نویسی هست که انتخاب کردید و درنهایت سوالاش خیلی بدرد مصاحبه میخوره (چندتاییش رو برداشتم)
👍256