Software Philosophy
3.46K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
با ظهور تکنولوژی Roslyn شما می‌توانید از زبان C# به عنوان زبان اسکریپتینگ در برنامه‌های خود استفاد کنید. این مفهوم به این معنی است که شما برای مثال قسمتی از کد سی‌شارپ مورد نیاز برنامه‌تان را از طریق یک TextBox از کاربر بگیرید و در واقع به کاربران (پیاده‌سازان نرم‌افزار) بدون نیاز به تغییر کد اجازه شخصی‌سازی کد دهید. لینک زیر که از سری لینک‌های اموزشی Josh Vatry در این زمینه است می‌تواند دید خیلی خوبی در مورد امکانات اسکریپتینگ توسط Roslyn به طراحان بدهد.

https://joshvarty.wordpress.com/2015/10/15/learn-roslyn-now-part-14-intro-to-the-scripting-api

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

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


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

https://www.cio.com/article/2436015/enterprise-architecture/5-things-grady-booch-has-learned-about-complex-software-systems.html

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

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

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


___
دیتابیس‌های NoSQL امروزه در معماری‌های نوین نرم‌افزار جایگاه ویژه‌ای پیدا کرده‌اند. در سال‌های قبل از این نوع دیتابیس‌ها فقط در پروژه‌های خاصی استفاده می‌شد ولی به مرور نقش این نوع دیتابیس‌ها با ظهورمعماری‌های نوین یا مفاهیمی مانند CQRS پر رنگ تر شده‌است. مفاهیم این دیتابیس‌ها به طور کلی با مدل فکری دیتابیس‌های رابطه‌ای یا Relational متفاوت است.

https://www.c-sharpcorner.com/article/introduction-to-no-sql-and-working-with-mongodb-part-one/

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

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


___
Forwarded from Software Philosophy
نسل جدید فریم‌ورک‌های JavaScript برای ساخت برنامه‌های SPA در راه هستند. فریم‌ورک‌های Angular 2.0، React و Aurelia فریم‌ورک‌های نسل بعدی هستند که عمدتا بر پایه ES6 نوشته‌شده‌اند. فریم‌ورک Angular 2.0 نسخه جدید این فریم‌ورک محبوب است هنوز قبل از ریلیز بیشترین طرفدار را دارد. این فریم‌ورک توسط گوگل و مایکروسافت پشتیبانی می‌شود. فریم‌ورک React که توسط فیسبوک پشتیبانی می‌شود بسیار قوی است ولی ذاتا هدف آن انجام تمام وظایف یک SPA نیست و بیشتر روی HTML Rendering تمرکز دارد.
فریم‌ورک Aurelia نسخه بعدی Durandal است که قبلا رقیب کمتر شناخته شده Angular بود. خالق این فریم‌ورک قبلا در تیم Angular 2.0 بود که بعدها به دلایلی تصمیم گرفت از این تیم جدا شود و فریم ورک رویای خود را خلق کند. یکی از مزایای این فریم‌ورک Syntax بسیار ساده و روان آن است که تقریبا در هر مقایسه‌ای به آن اشاره شده‌است.
مقاله زیر این فریم‌ورک‌ها را با جزئیات بیشتری با هم مقایسه کرده‌است.

https://blog.ae.be/comparing-angular-aurelia-react-js-framework/

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

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



___
Forwarded from Iran .Net
معرفی Zen Coding یا Emmet Syntax

برای من همیشه نوشتن کد های HTML با دشواری و مرارت های زیادی همراه بوده. نوشتن ساختار های تو در تو، قرار دادن id و class مناسب و باز و بسته کردن تگ ها و قرار دادن قرزند ها در داخل تگ ها حقیقتا کار هایی خسته کننده، تکراری و حوصله سر بر هستند.
روش Zen Coding یا Emmet Syntax برای حل همین مسئله به وجود آمده و سرعت توسعه کد های HTML را بسیار بیشتر خواهد کرد. پس از استفاده از این روش، به هیچ وجه قادر نخواهید بود که به روش سنتیِ گذشته کد های HTML بزنید.
1. مثلا با استفاده از دستور div#control.panel.panel-success و فشردن کلید tab، یک div با شناسه panel و کلاس های panel و panel-success ساخته خواهد شد.
2. با استفاده از Zen Codding به راحتی می توانیم المنت های داخلی هم در یک خط تعریف کنیم. مثلا ul>li*5 موجب خواهد شد یک ul همراه با پنج المنت li در درون اش تعریف شود.
سعی کنید حتما از روش Zen Coding استفاده کنید، چرا که سرعت توسعه شما را به شدت بالا خواهد برد.
Zen Coding پس از نصب افزونه Web Essentials در ویژوال استودیو افزوده خواهد شد. همچنین Visual Studio Code به طور پیش فرض از این روش پشتیبانی می کند.

