Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from عکس نگار
رویداد آموزشی دات نت تاک با موضوع Testing

لینک ثبت نام:
https://evnd.co/uJy0e
زمان : پنج شنبه 15شهریور، ساعت 17:00 تا 20:00
مکان : تهران ،چهار راه ولیعصر، کوچه بالاور، برج فناوری امیرکبیر، طبقه اول

دات نت تاک (گفتگویی از جنس دات نت) :
رویداد DotNetTalk دات نت تاک فرصتی است که در آن ضمن آشنایی با یکدیگر و شبکه سازی، به بحث تبادل نظر و یادگیری درباره موضوعات مختلف برنامه نویسی می پردازیم.

موضوع این جلسه : Testing

یکی از موارد مهمی که شرکت ها و حتی برنامه نویس ها به اون توجه لازم رو ندارند، مبحث "تست" هست. رعایت اصول طراحی و نوشن تست باعث میشه اولا برنامه ای تولید کنین که احتمال وقوع باگ درش کمتر هست، درنتیجه هم اعتماد خودتون به برنامه تون بیشتر میشه و هم اعتماد مشتری شما.
دوما توسعه و نگهداری کد هاتون در بلند خیلی راحت تر و سریع تر اتفاق بیافته.
اما چرا با وجود اینکه میدونیم تست چیز خوبیه، ولی اکثرمون بهش عمل نمیکنیم!؟ چه چیزی باعث شده از تست نویسی فرار کنیم؟
اگه هنوز به اهمیت تست نویسی پی نبردین یا شایدم پی بردین ولی بلد نیستن اصولی و صحیح بنویسین، این رویداد رو از دست ندین :)

توی این جلسه به موارد زیر میپردازیم :
- چرا باید تست بنویسیم
- چرا تمایلی به تست نویسی نداریم؟!
- باید ها و نباید های طراحی و نوشتن تست
- چطور علمی و اصولی تست بسازیم؟
- کار با فریمورک های محبوب تست خودکار
- کجا ها از mocking؟ و چگونه؟
- سایر ابزارهای مطرح در نگهداری و سازماندهی خودکار تست ها

میزبان این جلسه : فینوا
حامیان رسانه ای : فینوا - اوکس تیم

از این که با حضوتون، بار علمی رویداد رو افزایش میدهید سپاس گذاریم

لینک ثبت نام:
https://evnd.co/uJy0e
#پست_مجدد این پست تا به حال بیش از ۹۳۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
مفهوم FaaS یا Function as a Service اخیرا در معماری‌های Serverless بسیار محبوب شده‌اند. این مفهوم به برنامه‌نویسان اجازه می‌دهد تا منطق یک function را بدون وابستگی به سرور و یا تکنولوژی خاصی deploy کنند. برنامه‌نویس می‌تواند یک تابع را بدون وابستگی به هیچ‌چیزی روی بستر cloud بالا بیاورند. در حال حاضر AWS, Microsoft Azure و Google Cloud این امکان را برای برنامه‌نویسان فراهم کرده‌اند.

https://stackify.com/function-as-a-service-serverless-architecture/

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/hYO930chI1x


#مهران_داودی (https://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


___
#پست_مجدد این پست تا به حال بیش از ۱۹۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
استفاده از LINQ در PowerShell در موقعیت‌هایی که به Performance بالا نیاز است می‌تواند بسیار کارا باشد. در ابتدا به نظر عجیب می‌رسد که چطور می‌توان از LINQ در PowerShell استفاده کرد و یا اصولا چرا باید این کار را کرد. در مقاله جذاب زیر به هر دو این سوال‌ها پاسخ داده شده‌‌است. در این مقاله ابتدا به طور خلاصه مفاهیم LINQ شرح داده‌شده‌اند. سپس کاربرد هر کدام از متدهای LINQ با ذکر مثال در اسکریپت‌های PowerShell آموزش داده شده‌است.

https://www.simple-talk.com/dotnet/net-framework/high-performance-powershell-linq/

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/bgOq30cm0iu


#مهران_داودی (https://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


___
#پست_مجدد این پست تا به حال بیش از ۲۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
مدیریت خطا یا Exception Handling صحیح یکی از نکات مهم در کدهای با کیفیت است. در یک کد با کیفیت باید به خطاها فکر کرد و برای آنها در هنگام توسعه تصمیم گرفت. اینکه کجا یک exception را catch کنید و کجا به آن اجازه دهید به لایه‌های بالاتر رود، اینکه چگونه exception‌ ها را در هم wrap کنید و موارد بسیار دیگر مستقیما روی کیفیت کد شما تاثیر می‌گذارد.
مقاله زیر در مورد نحوه انجام این کار در Large .NET Projects را شرح داده‌است و مطالعه آن می‌تواند کمک زیادی به بالا رفتن کد برنامه نویسان کند.

