سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی
نکته sadra در مورد این پست:
That's not "How Git Works"
That's "How to Work with Git"
That's not "How Git Works"
That's "How to Work with Git"
👏8👍1😁1
Forwarded from Python Hints
امکان نداره شما پروژه پایتونی رو کد بزنید و اطلاعات درست پروژه رو ندید
۱- سیستم عاملی که روش کد زدید یا تست گرفتید :
۳- دستور اصلی به جهت اجرای پروژه :
فقط تحت ۱ شرابط حق دارید ۲ مورد اول رو جایی گزارش نکنید و کسی هم بهتون سخت نگیره (هرچند بازم خوب نیست ولی خب) :
Readme.mdحداقل باید شامل ۳ مورد باشه :
۱- سیستم عاملی که روش کد زدید یا تست گرفتید :
OS: Ubuntu 20.04
۲- ورژن پایتونی که دارید استفاده میکنید:Python: CPython 3.10.12
پایتون نسخههای مختلفی داره اگر از نسخه سایت python.org
استفاده میکنید به اسم CPython
شناخته میشه (توی شرکتهایی که از نسخههای دیگه مثل IronPython - Pypy - IntelPython
استفاده میکنند رعایت این نکته بسیار مهم هست)۳- دستور اصلی به جهت اجرای پروژه :
$ python main.py —help
فقط تحت ۱ شرابط حق دارید ۲ مورد اول رو جایی گزارش نکنید و کسی هم بهتون سخت نگیره (هرچند بازم خوب نیست ولی خب) :
Docker
اگر Dockerfile
یا docker image
استفاده میکنید توی پروژه میتونید به ترتیب هر ۳ مورد یا ۲ مورد اول رو توی گزارش ننویسید.👍9👎1
Forwarded from Python BackendHub
راجب اصول تست نویسی, یک مقاله پیدا کردم, میخوندمش مفید و کلی بود
به عنوان یک software engineer حداقل باید با مفاهیم اشنا باشین که وقتی با کلمه های زیر خوردین فکر نکنید چیز خیلی عجیب و فضایی هستند. نمیگم بلدشون باشید ولی باید بدونید چی هستند. دونستن این موارد کمک میکنه بهتون که به عنوان یک SE بهتر کد بنویسید و بهتر تست بنویسید.
- Testing Strategy
- Test policy
- Test scenario & Test case
- Software requirements, and requirements review
- Types of automated testing (A/B, smoke, unit, integration, e2e, exploratory, stress, load, perfomance, regression, cross-device, crowss-browser, acceptance, black box, Operational acceptance, conctract acceptance)
- Types of manual testing (exploratory testing, ad hoc testing)
- Software quality indicators
- Test Metrics
لینک مقاله:
https://www.altexsoft.com/blog/engineering/software-testing-qa-best-practices/
@ManiFoldsPython
به عنوان یک software engineer حداقل باید با مفاهیم اشنا باشین که وقتی با کلمه های زیر خوردین فکر نکنید چیز خیلی عجیب و فضایی هستند. نمیگم بلدشون باشید ولی باید بدونید چی هستند. دونستن این موارد کمک میکنه بهتون که به عنوان یک SE بهتر کد بنویسید و بهتر تست بنویسید.
- Testing Strategy
- Test policy
- Test scenario & Test case
- Software requirements, and requirements review
- Types of automated testing (A/B, smoke, unit, integration, e2e, exploratory, stress, load, perfomance, regression, cross-device, crowss-browser, acceptance, black box, Operational acceptance, conctract acceptance)
- Types of manual testing (exploratory testing, ad hoc testing)
- Software quality indicators
- Test Metrics
لینک مقاله:
https://www.altexsoft.com/blog/engineering/software-testing-qa-best-practices/
@ManiFoldsPython
AltexSoft
11 Ways to Improve Software Testing through Planning, Work E
Learn the ways to improve software testing and quality assurance through planning, establishing a productive work environment, automated testing, and reporting
👍3
Forwarded from Django Expert (Sepehr Akbarzadeh)
https://medium.com/@sepehrakbarzadeh/revolutionize-your-data-handling-with-the-unit-of-work-design-pattern-in-python-and-django-14895d147cdc
در این مقاله راجع به دیزاین پترن Unit of Work در جنگو صحبت شده. در رابطه با اینکه چطور transaction هاتون رو بهتر مدیریت کنید در پروژههایی که پیچیدگی نسبتا بالایی دارند. میتونه در پروژههای با scale بالا و همچنین در مصاحبههای فنی کمکتون کنه.
در این مقاله راجع به دیزاین پترن Unit of Work در جنگو صحبت شده. در رابطه با اینکه چطور transaction هاتون رو بهتر مدیریت کنید در پروژههایی که پیچیدگی نسبتا بالایی دارند. میتونه در پروژههای با scale بالا و همچنین در مصاحبههای فنی کمکتون کنه.
Medium
Revolutionize Your Data Handling with the Unit of Work Design Pattern in Python and Django
As developers, we all know the headaches that come with managing complex data updates and ensuring their consistency. In the realm of…
👍2
BenDev
Voice message
✅بعد از اینکه این ویس امیربهادر رو که گوش دادید. نا امید نشید
اتفاقا راهنمایی های خوبی داشت و خودش یه roadmap ع
البته بعد از گوش دادن به این ویس بیشتر می فهمیم که کمتر بلدیم
در مورد بعضی نکاتی که در مورد دیتابیس گفت. به نظرم بعضی شون از وظایف db admin هست. اما متاسفانه اکثر شرکت ها انتظار دارن برنامه نویس back-end به sql (منظورم فقط زبانش نیست) مسلط باشن.
که البته این اشتباه باعث شده که خیلی ها احساس کنن به db admin نیاز ندارن. کار db admin ها فقط مدیریت بکاپ و یوزرها و کارهای زیرساختی نیست. گاهی اوقات مشورت با اونا میتونه پرفورمنس رو بالا ببره. (صحبتش در مورد جنگو بود. من رفتم سمت دیتابیس 😅 )
اتفاقا راهنمایی های خوبی داشت و خودش یه roadmap ع
البته بعد از گوش دادن به این ویس بیشتر می فهمیم که کمتر بلدیم
در مورد بعضی نکاتی که در مورد دیتابیس گفت. به نظرم بعضی شون از وظایف db admin هست. اما متاسفانه اکثر شرکت ها انتظار دارن برنامه نویس back-end به sql (منظورم فقط زبانش نیست) مسلط باشن.
که البته این اشتباه باعث شده که خیلی ها احساس کنن به db admin نیاز ندارن. کار db admin ها فقط مدیریت بکاپ و یوزرها و کارهای زیرساختی نیست. گاهی اوقات مشورت با اونا میتونه پرفورمنس رو بالا ببره. (صحبتش در مورد جنگو بود. من رفتم سمت دیتابیس 😅 )
👍8
جنگولرن
با عرض پوزش از همه دوستان من باز سوزنم روی html css گیر کرده لذا این پست رو میزارم و بقیه مطالب مرتبط اش رو توی کامنت می نویسم. شاید به درد کسی خورد. ✔️ اولین نکته مهم: html رو برای structure استفاده میکنیم. و css رو برای style گاهی اوقات ما با استفاده بیخودی…
سلام به همه
اون border رو uncomment کنید و بگید چرا رفتار browser اینجوریه.
#سوزن_گیر_کرده_روی_html
کد html برای راحتی شما:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>test</title>
<style>
#yek, #do{
width: 50px;
height: 50px;
margin: 50px;
}
#yek{
background-color: aqua;
/* border: 1px solid black; */
}
#do{
background-color: red;
}
</style>
</head>
<body>
<div id="yek">
<div id="do"></div>
</div>
</body>
</html>
اون border رو uncomment کنید و بگید چرا رفتار browser اینجوریه.
#سوزن_گیر_کرده_روی_html
کد html برای راحتی شما:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>test</title>
<style>
#yek, #do{
width: 50px;
height: 50px;
margin: 50px;
}
#yek{
background-color: aqua;
/* border: 1px solid black; */
}
#do{
background-color: red;
}
</style>
</head>
<body>
<div id="yek">
<div id="do"></div>
</div>
</body>
</html>
👍1
✅ مقاله ای از @TadavomnisT_channel
مقایسه سرعت خوندن/نوشتن RAM و HDD
چند سال پیش توی یه فرومی توی یه تایپیکی مربوط به برنامهنویسی من به این نکته اشاره کردم که سرعت خوندن/نوشتن توی هارددیسک بطور متوسط 100 هزار بار از رم کمتره..!
برای بسیاری از برنامهنویسها این حرف عجیب بود، و خیلیا قبولش نمیکردن، برای همین من مجبور شدم تکنولوژی هر دو رو توضیح بدم و با زبان تخصصی بگم که چرا چنین حرفی زدم.
با این مقاله همراه باشین تا ببینیم چرا میگم هارد دیسک بطور متوسط صد هزار بار از رم کند تره.
خودم هنوز وقت نکردم کامل بخونمش (خیلی مفصل توضیح داده)
لینک:
https://tadavomnist.github.io/Articles/4-RAM-vs-HDD-Pr/4-RAM-vs-HDD-Pr.html
مقایسه سرعت خوندن/نوشتن RAM و HDD
چند سال پیش توی یه فرومی توی یه تایپیکی مربوط به برنامهنویسی من به این نکته اشاره کردم که سرعت خوندن/نوشتن توی هارددیسک بطور متوسط 100 هزار بار از رم کمتره..!
برای بسیاری از برنامهنویسها این حرف عجیب بود، و خیلیا قبولش نمیکردن، برای همین من مجبور شدم تکنولوژی هر دو رو توضیح بدم و با زبان تخصصی بگم که چرا چنین حرفی زدم.
با این مقاله همراه باشین تا ببینیم چرا میگم هارد دیسک بطور متوسط صد هزار بار از رم کند تره.
خودم هنوز وقت نکردم کامل بخونمش (خیلی مفصل توضیح داده)
لینک:
https://tadavomnist.github.io/Articles/4-RAM-vs-HDD-Pr/4-RAM-vs-HDD-Pr.html
❤3
جنگولرن
سلام به همه اون border رو uncomment کنید و بگید چرا رفتار browser اینجوریه. #سوزن_گیر_کرده_روی_html کد html برای راحتی شما: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">…
لینک زیر تقریبا همین داستان ماست 😉 واقعا html css سخته
#سوزن_گیر_کرده_روی_html
https://www.geeksforgeeks.org/why-margin-on-child-element-moves-the-parent-element-in-css/
#سوزن_گیر_کرده_روی_html
https://www.geeksforgeeks.org/why-margin-on-child-element-moves-the-parent-element-in-css/
GeeksforGeeks
Why margin on child element moves the parent element in CSS ? - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
👎3👍1
جنگولرن
سلام به همه اون border رو uncomment کنید و بگید چرا رفتار browser اینجوریه. #سوزن_گیر_کرده_روی_html کد html برای راحتی شما: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">…
✅ بهترین جواب:
هرجا سی اس اس اذیت میکنه بیاین پیش خودم احتمال خیلی زیاد بتونم کمک کنم :)
این موردی که دوستمون بهش برخورده موضوعی هستش به اسم
Margin collapsing
که کلا هر زمان دو عنصر در مجاورت هم باشن در راستای عمود بدون اینکه هیچ فاصله ای بینشون باشه مرورگر فقط یکی از مارجین ها رو در نظر میگیره و دیگری رو حذف یا به اصطلاح کلپس میکنه.
بحثش طولانی هستش ولی همین عنوان رو سرچ کنین کلی مقاله و ویدیو میاد که مورد های مختلف رو بررسی میکنه.
دوتا نکته:
اول اینکه این رفتار توی استانداردها هستش و مرورگرها موظف هستن که اینطوری پیاده ش کنن.
دوم اینکه من گفتم راستای عمود برای اینکه فهمش راحت تر باشه و الا درستش اینه بگیم راستای
block
که این هم باز یک بحث دیگه رو باز میکنه که جاش اینجا نیست :)
هرجا سی اس اس اذیت میکنه بیاین پیش خودم احتمال خیلی زیاد بتونم کمک کنم :)
این موردی که دوستمون بهش برخورده موضوعی هستش به اسم
Margin collapsing
که کلا هر زمان دو عنصر در مجاورت هم باشن در راستای عمود بدون اینکه هیچ فاصله ای بینشون باشه مرورگر فقط یکی از مارجین ها رو در نظر میگیره و دیگری رو حذف یا به اصطلاح کلپس میکنه.
بحثش طولانی هستش ولی همین عنوان رو سرچ کنین کلی مقاله و ویدیو میاد که مورد های مختلف رو بررسی میکنه.
دوتا نکته:
اول اینکه این رفتار توی استانداردها هستش و مرورگرها موظف هستن که اینطوری پیاده ش کنن.
دوم اینکه من گفتم راستای عمود برای اینکه فهمش راحت تر باشه و الا درستش اینه بگیم راستای
block
که این هم باز یک بحث دیگه رو باز میکنه که جاش اینجا نیست :)
👍3😁2
Forwarded from Python BackendHub
این meme رو دیدم خیلی جالب بود… عمق دانشنتون از PostgreSQL تا چه حدیه؟ یکم حس بی سوادی دست داد بهم :)) تو یکی از پستا چند روز پیش راجب یکیش پرداخته بودم 😁
Every sql operator is actually a join? WTF?😂
@ManiFoldsPython
Every sql operator is actually a join? WTF?😂
@ManiFoldsPython
👍10😁1🤔1
Python BackendHub
این meme رو دیدم خیلی جالب بود… عمق دانشنتون از PostgreSQL تا چه حدیه؟ یکم حس بی سوادی دست داد بهم :)) تو یکی از پستا چند روز پیش راجب یکیش پرداخته بودم 😁 Every sql operator is actually a join? WTF?😂 @ManiFoldsPython
سلام به همه
پیرو این پست باید بگم که قرار نیست برنامه نویس همه اینارو بلد باشه. چون بیشتر سمت دیتابیس هست. اما تا اون دو تا سطح اول که هنوز کمرش خم نشده رو دیگه باید بلد باشیم.
به نظرم یه نگاهی به کتابهایی مثل مهندسی نرم افزار، ساختمان داده ها، طراحی الگوریتم داشته باشید بد نیست.
منظورم این نیست که من اینارو بلدم. خودمم با 10 پاس کردم رفته. خودمم باید دوباره بخونمشون
پیرو این پست باید بگم که قرار نیست برنامه نویس همه اینارو بلد باشه. چون بیشتر سمت دیتابیس هست. اما تا اون دو تا سطح اول که هنوز کمرش خم نشده رو دیگه باید بلد باشیم.
به نظرم یه نگاهی به کتابهایی مثل مهندسی نرم افزار، ساختمان داده ها، طراحی الگوریتم داشته باشید بد نیست.
منظورم این نیست که من اینارو بلدم. خودمم با 10 پاس کردم رفته. خودمم باید دوباره بخونمشون
👏8👍2
Forwarded from مطالب رایگان و آزاد🎈 ( behrad)
هش کردن پسورد چیست؟
نمک زدن به پسورد چیست؟
جدول رنگینکمونی چیست؟
توی سیستمهای وب / اینترنت / سوشال مدیا و...، پسوردها عموما توی دیتابیس ذخیره میشن.
دیتابیس یکی از فیلدهای مورد علاقه منه، چند بار گفتم ازش حرف میزنیم ولی حرف نزدم هنوز... شما اگه علاقه دارین، تاکید مکرر میکنم که کتاب استاد آبراهام رو بخونین.
در این باره که این سیستمها میتونن پسورد صریح و plain شمارو داشته باشن که شکی نیست، اما یه عرفی هست، یک سیاست و یه اصل امنیتی که:
پسوردهایی که قراره توی دیتابیس ذخیره بشن، بصورت هش (هش کریپتوگرافیک- یا با آنتروپی بالا) ذخیره بشن.
این چه فایدهای داره؟
اگر روزی، هر اتفاقی برای سیستم افتاد و دیتابیس هک شد، پسورد صریح کاربرا اونجا نیست... و بجاش هشش هست، و از روی اون هش نمیشه پسورد رو بدست آورد (چون آنتروپیش بالاست - قبلا توضیح دادم)
دیتابیسها طراحی نشدن که امن باشن، طراحی شدن که بهینه و با سرعت زیاد و با هزینه کم کار کنن، از طرفی هیچ سیستمی امن نیست.
فرض کنید یکی با گونی بیاد توی دیتاسنترها و دیسکهارو بریزه توی گونی با خودش ببره🥴
به هر حال ریسک وجود داره، با رعایت کردن این عرف - ریسک لو رفتن پسورد مردم از بین میره.
برای همینه که توی اکثر سیستمها یا رمز رو براتون ریست میکنن، یا ازتون میخوان که با ایمیل برین توی یه لینک خودتون ریست کنین، چون خودشونم پسورد شمارو ندارن.
چرا هش میکنن؟ چرا رمزنگاری نمیکنن؟
چون که هش کریپتوگرافیک یه طرفه هست کلید هم نمیخواد، رمزنگاری دوطرفه هست کلید هم میخواد - خود کلیدو کجا ذخیره کنن؟
اگه لو بره همه پسوردها دیکریپت میشه.
+ اورهد و سربار محاسباتی هم داره.
هش راهکار زیرکانه و عملی خوبی هست✅
=+=+=+=+=+=+=+=+=+=+=+=+
از چه هشهایی میتونیم استفاده کنیم؟
یک هش کریپتوگرافیک - قبلا توضیح دادم، هش هایی که آنتروپی بالایی دارن. یک ذره دیتای ورودی تغییر کنه، کل خروجی هش عوض میشه ...
خروجیش قابل مدلسازی و حدس و الگویابی نیست، یه حالت شبهرندوم داره.
به اینا میگن هش کریپتوگرافیک - قدیما مسیجدایجست معروف بود (MD5 نسخه 5) مثلا، اما الان دیگه بخاطر کالیژنهایی که میزنه ناامنه...
الان
SHA : Secure Hash Algorithm
امن تلقی میشه - توضیح دادم قبلا.
=+=+=+=+=+=+=+=+=+=+=+=+
حالا... تا اینجا یاد گرفتیم که برای سیستم اعتبارسنجیمون، پسورد رو هش کنیم و بعد ذخیره کنیم.
حالا فرض کنیم یکی با گونی اومد و دیسکهارو دزدید و دیتابیس لیک شد...
هکرهای خبیث و خطرناک، هش های پسوردهای متداول رو از پیش حساب کردن و همیشه توی جیبشون دارن، به محض اینکه ی دیتابیس لیک شده میبینن سریع تست میکنن که مثلا کیا هش پسوردشون
827ccb0eea8a706c4c34a16891f84e7b
هست، یهو میبینن که عه 40 درصد دیتابیس همینه...
چون این هش "12345" هست.
این میشه نوعی بروتفورس تعمیم یافته - هش پسوردهای متداول رو قبلا حساب کردن و مثلا میتونن تا 95 درصد کل پسوردهای دیتابیس رو بفهمن اصلش چی بوده....
چون مردم از پسورد متداول استفاده میکنن.
اون هکرایی که خیلی خیلی خفن هستن (هکرای بیترتبیت و بیادب و خبیث منظورمه) عموما بجای لیست هشها یا فایلش، یه جدول رنگین کمونی 🌈 دارن که عموما روی دیتابیس به شکلی مستقر شده که سرعت جستجوی هش رو خیلی زیاد میکنه و زمان رو کم میکنه.
چیز خیلی سادهایه، ما این هشهایی که حساب کردیم رو میایم با یه راهکار ریاضیاتی جوری توی یه جدول (مثلا دیتابیس) مینویسیم که با کمترین هزینه در دسترس باشن و الگوریتم جستجومون با یه بار سیک کردن بتونه رنج زیادی از هشهای موجود رو بازیابی کنه.
در موردش بخونین...
یسری ابزار هست اصلا که rainbow-table ها توش امبد شده... و استفاده میشه کرد.
فکر کنم این کالی کوچولوی من توش پر از ایناس... اگه داشت نیشون میدم:3
خلاصه با این کار گفتیم میتونن خیلی سریع 95 هشهارو کرک کنن.
پس چیکار کنیم؟؟؟؟
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
مفهومی توی رمزنگاری هست به اسم نمک🧂😬
ما روی داده صریحمون (پسورد) قبل از اینکه هش بشه یخورده نمک (salt) میزنیم، این نمک یه دیتای رندومی هست ممکنه هر جوری ساخته شده باشه... این میتونه بچسبه به ته پسورد، یا اصلا مثل یه ادویه واقعی باهاش ایکسور بشه یا هرجوری بپاشیمش روی پسورد.
چون هشمون کریپتوگرافیک بوده، خروجی خیـــــلی تغییر بزرگی میکنه و کلا یه چیز رندوم دیگه میشه.
هکر نمیدونه من چه جور نمکی پاشیدم، چجوری پاشیدمش و چقدر پاشیدم!
جدول رنگین کمونیش دیگه کار نمیکنه:))
این میشه نمک زدن به پسورد.
توی رمزنگاری هم استفاده میشه، زمانی که ما سایز کلیدمونو استاندارد کنیم، که بدیمش به انکریپشن- مثلا AES، باید هشش کنیم، عموما بهش نمک هم میزنن و نمک رو هم بعدا کنار سایفر میذارن:)) (چرا؟ بهش فکر کنید)
=+=+=+=+=+=+=+=+=+=+=+
نمک زدن به پسورد چیست؟
جدول رنگینکمونی چیست؟
توی سیستمهای وب / اینترنت / سوشال مدیا و...، پسوردها عموما توی دیتابیس ذخیره میشن.
دیتابیس یکی از فیلدهای مورد علاقه منه، چند بار گفتم ازش حرف میزنیم ولی حرف نزدم هنوز... شما اگه علاقه دارین، تاکید مکرر میکنم که کتاب استاد آبراهام رو بخونین.
در این باره که این سیستمها میتونن پسورد صریح و plain شمارو داشته باشن که شکی نیست، اما یه عرفی هست، یک سیاست و یه اصل امنیتی که:
پسوردهایی که قراره توی دیتابیس ذخیره بشن، بصورت هش (هش کریپتوگرافیک- یا با آنتروپی بالا) ذخیره بشن.
این چه فایدهای داره؟
اگر روزی، هر اتفاقی برای سیستم افتاد و دیتابیس هک شد، پسورد صریح کاربرا اونجا نیست... و بجاش هشش هست، و از روی اون هش نمیشه پسورد رو بدست آورد (چون آنتروپیش بالاست - قبلا توضیح دادم)
دیتابیسها طراحی نشدن که امن باشن، طراحی شدن که بهینه و با سرعت زیاد و با هزینه کم کار کنن، از طرفی هیچ سیستمی امن نیست.
فرض کنید یکی با گونی بیاد توی دیتاسنترها و دیسکهارو بریزه توی گونی با خودش ببره🥴
به هر حال ریسک وجود داره، با رعایت کردن این عرف - ریسک لو رفتن پسورد مردم از بین میره.
برای همینه که توی اکثر سیستمها یا رمز رو براتون ریست میکنن، یا ازتون میخوان که با ایمیل برین توی یه لینک خودتون ریست کنین، چون خودشونم پسورد شمارو ندارن.
چرا هش میکنن؟ چرا رمزنگاری نمیکنن؟
چون که هش کریپتوگرافیک یه طرفه هست کلید هم نمیخواد، رمزنگاری دوطرفه هست کلید هم میخواد - خود کلیدو کجا ذخیره کنن؟
اگه لو بره همه پسوردها دیکریپت میشه.
+ اورهد و سربار محاسباتی هم داره.
هش راهکار زیرکانه و عملی خوبی هست✅
=+=+=+=+=+=+=+=+=+=+=+=+
از چه هشهایی میتونیم استفاده کنیم؟
یک هش کریپتوگرافیک - قبلا توضیح دادم، هش هایی که آنتروپی بالایی دارن. یک ذره دیتای ورودی تغییر کنه، کل خروجی هش عوض میشه ...
خروجیش قابل مدلسازی و حدس و الگویابی نیست، یه حالت شبهرندوم داره.
به اینا میگن هش کریپتوگرافیک - قدیما مسیجدایجست معروف بود (MD5 نسخه 5) مثلا، اما الان دیگه بخاطر کالیژنهایی که میزنه ناامنه...
الان
SHA : Secure Hash Algorithm
امن تلقی میشه - توضیح دادم قبلا.
=+=+=+=+=+=+=+=+=+=+=+=+
حالا... تا اینجا یاد گرفتیم که برای سیستم اعتبارسنجیمون، پسورد رو هش کنیم و بعد ذخیره کنیم.
حالا فرض کنیم یکی با گونی اومد و دیسکهارو دزدید و دیتابیس لیک شد...
هکرهای خبیث و خطرناک، هش های پسوردهای متداول رو از پیش حساب کردن و همیشه توی جیبشون دارن، به محض اینکه ی دیتابیس لیک شده میبینن سریع تست میکنن که مثلا کیا هش پسوردشون
827ccb0eea8a706c4c34a16891f84e7b
هست، یهو میبینن که عه 40 درصد دیتابیس همینه...
چون این هش "12345" هست.
این میشه نوعی بروتفورس تعمیم یافته - هش پسوردهای متداول رو قبلا حساب کردن و مثلا میتونن تا 95 درصد کل پسوردهای دیتابیس رو بفهمن اصلش چی بوده....
چون مردم از پسورد متداول استفاده میکنن.
اون هکرایی که خیلی خیلی خفن هستن (هکرای بیترتبیت و بیادب و خبیث منظورمه) عموما بجای لیست هشها یا فایلش، یه جدول رنگین کمونی 🌈 دارن که عموما روی دیتابیس به شکلی مستقر شده که سرعت جستجوی هش رو خیلی زیاد میکنه و زمان رو کم میکنه.
چیز خیلی سادهایه، ما این هشهایی که حساب کردیم رو میایم با یه راهکار ریاضیاتی جوری توی یه جدول (مثلا دیتابیس) مینویسیم که با کمترین هزینه در دسترس باشن و الگوریتم جستجومون با یه بار سیک کردن بتونه رنج زیادی از هشهای موجود رو بازیابی کنه.
در موردش بخونین...
یسری ابزار هست اصلا که rainbow-table ها توش امبد شده... و استفاده میشه کرد.
فکر کنم این کالی کوچولوی من توش پر از ایناس... اگه داشت نیشون میدم:3
خلاصه با این کار گفتیم میتونن خیلی سریع 95 هشهارو کرک کنن.
پس چیکار کنیم؟؟؟؟
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
مفهومی توی رمزنگاری هست به اسم نمک🧂😬
ما روی داده صریحمون (پسورد) قبل از اینکه هش بشه یخورده نمک (salt) میزنیم، این نمک یه دیتای رندومی هست ممکنه هر جوری ساخته شده باشه... این میتونه بچسبه به ته پسورد، یا اصلا مثل یه ادویه واقعی باهاش ایکسور بشه یا هرجوری بپاشیمش روی پسورد.
چون هشمون کریپتوگرافیک بوده، خروجی خیـــــلی تغییر بزرگی میکنه و کلا یه چیز رندوم دیگه میشه.
هکر نمیدونه من چه جور نمکی پاشیدم، چجوری پاشیدمش و چقدر پاشیدم!
جدول رنگین کمونیش دیگه کار نمیکنه:))
این میشه نمک زدن به پسورد.
توی رمزنگاری هم استفاده میشه، زمانی که ما سایز کلیدمونو استاندارد کنیم، که بدیمش به انکریپشن- مثلا AES، باید هشش کنیم، عموما بهش نمک هم میزنن و نمک رو هم بعدا کنار سایفر میذارن:)) (چرا؟ بهش فکر کنید)
=+=+=+=+=+=+=+=+=+=+=+
👏8👍4❤1
Forwarded from Python BackendHub
ویدیو خیلی خوبی بود، توصیه میکنم حتما ببینید. من داخل یک جایی دیدم دوستان متاسفانه برداشت کردن که امیربهادر گفته <کلا جنگو بدرد نمیخوره> 😂 خودم کارایی که میکنم و واقعا به قدرت حل مسئله ام جواب داده:
۰. اولین و مهم ترین نکته: همیشه query رو روی دیتابیس مینویسم، تا بهینه ترین کوئری ممکن رو بتونم بنویسم. بعد ترجمش میکنم به کد ORM. خیلی دیدم این مسیرو برعکس میرن که باعث وابستگی به ORM میشه.
۱. اولا کدای لایبری رو میخونم همونطور که اشاره کرد. خیلی وقتا داکیومت نمیخونم. واقعا لایبریا خیلی کوچیکن اکثرا، مثلا فلسک کلا ۱۵-۲۰ فایله پایتونیه تو ۲ فولدر 😁 تستاشم میخونم حتی. خیلی کمکم کرده این موضوع
۲. سخترین تسکایی که تو شرکت ممکنه به من assign نشه اخر هفته یواشکی انجام میدم :)) واقعا کمکتون میکنه این موضوع 😁
۳. تسکایی که قبلا حل کردم بازنویسی مجدد میکنم که بهترش کنم
۴. سعی میکنم تولز ها و لایبری های جدید یاد بگیرم. مثل propan یا rocketry.و خیلی چیزای دیگه که تو شرکت استفاده میشه و نمیتونم اشاره کنم، چون سولوشن هایی که میدن اکثرا راه حل خیلی خلاقانه ای پشتشونه. حتی کدشونم میخونم.
۵. وقتی با یک چیزی کار میکنم، سعی میکنم بهش فکر کنم. مثلا واقعا برام سوال شده بود Kafka چطور fault tolerance ای داره و چه مزیت و ضرری داره نسبت به rabbitmq، که چند تا مقاله راجب دیزاین اینترنالش خوندم و واقعا جالب بود.
۶. تا یک چیزیو حل نکنم ولش نمیکنم 😂 قبلا اینطور بودم که اگه میدیدم یک shortcut میانبر هست که مثلا صورت سوال رو پاک میکنم از اون میرم، ولی الان خیلی به ندرت پیش میاد همچین کاری کنم
@ManiFolsPython
۰. اولین و مهم ترین نکته: همیشه query رو روی دیتابیس مینویسم، تا بهینه ترین کوئری ممکن رو بتونم بنویسم. بعد ترجمش میکنم به کد ORM. خیلی دیدم این مسیرو برعکس میرن که باعث وابستگی به ORM میشه.
۱. اولا کدای لایبری رو میخونم همونطور که اشاره کرد. خیلی وقتا داکیومت نمیخونم. واقعا لایبریا خیلی کوچیکن اکثرا، مثلا فلسک کلا ۱۵-۲۰ فایله پایتونیه تو ۲ فولدر 😁 تستاشم میخونم حتی. خیلی کمکم کرده این موضوع
۲. سخترین تسکایی که تو شرکت ممکنه به من assign نشه اخر هفته یواشکی انجام میدم :)) واقعا کمکتون میکنه این موضوع 😁
۳. تسکایی که قبلا حل کردم بازنویسی مجدد میکنم که بهترش کنم
۴. سعی میکنم تولز ها و لایبری های جدید یاد بگیرم. مثل propan یا rocketry.و خیلی چیزای دیگه که تو شرکت استفاده میشه و نمیتونم اشاره کنم، چون سولوشن هایی که میدن اکثرا راه حل خیلی خلاقانه ای پشتشونه. حتی کدشونم میخونم.
۵. وقتی با یک چیزی کار میکنم، سعی میکنم بهش فکر کنم. مثلا واقعا برام سوال شده بود Kafka چطور fault tolerance ای داره و چه مزیت و ضرری داره نسبت به rabbitmq، که چند تا مقاله راجب دیزاین اینترنالش خوندم و واقعا جالب بود.
۶. تا یک چیزیو حل نکنم ولش نمیکنم 😂 قبلا اینطور بودم که اگه میدیدم یک shortcut میانبر هست که مثلا صورت سوال رو پاک میکنم از اون میرم، ولی الان خیلی به ندرت پیش میاد همچین کاری کنم
@ManiFolsPython
👍3
Forwarded from Seyed Mahdi Notes (Seyed Mahdi)
دیروز سوال شد ازم که آیا fast api سریع هست؟
خب در مرحله ی اول که اسمش روشه . اسمش فسته . اگه کند بود اسمشو میزاشتن slow api :)
به نظر من این قضیه و شمارش ریکوئست هایی که هر فریمورک میتونه در ثانیه ریسپانس بده (req/sec) کار باطلی هست
بر فرض ما یه app رو تازه نوشتیم(به هر زبونی و فریمورکی فرقی نمیکنه) توی قدم اول رانش میکنیم!!! نمیریم استرس و لود تست ازش بگیریم که همون اول :/
بعد چندین سال صبر میکنیم تا یوزرای همزمان سایت زیادتر بشن!
بعد ازدیاد جمعیت اولین bottleneck ای که بر میخوریم اینه که اپ کند شده... خب ورکر هاشو زیاد میکنیم. توی پایتون گونیکورن این قضیه رو هندل میکنه
بعد یه مدت وقتی شلوغ تر شدیم میبینیم دیتابیس زیر فشاره. خب قبل اینکه توی این استیت باشید باید کوئری هاتون رو تا جای ممکن بهینه میکردید.
توی این مرحله ۲ تا سولوشن دارید! (دقت کنید که هنوز مهم نیست اپ رو با چی نوشتید:))
- کش کردن: بخشی از دیتای دیتابیس رو کش کنید حالا یا با قابلیتای خود دیتابیس یا ردیس ای چیزی بزارید وسط
- کلاستر کردن دیتابیس: میتونید دیتابیس رو ۳ تا اینستنس ازش بیارید بالا و یا slave و master بزارید و تمام read ها رو بفرسید سمت اسلیو
خب تا اینجا احتمالا بالای ۵۰۰ تا یوزر همزمان دارید! ادامه بدم؟
خب قدم بعد مجدد app کم میاره اگه نمیتونید ترد ها و ورکر هاشو بیشتر از این بالا ببرید ؛ اینجاست که بحث فریمورک ها رو مطرح ...
نه خب سخت در اشتباهید بیام سر قضیه فریمورک و زبان بحث کنم
وقتی شما ۱۰۰۰ تا یوزر همزمان دارید یعنی پولتون از پارو بالا میره
برید ۳ تا سرور دیگه بخرید و بکندتون رو روی اونا هم ران کنید(همزمان ۳ جا) بعد از جایی که خریدید بگید یه نتورک داخلی بین این ۴ سرورتون بزاره . روی سرور ۴ ام haproxy یا nginx بزنید که ترافیک ورودی رو پخش کنه بین این ۳ تا سرور ... ایزی
در راستای این پست ، یکی میگفت: اونایی که وسط حرفاشون کلمات انگلیسی استفاده میکنن خیلی کنسل هستن :))))
خب در مرحله ی اول که اسمش روشه . اسمش فسته . اگه کند بود اسمشو میزاشتن slow api :)
به نظر من این قضیه و شمارش ریکوئست هایی که هر فریمورک میتونه در ثانیه ریسپانس بده (req/sec) کار باطلی هست
بر فرض ما یه app رو تازه نوشتیم(به هر زبونی و فریمورکی فرقی نمیکنه) توی قدم اول رانش میکنیم!!! نمیریم استرس و لود تست ازش بگیریم که همون اول :/
بعد چندین سال صبر میکنیم تا یوزرای همزمان سایت زیادتر بشن!
بعد ازدیاد جمعیت اولین bottleneck ای که بر میخوریم اینه که اپ کند شده... خب ورکر هاشو زیاد میکنیم. توی پایتون گونیکورن این قضیه رو هندل میکنه
بعد یه مدت وقتی شلوغ تر شدیم میبینیم دیتابیس زیر فشاره. خب قبل اینکه توی این استیت باشید باید کوئری هاتون رو تا جای ممکن بهینه میکردید.
توی این مرحله ۲ تا سولوشن دارید! (دقت کنید که هنوز مهم نیست اپ رو با چی نوشتید:))
- کش کردن: بخشی از دیتای دیتابیس رو کش کنید حالا یا با قابلیتای خود دیتابیس یا ردیس ای چیزی بزارید وسط
- کلاستر کردن دیتابیس: میتونید دیتابیس رو ۳ تا اینستنس ازش بیارید بالا و یا slave و master بزارید و تمام read ها رو بفرسید سمت اسلیو
خب تا اینجا احتمالا بالای ۵۰۰ تا یوزر همزمان دارید! ادامه بدم؟
خب قدم بعد مجدد app کم میاره اگه نمیتونید ترد ها و ورکر هاشو بیشتر از این بالا ببرید ؛ اینجاست که بحث فریمورک ها رو مطرح ...
نه خب سخت در اشتباهید بیام سر قضیه فریمورک و زبان بحث کنم
وقتی شما ۱۰۰۰ تا یوزر همزمان دارید یعنی پولتون از پارو بالا میره
برید ۳ تا سرور دیگه بخرید و بکندتون رو روی اونا هم ران کنید(همزمان ۳ جا) بعد از جایی که خریدید بگید یه نتورک داخلی بین این ۴ سرورتون بزاره . روی سرور ۴ ام haproxy یا nginx بزنید که ترافیک ورودی رو پخش کنه بین این ۳ تا سرور ... ایزی
در راستای این پست ، یکی میگفت: اونایی که وسط حرفاشون کلمات انگلیسی استفاده میکنن خیلی کنسل هستن :))))
🔥8👍3👎2
Seyed Mahdi Notes
دیروز سوال شد ازم که آیا fast api سریع هست؟ خب در مرحله ی اول که اسمش روشه . اسمش فسته . اگه کند بود اسمشو میزاشتن slow api :) به نظر من این قضیه و شمارش ریکوئست هایی که هر فریمورک میتونه در ثانیه ریسپانس بده (req/sec) کار باطلی هست بر فرض ما یه app رو…
✅یه نکته در مورد این پست
خیلی ها سرعت براشون مهم هست. اما همیشه گفتم و بازم میگم شاید بیش از 90 درصد پروژه هایی که من و امثال من کار میکنیم یا کار خواهیم کرد. سرعت و پرفورمنس زبان/فریمورک توش مهم نیست.
لذا با علم به این موضوع دیگه دنبال اینکه کدوم زبان بهتره یا قوی تره و... نباشید
اونی که باهاش حال میکنی و باعث میشه بهتر و بیشتر پول در بیاری رو انتخاب کن بره
و اینم میدونیم که انتخاب تکنولوژی/زبان/فریمورک/ابزار به پروژه بستگی داره.
مثلا با پایتون میشه ویندوز فرم ساخت. اما بهترین گزینه برای ویندوز فرم همون سی شاپ/وی بی و ویژوال استودیو مایکروسافت هست.
خیلی ها سرعت براشون مهم هست. اما همیشه گفتم و بازم میگم شاید بیش از 90 درصد پروژه هایی که من و امثال من کار میکنیم یا کار خواهیم کرد. سرعت و پرفورمنس زبان/فریمورک توش مهم نیست.
لذا با علم به این موضوع دیگه دنبال اینکه کدوم زبان بهتره یا قوی تره و... نباشید
اونی که باهاش حال میکنی و باعث میشه بهتر و بیشتر پول در بیاری رو انتخاب کن بره
و اینم میدونیم که انتخاب تکنولوژی/زبان/فریمورک/ابزار به پروژه بستگی داره.
مثلا با پایتون میشه ویندوز فرم ساخت. اما بهترین گزینه برای ویندوز فرم همون سی شاپ/وی بی و ویژوال استودیو مایکروسافت هست.
👍4
Seyed Mahdi Notes
دیروز سوال شد ازم که آیا fast api سریع هست؟ خب در مرحله ی اول که اسمش روشه . اسمش فسته . اگه کند بود اسمشو میزاشتن slow api :) به نظر من این قضیه و شمارش ریکوئست هایی که هر فریمورک میتونه در ثانیه ریسپانس بده (req/sec) کار باطلی هست بر فرض ما یه app رو…
✅نکته هایی از مانی برای این پست
این پست خیلی اشتباهه؛
۱. حجم ترافیک به تعداد یوزر نیست. ممکنه یک سایت با ۲۰ یوزر خیلی ترافیک بیشتری داشته باشه. بستگی داره اون یوزرا کین و چیکار میکنن 🙂 من یادمه با یک شرکت المانی مصاحبه میکردم برای هر یوزری که داشتن یک دیتابیس sharding شده میساختن…
۲. درامد بیزنس از تعداد یوزر و ترافیک تعیین نمیشه.
۳. باتل نک صرفا cpu sensitive نیست که با بیشتر کردن ورکر ها برطرف شه.
۴. تو فست شما میتونید io bound taks رو تو بک گراند داشته باشید و تسک cpu bound هم انجام بدید یا چند تسک io bound رو باهم انجام بدید. ایا میشه تو جنگو؟شدنش میشه ولی پرفومنسش قابل مقایسه نیست با فست چون asgi نیست و همچنان داره ترد باز میکنه
۵. بحث scaling چالش های خودشو داره.دوآپس میخواد, بحث auto scaling میاد logging پیچیده تر میشه و ... . در نهایت بیزنس بیشتر خرجه دوآپس کار و سرور میکنه چرا؟ چون دولوپر مایندست سمی داشته 🙂
۶. فست بین فریم ورک های پایتونی جزو کند ترین هاست. تو بنچ مارک حداقل کلی فریم ورک بالاتر هستند ازش. خود استارلت دو برابره فست پرفومنس داره. fast تو fastapi ربطی به پرفومنس نداره بیشتر به سرعت توسعه ربط داره. چیزی که هیچ کدوم از فریم ورک های بالاترش تو بنچ مارک ندارن.
FastAPI framework, high performance, easy to learn, fast to code, ready for production
۷. اگه اینطوریه پس کلا چرا ساختمان داده میخونیم؟چرا خودمونو اذیت میکنیم؟همرو با لیست بزنیم بره دیگه . مشکل خورد تیم scale میکنه :)))
۸. خیلی وقتا scale کردن خیلی پیچیدست. مثال بارزش؟graphql یا web socket. یا اپلیکیشن هایی که stateful هستند.
این پست خیلی اشتباهه؛
۱. حجم ترافیک به تعداد یوزر نیست. ممکنه یک سایت با ۲۰ یوزر خیلی ترافیک بیشتری داشته باشه. بستگی داره اون یوزرا کین و چیکار میکنن 🙂 من یادمه با یک شرکت المانی مصاحبه میکردم برای هر یوزری که داشتن یک دیتابیس sharding شده میساختن…
۲. درامد بیزنس از تعداد یوزر و ترافیک تعیین نمیشه.
۳. باتل نک صرفا cpu sensitive نیست که با بیشتر کردن ورکر ها برطرف شه.
۴. تو فست شما میتونید io bound taks رو تو بک گراند داشته باشید و تسک cpu bound هم انجام بدید یا چند تسک io bound رو باهم انجام بدید. ایا میشه تو جنگو؟شدنش میشه ولی پرفومنسش قابل مقایسه نیست با فست چون asgi نیست و همچنان داره ترد باز میکنه
۵. بحث scaling چالش های خودشو داره.دوآپس میخواد, بحث auto scaling میاد logging پیچیده تر میشه و ... . در نهایت بیزنس بیشتر خرجه دوآپس کار و سرور میکنه چرا؟ چون دولوپر مایندست سمی داشته 🙂
۶. فست بین فریم ورک های پایتونی جزو کند ترین هاست. تو بنچ مارک حداقل کلی فریم ورک بالاتر هستند ازش. خود استارلت دو برابره فست پرفومنس داره. fast تو fastapi ربطی به پرفومنس نداره بیشتر به سرعت توسعه ربط داره. چیزی که هیچ کدوم از فریم ورک های بالاترش تو بنچ مارک ندارن.
FastAPI framework, high performance, easy to learn, fast to code, ready for production
۷. اگه اینطوریه پس کلا چرا ساختمان داده میخونیم؟چرا خودمونو اذیت میکنیم؟همرو با لیست بزنیم بره دیگه . مشکل خورد تیم scale میکنه :)))
۸. خیلی وقتا scale کردن خیلی پیچیدست. مثال بارزش؟graphql یا web socket. یا اپلیکیشن هایی که stateful هستند.
👍8❤1
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
ابزار JsonCrack خیلی جالبه. از فایل های جیسونی که خوندنشون سخته براتون مثله تصویر پست یه دیاگرام تولید میکنه که میتونید ازش خروجی تصویری بگیرید.
علاوه بر JSON از YAML، XML و CSV هم پشتیبانی میکنه و برای vscode هم اکستنشن داره .
لینک گیت هاب پروژه:
https://github.com/AykutSarac/jsoncrack.com
وبسایت پروژه:
https://jsoncrack.com/
ادیتوور انلاین :
https://jsoncrack.com/editor
از اینجا این پست رو برداشتم
✅ @SEYED_BAX
علاوه بر JSON از YAML، XML و CSV هم پشتیبانی میکنه و برای vscode هم اکستنشن داره .
لینک گیت هاب پروژه:
https://github.com/AykutSarac/jsoncrack.com
وبسایت پروژه:
https://jsoncrack.com/
ادیتوور انلاین :
https://jsoncrack.com/editor
از اینجا این پست رو برداشتم
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Forwarded from Syntax | سینتکس (Alireza-fa)
با توجه به اینکه خیلیا گفتن دنبال کاریم. میخوام که درباره ساخت رزومه تا گرفتن مصاحبه براتون ویدیو ظبط کنم و یه سری نکاتی که بلدم رو توضیح بدم.
تو بخش اول، رزومه رو درستش میکنیم و تو موقعیت های شغلی ای که در وب سایت های جابینجا و جاب ویژن هست، ارسال می کنیم.
تو بخش دوم ویدیو که یک الی دو هفته بعد ظبط میشه. با هم دیگه بازخوردی که دریافت کردیم رو بررسی میکنیم.
رزومه ای که درست میکنیم برای یک شخص جونیور (Python back end developer / Django) هست که میخواد تازه وارد بازار کار بشه پس نمونه کار و تجربه کاریه زیادی نداره
اگه نظری دارید خوشحال میشم درمیون بذارید تا قبل از ظبط بهش توجه کنم
@citax_tel 👈 سیتاکس
تو بخش اول، رزومه رو درستش میکنیم و تو موقعیت های شغلی ای که در وب سایت های جابینجا و جاب ویژن هست، ارسال می کنیم.
تو بخش دوم ویدیو که یک الی دو هفته بعد ظبط میشه. با هم دیگه بازخوردی که دریافت کردیم رو بررسی میکنیم.
رزومه ای که درست میکنیم برای یک شخص جونیور (Python back end developer / Django) هست که میخواد تازه وارد بازار کار بشه پس نمونه کار و تجربه کاریه زیادی نداره
اگه نظری دارید خوشحال میشم درمیون بذارید تا قبل از ظبط بهش توجه کنم
@citax_tel 👈 سیتاکس
🔥19👍5🤮1