Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
مفهوم Stream API در Java در بسیاری از موارد جایگزین مناسب‌تری برای حلقه‌ها است. استفاده از stream کمک می‌کند تا به طور کامل از معماری multi-core استفاده شود. همچنین این نحوه برنامه‌نویسی باعث می‌شود قطعات کد بیشتر declarative شوند. از طرفی استفاده از stream ها معایبی هم دارد. در برخی مواقع فهمیدن این کدها و در اکثر مواقع دیباگ کردن آنها سخت است.
ابزار Java Stream Debugger نام پلاگین جدید JetBrains است که به وسلیه آن می‌توان کدهای روی stream را که معمولا به صورت chain استفاده می‌شوند را به راحتی بررسی و دیباگ کرد.

لینک زیر نحوه استفاده از این ابزار را در IntelliJ IDEA نشان می‌دهد.

https://plugins.jetbrains.com/plugin/9696-java-stream-debugger

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

https://ow.ly/X3T030de1Dk


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

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


___
Forwarded from Iran Agile
🔴 واقعیت DevOps چیست؟

شاید آی‌تی یکی از بزرگترین صنایعی باشد که هر روز در آن واژگان جدیدی به دایره لغات ما افزوده می شود، یکی از این لغات جدید دیوآپس است که از سال 2009 شروع به ظهور کرده و از 2014 بسیار مورد استقبال قرار گرفته است و اگر در لیست مشاغل خارجی بدنبال آن باشید، می بینید که شرکت ها بشدت دنبال افراد متخصص در این حوزه می گردند.

اما کج فهمی های زیاد در مورد DevOps وجود دارد، واقعا DevOps چیست؟

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

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

https://goo.gl/iL3k3N

@iranagile
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
نسخه جدید کتابخانه Json.NET منتشر شد. مهمترین ویژگی جدید نسخه Json.NET 10.0 پشتیبانی آن از عملیات async است. این امکان کمک می‌کند هنگام تبدیل فایل‌های بزرگ Json، پروسس نخ به خاطر I/O بلاک نمی‌شود. به این صورت برنامه‌های Client بسیار Responsive تر می‌شوند و Web Application ها نیز بسیار scalable تر می‌شوند.

برای آشنایی با نحوه استفاده از ویژگی async این کتابخانه می‌توانید توضیحات و مثال‌های آن را در لینک زیر مطالعه کنید.

https://james.newtonking.com/archive/2017/03/21/json-net-10-0-release-1-async-performance-documentation-and-more

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

https://ow.ly/WUU030aPV1A

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

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


___
Forwarded from Software Philosophy
رویداد «استارتاپ ویکند» یکی از رویدادهای جذابی است که مخصوصا برای برنامه نویسان می‌تواند بسیار مفید باشد. در این رویداد سه نوع ثبت‌نام وجود دارد.
- ثبت‌نام به عنوان «برنامه‌نویس»
- ثبت نام به عنوان «گرافیست»
- ثبت‌نام به عنوان «ایده‌پرداز یا بیزنس»
تیم‌هایی که در این رویداد شکل می‌گیرند در عرض ۳ روز محصولات شگفت‌انگیزی خلق می‌کنند که حاصل همکاری تیمی بسیار تنگاتنگ آنها طی این ۳ روز و به کمک منتورها است. برنامه‌نویسان در این رویداد تجربیات فوق‌العاده‌ای در زمینه ساخت یک «استارتاپ» و توسعه یک محصول جدید کسب می‌کنند.
اگر شما یک برنامه‌نویس هستید و دوست دارید در آینده صاحب یک بیزنس باشید این رویداد می‌تواند تاثیر فوق‌العاده‌ای در مسیر شما بگذارد و توصیه می‌شود در این رویداد شرکت کنید.

www.modotech.ir

#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd

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

___
Forwarded from Iran Agile
🔴 مهاجرت از پروژه به محصول

بسیاری از سازمانها پروژه محور هستند ولی فرآیندهای چابک برپایه تفکر محصول بنا شده اند. یکی از دشواری های ما در برنامه تحول چابک تغییر این نگرش است.
تفاوت اصلی این نگرش، تعیین معیار موفقیت است. معیار معروف موفقیت پروژه : زمان - هزینه - دامنه دقیق است که در بازه زمانی درست با هزینه پیش بینی شده کار وعده داده شده انجام بشود.

