Forwarded from لوپینو | آموزش برنامه نویسی Loopino
🔵 آشنایی با namedtuple در پایتون
یکی از امکانات پایتون که میتواند به حرفهای تر شدن کد پایتونی شما کمک کند، namedtuple است که تاپل هایی با فیلد های اسم دار ایجاد میکند. با مطالعه این پست با این امکان از زبان پایتون آشنا میشوید.
#پایتون #Python
لوپینو | آموزش های برنامه نویسی
• Telegran: @loopino
• Instagram: https://www.instagram.com/loopino_fa/
یکی از امکانات پایتون که میتواند به حرفهای تر شدن کد پایتونی شما کمک کند، namedtuple است که تاپل هایی با فیلد های اسم دار ایجاد میکند. با مطالعه این پست با این امکان از زبان پایتون آشنا میشوید.
#پایتون #Python
لوپینو | آموزش های برنامه نویسی
• Telegran: @loopino
• Instagram: https://www.instagram.com/loopino_fa/
👍9
CodeNaline S2 E11 Mehrad
torham
کدنالین اپیزود یازدهم از فصل دوم، مهراد.
مهراد روبی کار کرده و ۲ سالی هست به انگلیس مهاجرت کرده، باهاش درباره مسیری که طی کرده حرف زدیم و توصیهاش درباره چطوری از جونیور به سینیور بریم رو شنیدیم. با این اپیزود کدنالین همراه باشید. 🤝🍻.
کستباکس این اپیزود
🎙 @CodeNaline
🗣 @TorhamDevCH
مهراد روبی کار کرده و ۲ سالی هست به انگلیس مهاجرت کرده، باهاش درباره مسیری که طی کرده حرف زدیم و توصیهاش درباره چطوری از جونیور به سینیور بریم رو شنیدیم. با این اپیزود کدنالین همراه باشید. 🤝🍻.
کستباکس این اپیزود
🎙 @CodeNaline
🗣 @TorhamDevCH
Forwarded from CodeNaline | کدنالین
YouTube
CodeNaline S2 E11 Mehrad - اپیزود یازدهم از فصل دوم کدنالین مهراد
کدنالین اپیزود یازدهم از فصل دوم، مهراد.
مهراد روبی کار کرده و ۲ سالی هست به انگلیس مهاجرت کرده، باهاش درباره مسیری که طی کرده حرف زدیم و توصیهاش درباره چطوری از جونیور به سینیور بریم رو شنیدیم. با این اپیزود کدنالین همراه باشید. 🤝🍻.
کانال تلگرام : ht…
مهراد روبی کار کرده و ۲ سالی هست به انگلیس مهاجرت کرده، باهاش درباره مسیری که طی کرده حرف زدیم و توصیهاش درباره چطوری از جونیور به سینیور بریم رو شنیدیم. با این اپیزود کدنالین همراه باشید. 🤝🍻.
کانال تلگرام : ht…
استکهای نتفلیکس
This post is based on research from many Netflix engineering blogs and open-source projects. If you come across any inaccuracies, please feel free to inform us.
Mobile and web: Netflix has adopted Swift and Kotlin to build native mobile apps. For its web application, it uses React.
Frontend/server communication: GraphQL.
Backend services: Netflix relies on ZUUL, Eureka, the Spring Boot framework, and other technologies.
Databases: Netflix utilizes EV cache, Cassandra, CockroachDB, and other databases.
Messaging/streaming: Netflix employs Apache Kafka and Fink for messaging and streaming purposes.
Video storage: Netflix uses S3 and Open Connect for video storage.
Data processing: Netflix utilizes Flink and Spark for data processing, which is then visualized using Tableau. Redshift is used for processing structured data warehouse information.
CI/CD: Netflix employs various tools such as JIRA, Confluence, PagerDuty, Jenkins, Gradle, Chaos Monkey, Spinnaker, Altand more for CI/CD processes.
This post is based on research from many Netflix engineering blogs and open-source projects. If you come across any inaccuracies, please feel free to inform us.
Mobile and web: Netflix has adopted Swift and Kotlin to build native mobile apps. For its web application, it uses React.
Frontend/server communication: GraphQL.
Backend services: Netflix relies on ZUUL, Eureka, the Spring Boot framework, and other technologies.
Databases: Netflix utilizes EV cache, Cassandra, CockroachDB, and other databases.
Messaging/streaming: Netflix employs Apache Kafka and Fink for messaging and streaming purposes.
Video storage: Netflix uses S3 and Open Connect for video storage.
Data processing: Netflix utilizes Flink and Spark for data processing, which is then visualized using Tableau. Redshift is used for processing structured data warehouse information.
CI/CD: Netflix employs various tools such as JIRA, Confluence, PagerDuty, Jenkins, Gradle, Chaos Monkey, Spinnaker, Altand more for CI/CD processes.
👍4
اگه این ویدیو رو ندیدید از دستش ندید 👾. آموزش ردیس و کار با اون داخل پایتون
https://www.youtube.com/watch?v=Fl70DQCb4ko&t=38s
https://www.youtube.com/watch?v=Fl70DQCb4ko&t=38s
YouTube
ردیس چیست؟ آموزش ردیس در پایتون با تورهام | Redis Database - Redis in Python #redis
تو این ویدیو یاد گرفتیم ردیس چیه و چه کاربردهایی داره، چرا انقدر محبوب و اینکه چطوری داخل پایتون ازش استفاده کنیم؟ روش مختلف ذخیره کردن دیتا رو داخل ردیس یاد گرفتیم :).
➖➖➖➖Social Links➖➖➖➖➖
💬 Telegram: https://news.1rj.ru/str/TorhamDevCH
🦑 GitHub : https://github.com/torhamdev…
➖➖➖➖Social Links➖➖➖➖➖
💬 Telegram: https://news.1rj.ru/str/TorhamDevCH
🦑 GitHub : https://github.com/torhamdev…
link : https://youtu.be/dJ8cE81p8qE
۶ تا چیز در پایتون که بهتره بدونی! 🫵
تو این ویدیو به ۶ مورد مختلف درباره پایتون پرداختیم که بهتر اونا رو بدونید!. چرا؟ چون همجا استفاده میشن و در طول روز زیاد بهشون بر میخوریم :)
@TorhamDevCH
۶ تا چیز در پایتون که بهتره بدونی! 🫵
تو این ویدیو به ۶ مورد مختلف درباره پایتون پرداختیم که بهتر اونا رو بدونید!. چرا؟ چون همجا استفاده میشن و در طول روز زیاد بهشون بر میخوریم :)
@TorhamDevCH
👍8
Layered Design Architecture
دیزاین لایه ای، به شکلی از دیزاین میگن که سیستمی که توسعه میدید به چندین لایه تقسیم میشه که هر کدوم یک وظیفه دارن. هر لایه یک عمل خاص رو انجام میده و این لایهها در کنار هم کل سیستم رو کامل میکنن بیایید یک مثال بزنیم. فرض کنید که قرار بکاند یک وبلاگ رو توسعه بدیم. اگر بخواییم اون رو با این دیزاین و mindset پیش ببریم باید عملکردهای سیستممون رو جدا کنیم. این جدا سازی میتونه به این شکل باشه.
۱. دیتابیس ( پایین ترین لایه که وضیفه آپدیت و حذف و ... در دیتابیس داره)
۲. اوپریشنها ( این لایه وضیفه ساخت پست جدید، بررسی محتوا پست و هرچیزی که مربوط به خود منطق وبلاگ میشه )
۳. روترها ( که همون مسیرهای api های سیستم میشن)
اگه بخواییم به شکل فایل در بیاریم schema اش تقریبا همچین چیزی میشه :
مطالعه بیشتر
@TorhamDevCH
دیزاین لایه ای، به شکلی از دیزاین میگن که سیستمی که توسعه میدید به چندین لایه تقسیم میشه که هر کدوم یک وظیفه دارن. هر لایه یک عمل خاص رو انجام میده و این لایهها در کنار هم کل سیستم رو کامل میکنن بیایید یک مثال بزنیم. فرض کنید که قرار بکاند یک وبلاگ رو توسعه بدیم. اگر بخواییم اون رو با این دیزاین و mindset پیش ببریم باید عملکردهای سیستممون رو جدا کنیم. این جدا سازی میتونه به این شکل باشه.
۱. دیتابیس ( پایین ترین لایه که وضیفه آپدیت و حذف و ... در دیتابیس داره)
۲. اوپریشنها ( این لایه وضیفه ساخت پست جدید، بررسی محتوا پست و هرچیزی که مربوط به خود منطق وبلاگ میشه )
۳. روترها ( که همون مسیرهای api های سیستم میشن)
اگه بخواییم به شکل فایل در بیاریم schema اش تقریبا همچین چیزی میشه :
├── db
│ ├── engine.py
│ └── models.py
├── main.py
├── oprations
│ ├── authors.py
│ └── posts.py
└── routers
├── authors.py
└── posts.py
از فواید این دیزاین به flexibility و maintainability و scalability اشاره کرده.مطالعه بیشتر
@TorhamDevCH
⚡2👍1🔥1😨1
با استفاده از werkzeug میتونید یک برنامه بنویسید که با wsgi حرف بزنه و باهاش کار کنه :) ( مثل gunicorn و ..)
از کارهایی که میشه باهاش انجام داد :
Request & Response handling
URL routing
Middleware
HTTP utilities
Exception handling
منبع
@TorhamDevCH
از کارهایی که میشه باهاش انجام داد :
Request & Response handling
URL routing
Middleware
HTTP utilities
Exception handling
منبع
@TorhamDevCH
👍2
10 تا از انواع ساختار دیتا ( Data Structure ) که در طول روز بهشون بر میخوریم با مثالها دنیا واقعیشون 😶🌫.
اون R-tree نمیدونم چیه🫥
@TorhamDevCH
@TorhamDevCH
👍4
تا بحث sqli یا همون sql injection داغه بین بچهها، باید بگم که sql injection صرفا با سینتکس SQL کار داره و ربطی به ابزاری که استفاده میکنید نداره. مهم نیست از چه فریمورکی استفاده میکنید اگر داری raw sql میزنید باید مراقب این باگ باشید، این باگ با سواستفاده از سینتکس SQL میاد یک دستور داخل دستوری که شما زدید تزریق یا همون inject میکنه که باعث میشه اون دستور کار دیگه ای رو انجام بده. گاهی حتی با ایجاد ارور و خوندن اطلاعاتی که در ارور برگشته حمله اتفاق میوفته. یک مثال ساده sqli :
فرض کنید از کاربر username اش رو میگیرم و اون رو داخل متغییری به همین اسم قرار میدیم. حالا یک کوئری با این یوزرنیم میسازیم که ببینیم یوزری با این یوزرنیم داخل دیتابیس وجود داره یا نه.
توقع ما اینکه کاربر یوزرنیم اش رو وارد کنه و مثلا همچین کوئری ساخته بشه:
کوئری به این شکل میشه.
خب اینشکلی همیشه این کوئری True میشه و حمله اتفاق میوفته.
در نتیجه کل این باگ رو میشه با محدود کردن و فیلتر کردن ورودی کاربر و نوشتن یک کوئری درست هندل کرد.
این تنها مثال این باگ نیست و باهاش میشه خیلی کارها کرد، برای مثال خارج کردن اطلاعات از دیتابیس و ....
اگه به این موضوعات علاقه دارید میتونید برید سراغ وبسایت portswigger که سازنده Burp Suite هستند.
تو این مقالهاشون درباره sqli توضیح دادن. همچنین یک دوره آموزشی رایگان امنیت هم دارن.
@TorhamDevCH
فرض کنید از کاربر username اش رو میگیرم و اون رو داخل متغییری به همین اسم قرار میدیم. حالا یک کوئری با این یوزرنیم میسازیم که ببینیم یوزری با این یوزرنیم داخل دیتابیس وجود داره یا نه.
"SELECT * FROM Users WHERE username = " + username
خوب این کوئری میگه آیا یوزری با این یوزرنیم وجود دارد یا نه؟توقع ما اینکه کاربر یوزرنیم اش رو وارد کنه و مثلا همچین کوئری ساخته بشه:
"SELECT * FROM Users WHERE username = torhamdev"
خوب حالا چی میشه اگر کاربر ورودی دیگه ای بده؟ مثلا ورودی بده torhamdev OR 1=1 ؟کوئری به این شکل میشه.
"SELECT * FROM Users WHERE username = torhamdev OR 1=1"
حالا چه اتفاقی افتاد؟ کوئری تبدیل شد. اگر یوزری با این یوزرنیم وجود داشت یا عدد یک برابر با یک بود. :)خب اینشکلی همیشه این کوئری True میشه و حمله اتفاق میوفته.
در نتیجه کل این باگ رو میشه با محدود کردن و فیلتر کردن ورودی کاربر و نوشتن یک کوئری درست هندل کرد.
این تنها مثال این باگ نیست و باهاش میشه خیلی کارها کرد، برای مثال خارج کردن اطلاعات از دیتابیس و ....
اگه به این موضوعات علاقه دارید میتونید برید سراغ وبسایت portswigger که سازنده Burp Suite هستند.
تو این مقالهاشون درباره sqli توضیح دادن. همچنین یک دوره آموزشی رایگان امنیت هم دارن.
@TorhamDevCH
👍5
۳ ساعتی هست درگیر یک pull گرفتن ساده داکر ام. چیزی ک مردم یک کشور منطقی در کمتر از ۱ دقیقه انجام میدن :). و تازه الان که pull گرفتن تموم شد نوبت نصب یکسری کتابخونه پایتونی شد که اونا هم دارن time out میشن. :^). که این هم مردم یک کشور منطقی کمتر ۱ دقیقه انجام میدن.
💔25👎3👀2