Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from Software Philosophy
ظهور فناوری‌های جدید در طراحی بازی‌های جدید کامپیوتری تاثیر زیادی دارد. یکی از مهمترین تغییراتی در حال متحول کردن بازی‌های کامپیوتری است، «واقعیت مجازی» یا حتی «واقعیت ساختگی‌» است. ویدئوی زیر یکی از بازی‌هایی را نشان می‌دهد که روی تخته سنگ واقعی که صخره نوردان از آن بالا می‌روند پیاده‌سازی شده‌است. این بازی از طریق یک Kinect سنگنورد را روی تخته سنگ شناسایی و دنبال می‌کند و در نهایت از طریق پروژکتور بازی را روی تخته سنگ نمایش می‌دهد. این سبک‌ بازی‌ها نشان می‌دهند که به راحتی می‌توان با یک زبان برنامه نویسی مانند C# به دستگاه Kinect وصل شد. برای خلق محصولات خاص و جدیدی مانند این بازی، می‌توانید از Kinect SDK استفاده کنید.

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
پیش بینی می شود که تکنولوژی‌های واقعیت مجازی و واقعیت افزوده تا سال 2020 بتوانند 150 میلیارد دلار درآمد داشته باشند که بیشترین سهم را واقعیت مجازی یا Augmented Reality دارد. در نتیجه یادگیری استفاده از این تکنولوژی و یا تولید برنامه‌هایی برپایه این تکنولوژی به برنامه نویسان موبایل توصیه می‌شود. در این راستا خیلی از شرکت ها،SDK هایی برای سیستم عامل های Android و IOS تولید کرده اند که بین آن ها Wikitude از همه پر طرفدارتر بوده است. توضیحات تکمیلی و نسخه آزمایشی آن را می توانید در لینک زیر پیدا کنید.

https://www.wikitude.com/products/wikitude-sdk/

#کاروان_جافی

لینکدین:
https://uk.linkedin.com/in/karvan-jafi-96897027

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

___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
فرایند رفع Bug و یکپارچه کردن آن با فرایند توسعه نرم‌افزار معمولا یکی از چالش‌هایی است که تیم‌های برنامه‌نویسی با آن مواجه می‌شوند. معمولا اسپرینت‌ها بر اساس نیازمندی‌ها برنامه‌ریزی می‌شوند) و باگ‌ها استثناهایی هستند که در اجرای معمولی اسپرینت اختلال ایجاد می‌کنند (در متدولوژی‌های مختلف نیازمندی به عنوان استوری یا Backlog یا Requirement شناخته می‌شود). در قبال یکپاچه کردن فرایند رفع باگ‌ها می‌توان از دو رویکرد استفاده کرد.
۱. در یک اسپرینت می‌توان با باگ‌ها همانند یک نیازمندی برخورد کرد.
۲. در اسپرینت می‌توان با باگ‌ها همانند تسک‌هایی برخورد کرد که مربوط به یک نیازمندی خاص هستند و اصولا هر باگ حتما باید به عنوان فرزند یک نیازمندی تعریف شود.

هرکدام از این روش‌ها مزایایی دارد. در لینک زیر این مفاهیم شرح داده‌شده و نمودار فرایند چرخش باگ در فرایند‌های Agile, Scrum و CMMI مقایسه شده است.

https://www.visualstudio.com/docs/work/backlogs/manage-bugs

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

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