اما در موفقیت محصول، معیار ما ارائه ارزش سریع و مستمر به مشتری است. شاید زمان تخمین زده شده نیز محقق نشود، ولی اولین معیار ارزیابی، رضایت مشتری از طریق تحویل مدوام نرم افزار کننده است.

در این مورد بیشتر بخوانید:

https://goo.gl/es4sYM

@iranagile
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. مفهوم Stream API در Java
#java #stream
https://t.iss.one/SoftwarePhilosophy/856

۲. واقعیت DevOps چیست؟ (Iran Agile)
#devops
https://t.iss.one/SoftwarePhilosophy/857

۳. آشنایی با نحوه استفاده از ویژگی async در نسخه جدید کتابخانه Json.NET
#dotnet #json #async
https://t.iss.one/SoftwarePhilosophy/859

۴. استارتاپ ویکند مدوتک ۲
#startupweekend
https://t.iss.one/SoftwarePhilosophy/860
https://t.iss.one/SoftwarePhilosophy/861

۵. مهاجرت از پروژه به محصول (Iran Agile)
#product #project
https://t.iss.one/SoftwarePhilosophy/862

ـــــــــــ

@SoftwarePhilosophy
ذخیره لاگ به صورت ساخت یافته یکی از چالش‌های مهم نرم‌فزارهای نسل جدید است. با استفاده از 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 Software Philosophy
استفاده از هوش مصنوعی اخیرا جاذبه زیادی را در نرم‌افزارها ایجاد کرده‌است. یکی از ابزارهایی که می‌توانید در برنامه‌نویسی برنامه‌های خود از آن استفاده کنید Microsoft Cognitive Services (که قبلا به اسم پروژه آکسفورد معروف بود) است. شما با استفاده از این API می‌توانید احساساتی که در یک عکس وجود دارد را تشخصی دهید. برای مثال در لینک زیر با استفاده از این سرویس یک برنامه موبایل نوشته شده است که می‌تواند میزان رضایت کاربر از برنامه شما را از طریق عکس او تخشیص دهد.

نحوه نوشتن این برنامه برای سه پلتفرم Android, iOS, Windows 10 در لینک توضیح داده شده‌است.

https://github.com/Microsoft/XamarinAzure_ShoppingDemoApp/wiki/Cognitive-Services

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

https://ow.ly/ziQd30aSGEe

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

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


___
Forwarded from Iran Agile
🔴 چگونه با افراد و ذی‌نفعان دشوار برخورد کنیم؟

یکی از سختترین کارهای دنیا بحث و جدل با افراد دشوار است، افرادی که به راحتی بازخورد را قبول نمی‌کنند و سعی می‌کنند سرمواضع خود ثابت بمانند.

نباید های بحث با آنها:
* سعی کنید مسئله مورد بحث را با شخصیت خود نفر جدا کنید و به شخصیت او حمله نکنید.
* مسئله را عمومی و کلی مطرح نکنید: "تو همیشه عاشق جر و بحث هستی - تو همیشه جو تیم را به هم میزنی ..."
* اینکه دیگران چه می گویند را مطرح نکنید: "علی هم همین رو در مورد تو میگفت..."
* گمانه زنی نکنید: "تو اینکار رو کردی بخاطر اینکه جلسه قبل نتونسته بودی حرفت رو بزنی و این جلسه انتقام گرفتی"

https://goo.gl/Ja5riQ

@iranagile
نامگذاری به روش کباب! برای نحوه نامگذاری روش‌های مختلفی وجود دارد که هر زبان قانون خود را دارد. برای مثال حتما تا به حال از روش‌های نامگذاری PascalCase, camleCase, snake_case استفاده کرده‌اید. اخیرا یک روش نامگذاری را با اسم «روش کباب» دیدم که خیلی جالب بود! مدل kebab-case مدلی است که چون ظاهر آن شبیه این است که یک سیخ کباب از آن رد شده به kebab-case معروف شده‌است! جای خوشحالی دارد که یکی از عبارات فرهنگ ایرانی وارد اصطلاحات دنیای برنامه‌نویسی شده!

کتابخانه Lodash متدی برای تبدیل string به حالت kebab-case دارد. برای این منظور می‌توانید از _.kebabCase('my food bar') استفاده کنید که خروجی آن my-food-bar خواهد بود.

https://lodash.com/docs#kebabCase

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

https://ow.ly/Nu1030dx8j8


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

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