1. جدول آموزش سریع Zen Coding
https://docs.emmet.io/cheat-sheet/
2. افزونه Web Essentials
https://vswebessentials.com/

@irandotnet
Forwarded from Software Philosophy
نامگذاری در برنامه‌نویسی شاید یکی از مهمترین کارهایی باشد که یک برنامه‌نویس انجام می‌دهد. یک برنامه‌نویس با نامگذاری متغییر‌ها، کلاس‌ها، فایل‌ها و ... در حقیقت مفاهیم جدید خلق می‌کند که در آینده برنامه‌نویسان دیگر معنی آن را از روی «نام» آنها حدس خواهند زد!
فصل زیر از کتاب Framework Design Guidlines (که به FDG معروف است) به طور اختصاصی استانداردهای نامگذاری را که در طراحی .Net Framework استفاده شده‌است را شرح می‌دهد. این کتاب برای ساخت تمامی سیستم‌ها در مایکروسافت به عنوان یک مرجع استفاده می‌شود. به همین دلیل هم در سایت msdn به صورت رایگان و قابل دسترس برای همه وجود دارد و هم کتاب چاپی آن وجود دارد که بسیار محبوب است.

https://msdn.microsoft.com/en-us/library/ms229002%28v=vs.110%29.aspx

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

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


___
Forwarded from Software Philosophy
امکاناتی که در Java 8 اضافه شده بسیار جذاب و دوست داشتنی هستند. عمده این امکانات حول محور مفهوم Lambda Expression می‌چرخند که باعث می‌شوند برنامه‌نویسی با استفاده از مفاهیم Functional Programming بسیار لذت‌بخش‌تر شود. سایت زیر یک Cheat Sheet خیلی مختصر و مفید از مثال‌هایی است که می‌توانید در نسخه جدید جاوا از آنها استفاده کنید.

https://www.java8.org/

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

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


___
Forwarded from Software Philosophy
نحوه استفاده از الگوریتم‌های Hash در .net core نسبت به .net تفاوت‌های محسوسی کرده‌است. پیاده‌سازی و API مربوط به عملیات امنیتی در .net core مجددا طراحی شده‌اند. مقاله زیر به آزمایش و آموزش استفاده از این الگوریتم‌ها پرداخته است. جالب است که این آزمایش‌ها و آموزش‌ها روی Ubuntu انجام شده‌اند.

https://www.c-sharpcorner.com/article/hashing-passwords-in-net-core-with-tips

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

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


___
نرم‌افزار Continuous یک IDE سریع و قوی برای C# و F# است که مستقیما روی iPad و iPhone بدون نیاز به شبکه اجرا می شود. با استفاده از این IDE می توانید اپ ها و بازی‌ها را روی دیوایس خود کد بزنید و اجرا کنید. نحوه عمکرد Continuous به صورت تعاملی است به این معنا که دائما کد شما را اجرا می کند و می توانید به محض تغییر در کد تاثیر آن را در اجرای برنامه ببینید.

https://continuous.codes/

#سپیده_قنبری

لینکدین:

https://ir.linkedin.com/in/sepideh-ghanbari-584ba25a

کانال تلگرام:
@SoftwarePhilosophy
اضافه کردن فیچر به نرم‌افزار غالبا ویژگی مثبتی به نظر می‌رسد. ولی وقتی تیمی دارید که قدرت بسیار بالایی دارد اضافه کردن فیچرها با سرعت خیلی زیاد خودش می‌تواند نکات منفی داشته باشد. وقتی قدرت اضافه کردن امکانات با سرعت زیاد دارید باید محتاط باشید که امکانات جدید راه‌حل‌هایی جدید برای یک مسئله حل شده نباشند. داشتن تیم قدرتمند این قدرت را به مدیران می‌دهد که بتوانند سریع ایده‌های ذهنی خود را پیاده‌سازی کنند. در این حین باید مراقب بود این امکانات با هم، همپوشانی نداشته باشند.
مثال زیر از تیم توسعه C# آورده شده‌است که در مورد کاربرد دو امکان این زبان که در نسخه‌های ۵ و ۶ اضافه شد صحبت می‌کند.

