uz
Feedback
CodeCrafters

CodeCrafters

Kanalga Telegram’da o‘tish
710
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
Ma'lumot yo'q30 kunlar
Postlar arxiv
در ادامه مباحث میکروسرویس و حکمرانی soa و سیاست‌های آن ما نیازمند یه چارت سازمانی هستیم تا با دیدن ان بتوان به موحودیت soa پی
در ادامه مباحث میکروسرویس و حکمرانی soa و سیاست‌های آن ما نیازمند یه چارت سازمانی هستیم تا با دیدن ان بتوان به موحودیت soa پی برد وظایف و خواستگاه هر نقش مشخص باشد در این تصویر یک نمونه از چارت سازمانی رو میبنیم در ادامه به تعریف هر یک از نقش‌های سازمانی و حکمرانی soa میپردازیم #microservice #soa @code_crafters

سلامت روانی بخش مهمی از شخصیت انسان رو میسازه من بارها گفتم مشکلات روانی با پول درست نمیشه، واقعیت اینه مشکلات روانی هیچگاه درمان نمیشن منتها با شناخت و مراقبت میشه کنترلش کرد و اگه این روند رو ترک کنید اون مشکل روانی مجدد ظاهر میشه من در دوره خدمت سربازی تو مرز بودم زمانی که داعش به عراق حمله کرد، وضعیت بشدت بدی بود، تنش و فشار زیادی داشتیم بابت احتمال حمله و ورود داعش به ایران، تداوم وضعیت و عدم رسیدگی به شرایط روحی و روانی خود من دچار فوبیا شدم (خوابم سبکه با کوچکترین صدایی بیدار میشم، در هنگام مبتلا شدنم به فوبیا هنگام خواب با کوچکترین صدایی با ترس وحشتناکی از اینکه قراره کشته بشم بیدار میشدم) به پزشک روان شناس پادگان رجوع کردم و تونستم اون روزها رو پشت سر بزارم چندشب پیش خواب بودم که همخونه‌ایم ناخواسته صدا وسایلش اومد و با همون ترس دوران سربازی مجدد بیدار شدم همون حس کشته شدن برنامه‌نویسی و حوزه نرم افزار یکی از شغلهای بیماری زای ذهنی و روانی هستش اگه از خودتون مراقبت نکنید سلامت فکری و روانیتون در معرض و خطر بزرگی قرار داره (سوا از بیماری‌های جسمی)

گاهی وقت‌ها یه هدیه یه کادو و یه امانت میتونه حال آدمی رو درمان کنه کتابی که میخواستم بالاخره به دستم رسید و مشتاق به خوندنش
گاهی وقت‌ها یه هدیه یه کادو و یه امانت میتونه حال آدمی رو درمان کنه کتابی که میخواستم بالاخره به دستم رسید و مشتاق به خوندنش هستم، نمیدونم چرا ولی همیشه در بدترین لحظات و دوره‌های فکریم مطالعه اندیشمندان غربی آرامش بخش هست برام و من رو به اون دایره امنم مجدد میرسونه، من نمیگم اندیشه شرق بد یا ناقص هست، اما یک‌ موضوع اذیتم میکنه ،محدودیت در پرسش و بیان و بازنگری یک موضوع در اندیشه شرق #free #book @code_crafters

یه دیونه‌ای از یه خیابونی داشت میدوید ،مردم تو خیابون هم ناخوداگاه دنبالش دویدن مقصر اون دیونه نبود، مقصر ساده بودن مردم بود حالا اومدن میگن با کلیک کردن پولدارتون میکنیم ،نمیگم دروغ میگن اتفاقا از سادگی مردم میشه پول خوبی در آورد(نمونه اون زیاده، مثه ماجرای بورس، مثه داستان فارکس، مثه نتورکینگ ، مثه خودروهایی که هیچوقت تحویل داده نشد، مثه مسکن مهرهای نا امنی که در بالاترین حد ممکن فروخته شد و البته این اواخر هم کمپانی کوروش) حقیقتا میشه از سادگی مردم پول درآورد رابرت کیوساکی حرف خوبی میزنه تو یکی از کتاب‌هاش، میگه هرچی که نسبت بهش حس خوبی داشتی رو بخر ،مطمئن باش یکعده دیگه هم هستن که مثه تو نسبت به اون چیز حس خوبی دارن و حاضر میشن بابتش پول بدن و از تو بخرنش، این ارزها رو هم بالاخره میخرن با هر قیمتی فرقی نداره بالاخره یکعده دورهم هستید که بهش حس خوبی دارید، ولی همین تداوم رو سر یک موضوع تخصصی هم داشته باشید نه شاید در کوتاه مدت ،ولی در بلند مدت ارزش بیشتری رو براتون خلق میکنه منتها جذابیت کلیک کردن در این هست که حس خلق ارزش لحظه‌ای رو بهمون میده(حتی اگه پوچ و تو خالی باشه برامون) شبیه مردم ساده‌ای که تو خیابون دنبال اون دیونه دویدن که ببینن چیشده با اینکه همه میدونستن دیونه بود و چیزی قرار نیست اتفاق بیافته اما کنجکاو بودن ببینن تهش چی میشه من باز هم میگم از سادگی مردم میشه پول ساخت