___
#پست_مجدد این پست تا به حال بیش از ۲۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
آیا مهاجرت به ASP.NET Core لازم است؟ نه لزوما! این جواب اولیه‌ای است که معمار ارشد مایکروسافت Dino Esposito به این سوال داده‌است. جمله جالب دیگر او این است که «کافیست که شما بدانید چطور یک نرم‌افزار وب بنویسید، و همین بس است». او در ادامه یک جمله از یک رمان را نقل قول کرده: «اگر ما بخواهیم چیزها همانطور که هستند بمانند، آنها مجبور به تغییر خواهد شد!»
بنابرین او اعتقاد دارد نسل آینده نرم‌افزارها به این سمت می‌رود و اگر می‌خواهید در آینده هنوز نرم‌افزار تحت وب بنویسید، بالاخره روزی خواهد رسید که باید ابزارهای قدیمی خود را کنار بگذارید و به سمت جلو حرکت کنید.

در پست زیر Dino نظر خود در باره فلسفه مهاجرت به ASP.NET Core را توضیح می‌دهد. نحوه نگارش او طوری است که خواندن آن بسیار آموزنده است.

https://www.linkedin.com/pulse/me-aspnet-core-you-dino-esposito

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

https://ow.ly/8Aqo30aTBEs


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

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


___
کدهایی که اجرای آنها زمانبر است ممکن است همیشه به درستی انجام نشوند. ریستارت سرور، قطع ناگهانی شبکه و خطای کد می‌توانند باعث توقف و عدم اجرای کد مورد نظر شوند. با 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

___
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. ذخیره لاگ به صورت ساخت یافته با استفاده از Serilog
#csharp #log #framework
https://t.iss.one/SoftwarePhilosophy/864

۲. نحوه استفاده از هوش مصنوعی Microsoft Cognitive Services در سه پلتفرم Android, iOS, Windows 10
#ai #cognitiveservices #dotnet
https://t.iss.one/SoftwarePhilosophy/866

۳. چگونه با افراد و ذی‌نفعان دشوار برخورد کنیم؟ (Iran Agile)
#softwaremeeting #requirement
https://t.iss.one/SoftwarePhilosophy/867

۴. نامگذاری به روش کباب!
#naming
https://t.iss.one/SoftwarePhilosophy/868

۵. نظر Dino Esposito در مورد زمان مهاجرت به ASP.NET Core
#aspnetcore #dotnetcore
https://t.iss.one/SoftwarePhilosophy/870

۶. استفاده از Hangfire در در .NET برای زمان بندی کارهای طولانی
#dotnet #scheduler #framework #jobrunner
https://t.iss.one/SoftwarePhilosophy/871

ـــــــــــ

@SoftwarePhilosophy
Forwarded from فلسفه دیزاین (Ramin Khatibi)
رازِ تعادل بین کار و زندگی شخصی

بهمن ماه ۳ سال پیش بود که به خودم آمدم و دیدم ۳ کار بصورت پروژه و با زمانبندی فشرده قبول کرده‌ام و از طرف دیگر در شرکتی که پاره‌وقت در آن مشغول بودم دو پروژه در دست طراحی دارم. با سختی فراوان و کمی تاخیر در موعدهای تحویل، تمامی کارها را به سرانجام رساندم. برای منی که همیشه به خاطر علاقه بسیار زیادم به دیزاین، از کار کردن لذت می‌بردم، سخت بود که ببینم در آن برهه زمانی، برای اولین بار در تمام این سال‌ها، حس بدی پیدا کرده‌ام. در آغاز سال بعد کارهای خود را سبک‌تر کرده و تلاشی مداوم را برای جایگزینی کیفیت به جای کمیت، در کارهای شرکت و پروژه‌های شخصی آغاز کردم.
ولی همیشه این سوال در ذهن من باقی ماند: افرادی که در شرکت‌های بزرگ دنیا کار می‌کنند که شاید یک ساعت کار آن‌ها و تصمیمی که در عرض چند دقیقه می‌گیرند، سرنوشت سرویسی را تعیین می‌کند که میلیون‌ها نفر از آن استفاده می‌کنند، چگونه بین کار و زندگی تعادل ایجاد می‌کنند؟