https://mehrandvd.me/2016/05/02/steady-consistent-flow-features/

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

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



___
زمانیکه یک اپلیکیشن SPA رشد می کند و بزرگ و بزرگتر می شود، زمان لود آن نیز بیشتر می شود. به عبارت دیگر کد بیشتر به معنی فایلهای بزرگتر است و خیلی زود اپلیکیشن به مرحله ای می رسد که دیگر حتی minify کردن فایلها نیز پاسخگو نیست. اینجاست که باید فایل ها را هنگام نیاز لود کرد نه همه را در یک زمان. برای این منظور می توان از فریم ورکهای requireJS و ocLazyLoad استفاده کرد.
فریم ورک requireJS، عمدتا برای لود فایلهای جاوا اسکریپت dependency استفاده می شود و امکان لود فایلهای CSS وجود ندارد. همچنین امکان inject ماژولهای AngularJS وجود ندارد.
در فریم ورک ocLazyLoad ، نه تنها امکان لود فایلهای dependency و inject فایلهای AngularJs وجود دارد بلکه براحتی می توان فایلهای CSS را نیز لود کرد.
مقاله زیر مقایسه کامل و قابل فهمی از دو فریم ورک RequireJS و ocLazyLoad ارائه کرده است.

https://www.codeproject.com/Articles/1039826/Angularjs-Lazy-Loading-with-Requirejs-and-OcLazylo

#مریم_داودی

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

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



___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارند «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید و این پیغام را برای آنها Forward کنید.
اصطلاح Full Stack Developer عبارتی است که در چند سال اخیر بسیار رایج شده‌است. این برنامه‌نویسان معمولا درک خوبی از برنامه‌نویسی، زیرساخت، طراحی و حتی فهم بیزنس‌ها دارند. چند سالی هم هست که «متخصص UX» به عنوان یک تخصص مهم در تیم‌ها جا افتاده است. مقاله زیر اصطلاح جدیدی را با عنوان Full Stack UXer را معرفی می‌کند و نشان می‌دهد که این نقش و تخصص در یک تیم چقدر می‌تواند به موفقیت کمک کند. در این مقاله تخصص‌هایی که از یک Full Stack UXer انتظار می‌رود توضیح داده شده است. در این تعریف معمولا این فرد بیشتر درگیر تخصص‌های زیادی خواهد بود که از Gamification تا حتی برنامه‌نویسی را شامل می‌شود.

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

https://uxmag.com/articles/the-full-stack-uxer

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

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



___
اگر از کامپوننت‌های خاصی در برنامه‌های وب خود استفاده کرده‌اید احتمالا در فایل web.config یک قسمت <compilation>‌که در آن تگ <assemblies> وجود دارد را دیده‌اید. این که این تگ چه کاربردی دارد و معرفی کردن رفرنس‌ها در فایل web.config چه فایده‌ای دارد در لینک زیر توسط Rick Strahl توضیح داده شده است.

https://weblog.west-wind.com/posts/2009/May/04/Adding-Default-Assemblies-Namespaces-and-Control-Prefixes-in-WebConfig

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

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



___
Forwarded from Software Philosophy
اگر تا به حال با ASP.NET Core RC1 کار می‌کردید و الان می‌خواهید با نسخه جدید یعنی RC2 کار کنید نیاز دارید به نسخه جدید مهاجرت کنید. مهاجرت به نسخه جدید معمولا از اینکه آن را از ابتدا نصب کنید سخت‌تر است. لینک زیر به صورت قدم به قدم مراحل مهاجرت به نسخه جدید و شروع توسعه سیستم با آن را توضیح داده‌است.

https://ievangelist.github.io/blog/migrating-to-rc2

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

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



___
اگر قبل از انتشار نسخه نهایی .net core 1 مشغول آزمایش نسخه‌های rc آن بوده اید، الان وقت آن است که نسخه نهایی را نصب و استفاده کنید. برای آن دسته از برنامه نویسانی که این پلتفرم را روی سیستم عامل OSX و سیستم‌های Mac استفاده می‌کردند لینک زیر می‌تواند بسیار راهگشا باشد.
در این لینک توضیح داده شده‌است که چگونه رو سیستم‌هایی که نسخه‌های قدیمی‌تر را داشته‌اند، نسخه جدید را تنظیم کنید.