ربات Loyalty شروع به کار کرد. 🎉 برخی امکانات ربات: 💸پلن های مقرون به صرفه ⚡️ تعویض آنی سرور 🎁 کانفیگ رایگان ماهیانه 🫰پرداخت ریالی و مستقیم 🌐 لوکیشن های متنوع (🇩🇪🇬🇧🇫🇷🇨🇦) 🥇بدون محدودیت کاربر برای دریافت کانفیگ یکماهه رایگان، وارد ربات ما شوید: 💠 @LoyalShopRobot

@LoyalShopRobot بچه‌ها برید داخل این ربات استارت بزنید و کانفیگ هدیه رو بزنید ده گیگ یکماهه هدیه بگیرید ازتون هم ممنون میشم اگه جایی وصل نشد روی اپراتور خاصی و یا مشکلی بود اطلاع بدین که بررسی و درست بشه

خلاصه: اول-VTGate: سرور پراکسی برای مسیریابی کوئری‌ها دوم-Key-Value Database: سرور پیکربندی برای مدیریت توپولوژی سوم-VTTablet: سرور جانبی که روی هر MySQL اجرا می‌شه اونا Vitess رو با زبان Go نوشتند و اون رو اوپن سورس کردند. همچنین از MariaDB هم پشتیبانی می‌کنه. یوتیوب تونست با ترکیب رVitess و MySQL به 2.49 میلیارد کاربر رو مدیریت کنه. این مطالعه موردی نشون می‌ده که MySQL می‌تونه به راحتی ترافیک در مقیاس اینترنت و کاربران زیاد  رو مدیریت کنه.

خب سلام دوباره در ادامه مجموعه پست های دیتابیس تو این یکی قراره با معماری Vitess اشنا بشیم و متوجه بشیم یوتوب چگونه 2.49 میلایرد کاربر خودش رو با MySQL هندل میکنه. توجه این پست بر اساس تحقیق هستش و ممکنه با پیاده‌سازی واقعی فرق داشته باشه. روزی روزگاری، سه نفر که تو PayPal کار می‌کردن، تصمیم گرفتن یه سایت دوستیابی درست کنن. اما مدل کسب‌وکارشون شکست خورد. برای همین ایده‌شون رو عوض کردن و یه سایت اشتراک‌گذاری ویدئو درست کردن و اسمش رو گذاشتن یوتیوب. اونا عناوین ویدئوها، توضیحات و اطلاعات کاربران رو تو MySQL ذخیره کردن. وقتی کاربرهای بیشتری به سایت پیوستن، اونا MySQL رو به حالت رهبر-دنبال‌کننده (leader-follower replication topology) تنظیم کردن تا بتونن بهتر مقیاس‌پذیری کنن. اما تکرار در MySQL تک‌نخی (single-threaded) است. بنابراین دنبال‌کننده‌ها نمی‌تونستن در عملیات نوشتن شدید به رهبر برسند و داده‌های جدید رو به‌روز کنن. با این حال، نرخ رشدشون خیلی زیاد بود و به یک میلیارد کاربر رسیدن و به دومین سایت پربازدید در جهان تبدیل شدن. بنابراین با اضافه کردن یه حافظه نهان (cache) مقیاس‌پذیری کردن و همه رویدادها رو از لاگ باینری MySQL (binary log) بارگذاری کردن. این یعنی تکرار به حافظه وابسته شد و سرعت بیشتری پیدا کرد. اگرچه این کار به طور موقت مشکل مقیاس‌پذیری اونا رو حل کرد، مشکلات جدیدی به وجود اومد. در اینجا به برخی از اونا اشاره می‌کنم: 1. پارتیشن‌بندی (Sharding): اولین کاری که باید کرد این که MySQL باید پارتیشن‌بندی بشه تا نیازهای ذخیره‌سازی رو مدیریت کنه. اما بعد از پارتیشن‌بندی، معاملات (transactions) و پیوستن جداول (joins) سخت میشه. بنابراین منطق برنامه (application logic) باید این رو مدیریت کنه. این یعنی منطق برنامه باید بفهمه که کدوم پارتیشن‌ها رو باید پرس‌وجو کنه و این باعث افزایش احتمال زمان خرابی (downtime) میشه. 2. عملکرد (Performance): و(leader-follower replication topology) باعث میشه که داده‌های قدیمی از دنبال‌کننده‌ها خونده بشه. بنابراین منطق برنامه باید خوندن داده‌ها رو به رهبر هدایت کنه اگر داده‌های جدید لازم باشه. و این نیاز به پیاده‌سازی منطق اضافی داره. 3. حفاظت (Protection): ریسک اینکه برخی پرس‌وجوها خیلی طول بکشه تا داده‌ها رو برگردونن وجود داره. همچنین تعداد زیادی از اتصالات MySQL به طور همزمان می‌تونه مشکل‌ساز بشه و ممکنه دیتابیس رو از کار بندازه. اونا می‌خواستن یه لایه انتزاعی روی MySQL برای سادگی و مقیاس‌پذیری ایجاد کنند. بنابراین Vitess رو ساختن. در اینجا نحوه ارائه مقیاس‌پذیری بالا توسط Vitess رو توضیح می‌دم: 1. تعامل با پایگاه داده:(Interacting with Database) اونا یه سرور جانبی (sidecar server) جلو هر نمونه MySQL نصب کردن و اسمش رو گذاشتند VTTablet. این سرور جانبی به اونا اجازه می‌داد: - کنترل سرور MySQL و مدیریت پشتیبان‌گیری از پایگاه داده - بازنویسی کوئری‌های سنگین با اضافه کردن محدودیت (limit clause) - کش کردن داده‌های پر دسترس برای جلوگیری از مشکل Thundering Herd 2. مسیریابی کوئری‌ها(Routing SQL Queries): یه سرور پراکسی بدون حالت (stateless proxy server) برای مسیریابی کوئری‌ها تنظیم کردند و اسمش رو گذاشتند VTGate. این سرور پراکسی بهشون اجازه می‌داد: - پیدا کردن VTTablet صحیح برای مسیریابی کوئری بر اساس اسکیما و طرح پارتیشن‌بندی - پایین نگه داشتن تعداد اتصالات MySQL از طریق تجمیع اتصالات (connection pooling) - صحبت با لایه کاربردی به پروتکل MySQL - عمل کردن مانند یه سرور MySQL یکپارچه برای سادگی - محدود کردن تعداد معاملات در یک زمان برای عملکرد بهتر همچنین برای مقیاس‌پذیری بیشتر، سرورهای VTGate متعددی راه‌اندازی کردند. 3. اطلاعات حالت: تصویر چهارم در کامنت ها یه پایگاه داده توزیع‌شده کلید-مقدار (distributed key-value database) راه‌اندازی کردند تا اطلاعات مربوط به اسکیما، طرح‌های پارتیشن‌بندی و نقش‌ها رو ذخیره کنه. این پایگاه داده همچنین روابط بین پایگاه‌های داده مثل رهبر و دنبال‌کننده‌ها رو مدیریت می‌کنه. در ادمه از Zookeeper برای پیاده‌سازی این پایگاه داده کلید-مقدار استفاده کرندند. علاوه بر این، این داده‌ها رو در VTGate برای عملکرد بهتر کش میکردند. برای به‌روزرسانی پایگاه داده کلید-مقدار، یه سرور HTTP راه‌اندازی کردند و اسمش رو گذاشتند VTctld. این سرور فهرست کامل سرورها و روابطشون رو می‌گیره و سپس پایگاه داده کلید-مقدار رو به‌روزرسانی می‌کنه. #database #postgresql @code_crafters

