خوب یا بد ، دوستان لطف دارن و خیلی میان با من دردودل میکنن. مخصوصا از طریق این کانال.
مشکل مشترک اکثرشون هم یک چیزه : حس میکنن دارن از بازار عقب میفتن.
همین موضوع باعث استرس شدیدشون شده در حدی که بعضی نفرات چیزایی رو که بلدن هم کم کم دارن فراموش میکنن. باور کنید یا نه ، دلیلش خودتونید.
چطور؟
وقتی هر کسی یک میکروفن دستش میگیره و در مورد تکنولوژی مهمل میگه و شما بهش اهمیت میدید ، این اتفاق میفته. به جرات میگم ۹۰٪ چرندیاتی که توی کنفرانسها و همایشات و دورهمیها و وبینارها و پادکستها و ... گفته میشه ، از تجربه نیومده. از یک کنفرانس دیگه اومده یا در بهترین حالت از سرچ اومده. اونم احتمالا شب قبلش.
مطلب هم هر چی مزخرفتر ، کنجکاوی و هیجان شرکت کنندگان بیشتر.
هیجان مدیریت نشده هم میشه افسردگی و استرس.
توی هر جمعی (چه حضوری و چه آنلاین) ، اگر یک میکروفن یا یک سکو و تریبون دیدید ، به سرعت اون جمع رو ترک کنید. همین.
در خصوص استرس هم بگم که اگر حداقل روزی ۱۰ صفحه مطالعه کنید سر سال ۳۶۵۰ صفحه مطالعه کردید. و این عملا میشه تمام یک تکنولوژی. ( البته همراه با تمرین.)
و به راحتی همیشه از نصف بیشتر مارکت جلوترید.
اگر هم مطالعه نمیکنید که استرس رو داشته باشید چون طبیعیه و دارید عقب میمونید.
مشکل مشترک اکثرشون هم یک چیزه : حس میکنن دارن از بازار عقب میفتن.
همین موضوع باعث استرس شدیدشون شده در حدی که بعضی نفرات چیزایی رو که بلدن هم کم کم دارن فراموش میکنن. باور کنید یا نه ، دلیلش خودتونید.
چطور؟
وقتی هر کسی یک میکروفن دستش میگیره و در مورد تکنولوژی مهمل میگه و شما بهش اهمیت میدید ، این اتفاق میفته. به جرات میگم ۹۰٪ چرندیاتی که توی کنفرانسها و همایشات و دورهمیها و وبینارها و پادکستها و ... گفته میشه ، از تجربه نیومده. از یک کنفرانس دیگه اومده یا در بهترین حالت از سرچ اومده. اونم احتمالا شب قبلش.
مطلب هم هر چی مزخرفتر ، کنجکاوی و هیجان شرکت کنندگان بیشتر.
هیجان مدیریت نشده هم میشه افسردگی و استرس.
توی هر جمعی (چه حضوری و چه آنلاین) ، اگر یک میکروفن یا یک سکو و تریبون دیدید ، به سرعت اون جمع رو ترک کنید. همین.
در خصوص استرس هم بگم که اگر حداقل روزی ۱۰ صفحه مطالعه کنید سر سال ۳۶۵۰ صفحه مطالعه کردید. و این عملا میشه تمام یک تکنولوژی. ( البته همراه با تمرین.)
و به راحتی همیشه از نصف بیشتر مارکت جلوترید.
اگر هم مطالعه نمیکنید که استرس رو داشته باشید چون طبیعیه و دارید عقب میمونید.
رقصنده با کد
چه خبر؟ از زمان این پست تا الان میتونستید حدود ۳۶۰ صفحه بخونید. یعنی میتونستید یک کتابی مثل linux for hackers رو مطالعه کنید و یک دور هم مرور کنید. نشد؟ اشکال نداره. از امروز استارت بزنید.
بیاید روزی ۱۰ صفحه رو به روزی ۳ صفحه تقلیل بدیم. میشه تقریبا روزی ۱ ربع. تمرین کردنش هم ۱ ربع در نظر بگیرید میشه نیم ساعت. در بدترین حالت دیگه ۱ ساعت.
این ۳ صفحه هم همش احتمالا نوشته نیست و کلی کد و نمودارو تصویر قاطیشه.
سر سال میشه حدود ۱۰۰۰ صفحه.
رفرنس C ، حدودا ۸۰۰ صفحهاس.
رفرنس جاوااسکریپت حدود ۹۰۰ صفحهاس.
رفرنس لینوکس حدودا ۶۰۰ صفحهاس.
رفرنس نتوورک پلاس حدود ۶۰۰ صفحهاس.
رفرنس نستجیاس حدود ۵۰۰ صفحهاس.
رفرنس بقیه چیزها هم احتمالا در همین حده. یکیش رو استارت بزنید.
اگر سر سال هیچ کدوم رو نتونستید انجام بدید ، دیگه تصمیم بگیرید غر نزنید و به شرایط موجودتون اعتراض نکنید.
شاید کسی متوجه نشه ولی خودتون میدونید که شایسته شرایط بهتر نیستید احتمالا.
این ۳ صفحه هم همش احتمالا نوشته نیست و کلی کد و نمودارو تصویر قاطیشه.
سر سال میشه حدود ۱۰۰۰ صفحه.
رفرنس C ، حدودا ۸۰۰ صفحهاس.
رفرنس جاوااسکریپت حدود ۹۰۰ صفحهاس.
رفرنس لینوکس حدودا ۶۰۰ صفحهاس.
رفرنس نتوورک پلاس حدود ۶۰۰ صفحهاس.
رفرنس نستجیاس حدود ۵۰۰ صفحهاس.
رفرنس بقیه چیزها هم احتمالا در همین حده. یکیش رو استارت بزنید.
اگر سر سال هیچ کدوم رو نتونستید انجام بدید ، دیگه تصمیم بگیرید غر نزنید و به شرایط موجودتون اعتراض نکنید.
شاید کسی متوجه نشه ولی خودتون میدونید که شایسته شرایط بهتر نیستید احتمالا.
نکست ورژن جدید داد بیرون. البته هنوز بتاست ولی احتمالا دو هفته دیگه توی کنفرانسش رسمی منتشر میشه.
یادگیریشون واقعا هیج توجیه منطقی نداره. همون جاوا و سی و سی پلاس پلاس اینجور چیزا خوبن که هم آپدیتاشون کمه ، هم واقعا حس برنامهنویسی میده ، هم فضای کار استیبلتری داره و هم اینکه حقوقاشون هم خیلی بالاتره.
البته بماند که خیلی سختره و موقعیت شغلی کمتره
یادگیریشون واقعا هیج توجیه منطقی نداره. همون جاوا و سی و سی پلاس پلاس اینجور چیزا خوبن که هم آپدیتاشون کمه ، هم واقعا حس برنامهنویسی میده ، هم فضای کار استیبلتری داره و هم اینکه حقوقاشون هم خیلی بالاتره.
البته بماند که خیلی سختره و موقعیت شغلی کمتره
وقتی با Vim یه فایل رو باز میکنی (مثلاً hello.c)، ویم به صورت خودکار یه فایل موقتی با اسم مشابه و پسوند .swp میسازه، مثل:
.hello.c.swp
این فایل برای محافظت از تغییراتت ساخته میشه.
یعنی اگه موقع ویرایش برق بره، سیستم کرش کنه یا ویم ناگهانی بسته بشه، دفعهی بعد که فایل رو باز میکنی، ویم میگه:
Swap file ".hello.c.swp" already exists!
و ازت میپرسه که میخوای تغییرات قبلی رو بازیابی (recover) کنی یا نه.
.hello.c.swp
این فایل برای محافظت از تغییراتت ساخته میشه.
یعنی اگه موقع ویرایش برق بره، سیستم کرش کنه یا ویم ناگهانی بسته بشه، دفعهی بعد که فایل رو باز میکنی، ویم میگه:
Swap file ".hello.c.swp" already exists!
و ازت میپرسه که میخوای تغییرات قبلی رو بازیابی (recover) کنی یا نه.
معماریهای پروژههای فرانتاند:
۱- Monolithic
۲- Modular / Feature-Based
۳- Layered Architecture
۴- Micro Frontends
۵- Domain-Driven / Bounded Context
کوچک : Monolithic
متوسط : Modular / Layered
بزرگ سازمانی : Micro Frontends
یا Domain-Driven
۱- Monolithic
۲- Modular / Feature-Based
۳- Layered Architecture
۴- Micro Frontends
۵- Domain-Driven / Bounded Context
کوچک : Monolithic
متوسط : Modular / Layered
بزرگ سازمانی : Micro Frontends
یا Domain-Driven
هوش مصنوعی در نهایت یک ابزاره. مثل خودرو.
درست سفر با ماشین بسیار سریعتر از سفر پیادهاس ، ولی شما نمیتونی از جاده قم از تهران بری شمال.
اگر بدونی داری چیکار میکنی ، سرعتت رو خیلی میبره بالا ، اگر ندونی داری چیکار میکنی ، با همون سرعت به قهقرا میری.
درست سفر با ماشین بسیار سریعتر از سفر پیادهاس ، ولی شما نمیتونی از جاده قم از تهران بری شمال.
اگر بدونی داری چیکار میکنی ، سرعتت رو خیلی میبره بالا ، اگر ندونی داری چیکار میکنی ، با همون سرعت به قهقرا میری.
موقعی که آیفون ۶ اومد ، یه بندهخدایی کلیهاش رو فروخت آیفون بخره.
دوست دارم الان بدونم در چه حالیه.
این متن رو ۲ بار بخون ، چون من در مورد آیفون حرف نمیزنم.
دوست دارم الان بدونم در چه حالیه.
این متن رو ۲ بار بخون ، چون من در مورد آیفون حرف نمیزنم.
رقصنده با کد
https://www.youtube.com/watch?v=6uqgiFhW0Fs پیشنهاد میشه ببینید
اگر اینو ندیدید ، حتما ببینید
فرق OAuth 2.0 و OpenID Connect چیه؟
🔹 OAuth 2.0
یک استاندارد برای اجازه دسترسی (Authorization) هست.
با OAuth، یه برنامه میتونه به جای شما به یه سرویس دیگه دسترسی پیدا کنه، بدون اینکه رمزتون رو بگیره.
پس چطور اپها اسم کاربر رو نشون میدن؟
در واقع، اسم و اطلاعات کاربر رو از خود اون API میگیرن — نه از OAuth.
یعنی خود OAuth کار احراز هویت نمیکنه، فقط راه دسترسی رو باز میکنه.
ولی چون گوگل یه API داره که اطلاعات کاربر رو میده، اپ میتونه بفهمه اسم کیه.
مثلاً:
۱- اپ با OAuth وارد گوگل میشه.
۲- گوگل یه Access Token میده.
۳- اپ با اون توکن میره سراغ یه API دیگه (مثلاً https://www.googleapis.com/oauth2/v2/userinfo).
۴- اون API اطلاعات کاربر (اسم، ایمیل و…) رو برمیگردونه.
🔹 OpenID Connect (OIDC)
در واقع یه لایهی اضافه روی OAuth 2.0 هست که برای احراز هویت (Authentication) ساخته شده.
با OIDC، اپلیکیشن میتونه بفهمه شما کی هستی و از اطلاعات پروفایلتون (مثل نام یا ایمیل) مطمئن بشه.
همچنین OIDC یه ID Token هم به اپ میده که داخلش اطلاعات هویت کاربر هست و امضای دیجیتال داره،
این باعث میشه اپ مطمئن باشه که کاربر واقعاً همون کسیه که میگه.
--------------
مثال واقعی ورود با Google (OAuth 2.0 + OIDC)
۱- کاربر میخواهد با حساب گوگل خود وارد یک اپ وب شود.
۲- اپ (Client) کاربر را به Authorization Server گوگل هدایت میکند تا اجازه دسترسی بدهد.
در URL درخواست، اطلاعاتی مثل client_id، redirect_uri و scope=email profile openid فرستاده میشود.
۳- کاربر وارد حساب گوگل میشود و اجازه میدهد اپ به اطلاعات پروفایل او دسترسی پیدا کند.
۴- گوگل پس از تأیید، یک Authorization Code کوتاهمدت تولید میکند و به redirect_uri اپ بازمیگرداند.
۵- اپ Authorization Code را همراه با client_secret به گوگل میفرستد تا آن را با Access Token و ID Token تبادل کند.
۶- گوگل پس از بررسی، یک Access Token برای دسترسی به API و یک ID Token برای احراز هویت میدهد.
ID Token شامل اطلاعاتی مثل شناسه یکتا (sub)، نام و ایمیل کاربر است و امضای دیجیتال دارد.
۷- اپ با استفاده از Access Token، درخواست API به Resource Server گوگل میفرستد تا اطلاعات مورد نیاز کاربر را دریافت کند.
۸-در مرحله بعد Resource Server توکن را بررسی میکند و اگر معتبر باشد، دادههای کاربر (مثلاً ایمیل و نام) را برمیگرداند.
۹- اپ با استفاده از ID Token هم مطمئن میشود که کاربر واقعاً همان کسی است که ادعا میکند، بدون اینکه دوباره رمز را بخواهد.
۱۰- در نتیجه، کاربر با یک کلیک وارد اپ میشود و اپ هم هم دادهها و هم هویت او را به صورت امن دریافت میکند.
@alithecodeguy
🔹 OAuth 2.0
یک استاندارد برای اجازه دسترسی (Authorization) هست.
با OAuth، یه برنامه میتونه به جای شما به یه سرویس دیگه دسترسی پیدا کنه، بدون اینکه رمزتون رو بگیره.
پس چطور اپها اسم کاربر رو نشون میدن؟
در واقع، اسم و اطلاعات کاربر رو از خود اون API میگیرن — نه از OAuth.
یعنی خود OAuth کار احراز هویت نمیکنه، فقط راه دسترسی رو باز میکنه.
ولی چون گوگل یه API داره که اطلاعات کاربر رو میده، اپ میتونه بفهمه اسم کیه.
مثلاً:
۱- اپ با OAuth وارد گوگل میشه.
۲- گوگل یه Access Token میده.
۳- اپ با اون توکن میره سراغ یه API دیگه (مثلاً https://www.googleapis.com/oauth2/v2/userinfo).
۴- اون API اطلاعات کاربر (اسم، ایمیل و…) رو برمیگردونه.
🔹 OpenID Connect (OIDC)
در واقع یه لایهی اضافه روی OAuth 2.0 هست که برای احراز هویت (Authentication) ساخته شده.
با OIDC، اپلیکیشن میتونه بفهمه شما کی هستی و از اطلاعات پروفایلتون (مثل نام یا ایمیل) مطمئن بشه.
همچنین OIDC یه ID Token هم به اپ میده که داخلش اطلاعات هویت کاربر هست و امضای دیجیتال داره،
این باعث میشه اپ مطمئن باشه که کاربر واقعاً همون کسیه که میگه.
--------------
مثال واقعی ورود با Google (OAuth 2.0 + OIDC)
۱- کاربر میخواهد با حساب گوگل خود وارد یک اپ وب شود.
۲- اپ (Client) کاربر را به Authorization Server گوگل هدایت میکند تا اجازه دسترسی بدهد.
در URL درخواست، اطلاعاتی مثل client_id، redirect_uri و scope=email profile openid فرستاده میشود.
۳- کاربر وارد حساب گوگل میشود و اجازه میدهد اپ به اطلاعات پروفایل او دسترسی پیدا کند.
۴- گوگل پس از تأیید، یک Authorization Code کوتاهمدت تولید میکند و به redirect_uri اپ بازمیگرداند.
۵- اپ Authorization Code را همراه با client_secret به گوگل میفرستد تا آن را با Access Token و ID Token تبادل کند.
۶- گوگل پس از بررسی، یک Access Token برای دسترسی به API و یک ID Token برای احراز هویت میدهد.
ID Token شامل اطلاعاتی مثل شناسه یکتا (sub)، نام و ایمیل کاربر است و امضای دیجیتال دارد.
۷- اپ با استفاده از Access Token، درخواست API به Resource Server گوگل میفرستد تا اطلاعات مورد نیاز کاربر را دریافت کند.
۸-در مرحله بعد Resource Server توکن را بررسی میکند و اگر معتبر باشد، دادههای کاربر (مثلاً ایمیل و نام) را برمیگرداند.
۹- اپ با استفاده از ID Token هم مطمئن میشود که کاربر واقعاً همان کسی است که ادعا میکند، بدون اینکه دوباره رمز را بخواهد.
۱۰- در نتیجه، کاربر با یک کلیک وارد اپ میشود و اپ هم هم دادهها و هم هویت او را به صورت امن دریافت میکند.
@alithecodeguy
رقصنده با کد
فرق OAuth 2.0 و OpenID Connect چیه؟ 🔹 OAuth 2.0 یک استاندارد برای اجازه دسترسی (Authorization) هست. با OAuth، یه برنامه میتونه به جای شما به یه سرویس دیگه دسترسی پیدا کنه، بدون اینکه رمزتون رو بگیره. پس چطور اپها اسم کاربر رو نشون میدن؟ در واقع، اسم و…
مثال فنیتر:
وقتی در اپی میخواهید با استفاده از استاندارهای پست قبل و از طریق سروری مثل گوگل یا هر سرور شخصی یا غیر شخصی دیگری که این استاندارها رو پشتیبانی میکند ، لاگین کنید ، اتفاقی مشابه مراحل زیر اتفاق میفته:
۱- مسیر ارسال توکن به اپ
- کاربر به اپ مراجعه میکند و روی «Login with Google» کلیک میکند.
- اپ کاربر را به Authorization Server گوگل هدایت میکند (مثلاً یک URL شامل client_id و redirect_uri).
- مرورگر شما به گوگل میرود و کوکی گوگل به Authorization Server فرستاده میشود. گوگل متوجه میشود شما قبلاً لاگین کردهاید.
۲- صدور Authorization Code
- گوگل یک Authorization Code کوتاهمدت ایجاد میکند.
- سپس مرورگر شما را به redirect_uri اپ بازمیگرداند و این کد را در URL به اپ میدهد:
https://app.example.com/callback?code=AUTH_CODE
- یعنی اپ به طور مستقیم کوکی گوگل را نمیبیند، بلکه فقط این کد را از URL دریافت میکند.
۳- تبادل کد با توکن
- اپ این Authorization Code را همراه با client_id و client_secret خودش به سرور گوگل میفرستد (یک درخواست مستقیم از سرور اپ به گوگل).
- گوگل بررسی میکند و اگر کد معتبر باشد، Access Token و ID Token برای اپ صادر میکند.
۴- استفاده از توکن
اپ این توکنها را دریافت میکند و حالا میتواند:
- با Access Token از API گوگل دادهها را بخواند (مثلاً ایمیل و پروفایل).
- با ID Token هویت کاربر را تأیید کند.
سپس اپ یک نشست (Session) روی دامنه خودش ایجاد میکند و کاربر وارد اپ میشود.
@alithecodeguy
#login #oauth
وقتی در اپی میخواهید با استفاده از استاندارهای پست قبل و از طریق سروری مثل گوگل یا هر سرور شخصی یا غیر شخصی دیگری که این استاندارها رو پشتیبانی میکند ، لاگین کنید ، اتفاقی مشابه مراحل زیر اتفاق میفته:
۱- مسیر ارسال توکن به اپ
- کاربر به اپ مراجعه میکند و روی «Login with Google» کلیک میکند.
- اپ کاربر را به Authorization Server گوگل هدایت میکند (مثلاً یک URL شامل client_id و redirect_uri).
- مرورگر شما به گوگل میرود و کوکی گوگل به Authorization Server فرستاده میشود. گوگل متوجه میشود شما قبلاً لاگین کردهاید.
۲- صدور Authorization Code
- گوگل یک Authorization Code کوتاهمدت ایجاد میکند.
- سپس مرورگر شما را به redirect_uri اپ بازمیگرداند و این کد را در URL به اپ میدهد:
https://app.example.com/callback?code=AUTH_CODE
- یعنی اپ به طور مستقیم کوکی گوگل را نمیبیند، بلکه فقط این کد را از URL دریافت میکند.
۳- تبادل کد با توکن
- اپ این Authorization Code را همراه با client_id و client_secret خودش به سرور گوگل میفرستد (یک درخواست مستقیم از سرور اپ به گوگل).
- گوگل بررسی میکند و اگر کد معتبر باشد، Access Token و ID Token برای اپ صادر میکند.
۴- استفاده از توکن
اپ این توکنها را دریافت میکند و حالا میتواند:
- با Access Token از API گوگل دادهها را بخواند (مثلاً ایمیل و پروفایل).
- با ID Token هویت کاربر را تأیید کند.
سپس اپ یک نشست (Session) روی دامنه خودش ایجاد میکند و کاربر وارد اپ میشود.
@alithecodeguy
#login #oauth
گفته میشه لینوکس اپن سورسه. تا اینجاش اوکیه.
ولی هر چیز اپن سورسی امنه یا برای کاربر مشکلی ایجاد نمیکنه؟
اپن سورس بودن به خود خودی خوب نیست. اگر کسی بره کدها رو بخونه و مطمن بشه که همه چی اوکیه ، اون موقعاس که خوبه.
مثال بزنم. چند سال پیش یک باگی روی لینوکس شناخته شد که اگر موقع لاگین ۲۸ بار بکاسپیس میزدی لاگین میکرد. گویا خیلی هم کد واضحی داشته. خیلی وقت هم بوده.
اگر واقعا کسی رفته بود خونده بود این مشکل پیش میومد؟
حالا فرضا کسی رفت و همه کد رو خوند. آیا تمام کتابخانههاش رو میره بخونه؟ ایا کتابخانه کتابخانههاش رو هم میره بخونه؟ اومدیم و همه چی اوکی بود. با بکدور روی سیپییو اینتل چیکار میشه کرد؟
خلاصه که امنیت و اپن سورس بودن شوخیای بیش نیست. شل کنید لذت ببرید
ولی هر چیز اپن سورسی امنه یا برای کاربر مشکلی ایجاد نمیکنه؟
اپن سورس بودن به خود خودی خوب نیست. اگر کسی بره کدها رو بخونه و مطمن بشه که همه چی اوکیه ، اون موقعاس که خوبه.
مثال بزنم. چند سال پیش یک باگی روی لینوکس شناخته شد که اگر موقع لاگین ۲۸ بار بکاسپیس میزدی لاگین میکرد. گویا خیلی هم کد واضحی داشته. خیلی وقت هم بوده.
اگر واقعا کسی رفته بود خونده بود این مشکل پیش میومد؟
حالا فرضا کسی رفت و همه کد رو خوند. آیا تمام کتابخانههاش رو میره بخونه؟ ایا کتابخانه کتابخانههاش رو هم میره بخونه؟ اومدیم و همه چی اوکی بود. با بکدور روی سیپییو اینتل چیکار میشه کرد؟
خلاصه که امنیت و اپن سورس بودن شوخیای بیش نیست. شل کنید لذت ببرید
فلسفه خط عابر پیاده در ایران:
اگر عابر از روش رد نشد ، بگیر روش.
اگر عابر از روش رد شد ، گاز بده زودتر رد شی.
اگر عابر از روش رد نشد ، بگیر روش.
اگر عابر از روش رد شد ، گاز بده زودتر رد شی.
رقصنده با کد
بزرگترین Red flag یک شرکت: ۱- پنجشنبهها هم هستن ۲- مصاحبه اول حضوریه ۳- تست نمیگیرن و تسک میدن که بری خونه انجام بدی حتی ۱ دونه از اینها هم کافیه تا کلا اون شرکت کنسل باشه.
در ادامه ردفلگهای شرکتها:
۴. نداشتن جای مشخص (کار توی فضای کار اشتراکی)
۵. نداشتن سیستم برای هر فرد ( هر کی لپ تاپشو بیاره. گاها منت میذارن که کمد میدیم بهتون 😁)
۶. منابع انسانی با جیمیل یا خط شخصی ارتباط بگیره
۷. منابع انسانی در تماس اول از کلمه جون (جان) استفاده کنه.
شاید فکر کنید که کار گیر نمیاد. ولی باور کنید کار توی این شرکتها نه آورده مالی داره نه آورده علمی ، رزومه و اعتماد به نفستون هم بهتر نمیکنه هیچ ، م....ه بهش.
۴. نداشتن جای مشخص (کار توی فضای کار اشتراکی)
۵. نداشتن سیستم برای هر فرد ( هر کی لپ تاپشو بیاره. گاها منت میذارن که کمد میدیم بهتون 😁)
۶. منابع انسانی با جیمیل یا خط شخصی ارتباط بگیره
۷. منابع انسانی در تماس اول از کلمه جون (جان) استفاده کنه.
شاید فکر کنید که کار گیر نمیاد. ولی باور کنید کار توی این شرکتها نه آورده مالی داره نه آورده علمی ، رزومه و اعتماد به نفستون هم بهتر نمیکنه هیچ ، م....ه بهش.