https://iamnotmyself.com/2016/06/27/installing-net-core-1-0-on-a-dirty-osx

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

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



___
Forwarded from Software Philosophy
«شما می توانید عناوبن را خرید و فروش کنید، در یک دوره کوتاه مدت شرکت کنید و یک واژه به عنوان شغلی خود اضافه کنید. اما نمی توانید تجربه را بخرید. تنها می توانید آن را بیاموزید». این جملات بخشی از بلاگ “Agile is Dead” است که در سال 2014 توسط یکی از تئوریسین هایAgile نوشته است. خواندن این مطلب هم برای عاشقان این متد و هم برای دیگر دوستان خالی از لطف نیست.

https://pragdave.me/blog/2014/03/04/time-to-kill-agile

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

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

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



___
Forwarded from Software Philosophy
با شدت گرفتن روند تغییرات در درخواست‌های مشتریان، نیازمندی‌های پروژه‌ها و مسائل مربوط به پشتیبانی محصولات در دهه‌های اخیر، بسیاری از شرکت ها پی بردند که هماهنگ شدن با بازار با استفاده از فرآیند های تجاری قدیمی امکان پذیر نیست. لذا بسیاری از توسعه دهندگان و مدیران محصولات به متدلوژی‌های جدید مانند Agile روی آوردند. در حال حاضر این متدلوژی با وجود نواقصی که به آن وارد است بیشترین طرفدار و بازدهی را به خصوص در میان شرکت های کامپیوتری داشته است.
اما لزوما استفاده از یک متدلوژی، روش یا ابزار موفق، دلیل بر موفق شدن ما نیست، لذا آشنایی با متدلوژی ها و رویکردهایی مانند Lean، Scrum یا Kanban و انتخاب بهترین روش بین آن ها با توجه به نوع محصول، مشتری و شرایط شرکتی که در آن مشغول به فعالیت هستیم یک ضرورت است.
مطالعه لینک زیر می تواند در انتخاب هوشمندانه‌تر این متدولوژی ها بسیار کمک کننده باشد.

https://realtimeboard.com/blog/how-to-choose-between-agile-lean-scrum-and-kanban-which-methodology-is-the-best/#.V18eTlUrLDe

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

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

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



___
Forwarded from فلسفه دیزاین
انتخاب رنگ با Palettable.io

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

سرویس Palettable امکان انتخاب رنگ رو بصورتی کاملا خلاصه شده و راحت بهتون میده. از هر رنگی خوشتون بیاد می‌تونید کلید "L" رو به معنی Like بزنید تا ذخیره بشه و برید سراغ رنگ بعدی. اگر هم که دوست نداشتید با کلید "D" احساس Dislike خودتون رو ابراز کنید تا رنگ بعدی نشونتون داده بشه.

متاسفانه هیچ منبع خاصی پیدا نکردم که ترکیب این رنگ‌ها چطور پیشنهاد میشه ولی چون پروژه روی Git قرار داره، اگر علاقه‌مند بودید می‌تونید پیگیرش بشید و نتیجه رو به ما اطلاع بدید تا همین‌جا اعلام کنیم.

Palettable.io

#تئوری_رنگ #پیشنهاد_سرویس #رابط_کاربری
@HamDesign هَم دیزاین
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
فریم‌ورک Aurelia یکی از فریم‌ورک‌های خوش‌ساخت برنامه‌های وب نسل جدید است. این فریم‌ورک که در حقیقت معادل و رقیب Angular 2 است معمولا به معماری خوب و Syntax بهتر از رقیب خود شناخته می‌شود. مدتی است که در مقایسه فریم‌ورک‌های جاوا اسکریپتی یکی از نکاتی که بسیار مورد توجه قرار می‌گیرد یکپارچگی آنها با TypeScript است. از این نظر نیز Aurelia بسیار خوب عمل کرده است و نه تنها کاملا با تایپ اسکریپت سازگار است، بلکه تمامی مستندات آن برای این زبان نیز وجود دارد و اصولا یکی از روش‌های اصلی توسعه سیستم در آن استفاده از زبان TypeScript است.
مقاله زیر که توسط Mike Graham نوشته شده، توضیح می‌دهد که چگونه با این دو تکنولوژی می‌توان شروع به توسعه نرم‌افزار کرد.

https://blog.durandal.io/2015/05/06/getting-started-with-aurelia-and-typescript

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

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



___