داشتم ویدیو مصاحبه عثمان رو میدیدم با امیربهادر که شاخکام تکون خورد بیشتر راجب yield تحقیق کنم.
سوال) کاربرد yield چیه تو پایتون؟
جواب: یک جنریتور فانکشن که memory efficient هست و مثلا از دیسک میخواین ۱۰۰ گیگ فایل بخونید نیاز نیست کلشو یک دفعه لود کنید تو مموری و میتونید ۱۰۰ مگ ۱۰۰ مگ لود کنید تو مموری
مقاله اول) yield چطور تو سطح پایتون کار میکنه؟ (نسبتا ساده, اسکیپ کنید اگه بلدین)
همونطور که گفتم yield یک جنریتور فانکشن هست. ولی یعنی چی؟
یعنی وقتی کلمه yield رو میذارین و اون تابع رو ران میکنید به جای اینکه یک آبجکت بهتون ریترن کنه بهتون یک جنریتور ریترن میکنه.
هردفعه که next() رو بزنید یک بار اجرا میشه و تا yield بعدی میره.اگه yield دیگه ای نباشه دیگه چیزی ران نمیکنه و ارور StopIteration میده.
یک نکته کلیدی. پس وقتی میخوایم کلین آپ کنیم همینطوری next(my_generator) رو صدا میزنیم تا به اخرین خط کد برسه و ارور بده. درواقع تو asyncio pytest همین اتفاق میفته. ما یک آبجکت رو yield میکنیم. خود asyncio-pytest پلاگین میاد next() میزنه روش و آبجکتو میگیره. بعد به کل تستا پاس میده همون آبجکتو. بعدش هم یک دور دیگه next() رو میزنه و میدونه ما بعد yield اول کلین آپ کردیم. اون موقع کلین آپ تست ما هم ران میشه که خیلی قشنگ تر unittest پایتون هست.
خب تا اینجا فهمیدیم تو سطح پایتون چطوری کار میکنه generator و yield.
حالا میریم یک لایه پایین تر تو سطح interpreter 😈
@ManiFoldsPython
سوال) کاربرد yield چیه تو پایتون؟
جواب: یک جنریتور فانکشن که memory efficient هست و مثلا از دیسک میخواین ۱۰۰ گیگ فایل بخونید نیاز نیست کلشو یک دفعه لود کنید تو مموری و میتونید ۱۰۰ مگ ۱۰۰ مگ لود کنید تو مموری
مقاله اول) yield چطور تو سطح پایتون کار میکنه؟ (نسبتا ساده, اسکیپ کنید اگه بلدین)
همونطور که گفتم yield یک جنریتور فانکشن هست. ولی یعنی چی؟
یعنی وقتی کلمه yield رو میذارین و اون تابع رو ران میکنید به جای اینکه یک آبجکت بهتون ریترن کنه بهتون یک جنریتور ریترن میکنه.
هردفعه که next() رو بزنید یک بار اجرا میشه و تا yield بعدی میره.اگه yield دیگه ای نباشه دیگه چیزی ران نمیکنه و ارور StopIteration میده.
یک نکته کلیدی. پس وقتی میخوایم کلین آپ کنیم همینطوری next(my_generator) رو صدا میزنیم تا به اخرین خط کد برسه و ارور بده. درواقع تو asyncio pytest همین اتفاق میفته. ما یک آبجکت رو yield میکنیم. خود asyncio-pytest پلاگین میاد next() میزنه روش و آبجکتو میگیره. بعد به کل تستا پاس میده همون آبجکتو. بعدش هم یک دور دیگه next() رو میزنه و میدونه ما بعد yield اول کلین آپ کردیم. اون موقع کلین آپ تست ما هم ران میشه که خیلی قشنگ تر unittest پایتون هست.
def my_gen():
yield 1
print("Clean up here")
generator = my_gen()
next(generator) -> 1
next(generator) -> prints clean up here -> raise StopIteration
خب تا اینجا فهمیدیم تو سطح پایتون چطوری کار میکنه generator و yield.
حالا میریم یک لایه پایین تر تو سطح interpreter 😈
@ManiFoldsPython
👍19
مقاله دوم) yield تو سطح interpreter چطور کار میکنه؟
اول باید به رفتار توابع بپردازیم!
وقتی شما تابعی رو صدا میزنید پایتون براش یک فریم تعریف میکنه. فریم رو مثل یک کانتینر در نظر بگیرید. و تمام اطلاعات مربوطه فانکشن هم تو همون فریم ذخیره میکنه مثل local variable ها. وقتی فانکشن تموم میشه frame درواقع پاک میشه. برای همین شما خارج از یک تابع نمیتونید به لوکال اون تابع دسترسی داشته باشید.
ولی generator function ها رفتار متفاوتی دارن. پایتون مثل همه توابع معمولی یک فریم براش میسازه وقتی اجراش میکنید اجرا میشه.
ولی اگه yield ببینه توش اون موقع میاد و جنریتور میکنه اون تابع رو .
وقتی پایتون به yield برخورد میکنه به جای اینکه اون فریم رو پاک کنه همون فریم رو تو همون حالت ذخیره میکنه. اون فریم شامل همه اطلاعاتی هست که پایتون دوباره بعدا بخواد رانش کنه(با متود next). این اطلاعات اضافه هست و تو Frame معمولی توابع این اطلاعات ذخیره نمیشن چون پایتون نیاز نداره که دوباره pickup کنه وقتی با اون frame کار میکنه.
این فریم ها همیشه با اخرین state ذخیره میشن هرباری که به yield میخورین. پس همین موضوع باعث میشه مثلا اون فایل ۱۰۰ گیگی که تو مقاله قبلی مثال زدم یک دفعه لود نشه تو مموری.
اما جنریتور وقتی کاربرد داره که دیتا شما تو مموری نیست. دیتا شما IO BOUND به دست میاد و هرجایی ذخیره شده جز مموری. وقتی شما درخواست میزنی و کراول میکنی و از جنریتور استفاده میکنی درواقع دارین sync پردازش میکنید. پس تو کراولینگ به شما هیچ پرفومنس بوستی نمیده.
اما چرا scrapy اینطوری کرده؟چون میخواست ورودی تابعی بگیره که کاملا داینامیکه و بهترین گزینه هم تابع جنریتور بود. یک نکته دیگه که اسکرپی چند نسخه از این تابع جنریتور میسازه و همزمان با url های مختلف رانش میکنه با twisted که یک لایبری قدیمی async هست.
پس شما اگه sync پردازش کنی ریسورس کمتری مصرف کردین (به شرطی که دیتا رو تو لیست نریزین و هردور که پردازش میکنید garbage collect انجام شه) یعنی رفرس به اون دیتا و درخواستی که فرستادین ۰ شه که گاربیج کالکت شه. اگه بندازین تو لیست response هارو به شدت مموری مصرف میکنید چون رفرنس هیچوقت بهشون صفر نمیشه تا لیست تخلیه نشه.
دلیل مصرف کمتر sync با ریست رفرس نسبت به yield هم اینه که frame معمولی پایتون بهینه تره از frame توابع جنریتوره.
حالا یک سوال, اگه فریم ما sync پردازش میشن پس async generator ها برای چین؟anext برای چیه؟ تو کامنت بگین 😁
@ManiFoldsPython
اول باید به رفتار توابع بپردازیم!
وقتی شما تابعی رو صدا میزنید پایتون براش یک فریم تعریف میکنه. فریم رو مثل یک کانتینر در نظر بگیرید. و تمام اطلاعات مربوطه فانکشن هم تو همون فریم ذخیره میکنه مثل local variable ها. وقتی فانکشن تموم میشه frame درواقع پاک میشه. برای همین شما خارج از یک تابع نمیتونید به لوکال اون تابع دسترسی داشته باشید.
ولی generator function ها رفتار متفاوتی دارن. پایتون مثل همه توابع معمولی یک فریم براش میسازه وقتی اجراش میکنید اجرا میشه.
ولی اگه yield ببینه توش اون موقع میاد و جنریتور میکنه اون تابع رو .
وقتی پایتون به yield برخورد میکنه به جای اینکه اون فریم رو پاک کنه همون فریم رو تو همون حالت ذخیره میکنه. اون فریم شامل همه اطلاعاتی هست که پایتون دوباره بعدا بخواد رانش کنه(با متود next). این اطلاعات اضافه هست و تو Frame معمولی توابع این اطلاعات ذخیره نمیشن چون پایتون نیاز نداره که دوباره pickup کنه وقتی با اون frame کار میکنه.
این فریم ها همیشه با اخرین state ذخیره میشن هرباری که به yield میخورین. پس همین موضوع باعث میشه مثلا اون فایل ۱۰۰ گیگی که تو مقاله قبلی مثال زدم یک دفعه لود نشه تو مموری.
اما جنریتور وقتی کاربرد داره که دیتا شما تو مموری نیست. دیتا شما IO BOUND به دست میاد و هرجایی ذخیره شده جز مموری. وقتی شما درخواست میزنی و کراول میکنی و از جنریتور استفاده میکنی درواقع دارین sync پردازش میکنید. پس تو کراولینگ به شما هیچ پرفومنس بوستی نمیده.
اما چرا scrapy اینطوری کرده؟چون میخواست ورودی تابعی بگیره که کاملا داینامیکه و بهترین گزینه هم تابع جنریتور بود. یک نکته دیگه که اسکرپی چند نسخه از این تابع جنریتور میسازه و همزمان با url های مختلف رانش میکنه با twisted که یک لایبری قدیمی async هست.
پس شما اگه sync پردازش کنی ریسورس کمتری مصرف کردین (به شرطی که دیتا رو تو لیست نریزین و هردور که پردازش میکنید garbage collect انجام شه) یعنی رفرس به اون دیتا و درخواستی که فرستادین ۰ شه که گاربیج کالکت شه. اگه بندازین تو لیست response هارو به شدت مموری مصرف میکنید چون رفرنس هیچوقت بهشون صفر نمیشه تا لیست تخلیه نشه.
دلیل مصرف کمتر sync با ریست رفرس نسبت به yield هم اینه که frame معمولی پایتون بهینه تره از frame توابع جنریتوره.
حالا یک سوال, اگه فریم ما sync پردازش میشن پس async generator ها برای چین؟anext برای چیه؟ تو کامنت بگین 😁
@ManiFoldsPython
👍11
اولین ویدیو یوتیوبم رو به زودی میخوام منتشر کنم، به چه عنوانی باشه؟
Final Results
47%
Why, how and Where in FastAPI - قبلا توضیح دادم چیا توش میگم
33%
English mock interview - تجاربم از مصاحبه های مختلفتو جمع کنم و یک ماک اینترویو بذارم
20%
Resume Review - ریپو رزومم رو بخونم و راجبش حرف بزنم، و چند تا رزومه هم بررسی کنم
👍7
ریپو رزومم:
https://news.1rj.ru/str/manifoldspython/137
توضیح کورس why, how and where in FastAPI:
https://news.1rj.ru/str/manifoldspython/240
@ManiFoldsPython
https://news.1rj.ru/str/manifoldspython/137
توضیح کورس why, how and where in FastAPI:
https://news.1rj.ru/str/manifoldspython/240
@ManiFoldsPython
زبان رویایی dream berd همین الان ریلیز داد. :)))
https://github.com/TodePond/DreamBerd/releases/tag/v.release.notes
اتک خوردیم :))
@ManiFoldsPython
https://github.com/TodePond/DreamBerd/releases/tag/v.release.notes
اتک خوردیم :))
@ManiFoldsPython
😁10
Forwarded from Python BackendHub
مواردی که به نظر من یک بک اند کار برای کار تو شرکت های مدرن خارجی و گرفتن جاب آفر داخلشون باید بلد باشه, طبق تجربه این چند وقتم داخل مصاحبه ها و جاب هایی که دیدم:
1. آشنایی با گیت
2. تست نویسی
3. آشنایی با github action برای نوشتن فایل work flow yaml
4. درک عمیق تر از پایتون (خوندن کتابی مثل fluent python یا python cook book)
تسلط به پترن دیزاین ها
5. آشنایی با paradigms های مختلف برنامه نویسی
6. الگوریتم
7. تسلط روی SQL
8. آشنایی با MySQL یا PostgreSQL.
9. آشنایی با داکر و داکر کامپوز
10. آشنایی با مفاهیم Event driven architecture, SOA, microservice و Monolithic
11. تسلط رو یک فریم ورک microservice friendly مثل FastAPI یا Flask
12. آشنایی با یک فریم ورک Monolithic مثل جنگو میتونه مزیت خوبی باشه.
13. آشنایی با یک سرویس کلاد (AWS/Azure/GCP) در حد نیاز بک اند. معمولا certificate های مشخصی دارن که میتونید راجبشون تحقیق کنید و تو اون مسیری که مربوط به بک اند دولوپر میشه برین.
14. آشنایی با دیتابیس های کلاد مثل amazon rds
15. آشنایی با serverless و نمونش داخل کلاد مثل AWS Lambda
16. آشنایی با k8s در حد نوشتن فایل yaml سرویستون
17. آشنایی با یک ابزار IAC مثل terraform
(از بین ترافورم یا k8s و داکر, معمولا رو یکیش تمرکز میکنن شرکتا. و تو اغلب آگهی ها هم دیدم وزن بیشتر سمت داکر و k8s بوده تا ترافورم)
@ManiFoldsPython
1. آشنایی با گیت
2. تست نویسی
3. آشنایی با github action برای نوشتن فایل work flow yaml
4. درک عمیق تر از پایتون (خوندن کتابی مثل fluent python یا python cook book)
تسلط به پترن دیزاین ها
5. آشنایی با paradigms های مختلف برنامه نویسی
6. الگوریتم
7. تسلط روی SQL
8. آشنایی با MySQL یا PostgreSQL.
9. آشنایی با داکر و داکر کامپوز
10. آشنایی با مفاهیم Event driven architecture, SOA, microservice و Monolithic
11. تسلط رو یک فریم ورک microservice friendly مثل FastAPI یا Flask
12. آشنایی با یک فریم ورک Monolithic مثل جنگو میتونه مزیت خوبی باشه.
13. آشنایی با یک سرویس کلاد (AWS/Azure/GCP) در حد نیاز بک اند. معمولا certificate های مشخصی دارن که میتونید راجبشون تحقیق کنید و تو اون مسیری که مربوط به بک اند دولوپر میشه برین.
14. آشنایی با دیتابیس های کلاد مثل amazon rds
15. آشنایی با serverless و نمونش داخل کلاد مثل AWS Lambda
16. آشنایی با k8s در حد نوشتن فایل yaml سرویستون
17. آشنایی با یک ابزار IAC مثل terraform
(از بین ترافورم یا k8s و داکر, معمولا رو یکیش تمرکز میکنن شرکتا. و تو اغلب آگهی ها هم دیدم وزن بیشتر سمت داکر و k8s بوده تا ترافورم)
@ManiFoldsPython
👍18❤3
Python BackendHub
مواردی که به نظر من یک بک اند کار برای کار تو شرکت های مدرن خارجی و گرفتن جاب آفر داخلشون باید بلد باشه, طبق تجربه این چند وقتم داخل مصاحبه ها و جاب هایی که دیدم: 1. آشنایی با گیت 2. تست نویسی 3. آشنایی با github action برای نوشتن فایل work flow yaml 4.…
یک رفرنسی میدم از دوره های مختلف. میتونه کتاب یا ویدیو باشه. دقت کنید لطفا که دیدن و خوندن اینا کافی نیست و باید تمرین کنید.
ریسورس هایی که بولد شده یعنی خودم خوندم یا دارم میخونم و پیشنهاد میدم شخصا. اونایی که بولد نشده رو صرفا گوگل کردم.
1. The Git & Github Bootcamp
2. UI Testing with playwright
2. Pytest
3. Github action
4. fluent python / realpython / python tricks / DeepDive Into Python
5. سورسی ندارم
6. Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People
6. leetcode
7 & 8. SQL and PostgreSQL: The Complete Developer's Guide
9. Docker & Kubernetes: The Practical Guide [2023 Edition]
10. "SOA Design Patterns" by Thomas Erl
10. "Building Microservices" by Sam Newman
10. Building Event-Driven Microservices: Leveraging Organizational Data at Scale
10. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems 1st Edition
11. doc fastapi
12. Two scopes of django
12. doc django
12. Django for APIs: Build web APIs with Python & Django
13. cloudguru SAA
13. AWS developer - associate
13-14-15-16. AWS developer roadmap
17. Terraform - Getting Started
@ManiFoldsPython
ریسورس هایی که بولد شده یعنی خودم خوندم یا دارم میخونم و پیشنهاد میدم شخصا. اونایی که بولد نشده رو صرفا گوگل کردم.
1. The Git & Github Bootcamp
2. UI Testing with playwright
2. Pytest
3. Github action
4. fluent python / realpython / python tricks / DeepDive Into Python
5. سورسی ندارم
6. Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People
6. leetcode
7 & 8. SQL and PostgreSQL: The Complete Developer's Guide
9. Docker & Kubernetes: The Practical Guide [2023 Edition]
10. "SOA Design Patterns" by Thomas Erl
10. "Building Microservices" by Sam Newman
10. Building Event-Driven Microservices: Leveraging Organizational Data at Scale
10. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems 1st Edition
11. doc fastapi
12. Two scopes of django
12. doc django
12. Django for APIs: Build web APIs with Python & Django
13. cloudguru SAA
13. AWS developer - associate
13-14-15-16. AWS developer roadmap
17. Terraform - Getting Started
@ManiFoldsPython
Udemy
The Git & Github Bootcamp
Master the essentials and the tricky bits: rebasing, squashing, stashing, reflogs, blobs, trees, & more!
❤12👍5👎1🥰1
این کتاب هام مربوط به رودمپ نمیشن ولی بنظرم بخونید خیلی خوبن.همشون رو کامل خوندم یا درحال خوندم.
HTPP The definitive guide
implementing domain driven design- vaughen vernon
deep dive into design patterns - alexander shvets
Clean Code: A Handbook of Agile Software Craftsmanship - Martin
Clean code in Python - Mariano Anaya
@Manifoldspython
HTPP The definitive guide
implementing domain driven design- vaughen vernon
deep dive into design patterns - alexander shvets
Clean Code: A Handbook of Agile Software Craftsmanship - Martin
Clean code in Python - Mariano Anaya
@Manifoldspython
👍4❤1
لینک گروهو میذارم با محوریت فقط پایتون و کلین کد و clean architecture
https://news.1rj.ru/str/PythonFellow
احساس میکنم جای همچین گروهی شاید تو کامینیتی پایتون کارا خالیه.
پ.ن:عکس گروه meme هست :))
@ManifoldsPython
https://news.1rj.ru/str/PythonFellow
احساس میکنم جای همچین گروهی شاید تو کامینیتی پایتون کارا خالیه.
پ.ن:عکس گروه meme هست :))
@ManifoldsPython
👍11
Python BackendHub
اولین ویدیو یوتیوبم رو به زودی میخوام منتشر کنم، به چه عنوانی باشه؟
با توجه به رای اکثریت کورس رو ضبط میکنم به زودی. اصلا انتظار نداشتم ۴۷ درصد مشتاق این دوره باشن 😁
اولین کورس هم کاملا فارسی خواهد بود. کورس های بعدی متناسب با محتوایی که قراره ارائه بدم زبانش انتخاب خواهد شد.
@ManifoldsPython
اولین کورس هم کاملا فارسی خواهد بود. کورس های بعدی متناسب با محتوایی که قراره ارائه بدم زبانش انتخاب خواهد شد.
@ManifoldsPython
👍25👏3
Forwarded from DevTwitter | توییت برنامه نویسی
Forwarded from DevTwitter | توییت برنامه نویسی
دیروز یک توییت دیدم که x-panel آسیبپذیری امنیتی داره، رفتیم روش و نتیجهای که رسیدم: «سریعا فقط پاکش کنین». باگهای خیلی خطرناکی داره مثلا: رو سرور میشه دستور با سطح دسترسی Root اجرا کرد، کل User Pass کاربرا افشا میشه که در ادامه توضیح میدم
youtu.be/yeVeJgCPc0s
آسیبپذیری از کجا شروع میشه؟ اینکه کلا سیستم Authenticationاش خرابه، توی این قسمت میتونین ببینین:
https://github.com/Alirezad07/X-Panel-SSH-User-Management/blob/bbb30fd0ceb77443015d3ccc02a3b8ea22a4331b/Web%20Panel/app/Models/Settings_Model.php
تصویر1:
در صورتی که سشن درست نباشه کاربر Redirect میشه به Login، خب کی میفهمه Redirect چیه؟ باریکلا مرورگر پس اگه cURL بزنیم وارد پنل میشیم
تصویر2:
اینجا کلی Functionality وجود داره که اکثرا آسیبپذیرن. مثلا توی این تصویر برای کیل کردن یه یوزر میاد ورودیو از ادمین میگیره و توی تابع shell_exec میذاره (ما هم که ادمین شدیم) پس اینجا RCE میخوره (اما از نوع Blind)
تصویر 3:
توی این تصویر خروجی رو نداریم کافیه OOB بزنیم به سرور خودمون. همچنین میشه Interactive Shell گرفت، کافیه یه اسکریپت ساده بنویسیم که اینکارو بکنه (توی فیلم انجام دادم) و بعدش ما شل داریم. خب داشته باشیم؟ اینجا میتونیم Root بشیم!!! چطوری؟
تصویر 4, 5, 6:
با نصب این پنل کاربر www-data میره توی Sudoers و دستور passwd هم برای اینکاربر مجاز میشه، پس کافیه بزنیم sudo passwd و پسورد root رو عوض کنیم، بعدش هم با su روت بشیم یا به سرور SSH بزنیم
خیلی از سرورا با یه اسکریپت Automate خوردن و به زامبی تبدیل شدن، کلی اطلاعات هم افشا شده و در کل خواستم بگم هر چیزیو بدون اینکه تست امنیتی بشه روی سرورتون نریزید.
@DevTwitter | <یاشو/>
youtu.be/yeVeJgCPc0s
آسیبپذیری از کجا شروع میشه؟ اینکه کلا سیستم Authenticationاش خرابه، توی این قسمت میتونین ببینین:
https://github.com/Alirezad07/X-Panel-SSH-User-Management/blob/bbb30fd0ceb77443015d3ccc02a3b8ea22a4331b/Web%20Panel/app/Models/Settings_Model.php
تصویر1:
در صورتی که سشن درست نباشه کاربر Redirect میشه به Login، خب کی میفهمه Redirect چیه؟ باریکلا مرورگر پس اگه cURL بزنیم وارد پنل میشیم
تصویر2:
اینجا کلی Functionality وجود داره که اکثرا آسیبپذیرن. مثلا توی این تصویر برای کیل کردن یه یوزر میاد ورودیو از ادمین میگیره و توی تابع shell_exec میذاره (ما هم که ادمین شدیم) پس اینجا RCE میخوره (اما از نوع Blind)
تصویر 3:
توی این تصویر خروجی رو نداریم کافیه OOB بزنیم به سرور خودمون. همچنین میشه Interactive Shell گرفت، کافیه یه اسکریپت ساده بنویسیم که اینکارو بکنه (توی فیلم انجام دادم) و بعدش ما شل داریم. خب داشته باشیم؟ اینجا میتونیم Root بشیم!!! چطوری؟
تصویر 4, 5, 6:
با نصب این پنل کاربر www-data میره توی Sudoers و دستور passwd هم برای اینکاربر مجاز میشه، پس کافیه بزنیم sudo passwd و پسورد root رو عوض کنیم، بعدش هم با su روت بشیم یا به سرور SSH بزنیم
خیلی از سرورا با یه اسکریپت Automate خوردن و به زامبی تبدیل شدن، کلی اطلاعات هم افشا شده و در کل خواستم بگم هر چیزیو بدون اینکه تست امنیتی بشه روی سرورتون نریزید.
@DevTwitter | <یاشو/>
👍5
Forwarded from ☕کاپوچینو پلاس | Cappuccino plus☕
به عنوان کسی که تو سه تا کشور هم به عنوان مصاحبهکننده هم مصاحبهشونده تجربههای زیادی داره، اجازه بدید چندتاشون رو باهاتون به اشتراک بذارم شاید به کارتون بیاد:
1. قسمت معرفی خودتون رو خیلی جدی بگیرید. نه خیلی کوتاه و مختصر، نه رودهدرازی. یه بخش مهمی از تصمیم اونجا گرفته میشه
2. تو قسمت غیرتخصصی مصاحبه، 50% اهمیت داره که جواب درست بدید و 50% اینکه چطور جواب میدید. یعنی در واقع گاهی لزوماً جواب درست وجود نداره، فقط مهمه شما چطور جوابتون رو ارائه میدید.
3. لبخند، خوشرویی، نشون ندادن استرس، آشنایی نسبی با کار شرکت و آماده بودن بسیار اهمیت داره.
4. تو مصاحبه به زبان دوم، به جز شغلهایی که فن بیان و روان بودن (مثلا معلمی) توش اهمیت داره "عالی" بودن زبان اونقدر اهمیت نداره پس به خودتون استرس ندید.
5. وقتی میگن یه مثال از اشتباهات گذشته بزن، نه مثالی بزنید که توش رسماً گند زده باشید، نه بگید "من هیچ وقت اشتباه نمیکنم"
✍سوربا
@cappuccino_plus
1. قسمت معرفی خودتون رو خیلی جدی بگیرید. نه خیلی کوتاه و مختصر، نه رودهدرازی. یه بخش مهمی از تصمیم اونجا گرفته میشه
2. تو قسمت غیرتخصصی مصاحبه، 50% اهمیت داره که جواب درست بدید و 50% اینکه چطور جواب میدید. یعنی در واقع گاهی لزوماً جواب درست وجود نداره، فقط مهمه شما چطور جوابتون رو ارائه میدید.
3. لبخند، خوشرویی، نشون ندادن استرس، آشنایی نسبی با کار شرکت و آماده بودن بسیار اهمیت داره.
4. تو مصاحبه به زبان دوم، به جز شغلهایی که فن بیان و روان بودن (مثلا معلمی) توش اهمیت داره "عالی" بودن زبان اونقدر اهمیت نداره پس به خودتون استرس ندید.
5. وقتی میگن یه مثال از اشتباهات گذشته بزن، نه مثالی بزنید که توش رسماً گند زده باشید، نه بگید "من هیچ وقت اشتباه نمیکنم"
✍سوربا
@cappuccino_plus
👍14👌5
Is it worth the effort to design software well?
بخونید از مارتین بزرگ
بزرگوار سال ۲۰۰۷ واقعا کجا ها سیر میکرده 🙂
DesignStaminaHypothesis:
https://martinfowler.com/bliki/DesignStaminaHypothesis.html
@ManiFoldsPython
بخونید از مارتین بزرگ
بزرگوار سال ۲۰۰۷ واقعا کجا ها سیر میکرده 🙂
DesignStaminaHypothesis:
https://martinfowler.com/bliki/DesignStaminaHypothesis.html
@ManiFoldsPython
martinfowler.com
bliki: Design Stamina Hypothesis
The value of good software design is economic: you can continue to add new functionality quickly even as the code-base grows in size.
👍8
فرهنگ issue مطرح کردن تو کامینیتی که متاسفانه خیلیامون رعایت نمیکنیم:
۱. لطفا لاجیکتون رو از کدتون جدا کنید. کسی علاقه نداره لاجیک پشت کدتون رو بخونه که سر در بیاره کدتون چیکار میکنه.
۲. اگه کدتون پیچیدست سعی کنید خیلی ساده و بدون پیچیدگی یک کدی بنویسید که همون مشکل رو reproduce کنه.
۳. تست بنویسید که fail شه. بنویسید از چه نسخه پایتونی استفاده میکنید و از چه نسخه ای لایبری استفاده میکنید. مثلا کدتون اگه با پایندانتیک ۲ داره ران میشه باید ذکر کنید این موضوع رو.
۴. اسکرین شات با سایت هایی مشابه ray.so بنویسید
ایشو هایی که اینطوری مطرح میشن خیلی راحت تر برطرف میشن و همه روش وقت میذارن :)
@ManiFoldsPython
۱. لطفا لاجیکتون رو از کدتون جدا کنید. کسی علاقه نداره لاجیک پشت کدتون رو بخونه که سر در بیاره کدتون چیکار میکنه.
۲. اگه کدتون پیچیدست سعی کنید خیلی ساده و بدون پیچیدگی یک کدی بنویسید که همون مشکل رو reproduce کنه.
۳. تست بنویسید که fail شه. بنویسید از چه نسخه پایتونی استفاده میکنید و از چه نسخه ای لایبری استفاده میکنید. مثلا کدتون اگه با پایندانتیک ۲ داره ران میشه باید ذکر کنید این موضوع رو.
۴. اسکرین شات با سایت هایی مشابه ray.so بنویسید
ایشو هایی که اینطوری مطرح میشن خیلی راحت تر برطرف میشن و همه روش وقت میذارن :)
@ManiFoldsPython
👍21💯3