یک ساعت نوشتم کنسل زدم پاک شد :/ (متن آپدیت میشه)
این هم یک روش استفاده زا
که خب قطعا من طرفدارش نیستم به دو دلیل :
۱- کدهای بیشتری لازمه؛ طبعا بعد از اتمام هم پاک کردنش دردسر بیشتری داره.
توی مورد
۲- خروجی
حالا شاید بگید خودت گفتی اصولی اینه که
نکته خوبیه ولی سطحی نبینیم :
من تا حالا پروژهای رو ندیدم که با تفییر یک خط کد توی یک تابع
این هم یک روش استفاده زا
line_profiler
هست که دیدم استفاده میشه برای اینکه نیاز نباشه از دستور kernprof -l -v
استفاده کنید.که خب قطعا من طرفدارش نیستم به دو دلیل :
۱- کدهای بیشتری لازمه؛ طبعا بعد از اتمام هم پاک کردنش دردسر بیشتری داره.
توی مورد
decorator
(قبلی) فقط کافی همون رو search & replace
بزنید با هیچی ۲- خروجی
profiling
رو ذخیره نمیکنید با این روش (که قبلا گفتم حداقل دو نسخه دارید یکی قبل تغییر یکی بعد از تغییر)حالا شاید بگید خودت گفتی اصولی اینه که
line_profile
بعد از cProfile
اجرا بشه و خروجی cProfile
رو هم داریم ذخیره میکنید پس نیازی نداریم دیگه ؟نکته خوبیه ولی سطحی نبینیم :
من تا حالا پروژهای رو ندیدم که با تفییر یک خط کد توی یک تابع
optimize
بشه و تمام پس نیاز میشه این فایلها؛ نکته بعدی حجم خروجی line_profile
چیزی نیست که بعد سر نداشتنش بخواهید با تیم سر اینکه چرا یک خط کد ناخواناتر شده بحث کنید (توی مثال بالا ۲۷۲ بایت
هست)👍17⚡2❤2🆒2
Forwarded from Rust for Python developers
این یکی واقعاً جالبه، جایگزین
Flake8, isort, black, pyupgrade, ...
با سرعت خیلی بیشتر.
Ruff
که با Rust نوشته شده، و پروژه
Scipy, Pandas, FastApi, ...
هم سمتش رفتند.
Flake8, isort, black, pyupgrade, ...
با سرعت خیلی بیشتر.
Ruff
که با Rust نوشته شده، و پروژه
Scipy, Pandas, FastApi, ...
هم سمتش رفتند.
docs.astral.sh
Ruff
An extremely fast Python linter and code formatter, written in Rust.
🔥24👍5❤1☃1
چندروز پیش یکی از دوستان ازم کمک خواست روی بررسی جوابی که به سوال مصاحبه داده بود؛ سوال برای سطح
ساده شده صورت مساله این بود :
اصل سوال بصورت توضیحات بخشی از یک پروژه بود که یادم نیست و شخص باید خودش تشخیص میداد چیکار کنه که من اون بخش رو هم توی سادهسازی گفتم دقیقا چی میخوام
پیادهسازی یک
این
پشتیبانی از اضافه کردن
همیشه فکر میکردم سوالات سخت همواره از مباحث درخت و ... هست (نه چیزهای ساده مثل مورد بالا) اما جوری توی پروژه واقعی گنجانده شده بود؛ صورت مساله اصلی رو میگم. که تبدیلش به اینکه دقیقا خود مساله چی میخواد حدود ۲۰ دقیقه وقت گرفت.
کل جلسه مصاحبه ۲ ساعت بود.
چندتا راهنمایی :
بعد از همین مورد برای
واقعا بنظرم سوال پر چالشی بود و توی این مصاحبه میشد به راحتی :
۱- نحوه حل مسئله
۲- میزان تمرکز
۳- میزان دقت
۴- نحوه کد زدن
۵- سواد پایتون
۶- سواد ساختمان داده و الگوریتم
۷- کنترل فشار عصبی و ...
رو تماما امتیازدهی کرد؛ بسیار سوال هوشمندانه و زیرکانهای بود بنظر من برای همین خواستم با شما هم به اشتراک بذارم (البته یک سری شرطها و شرایط خاص هم داشت که من از اونها گذشتم که خیلی طولانی نشه متن)
mid-level, senior
مطرح شده بود (ولی سطحش بالاتر از مدیور هست.)ساده شده صورت مساله این بود :
اصل سوال بصورت توضیحات بخشی از یک پروژه بود که یادم نیست و شخص باید خودش تشخیص میداد چیکار کنه که من اون بخش رو هم توی سادهسازی گفتم دقیقا چی میخوام
پیادهسازی یک
Ring Buffer
در پایتون بطوریکه بجای استفاده از لیستها از Circular Double Linked List
استفاده کنید؛ (پیاده سازی هر ۲ مورد با خود کاربر هست) این
Circular Double Linked List
شما باید یک ویژگی مهم رو داشته باشه :پشتیبانی از اضافه کردن
node
ها با استفاده از ایندکس دهی منفی.همیشه فکر میکردم سوالات سخت همواره از مباحث درخت و ... هست (نه چیزهای ساده مثل مورد بالا) اما جوری توی پروژه واقعی گنجانده شده بود؛ صورت مساله اصلی رو میگم. که تبدیلش به اینکه دقیقا خود مساله چی میخواد حدود ۲۰ دقیقه وقت گرفت.
کل جلسه مصاحبه ۲ ساعت بود.
چندتا راهنمایی :
Ring Buffer = Circular Queue
———Circular Double Linked List
رو باید اول پیادهسازی کنید؛ سریعترین راهکار اینه که اول linked list
رو پیاده سازی کنید؛ بعد همین رو تبدیل به نسخه circular
کنید بعد همین کد رو به double linked list
تبدیل کنید و در نهایت توی متد insert
ایندکسهای منفی رو هم پشتیبانی کنید.بعد از همین مورد برای
Ring Buffer
استفاده کنید (خیلی معقول بنظر نمیاد و دقیقا هم موضوع همین هست؛ قطعا چیزی که معقول نیست رو کتابی راجبش صحبت نکرده - شما هم روش تمرینی نداشتید)واقعا بنظرم سوال پر چالشی بود و توی این مصاحبه میشد به راحتی :
۱- نحوه حل مسئله
۲- میزان تمرکز
۳- میزان دقت
۴- نحوه کد زدن
۵- سواد پایتون
۶- سواد ساختمان داده و الگوریتم
۷- کنترل فشار عصبی و ...
رو تماما امتیازدهی کرد؛ بسیار سوال هوشمندانه و زیرکانهای بود بنظر من برای همین خواستم با شما هم به اشتراک بذارم (البته یک سری شرطها و شرایط خاص هم داشت که من از اونها گذشتم که خیلی طولانی نشه متن)
👍30❤4⚡1
Python Hints
چندروز پیش یکی از دوستان ازم کمک خواست روی بررسی جوابی که به سوال مصاحبه داده بود؛ سوال برای سطح mid-level, senior مطرح شده بود (ولی سطحش بالاتر از مدیور هست.) ساده شده صورت مساله این بود : اصل سوال بصورت توضیحات بخشی از یک پروژه بود که یادم نیست و شخص باید…
اضافه کردن node با ایندکس منفی
۱- چیزی که پیادهسازی نکنم رو راجبش پست نمیذارم (البته منم مثل شرایط مصاحبه همون لحظه کد زدم)
۲- یک راهنمایی دیگه؛ حتما len رو پیاده سازی کنید برای
۳- اگر کمکی لازم بود توی پیاده سازی حتما بپرسید (خوشحال میشم بتونم کمک کنم)
۱- چیزی که پیادهسازی نکنم رو راجبش پست نمیذارم (البته منم مثل شرایط مصاحبه همون لحظه کد زدم)
۲- یک راهنمایی دیگه؛ حتما len رو پیاده سازی کنید برای
Overflow (Ring buffer)
بهش نیاز دارید ۳- اگر کمکی لازم بود توی پیاده سازی حتما بپرسید (خوشحال میشم بتونم کمک کنم)
❤13👍7
متن این تصویر نصف ایران رو بدبخت کرده
نصف دیگه هم که نکرده، تو عمرشون برنامهنویس نبودند.
برنامهنویس سرمایه گذار شرکت شما نیست، به اندازه شما مطمئن به کار و ایده شما برای پیشرفت نیست (توی بهترین حالت اگر شما ۱۰۰٪ مطمئن از پیشرفت هستید برنامهنویس باید روی ۶۰-۷۰٪ بشینه بیش از اینش توهم و حرف هست)
این حق هر برنامهنویسی هست که موقع همکاری با شما با هرجایی که فکر میکنه بهتر هست و به پیشرفتش بیشتر کمک میکنه مصاحبه بده.
حتی اگر پیشرفتی هم نباشه براش و هم سطح کار شما باشه، برنده شرکتی هست که مزایا + برخورد بهتر + امنیت فکری بیشتری رو به نیرو ارائه میده
به همهی برنامهنویس ها هم باید بگم :
قبل از جابجایی مطمئن بشید ۲ بار فکر میکنید، جابجایی توی بهترین حالت هم همیشه ۱۰-۲۰٪ ریسک هست
اما پایندی به شرکتی لطف شما هست نه وظیفه شما.
پ.ن : این تصاویر هوشمندانه انتخاب میشهها، ارتباط شما با شرکت رو مثل روابط عاطفی و خانوادگی نشون میده (اون جمله احمقانه، ماها یک خانواده هستیم هم همین بود)
البته رابطه عاطفی کاملاً یکطرفه، شما پایبند میمونید ولی شرکت به وقت بینیازی شمارو اخراج میکنه
نصف دیگه هم که نکرده، تو عمرشون برنامهنویس نبودند.
برنامهنویس سرمایه گذار شرکت شما نیست، به اندازه شما مطمئن به کار و ایده شما برای پیشرفت نیست (توی بهترین حالت اگر شما ۱۰۰٪ مطمئن از پیشرفت هستید برنامهنویس باید روی ۶۰-۷۰٪ بشینه بیش از اینش توهم و حرف هست)
این حق هر برنامهنویسی هست که موقع همکاری با شما با هرجایی که فکر میکنه بهتر هست و به پیشرفتش بیشتر کمک میکنه مصاحبه بده.
حتی اگر پیشرفتی هم نباشه براش و هم سطح کار شما باشه، برنده شرکتی هست که مزایا + برخورد بهتر + امنیت فکری بیشتری رو به نیرو ارائه میده
به همهی برنامهنویس ها هم باید بگم :
قبل از جابجایی مطمئن بشید ۲ بار فکر میکنید، جابجایی توی بهترین حالت هم همیشه ۱۰-۲۰٪ ریسک هست
اما پایندی به شرکتی لطف شما هست نه وظیفه شما.
پ.ن : این تصاویر هوشمندانه انتخاب میشهها، ارتباط شما با شرکت رو مثل روابط عاطفی و خانوادگی نشون میده (اون جمله احمقانه، ماها یک خانواده هستیم هم همین بود)
البته رابطه عاطفی کاملاً یکطرفه، شما پایبند میمونید ولی شرکت به وقت بینیازی شمارو اخراج میکنه
👍59❤9
توی ادامه بحث
مثل منم باشید
برای پروفایلینگ مموری معمولا از کتابخونه
استفاده میشه ؛ اما حقیقتا شخصا ۶ ماه هست که جایگزین پیدا کردم و چقدر خوشحالم بابت این موضوع :
دقت کنید مصرف مموری کتابخونه
اما چطور ازش استفاده کنیم ؟
همینجا یک موضوع دیگه رو هم بگم (خودتون بخونید) یک پلاگین هم برای
profiling
اینبار میرسیم به اهمیت حافظه؛ وقتی از یک تازه سنیور شده از پروفایلینگ بپرسید راجب cpu
و ... صحبت میکنه از یک با تجربه بپرسید اهمیت مصرف حافظه در کنار زمان اجرا رو هم بهتون میگه مثل منم باشید
profiling GPU
رو هم گذارش میدید (البته به قدرت قبلیها نیست ولی از نداشتنش بهتره)برای پروفایلینگ مموری معمولا از کتابخونه
memory_profiler
استفاده میشه ؛ اما حقیقتا شخصا ۶ ماه هست که جایگزین پیدا کردم و چقدر خوشحالم بابت این موضوع :
memrayکه تصویر بالا خروجی اجرای live هست واقعا پروردگار اطلاعات دقیق مصرف مموری هست.
دقت کنید مصرف مموری کتابخونه
C, Rust, ...
هم که ایمپورت کردید توی پروژه و داره استفاده میشه رو نشون میده که خیلی خیلی مهمه.اما چطور ازش استفاده کنیم ؟
$ pip install memray
همینجا یک موضوع دیگه رو هم بگم (خودتون بخونید) یک پلاگین هم برای
pytest
داره که میتوندی بعدا دنبال کنیدpytest-memray
❤25👍3❤🔥2
Python Hints
توی ادامه بحث profiling اینبار میرسیم به اهمیت حافظه؛ وقتی از یک تازه سنیور شده از پروفایلینگ بپرسید راجب cpu و ... صحبت میکنه از یک با تجربه بپرسید اهمیت مصرف حافظه در کنار زمان اجرا رو هم بهتون میگه مثل منم باشید profiling GPU رو هم گذارش میدید (البته…
سادهترین راه اجرای
ازین دستورات استفاده کنید :
peak memory usage
(بیشترین مصرف مموری در طول اجرای کد) رو بهتون نشون میده.
باقی موارد به ازای هر خط کد یا
پ.ن: همیشه فایل
توی پستهای بعدی میگم چرا .
memray
استفاده از دستور run
هست + flamegraph
همونطور که قبلا گفتم خروجی تمام پروفایلینگهارو باید نگه دارید و نمودار لایو اینکار رو نمیکنه پس قبل از استفاده از نمودار لایو (حین اجرای برنامه تمام دستورات و مصرف مموریهارو نشون میده)ازین دستورات استفاده کنید :
$ memray run <my-script>.pyبعد از اجرا یک فایل با پسوند
bin
برای شما ذخیره میشه که تمام اطلاعات مورد نیاز داخل همین فایل هست.memray flamegraph <some-naming>.binبعد از اجرای دستور بالا یک فایل
html
برای شما ایجاد میشه که اگر با مرورگر باز کنید چیزی مشابه تصویر بالا خواهید داشت. تنها نکتهای که راجب این تصویر لازمه بگم بخش stats
هست که peak memory usage
(بیشترین مصرف مموری در طول اجرای کد) رو بهتون نشون میده.
باقی موارد به ازای هر خط کد یا
import
, .... مصرف مموری رو نشون میده (مثال من شاید خیلی خوب نباشه)پ.ن: همیشه فایل
.html
رو همراه با .bin
روی سیستم خودتون خروجی بگیرید و نگهدارید.توی پستهای بعدی میگم چرا .
❤19⚡1✍1
Python Hints
سادهترین راه اجرای memray استفاده از دستور run هست + flamegraph همونطور که قبلا گفتم خروجی تمام پروفایلینگهارو باید نگه دارید و نمودار لایو اینکار رو نمیکنه پس قبل از استفاده از نمودار لایو (حین اجرای برنامه تمام دستورات و مصرف مموریهارو نشون میده) ازین…
دستور
این حالت برای وقتایی هست که میخواید اثبات کنید
گرفتن ریپورت
بجای گزارشات کلی که توی تغییر سایز
همونطور که از اسمش پیداس میگه اگر از
از بین ۳ تا آپشن بالا توی این مدت شخصا فقط از
اما دوتا آپشن دوست داشتنی دیگه هم وجود داره :
همیشه بعد از اینکه دستور
هم همین کار رو میکنه اما گزارشات رو روی یک
پر استفادهترین حالت بعد از
حتما برای کاستومایز کردن خروجیها و بررسی دقیقتر داکیومنتش رو نگاه کنید (سعی کردم مهمترین مواردی که شخصا استفاده میکنم رو بگم فقط).
run
چندتا option
هم داره که هرکدوم توی شرایط خاص استفاده میشه :memray run --native <my-script>.py
این حالت برای وقتایی هست که میخواید اثبات کنید
numpy
, pandas
, ... هستند که دارند ازین میزان رم استفاده میکنند یا اینکه میخواهید بین توابع مختلفی که پیکجها ارائه میدهند مقایسه انجام بدید.گرفتن ریپورت
html
روی این حالت میتونه طولانی باشه (جزو حالاتی هست که هم bin
هم html
بهتره روی یک سیستم خروجی گرفته بشه)memray run --trace-python-allocators <my-script>.py
بجای گزارشات کلی که توی تغییر سایز
memory pool
گرفته میشه به ازای ایجاد و از بین رفتن هر آبجکت براتون گزارش مموری میده که باز هم خروجی خیلی کندتری خواهد داشت؛ و البته اطلاعات بسیار بیشتر. memray run --follow-fork <my-script>.py
همونطور که از اسمش پیداس میگه اگر از
parent process
فورک گرفته شد وضعیت مموری اون child process
رو هم توی ریپورت بیار.از بین ۳ تا آپشن بالا توی این مدت شخصا فقط از
native
استفاده کردم چندبار (باقی موارد رو نیاز نداشتم)اما دوتا آپشن دوست داشتنی دیگه هم وجود داره :
memray run --live <my-script>.py
همیشه بعد از اینکه دستور
run
رو اجرا کردم (ذخیره بشه) و بعد گزارش html
رو آماده کردم؛ تا وقتی دارم روی memory optimization
کار میکنم تنها دائما از live option
استفاده میکنم و ... رو بهم میده (برای
PID, Thread, Samples, Duration, Max heap size, current heap size
current heap size
) چون توی حالت لایو سریع تغییر میکنه از استفاده میکنم توی جایی که مشکوک هستم به میزان مصرف مموری و اینجوری ی پنجره ۱۰ ثانیهای برای خودم باز میکنم تا دقیق بررسی کنم توی رم چه اتفاقی داره رخ میده.
time.sleep(10)
memray run --live-remote <my-script>.py
هم همین کار رو میکنه اما گزارشات رو روی یک
port
خاص میفرسته (بازم من ازش استفاده نکردم)memray run --live --native <my-script>.py
پر استفادهترین حالت بعد از
live option
برای من استفاده ترکیبی از live
و native
هست (البته که حوصله آدم سر میره بعضی وقتها تا گزارشش آماده بشه)حتما برای کاستومایز کردن خروجیها و بررسی دقیقتر داکیومنتش رو نگاه کنید (سعی کردم مهمترین مواردی که شخصا استفاده میکنم رو بگم فقط).
👍14❤8⚡1🌚1
برای دوستانی که بهونه سابقه کاری میآوردند
همونطور که تو جلسه رزومه نویسی گفتم، اگر یاد بگیرید و نکاتی که گفتم رو رعایت کنید، در حداقل حالت باید به مصاحبه دعوت بشید.
اینکه به این مرحله نمیرسید بخاطر سابقه کاری و ... نیست (پوزیشن جونیور)
بلکه بخاطر عدم توانایی شما در نوشتن رزومه هست.
پ.ن : از ایشان برای اشتراک گذاری تصویر اجازه گرفته شد.
همونطور که تو جلسه رزومه نویسی گفتم، اگر یاد بگیرید و نکاتی که گفتم رو رعایت کنید، در حداقل حالت باید به مصاحبه دعوت بشید.
اینکه به این مرحله نمیرسید بخاطر سابقه کاری و ... نیست (پوزیشن جونیور)
بلکه بخاطر عدم توانایی شما در نوشتن رزومه هست.
پ.ن : از ایشان برای اشتراک گذاری تصویر اجازه گرفته شد.
👍29👏12❤2🤪1
Search term:
1) IBM north pole chip
2) ResNet50 performance comparison IBM northpole results
👍11✍2
#Security_Alert
مک بازها (آیپد و آیفون هم شامل میشه) :
iLeakage
رو مراقب باشید
مقالهاش هم اومده، که خیلی هم اتک سادهای هست
و اپل هم میگه ۱ ساله میدونیم وجود داره ولی راهی براش نداریم. (امن هستیم چون کسی اسکریپت رو ننوشته)
فکر میکنم مشکل از سختافزار اپل باشه (بخصوص M1) فرصت کنم مقالهاش رو میخونم و اطلاع میدم.
خلاصه که خودتونید و خودتون، خیلی مراقب باشید 😂
بعد از استیو جابز و اون تیم خفن قدیمی، عملکرد اپل مثل ایران بود همش میگه اینو نداریم در عوضش امنیت داریم و ...
که اونم توی سالهای اخیر یکی پس از دیگری داره به فنا میره
بعنوان مثال زمان ارائه
Jailbreak
روی iOS, iPadOS رو مقایسه کنید با قبل.
مک بازها (آیپد و آیفون هم شامل میشه) :
iLeakage
رو مراقب باشید
مقالهاش هم اومده، که خیلی هم اتک سادهای هست
و اپل هم میگه ۱ ساله میدونیم وجود داره ولی راهی براش نداریم. (امن هستیم چون کسی اسکریپت رو ننوشته)
فکر میکنم مشکل از سختافزار اپل باشه (بخصوص M1) فرصت کنم مقالهاش رو میخونم و اطلاع میدم.
خلاصه که خودتونید و خودتون، خیلی مراقب باشید 😂
بعد از استیو جابز و اون تیم خفن قدیمی، عملکرد اپل مثل ایران بود همش میگه اینو نداریم در عوضش امنیت داریم و ...
که اونم توی سالهای اخیر یکی پس از دیگری داره به فنا میره
بعنوان مثال زمان ارائه
Jailbreak
روی iOS, iPadOS رو مقایسه کنید با قبل.
👍22😁5❤3🗿2👎1🙏1💔1
توی این هفته ۴ بار، یک سوال مصاحبه قدیمی رو در موردش صحبت پیش اومده؛
داستان چیه، من چندین سال پیش با یک شرکت مصاحبه داشتم و مصاحبه کننده ازم یک سوال
Data structure & Algorithm
پرسید، من سوال رو خیلی سریع توضیح دادم و بعد خیلی سریع هم پاسخ صحیح رو نوشتم، در نهایت از تعجب مصاحبه کننده شک کردم که اشتباهی شده و توضیح دادم که من سطح جونیور نیستم و ... (اشتباه سمت HR بود، چون توی جلسه اول هم پیش اومده بود)
طرف ازم خواست که سوال دیگری رو مطرح کنه و دیدم داره طول میکشه روی همون سوال قبلی بهش یک پیشنهادی دادم که واقعاً خودمم تا اون لحظه کار نکرده بودم و برام جذاب بود چالش قضیه
در نهایت ایشون هم قبول کرد و رفتیم سراغ مسئله (کل جلسه همین سوال طول کشید و درنهایت هم من قبول شدم)
توی این هفته (شایدم ۲ هفته)، یکبار بعنوان مصاحبه کننده، دوبار دوستانه و یکبار هم راهنمایی بعد از مصاحبه برای یکی از دوستان بحث سوال مطرح شد :
همینجا بگم، هیچکس جواب درست حالت سختتر رو نداد.
۱- سوال اصلی مصاحبه خودم :
با استفاده از ساختار داده لیست؛ یک کلاس stack پیاده سازی کنید که یک عدد ورودی به اسم n بگیره و به تعداد n استک ایجاد کنه بطوری که دیتای تمام این استکها داخل فقط و فقط ۱ لیست ذخیره بشه.
سوال خیلی سادهاس اما دوتا پرسش داره :
۱- آیا طول لیست از پیش تعریف شده هست؟ (که قطعاً میگن بله)
۲- آیا طول stack ها باهم برابر هست ؟ (جواب اینم بله هست)
که خب شما لیست رو به n قسمت تقسیم میکنید و هر قسمت رو به یک استک میدید.
نسخهای که من به ذهنم رسید (خودمم توی مصاحبههام میپرسم) :
۱- فرض کنید طول لیست از قبل مشخص نیست و stack ها میتونند تا بینهایت ادامه داشته باشند (فرض کنید رم بینهایت داریم)
دوتا راهکاری که به ذهن خودم رسید و هنوز توی این چندسال راه دیگهای بهم نگفتند :
۱- هر عنصر لیست، یک tuple باشه که ایندکس اول tuple اندیس stack باشه و ایندکس دوم، دادهایی که ذخیره شده
اما بازم سختش کنیم، شما غیر از نوع دادههای اصلی :
int, float, decimal, ...
چیزی نمیتونید داخل stack نگه دارید (یعنی فقط دیتا)
راهنمای کوچیک راهکار دوم : از Remainder طول فعلی لیست بر n استفاده کنید و ببینید کدوم اندیس برای کدوم stack هست.
بحث سر راهکار من روی آخرین حالت سوال (که خب سوال مصاحبه یکی از دوستان هم بوده، کاملاً اتفاقی) من رو به اینجا رسوند که این موارد مثل جلسه امشب رو یک کاری باهاش بکنیم،
دوره آموزش : قطعاً مخالفم، با هرگونه پول گرفتن از بچههای تازهکار برای آموزش دادن سواد مخالفم بنظرم باید این سواد در دسترس همه باشه چه اونی که از والدینش پول میگیره چه کسی که درحال حاضر توان مالی نداره.
اسپانسر : چندباری پیش اومده، اما نهایتاً هدفشون یا تبلیغ برای فروش دیگر محصولات آموزشی هست، یا اینکه میخوان یک بخشی رایگان باشه و باقی بفروش برسه و ...
خلاصه درآمدی (پول خوبی هم داره)
لایو : که خب محدودیت ۱۰۰ نفر و زمان و ... داریم و خیلیها فرصت نمیکنند شرکت کنند و چون ذخیره هم نمیشه خیلی چیز قشنگی نمیشه نهایتاً
متن و کانال : برای آموزشهای این چنینی واقعاً خوب نیست و خیلی خیلی سخت هست
یوتیوب : مزایایی که داره اینه که شما با دیدن؛ کامنت؛ لایک انگار دارید دوره رو میخرید و پشتیبانی مالی میکنید.
معایب : زمان زیادی میگیره - من واقعاً بلد کار نیستم - subscribe,like,comment نداشته باشه انگیزه خیلی پایین میاد - درآمدی نداره (حداقل اوایل کار) - درصورت عدم حمایت برندسازی خودم خراب میشه - از همه بدتر با توجه به اوضاع اینترنت ایران میترسم خیلی دوستان نتونند روی یوتیوب تماشا کنند و همه موارد قبلی اتفاق بیوفته
اما خیلی دوست دارم یک راهکاری پیدا کنم که حداقل میزانی که خودم بلد هستم مطالب مورد نیاز رو منتقل کنم به دوستان.
همچنان به دنبال راهکار
(ساعت دقیقاً ۵:۳۱ دقیقه صبح هست، و من به تازگی جلسهام تموم شد و این متن رو داغ داغ نوشتم)
داستان چیه، من چندین سال پیش با یک شرکت مصاحبه داشتم و مصاحبه کننده ازم یک سوال
Data structure & Algorithm
پرسید، من سوال رو خیلی سریع توضیح دادم و بعد خیلی سریع هم پاسخ صحیح رو نوشتم، در نهایت از تعجب مصاحبه کننده شک کردم که اشتباهی شده و توضیح دادم که من سطح جونیور نیستم و ... (اشتباه سمت HR بود، چون توی جلسه اول هم پیش اومده بود)
طرف ازم خواست که سوال دیگری رو مطرح کنه و دیدم داره طول میکشه روی همون سوال قبلی بهش یک پیشنهادی دادم که واقعاً خودمم تا اون لحظه کار نکرده بودم و برام جذاب بود چالش قضیه
در نهایت ایشون هم قبول کرد و رفتیم سراغ مسئله (کل جلسه همین سوال طول کشید و درنهایت هم من قبول شدم)
توی این هفته (شایدم ۲ هفته)، یکبار بعنوان مصاحبه کننده، دوبار دوستانه و یکبار هم راهنمایی بعد از مصاحبه برای یکی از دوستان بحث سوال مطرح شد :
همینجا بگم، هیچکس جواب درست حالت سختتر رو نداد.
۱- سوال اصلی مصاحبه خودم :
با استفاده از ساختار داده لیست؛ یک کلاس stack پیاده سازی کنید که یک عدد ورودی به اسم n بگیره و به تعداد n استک ایجاد کنه بطوری که دیتای تمام این استکها داخل فقط و فقط ۱ لیست ذخیره بشه.
سوال خیلی سادهاس اما دوتا پرسش داره :
۱- آیا طول لیست از پیش تعریف شده هست؟ (که قطعاً میگن بله)
۲- آیا طول stack ها باهم برابر هست ؟ (جواب اینم بله هست)
که خب شما لیست رو به n قسمت تقسیم میکنید و هر قسمت رو به یک استک میدید.
نسخهای که من به ذهنم رسید (خودمم توی مصاحبههام میپرسم) :
۱- فرض کنید طول لیست از قبل مشخص نیست و stack ها میتونند تا بینهایت ادامه داشته باشند (فرض کنید رم بینهایت داریم)
دوتا راهکاری که به ذهن خودم رسید و هنوز توی این چندسال راه دیگهای بهم نگفتند :
۱- هر عنصر لیست، یک tuple باشه که ایندکس اول tuple اندیس stack باشه و ایندکس دوم، دادهایی که ذخیره شده
اما بازم سختش کنیم، شما غیر از نوع دادههای اصلی :
int, float, decimal, ...
چیزی نمیتونید داخل stack نگه دارید (یعنی فقط دیتا)
راهنمای کوچیک راهکار دوم : از Remainder طول فعلی لیست بر n استفاده کنید و ببینید کدوم اندیس برای کدوم stack هست.
بحث سر راهکار من روی آخرین حالت سوال (که خب سوال مصاحبه یکی از دوستان هم بوده، کاملاً اتفاقی) من رو به اینجا رسوند که این موارد مثل جلسه امشب رو یک کاری باهاش بکنیم،
دوره آموزش : قطعاً مخالفم، با هرگونه پول گرفتن از بچههای تازهکار برای آموزش دادن سواد مخالفم بنظرم باید این سواد در دسترس همه باشه چه اونی که از والدینش پول میگیره چه کسی که درحال حاضر توان مالی نداره.
اسپانسر : چندباری پیش اومده، اما نهایتاً هدفشون یا تبلیغ برای فروش دیگر محصولات آموزشی هست، یا اینکه میخوان یک بخشی رایگان باشه و باقی بفروش برسه و ...
خلاصه درآمدی (پول خوبی هم داره)
لایو : که خب محدودیت ۱۰۰ نفر و زمان و ... داریم و خیلیها فرصت نمیکنند شرکت کنند و چون ذخیره هم نمیشه خیلی چیز قشنگی نمیشه نهایتاً
متن و کانال : برای آموزشهای این چنینی واقعاً خوب نیست و خیلی خیلی سخت هست
یوتیوب : مزایایی که داره اینه که شما با دیدن؛ کامنت؛ لایک انگار دارید دوره رو میخرید و پشتیبانی مالی میکنید.
معایب : زمان زیادی میگیره - من واقعاً بلد کار نیستم - subscribe,like,comment نداشته باشه انگیزه خیلی پایین میاد - درآمدی نداره (حداقل اوایل کار) - درصورت عدم حمایت برندسازی خودم خراب میشه - از همه بدتر با توجه به اوضاع اینترنت ایران میترسم خیلی دوستان نتونند روی یوتیوب تماشا کنند و همه موارد قبلی اتفاق بیوفته
اما خیلی دوست دارم یک راهکاری پیدا کنم که حداقل میزانی که خودم بلد هستم مطالب مورد نیاز رو منتقل کنم به دوستان.
همچنان به دنبال راهکار
(ساعت دقیقاً ۵:۳۱ دقیقه صبح هست، و من به تازگی جلسهام تموم شد و این متن رو داغ داغ نوشتم)
❤51👍10⚡1👎1
Python Hints
توی این هفته ۴ بار، یک سوال مصاحبه قدیمی رو در موردش صحبت پیش اومده؛ داستان چیه، من چندین سال پیش با یک شرکت مصاحبه داشتم و مصاحبه کننده ازم یک سوال Data structure & Algorithm پرسید، من سوال رو خیلی سریع توضیح دادم و بعد خیلی سریع هم پاسخ صحیح رو نوشتم،…
پیشنهاد، انگلیسی بودن ویدئوها بیشترین پیشنهاد بود
ولی نه ممنون،
منبع انگلیسی به وفور پیدا میشه با آدمهایی که فن بیان و تجربه تدریس بسیار بسیار بیشتری از من دارند.
هدف من جامعه برنامهنویسی ایرانی هست، بخصوص تازهکارها و افرادی که به زبان انگلیسی مسلط نیستند (دارند یاد میگیرند یا ...)
پ.ن :
یوتیوب رو هنوز خیلی روش نیستم البته
خیلی دوس داشتم ی جای بزرگی داشتم، همه بچهها رو جمع میکردم اونجا و همونجا دور هم تمرین میکردیم (طوریکه کرایه اتوبوس تا تهران رو هم حتی خودم میدادم)
اینجوری مطمئن بودم هرکسی علاقه داره حتماً میتونه یاد بگیره (اینترنت و ... محدودیتش نیست)
پیشنهاد پلتفرم پولی به من ندید، ممنون ♥️
ولی نه ممنون،
منبع انگلیسی به وفور پیدا میشه با آدمهایی که فن بیان و تجربه تدریس بسیار بسیار بیشتری از من دارند.
هدف من جامعه برنامهنویسی ایرانی هست، بخصوص تازهکارها و افرادی که به زبان انگلیسی مسلط نیستند (دارند یاد میگیرند یا ...)
پ.ن :
یوتیوب رو هنوز خیلی روش نیستم البته
خیلی دوس داشتم ی جای بزرگی داشتم، همه بچهها رو جمع میکردم اونجا و همونجا دور هم تمرین میکردیم (طوریکه کرایه اتوبوس تا تهران رو هم حتی خودم میدادم)
اینجوری مطمئن بودم هرکسی علاقه داره حتماً میتونه یاد بگیره (اینترنت و ... محدودیتش نیست)
پیشنهاد پلتفرم پولی به من ندید، ممنون ♥️
❤32👍25👏4⚡1
پیشنهاد یوتیوب با توضیحات مختلف و مشورتهایی که از دوستان گرفتم بهترین مدل هست :
حقیقتش هنوز شخصا شک دارم به این موضوع (بهترین بودن)
اما یکی از دوستان که توی این زمینه کار کرده قرار شد بهم آموزش بده (احتمال زمان زیادی میبره) ولی فعلا گانال رو ایجاد کردم تا شروع کنم به یادگیری اگر واقعا یوتیوب گزینه خوبی باشه و چیزی که میخوام ازش در بیاد همین رو میتونیم ادامه بدیم
اینم آدرس یوتبوب (خواستم رزرو کنم تا کسی زیرش نزده؛ شماهم فعلا سابسکرایب کنید انگیزه بگیریم.)
اگر کسی هم تجربه داره خوشحال میشم ازش یاد بگیرم.
PyHints Youtube Channel Link
مرسی از همه دوستان و نظرات (تمام موارد رو درنظر گرفتم و درنظر خواهم داشت)
حقیقتش هنوز شخصا شک دارم به این موضوع (بهترین بودن)
اما یکی از دوستان که توی این زمینه کار کرده قرار شد بهم آموزش بده (احتمال زمان زیادی میبره) ولی فعلا گانال رو ایجاد کردم تا شروع کنم به یادگیری اگر واقعا یوتیوب گزینه خوبی باشه و چیزی که میخوام ازش در بیاد همین رو میتونیم ادامه بدیم
اینم آدرس یوتبوب (خواستم رزرو کنم تا کسی زیرش نزده؛ شماهم فعلا سابسکرایب کنید انگیزه بگیریم.)
اگر کسی هم تجربه داره خوشحال میشم ازش یاد بگیرم.
PyHints Youtube Channel Link
مرسی از همه دوستان و نظرات (تمام موارد رو درنظر گرفتم و درنظر خواهم داشت)
❤58👍10❤🔥1
#خارج_از_بحث
احتمالا شما هم با
شخصا دنبال این بودم که
این مورد رو پیدا کردم امیدوارم مفید باشه :
۱- اول
۲- بعد از نصب روی آیکونش کلیک کنید و به بخش
۳- از منوی بالای صفحه وارد بخش
۴- توی ادیتور پایین همون صفحه این دستورات رو بزنید :
۵- روی گزینه
@PyHints
احتمالا شما هم با
anti-adblock detector
یوتیوب مواجه شدید و متوجه شدید تقریبا هیچکدوم از adblocker
های معروف نمیتونند دورش بزنند.شخصا دنبال این بودم که
popup
مربوط به بلاک شدن adblocker
رو فیلتر کنم (اینجوری دیگه اخطار نمیاد و ویدئو رو میشه اجرا کرد) : اگر بررسی کنید یوتیوب با اینکه اون اخطار رو نشون میده اما توی پس زمینه ویدئو رو هم درخواست میکنهاین مورد رو پیدا کردم امیدوارم مفید باشه :
۱- اول
uBlock
رو نصب کنید۲- بعد از نصب روی آیکونش کلیک کنید و به بخش
dashboard
برید (گوشه پایین سمت راست با علامت ۳ تا چرخدنده)۳- از منوی بالای صفحه وارد بخش
My Filters
بشید.۴- توی ادیتور پایین همون صفحه این دستورات رو بزنید :
youtube.com##+js(set, yt.config_.openPopupConfig.supportedPopups.adBlockMessageViewModel, false)
youtube.com##+js(set, Object.prototype.adBlocksFound, 0)
youtube.com##+js(set, ytplayer.config.args.raw_player_response.adPlacements, [])
youtube.com##+js(set, Object.prototype.hasAllowedInstreamAd, true)
۵- روی گزینه
apply changes
کلیک کنید و یوتیوب رو بدون تبلیغات ببینید و لذت ببرید.@PyHints
👍38❤9☃3✍3🌚3👎2