100X Scaling_ How Figma Scaled its Databases.pdf3.46 MB

یکی از سیاست‌های حکمرانی soa این است که سرویس ‌های ما قابل اجرا بر روی فضاهای ابری (cloud) باشد،این یک الزام است، فضاهای ابری زیاد و متنوعی وجود دارد که شما میتوانید از آنها استفاده کنید اما این بسته به نیاز شما و سرویس‌های شما دارد در این پست مسائلی مطرح میکنیم که با استفاده از آن تشخیص دهید کدام فضای ابری مناسب سرویس شماست ابتدا بیایید مختصر در خصوص انواع فضای ابری صحبت کنیم:
ارایه دهنده software as a service (Saas):
هنگامی که از یک محیط SaaS استفاده می کنید،به یک برنامه یا سرویس کامل که در جایی آنلاین میزبانی شده است دسترسی خواهید داشت.  شما برنامه‌ها یا خدمات خود را در این ابر مستقر نمی‌کنید،بلکه از آنچه ارائه‌دهنده SaaS ارائه می‌کند استفاده می‌کنید.Google Docs، Salesforce و Office 365 همگی نمونه‌هایی از SaaS هستند

ارائه دهنده platform as a service (PaaS):
-اگر می خواهید برنامه های خود را مستقر کنید، ممکن است از PaaS استفاده کنید.با یک PaaS یک پلت فرم محاسباتی کامل یا پشته نرم افزاری به شما پیشنهاد می شود که می توانید از آن برای ایجاد برنامه ها و خدمات خود استفاده کنید.Google Apps، AWS آمازون،Windows Azure مایکروسافت و بسیاری دیگر این سرویس را ارائه می دهند

