Forwarded from Database Labdon
یه اشتباه رایجی که توی کار کردن با دیتابیس MySQL وجود داره اینه که فکر میکنیم دیتا مستقیم روی دیسک ذخیره میشه و از دیسک خونده میشه، اما واقعیت اینه که MySQL یه الگوریتم جالبی برای بهینه کردن پرفورمنس داره تا بتونه پردازش کوئری ها رو به خوبی هندل کنه.
توی این مقاله خیلی ساده flow اجرای یه کوئری رو توضیح دادم که MySQL دقیقا پشت صحنه چه فرآیندی رو انجام میده تا هم پرفورمنس رو حفظ کنه و هم نتیجه رو به کاربر برگردونه. میتونید مقاله رو توی لینک زیر بخونید:
https://farshadth.medium.com/how-mysql-works-behind-the-scenes-72746950cd65
<Farshad Tofighi/>
توی این مقاله خیلی ساده flow اجرای یه کوئری رو توضیح دادم که MySQL دقیقا پشت صحنه چه فرآیندی رو انجام میده تا هم پرفورمنس رو حفظ کنه و هم نتیجه رو به کاربر برگردونه. میتونید مقاله رو توی لینک زیر بخونید:
https://farshadth.medium.com/how-mysql-works-behind-the-scenes-72746950cd65
<Farshad Tofighi/>
Medium
How MySQL Works Behind the Scenes
Many people think MySQL always reads and writes data directly from disk, but in reality, it is designed to minimize disk access and…
Forwarded from Ai000 Cybernetics QLab
گزارش شده چین در حال تحقیق و آموزش است که تسلیحات هدایت شونده توسط هوش مصنوعی مانند کوادها از نحوه رفتار شکارچیان طبیعت مثل گرگ یا شاهین تقلید کنند. در کل به این صورت است که مانند حیوانات شکارچی در حیات وحش مثلا ریزپرنده ها اهداف را به صورت هماهنگ و گروهی تعقیب، مانور بدهند و حمله کنند و حتی در نقش دفاعی، ریزپرندهای مانند رفتار قوشها به شکار پهپاد حمله کننده دیگر برود.
@aioooir | #china
@aioooir | #china
🤯2
Forwarded from CodeCrafters (Behzad Azadi)
معماری به مثابه معنا، نه جداسازی سطحی (در سیستمهای بزرگ و چند لایه)
داخل مهندسی نرم افزار (بخش مفاهیم و طراحی) ما با موضوع ساختار برنامه روبرو هستیم، در مهندسی نرم افزار ساختار سیستم باید گرافی باشه، از ساختار پنکیکی جلوگیری که این ساختار به معنای ورشکستی سیستم تلقی میشه، منظور چیه ؟؟؟ یک مثال ساده بگم، شما چهارتا سرویس دارید این چهار سرویس رو در یک نقطه دسترسی قرار ندید یعنی نگید از پورت هشتاد ورودی برو به همه سرویسها
بیاید مثال عملی تر بزنیم
ما مقادیر:
static
media
UI application(front)
api application(backends)
رو داریم همه اینها رو در ورودی بعد از web server نزارید، باید ساختار گرافی بسازید، به چه شکل؟؟؟
Nginx => static, media, ui, gateway
gateway=> BFF, identity service, cms service
BFF => (first level backends)
جالب شد BFF چیه؟؟؟
اینجا دقیقا جایی هستش که اوج معماری مدرن شروع میشه تفکیک بین microservice بر پایه DDD یا فقط modularity monoloth (که کابوس شکست سازمانهایی هستش که مهندس نرم افزار ندارن) یعنی چی؟؟؟ تفکیک پذیری بر اساس معنا، نه بر اساس جدا سازی
خود BFF مخفف backend for front هستش خب بیایید این رو یکم براتون بازش کنم
سه مفهوم رو در DDD براتون بگم تا یکم مسئله رو باز کنم
Ubiquitous language
SAGA
Aggregation
چطور سرویسهامون رو از هم جدا کنیم (سرویس، نه دامنه) در زبان مشترک اگه برای یک مفهوم چند معنا داشتیم اونجا مرزهای سرویسهاتون قرار گرفته برای مثال (کاربر: از نگاه پشتیبان یعنی پاسخ گیرنده، از نگاه کسب و کار یعنی مشتری، از نگاه برنامه نویس یعنی یوزر) جنگ بر سر هویت و موجودیت هستش:
هویت: هر چیزی که به تنهایی بتونه مستقل معنا بده
موجودیت: هر چیزی که جهت معنا نیاز به اتصال داشته باشه
واسه مثال: کاربر هویت هستش (دارای شناسه یکتا در سیستم)، مشتری و پاسخ گیرنده موجودیت وابسته به کاربر هستند که شماره تماس، آدرس و ... دارند
موضوع بعدی SAGA:
انجام یکسری عملیات های رکوردی در یک درخواست، یعنی شما یک درخواست میگیرید و چندین جدول مختلف رو باهاش تاچ و کامیت میکنید (یک الگوی سخت)
مورد بعدی aggregation:
دریافت یک درخواست و جمع آوری اطلاعات در یک نقطه خاص
این سه مورد موضوعاتی هستند که داخل BFF حضور دارن یعنی دامنه اصلی و شاید پشتیبان در رویکرد DDD و اینجا جایی هستش که بهش میگیم شروع business logic و فاز توسعه میکروسرویس شروع میشه و امسدوارم فاز پایه خوبی رو اجرا کرده باشین وگرنه شروع نشده با شکست روبرو هستید
خب بیایم راجب bff بیشتر بگیم
در این معماری دیگه فرانت برای گرفتن اطلاعات یک صفحه مجبور نیست چندتا درخواست ارسال کنه، یک درخواست میاد سمت شما و پاسخ رو یکجا دریافت میکنه، داخل این لایه شما فقط دادههای لازم رو برای فرانت صدا میزنید و براش ارسال میکنید به چه شکل؟؟؟
نوع داده و درخواست:
اگه درخواست از نوع sync باشه از gRPC استفاده میکنید
اگه نوع درخواست async/event driven باشه از rabbitmq
در یک زبان ساده بگم بهتون، grpc میاد وسط سرویسهاتون قرار میگیره و rabbitmq میاد در کنار سرویسهاتون قرار میگیره و در صورت نیاز در جاهای خاصی میاد بین سرویسها نقش ایفا میکنه (جایی که هزاران درخواست میان جهت کامیت در دیتابیس)
در نهایت چه اتفاقی افتاد؟؟؟ فرانت هیچگونه اطلاعی از سرویسهای بکند نداره، coupling ضعیف شکل میگیره و معماری با قدرت به سمت خوبی پیش میره
مرزبندی سرویسها رو جدی بگیرید، این یک روند بر اساس تجربه و دانش هستش، و با DTO مرز بین سرویسهاتون رو داخل کدهاتون مشخص کنید
درخواست در مرحله اول میرسه به view و داخل اون ابتدا serializable اجرا میشه (درستی نوع تایپ مدنظر)، در مرحله بعد وارد سرویس میشه و داخل سرویس ابتدا value object (یک مفهوم دیگه از DDD) صدا زده میشه جهت ولیدیشن و اعتبار سنجی و بعد منطق تجاری روش اجرا میشه و در نهایت به DTO تبدیل میشه و ویو جهت ریسپانس برگردونده میشه
request => view - response
view => serialization (type data) - service - return DTO
service => value objects (validation) - logic (data layer and ...) - DTO
فراموش نکنید مهندسی نرم افزار یک مسیله به مرور یادگیرنده هستش، در هر مرحله یادگیری بینشتون تغییر میکنه
@code_crafters
داخل مهندسی نرم افزار (بخش مفاهیم و طراحی) ما با موضوع ساختار برنامه روبرو هستیم، در مهندسی نرم افزار ساختار سیستم باید گرافی باشه، از ساختار پنکیکی جلوگیری که این ساختار به معنای ورشکستی سیستم تلقی میشه، منظور چیه ؟؟؟ یک مثال ساده بگم، شما چهارتا سرویس دارید این چهار سرویس رو در یک نقطه دسترسی قرار ندید یعنی نگید از پورت هشتاد ورودی برو به همه سرویسها
بیاید مثال عملی تر بزنیم
ما مقادیر:
static
media
UI application(front)
api application(backends)
رو داریم همه اینها رو در ورودی بعد از web server نزارید، باید ساختار گرافی بسازید، به چه شکل؟؟؟
Nginx => static, media, ui, gateway
gateway=> BFF, identity service, cms service
BFF => (first level backends)
جالب شد BFF چیه؟؟؟
اینجا دقیقا جایی هستش که اوج معماری مدرن شروع میشه تفکیک بین microservice بر پایه DDD یا فقط modularity monoloth (که کابوس شکست سازمانهایی هستش که مهندس نرم افزار ندارن) یعنی چی؟؟؟ تفکیک پذیری بر اساس معنا، نه بر اساس جدا سازی
خود BFF مخفف backend for front هستش خب بیایید این رو یکم براتون بازش کنم
سه مفهوم رو در DDD براتون بگم تا یکم مسئله رو باز کنم
Ubiquitous language
SAGA
Aggregation
چطور سرویسهامون رو از هم جدا کنیم (سرویس، نه دامنه) در زبان مشترک اگه برای یک مفهوم چند معنا داشتیم اونجا مرزهای سرویسهاتون قرار گرفته برای مثال (کاربر: از نگاه پشتیبان یعنی پاسخ گیرنده، از نگاه کسب و کار یعنی مشتری، از نگاه برنامه نویس یعنی یوزر) جنگ بر سر هویت و موجودیت هستش:
هویت: هر چیزی که به تنهایی بتونه مستقل معنا بده
موجودیت: هر چیزی که جهت معنا نیاز به اتصال داشته باشه
واسه مثال: کاربر هویت هستش (دارای شناسه یکتا در سیستم)، مشتری و پاسخ گیرنده موجودیت وابسته به کاربر هستند که شماره تماس، آدرس و ... دارند
موضوع بعدی SAGA:
انجام یکسری عملیات های رکوردی در یک درخواست، یعنی شما یک درخواست میگیرید و چندین جدول مختلف رو باهاش تاچ و کامیت میکنید (یک الگوی سخت)
مورد بعدی aggregation:
دریافت یک درخواست و جمع آوری اطلاعات در یک نقطه خاص
این سه مورد موضوعاتی هستند که داخل BFF حضور دارن یعنی دامنه اصلی و شاید پشتیبان در رویکرد DDD و اینجا جایی هستش که بهش میگیم شروع business logic و فاز توسعه میکروسرویس شروع میشه و امسدوارم فاز پایه خوبی رو اجرا کرده باشین وگرنه شروع نشده با شکست روبرو هستید
خب بیایم راجب bff بیشتر بگیم
در این معماری دیگه فرانت برای گرفتن اطلاعات یک صفحه مجبور نیست چندتا درخواست ارسال کنه، یک درخواست میاد سمت شما و پاسخ رو یکجا دریافت میکنه، داخل این لایه شما فقط دادههای لازم رو برای فرانت صدا میزنید و براش ارسال میکنید به چه شکل؟؟؟
نوع داده و درخواست:
اگه درخواست از نوع sync باشه از gRPC استفاده میکنید
اگه نوع درخواست async/event driven باشه از rabbitmq
در یک زبان ساده بگم بهتون، grpc میاد وسط سرویسهاتون قرار میگیره و rabbitmq میاد در کنار سرویسهاتون قرار میگیره و در صورت نیاز در جاهای خاصی میاد بین سرویسها نقش ایفا میکنه (جایی که هزاران درخواست میان جهت کامیت در دیتابیس)
در نهایت چه اتفاقی افتاد؟؟؟ فرانت هیچگونه اطلاعی از سرویسهای بکند نداره، coupling ضعیف شکل میگیره و معماری با قدرت به سمت خوبی پیش میره
مرزبندی سرویسها رو جدی بگیرید، این یک روند بر اساس تجربه و دانش هستش، و با DTO مرز بین سرویسهاتون رو داخل کدهاتون مشخص کنید
درخواست در مرحله اول میرسه به view و داخل اون ابتدا serializable اجرا میشه (درستی نوع تایپ مدنظر)، در مرحله بعد وارد سرویس میشه و داخل سرویس ابتدا value object (یک مفهوم دیگه از DDD) صدا زده میشه جهت ولیدیشن و اعتبار سنجی و بعد منطق تجاری روش اجرا میشه و در نهایت به DTO تبدیل میشه و ویو جهت ریسپانس برگردونده میشه
request => view - response
view => serialization (type data) - service - return DTO
service => value objects (validation) - logic (data layer and ...) - DTO
فراموش نکنید مهندسی نرم افزار یک مسیله به مرور یادگیرنده هستش، در هر مرحله یادگیری بینشتون تغییر میکنه
@code_crafters
Forwarded from DevTwitter | توییت برنامه نویسی
#بپا_نره_درت
یه سری پیج کلاهبردار اینستاگرامی دارن سیمکارت استارلینک میفروشن.
همچین چیزی وجود نداره
@DevTwitter
یه سری پیج کلاهبردار اینستاگرامی دارن سیمکارت استارلینک میفروشن.
همچین چیزی وجود نداره
@DevTwitter
Forwarded from Linuxor ?
ناموسن وزیر ارتباطات انتظار داره دونه دونه مشکلات رو کمپین راه بندازیم بهش توییت کنیم؟ سید اون IPV6 رو وصل کن ما دفعه پش بعد جنگ دهنمون سرویس شد تا بهتون مشکل رو برسونیم. یه آیدی پیام رسان بیکاربرد ایرانی به من بده من خودم به صورت نماینده مردم هرروز بهت مشکلات رو گزارش میکنم دهنمون سرویس میشه اینطوری بخوایم باهاتون ارتباط برقرار کنیم.
من مطمعنم اگه سامانه های نظارتی مثل کلادفلر و نت بلاکس نبودن شما حتی قطعی اینترنت هم انکار میکردید و میگفتین اونایی که میگن اینترنت قطعه لیست کد ملی هاشونو بدن.
@Linuxor
من مطمعنم اگه سامانه های نظارتی مثل کلادفلر و نت بلاکس نبودن شما حتی قطعی اینترنت هم انکار میکردید و میگفتین اونایی که میگن اینترنت قطعه لیست کد ملی هاشونو بدن.
@Linuxor
خسته شدیم از این وضعیت.
خیلی از آدمای باهوش رو میشناسم که میگن قراره ایران درست بشه
نمی دونم من احمقم که اینطوری فکر نمی کنم یا آدمای احمق رو فکر می کنم که باهوشن
خیلی از آدمای باهوش رو میشناسم که میگن قراره ایران درست بشه
نمی دونم من احمقم که اینطوری فکر نمی کنم یا آدمای احمق رو فکر می کنم که باهوشن
👍10
Forwarded from Linuxor ?
CLRSv4.pdf
11.7 MB
این روزا معلوم نیست جنگ بشه یا نه، ولی این کتاب CLRS که درباره الگوریتم هاست دانلود کنید چون ممکنه اینترنت قطع بشه، این کتاب یکی از شاهکار های دنیای کامپیوتره و ممکنه هیچ وقت قسمت نشه بخونیدش چون زیاده.
فقط به این نکته دقت کنید که ممکنه ماه ها و یا سال خوندنش طول بکشه، پس اگه توی یه جایی گیر کردید چیز خیلی طبیعیه، نسخه خیلی ساده این کتاب به عنوان درس ساختمان داده و الگوریتم به صورت ترسناک توی دانشگاه ها تدریس میشه ولی این ترسناک نیست اصلا.
@Linuxor
فقط به این نکته دقت کنید که ممکنه ماه ها و یا سال خوندنش طول بکشه، پس اگه توی یه جایی گیر کردید چیز خیلی طبیعیه، نسخه خیلی ساده این کتاب به عنوان درس ساختمان داده و الگوریتم به صورت ترسناک توی دانشگاه ها تدریس میشه ولی این ترسناک نیست اصلا.
@Linuxor
👍1
ی نفری رو میشناسم یجوری کلاهبرداره که خونتو توی شیشه می کنه بعد همونو به یکی دیگه میفروشه
بعد استوری گذاشته:
جوونای مملکتمون 🖤
بابا تو همونی بودی که همین جوونای زنده مملکتمو داری می کشی ...
بعد استوری گذاشته:
جوونای مملکتمون 🖤
بابا تو همونی بودی که همین جوونای زنده مملکتمو داری می کشی ...
👍5
Forwarded from Milad Nouri(ツ) میلاد نوری
یک خبر به صورت گسترده منتشر شده مبنی بر تحریم شدن صرافیهای رمزارز ایران توسط امریکا.
طبق معمول هم کانالها بدون پرسیدن اینکه "سورس اصلی خبر کجاست؟"، در حال کپی کردن خبر هستند.
خبر جدید مربوط به تحریم صرافیهای Zedcex و Zedxion است که ظاهرا در لندن ثبت شده و متعلق به بابک زنجانی هستند.
نکته مهمتر اینکه قبلا هم فضای رمزارز صرافیهای ایرانی بدون ریسک نبوده و افراد مختلفی در مورد واریز و برداشت (مخصوصا تتر) از مبدا/به مقصد صرافیهای ایرانی هشدار دادهاند.
چرا که در مواردی، تتر برداشت شده از صرافیهای ایرانی در کیف پول مقصد کاربرها توسط بنیاد تتر مسدود شده بود.
جمعبندی: تحریم جدیدی روی صرافیهای معروف داخل ایران اتفاق نیفتاده.
⚠️ ضمن اینکه از قبل هم صرافیهای ایرانی ریسک خودشون رو داشتند و ریسکهای قبلی همچنان مثل همیشه سر جاشه.
🖥 @MiladNouriChannel
طبق معمول هم کانالها بدون پرسیدن اینکه "سورس اصلی خبر کجاست؟"، در حال کپی کردن خبر هستند.
خبر جدید مربوط به تحریم صرافیهای Zedcex و Zedxion است که ظاهرا در لندن ثبت شده و متعلق به بابک زنجانی هستند.
نکته مهمتر اینکه قبلا هم فضای رمزارز صرافیهای ایرانی بدون ریسک نبوده و افراد مختلفی در مورد واریز و برداشت (مخصوصا تتر) از مبدا/به مقصد صرافیهای ایرانی هشدار دادهاند.
چرا که در مواردی، تتر برداشت شده از صرافیهای ایرانی در کیف پول مقصد کاربرها توسط بنیاد تتر مسدود شده بود.
جمعبندی: تحریم جدیدی روی صرافیهای معروف داخل ایران اتفاق نیفتاده.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Milad Nouri(ツ) میلاد نوری
در خبری که ظاهرا تیتر اون منبع کانالهای تلگرامی شده هم به وضوع اسم صرافیهای Zedcex و Zedxion درج شده.
لینک خبر:
https://finance.yahoo.com/news/u-imposes-sanctions-crypto-exchanges-130049511.html
سورس اصلی:
https://home.treasury.gov/news/press-releases/sb0375
🖥 @MiladNouriChannel
لینک خبر:
https://finance.yahoo.com/news/u-imposes-sanctions-crypto-exchanges-130049511.html
سورس اصلی:
https://home.treasury.gov/news/press-releases/sb0375
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Linuxor ?
This media is not supported in your browser
VIEW IN TELEGRAM
این ویدیو رو ببینید، اشتباه نکنید تریلر GTA 6 نیست با هوش مصنوعی ساخته شده
مدل های هوش مصنوعی معمولا ویدیو های طولانی رو نمیتونن بسازن، این مدل اوپن سورس ویدیو های خوبی میسازه و ویژگی خوبش اینه اصلا محدودیت زمانی نداره و میتونید ویدیو با تایم نامحدود بسازین
github.com/vita-epfl/Stable-Video-Infinity
@Linuxor
مدل های هوش مصنوعی معمولا ویدیو های طولانی رو نمیتونن بسازن، این مدل اوپن سورس ویدیو های خوبی میسازه و ویژگی خوبش اینه اصلا محدودیت زمانی نداره و میتونید ویدیو با تایم نامحدود بسازین
github.com/vita-epfl/Stable-Video-Infinity
@Linuxor
Forwarded from اینترنت آزاد،تکنولوژی،هوش مصنوعی،کامپیوتر
پ.ن : این سامانه هیچگونه اطلاعات خصوصی مثل رمزعبور رو نمایش نمیده ، فقط هشدار میده که شما مشمول نشت داده بودین یا نه
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DevTwitter | توییت برنامه نویسی
از بهترین پروژههای چندوقت اخیر پروژه vibe-kanban بوده.
https://github.com/BloopAI/vibe-kanban
با یه دستور میشه نصبش کرد
npx vibe-kanban
پروژهها رو میتونید لیست کنید و kanban داشته باشید و هر تسکی که تعریف میکنید رو میتونید با یه code agent انجام بدید در session مجزا و با داشتن worktree مجزا و بصورت گرافیکی قابل مدیریت هست.
@DevTwitter | <Hossein Nazari/>
https://github.com/BloopAI/vibe-kanban
با یه دستور میشه نصبش کرد
npx vibe-kanban
پروژهها رو میتونید لیست کنید و kanban داشته باشید و هر تسکی که تعریف میکنید رو میتونید با یه code agent انجام بدید در session مجزا و با داشتن worktree مجزا و بصورت گرافیکی قابل مدیریت هست.
@DevTwitter | <Hossein Nazari/>