۲۰ نابغهای که دنیای ما را ساختند: لیست کامل معماران دنیای دیجیتال
آیا تا به حال فکر کردهاید اگر این ۲۰ نفر نبودند، امروز دنیای ما چه شکلی بود؟
احتمالاً نه اینترنتی داشتیم، نه گوشی هوشمندی، و نه هوش مصنوعیای که با آن چت کنیم!
در طی ۴ قسمت گذشته، سفری داشتیم به تاریخ پرفراز و نشیب کامپیوتر. از کسانی که اولین زبان را به ماشینها یاد دادند، تا کسانی که هوش را در آنها دمیدند.
اگر این سری پستها را از دست دادید، یا میخواهید یکجا به این گنجینه دسترسی داشته باشید، این لیست کامل برای شماست.
- دسترسی به تمام قسمتها:
- قسمت اول: پیشگامان و خالقان زبانها
(دنیس ریچی، گریس هاپر، خالقان C++ و جاوا)
🔗 لینک پست اول
- قسمت دوم: خالقان وب و انقلابیون متنباز
(تیم برنرز-لی، لینوس توروالدز، خالقان پایتون و جاوا اسکریپت)
🔗 لینک پست دوم
- قسمت سوم: خدایان الگوریتم و خالقان هوش مصنوعی
(آلن تورینگ، ایدا لاولیس، جان مککارتی و مارگارت همیلتون)
🔗 لینک پست سوم
- قسمت چهارم: غولهای دیتابیس و معماران عصر مدرن
(ادگار کاد، عمو باب، مارتین فاولر و جف دین)
🔗 لینک پست چهارم
چرا شناختن اینها مهم است؟
چون برنامه نویس بودن بدون شناختن تاریخچه این رشته، مثل این است که نویسنده باشید اما شکسپیر و حافظ را نشناسید. شناختن ریشهها، دید شما را به آینده باز میکند.
آیا تا به حال فکر کردهاید اگر این ۲۰ نفر نبودند، امروز دنیای ما چه شکلی بود؟
احتمالاً نه اینترنتی داشتیم، نه گوشی هوشمندی، و نه هوش مصنوعیای که با آن چت کنیم!
در طی ۴ قسمت گذشته، سفری داشتیم به تاریخ پرفراز و نشیب کامپیوتر. از کسانی که اولین زبان را به ماشینها یاد دادند، تا کسانی که هوش را در آنها دمیدند.
اگر این سری پستها را از دست دادید، یا میخواهید یکجا به این گنجینه دسترسی داشته باشید، این لیست کامل برای شماست.
- دسترسی به تمام قسمتها:
- قسمت اول: پیشگامان و خالقان زبانها
(دنیس ریچی، گریس هاپر، خالقان C++ و جاوا)
🔗 لینک پست اول
- قسمت دوم: خالقان وب و انقلابیون متنباز
(تیم برنرز-لی، لینوس توروالدز، خالقان پایتون و جاوا اسکریپت)
🔗 لینک پست دوم
- قسمت سوم: خدایان الگوریتم و خالقان هوش مصنوعی
(آلن تورینگ، ایدا لاولیس، جان مککارتی و مارگارت همیلتون)
🔗 لینک پست سوم
- قسمت چهارم: غولهای دیتابیس و معماران عصر مدرن
(ادگار کاد، عمو باب، مارتین فاولر و جف دین)
🔗 لینک پست چهارم
چرا شناختن اینها مهم است؟
چون برنامه نویس بودن بدون شناختن تاریخچه این رشته، مثل این است که نویسنده باشید اما شکسپیر و حافظ را نشناسید. شناختن ریشهها، دید شما را به آینده باز میکند.
❤3👍1👏1
شکست بخور، کپی کن.
بهجای اینکه دنبال ویژگیهای برنامهنویس بزرگ باشی، دنبال دو تا کار باش:
1. عمداً سراغ پروژههای شکستخیز برو.
ارزشِ شکست، خودِ شکست نیست؛ چیزیه که وسطِ دستوپا زدن برای کارهای سخت یاد میگیری.
2. کپی کن—فعال و بیخجالت.
کد خوب بخون منفعلانهست؛ کپی کردن حافظهی عضلانی میسازه و جزئیاتی رو یاد میده که با نگاهِ سریع دیده نمیشن.
و بهترین حالت؟ یک چرخهی خوب:
میری سراغ چیز سخت → گیر میکنی → راهحل یکی دیگه رو کپی میکنی → و تبریک: حالا واقعاً میفهمی.
گاهی عجیبترین حقیقت اینه:
شکست خوردن و کپی کردن، میتونه بهترین مسیرِ رسیدن به کارِ موفق و اصیل باشه.
— پاتریک کولیسون
بهجای اینکه دنبال ویژگیهای برنامهنویس بزرگ باشی، دنبال دو تا کار باش:
1. عمداً سراغ پروژههای شکستخیز برو.
ارزشِ شکست، خودِ شکست نیست؛ چیزیه که وسطِ دستوپا زدن برای کارهای سخت یاد میگیری.
2. کپی کن—فعال و بیخجالت.
کد خوب بخون منفعلانهست؛ کپی کردن حافظهی عضلانی میسازه و جزئیاتی رو یاد میده که با نگاهِ سریع دیده نمیشن.
و بهترین حالت؟ یک چرخهی خوب:
میری سراغ چیز سخت → گیر میکنی → راهحل یکی دیگه رو کپی میکنی → و تبریک: حالا واقعاً میفهمی.
گاهی عجیبترین حقیقت اینه:
شکست خوردن و کپی کردن، میتونه بهترین مسیرِ رسیدن به کارِ موفق و اصیل باشه.
— پاتریک کولیسون
👍9🔥3❤2👎1
ترجمه فارسی کتاب The Clean Coder
این پروژه یک فورک از ریپوی اصلی بود و من همراه با یکی از دوستانم روی تکمیل ترجمه کار کردیم.
این کتاب بیشتر از آنکه درباره نوشتن کد باشد، دربارهی مسئولیتپذیری، رفتار حرفهای، تعهد کاری و طرز فکر یک برنامهنویس است؛ موضوعاتی که نقش مستقیمی در کیفیت کار و مسیر شغلی یک توسعهدهنده دارند.
نسخه کامل ترجمه، بهصورت رایگان و متنباز از طریق لینک زیر در دسترس است:
https://github.com/hheydarian/clean-coder-persian
اگر این پروژه براتون مفید بود، خوشحال میشم با استار دادن، ازش حمایت کنید.
این پروژه یک فورک از ریپوی اصلی بود و من همراه با یکی از دوستانم روی تکمیل ترجمه کار کردیم.
این کتاب بیشتر از آنکه درباره نوشتن کد باشد، دربارهی مسئولیتپذیری، رفتار حرفهای، تعهد کاری و طرز فکر یک برنامهنویس است؛ موضوعاتی که نقش مستقیمی در کیفیت کار و مسیر شغلی یک توسعهدهنده دارند.
نسخه کامل ترجمه، بهصورت رایگان و متنباز از طریق لینک زیر در دسترس است:
https://github.com/hheydarian/clean-coder-persian
اگر این پروژه براتون مفید بود، خوشحال میشم با استار دادن، ازش حمایت کنید.
1❤🔥7🔥2❤1
مستندات فنی کجا باید باشن؟ تو ویکی؟ تو یه ابزار جدا؟ یا کنار کد؟
یکی از اشتباههای رایج تو تیمهای فنی اینه که مستندات رو از کد جدا میکنن…
نتیجه؟ «داکیومنتی که بعد از چند ماه دیگه به درد نمیخوره.»
به تجربه من، مستندات فنیای که مستقیم به کد مربوطن، باید کنار خود کد باشن:
- README
- توضیح معماری هر سرویس
- ADRها (تصمیمهای معماری)
- حتی دیاگرام ها
همه داخل خود ریپو، ورژن میخورن و همراه با تغییرات کد بررسی میشن.
اینجاست که Markdown واقعاً نعمت میشه: ساده و خیلی خواناست، قابل بررسیه و به ابزار خاصی وابسته نیست.برای دیاگرام ها هم میشه از Mermaid استفاده کرد و مستقیم داخل فایلهای md گذاشتشون.
افزونههای خوبی هم برای VS Code ( یا هر IDE دیگه ) هست که متن و دیاگرام رو تو IDE نشون میدن، یعنی مستندات دقیقاً کنار کدن، نه جدا ازش.
البته ویکی هنوز جای خودش رو داره،
اما برای معماری کلان، فرآیندهای چند مرحلهای و مستندات بین تیمی،
نه چیزهایی که مستقیم به کد وصلن.
پس اگر مستندات شما همراه با کد ورژن نمیخورن و موقع بررسی تغییرات کد دیده نمیشن، احتمالاً خیلی زود منسوخ و بیاستفاده میشن.
مستند خوب اونیه که:
«با کد تغییر میکنه، نه بعد از کد.»
🔗 LinkedIn
یکی از اشتباههای رایج تو تیمهای فنی اینه که مستندات رو از کد جدا میکنن…
نتیجه؟ «داکیومنتی که بعد از چند ماه دیگه به درد نمیخوره.»
به تجربه من، مستندات فنیای که مستقیم به کد مربوطن، باید کنار خود کد باشن:
- README
- توضیح معماری هر سرویس
- ADRها (تصمیمهای معماری)
- حتی دیاگرام ها
همه داخل خود ریپو، ورژن میخورن و همراه با تغییرات کد بررسی میشن.
اینجاست که Markdown واقعاً نعمت میشه: ساده و خیلی خواناست، قابل بررسیه و به ابزار خاصی وابسته نیست.برای دیاگرام ها هم میشه از Mermaid استفاده کرد و مستقیم داخل فایلهای md گذاشتشون.
افزونههای خوبی هم برای VS Code ( یا هر IDE دیگه ) هست که متن و دیاگرام رو تو IDE نشون میدن، یعنی مستندات دقیقاً کنار کدن، نه جدا ازش.
البته ویکی هنوز جای خودش رو داره،
اما برای معماری کلان، فرآیندهای چند مرحلهای و مستندات بین تیمی،
نه چیزهایی که مستقیم به کد وصلن.
پس اگر مستندات شما همراه با کد ورژن نمیخورن و موقع بررسی تغییرات کد دیده نمیشن، احتمالاً خیلی زود منسوخ و بیاستفاده میشن.
مستند خوب اونیه که:
«با کد تغییر میکنه، نه بعد از کد.»
👍3❤1🆒1
درود دوستان عزیز ❤️🙂
انشاءالله که همیشه سلامت و شاد باشید.
به امید روزهای بهتر
انشاءالله که همیشه سلامت و شاد باشید.
به امید روزهای بهتر
❤7
#استخدام
استخدام Backend .NET Developer در ایرانخودرو
📍 محل کار: تهران -جاده مخصوص
🕰 نوع همکاری: تماموقت (حضوری)
🔹 مهارتهای مورد نیاز:
✅تسلط به Git
✅ تسلط به hashtag#C
✅تجربه کار با EF
✅ حداقل ۳ سال کار مرتبط
✅ تسلط به Asp .Net Core
✅تجربه در طراحی و پیادهسازی API
✅تجربه کار به پایگاهداده SQL Server
✅آشنایی به Design Patternها و Software Architecture
موارد زیر مزیت محسوب میشوند:
➕آشنایی با React.js
➕آشنایی با Api Gateway
➕آشنایی با Microservices
➕ آشنایی با ابزارهای Logging
➕ آشنایی با Docker و مفاهیم DevOps
➕ تجربه کار در طراحی پروژههای زیرساختی و معماریمحور
اگر به این موقعیت علاقهمند هستید رزومه خودتون رو با عنوان Backend .NET Developer به آدرس زیر ارسال کنید:
[email protected]
استخدام Backend .NET Developer در ایرانخودرو
📍 محل کار: تهران -جاده مخصوص
🕰 نوع همکاری: تماموقت (حضوری)
🔹 مهارتهای مورد نیاز:
✅تسلط به Git
✅ تسلط به hashtag#C
✅تجربه کار با EF
✅ حداقل ۳ سال کار مرتبط
✅ تسلط به Asp .Net Core
✅تجربه در طراحی و پیادهسازی API
✅تجربه کار به پایگاهداده SQL Server
✅آشنایی به Design Patternها و Software Architecture
موارد زیر مزیت محسوب میشوند:
➕آشنایی با React.js
➕آشنایی با Api Gateway
➕آشنایی با Microservices
➕ آشنایی با ابزارهای Logging
➕ آشنایی با Docker و مفاهیم DevOps
➕ تجربه کار در طراحی پروژههای زیرساختی و معماریمحور
اگر به این موقعیت علاقهمند هستید رزومه خودتون رو با عنوان Backend .NET Developer به آدرس زیر ارسال کنید:
[email protected]
👍4❤2
شاید Substring داره نرمافزارت رو کند میکنه و خبر نداری!
همیشه فکر میکردم وقتی مینویسم
text.Substring(0, 5)
دارم یه تیکه از متن رو میخونم. اما تازه فهمیدم پشت پرده چه خبره!
مشکل اینجاست که Substring نمیره اون تیکه رو بخونه؛ بلکه میره یه فضای جدید تو حافظه RAM میگیره و کاراکترها رو اونجا کپی میکنه. برای یه متن کوتاه شاید مهم نباشه، اما تو مقیاس بالا یعنی فشار الکی به Garbage Collector و کندی سیستم.
راهحل چیه؟ Span<T>
امروز توی مسیر یادگیریم با Span آشنا شدم که بازیش کلاً فرق داره.
اگه بخوام ساده بگم:
❌ء Substring: مثل اینه که از یه صفحه کتاب فتوکپی بگیری تا فقط پاراگراف اولش رو بخونی. هزینه کاغذ و جوهر
✅ء Span: مثل اینه که با انگشتت به پاراگراف اول توی همون کتاب اصلی اشاره کنی. هزینه صفر!
با استفاده از AsSpan، تخصیص حافظه (Allocation) به صفر میرسه و سرعت پردازش چندین برابر میشه.
پ.ن: برنامهنویسی فقط کد زدن نیست؛ درکِ رفتارِ کد با سختافزار شما چقدر تو پروژههاتون درگیر بهینهسازی حافظه میشید؟ تا حالا از Span استفاده کردید؟
همیشه فکر میکردم وقتی مینویسم
text.Substring(0, 5)
دارم یه تیکه از متن رو میخونم. اما تازه فهمیدم پشت پرده چه خبره!
مشکل اینجاست که Substring نمیره اون تیکه رو بخونه؛ بلکه میره یه فضای جدید تو حافظه RAM میگیره و کاراکترها رو اونجا کپی میکنه. برای یه متن کوتاه شاید مهم نباشه، اما تو مقیاس بالا یعنی فشار الکی به Garbage Collector و کندی سیستم.
راهحل چیه؟ Span<T>
امروز توی مسیر یادگیریم با Span آشنا شدم که بازیش کلاً فرق داره.
اگه بخوام ساده بگم:
❌ء Substring: مثل اینه که از یه صفحه کتاب فتوکپی بگیری تا فقط پاراگراف اولش رو بخونی. هزینه کاغذ و جوهر
✅ء Span: مثل اینه که با انگشتت به پاراگراف اول توی همون کتاب اصلی اشاره کنی. هزینه صفر!
با استفاده از AsSpan، تخصیص حافظه (Allocation) به صفر میرسه و سرعت پردازش چندین برابر میشه.
پ.ن: برنامهنویسی فقط کد زدن نیست؛ درکِ رفتارِ کد با سختافزار شما چقدر تو پروژههاتون درگیر بهینهسازی حافظه میشید؟ تا حالا از Span استفاده کردید؟
👍7❤1
متاسفانه موج شدیدی از تعدیل نیرو در شرکت ها در راهه
لطفاً آگهی هایی که میذارم رو به اشتراک بذارین تا دیده بشن ❤️
لطفاً آگهی هایی که میذارم رو به اشتراک بذارین تا دیده بشن ❤️
1❤4👍2
#استخدام
ارسال رزومه [email protected]
ما در شرکت سپید سیستم به دنبال یک کارشناس ارشد استقرار و پشتیبانی فنی هستیم که توانایی کار با سیستمهای مبتنی بر .NET، معماری Microservice و زیرساختهای ویندوزی را داشته باشد و بتواند در محیطهای عملیاتی (Production) بهصورت مؤثر پشتیبانی ارائه دهد.
مهارتها و الزامات فنی
تسلط کامل به IIS (Deployment، Configuration، Troubleshooting)
آشنایی و تجربه عملی با Microservice Architecture
تسلط به SQL Server
مهارت بالا در T-SQL (Query، Performance Tuning، Debug)
آشنایی مناسب با مفاهیم Network
(TCP/IP، Port، Firewall، Load Balancer، DNS)
تجربه استقرار و پشتیبانی سیستمهای تحت وب
توانایی عیبیابی و حل مشکلات در محیط عملیاتی (Production)
آشنایی با لاگها، مانیتورینگ و Root Cause Analysis
مزیت محسوب میشود
آشنایی با CI/CD
تجربه کار با Docker یا Containerها
آشنایی با مفاهیم Security و Hardening
سابقه کار در پروژههای Enterprise یا پرترافیک
ویژگیهای فردی
مسئولیتپذیر و دقیق
توانایی کار تیمی و ارتباط مؤثر با تیم فنی و مشتری
توانایی مدیریت همزمان چند Issue
روحیه یادگیری و حل مسئله
نوع همکاری
تماموقت (در صورت نیاز: امکان شیفت / On-call)
مزایا
حقوق و مزایای رقابتی
محیط کاری فنی و چالشی
امکان رشد و یادگیری
ثبات شغلی
ارسال رزومه [email protected]
👍4
#استخدام
09352194873
[email protected]
موقعیت شغلی توسعه دهنده وب (FullStack)
ما در شرکت سرزمین خرید(دیلی مارکت) در حوزه Retail به دنبال جذب توسعه دهنده وب (FullStack) هستیم.
این مجموعه با استفاده از تحلیل و طراحی مستندات Business requirements را آماده پیاده سازی کرده است .
روش همکاری بصورت پروژه ای و در قالب نفر/ساعت برنامه ریزی شده , بصورت دورکاری می باشد .
تسلط کامل بر ASP.NET Core Web API تجربه عمیق با Entity Framework Core و مدیریت پایگاه داده و Postgre Sql , MS SQL
دانش کار قوی و تجربه عملی با الگوهای طراحی (Design Patterns) شامل Repository، Unit of Work و CQRS
تسلط بر سیستم کنترل نسخه Git
تجربه کار عملی با سیستم های Caching مانندRedis
تجربه کار با Message Brokering ها مانند RabbitMQ
توانایی نوشتن کوئریهای پیچیده و بهینه سازی شده در SQL
تجربه کار با مفاهیم JWT Authentication و Identity Server
دارای روحیه کار تیمی و توانایی همکاری مؤثر
مسئولیت پذیر، دقیق و متعهد به ارائه کد با کیفیت بالا همراه با مستندات
مدیریت زمان و توانایی تحویل وظایف در زمانبندی مشخص
آشنایی با اصول Clean Architecture , Microservice
تجربه کار با Real-Time Applications و فناوریهایی مانند SignalR
تسلط بر Unit Testing و چارچوبهای مرتبط (مانند xUnit/NUnit)
داشتن حداقل مدرک تحصیلی کارشناسی مرتبط (مهندسی نرم افزار، IT) مزیت محسوب میگردد.
09352194873
[email protected]
❤3
#استخدام
[email protected]
سلام و احترام خدمت همه دوستان عزیز
اگر بهتازگی به دلیل تعدیل نیرو یا هر دلیل دیگری شغل خود را از دست دادهاید، ما ( گروه برنامه نویسان ) با آغوش باز آماده بررسی رزومههای شما هستیم.
باور داریم نیروی متخصص و باانگیزه ارزشمندترین سرمایه هر مجموعه است و جایگزینی افراد توانمند، هزینه و زمان بسیار بیشتری خواهد داشت.
با افتخار اعلام میکنیم که برای همکاری با نیروهای حرفهای و باتجربه در حوزههای مختلف برنامهنویسی آمادهایم.
امکان همکاری حضوری و کاملاً ریموت فراهم است.
مدل پرداخت نیز ساعتی یا ماهانه بوده و همراه با بیمه و مزایا، بر اساس رزومه، تجربه و توافق طرفین تعیین میشود.
شرایط همکاری:
- حداقل ۱ سال سابقه کار مرتبط
- ارائه نمونهکار معتبر
- تعهد، مسئولیتپذیری و توانایی کار تیمی
بخش قابلتوجهی از پروژههای ما بینالمللی است و در تمامی زبانها و تخصصهای برنامهنویسی به همکاران توانمند نیاز داریم.
لطفاً رزومه خود را به ایمیل زیر ارسال کنید. پس از بررسی، همکاران ما با شما تماس خواهند گرفت و پاسخگوی تمام پرسشهای شما خواهند بود.
[email protected]
❤3
#استخدام
https://www.linkedin.com/in/roozbeh-maheronnaghsh/
استخدام Senior .NET Developer
ما بهدنبال چند برنامهنویس حرفهای و باانگیزهی .NET هستیم که علاقه مند به سیستمهای مقیاسپذیر و enterprise-grade باشه و از چالشهای فنی واقعی لذت ببره.
مسئولیتها:
طراحی، توسعه و نگهداری سیستمهای بزرگ، امن و مقیاسپذیر با ASP.NET Core و .NET 6/7/8
طراحی و پیادهسازی Microservices و معماریهای Service-Oriented
توسعه APIهای پرکارایی RESTful و gRPC
پیادهسازی ارتباطات async با RabbitMQ
طراحی caching توزیعشده با Redis
نوشتن کد تمیز، قابل نگهداری و تستپذیر (Unit / Integration / E2E)
بهبود و نگهداری CI/CD (Azure DevOps / Jenkins)
مانیتورینگ، بهینهسازی عملکرد و observability با Application Insights، OpenTelemetry و ELK
همکاری نزدیک با تیمهای Product، DevOps و QA در محیط Agile/Scrum
مهارتهای فنی موردنیاز:
تسلط کامل به C# و .NET Core
(async/await، LINQ، performance tuning، memory management)
تجربه قوی با SQL Server و ORMها (EF Core، Dapper)
تجربه عملی طراحی و پیادهسازی Microservices
درک عمیق از مفاهیم مهندسی نرمافزار، design patternها و ساختار داده
تعهد بالا به کیفیت کد و تجربه جدی در Automated Testing (xUnit، NUnit، Moq)
اگر فکر میکنی این چالش برای تو ساخته شده خوشحال میشم رزومه ت رو داشته باشم.
https://www.linkedin.com/in/roozbeh-maheronnaghsh/
👍3
#جذب
https://www.linkedin.com/in/narjes-esmaeili/
من یک برنامهنویس ASP.NET هستم و در حال حاضر به دنبال فرصت شغلی دورکاری (Remote) میباشم.
🔹 تکنولوژیها و مهارتها:
ASP.NET Core
MVC , WebForm
معماریهای Clean Architecture ، Onion
Design Pattern ها: Unit of Work
SQL Server
اتوماسیونسازی فرآیندها با n8n
🔹 نمونهکارها:
www.dfzco.com
www.laklakbook.com
www.nezaz.com
و سایر پروژهها
اگر به دنبال همکاری با فردی متعهد، مسئولیتپذیر و علاقهمند به کدنویسی تمیز و اصولی هستید، خوشحال میشوم در ارتباط باشیم 🤝
📩 برای ارتباط، پیام دهید.
https://www.linkedin.com/in/narjes-esmaeili/
❤3
#جذب
https://www.linkedin.com/in/hussein-nm/
سلام ✋
استک من NET. هست و
در این زمینه 10سال تجربه همکاری دارم و
اگر پوزیشن hashtag#ریموت (یا تقریبا ریموت😉) بود لطفا بهم اطلاع بدید🙏🙏
https://www.linkedin.com/in/hussein-nm/
👍3
#جذب
https://www.linkedin.com/in/sorosh-majdeddin-886a5a135/
من توسعهدهنده Backend با تخصص .NET و C# هستم و سابقه کار حرفهای با معماری Microservices را دارم.
در پروژههای مختلف با SQL Server، Azure Cosmos DB و سرویسهای Microsoft Azure کار کردهام و با مفاهیمی مانند DDD (Domain-Driven Design) و TDD (Test-Driven Development) بهصورت عملی تجربه دارم.
متأسفانه به دلیل قطعی اینترنت حدود یک ماهه، همکاری من با یک شرکت خارجی متوقف شد و ناچار شدم آن موقعیت شغلی را از دست بدهم.
در حال حاضر بهصورت فعال به دنبال یک موقعیت شغلی دورکاری هستم و خوشحال میشوم در صورت وجود فرصت مناسب، با شما در ارتباط باشم.
https://www.linkedin.com/in/sorosh-majdeddin-886a5a135/
👍3
وقتی Span کم میاره! (خداحافظی با ارورهای عجیب Async)
توی پست قبلی دیدیم که Span<T> چقدر سریعه، چون دادهها رو کپی نمیکنه. اما به محض اینکه خواستم توی یه متد Async (مثلاً موقع دانلود فایل یا دیتابیس) ازش استفاده کنم، کامپایلر کوبید تو صورتم!
ارور معروف: Span cannot be used in async methods.
چرا؟
چون Span روی Stack زندگی میکنه (حافظه موقت و سریع). وقتی شما await میکنید، کانتکست عوض میشه و Span گم میشه. نمیتونی اون رو توی کلاس ذخیره کنی یا منتظر بمونی.
💡 قهرمان داستان: Memory<T>
اینجاست که داتنت Memory<T> رو معرفی کرده.
اگه Span مثل یه یادداشت روی دستت باشه (سریع ولی موقت)، Memory مثل یه دفترچه یادداشت واقعیه.
✅ تفاوت کلیدی:
۱.ء Span: فقط برای پردازش همگام (Sync) و لحظهای.عمر کوتاه
۲.ء Memory: برای ذخیرهسازی در کلاسها و عملیات ناهمگام (Async).عمر طولانی
فرمول طلایی مایکروسافت:
هر وقت داده رو لازم دارید ولی نمیدونید کِی کارش تموم میشه (مثل Task)، از Memory استفاده کنید. هر وقت خواستید پردازشش کنید، ازش یه .Span بگیرید و با سرعت نور کار کنید!
شما تو پروژههای سنگین، چطور دادههای حجیم رو بین متدهای Async پاس میدید؟
توی پست قبلی دیدیم که Span<T> چقدر سریعه، چون دادهها رو کپی نمیکنه. اما به محض اینکه خواستم توی یه متد Async (مثلاً موقع دانلود فایل یا دیتابیس) ازش استفاده کنم، کامپایلر کوبید تو صورتم!
ارور معروف: Span cannot be used in async methods.
چرا؟
چون Span روی Stack زندگی میکنه (حافظه موقت و سریع). وقتی شما await میکنید، کانتکست عوض میشه و Span گم میشه. نمیتونی اون رو توی کلاس ذخیره کنی یا منتظر بمونی.
💡 قهرمان داستان: Memory<T>
اینجاست که داتنت Memory<T> رو معرفی کرده.
اگه Span مثل یه یادداشت روی دستت باشه (سریع ولی موقت)، Memory مثل یه دفترچه یادداشت واقعیه.
✅ تفاوت کلیدی:
۱.ء Span: فقط برای پردازش همگام (Sync) و لحظهای.عمر کوتاه
۲.ء Memory: برای ذخیرهسازی در کلاسها و عملیات ناهمگام (Async).عمر طولانی
فرمول طلایی مایکروسافت:
هر وقت داده رو لازم دارید ولی نمیدونید کِی کارش تموم میشه (مثل Task)، از Memory استفاده کنید. هر وقت خواستید پردازشش کنید، ازش یه .Span بگیرید و با سرعت نور کار کنید!
شما تو پروژههای سنگین، چطور دادههای حجیم رو بین متدهای Async پاس میدید؟
👍4👏1
#استخدام
استخدام برنامهنویس Back-End (.NET Core / Microservices)
شرح موقعیت شغلی:
ما در شرکت ایز ایران (کنسرسیون متمایز) به منظور توسعه و نگهداری سامانههای مبتنی بر معماری مایکروسرویس و تکنولوژیهای روز، از برنامهنویسان Back-End توانمند و علاقهمند به کار در پروژههای مقیاسپذیر دعوت به همکاری میشود.
شرایط و مهارتهای مورد نیاز:
حداقل ۳ سال تجربه کاری مرتبط
تسلط به .NET Core
تسلط به SQL و طراحی پایگاه داده
تجربه کار با Dapper و EF Core
آشنایی با RabbitMQ
تجربه کار با Redis
تجربه کار با Docker و مفاهیم Containerization
تسلط به Git
آشنایی با مفاهیم CI/CD
درک مناسب از معماری Microservices
نوع همکاری:
تماموقت
مزایا و امکانات:
بیمه تأمین اجتماعی
بیمه تکمیلی (SOS)
ناهار و میانوعده
محیط کاری حرفهای و تیم فنی پویا
فرصت رشد و یادگیری در پروژههای بزرگ
لینک های زیر جهت ارسال رزومه می باشد.
https://lnkd.in/eziqVU9z
https://lnkd.in/ehXHUQqz
استخدام برنامهنویس Back-End (.NET Core / Microservices)
شرح موقعیت شغلی:
ما در شرکت ایز ایران (کنسرسیون متمایز) به منظور توسعه و نگهداری سامانههای مبتنی بر معماری مایکروسرویس و تکنولوژیهای روز، از برنامهنویسان Back-End توانمند و علاقهمند به کار در پروژههای مقیاسپذیر دعوت به همکاری میشود.
شرایط و مهارتهای مورد نیاز:
حداقل ۳ سال تجربه کاری مرتبط
تسلط به .NET Core
تسلط به SQL و طراحی پایگاه داده
تجربه کار با Dapper و EF Core
آشنایی با RabbitMQ
تجربه کار با Redis
تجربه کار با Docker و مفاهیم Containerization
تسلط به Git
آشنایی با مفاهیم CI/CD
درک مناسب از معماری Microservices
نوع همکاری:
تماموقت
مزایا و امکانات:
بیمه تأمین اجتماعی
بیمه تکمیلی (SOS)
ناهار و میانوعده
محیط کاری حرفهای و تیم فنی پویا
فرصت رشد و یادگیری در پروژههای بزرگ
لینک های زیر جهت ارسال رزومه می باشد.
https://lnkd.in/eziqVU9z
https://lnkd.in/ehXHUQqz
👍3❤1
لیستهایت را فقط خواندنی کن! خداحافظی با تغییرات ناخواسته
یکی از اصول مهم در طراحی کلاسها، حفظ یکپارچگی دادههاست. اگر یک پراپرتی از نوع List<T> رو به صورت عمومی (Public) در دسترس قرار بدید، یعنی به همه اجازه دادید که محتوای اون لیست رو (بدون اجازه شما) اضافه، حذف یا پاک کنن!
✅ راه حل حرفهای: استفاده از Read-Only Collections
در سیشارپ، با استفاده از ReadOnlyCollection<T> یا اینترفیس IReadOnlyList<T> میتونید به بقیه اجازه بدید دادهها رو فقط ببینند، اما نتونند تغییرش بدن.
به جای:
public List<string> Names { get; set; }
از این الگو استفاده کنید:
public IReadOnlyList<string> Names => _names.AsReadOnly();
اینطوری کنترل کامل لیست دست کلاس اصلی باقی میمونه و کدتون ایمنتر و تمیزتر میشه.
جزئیات بیشتر و مثالهای عملی رو در این مقاله بخونید:
https://lnkd.in/eET__xeR
شما برای محافظت از لیستها معمولاً از IEnumerable استفاده میکنید یا IReadOnlyList؟ توی کامنت ها بنویسید.
یکی از اصول مهم در طراحی کلاسها، حفظ یکپارچگی دادههاست. اگر یک پراپرتی از نوع List<T> رو به صورت عمومی (Public) در دسترس قرار بدید، یعنی به همه اجازه دادید که محتوای اون لیست رو (بدون اجازه شما) اضافه، حذف یا پاک کنن!
✅ راه حل حرفهای: استفاده از Read-Only Collections
در سیشارپ، با استفاده از ReadOnlyCollection<T> یا اینترفیس IReadOnlyList<T> میتونید به بقیه اجازه بدید دادهها رو فقط ببینند، اما نتونند تغییرش بدن.
به جای:
public List<string> Names { get; set; }
از این الگو استفاده کنید:
public IReadOnlyList<string> Names => _names.AsReadOnly();
اینطوری کنترل کامل لیست دست کلاس اصلی باقی میمونه و کدتون ایمنتر و تمیزتر میشه.
جزئیات بیشتر و مثالهای عملی رو در این مقاله بخونید:
https://lnkd.in/eET__xeR
شما برای محافظت از لیستها معمولاً از IEnumerable استفاده میکنید یا IReadOnlyList؟ توی کامنت ها بنویسید.
👍5🆒1
#استخدام
Back-End Developer (.NET Core)
تماموقت | حضوری
امید بانک سپه جهت تکمیل تیم فنی خود از متخصصین Back-End .NET Core مسلط به معماری Microservices دعوت به همکاری مینماید.
شرایط احراز:
تسلط به C# و ASP.NET Core
تجربه عملی در Microservices Architecture
تسلط به دیتابیس SQL Server
آشنایی با MongoDB و Redis
آشنایی با RabbitMQ و Message Brokerها
آشنایی با Elasticsearch
آشنایی با Git و مفاهیم CI/CD
📩 ارسال رزومه در لینکدین یا ایمیل زیر:
[email protected]
Back-End Developer (.NET Core)
تماموقت | حضوری
امید بانک سپه جهت تکمیل تیم فنی خود از متخصصین Back-End .NET Core مسلط به معماری Microservices دعوت به همکاری مینماید.
شرایط احراز:
تسلط به C# و ASP.NET Core
تجربه عملی در Microservices Architecture
تسلط به دیتابیس SQL Server
آشنایی با MongoDB و Redis
آشنایی با RabbitMQ و Message Brokerها
آشنایی با Elasticsearch
آشنایی با Git و مفاهیم CI/CD
📩 ارسال رزومه در لینکدین یا ایمیل زیر:
[email protected]
👍3❤2