اگه میخواید یه سری مقالات خوب در خصوص پروتکل های احراز هویت، مدیریت احراز هویت و ... بخونید، حتما یه سر به وبلاگ آتین بزنید:
https://authin.ir/authin-blog/
@Syntax_fa
https://authin.ir/authin-blog/
@Syntax_fa
آتین
وبلاگ آتین | سامانه مدیریت هویت و دسترسی
وبـــلاگ آتــیــن دسته بندی مطالب وبلاگ : همه مطالب مدیریت هویت و دسترسی احراز هویت پروتکل های احراز هویت امنیت سایبری دورکاری مقالات پربازدید: مقــالات وبـــلاگ آتــیــن 03 آذر پروتکل FIDO پروتکل FIDO در حال حاضر گذرواژه ها رایج ترین روش برای احراز هویت…
👍6
Keycloak
یک ابزار احراز هویت و مدیریت دسترسی بسیار کاربردی و محبوب است. به زبان ساده میشه گفت Keycloak یک برنامه ای هست که به شما این امکانو میده که یک سیستم احراز هویت و کنترل دسترسی برای برنامه هاتون راه اندازی کنید(همونطور که میدونید این بخش پروژه پیاده سازیش خیلی حساسه).
اصلی ترین کاربرد Keycloak اینه که به شما کمک میکنه تا کاربران رو به راحتی مدیریت کنید و به برنامه هاتون متصل کنید. با استفاده از Keycloak میتونید:
- یک سیستم ورود به سیستم یکپارچه (SSO) برای کاربران خودتون راه اندازی کنید
- به راحتی حساب های کاربری رو ایجاد، مدیریت و پشتیبانی کنید
- دسترسی های کاربران رو به برنامه ها و منابع مختلف کنترل و مدیریت کنید
- احراز هویت چند مرحله ای رو برای افزایش امنیت پیاده سازی کنید
- امکانات پیشرفته مثل اعمال سیاست های امنیتی، گزارش گیری و تجزیه و تحلیل رو داشته باشید
استفاده از این ابزار باعث میشه که دیگه نگران مدیریت حساب های کاربری نباشید و روی توسعه برنامه های اصلیتون تمرکز کنید.
(تو پستای بعدی نحوه کار کردن باهاشو میگم)
#SSO #Keycloak
@Syntax_fa
یک ابزار احراز هویت و مدیریت دسترسی بسیار کاربردی و محبوب است. به زبان ساده میشه گفت Keycloak یک برنامه ای هست که به شما این امکانو میده که یک سیستم احراز هویت و کنترل دسترسی برای برنامه هاتون راه اندازی کنید(همونطور که میدونید این بخش پروژه پیاده سازیش خیلی حساسه).
اصلی ترین کاربرد Keycloak اینه که به شما کمک میکنه تا کاربران رو به راحتی مدیریت کنید و به برنامه هاتون متصل کنید. با استفاده از Keycloak میتونید:
- یک سیستم ورود به سیستم یکپارچه (SSO) برای کاربران خودتون راه اندازی کنید
- به راحتی حساب های کاربری رو ایجاد، مدیریت و پشتیبانی کنید
- دسترسی های کاربران رو به برنامه ها و منابع مختلف کنترل و مدیریت کنید
- احراز هویت چند مرحله ای رو برای افزایش امنیت پیاده سازی کنید
- امکانات پیشرفته مثل اعمال سیاست های امنیتی، گزارش گیری و تجزیه و تحلیل رو داشته باشید
استفاده از این ابزار باعث میشه که دیگه نگران مدیریت حساب های کاربری نباشید و روی توسعه برنامه های اصلیتون تمرکز کنید.
(تو پستای بعدی نحوه کار کردن باهاشو میگم)
#SSO #Keycloak
@Syntax_fa
🔥10❤2👎1
Syntax | سینتکس
Keycloak یک ابزار احراز هویت و مدیریت دسترسی بسیار کاربردی و محبوب است. به زبان ساده میشه گفت Keycloak یک برنامه ای هست که به شما این امکانو میده که یک سیستم احراز هویت و کنترل دسترسی برای برنامه هاتون راه اندازی کنید(همونطور که میدونید این بخش پروژه پیاده…
Single Sign-On (SSO)
فرایندی است که به کاربران امکان میدهد با استفاده از یک حساب کاربری واحد، به چندین برنامه و سرویس دسترسی داشته باشند. این روش به جای اینکه کاربران برای هر برنامه ای که استفاده میکنند، باید حساب کاربری جداگانه ای ایجاد کنند، به آنها امکان میدهد با تنها یک بار ورود به سیستم، به همه برنامه های مورد نیازشان دسترسی داشته باشند.
برای مثال، در مورد سرویس های گوگل، اگر SSO وجود نداشت، هر بار که کاربر میخواست به برنامه های مختلف گوگل مانند Gmail، Google Drive، Google Calendar و غیره دسترسی پیدا کند، میبایست مجددا نام کاربری و رمز عبور خود را وارد میکرد. اما با استفاده از SSO، یک بار که کاربر وارد حساب کاربری گوگل خود میشود، میتواند به تمام سرویس های مرتبط با این حساب دسترسی پیدا کند، بدون نیاز به ورود مجدد.
این روش علاوه بر افزایش راحتی و بهبود تجربه کاربری، باعث افزایش امنیت نیز میشود. زیرا کاربران دیگر نیاز ندارند اطلاعات حساب های متعدد را به خاطر بسپارند و مدیریت کنند، که این امر خطر افشای این اطلاعات را کاهش میدهد. همچنین سازمانها میتوانند کنترل بیشتری بر روی حسابهای کاربری و سیاستهای دسترسی داشته باشند.
پیادهسازی سرویسهای تکورودی (Single Sign-On) بر اساس پروتکل OIDC
یکی از پرکاربردترین پروتکلهای مورد استفاده در سیستمهای SSO، پروتکل OIDC (OpenID Connect) است. این پروتکل بر پایه OAuth2 ساخته شده و دارای ویژگیهای پیشرفتهتری نسبت به آن میباشد.
در حالی که OAuth2 به مدیریت دسترسیها و اعطای مجوز به برنامهها برای دسترسی به منابع متمرکز است، OIDC علاوه بر این موارد، بر مدیریت هویت کاربر نیز تمرکز دارد. به عبارت دیگر، OIDC نه تنها به برنامهها اجازه میدهد به منابع و اطلاعات دسترسی داشته باشند، بلکه به آنها امکان میدهد تا هویت کاربر را نیز تأیید کنند.
برای مثال، فرض کنید برنامهای قصد دارد به گوگل درایو کاربر متصل شود تا بتواند در آنجا چیزی را ذخیره کند. در این حالت، با استفاده از OAuth2، کاربر دسترسی مورد نیاز برنامه را به آن اعطا میکند و در مقابل، برنامه یک توکن دسترسی (Access Token) دریافت میکند که فقط محدود به آن سطح دسترسی است، بدون اینکه اطلاعات هویتی کاربر را دریافت نماید.
اما در صورت استفاده از OIDC، علاوه بر اعطای سطح دسترسی مورد نیاز به برنامه، اطلاعات هویتی کاربر مانند نام، ایمیل و عکس پروفایل نیز در اختیار آن قرار میگیرد. این ویژگی اضافی OIDC را به انتخاب مناسبتری برای پیادهسازی سیستمهای SSO تبدیل میکند، زیرا به برنامهها امکان میدهد تا هویت کاربر را نیز تأیید کنند.
در مجموع، OIDC با بهرهگیری از مفهوم ID Token (در مقابل Access Token در OAuth2)، ضمن مدیریت دسترسیها، امکان احراز هویت کاربر و دریافت اطلاعات هویتی را نیز فراهم میآورد، و از این طریق تجربه کاربری بهتری را در سیستمهای SSO ایجاد میکند.
خب حالا ما با keycloak، authelia و اینجور ابزار ها چیکار میکنیم؟
بدون اینکه خودمونو درگیر پیچیدگی قسمت احراز هویت کنیم برامون از قبل پیادش کرده و کافیه بر اساس نیازمون شخصی سازیشون کنیم
#SSO #OAUTH2 #OIDC
@Syntax_fa
فرایندی است که به کاربران امکان میدهد با استفاده از یک حساب کاربری واحد، به چندین برنامه و سرویس دسترسی داشته باشند. این روش به جای اینکه کاربران برای هر برنامه ای که استفاده میکنند، باید حساب کاربری جداگانه ای ایجاد کنند، به آنها امکان میدهد با تنها یک بار ورود به سیستم، به همه برنامه های مورد نیازشان دسترسی داشته باشند.
برای مثال، در مورد سرویس های گوگل، اگر SSO وجود نداشت، هر بار که کاربر میخواست به برنامه های مختلف گوگل مانند Gmail، Google Drive، Google Calendar و غیره دسترسی پیدا کند، میبایست مجددا نام کاربری و رمز عبور خود را وارد میکرد. اما با استفاده از SSO، یک بار که کاربر وارد حساب کاربری گوگل خود میشود، میتواند به تمام سرویس های مرتبط با این حساب دسترسی پیدا کند، بدون نیاز به ورود مجدد.
این روش علاوه بر افزایش راحتی و بهبود تجربه کاربری، باعث افزایش امنیت نیز میشود. زیرا کاربران دیگر نیاز ندارند اطلاعات حساب های متعدد را به خاطر بسپارند و مدیریت کنند، که این امر خطر افشای این اطلاعات را کاهش میدهد. همچنین سازمانها میتوانند کنترل بیشتری بر روی حسابهای کاربری و سیاستهای دسترسی داشته باشند.
پیادهسازی سرویسهای تکورودی (Single Sign-On) بر اساس پروتکل OIDC
یکی از پرکاربردترین پروتکلهای مورد استفاده در سیستمهای SSO، پروتکل OIDC (OpenID Connect) است. این پروتکل بر پایه OAuth2 ساخته شده و دارای ویژگیهای پیشرفتهتری نسبت به آن میباشد.
در حالی که OAuth2 به مدیریت دسترسیها و اعطای مجوز به برنامهها برای دسترسی به منابع متمرکز است، OIDC علاوه بر این موارد، بر مدیریت هویت کاربر نیز تمرکز دارد. به عبارت دیگر، OIDC نه تنها به برنامهها اجازه میدهد به منابع و اطلاعات دسترسی داشته باشند، بلکه به آنها امکان میدهد تا هویت کاربر را نیز تأیید کنند.
برای مثال، فرض کنید برنامهای قصد دارد به گوگل درایو کاربر متصل شود تا بتواند در آنجا چیزی را ذخیره کند. در این حالت، با استفاده از OAuth2، کاربر دسترسی مورد نیاز برنامه را به آن اعطا میکند و در مقابل، برنامه یک توکن دسترسی (Access Token) دریافت میکند که فقط محدود به آن سطح دسترسی است، بدون اینکه اطلاعات هویتی کاربر را دریافت نماید.
اما در صورت استفاده از OIDC، علاوه بر اعطای سطح دسترسی مورد نیاز به برنامه، اطلاعات هویتی کاربر مانند نام، ایمیل و عکس پروفایل نیز در اختیار آن قرار میگیرد. این ویژگی اضافی OIDC را به انتخاب مناسبتری برای پیادهسازی سیستمهای SSO تبدیل میکند، زیرا به برنامهها امکان میدهد تا هویت کاربر را نیز تأیید کنند.
در مجموع، OIDC با بهرهگیری از مفهوم ID Token (در مقابل Access Token در OAuth2)، ضمن مدیریت دسترسیها، امکان احراز هویت کاربر و دریافت اطلاعات هویتی را نیز فراهم میآورد، و از این طریق تجربه کاربری بهتری را در سیستمهای SSO ایجاد میکند.
خب حالا ما با keycloak، authelia و اینجور ابزار ها چیکار میکنیم؟
بدون اینکه خودمونو درگیر پیچیدگی قسمت احراز هویت کنیم برامون از قبل پیادش کرده و کافیه بر اساس نیازمون شخصی سازیشون کنیم
#SSO #OAUTH2 #OIDC
@Syntax_fa
👍11
اگر نیاز داشتید که پر سرعت ترین میرور رجیستری داکر رو برای دانلود امیج های تحریمی به راحتی و سرعت پیدا کنید
یه اسکریپت دولوپ کردم میتونید ازش استفاده کنین
https://github.com/ArmanTaheriGhaleTaki/fastDocker403unlocker
[Armon taheri]
@Syntax_fa
یه اسکریپت دولوپ کردم میتونید ازش استفاده کنین
https://github.com/ArmanTaheriGhaleTaki/fastDocker403unlocker
[Armon taheri]
@Syntax_fa
GitHub
GitHub - 403unlocker/fastDocker403unlocker: Discover optimal docker registry mirror speed for efficient network performance
Discover optimal docker registry mirror speed for efficient network performance - GitHub - 403unlocker/fastDocker403unlocker: Discover optimal docker registry mirror speed for efficient network pe...
🔥4
نکته:
میدونستید جنگو translation بر اساس زبان دیفالت مروگر کاربر، زبانی که باید نشون بده رو انتخاب می کنه؟
اگه زبان دیفالت مرورگرش توی لیست زبان های برناممون نبود میره سراغ دومین زبانی که تو مرورگرش ست کرده
و اگه کلا اون زبانه نبود، اون زبانی که دیفالت توی settings.py ست کردیمو نشون میده
#Note #Django
@Syntax_fa
میدونستید جنگو translation بر اساس زبان دیفالت مروگر کاربر، زبانی که باید نشون بده رو انتخاب می کنه؟
اگه زبان دیفالت مرورگرش توی لیست زبان های برناممون نبود میره سراغ دومین زبانی که تو مرورگرش ست کرده
و اگه کلا اون زبانه نبود، اون زبانی که دیفالت توی settings.py ست کردیمو نشون میده
#Note #Django
@Syntax_fa
😱11👍8
بنظرتون محتوای خوب برنامه نویسی، توی تلگرام باید چجوری باشه؟ (کامنت کنید)
مثلا یچیزی که با سرچ کردن پیدا میشه رو بیایم بازگو کنیم خوبه؟
یا فقط نکات و تجربیاتمونو انتقال بدیم بهتره؟
مثلا یچیزی که با سرچ کردن پیدا میشه رو بیایم بازگو کنیم خوبه؟
یا فقط نکات و تجربیاتمونو انتقال بدیم بهتره؟
👍8
Syntax | سینتکس
بنظرتون محتوای خوب برنامه نویسی، توی تلگرام باید چجوری باشه؟ (کامنت کنید) مثلا یچیزی که با سرچ کردن پیدا میشه رو بیایم بازگو کنیم خوبه؟ یا فقط نکات و تجربیاتمونو انتقال بدیم بهتره؟
خب
طبق نظر اکثر دوستان
بیشتر محتواهامونو میبریم سمت:
تجربیات
تو یه پروژه واقعی چی میگذره؟
چیزهایی که تو آموزش ها بهش کمتر توجه شده
خیلی خوشحال میشم شما دوستان باسواد تر و یا حتی تازه کار، چالش ها و مسائلی که داشتید رو تو پیوی بنده یا گروه بگید تا توی کانال قرارش بدم و باهمدیگه چالشو حل کنیم
@Syntax_fa
طبق نظر اکثر دوستان
بیشتر محتواهامونو میبریم سمت:
تجربیات
تو یه پروژه واقعی چی میگذره؟
چیزهایی که تو آموزش ها بهش کمتر توجه شده
خیلی خوشحال میشم شما دوستان باسواد تر و یا حتی تازه کار، چالش ها و مسائلی که داشتید رو تو پیوی بنده یا گروه بگید تا توی کانال قرارش بدم و باهمدیگه چالشو حل کنیم
@Syntax_fa
🔥11👍3
Syntax | سینتکس
خب طبق نظر اکثر دوستان بیشتر محتواهامونو میبریم سمت: تجربیات تو یه پروژه واقعی چی میگذره؟ چیزهایی که تو آموزش ها بهش کمتر توجه شده خیلی خوشحال میشم شما دوستان باسواد تر و یا حتی تازه کار، چالش ها و مسائلی که داشتید رو تو پیوی بنده یا گروه بگید تا توی کانال…
بریم سراغ یکی از چالش های جالب
فرض کنید ما یک شبکه اجتماعی به اسم سینتکس گرام داریم
تو اپلیکیشن ما، کاربران میتونن فایل هاشونو با بقیه کاربر ها به اشتراک بذارن
چالش:
اگه یکی از کاربر ها یک فایلی رو آپلود کرد و یک یا چند کاربر دیگم همون فایل رو آپلود کنن، برای جلوگیری از ذخیره یک فایل تکراری، چه راه حلی دارید؟
بنظرتون اصلا نیازه راه حلی برای این شرایط داشته باشیم یا اینکه فایل های تکراری رو هم ذخیرش کنیم؟
#challenge
@Syntax_fa
فرض کنید ما یک شبکه اجتماعی به اسم سینتکس گرام داریم
تو اپلیکیشن ما، کاربران میتونن فایل هاشونو با بقیه کاربر ها به اشتراک بذارن
چالش:
اگه یکی از کاربر ها یک فایلی رو آپلود کرد و یک یا چند کاربر دیگم همون فایل رو آپلود کنن، برای جلوگیری از ذخیره یک فایل تکراری، چه راه حلی دارید؟
بنظرتون اصلا نیازه راه حلی برای این شرایط داشته باشیم یا اینکه فایل های تکراری رو هم ذخیرش کنیم؟
#challenge
@Syntax_fa
👍6
ترب واچر
بریم سراغ معرفیه یه ابزار باحال
تو این وب سایت میتونید برید لینک محصولی که توی ترب هستش رو بدید و مشخص کنید که اگه به فلان قیمت رسید بهتون از طریق نوتیف اطلاع بده:
https://watcher.falconhub.ir/
از این ایده های باحال پیاده کردید، بدید بذارم تو کانال 😁
حمید حسینی:
https://news.1rj.ru/str/h4mid_hosseini
@Syntax_fa
بریم سراغ معرفیه یه ابزار باحال
تو این وب سایت میتونید برید لینک محصولی که توی ترب هستش رو بدید و مشخص کنید که اگه به فلان قیمت رسید بهتون از طریق نوتیف اطلاع بده:
https://watcher.falconhub.ir/
از این ایده های باحال پیاده کردید، بدید بذارم تو کانال 😁
حمید حسینی:
https://news.1rj.ru/str/h4mid_hosseini
@Syntax_fa
🔥7👍4
جدیدا فیلترینگ نسبت به قبل شدید تر شده
دیگه چه از نظرتون خوب باشه چه بد ممکنه برای دسترسی به اینترنت آزاد به خرید وی پی ان رو بیارید.
اگه خواستید اشتراک بخرید حداقل از یکی بخرید که کارتون راه بیوفته
خودم از این کانال تهیه کردم(پرداخت با ارز دیجیتال هم قبول میکنه):
https://news.1rj.ru/str/fateh_network
(تو کامنت بگید خودتون این روزا چیکار میکنید. اگه پیشنهاد و روشی دارید حتما بگید)
دیگه چه از نظرتون خوب باشه چه بد ممکنه برای دسترسی به اینترنت آزاد به خرید وی پی ان رو بیارید.
اگه خواستید اشتراک بخرید حداقل از یکی بخرید که کارتون راه بیوفته
خودم از این کانال تهیه کردم(پرداخت با ارز دیجیتال هم قبول میکنه):
https://news.1rj.ru/str/fateh_network
(تو کامنت بگید خودتون این روزا چیکار میکنید. اگه پیشنهاد و روشی دارید حتما بگید)
👍10👎1🔥1
آموزش پکیج django-debug-toolbar
پکیج django-debug-toolbar یک ابزار قدرتمند برای دیباگ کردن وباپلیکیشنهای Django است. این ابزار اطلاعات مفصلی در مورد درخواستها، پاسخها، قالبها، پرسوجوهای SQL و موارد دیگر ارائه میدهد که میتواند به شما در یافتن و رفع اشکالات در کد Django شما کمک کند.
نصب django-debug-toolbar
برای نصب django-debug-toolbar، باید مراحل زیر را انجام دهید:
پکیج را با pip نصب کنید:
پکیج را در فایل settings.py خود اضافه کنید:
سرور وب خود را مجدداً راهاندازی کنید.
استفاده از django-debug-toolbar
پس از نصب django-debug-toolbar، یک نوار ابزار در بالای صفحه نمایش شما ظاهر می شود. این نوار ابزار شامل تعدادی پنل است که اطلاعات مختلفی در مورد درخواست فعلی را نشان می دهد.
برای مشاهده اطلاعات بیشتر در مورد یک پنل، می توانید روی آن کلیک کنید. به عنوان مثال، اگر روی پنل "SQL Queries" کلیک کنید، لیستی از تمام پرس و جوهای SQL که برای پردازش درخواست اجرا شده اند را مشاهده خواهید کرد.
پکیج django-debug-toolbar همچنین شامل تعدادی ابزار مفید دیگر است، مانند:
خطایاب قالب: این ابزار به شما امکان می دهد کد قالب Django خود را گام به گام اشکال زدایی کنید.
پروفیلر: این ابزار به شما امکان می دهد عملکرد کد Django خود را پروفایل کنید.
کنسول: این ابزار به شما امکان می دهد کد Python را در محیط تعاملی اجرا کنید.
نکته:
تنطیماتشو جوری انجام بدید که تو حالت Debug == false میدلور و کلا پکیجه کانفیگ نشه چون نیاز ندارید بهش
[@Awmirsn]
#django
@Syntax_fa
پکیج django-debug-toolbar یک ابزار قدرتمند برای دیباگ کردن وباپلیکیشنهای Django است. این ابزار اطلاعات مفصلی در مورد درخواستها، پاسخها، قالبها، پرسوجوهای SQL و موارد دیگر ارائه میدهد که میتواند به شما در یافتن و رفع اشکالات در کد Django شما کمک کند.
نصب django-debug-toolbar
برای نصب django-debug-toolbar، باید مراحل زیر را انجام دهید:
پکیج را با pip نصب کنید:
pip install django-debug-toolbarپکیج را در فایل settings.py خود اضافه کنید:
INSTALLED_APPS = [
# ...
'debug_toolbar',
]
MIDDLEWARE = [
# ...
'debug_toolbar.middleware.DebugToolbarMiddleware',
]
INTERNAL_IPS = [
# ...
"127.0.0.1",
# ...
]سرور وب خود را مجدداً راهاندازی کنید.
استفاده از django-debug-toolbar
پس از نصب django-debug-toolbar، یک نوار ابزار در بالای صفحه نمایش شما ظاهر می شود. این نوار ابزار شامل تعدادی پنل است که اطلاعات مختلفی در مورد درخواست فعلی را نشان می دهد.
برای مشاهده اطلاعات بیشتر در مورد یک پنل، می توانید روی آن کلیک کنید. به عنوان مثال، اگر روی پنل "SQL Queries" کلیک کنید، لیستی از تمام پرس و جوهای SQL که برای پردازش درخواست اجرا شده اند را مشاهده خواهید کرد.
پکیج django-debug-toolbar همچنین شامل تعدادی ابزار مفید دیگر است، مانند:
خطایاب قالب: این ابزار به شما امکان می دهد کد قالب Django خود را گام به گام اشکال زدایی کنید.
پروفیلر: این ابزار به شما امکان می دهد عملکرد کد Django خود را پروفایل کنید.
کنسول: این ابزار به شما امکان می دهد کد Python را در محیط تعاملی اجرا کنید.
نکته:
تنطیماتشو جوری انجام بدید که تو حالت Debug == false میدلور و کلا پکیجه کانفیگ نشه چون نیاز ندارید بهش
[@Awmirsn]
#django
@Syntax_fa
👍6🔥1
جستجوی دودویی
الگوریتم جستجوی دودویی تکنیکی است برای یافتن یک مقدار عددی از میان مجموعهای از اعداد مرتب. این متد محدودهٔ جستجو را در هر مرحله به نصف کاهش میدهد، بنابراین هدف مورد نظر یا به زودی پیدا میشود یا مشخص میشود که مقدار مورد جستجو در فهرست وجود ندارد.
جستجوی دودویی فقط در آرایههای مرتب استفاده میشود. در این روش عنصر مورد نظر با خانه وسط آرایه مقایسه میشود اگر با این خانه برابر بود جستجو تمام میشود اگر عنصر مورد جستجو از خانه وسط بزرگتر بود جستجو در بخش بالایی آرایه و در غیر این صورت جستجو در بخش پایینی آرایه انجام میشود (فرض کردهایم آرایه به صورت صعودی مرتب شدهاست) این رویه تا یافتن عنصر مورد نظر یا بررسی کل خانههای آرایه ادامه مییابد.
مثال:
#binary_search
@Syntax_fa
الگوریتم جستجوی دودویی تکنیکی است برای یافتن یک مقدار عددی از میان مجموعهای از اعداد مرتب. این متد محدودهٔ جستجو را در هر مرحله به نصف کاهش میدهد، بنابراین هدف مورد نظر یا به زودی پیدا میشود یا مشخص میشود که مقدار مورد جستجو در فهرست وجود ندارد.
جستجوی دودویی فقط در آرایههای مرتب استفاده میشود. در این روش عنصر مورد نظر با خانه وسط آرایه مقایسه میشود اگر با این خانه برابر بود جستجو تمام میشود اگر عنصر مورد جستجو از خانه وسط بزرگتر بود جستجو در بخش بالایی آرایه و در غیر این صورت جستجو در بخش پایینی آرایه انجام میشود (فرض کردهایم آرایه به صورت صعودی مرتب شدهاست) این رویه تا یافتن عنصر مورد نظر یا بررسی کل خانههای آرایه ادامه مییابد.
مثال:
package main
import (
"errors"
"fmt"
)
func main() {
list := []int{1, 2, 3, 6, 7, 8, 10, 12, 15, 16, 17, 18, 19, 22, 23, 24, 25, 29, 33}
index, err := binary_search(list, 10)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Printf("index: %d", index)
}
func binary_search(list []int, item int) (int, error) {
low := 0
hight := len(list) - 1
for low <= hight {
mid := (low + hight) / 2
guess := list[mid]
if guess == item {
return mid, nil
} else if guess < item {
low = hight - mid
} else {
hight = mid + 1
}
}
return 0, errors.New("number not found")
}
#binary_search
@Syntax_fa
👍10
This media is not supported in your browser
VIEW IN TELEGRAM
یکم از کد فاصله بگیریم
برید سریال طلسم شدگانو ببینید کلی بخندید😂
(فقط حتما دوبله فارسی ببینید و سانسور نشده)
برید سریال طلسم شدگانو ببینید کلی بخندید😂
(فقط حتما دوبله فارسی ببینید و سانسور نشده)
😁5
کتابهای مفید برای کارشناسی مهندسی کامپیوتر - نرمافزار
https://www.youtube.com/watch?v=RwdvU-BSynw
@Syntax_fa
https://www.youtube.com/watch?v=RwdvU-BSynw
@Syntax_fa
YouTube
کتابهای مفید برای کارشناسی مهندسی کامپیوتر - نرمافزار
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
👍6
سوال:
چجوری سی پی یو، نوع دیتایی که توی memory ذخیره کردیم رو، به درستی شناسایی می کنه؟
#Question
@Syntax_fa
چجوری سی پی یو، نوع دیتایی که توی memory ذخیره کردیم رو، به درستی شناسایی می کنه؟
#Question
@Syntax_fa
👍5
Syntax | سینتکس
سوال: چجوری سی پی یو، نوع دیتایی که توی memory ذخیره کردیم رو، به درستی شناسایی می کنه؟ #Question @Syntax_fa
بیایید این موضوع رو با جزئیات بیشتری بررسی کنیم.
### مفهوم نوع داده
در زبانهای برنامهنویسی، نوع دادهها (Data Types) به ما کمک میکنند تا مشخص کنیم که یک تکه از حافظه باید چگونه تفسیر و استفاده شود. به عنوان مثال، یک نوع داده میتواند عدد صحیح، عدد اعشاری، کاراکتر، رشته یا هر نوع داده دیگری باشد.
### نقش برنامهنویس
برنامهنویس هنگام نوشتن کد، نوع دادهها را تعریف میکند. برای مثال در زبان C، شما میتوانید یک عدد صحیح را اینگونه تعریف کنید:
در اینجا
### نقش کامپایلر
کامپایلر نقش مهمی در ترجمه کد برنامهنویس به کد ماشین (که توسط سی پی یو قابل فهم است) دارد. کامپایلر نوع دادهها را از کد منبع (Source Code) میخواند و بر اساس آن دستورات مناسب را تولید میکند. این دستورات شامل عملیاتهایی مانند جمع، تفریق، ضرب و تقسیم برای اعداد صحیح، یا عملیاتهای دیگری برای انواع دادههای مختلف است.
### نقش حافظه
حافظه (RAM) فقط مجموعهای از بیتها است. حافظه نوع دادهها را نمیداند؛ فقط دادهها را ذخیره و بازیابی میکند. این برنامهنویس و کامپایلر هستند که مشخص میکنند چگونه باید به این بیتها نگاه کرد و آنها را تفسیر کرد.
### نقش سی پی یو
سی پی یو دستورات کامپایل شده را اجرا میکند. سی پی یو فقط بیتها را میبیند و نوع دادهها برای آن معنایی ندارد. به عنوان مثال، اگر سی پی یو دستور
### مثال عملی
فرض کنید شما یک برنامه ساده دارید که دو عدد صحیح را در حافظه ذخیره میکند و آنها را جمع میکند.
1. تعریف متغیرها:
2. کامپایل کد:
کامپایلر این کد را به دستوراتی تبدیل میکند که سی پی یو میتواند اجرا کند. این دستورات میتوانند به شکل زیر باشند (به زبان ماشین):
3. اجرای دستورات توسط سی پی یو:
سی پی یو این دستورات را اجرا میکند. در اینجا،
### نتیجه
سی پی یو به خودی خود نوع دادهها را شناسایی نمیکند. این برنامهنویس است که نوع دادهها را تعریف میکند و کامپایلر است که این اطلاعات را به دستورات قابل فهم برای سی پی یو تبدیل میکند. حافظه فقط دادهها را به صورت بیت ذخیره میکند و سی پی یو این بیتها را بدون توجه به نوع آنها پردازش میکند. بنابراین، مدیریت صحیح نوع دادهها بر عهده برنامهنویس و کامپایلر است.
### خلاصه
- برنامهنویس: نوع دادهها را در کد منبع تعریف میکند.
- کامپایلر: کد منبع را تجزیه و تحلیل کرده و دستورات مناسب برای سی پی یو تولید میکند.
- حافظه: دادهها را به صورت بیت ذخیره میکند و نوع دادهها را نمیداند.
- سی پی یو: دستورات را اجرا میکند و بیتها را بدون توجه به نوع آنها پردازش میکند.
#data_types
@Syntax_fa
### مفهوم نوع داده
در زبانهای برنامهنویسی، نوع دادهها (Data Types) به ما کمک میکنند تا مشخص کنیم که یک تکه از حافظه باید چگونه تفسیر و استفاده شود. به عنوان مثال، یک نوع داده میتواند عدد صحیح، عدد اعشاری، کاراکتر، رشته یا هر نوع داده دیگری باشد.
### نقش برنامهنویس
برنامهنویس هنگام نوشتن کد، نوع دادهها را تعریف میکند. برای مثال در زبان C، شما میتوانید یک عدد صحیح را اینگونه تعریف کنید:
int a = 10;
در اینجا
int بیانگر این است که متغیر a یک عدد صحیح است.### نقش کامپایلر
کامپایلر نقش مهمی در ترجمه کد برنامهنویس به کد ماشین (که توسط سی پی یو قابل فهم است) دارد. کامپایلر نوع دادهها را از کد منبع (Source Code) میخواند و بر اساس آن دستورات مناسب را تولید میکند. این دستورات شامل عملیاتهایی مانند جمع، تفریق، ضرب و تقسیم برای اعداد صحیح، یا عملیاتهای دیگری برای انواع دادههای مختلف است.
### نقش حافظه
حافظه (RAM) فقط مجموعهای از بیتها است. حافظه نوع دادهها را نمیداند؛ فقط دادهها را ذخیره و بازیابی میکند. این برنامهنویس و کامپایلر هستند که مشخص میکنند چگونه باید به این بیتها نگاه کرد و آنها را تفسیر کرد.
### نقش سی پی یو
سی پی یو دستورات کامپایل شده را اجرا میکند. سی پی یو فقط بیتها را میبیند و نوع دادهها برای آن معنایی ندارد. به عنوان مثال، اگر سی پی یو دستور
ADD را دریافت کند، دو تکه از دادهها (که میتواند اعداد صحیح، اعشاری یا هر نوع دیگری باشند) را جمع میکند. سی پی یو اهمیتی نمیدهد که این دادهها چه نوعی دارند، فقط دستور را اجرا میکند.### مثال عملی
فرض کنید شما یک برنامه ساده دارید که دو عدد صحیح را در حافظه ذخیره میکند و آنها را جمع میکند.
1. تعریف متغیرها:
int a = 5;
int b = 10;
2. کامپایل کد:
کامپایلر این کد را به دستوراتی تبدیل میکند که سی پی یو میتواند اجرا کند. این دستورات میتوانند به شکل زیر باشند (به زبان ماشین):
MOV eax, [a] ; بارگذاری عدد اول در ثبات eax
ADD eax, [b] ; افزودن عدد دوم به eax
3. اجرای دستورات توسط سی پی یو:
سی پی یو این دستورات را اجرا میکند. در اینجا،
MOV و ADD دستورات سادهای هستند که سی پی یو را راهنمایی میکنند تا دادهها را از حافظه بارگذاری کرده و آنها را جمع کند.### نتیجه
سی پی یو به خودی خود نوع دادهها را شناسایی نمیکند. این برنامهنویس است که نوع دادهها را تعریف میکند و کامپایلر است که این اطلاعات را به دستورات قابل فهم برای سی پی یو تبدیل میکند. حافظه فقط دادهها را به صورت بیت ذخیره میکند و سی پی یو این بیتها را بدون توجه به نوع آنها پردازش میکند. بنابراین، مدیریت صحیح نوع دادهها بر عهده برنامهنویس و کامپایلر است.
### خلاصه
- برنامهنویس: نوع دادهها را در کد منبع تعریف میکند.
- کامپایلر: کد منبع را تجزیه و تحلیل کرده و دستورات مناسب برای سی پی یو تولید میکند.
- حافظه: دادهها را به صورت بیت ذخیره میکند و نوع دادهها را نمیداند.
- سی پی یو: دستورات را اجرا میکند و بیتها را بدون توجه به نوع آنها پردازش میکند.
#data_types
@Syntax_fa
👍12
سودوکد (Pseudocode) چیست و چه کمکی به ما میکند؟
https://blog.faradars.org/what-is-pseudocode/
#pseudocode
@Syntax_fa
https://blog.faradars.org/what-is-pseudocode/
#pseudocode
@Syntax_fa
فرادرس - مجله
شبه کد (Pseudocode) چیست و چه کمکی به ما میکند؟
داشتن تفکر برنامهنویسی به ما کمک میکند که مسائل را به الگوریتمهایی که آنها را حل میکنند بشکنیم. در این مقاله با مفهوم شبه کد آشنا خواهیم شد.
👍6