ارائه دهنده infrastructure as a service (IaaS):
ارائه دهنده IaaS زیرساخت های محاسباتی مانند منابع CPU، ذخیره سازی داده ها و IO شبکه را فراهم می کند.اغلب PaaS از خدمات ارائه شده توسط IaaS استفاده می کند.ارائه دهندگان IaaS زیادی وجود دارد:Cloud.com، Rackspace، Amazon، و HP به جز چند مورد
با توجه به سیاست‌های soa بهتر است بر روی PaaS تمرکز کنید و با استفاده از پارامترهای زیر و خدماتی که provider به ما می‌دهند انتخاب کنیم: عملکرد همه ارائه دهندگان ابر عملکرد یکسانی را ارائه نمی دهند.برخی ممکن است فقط منابع محاسباتی را ارائه دهند،در حالی که برخی دیگر یک پشته نرم افزار کامل را ارائه می دهند وقتی به یک ارائه دهنده ابر احتمالی نگاه می کنید، باید عملکرد مورد نیاز خود را تعیین کنید.آیا به یک پایگاه داده آنلاین،قابلیت ایمیل یا شاید یک سیستم پیام رسانی نیاز دارید؟ سعی کنید ارائه دهنده ای پیدا کنید که تمام این الزامات را پوشش دهد.اگر نتوانستید یکی را پیدا کنید،سعی کنید تعدادی را پیدا کنید که به خوبی با یکدیگر ادغام شوند پشته نرم افزار همه سرویس ها با استفاده از یک فناوری ایجاد نمی شوند.هنگام انتخاب یک ارائه‌دهنده ابری،به دنبال پشته توسعه‌تان باشید و اگر ویژگی‌های اضافی(مانند ذخیره‌سازی مبتنی بر کلید/مقدار)را ارائه می‌دهد، به دنبال یکی از APIهایی باشید که به زبان شما یک API ارائه می‌کند قابل حمل بودن داده ها وقتی خدمات خود را در فضای ابری اجرا می کنید،از گزینه های ذخیره سازی ارائه شده توسط ابر استفاده کنید و مطمئن شوید که این ارائه دهنده به شما اجازه می دهد تا داده های خود را به راحتی صادر کنید.اگر اینطور نیست، می توانید به سرعت در یک ارائه دهنده ابر خاص قفل شوید مقیاس پذیری یکی از مزیت های مهم استفاده از ارائه دهنده ابر این است که وقتی برنامه شما رشد می کند،لازم نیست نگران اضافه کردن منابع اضافی باشید.هنگامی که به دنبال ارائه دهنده ابری هستید، به دنبال ارائه دهنده ای باشید که قابلیت مقیاس پذیری شفاف را ارائه می دهد.اگر منابع مورد نیاز شما افزایش یابد،ارائه‌دهنده ابر باید به طور خودکار بتواند مقیاس را افزایش دهد.اگر منابع مورد نیاز شما کاهش یابد،ارائه دهنده ابر باید مقیاس را کاهش دهد امنیت داده وقتی از یک ارائه دهنده ابر استفاده می کنید،اطلاعات حساس خود را در ابر ذخیره می کنید.این داده ها حتی ممکن است در کشور دیگری ذخیره شوند.هنگامی که یک ارائه دهنده ابر را انتخاب می کنید،مطمئن شوید که گزینه های امنیت داده ارائه شده توسط این ارائه دهنده با نیازهای شما و مشتریان شما مطابقت دارد خط‌مشی پشتیبان‌گیری اگر از پلتفرم ابری برای ذخیره‌سازی استفاده می‌کنید،تعیین خط‌مشی‌های پشتیبان‌گیری ارائه‌دهنده ابر مهم است.آیا آنها به طور منظم از داده ها نسخه پشتیبان تهیه می کنند،آیا پایگاه داده ها تکرار می شوند یا اینکه شما کنترل بازیابی نسخه های پشتیبان را خودتان دارید؟ قابلیت مدیریت پلتفرم ابری باید به راحتی توسط شما مدیریت شود.باید یک رابط مدیریتی وجود داشته باشد که با آن بتوانید به راحتی میزان استفاده از منابع خدمات خود را مشاهده کنید و عملکردهای اضافی اضافه کنید.همچنین باید بتوانید به راحتی سوابق ثبت و ممیزی برنامه خود را مشاهده کنید هزینه همیشه یک عامل مهم است.ببینید برای خدمات ارائه شده چه چیزی باید پرداخت کنید.آیا حداقل قیمتی وجود دارد که باید هر ماه بپردازید؟آیا وقتی از منابع زیادی استفاده می کنید، میانگین قیمت شما کاهش می یابد؟ #microservice #soa @code_crafters

فروید معتقد بود که ما در حال فرار از رنج‌هایمان هستیم با این تعبیر زندگی جز رنج چیزی نیست، رنج‌هایی که موجب میشن ما رشد کنیم البته شاید و اما فلسفه پایان بوکوفسکی گرایانه شاید زیباتر باشد، هرچیزی که تمام شود لذت آن بیشتر است، مانند تحویل یک پروژه، اتمام یک کار،درمان یک درد یا پایان یک زندگی و مرگ #free @code_crafters

در ادامه پست ها راجب استفاده از ایندکس تو این پست قراره نحوه استفاده از Multi-Column Indexes ها در جنگو ببنیم. همچنین اگه نمیدونید که Multi-Column Indexe چیه و دقیقا چیکار میکنه, اول این پست رو مطالعه کنید. 1. تعریف مدل با ایندکس چندستونی فرض کنید یک مدل به نام Employee داریم که شامل فیلدهای first_name، last_name، و department_id است. برای ایجاد ایندکس چندستونی بر روی last_name و department_id، می‌توانید از ویژگی Meta در مدل استفاده کنید.