https://www.dotnetcurry.com/patterns-practices/1364/error-handling-dotnet-projects

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/SWJZ30cAalk


#مهران_داودی (https://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


___
#پست_مجدد این پست تا به حال بیش از ۲۵۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
ذخیره لاگ به صورت ساخت یافته یکی از چالش‌های مهم نرم‌فزارهای نسل جدید است. با استفاده از Serilog می‌توان Log های هر نرم‌افزار را بصورت ساخت یافته ذخیره نمود و در Log ها بصورت ساخت یافته جستجو نمود. از ویژگی‌های خوب این کتابخانه امکان ذخیره Log ها در ElasticSearch می‌باشد که با ابزار Kibana می‌توان در Log ها جستجو و آنالیز انجام داد.
در لینک زیر نحوه ذخیره لاگ‌ها از طریق Serilog در ElasticSearch و نحوه مشاهده آن در Kibana توضیح داده شده است.

https://mikelindegarde.com/post/2016/11/23/using-serilog-elasticsearch-and-kibana-for-effective-error-logging

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/1IZF30dsVoV

#علیرضا_وفی (https://ow.ly/Vna930dsUGr)


کانال تلگرام:
@SoftwarePhilosophy


___
Forwarded from tehran marketing school
⁣کارگاه یک روزه دیزاین: داستان جادوی سپید (Design Thinking)

پنجشنبه 22 شهریور 97 ساعت 9 صبح تا 17 عصر

⁣⁣مهران داودی، معمار نرم‌افزار و مشاور توسعه سیستم‌های پیچیده
مهران داودی، هم‌بنیانگذار «ملک‌رادار» و مشاور ساخت تیم‌های نرم‌افزاری است و تجربیات جذابی در طراحی محصول، طراحی فرایند و طراحی مکانیسم دارد.
همچنین مشاور هواپیمایی ماهان، بانک کارآفرین، شرکت Indiefalcon و مدیریت دپارتمان تولید شرکت کرانه از فعالیت‌های سال‌های اخیر او بوده‌است.


لینک ثبت نام در کارگاه 👇
bit.ly/2MBw7rb


📞 شماره تماس:
02188677808

@tehran_marketing
#پست_مجدد این پست تا به حال بیش از ۲۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
کدهایی که اجرای آنها زمانبر است ممکن است همیشه به درستی انجام نشوند. ریستارت سرور، قطع ناگهانی شبکه و خطای کد می‌توانند باعث توقف و عدم اجرای کد مورد نظر شوند. با Hangfire می‌توان در .NET کارهای طولانی مدت در نرم افزار را بسادگی بصورت Fire and Forget و یا بصورت زمانبندی شده اجرا نمود. با بسته شدن نرم افزار، ریستارت شدن و یا هر اتفاقی که باعث انجام موفقیت آمیز آن کار نشود، Job مورد نظر دوباره اجرا خواهد شد. البته ذکر نکته نیز مهم می باشد که Job ها به شکلی نوشته شوند که در صورت عدم اجرای موفقیت آمیز بتوانند بطور کامل از آغاز مجدداً اجرا گردند.

https://docs.hangfire.io/en/latest/quick-start.html


https://docs.hangfire.io/en/latest/configuration/using-sql-server.html

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/aqMD30dBgdj


#علیرضا_وفی (https://ow.ly/Vna930dsUGr)

کانال تلگرام:
@SoftwarePhilosophy

___
#پست_مجدد این پست تا به حال بیش از ۲۷۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
یکی از مسایلی که برنامه نویسان با آن درگیر هستند فهمیدن نحوه استفاده از یک وب سرویس (Web API) و نوشتن کد برای استفاده از آن می‌باشد. با Swagger می‌توان برای هر Web API مستندات تهیه نمود و در پلتفورم دلخواه از Java گرفته تا Xamarin کد استفاده از وب سرویس را ایجاد کرد. مکانیزم عملکرد Swagger مانند ایجاد WSDL و ایجاد کد استفاده از وب سرویس در Visual Studio می‌باشد ولی با این تفاوت که قابلیت ایجاد کد کلاینت بر روی کلیه پلتفرم‌ها وجود دارد.

https://blog.rsuter.com/nswag-tutorial-integrate-the-nswag-toolchain-into-your-asp-net-web-api-project/

https://github.com/RSuter/NSwag/wiki/T4

https://editor.swagger.io/

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/8aKh30dGLEB


#علیرضا_وفی (https://ow.ly/Vna930dsUGr)

کانال تلگرام:
@SoftwarePhilosophy