خانم Julie Zhou، معاون دیزاین Facebook که بارها از او گفته‌ام، در جواب یکی از خوانندگان خود به این موضوع می‌پردازد.
خانم Zhou در شرکتی کار می‌کند که به گفته دو هفته پیشِ Mark Zuckerberg حالا ۲ میلیارد کاربر دارد (جمعیت کل جهان ۷ میلیارد نفر است.) و مسئولیت هر تصمیم مدیران آن چندین برابر شده‌ست.
ایشان در جواب، با اشاره به اینکه این سوال دغدغه بسیاری از کسانی‌ست که در Silicon Valley در تکاپوی رسیدن به موفقیت هستند، بصورت موردی به چند نکته کلیدی از تجربیات خود می‌پردازد که رعایت کردن و توجه به ‌آن‌ها، ما را تصمیم‌گیری درباره مرزهای بین کار و زندگی شخصی، کمک می‌کند.

پیشنهاد می‌کنم همین حالا این مقاله بسیار لذت‌بخش و روشنگر را مطالعه کنید.

https://medium.com/the-year-of-the-looking-glass/the-mystery-of-work-life-balance-b8cf09c140f8

(زمان حدودی مطالعه، ۱۰ دقیقه)

پ. ن.
شاید خالی از لطف نباشد که به این موضوع هم اشاره کنم که چندی قبل، آقای Tobias van Schneider، طراح ارشد سابق Spotify، کسی که علاوه بر وبلاگ‌نویسی، انجام مصاحبه با افراد و ساخت پادکست، به سخنرانی در جمع‌های مختلف و همینطور انجام پروژه‌های مختلف می‌پردازد، در نوشته‌ای به سوال زیر پاسخ داده بود:
چگونه فرصت می‌کنید تمام این کارها را انجام دهید؟

آقای van Schneider در جواب گفته بود که هیچ لحظه‌ای را از دست نمی‌دهم.
وقتی از سر کار به خانه می‌آیم،‌ بدون از دست دادن لحظه‌ای، پای کارهای شخصی خود می‌نشنیم و آن‌ها را با علاقه انجام می‌دهم. چون می‌دانم اگر استراحت کنم، بسیار سخت دوباره کار را آغاز می‌کنم.

#زندگی_دیزاینر #سبک_زندگی
@Dexign دیزاین

___
یکی از مسایلی که برنامه نویسان با آن درگیر هستند فهمیدن نحوه استفاده از یک وب سرویس (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

___
لینوکس Ubuntu در Windows Store قرار گرفت! نتیجه همکاری Microsoft و Canonical امکان اجرای لینوکس روی سیستم عامل Windows 10 بدون استفاده از VM شده‌است. طبق گفته Scott Hanselman به زودی امکان اجرای موازی و مستقیم n نسخه لینوکس روی ماشین‌های Windows 10 (و بدون استفاده از VM) فراهم می‌شود.

https://www.hanselman.com/blog/UbuntuNowInTheWindowsStoreUpdatesToLinuxOnWindows10AndImportantTips.aspx

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

https://ow.ly/EeFG30dIsnz

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

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


___
Forwarded from Iran Agile
🔴 روشهای چابک در عمل موفق یا شکست خورده؟

بعد از معرفی رسمی بیانیه چابک در سال 2001 و گذشت حدود 15 سال، آیا روشهای چابک توانسته‌اند به موفقیت پروژه‌ها کمک کنند؟ یا فقط صرفا مد جدیدی در صنعت نرم افزار بود و تفاوت خاصی در وضعیت ایجاد نکردند؟

در این نوشته گزارش سال 2015 موسسه استندیش گروپ را با هم بررسی می کنیم.

با بررسی نزدیک به 10 هزار پروژه نرم افزاری، آمار موفقیت پروژه های چابک در سال 2015، 39% و روش های سنتی 11% بوده است. آمار شکست پروژه های چابک 9% و روش های سنتی 29% بوده است، اگر فقط براساس آمار شکست انتخاب کنیم، روشهای چابک به نظر کم ریسک تر و احتمال موفقیت بالاتر خواهد بود.

اما همچنان، آمار پروژه چالش دار در هر دور روش بالا است.

در مورد اندازه پروژه ها، روشهای چابک همچنان در پروژه های بزرگ و کوچک آمار موفقیت بالاتری دارند، اما در هر دو روش آمار شکست در پروژه های بزرگ بیشتر است. نگرشی که این آمار برای ما میتواند ایجاد کند، بهترین راه برای بالا بردن آمار موفقیت پروژه بزرگ، شکستن آن به پروژه ها یا بخش های کوچکتر است(چه با روش چابک یا سنتی).

https://goo.gl/2y4bVE

@iranagile