CodeCrafters
رفتن به کانال در Telegram
Software Engineer and IT Group: https://t.me/code_crafters_chat Github: https://github.com/CodeCrafters-ir Site: https://codecrafters.ir
نمایش بیشتر710
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
710
خواهشا این پیام رو با دقت بخونید
تو یه شرکتی مشغول بکار شدم
و به همه توصیه میکنم بابت کار کردن اینجا (به هزار و یک دلیل)
خب نیاز به تعدادی نیرو دارن (حضوری، تمام وقت در تهران)
برنامه نویس node js
برنامه نویس فرانت (react, next)
طراح ui/ux
مهندس دواپس (بعدها در آینده)
مدیر پروژه
خواهشا رزومه برام بفرستین و داخل رزومه علاوه بر معرفی کامل خودتون و مهارتهاتون مبلغ پیشنهادی خودتون رو هم ذکر کنید
من رزومههارو جمع میکنم و میدم تحویل مدیران بالادستی دیگه مابقیش برعهده من نیست هیچ چیزی
#موقت
710
با دقت به شبهای اخر هفته آیندتون نگاه کنید
تو گذشته خودم این روزام یجوری دیگه بود کاملا متفاوت از این چیزی که میبینید
#موقت
710
انتیتی (entity) و انکدینگ (encoding)
میدانیم که http روزانه میلیاردها آبجکت از هر نوع اطلاعاتی (مانند عکس، فیلم، متن و...) را جابجا میکند؛
اما ارسال پیام برای ما کافی نیست!
ما باید مطمئن شویم که این پیامها کاملا ارسال شدهاند، identify شدهاند، استخراج و پراسس شده اند.
برای اینکه اطلاعاتمان را به شیوه صحیح ارسال کنیم، میبایستی از header های درستی استفاده کنیم.
قبل از اینکه بدانیم هدر ها کجا ست میشوند، بیایید یک نگاهی مختصر به ساختار http message داشته باشیم:
هر http message میتواند یا برای request باشد و یا برای response.
این پیامها از سه بخش تشکیل شدهاند:
۱- در این بخش ما ریسورس خود را مشخص میکنیم.
برای ریکوئست: url و host را به همراه method در این بخش ست میکنیم.
مثال:
GET google.com/random/path
برای ریسپانس: تنها جواب از سوی سرور را در اینجا ست میکنیم
404 google.com/random/path
۲- در این بخش هدرهای خود را ست میکنیم. هدر ها برای ریکوئست و ریسپانس گاهی متفاوت است.
برای ریکوئست، میگوییم: «من انتظار یک ایمیج را دارم» اما برای ریسپانس میگوییم «در این پیام برایت یک ایمیج را فرستادم».
۳- این بخش، بخش بدنه است. تنها در ریسپانس، در این بخش اطلاعات را میگذاریم.
* درواقع http headers یک plain text از هدر ها هستند که در لایه دوم http message قرار میگیرند.
در این بخش به مرور چند هدر معروف میپردازیم:
1- Content-type:
این هدر، نشان میدهد که شما در بخش body، انتظار چه اطلاعاتی را خواهید داشت.
برای مثال، هنگامی که شما یک متن را باز میکنید، content-type از سمت سرور مقصد به مقدار text/plain ست میشود.
2- content length
پیش از اینکه body را از یک http message استخراج کنیم، میبایستی بدانیم که چه انتظاری از بدنه خواهیم داشت.
برای مثال انتظار یک عکس با حجم ۲ مگابایت را داریم. پس در این هدر، ما حجم content را ست میکنیم.
3- content encoding
گاهی برای امنیت بیشتر و یا کم کردن حجم، ما اطلاعات یک پیام را encode میکنیم. در این هدر، به مقصد میفهمانیم که پیام از قبل با این الگوریتم encode شده، پس برای خواندن آن، آن را decode کنید.
#http_guideline
@code_crafters
710
یک اتصال امن با HTTPS
پیشتر آموختیم که ssl یک لایه رمزگذاری است که با رمزنگاری کردن پیامها، امنیت اطلاعاتمان را در شبکه تضمین میکند.
تا زمانی که شما تبدیل به یک متخصص در زمینه ارز ها نشدید، نیاز نیست بدانید چگونه میتوانید با raw ssl پیامهای خود را جابجا کنید؛ چرا که کتابخانههای مختلفی وجود دارد تا بتوانید ssl program های خود را توسعه دهید!
برای مثال یکی از معروفترین آنها، OpenSsl است.
بیایید و ببینیم چگونه میتوانیم به کمک ssl, پیامهای خود را رمزنگاری و ارسال کنیم.
تصور کنید میخواهید یک پیام از کامپیوتر خود به یک سرور در آمریکا ارسال کنید.
۱- کامپیوتر شما یک local context میسازد و تمام اطلاعات handshake را با فراخوانی SSL_CTX آماده میکند.
۲- دامنهٔ سرور مقصد را به ip تبدیل میکند
۳- یک اتصال به پورت ۴۴۳ مقصد ایجاد میکند که نیازمند ساخت یک local socket است.
۴- هنگامی که اتصال برقرار شد، میتوانیم لایهٔ ssl را به اتصال TCP خود وصل کنیم..
۵- سرور certificate خود را ارسال میکند و با کامپیوتر شما یک کلید رمزنگاری ارسال میکند
۶- تمامی اطلاعات با کلیدی که در مرحله ۵ ارسال شده بود، رمزنگاری و رمزگشایی میشود!
اما آیا این تنها راه است؟ جواب به این سوال، خیر است.
ما میتوانیم به واسطهٔ یک proxy server نیز، به صورت امن اطلاعات خود را جابجا کنیم.
به صورت ساده، این ارتباط به صورت زیر است:
«لوکال -> سرور پروکسی -> مقصد»
اما یک مشکلی داریم!
ما میدانیم که برای رمزنگاری، از public key سرور مقصد استفاده میکنیم.
اینجا اگر اطلاعات را به پروکسی سرور دهیم، باید آن را بازگشایی و مجدد رمزنگاری کند و به سرور ارسال کند. این مسلما چیزی نیست که ما میخواهیم.
اینجا باید به گونهای با سرور پروکسی صحبت کنیم که بداند میخواهیم از آن به عنوان یک middle man استفاده کنیم.
برای اینکار از پروتکل HTTPS SSL TUNNELING استفاده میکنیم!
ابتدا به سرور پروکسی، یک درخواست با پروتکل مخصوص CONNECT میزنیم.
در payload آدرس سرور مقصد را میدهیم.
هنگامی که سرور این پیام را دریافت کرد، تمامی پیامهای کلاینت را به سمت سرور ارسال میکند و جواب را به کلاینت برمیگرداند.
#http_guideline
@code_crafters
710
در این مجموعه پستها، میخواهیم کتاب http guideline را مطالعه کنیم و نکات آن را خلاصه نویسی کرده و به اشتراک بگذاریم.
این کتاب به شما دید خوبی درمورد http میدهد و با خواندن این کتاب میتوانید درک خوبی از مسائل مربوط به این پروتکل و اپلیکیشنهای تحت وب به دست آورید.
این مجموعه پست ها را با هشتگ
#http_guideline
میتوانید در کانال دنبال کنید.
کتاب در ابتدا خیلی ساده و کوتاه شروع شده و در فصلهای بعدی هر بخش از فصل قبل را بازتر کرده و به جزئیات موارد می پردازد
در این پیام میخواهیم درمورد ssl certificate صحبت کنیم.
چگونه سرورها هویت خود را ثابت میکنند؟
در پروتکل HTTP اطلاعات رمزگذاری نمیشوند.
درواقع یک connection به پورت ۸۰ سرور ایجاد میشود و یک request message از سمت کاربر ارسال میشود و یک response message از سوی سرور دریافت میشود و در نهایت این کانکشن بسته میشود.
این flow برای انتقال اطلاعات حساس همچون اطلاعات بانکی اصلأ مناسب نیست، چرا که هرکسی میتواند message ها را باز کند و اطلاعات آن را استخراج کند.
برای جلوگیری از این اتفاق HTTPS ظهور کرد!
درواقع HTTPS همان HTTP است، با این تفاوت که در این پروتوکل یک لایهٔ امنیتی نیز اضافه شده است.
اکنون flow مقداری پیچیده میشود!
کاربر یک connection به پورت ۴۴۳ ایجاد میکند. هنگامی که سرور کانکشن را قبول کرد، ssl initialization انجام میشود.
در این مرحله پارامتر های رمزنگاری توسط client و server جابجا میشود. هنگامی که این handshake انجام شد، اطلاعات ابتدا به لایهٔ ssl ارسال و رمزنگاری میشود و سپس به سمت کلاینت/سرور ارسال میشود.
در مرحله ssl handshake اطلاعات زیر توسط کلاینت و سرور جابجا میشود:
- ورژن پروتوکل http
- یک کلید برای رمزنگاری
- یک session key موقت برای رمزنگاری شبکه
- اطلاعات هویتی سرور (certificate)
بیاید و یکم certificate رو باز کنیم!
درواقع certificate یک فایلی است که سرور برای اثبات هویت خود، به کلاینت ارسال میکند. این سرتیفیکیت برای اینکه اعتبار خود را نشان دهد، از پیش توسط یک Certificate authority امضا شده است.
این فایل شامل اطلاعات زیر میباشد:
- Public key
- Hostname of website
- Name of signing authority
- Signature of signing authority
هنگامی که این فایل توسط کلاینت دریافت میشود، مرورگر به صورت اتوماتیک ولیدیشن هایی را روی این فایل انجام میدهد. برای مثال:
۱- ابتدا تاریخ certificate بررسی میشود که منقضی نشده باشد
۲- امضای signature مورد بررسی قرار میگیرد تا مطمئن شویم authority قابل اعتمادی این certificate را امضا کرده.
۳- در این مرحله با authorities public key سیگنیچر را مقایسه میکنند تا مطمئن شوند CA واقعاً این certificate را امضا کرده.
۴- برای اطمینان از اینکه این certificate تنها برای این سرور است، domain سرور را با دامین سرتیفیکیت مقایسه میکنیم.
کاری از بچههای گروه منتوری
@code_crafters
710
هر اندیشهای که منتهی به عمل نشود، مرض است
این جمله ناب رو گوته گفته
شاید بگید خب من اندیشه قتل دارم الان برم عملیش کنم؟؟؟
باید بهتون بگم متاسفانه گوته رو نمیشناسید که همچین استدلالی میکنید
در بین تمام فیلسوفان گوته دارای شخصیتی بشدت در حد کمال انسانی بود، گوته بشدت زیباشناس بود و چنان شخصیت پختهای داشت که از تمام دنیا برای دیدن و ملاقاتش دست و پا میزدن و بشدت آدمی بود که بزرگترین اشراف زادههای زمان خودش به زندگی گوته حسادت میکردن
همینقدر براتون بگم، شوپنهاوری که به همه فیلسوفان و افکارها حمله کرد در مقابل گوته جز به احترام و بزرگی یادی نکرد ازش، شوپنهاور با همه وجود مادرش مشکل داشت حتی ارتباطاتش با اطرافیانش بجز ارتباطش با گوته
برگردیم به حرفمون
سالها پیش یه جمله از بوکوفسکی خوندم که میگفت هرکاری وقتی تمام شود به لذت تبدیل میشود (پروژهای که گرفتیم، مسیر یادگیری تخصصی، تحصیلات دانشگاهی و ...)
ولی موضوع گوته فراتر از بوکوفسکی هستش، بوکوفسکی از لذت حرف میزنه، گوته از شادی و حس خوب نسبت به خودمون، بحث اصلا تموم کردن یا نکردنش نیست(بقول بوکوفسکی)، بحث سر عملی کردن و انجام دادن هستش (بقول گوته)
خیلی وقتها بابت اینکه نمیتونیم یکاری رو انجام بدیم ناراحتیم، مثلا اینکه چرا شاغل نیستم چرا شغل مورد علاقه خودم رو ندارم
گوته تو این یک جمله ساده میگه چقدر عملیش کردی، اصلا مهم نیست به شغل رسیدی یا نه، چه برسه مورد علاقهت باشه
گوته میگه چقدر بابت داشتن شغل اقدام عملی داشتی، منظورش این هست که خودت رو بجایی نرسون که تبدیل به ای کاش، ای کاش بشی. حداقل خودت رو به جایی برسون بگو من رفتم اقدام کردم ولی نشد دنبال بهونه نگرد اقدام کن فقط این مهمه نه چیز دیگهای
در واقع حس خوب و رضایت از خودمون به همین مسئله بستگی داره، اگه بابتش اقدام جدی نکنی به عملی کردنش، درگیر سرخوردگی و یاس میشی
میخوای مهندس نرم افزار بشی؟؟
عملیش کن
میخوای برنامه نویس بشی؟؟
عملیش کن
میخوای از تخصصت شغل داشته باشی؟؟
عملیش کن
میخوای مستقل بشی؟؟
عملیش کن
حرف آخر بابت حس رضایت درونی، اقدام برای اندیشههامون هستش همین رو شما گوشه ذهنت نگهدار و انجام بده ببین چجوری به حس رضایت از خودت میرسی
#free
@code_crafters
710
استاد کاکایی
میگن هیچ نوازندهای نمیتونه اندازه سازنده ساز، ساز رو به رقص خودش در بیاره
شعرهای استاد رو هم کسی جز خودش نمیتونه انقدر زیبا بیان کنه
710
Repost from KubarCloud | کوبار کلاد
☁️ سرورهای ابری (IaaS) به کوبار کلاد اضافه شد! 🚀
⏰ پرداخت ساعتی(PAYG)
🐧 سیستمعاملهای متنوع
🌐 شبکه خصوصی(Private Network)
💾 دیسک اضافی (Volume)
🔑 پشتیبانی از کلید عمومی(SSH Key)
🖥 دسترسی به کنسول
📊 مانیتورینگ
🎁 اعتبار اولیه رایگان برای شروع سریع و بدون دغدغه
همین حالا سرور ابری خودتون رو با ۳ کلیک بسازید!
🌐 KubarCloud.com
🆔 @KubarCloud
710
دردناکترین قسمت تکنولوژی
زنده کردن صدا و خندیدن عزیزترین دوست زندگیت بطور اتفاقی، بعد از گذشت سه سال خودکشیش
تمام خاطرات برات زنده میشه
تمام روزهایی که سعی کردی یکی از عزیزانت از بحران روحی و روانی نجات بدی اما موفق نشدی
و مدام و مدام این سوال توی ذهنت برای این سالها تکرار بشه، چکار دیگهای میتونستم انجام بدم و ندادم
کجای اون شش ماه لعنتی کوتاهی کردم، در حق آدمی که به من نزدیکتر از خونوادش بود
بار سنگین دوست داشتن، حتی با مرگ هم نه تنها از بین نمیره، بلکه با قدرت بیشتری در زندگیتون باقی میمونه
710
تو ارومیه گویا اندکی انسان کم هوش و ناقص العقل
تو حاشیه دو مراسم اخیر (مراسم نوروزی و مراسم مذهبی) ارومیه یکعده اومدن گفتن اینجا خاک ماست😂😂😂😂
بزارید یچیزی رو بهتون بگم
ته ماجرای هممون یکمتر زمین پرت شده هستش که بابت همونم از عزیزانتون پول میگیرن، چقدر یک انسان میتونه احمق و پست باشه که بابت تفکرات کهنه و فرسوده آینده بچه خودش رو، زندگی بچهش رو تبدیل به یک جهنم و جنگ کنه
چقدر یکعده میتونن متعفن و توخالی باشن و انقدر هیچی از خودشون برای ارائه به دنیا ندارن، اونقدری هنر ندارن که شروع کردن به نفرت پراکنی اونم بابت نژادی که حتی خودش هم داخلش دخیل نبوده و انتخاب خودش هم نبوده 😂😂😂😂
710
داکیومنت معرفی و کار با pylint بصورت ساده و مختصر
از بچههای گروه منتوری
یکی از مباحثی که داخل مصاحبه فنی ازتون میپرسن
@code_crafters
710
از مزایای شی گرایی (oop) چیه؟؟
اینکه بیشتر از ۵۰۰ خط کد رو به کمتر از ۱۵۰ خط کد تبدیل میکنی و بعدش میشنی چاییت رو میخوری (و میای کانال پست میزاری)
چرا این اتفاق افتاد؟
دو عامل مهم داریم
دانش فنی
بدهی فنی
وقتی بهتون یک فرایند سپرده میشه، یک داستان کاربری یا یک بخش از یک اپیک (epic)
شما هیچ درکی از موضوع و مسئله ندارید، پس تو مرحله اول میشینید به قدری کد میزنید که فقط اون تسک رو پاس کنید بره، یعنی به سرانجام برسه، اینجا شما دانش فنی کسب کردید منتها دچار بدهی فنی شدید و بعد میشینید در چندبار بررسی کد اون رو بهبود میدید و تمیز سازی هم انجام میدید
خروجی هم میشه اینکه کد شما رو هرکسی ببین، میگه اینکه کاری نکرده اصلا، این کدها خیلی راحته که
@code_crafters
710
اخیرا تحریم شکنها از کار افتادن و کارشون تموم شده (زندگی با دیوانهها چالش های خودش رو داره)
امروز هم من درگیرش بودم و یکی از بچهها (جا داره اینجا ازش تشکر کنم) یه راه حل کارآمدتر از راهکار دیونهها بهم داد که بهتون میگم
ابتدا برید تو سرور و ماشینتون و پکیج زیر رو نصب کنید
sudo apt install proxychains tor
بزارید نصب و تموم بشه
این پکیج اجازه میده بهتون که از پروکسی استفاده کنید و تحریمهارو دور بزنید کامل
بعد از اتمام نصب خودش بصورت پیش فرض آماده کار هستش و نحوه استفاده ازش اینجوری هست که ابتدای اون دستوری که میخواید بزنید proxychains رو اضافه میکنید
sudo proxychains apt update
sudo proxychains apt install <package-name>
خوبیش این هست که کل سیستم رو درگیر نمیکنه براتون و هرجا که از این دستور استفاده کنید میاد وسط
از مسیر زیر هم میتونید پروکسی مدنظر خودتون رو قرار بدید
sudo nano /etc/proxychains.conf
همون جور که میبینید میتونید از انواع پروکسی http, socks4, socks5 استفاده کنید و در انتهای فایل که برید پروکسی پیش فرض خودش رو می بینید که ست شده
<Type> <ip> <port> <name> <paswword>
socks5 127.0.0.1 9050
بالاتر هم یدونه example براتون گذاشته
یدونه سیستم فایل هم دارید بالطبع
sudo systemctl status tor
.
.
.
خب پروکسی از کجا بیاریم بابتش؟؟؟ از همین کانالهای تلگرامی، فقط دقت کنید که نوع پروکسی http , socks باشه
#free
@code_crafters710
طرف رفته با گوگل ترنسلیت مستندات پایتون رو ترجمه کرده و میخواد خودش رو اینجوری به بنیاد پایتون معرفی کنه که اسمش جزو افرادی باشه که نامش در پایتون هست
بعد من یکساله دارم بهتون میگم بیایید گروهی اینکار رو انجام بدید واسه خودتون خوبه، بعد شب و روز میایید پیوی و گروه غر میزنید که چرا شما مثه بقیه نمیتونید موفق بشید یا حداقل به یه شغل مناسب برسید
فرقش اینه به داشتن جنم هستش، اینکه اون بچه جنمش رو داشته ولی شما نه، یه جمله جالب هست که میگه خود کرده را تدبیر نیست
گروه تشکیل دادم براتون
وبسایتش رو ساختیم براتون
هزینه سرور و ... کردیم براتون
تهش چیشد دوتا مستند ترجمه نکردید
که پس فردا تو رزومتون بزنید اینجانب اسمم رو سرچ کنید تو سایت پایتون میبینید
بعضی وقتها حمایت کردن و کمک کردن بهتون اشتباه هستش واقعا من با همین بچه میبستم الان سایتش هم بالا اومده بود با همه موضوعاتش