___
#پست_مجدد این پست تا به حال بیش از ۲۵۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
آیا گوگل آبجکت‌هایی که به صورت دینامیک در یک صفحه اینسرت می‌شوند را هم ایندکس می‌کند؟
شاید برای شما هم قواعد رفتاری بات‌ها و کرالر (crawler) های گوگل گیج کننده باشد، آیا گوگل آبجکت‌ها و لینک‌های جاوا اسکرسپتی را ایندکس می کند؟ آیا گوگل DOM ها را ایندکس می‌کند؟ نحوه رفتار گوگل در ایندکس صفحه‌ای که ریدایرکت (Redirect) شده است چگونه است؟ آیا این‌ها ایندکس می‌شوند؟
المان‌های صفحه و متا دیتاها چطور؟

بله! گوگل تقریبا به خوبی همه این موارد را ایندکس می‌کند. امروز گوگل هوشمندتر از همیشه است. و این هوشمندی نگرانی‌های شما را کمتر می‌کند.
گوگل همیشه سعی کرده است آنچه را که کاربر درنهایت می‌پسندد برای خود بپسندد، و آن را با رتبه بالا در جستجوها نمایش دهد.


در لینک زیر شما می‌توانید جزییات نحوه ایندکس توسط گوگل در مواجه با موارد بالا را ببینید، آدام اودت (Adam Audette)، یکی از متخصصان مطرح سئو، تست‌های مختلفی را انجام داده است و نتایج را در مقاله زیر جمع آوری کرده است.

https://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/4Ihc30dPA9G

#سبحان_خوش_سیرت (https://ow.ly/IFRT30dLbaW)

کانال تلگرام:
@SoftwarePhilosophy

___
#پست_مجدد این پست تا به حال بیش از ۲۴۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
یکی از مسایلی که برنام‌ نویسان در ASP.NET MVC و یا ASP.NET Web Api با آن روبرو هستند مدیریت کدها در کنترلر می‌باشد. کدهای کنترلر ممکن است پس از مدتی پیچیده و دارای خطوط زیادی باشند. با استفاده از MediatR که یک پیاده سازی ساده از الگوی طراحی Mediator است می‌توان در کنترلرها کدهای منظم و کمی داشت.

https://blogs.msdn.microsoft.com/cdndevs/2016/01/26/simplifying-development-and-separating-concerns-with-mediatr/

https://jonhilton.net/2016/06/06/simplify-your-controllers-with-the-command-pattern-and-mediatr/


⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/heDz30dQmqO

#علیرضا_وفی (https://ow.ly/Vna930dsUGr)


کانال تلگرام:
@SoftwarePhilosophy

___
یکی از Design pattern های مهم Dependecy Injection است.
انگولار فریم ورک Dependency Injection مختصص به خودش را دارد که یکی از اساسی ترین قسمت‌های انگولار است.
با وجود اینکه dependency injection در انگولار بسیار مفید بوده و خیلی از پچیدگی‌ها را حذف کرده است اما محدودیت‌هایی نیز ایجاد می‌کند که البته در حالت‌های خاصی اتفاق می‌افتد.
یکی از مشکلاتی که ممکن است با آن مواجه شوید circular dependency است.
این مشکل زمانی رخ می‌دهد که برای مثال سرویس A، سرویس B را inject می‌کند درحالی که خود سرویس B، سرویس A را inject کرده است (البته اغلب بطور غیر مستقیم).
به عنوان مثال: A->B->C->A که نهایتا یک حلقه ایجاد می‌شود.
در این حالت از Injector.get انگولار استفاده می‌شود.
پیشنهاد می‌کنم لینک راهنمای انگولار در مورد dependency injection مطالعه نمایید.

https://angular.io/guide/dependency-injection-pattern

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/2dq130lQOfC

#مریم_داودی (https://ow.ly/HGkG309B7de)


کانال تلگرام:
@SoftwarePhilosophy

___
#پست_مجدد این پست تا به حال بیش از ۳۸۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
ویدئوی زیر، نمایشی از پروژه هوش مصنوعی گوگل به نام DeepMind است. در این پروژه به «انسان‌نما» یا متحرک فقط گفته می‌شود که از نقطه A به نقطه B برو. اینکه او چگونه حرکت کند و حالات بدن خود را چطور تنظیم کند کاملا توسط خودش انجام می‌شد. در این مدل او با آزمون و خطا یاد می‌گیرد که چطور بهتر این مسیر را طی کند. روش و مدلی که او راه می‌رود بسیار با مزه و خنده‌دار است ولی جمله‌ای که آخر این ویدئو گفته می‌شود می‌تواند خیلی ترسناک باشد:
«شاید او چیزی می‌داند که ما نمی‌دانیم!!»

https://www.youtube.com/watch?v=gn4nRCC9TwQ

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/e40v30dRMZU

#مهران_داودی (https://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


___