اگر قرار هست توی پروژهتون از SSE یا همون Server-Side Events استفاده کنید، حواستون به این نکته باشه که تحت شرایطی، سمت مرورگر محدودیت کانکشن وجود داره. شما به ازای هر دامین و مرورگر، فقط میتونید تعداد کمی (معمولاً ۶) کانکشن داشته باشید. البته توی HTTP/2 این محدودیت به شکل دیگهای هست و به صورت پیشفرض میتونید کانکشنهای بیشتری داشته باشید.
👍5🙊1
Forwarded from Easy Microservices (Ali Yousefi ˢᵒᶠᵗʷᵃʳᵉ ᴰᵉᵛᵉˡᵒᵖᵉʳ)
شاید برای شما هم پیش بیاد.
کارفرمای محترمی که اخیر یاد گرفته هرچی سوال داره رو از AI بپرسه. قافل از اینکه این AI برای مهندسین نرم افزار شده شبیه یک کارمند خودشیرینی که اطلاعات ناقصی رو به کارفرمای عزیز ارائه میکنه.
چرا AI برای کارفرمای نابلد خطرناکه؟
چون خروجی AI مبتنی بر prompt ای هست که بهش میدید در حالی که مهندسی که توی شرکت شماست علاوه بر اینکه میتونه مبتنی بر همون prmpt جواب بده بلکه دارای دانشی بالغ بر 100 مگابایت prompt (بسته به میزان تجربهی شناخت شرکت و شماست) به طور پیشفرض روش نصبه! شما میگی الف میدونه فلان پروژهی شما توی فلان طبقه توی فلان بخش در فلان قسمت ساید افکت میخوره! اینو چطوری میخوای هربار به AI توضیح بدی؟
حالا کافرمای محترم میاد از این AI استفاده میکنه و به مهندس خودش میگه که چیکار کنه و چیکار نکنه و هرچی مهندس توضیح میده که برادر این مسیر غلطه پاسخ تکراری دریافت میکنه که AI اینو گفت، جلسه میذاره با 5 تا مهندس سنیور دیگه و هرچی اونها توضیح میدن که برادر این مسیر مسیر درستی نیست بازم میگه الا و بلا AI بهتر از شما دانش داره و من فکر میکنم که این مسیر درستتره.
چه اتفاقی میوفته؟ شما رنج حقوقی 40 تا 150 میلیون یا بیشتر داری به مهندست پول میدی که بهش بگی چیکار کنه؟ خوب اگر شما تونستی از AI نتیجه بگیری همه میتونن بگیرن مخصوصا کسی که فنیه میتونه prompt بهتری بده و پاسخ بهتری هم دریافت کنه. چرا نمیری یه سری جونیور استخدام کنی که هم هزینهی کمتری بدی و هم بهشون توضیح بدی چیکار کنن.
من فکر میکنم استفاده از AI یک فرهنگه، برخی افراد همون ابتدا فهمیدن چطوری باید ازش استفاده کنن، بعضیها هنوز در چرخه تولید و نابود کردن اموالشون موندن. و حیف از مهندسین دلسوزی که هدفشون پیشرفت خودشون و شرکت شماست ولی گوش شما علاقهای به شنیدن صحبتهای اونها نداره و کم کم اونارو ساکت میکنه و فاجعه رخ میده.
کارفرمای محترمی که اخیر یاد گرفته هرچی سوال داره رو از AI بپرسه. قافل از اینکه این AI برای مهندسین نرم افزار شده شبیه یک کارمند خودشیرینی که اطلاعات ناقصی رو به کارفرمای عزیز ارائه میکنه.
چرا AI برای کارفرمای نابلد خطرناکه؟
چون خروجی AI مبتنی بر prompt ای هست که بهش میدید در حالی که مهندسی که توی شرکت شماست علاوه بر اینکه میتونه مبتنی بر همون prmpt جواب بده بلکه دارای دانشی بالغ بر 100 مگابایت prompt (بسته به میزان تجربهی شناخت شرکت و شماست) به طور پیشفرض روش نصبه! شما میگی الف میدونه فلان پروژهی شما توی فلان طبقه توی فلان بخش در فلان قسمت ساید افکت میخوره! اینو چطوری میخوای هربار به AI توضیح بدی؟
حالا کافرمای محترم میاد از این AI استفاده میکنه و به مهندس خودش میگه که چیکار کنه و چیکار نکنه و هرچی مهندس توضیح میده که برادر این مسیر غلطه پاسخ تکراری دریافت میکنه که AI اینو گفت، جلسه میذاره با 5 تا مهندس سنیور دیگه و هرچی اونها توضیح میدن که برادر این مسیر مسیر درستی نیست بازم میگه الا و بلا AI بهتر از شما دانش داره و من فکر میکنم که این مسیر درستتره.
چه اتفاقی میوفته؟ شما رنج حقوقی 40 تا 150 میلیون یا بیشتر داری به مهندست پول میدی که بهش بگی چیکار کنه؟ خوب اگر شما تونستی از AI نتیجه بگیری همه میتونن بگیرن مخصوصا کسی که فنیه میتونه prompt بهتری بده و پاسخ بهتری هم دریافت کنه. چرا نمیری یه سری جونیور استخدام کنی که هم هزینهی کمتری بدی و هم بهشون توضیح بدی چیکار کنن.
من فکر میکنم استفاده از AI یک فرهنگه، برخی افراد همون ابتدا فهمیدن چطوری باید ازش استفاده کنن، بعضیها هنوز در چرخه تولید و نابود کردن اموالشون موندن. و حیف از مهندسین دلسوزی که هدفشون پیشرفت خودشون و شرکت شماست ولی گوش شما علاقهای به شنیدن صحبتهای اونها نداره و کم کم اونارو ساکت میکنه و فاجعه رخ میده.
2👍13🙊1
اندراحوالات AI:
اومدم auto-completion گیتهاب کوپایلت رو بعد مدتها دوباره امتحان کنم (برای بدعادت نشدن خاموشاش کرده بودم) و خب توقع داشتم مثل قبل بیاد و بادی متد رو بنویسه، حالا فکر میکنید چهچیزی نوشت؟
ممنون 😆.
اومدم auto-completion گیتهاب کوپایلت رو بعد مدتها دوباره امتحان کنم (برای بدعادت نشدن خاموشاش کرده بودم) و خب توقع داشتم مثل قبل بیاد و بادی متد رو بنویسه، حالا فکر میکنید چهچیزی نوشت؟
throw new NotImplementedException();
ممنون 😆.
😁11🙊1
Forwarded from Easy Microservices (Ali Yousefi ˢᵒᶠᵗʷᵃʳᵉ ᴰᵉᵛᵉˡᵒᵖᵉʳ)
سلام دوستان، من خودم توی شرکت صدگان کار میکنم در حال حاضر هم برای تیم خودمون دنبال نیروی برنامهنویس هستیم. کارمون توی مشهد هست برج اداری پاژ 2 ، کار به صورت حضوری و تمام وقت هست (شنبه تا چهار شنبه).
اگر تمایل داشتید باهم همکاری کنیم خوشحال میشم شمارو توی تیم خودمون ببینم.
تکنولوژی هایی هم که کار میکنیم Blazor و Asp net core 9 و EF Core روی پروژه ی ERP کار میکنیم، تجربیات کاملا جدید و باحالی هست و تیممون هم تیم منظم و با پشتکار بالا و سرزنده و شاد هست. هیچ مشکلی با جونیور و میدلول هم توی مباحث آموزش نداریم و اتفاقا خیلی هم خوشحال میشیم بتونیم دانش خودمون رو تمام و کمال انتقال بدیم.
اگر هم با Process maker و ابزارهای BPMS و BPMN کار کردید که عالیه (حتی اگر فقط با همینا کار کرده باشید به تجریبات شما نیاز داریم).
برای اطلاعات بیشتر لطفا با شمارهی 09152411136 خانم قاصد HR شرکت صدگان تماس بگیرید یا رزومتون رو برام توی تلگرام ارسال کنید @ali_visual_studio
ممنون میشم این پست رو بازنشر کنید تا برسه به دست عزیزانی که کارجو هستند.
@easymicroservices
اگر تمایل داشتید باهم همکاری کنیم خوشحال میشم شمارو توی تیم خودمون ببینم.
تکنولوژی هایی هم که کار میکنیم Blazor و Asp net core 9 و EF Core روی پروژه ی ERP کار میکنیم، تجربیات کاملا جدید و باحالی هست و تیممون هم تیم منظم و با پشتکار بالا و سرزنده و شاد هست. هیچ مشکلی با جونیور و میدلول هم توی مباحث آموزش نداریم و اتفاقا خیلی هم خوشحال میشیم بتونیم دانش خودمون رو تمام و کمال انتقال بدیم.
اگر هم با Process maker و ابزارهای BPMS و BPMN کار کردید که عالیه (حتی اگر فقط با همینا کار کرده باشید به تجریبات شما نیاز داریم).
برای اطلاعات بیشتر لطفا با شمارهی 09152411136 خانم قاصد HR شرکت صدگان تماس بگیرید یا رزومتون رو برام توی تلگرام ارسال کنید @ali_visual_studio
ممنون میشم این پست رو بازنشر کنید تا برسه به دست عزیزانی که کارجو هستند.
@easymicroservices
1👍1🙊1
بهبودهای پرفورمنسی در داتنت ۱۰.
devblogs.microsoft.com/dotnet/performance-improvements-in-net-10/
کامنت گذاشتن که: فقط ۲۳۷ صفحه A4 هست ایندفعه نسبت به داتنت ۹ که ۳۰۶ صفحه بود :[
devblogs.microsoft.com/dotnet/performance-improvements-in-net-10/
کامنت گذاشتن که: فقط ۲۳۷ صفحه A4 هست ایندفعه نسبت به داتنت ۹ که ۳۰۶ صفحه بود :[
Microsoft News
Performance Improvements in .NET 10
Take a tour through hundreds of performance improvements in .NET 10.
🔥4❤🔥1🙊1
Forwarded from TorhamDev | تورهام 😳
حالم دیگه داره بد میشه انقدر تو هر مزخرفی AI چپوندن. دیگه نمیشه IDE پیدا کرد که بدون AI باشه جز vim و بچههاش!
انگار آدمها مغز ندارن، و جدی یکسریها به این مرحله رسیدن گه دیگه مغز ندارن و همه چیز رو با AI حل میکنن.
AI -> autocomplite on steroids
یکسریها دیگه تصمیمات زندگیشون هم با AI میگیرن. میسه مغز برخی رو برداشت به جاش یک LLM گذاشت.
@TorhamDevCH
انگار آدمها مغز ندارن، و جدی یکسریها به این مرحله رسیدن گه دیگه مغز ندارن و همه چیز رو با AI حل میکنن.
AI -> autocomplite on steroids
یکسریها دیگه تصمیمات زندگیشون هم با AI میگیرن. میسه مغز برخی رو برداشت به جاش یک LLM گذاشت.
@TorhamDevCH
👍8👎3🙊1
TorhamDev | تورهام 😳
حالم دیگه داره بد میشه انقدر تو هر مزخرفی AI چپوندن. دیگه نمیشه IDE پیدا کرد که بدون AI باشه جز vim و بچههاش! انگار آدمها مغز ندارن، و جدی یکسریها به این مرحله رسیدن گه دیگه مغز ندارن و همه چیز رو با AI حل میکنن. AI -> autocomplite on steroids یکسریها…
برای پروژههای وایبکد شده هم همینطور ام، هر پروژهای که به دستم میرسه و با vibe coding پیش رفته، قشنگ یکی دو هفته نیاز به ریفکتور داره 😄 حالا شما هرچقدر هم بیاید بگید که مشکل از پرامپت/ابزار بوده، باز هم نهایتا برای micro task ها بتونه خوب عمل کنه، حداقل فعلا.
توی پروژههای بزرگتر هم که عملا هیچی.
توی پروژههای بزرگتر هم که عملا هیچی.
1👍4👻1
Forwarded from نوشتههای ترمینالی
چرا protobuf بد است و توسط یکسری جونیور طراحی شده؟!
نگارنده این مطلب خودش توی گوگل کار کرده و نظراتش رو در مورد اشکالات protobuf میگه مخصوصا تایپ سیستمش و این که مشکلاتی رو حل میکنه که به جز گوگل در جای دیگر وجود ندارن. حتی به عقیده اون، توی خود گوگل هم میشد کارهای بهتری کرد.
https://reasonablypolymorphic.com/blog/protos-are-wrong/
نگارنده این مطلب خودش توی گوگل کار کرده و نظراتش رو در مورد اشکالات protobuf میگه مخصوصا تایپ سیستمش و این که مشکلاتی رو حل میکنه که به جز گوگل در جای دیگر وجود ندارن. حتی به عقیده اون، توی خود گوگل هم میشد کارهای بهتری کرد.
https://reasonablypolymorphic.com/blog/protos-are-wrong/
👍4🙊2🍓1👻1
Forwarded from tech-afternoon (Amin Mesbahi)
🔥 🐘 انتشار PostgreSQL 18، و اهمیت تغییراتش!
طبق روال سالهای گذشته حوالی سپتامبر ریلیز نسخه جدید PostgreSQL انجام شد. حالا چرا این نسخه برای برخی سیستمها میتونه قابل توجه و مهم باشه؟
- تغییرات انقلابی در I/O (Asyn I/O):
بالاخره! این قابلیت اومد و سرعت عملیات Read رو «تا» ۳ برابر افزایش میده! معطلیهای CPU برای I/O خیلی کمتر میشه و برای کارهای مثل VACUUM و اسکنهای بزرگ، تاثیرش چشمگیره (من روی نسخههای پیشنمایش تست کردم و عالی بود).
- پشتیبانی از UUIDv7:
برای توسعهدهندهها این شاید خیلی مهم باشه! (اگر دوست دارید در مورد انواع UUIDها بیشتر توضیح بدم:🤪 )
پشتیبانی Native از UUIDv7 یعنی Primary Keyها به صورت گلوبال یونیک میشن و هم چون بر اساس زمان مرتب هستن، عملکرد ایندکس B-tree به شکل چشمگیری بهتر میشه. (یعنی Page Split بی مورد نداریم!)
- قابلیت Virtual Generated Columns:
حالا ستونهای محاسباتی بهصورت پیشفرض مجازی هستن، یعنی فقط موقع خوانش محاسبه میشن و فضای دیسک رو اشغال نمیکنن. (البته اگه لازم باشه، میتونید همچنان STORED هم تعریف کنین).
افزودن NOT NULL بدون Downtime: کابوس اضافه کردن NOT NULL به جدولهای بزرگ تموم شد! حالا میشه قید NOT NULL رو بهصورت NOT VALID اضافه کنیم و بلافاصله برای ردیفهای جدید اعمال بشه. اعتبارسنجی ردیفهای موجود رو هم میتونیم بعداً بدون قفل کامل جدول انجام بدیم.
- امکان Skip Scan برای B-tree:
یه بهبود عالی برای بهینهسازی کوئری؛ اگه توی ایندکسهای چند ستونی، ستون اول رو در WHERE فیلتر نکرده باشیم، باز هم ایندکس کار میکنه و کوئریهای تحلیلی/گزارشگیری خیلی سریعتر میشن.
- امکان RETURNING هوشمند:
حالا میشه توی یک دستور UPDATE یا DELETE به هر دو مقدار قدیمی (OLD) و جدید (NEW) یک ستون در بخش RETURNING دسترسی داشته باشیم.
- آپگرید آسونتر:
قابلیت حفظ Planner Statistics حین آپگرید با pg_upgrade باعث میشه دیتابیس جدید خیلی سریعتر به پرفورمنس دلخواه برگرده.
طبق روال سالهای گذشته حوالی سپتامبر ریلیز نسخه جدید PostgreSQL انجام شد. حالا چرا این نسخه برای برخی سیستمها میتونه قابل توجه و مهم باشه؟
- تغییرات انقلابی در I/O (Asyn I/O):
بالاخره! این قابلیت اومد و سرعت عملیات Read رو «تا» ۳ برابر افزایش میده! معطلیهای CPU برای I/O خیلی کمتر میشه و برای کارهای مثل VACUUM و اسکنهای بزرگ، تاثیرش چشمگیره (من روی نسخههای پیشنمایش تست کردم و عالی بود).
- پشتیبانی از UUIDv7:
برای توسعهدهندهها این شاید خیلی مهم باشه! (اگر دوست دارید در مورد انواع UUIDها بیشتر توضیح بدم:
پشتیبانی Native از UUIDv7 یعنی Primary Keyها به صورت گلوبال یونیک میشن و هم چون بر اساس زمان مرتب هستن، عملکرد ایندکس B-tree به شکل چشمگیری بهتر میشه. (یعنی Page Split بی مورد نداریم!)
- قابلیت Virtual Generated Columns:
حالا ستونهای محاسباتی بهصورت پیشفرض مجازی هستن، یعنی فقط موقع خوانش محاسبه میشن و فضای دیسک رو اشغال نمیکنن. (البته اگه لازم باشه، میتونید همچنان STORED هم تعریف کنین).
افزودن NOT NULL بدون Downtime: کابوس اضافه کردن NOT NULL به جدولهای بزرگ تموم شد! حالا میشه قید NOT NULL رو بهصورت NOT VALID اضافه کنیم و بلافاصله برای ردیفهای جدید اعمال بشه. اعتبارسنجی ردیفهای موجود رو هم میتونیم بعداً بدون قفل کامل جدول انجام بدیم.
- امکان Skip Scan برای B-tree:
یه بهبود عالی برای بهینهسازی کوئری؛ اگه توی ایندکسهای چند ستونی، ستون اول رو در WHERE فیلتر نکرده باشیم، باز هم ایندکس کار میکنه و کوئریهای تحلیلی/گزارشگیری خیلی سریعتر میشن.
- امکان RETURNING هوشمند:
حالا میشه توی یک دستور UPDATE یا DELETE به هر دو مقدار قدیمی (OLD) و جدید (NEW) یک ستون در بخش RETURNING دسترسی داشته باشیم.
- آپگرید آسونتر:
قابلیت حفظ Planner Statistics حین آپگرید با pg_upgrade باعث میشه دیتابیس جدید خیلی سریعتر به پرفورمنس دلخواه برگرده.
اگر جزو افرادی هستین که به مهاجرت به PostgreSQL فکر میکنید، یه تعداد کارتهای شستهرُفته برای مهاجرت از SQL Server به PostgreSQL با هشتگ #MSSQL_to_PGSQL توی کانال داریم (کارتهای قرمز رنگ از بخش تصاویر هم قابل پیدا کردنه)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🙊1
اگر یک زمانی اکانت لینکدینتون محدود شد، میتونید از روشهایی که توی این کانال جمعآوری شده استفاده کنید:
@Suspended_LinkedIn
@Suspended_LinkedIn
❤🔥3🙊1
گوگل طی هفتهی اخیر نسخهی CLI ایجنت Jules رو معرفی کرد.
این ایجنت به اکانت گیتهاب شما متصل میشه و میتونید ازش بخواید تا توی ریپوهاتون مشارکت کنه، اونم بهطور خودکار تغییرات لازم رو انجام میده و کامیتشون میکنه، که حالا برای مثال میتونه مستقیم مرجشون کنه یا PR ایجاد کنه.
و خب اون پشت بهصورت پیشفرض از Gemini 2.5 Pro استفاده میکنه. (آخرین مدل)
یکسری قابلیتهای دیگه هم داره که خوندنشون خالی از لطف نیست:
jules.google
این ایجنت به اکانت گیتهاب شما متصل میشه و میتونید ازش بخواید تا توی ریپوهاتون مشارکت کنه، اونم بهطور خودکار تغییرات لازم رو انجام میده و کامیتشون میکنه، که حالا برای مثال میتونه مستقیم مرجشون کنه یا PR ایجاد کنه.
و خب اون پشت بهصورت پیشفرض از Gemini 2.5 Pro استفاده میکنه. (آخرین مدل)
یکسری قابلیتهای دیگه هم داره که خوندنشون خالی از لطف نیست:
jules.google
1👍4🙊1
Forwarded from Easy Microservices (Mahdi)
سرچ فازی Fuzzy Search
یکی از رفتارهای پرتکرار کاربران در اپلیکیشنها و سیستمهای جستجو، اینه که خیلی وقتها کل عبارتی که دنبالش هستند تایپ نمیکنند، یا کلمهای رو اشتباه تایپ میکنن. اما نتیجه؟
صفحهای خالی از داده، یا پیشنهادهایی که ربطی به نیت واقعی کاربر ندارن.
اینجا بود که مسئله شکل گرفت:
چطور میتونیم تجربهی جستجو رو هوشمندتر کنیم؟
بهجای اینکه از کاربر انتظار دقت ماشینی داشته باشیم، سیستم رو طوری طراحی کنیم که خودش نیت کاربر رو درک کنه.
از همین نگاه، پروژهی Fuzzy Search متولد شد.
برای مطالعه بیشتر و ریپو گیت هاب لینک زیر ببینید
https://www.linkedin.com/feed/update/urn:li:activity:7383751931095232512/?commentUrn=urn%3Ali%3Acomment%3A(activity%3A7383751931095232512%2C7383772897057734657)&dashCommentUrn=urn%3Ali%3Afsd_comment%3A(7383772897057734657%2Curn%3Ali%3Aactivity%3A7383751931095232512)#
یکی از رفتارهای پرتکرار کاربران در اپلیکیشنها و سیستمهای جستجو، اینه که خیلی وقتها کل عبارتی که دنبالش هستند تایپ نمیکنند، یا کلمهای رو اشتباه تایپ میکنن. اما نتیجه؟
صفحهای خالی از داده، یا پیشنهادهایی که ربطی به نیت واقعی کاربر ندارن.
اینجا بود که مسئله شکل گرفت:
چطور میتونیم تجربهی جستجو رو هوشمندتر کنیم؟
بهجای اینکه از کاربر انتظار دقت ماشینی داشته باشیم، سیستم رو طوری طراحی کنیم که خودش نیت کاربر رو درک کنه.
از همین نگاه، پروژهی Fuzzy Search متولد شد.
برای مطالعه بیشتر و ریپو گیت هاب لینک زیر ببینید
https://www.linkedin.com/feed/update/urn:li:activity:7383751931095232512/?commentUrn=urn%3Ali%3Acomment%3A(activity%3A7383751931095232512%2C7383772897057734657)&dashCommentUrn=urn%3Ali%3Afsd_comment%3A(7383772897057734657%2Curn%3Ali%3Aactivity%3A7383751931095232512)#
Linkedin
#userexperience #productdesign #fuzzysearch #ux #customerdrivendevelopment #dotnet #csharp #opensource | Mahdi Delzendeh Sarfe…
از نیاز کاربر تا تجربهای هوشمند در جستجو 🧩
بهترین ویژگیهای محصول، نتیجهی درک عمیق از رفتار و نیاز کاربرند — نه فقط کد و الگوریتم.
یکی از رفتارهای پرتکرار کاربران در اپلیکیشنها و سیستمهای جستجو، اینه که خیلی وقتها کل عبارتی که دنبالش هستند تایپ نمیکنند،…
بهترین ویژگیهای محصول، نتیجهی درک عمیق از رفتار و نیاز کاربرند — نه فقط کد و الگوریتم.
یکی از رفتارهای پرتکرار کاربران در اپلیکیشنها و سیستمهای جستجو، اینه که خیلی وقتها کل عبارتی که دنبالش هستند تایپ نمیکنند،…
2🙊1
سرویس agentrouter فقط با ثبتنام بهتون مقدار قابل توجهی کردیت میده که خب دسترسی به api مدلهایی مثل Claude 4.5 و GPT 5 رو مهیا میکنه.
حالا درسته که چینی هست ولی خب به دو کلیک میارزه.
https://agentrouter.org/
حالا درسته که چینی هست ولی خب به دو کلیک میارزه.
https://agentrouter.org/
1👻2🙊1
Forwarded from Agora (Alireza)
فرض کنید که میخوایید عبارتی رو گوگل کنید ولی گوگل نه بدونه چی ازش پرسیدین و نه بدونه چه جوابی به شما داده ولی با این حال جوابش به شما متناسب بوده.
یا فرض کنید، عکسی دارید و میخوایید توی یکی از این وبسایتهای ویرایش عکس آپلود کنید و یک سری افکت روش اعمال کنید و اینها به درستی اعمال بشه و در عین حال اون سرویس از این که افکتهاش رو روی چه عکسی انداخته خبر نداشته باشه.
یا بذارید یک کم عمیق تری بشیم. فرض کنید شما یک password manager دارید که رمزهاتون رو encrypt شده نگهداری کرده. میخوایید وقتی که برنامه لود شد و پیچیدگیهای رمزهاتون رو بررسی میکرد، حتی دامپ مموری و یا دامپ جیسترهای CPU هیچ کدوم از اطلاعات شما رو لو نده و همچنان اونها encrypted باقی بمونند و در عینحال فیچر بررسی پیچیدگی پسورد منیجیرتون به درستی عمل کرده باشه.
ما میدونیم که بالاخره در یک مرحلهای دیتا باید توی RAM لود بشه یا وقتی CPU میخواد که روی دادهها insturctionهاش رو اجرا کنه، باید خود دیتا (و نه encryptشدهش) رو روی رجیسترهاش Fetch کنه. پس نمیشه که ما بدون رمزگشایی داده و در اختیار قرار دادن کلید روی دادهها پردازش کنیم. درسته؟ نه!
خیلی جالبه که رمزگذاری وجود داره که این امکان رو میده تا بدون این که داده رو decrypt کنیم روی اون پردازش کنیم یا دقیقتر، اون رو به یک تابع بدیم و خروجی اون تابع عیناً مشابه خروجی تابع بر روی دیتای رمز نشده باشه :
Fully Homomorphic Encryption
علارغم این که با این روش میشه چرخهی حریمشخصی و محرمانگی رو کامل برقرار کرد و الگوریتم رمزگذاری جدیدی نیست، با اینحال استفاده ازش چندان همهگیر نشده. یکی از اشکالات اساسیش هزینهی پردازشی بالای اونه. با تمام اینها، پیشرفتهای زیادی کرده و هر چند سال نسلهای جدید از اون منتشر میشه که مشکلات نسلهای قبلی رو به شکلی مرتفع کردن و از طرفی سرعت پردازش روی دادههای رمزشده سالانه ۸ برابر بیشتر میشه و کم کم داره داره جای خودش رو روی سیستمهای real-world پیدا میکنه. مثلا اپل پستی روی ۲۰۱۴ منتشر کرده که از دیتاستهای رمز شده در مسئلههای Nearest Neighbor Searchش برای حفظ حریم خصوصی کاربرهاش استفاده میکنه:
Combining Machine Learning and Homomorphic Encryption in the Apple Ecosystem
توی این ترد Hackernews نظر بقیه رو راجعبهش بخونید.
اگر به جزئیات پیادهسازی و ریاضی پشتش بیشتر علاقه دارید این تکستبوک میتونه بدرد بخوره. (همون منبع ولی به صورت HTML)
پیادهسازی اوپنسورسی هم از این الگوریتم وجود داره که از اینجا میتونید بررسی کنید.
یا فرض کنید، عکسی دارید و میخوایید توی یکی از این وبسایتهای ویرایش عکس آپلود کنید و یک سری افکت روش اعمال کنید و اینها به درستی اعمال بشه و در عین حال اون سرویس از این که افکتهاش رو روی چه عکسی انداخته خبر نداشته باشه.
یا بذارید یک کم عمیق تری بشیم. فرض کنید شما یک password manager دارید که رمزهاتون رو encrypt شده نگهداری کرده. میخوایید وقتی که برنامه لود شد و پیچیدگیهای رمزهاتون رو بررسی میکرد، حتی دامپ مموری و یا دامپ جیسترهای CPU هیچ کدوم از اطلاعات شما رو لو نده و همچنان اونها encrypted باقی بمونند و در عینحال فیچر بررسی پیچیدگی پسورد منیجیرتون به درستی عمل کرده باشه.
ما میدونیم که بالاخره در یک مرحلهای دیتا باید توی RAM لود بشه یا وقتی CPU میخواد که روی دادهها insturctionهاش رو اجرا کنه، باید خود دیتا (و نه encryptشدهش) رو روی رجیسترهاش Fetch کنه. پس نمیشه که ما بدون رمزگشایی داده و در اختیار قرار دادن کلید روی دادهها پردازش کنیم. درسته؟ نه!
خیلی جالبه که رمزگذاری وجود داره که این امکان رو میده تا بدون این که داده رو decrypt کنیم روی اون پردازش کنیم یا دقیقتر، اون رو به یک تابع بدیم و خروجی اون تابع عیناً مشابه خروجی تابع بر روی دیتای رمز نشده باشه :
Fully Homomorphic Encryption
Homomorphic encryption is a form of encryption that allows computations to be performed on encrypted data without first having to decrypt it.[1] The resulting computations are left in an encrypted form which, when decrypted, result in an output that is identical to that of the operations performed on the unencrypted data. Homomorphic encryption can be used for privacy-preserving outsourced storage and computation. This allows data to be encrypted and outsourced to commercial cloud environments for processing, all while encrypted.
علارغم این که با این روش میشه چرخهی حریمشخصی و محرمانگی رو کامل برقرار کرد و الگوریتم رمزگذاری جدیدی نیست، با اینحال استفاده ازش چندان همهگیر نشده. یکی از اشکالات اساسیش هزینهی پردازشی بالای اونه. با تمام اینها، پیشرفتهای زیادی کرده و هر چند سال نسلهای جدید از اون منتشر میشه که مشکلات نسلهای قبلی رو به شکلی مرتفع کردن و از طرفی سرعت پردازش روی دادههای رمزشده سالانه ۸ برابر بیشتر میشه و کم کم داره داره جای خودش رو روی سیستمهای real-world پیدا میکنه. مثلا اپل پستی روی ۲۰۱۴ منتشر کرده که از دیتاستهای رمز شده در مسئلههای Nearest Neighbor Searchش برای حفظ حریم خصوصی کاربرهاش استفاده میکنه:
Combining Machine Learning and Homomorphic Encryption in the Apple Ecosystem
توی این ترد Hackernews نظر بقیه رو راجعبهش بخونید.
اگر به جزئیات پیادهسازی و ریاضی پشتش بیشتر علاقه دارید این تکستبوک میتونه بدرد بخوره. (همون منبع ولی به صورت HTML)
پیادهسازی اوپنسورسی هم از این الگوریتم وجود داره که از اینجا میتونید بررسی کنید.
Fully Homomorphic Encryption and the Dawn of A Truly Private Internet
Barış Özmen Blog
👍2🙊2