from django.db import models

class Employee(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    department_id = models.IntegerField()

    class Meta:
        indexes = [
            models.Index(fields=['last_name', 'department_id']),
        ]

    def __str__(self):
        return f'{self.first_name} {self.last_name}'
 
در این کد، یک ایندکس چندستونی بر روی last_name و department_id تعریف شده است. 2. استفاده از ایندکس در کوئری‌ها پس از ایجاد ایندکس، می‌توانید کوئری‌هایی بنویسید که از این ایندکس بهره‌مند شوند. به عنوان مثال: مثال 1: جستجو بر اساس هر دو ستون

from .models import Employee

employees = Employee.objects.filter(last_name='Doe', department_id=5)
 
در این کوئری، هر دو ستون last_name و department_id استفاده شده‌اند، بنابراین ایندکس به طور کامل بهره‌برداری می‌شود و کارایی جستجو افزایش می‌یابد. مثال 2: جستجو بر اساس ستون اول

employees = Employee.objects.filter(last_name='Doe')
 
در این کوئری، تنها ستون last_name استفاده شده است که ستون اول ایندکس است. بنابراین ایندکس هنوز هم می‌تواند کارایی جستجو را بهبود بخشد. مثال 3: جستجو بر اساس ستون دوم

employees = Employee.objects.filter(department_id=5)
 
در این کوئری، تنها ستون department_id استفاده شده است که ستون دوم ایندکس است. این کوئری نمی‌تواند از ایندکس چندستونی بهره‌برداری کند و به احتمال زیاد از اسکن کامل جدول استفاده خواهد کرد. 3. تحلیل کارایی برای تحلیل کارایی کوئری‌ها و مشاهده اینکه آیا ایندکس‌ها استفاده می‌شوند یا خیر، می‌توانید از ابزارهایی مانند django-debug-toolbar استفاده کنید که اطلاعات کوئری‌ها و ایندکس‌ها را نمایش می‌دهد. نتیجه‌گیری با استفاده از ایندکس‌های چندستونی در Django، می‌توانید کارایی جستجوهای پیچیده را بهبود ببخشید. با تعریف درست ایندکس‌ها و استفاده بهینه از آن‌ها در کوئری‌ها، می‌توانید به طور قابل توجهی زمان پاسخ‌دهی دیتابیس را کاهش دهید. #database #postgresql @code_crafters

دیلی(daily)، جلسات سرپایی روزانه در اسکرام کلا باید ۱۵ دقیقه برای کل تیم طول بکشه نهایتا هر نفر باید یک دقیقه فشرده سه موضوع
دیلی(daily)، جلسات سرپایی روزانه در اسکرام کلا باید ۱۵ دقیقه برای کل تیم طول بکشه نهایتا هر نفر باید یک دقیقه فشرده سه موضوع رو مطرح کنه، چکار کرده ،چکاری میخواهد انجام بده و چه چالشی داره یا حس میکنه گویا این دوستمون بجای کل تیم نه بلکه بجای کل شرکت گزارش داده(خیلی دلش پر بوده از تسک‌ها) این حجم گزارش درواقع داکیومنت سرویس هستش نه گزارش روزانه #fun @code_crafters

خب گروه زبان کانال هم راه انداختیم و مدرس هم یکی از اساتید زبان هستش که از بچه‌های خودمون هستش لینک گروه "آموزش و یادگیری زبان‌های مورد‌علاقه" https://t.me/tanda_fav_languages_group

در ادامه مباحث مربوط به میکروسرویس و sso اینبار با یک پلتفرم جامعتر و بزرگتر با نام openam آشنا میشویم تعریف OpenAM چیست؟ در واقع OpenAM ( Open Access Management) یک پلتفرم مدیریت هویت و دسترسی (IAM) منبع باز است که توسط ForgeRock ارائه می‌شود. این پلتفرم مجموعه‌ای جامع از قابلیت‌ها را برای مدیریت چرخه عمر هویت، احراز هویت، مجوزها، دسترسی و انطباق ارائه می‌دهد. OpenAM به طور گسترده در سازمان‌های مختلف، از جمله شرکت‌های دولتی، موسسات آموزشی، و ارائه دهندگان خدمات مالی، برای ایمن‌سازی برنامه‌ها و منابع آنلاین آنها استفاده می‌شود. برخی از ویژگی‌های کلیدی OpenAM عبارتند از: * مدیریت هویت: شامل ایجاد، مدیریت و حذف کاربران و گروه‌ها، ذخیره‌سازی اطلاعات هویت، و همگام‌سازی با دایرکتوری‌های خارجی. * احراز هویت: شامل پشتیبانی از انواع مختلف روش‌های احراز هویت، مانند نام کاربری و رمز عبور، احراز هویت دو عاملی (2FA)، و احراز هویت مبتنی بر بیومتریک. * مجوزها و دسترسی: شامل تعیین اینکه چه کسی می‌تواند به چه منابعی دسترسی داشته باشد و چه عملیاتی را می‌تواند انجام دهد. * انطباق: شامل پشتیبانی از الزامات انطباق مختلف، مانند HIPAA، PCI DSS و GDPR. *مبحث SSO (Single Sign-On): به کاربران اجازه می‌دهد تا با یک بار ورود به سیستم به چندین برنامه دسترسی داشته باشند. *دروازه API: امکان ایمن سازی و مدیریت دسترسی به API ها را فراهم می‌کند. * تجزیه و تحلیل: گزارش‌ها و بینش‌هایی در مورد فعالیت‌های کاربران و دسترسی به برنامه‌ها ارائه می‌دهد. پلتفرم OpenAM به صورت زیر قابل استقرار است: * محلی: در زیرساخت‌های خودتان نصب و اجرا می‌شود. * ابر: در یک محیط ابری مانند AWS، Azure یا Google Cloud Platform (GCP) میزبانی می‌شود. * هیبریدی: ترکیبی از استقرار محلی و ابری. پلتفرم OpenAM برای چه کسانی مناسب است؟ در واقع OpenAM برای سازمان‌هایی که نیاز به یک پلتفرم IAM قدرتمند، انعطاف‌پذیر و مقیاس‌پذیر برای مدیریت هویت، دسترسی و انطباق در برنامه‌ها و منابع آنلاین خود دارند، مناسب است. این پلتفرم به ویژه برای سازمان‌های بزرگ با نیازهای IAM پیچیده مناسب است. مزایای استفاده از OpenAM: * امنیت: OpenAM به محافظت از برنامه‌ها و منابع شما در برابر دسترسی غیرمجاز، نقض داده‌ها و سایر تهدیدات امنیتی کمک می‌کند. * انطباق: OpenAM به شما کمک می‌کند تا با الزامات انطباق مختلف مانند HIPAA، PCI DSS و GDPR مطابقت داشته باشید. * کارایی: OpenAM می‌تواند فرآیندهای احراز هویت و مجوز را خودکار کند و به شما در صرفه‌جویی در زمان و منابع کمک کند. * قابلیت انعطاف‌پذیری: OpenAM می‌تواند با انواع مختلف برنامه‌ها، سیستم‌ها و دایرکتوری‌ها ادغام شود. * مقیاس‌پذیری: OpenAM می‌تواند برای پشتیبانی از تعداد زیادی از کاربران و برنامه‌ها مقیاس‌پذیر باشد. معایب استفاده از OpenAM: * پیچیدگی: OpenAM می‌تواند برای نصب، پیکربندی و مدیریت پیچیده باشد. * هزینه: OpenAM می‌تواند یک پلتفرم گران‌قیمت باشد، به خصوص برای پیاده‌سازی‌های بزرگ. * نیاز به تخصص: ممکن است برای استفاده موثر از OpenAM به تخصص فنی خاصی نیاز داشته باشید. #micriservice #sso #iam #sam #openam @code_crafters

https://play.google.com/store/apps/details?id=app.hiddify.com این برنامه رو نصب کنید و در قسمت کامنت‌های آن دوستان براتون کلید میزارن و اپدیت میکنن #vpn #free @code_crafters

خب در ادامه پست های استفاده از ایندکس در جئداول دیتابیس قرار در این پست با Multi-Column Indexes اشنا بشیم/ ایندکس‌های چندستونی (Multi-Column Indexes) برای بهبود کارایی جستجو در جداولی که به طور مکرر از چندین ستون در کوئری‌های خود استفاده می‌کنند، بسیار مفید هستند. این نوع ایندکس‌ها بر روی بیش از یک ستون از جدول ایجاد می‌شوند و می‌توانند به طور همزمان ترتیب چند ستون را برای بهبود سرعت جستجو حفظ کنند. ویژگی‌های ایندکس‌های چندستونی 1. ترتیب ستون‌ها:    - ترتیب ستون‌هایی که در ایندکس تعریف می‌شوند بسیار مهم است.    - ایندکس ابتدا بر اساس ستون اول مرتب می‌شود و سپس در داخل هر مقدار ستون اول، بر اساس ستون دوم و به همین ترتیب ادامه می‌یابد.    - انتخاب ترتیب مناسب ستون‌ها بر اساس الگوهای کوئری معمول، می‌تواند تاثیر زیادی بر کارایی جستجو داشته باشد. 2. بهبود کارایی:    - ایندکس‌های چندستونی می‌توانند کارایی کوئری‌هایی را که از این ستون‌ها در شرط WHERE، ORDER BY، و GROUP BY استفاده می‌کنند، بهبود بخشند.    - در کوئری‌هایی که فقط از ستون اول ایندکس استفاده می‌کنند نیز می‌تواند بهبود کارایی ایجاد کند. 3. محدودیت‌ها:    - ایندکس‌های چندستونی می‌توانند فضای بیشتری را نسبت به ایندکس‌های تک‌ستونی اشغال کنند.    - به‌روزرسانی‌های جداولی که دارای ایندکس‌های چندستونی هستند می‌توانند زمان‌برتر باشند به دلیل نیاز به بروزرسانی ساختار ایندکس. مثال‌ها و کد فرض کنید یک جدول به نام employees داریم که شامل ستون‌های first_name، last_name، و department_id است و می‌خواهیم یک ایندکس چندستونی بر روی ستون‌های last_name و department_id ایجاد کنیم. ایجاد ایندکس چندستونی در SQL، ایجاد یک ایندکس چندستونی به شکل زیر است:
CREATE INDEX idx_lastname_department ON employees (last_name, department_id);
این ایندکس ابتدا بر اساس last_name و سپس بر اساس department_id مرتب می‌شود. استفاده از ایندکس چندستونی در کوئری‌ها مثال 1: جستجو بر اساس هر دو ستون
SELECT * FROM employees WHERE last_name = 'Doe' AND department_id = 5;
در این کوئری، هر دو ستون last_name و department_id استفاده شده‌اند، بنابراین ایندکس idx_lastname_department به طور کامل بهره‌برداری می‌شود و کارایی جستجو افزایش می‌یابد. مثال 2: جستجو بر اساس ستون اول
SELECT * FROM employees WHERE last_name = 'Doe';
در این کوئری، تنها ستون last_name استفاده شده است که ستون اول ایندکس است. بنابراین ایندکس هنوز هم می‌تواند کارایی جستجو را بهبود بخشد. مثال 3: جستجو بر اساس ستون دوم
SELECT * FROM employees WHERE department_id = 5;
در این کوئری، تنها ستون department_id استفاده شده است که ستون دوم ایندکس است. این کوئری نمی‌تواند از ایندکس idx_lastname_department بهره‌برداری کند و به احتمال زیاد از اسکن کامل جدول استفاده خواهد کرد. به‌روزرسانی و حذف ایندکس برای حذف یک ایندکس چندستونی:
DROP INDEX idx_lastname_department ON employees;
نکات مهم 1. انتخاب ستون‌ها: ستون‌هایی را انتخاب کنید که در بیشتر کوئری‌ها استفاده می‌شوند و ترتیب آنها را بر اساس بیشترین تاثیر بر کارایی جستجو تعیین کنید. 2. نگهداری و به‌روزرسانی: با افزایش تعداد ایندکس‌ها، عملیات نوشتن (INSERT, UPDATE, DELETE) کندتر می‌شود. به همین دلیل، باید توازن مناسبی بین تعداد ایندکس‌ها و نیازهای جستجو برقرار کرد. 3. تحلیل کارایی: استفاده از ابزارهای تحلیل کارایی (مانند EXPLAIN در SQL) برای بررسی تاثیر ایندکس‌ها بر کوئری‌ها مفید است. با توجه به این نکات، ایندکس‌های چندستونی می‌توانند به طور قابل توجهی کارایی دیتابیس شما را بهبود بخشند اگر به درستی طراحی و استفاده شوند. #database #postgresql

به یک نفر جهت مشاوره فنی نرم افزار نیازمندم یه توضیح کلی بدم فقط قراره مشاوره بدید(کد نمیزنید و سیستم طراحی نمیکنید) کار زیاد هم نداریم که بگم روزی n ساعت ازتون وقت بگیره، فکر کنید یکسری جلسات ماهیانه با هیات مدیره برگزار میشه و راجب شرکت و پروژه‌هاش حرفایی زده میشه که مالکان پروژه یک شرکت بزرگ هستند، در این جلسات مفاهیمی مطرح میشه بحث‌هایی صورت میگیره، و به شما منتقل میشه موضوعات فنیش فقط و شما این مسایل رو سبک و سنگین میکنید و توضیحات جامع و کارآمد به هیات رییسه میدید، پیشنهادی هم باشه میگید فرض کنید برای یک نفر که درکی از سیستم نرم افزاری نداره راجب سیستم توضیح میدید، من خودم هم کنارتون هستم و بهتون کمک میکنم انتظارم ازتون چیه؟؟؟ ۱- فارغ‌التحصیل رشته مهندسی کامپیوتر باشه (مهندسی نرم افزار یا فناوری اطلاعات یا علوم کامپیوتر) حداقل لیسانس(دیگه جوری نباشه که واحدهای تخصصی رو با نمره ده پاس کرده باشید ازتون کارنامه مدرسه نمیخوام ولی این هم نباشید که راجب سیستم من بهتون توضیحات پایه بدم) ۲- به یک زبان برنامه نویسی حداقل تسلط داشته باشه (قرار نیست کد بزنید ولی حداقل یک زبان مهندسی باشه- js , php و ... بکار نمیاد یک زبان جامع مثه جاوا، پایتون، سی‌‌شارپ، گولنگ و ... باشه بهتره) دوستان فول‌استک کار هم فاصله خودشون رو رعایت کنند ۳- تحلیل و بررسی سیستم بلد باشید(برامون قرار نیست دیتا لایر طراحی کنید یا معماری بنویسید، ولی حداقل بلد باشید کلاس دیاگرام ساده بسازید، یک ‌use case کوچیک درست کنید، برام uml مبتدی طراحی کنید، اگه bpm بلد باشید دوست خوب من هستید نبودید هم اشکالی نداره ،انتظار ifw رو هم ازتون ندارم) دیگه نیایید روی کاغذ طرح بدین حداقل با visio بلد باشید یچیزی درخور بهم بدین، انتظار bizagi , power designer رو هم ازتون ندارم ۴- دیتابیس‌ها رو خوب بشناسید sql و no sql ،دیگه این نباشه تو هر سیستمی بگید پستگرس خوبه و جوابگو، همه این رو بلدن ، حداقل بتونید بر اساس سیستم بگید چرا باید از فلان دیتابیس بهره ببریم ۵- حداقل الگوهای معماری‌های معروف نرم افزار رو بشناسه و بلد باشه (میکروسرویس، لایه‌ای، کلاینت و سرور، ریز هسته و رویداد محور) ۶- نقدپذیر باشه، خوش بیان باشه، متین باشه، خودکنترلگر باشه، شنونده و گوینده خوب باشه، دارای تمرکز بالا باشه اگه اهل کتاب هم باشید دوستای خوبی میشیم ۶- سن بالای ۲۵، اگر هم در تهران باشه که حداقل ماهی یبار بیایید شرکت باهم حرف بزنیم راجب مسائل عالی میشه، در دسترس باشه پیام ندم بهش بعد یک هفته با کبوتر نامه رسان بهم پاسخ بده ۷- بروز باشه و مشتاق یادگیری چیزهای جدید(فقط به سئوی گوگل اکتفا نکنه ،بابت یک‌موضوع کتاب نمیخونه حداقل مقاله بخونه) ۸- تجربه کاری هم داشته باشید(این باور رو هم نداشته باشه که فروشگاه آنلاین تهشه دیگه)دانشجو هم هستید مشکلی نیست چون قرار نیست هر روز بیاید روی گل همدیگه رو ببینیم در نهایت هم بگم و یادآوری کنم دانشگاه رفته باشه (مهندسی نرم افزار، فناوری اطلاعات، علوم کامپیوتر)یکدفعه دیدید گفتم مدرک دانشگاهی ارائه کنید, دلیل و اهمیتش هم کاملا مشخص هست کارتون هم از دوماه دیگه شروع میشه ،اگه شرایط رو داشتید و دوست داشتین بهم پیام بدید یکم باهم حرف بزنیم @behzad_azadi @code_crafters

در ادامه مبحث sso و کار با ابزار keycloak و آشنایی با محیط آن میرسیم به این موضوع که چگونه با پایتون با این ابزار کار کنیم یکی از بهترین کتابخانه‌های اون رو در زیر براتون میزارم
https://pypi.org/project/python-keycloak/
دلیل استفاده از این پکیج جهت کار کردن روی سطح پایینتری از کی‌کلاک جهت ترکیب ان با drf و پیاده سازی کردن اندپوینت‌هایی جهت ساخت ui مخصوص خود و جدا شدن از محیط ui خود کی‌کلاک ،در پست قبلی یاد گرفتیم که چگونه realm, client, user بسازیم که دسترسی داشته باشیم از این داده درون این پکیج هم استفاده کنید جهت کار کردن و اعتبار سنجی
اگر به ارور نوع grant برخوردید ابتدا با کنسول لاگین خود کی‌کلاک ورود کرده و مرحله تغییر پسورد رو پشت سر بگذارید، اگر میخواهید به این قسمت برنخورید هنگام ساخت یوزر زمانیکه به تب credentials میروید و برای یوزرتون پسورد ست میکنید گزینه Temporary رو غیر فعال کنید
لازم بذکر میباشد که پکیج جامع django all auth نیز از کی‌کلاک پشتیبانی میکند، دلیل استفاده من از کتابخانه بالاتر انتخاب شخصی و مناسب با درخواست شرکت می‌باشد و نیاز به کد زدن در سطح پایینتری داشتم با امکان کنترل بیشتر بر روی flow موجود در طراحی سیستم در حال حاضر در شرکتمون دارم سرویس sso رو همراه با keycloak بصورت کامل جهت پیاده سازی ui کاستومایز شده بالا میارم ترکیبی از keycloak, drf, python-keycloak ،اگه مدیرعامل شرکت اجازه داد در گیتهاب براتون کامل میزارمش بضورت پابلیک شده، در غیر اینصورت در اولین فرصت یک نسخه ساده و کوچیک ازش رو کد خواهم زد و در گیتهاب خواهم گذاشت تا به درک اولیه از راه اندازی سرویس sso و keycloak در جنگو و پایتون دست پیدا کنید #microservice #sso #keycloak @code_crafters

300012 به بچه ها بگین که به این شماره پیامک بدن برای اینکه روحیه مناسبی برای دادن امتحان نهایی ندارن روابط عمومی آموزش و پرورشه #ارسالی 🔗 @MoallemanNews