Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
#پست_مجدد این پست تا به حال بیش از ۱۵۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
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
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. رازِ تعادل بین کار و زندگی شخصی (دیزاین)

https://t.iss.one/SoftwarePhilosophy/873

۲. نحوه استفاده از Swagger برای تهیه مستندات در Web API ها

https://t.iss.one/SoftwarePhilosophy/874

۳. لینوکس Ubuntu در Windows Store قرار گرفت!

https://t.iss.one/SoftwarePhilosophy/875

۴. روشهای چابک در عمل موفق یا شکست خورده؟

https://t.iss.one/SoftwarePhilosophy/876

ـــــــــــ

@SoftwarePhilosophy
آیا گوگل آبجکت‌هایی که به صورت دینامیک در یک صفحه اینسرت می‌شوند را هم ایندکس می‌کند؟
شاید برای شما هم قواعد رفتاری بات‌ها و کرالر (crawler) های گوگل گیج کننده باشد، آیا گوگل آبجکت‌ها و لینک‌های جاوا اسکرسپتی را ایندکس می کند؟ آیا گوگل DOM ها را ایندکس می‌کند؟ نحوه رفتار گوگل در ایندکس صفحه‌ای که ریدایرکت (Redirect) شده است چگونه است؟ آیا این‌ها ایندکس می‌شوند؟
المان‌های صفحه و متا دیتاها چطور؟

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


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

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

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

https://ow.ly/4Ihc30dPA9G

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

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

___
یکی از مسایلی که برنام‌ نویسان در 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

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

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

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

https://ow.ly/e40v30dRMZU

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

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


___
یکی از دغدغه های مهم همه ی کاربران امنیت وب سایت آنها و جلوگیری از نشت اطلاعات می باشد. OWASP سالانه 10 مورد از مهمترین ریسک های نرم افزارهای تحت وب را منتشر می کند. در لینک زیر Troy Hunt به تفکیک هر کدام از این ده مورد را برای برنامه نویسان .NET شرح و مورد بررسی قرار داده است.

https://www.troyhunt.com/owasp-top-10-for-net-developers-part-1/

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

https://ow.ly/7BIV30dVvof

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


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

___
نرم افزاری برای آموزش امنیت به صورت واقعی! Web Goat یک پیاده سازی نرم افزار وب با آسیب پذیری‌های امنیتی برای آموزش امنیت می‌باشد که توسط OWASP توسعه داده شده است. برای مثال کاربر با انجام حمله‌ی SQL Injection بصورت واقعی به این نرم افزار و سرقت شماره کارت‌های اعتباری، با حملات نرم افزاری و نحوه‌ی عملکرد آن بیشتر آشنا می شود.

https://www.owasp.org/index.php/Category:OWASP_WebGoat.NET

https://github.com/adnanmasood/webgoat.mvc

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

https://ow.ly/2YSf30dXlC6

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


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

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

۱. آیا گوگل آبجکت‌هایی که به صورت دینامیک در یک صفحه اینسرت می‌شوند را هم ایندکس می‌کند؟
#seo
https://t.iss.one/SoftwarePhilosophy/878

۲. مدیریت کدها در کنترلر با استفاده از MediatR
#dotnet #web
https://t.iss.one/SoftwarePhilosophy/879

۳. پروژه هوش مصنوعی گوگل به نام DeepMind
#ai #google
https://t.iss.one/SoftwarePhilosophy/880

https://t.iss.one/SoftwarePhilosophy/881

۴. ده تهدید مهم نرم‌افزارهای تحت وب در سال ۲۰۱۷
#security
https://t.iss.one/SoftwarePhilosophy/882

۵. نرم افزاری برای آموزش امنیت به صورت واقعی!
#security
https://t.iss.one/SoftwarePhilosophy/883

ـــــــــــ

@SoftwarePhilosophy
مساله‌ای که ممکن است برای هر برنامه‌نویسی چالش باشد این است که کدها را چگونه و بر چه اساسی در قالب فولدرها مرتب نماید. بعنوان مثال در یک پروژه‌ی وب View ها، Controller ها و Model ها هر کدام در یک فولدر جداگانه باشند و یا بر اساس کارکرد View ، Controller و Model ها در کنار هم قرار داشته باشند. در ویدیو زیر اسکات آلن بر اساس تجربه اش به این موضوع و 51 مساله ی دیگر می پردازد.

https://www.youtube.com/watch?v=6Fi5dRVxOvc


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

https://ow.ly/b1QP30e0yvS

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


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

___