___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
با توجه به افزایش استفاده از تلفن همراه بسیاری از افراد برای دستیابی به اطلاعات دنیای وب از تلفن همراه خود استفاده می‌کنند و آمار استفاده از موبایل روند صعودی خود را می‌پیماید. گوگل در اوایل سال 2016 یکی از ابزارهای جدید خود، به نام AMP(Accelerated Mobile Pages) را منتشر کرده است. هدف از ارائه این ابزار بهبود عملکرد صفحات وب حاوی متن, تصویر، فیلم، انیمیشن و…. در موبایل می‌باشد که در نتیجه آن سرعت لود صفحات در موبایل افزایش می‌یابد، خصوصا سایت‌هایی که دارای متن زیادی می‌باشند )مانند سایت‌های خبری.(
پروژه AMP یک فریم‌ورک جدید و متن باز است که به طور کامل از فناوری‌های موجود در وب ساخته شده است. این پروژه که به وسیله گوگل و توییتر انجام شده است، به برنامه نویسان کمک می کند صفحات HTML با حجم کم ایجاد کنند. شما به عنوان یک برنامه نویس فقط تگ‌های خاصی از HTML را می‌توانید استفاده کنید و مجاز به استفاده از همه تگ‌ها نیستید. همچنین شما فقط می‌توانید کدهای ساده CSS و آن‌هایی که دارای کاربرد بسیار هستند را استفاده کنید. استفاده از کدهای جاوا اسکریپت نیز در همه جا مجاز نمی‌باشد. در واقع AMP استاندارد خاصی را برای کدهای شما در نظر می‌گیرند و کدهایی که حجم صفحات را افزایش می‌دهد، به عنوان عامل غیرمجاز در نظر می‌گیرد.
با مراجعه به لینک زیر علاوه بر آشنایی بیشتر با این زیرساخت قدرتمند می‌توانید در راستای استاندارد کردن سایت خود بر مبنای AMP گام بردارید.

https://www.ampproject.org/docs/get_started/create

#محمدرضا_جلیلوند
لینکدین:
https://ir.linkedin.com/in/mohammad-reza-jalilvand-0a5572b1

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

___
فریم ورک JoinJs یک کتابخانه جاوا اسکریپتی قوی برای ایجاد دیاگرام، چارت درختی، گراف و ... است. این کتابخانه با بکارگیریHTML5 و SVG، نمایش و ایجاد گراف به شکل های مختلف را فراهم کرده است.
لینک زیر، مربوط به همین کتابخانه بوده، که شامل دمو از قابلیت‌ها و آموزش نحوه استفاده از آن است.

https://jointjs.com/

#مریم_داودی

لینکدین:
https://www.linkedin.com/in/maryam-davoudi-7913565a

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

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

۱. قابلیت‌های مهم یک مدیر فنی
#management #cto

https://telegram.me/SoftwarePhilosophy/571


۲. استفاده از واقعیت مجازی در ساخت بازی‌های کامپیوتری
#augmentedreality #kinectprogramming

https://telegram.me/SoftwarePhilosophy/574
https://telegram.me/SoftwarePhilosophy/573


۳. واقعیت مجازی و معرفی Wikitude
#augmentedreality

https://telegram.me/SoftwarePhilosophy/576


۴. رویکردهای مختلف فرآیند رفع باگ در چرخه توسعه نرم‌افزار
#softwareprocess #sdlc #bug

https://telegram.me/SoftwarePhilosophy/578


۵. فریم‌ورک AMP و فرآیند هماهنگ‌سازی سایت با مرورگرهای موبایل
#javascript #mobile

https://telegram.me/SoftwarePhilosophy/580


۶. معرفی فریم‌ورک JoinJS
#javascript #framework

https://telegram.me/SoftwarePhilosophy/582


ـــــــــــ

@SoftwarePhilosophy
«استارتاپ ویکند» یکی از رویدادهای جذابی است که مخصوصا برای برنامه نویسان می‌تواند بسیار مفید باشد.
https://modotech.ir

@SoftwarePhilosophy

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

www.modotech.ir

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

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

___
#پست_مجدد این پست تا به حال بیش از ۲۴۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
قورباغه را دوباره اختراع نکنید!

در مهندسی نرم‌افزار، شناخت دقیق نیازمندیها و سپس ساخت محصولی مطابق نیازمندیها یکی از کارهای به ظاهر ساده ولی در عمل پیچیده است. مطلب زیر داستانی را تشریح می‌کند که در آن یک مهندس نرم‌افزار هنگام خلقت زمین پروژه طراحی «زنبور» را بر عهده گرفته‌است. ولی به دلایلی که در داستان توضیح داده شده اقدام به طراحی یک «وزغ» می‌کند که هیچ تناسبی با نیازمندیهای «زنبور» ندارد. این مهندس نرم‌افزار در حقیقت به جای خلق موجودی که نیازمندیهای زنبور را برآورده کند، یک حیوان جدید به نام وزغ خلق کرده که اتفاقا خدا قبلا آن را با نام «قورباغه» خلق کرده بوده!
اگر لینک زیر را کامل بخوانید ارتباط آن را با پروژه‌های نرم‌افزاری می‌بینید و خواهید دید که چگونه این خطا باعث شکست یک پروژه نرم‌افزاری می‌شود.


https://mehrandvd.me/2016/03/09/reinventing-the-frog/

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


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


___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
کتابخانه LinqToTwitter یکی از LINQ Provder های جذاب ‌است که روی معماری LINQ بنا شده‌است. به وسیله این کتابخانه به راحتی می‌توانید روی توییتر با استفاده از LINQ جستجو کنید. معماری LINQ بسیار زیبا و قابل گسترش طراحی شده‌است. این معماری به این صورت است که خود LINQ به صورت یک «زبان پرس‌جو مستقل از تکنولوژی» طراحی شده‌است. سپس از مفهومی به نام LINQ Provider برای اجرای پرس و جو استفاده می‌شود. لیست Provider های زیر معمولا شناخته شده‌تر هستند:
• LinqToObjects
• LinqToSql
• LinqToEntityFramwork
• LinqToXml
اما با توجه به معماری LINQ می‌توان روی هر بستر اطلاعاتی LINQ Provider های جدید نوشت که LinqToTwitter یکی از آنهاست. در اینترنت می‌توان Provider های جذاب دیگری مانند LinqToFacebook را نیز جستجو کرد.

https://github.com/JoeMayo/LinqToTwitter

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

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

___
#پست_مجدد این پست تا به حال بیش از ۲۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
نسخه بعدی زبان جاوا یا Java 9 در راه است. مهمترین امکانات اضافه شده در نسخه قبلی Java 8 مفهوم Lambda، Stream و تغییرات API بود. در نسخه جدید Java 9 مهمترین تغییر، پروژه‌ Jigsaw است که هدف آن شکستن JRE به قطعات کوچک و ماژولار کردن کامپوننت‌های Java core است تا بتوان از آن در دستگاه‌های محاسباتی کوچک به راحتی استفاده کرد. ولی به غیر از این تغییر اساسی، تغییرات جذاب دیگری نیز در راه است. مهمترین این تغییرات عبارتند از:
1. Java + REPL (jshell)
2. Microbenchmarks
3. G1: a new garbage collector (maybe)
4. Full support for HTTP 2.0
5. Process API
6. Debugging in Production
در مقاله زیر این امکانات توضیح داده شده‌اند. همچنین در مورد تصمیم‌گیری برای اضافه کردن G1 به Java 9 و وضعیت آن صحبت شده‌است.

https://blog.takipi.com/5-features-in-java-9-that-will-change-how-you-develop-software-and-2-that-wont

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

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

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

طبق تحقیقات انجام شده به علت عدم وجود Onboarding در سازمان‌ها 16% از نیروهای تازه استخدام شده در همان هفته اول و 17% نیز در ماه اول از ادامه همکاری با شما منصرف می‌شوند. قاعدتا در ماه اول استخدام برای نیروهای جدید یک دروه‌ی آموزشی برگزار میشود. اگر این نیروی جدید بعد از یک ماه منصرف شود چه زیانی به سازمان وارد شده است:
• بدون شک فردی که مسئول آموزش به نیروی جدید است در آن 1 ماه راندمان سابق را ندارد به 2 دلیل: زیرا زمانی از روز را به آموزش تخصیص داده است و همچنین به علت سوالات نیروی جدید نمی‌تواند تمرکز لازم را روی کار خود داشته باشد.
• نتیجه‌ای که بعد از 1 ماه حاصل میشود چیزی بجز ضرر برای شما نیست. ۱- وظایفی که مسئول آموزش می‌توانست در 1 ماه انجام دهد به طور کامل انجام نشده است. ۲- شما بابت کاری که هیچ فایده‌ای برای سازمان نداشته است به مسئول آموزش حقوق داده‌اید.

از مزایای Onboarding می‌توان به موارد زیر اشاره کرد:

افزایش:
• رضایت شغلی
• عملکرد شغلی
• تعهد سازمانی
و همچنین کاهش:
• استرس شغلی
• ترک کار

لینک زیر به صورت شماتیک به مزایای Onboarding اشاره می‌کند.

https://business.linkedin.com/talent-solutions/blog/2014/06/what-do-new-hires-want-from-onboarding-infographic

#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati

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

___
مدیریت نسخه‌ها در طراحی RESTFul Web Api ها در معماری نرم‌افزارهای نسل جدید به یک مفهوم مهم تبدیل شده‌است. از آنجاییکه «تغییر» و بهبود یکی از فاکتور‌های جدا نشدنی در نرم‌افزار است و در نسل جدید نرم‌افزارها تغییر بسیار سریعتر اتفاق می‌افتند، مدیریت آن بسیار مهم است.
مدیریت نسخه‌ها در Web Api حتی می‌تواند در طراحی آن تاثیر بگذارد. برای مثال طراحی api ممکن است به روش‌های زیر باشد:
• /api/foo?api-version=1.0
• /api/foo?api-version=2.0-Alpha
• /api/foo?api-version=2015-05-01.3.0
• /api/v1/foo
• /api/v2.0-Alpha/foo
• /api/v2015-05-01.3.0/foo

در لینک زیر «اسکات هانسلمن» کتابخانه‌ای را برای مدیریت versioning در .NET را معرفی کرده‌است که معماری بسیار خوبی دارد و به راحتی می‌توان از آن استفاده کرد.

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

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

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

___
Forwarded from فلسفه دیزاین
50 Shades of #FAFAFA
یا اشتباهاتی که همه ما دیزاینرها انجام دادیم

برای پروژه ۵ رنگ انتخاب کنید.
قوانین تایپوگرافی خودتون رو ابداع نکنید!
خاکستری‌ها رو کمی تیره‌تر کنید.
تمامی جاهایی که از فونت light استفاده کردین رو انتخاب کرده و همگی رو ضخیم‌تر کنید.
و …
وقتی غرق در طراحی هستیم، گاهی فراموش می‌کنیم که دیزاین ما ابزاری خواهد بود برای انسان‌ها که بتونن با استفاده از اون، کارهایی رو راحتتر انجام بدن. این فراموشی باعث میشه دیزاین‌هایی رو انجام بدیم که در وهله اول زیبا به نظر برسه ولی وقتی قراره به یک محصول تبدیل بشه، در روند پیاده‌سازی‌ش رفته رفته زیبایی خودش رو از دست بده.

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

در این مقاله با آقای Jon Moore همراه می‌شیم تا لیستی از اشتباهاتی رو که دیزاینرها انجام میدن، مرور کنیم. مرور این لیست به ما کمک می‌کنه که روند و نقشه راه دیزاین محصولات با دید بازتری به اشتباهات احتمالی، تعریف کنیم و از تقلید کورکورانه دیزاین‌های انجام شده دوری کنیم.

البته ناگفته نمونه که شخصا با بعضی از مواردی که ذکر شده موافق نیستم ولی بطور کلی به موارد بسیار خوبی اشاره کردن و به شدت خوندش رو توصیه می‌کنم.

https://medium.com/@jon.moore/fifty-shades-of-fafafa-eaa903e36b9c

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

#طراحی_محصول #اشتباهات_دیزاینرها #معرفی_مقاله
@HamDesign هَم دیزاین