Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
اگر در حال توسعه نرم‌افزار هستید و با مفهوم Source Control آشنایی ندارید، حتما یک جای کار خیلی مشکل دارد! امروزه مفاهیم و ابزارهای سورس کنترل انقدر زیاد و متداول شده‌اند که اگر به آن عادت کنید، دیگر حتی بدون آنها نمی‌توانید یک پروژه شخصی در خانه بنویسید.
لینک زیر که توسط تیم git (یکی از محبوب‌ترین ابزارهای سورس کنترل) نوشته شده‌است، مفاهیم پایه‌ای را توضیح می‌دهد.

https://www.atlassian.com/git/tutorials/what-is-version-control

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

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



___
با استفاده از دستور supports@ در CSS می‌توان پشتیبانی مرورگر را در مورد یک ویژگی بررسی کرد. یعنی آن ویژگی در مرورگر مورد نظر کار می‌کند یا خیر.
معمولا این کار توسط کتابخانه‌های جاوااسکریپت نظیر Modernizr انجام می‌شود اما این دستور این امکان را می دهد تا بتوان این آزمایش را در فایل CSS بدون نوشتن کد جاوااسکریپت انجام داد.
اگر علاقمند به استفاده از این ویژگی هستید، لینک زیر را بخوانید.

https://davidwalsh.name/css-supports

#مریم_داودی

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
ضد الگو یا Anti-Pattern‌ فقط در مرحله طراحی و یا برنامه‌نویسی به وجود نمی‌آید. در مرحله طراحی UI‌ هم ضد الگو وجود دارد. یکی از متدوال‌ترین ضدالگوهایی که در این لایه وجود دارد، پورت کردن یک برنامه از پلتفرم‌های دیگر است. برای مثال برنامه‌ای که برای iOS نوشته شده است را با همان ساختار وارد Android کرد. استفاده از پلتفرم‌های Cross-Platform معمولا این مشکل را دارند، چون سعی می‌کنند دقیقا یک کد را روی هر دو پلتفرم اجرا کنند. اما هر پلتفرم استانداردهای UI مختص خود را دارند. برای مثال در اندروید تب‌ها در بالا نمایش داده می‌شوند و در iOS تب‌ها در پایین لیست می‌شوند.

در پست زیر ضد الگو‌های موجود در برنامه‌های اندرویدی معرفی و به طور کامل تشریح شده‌اند.

http://www.sitepoint.com/android-design-anti-patterns-pitfalls/

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

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


___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
آیا JSON کاملا جای XML را خواهد گرفت؟ این روزها فرمت JSON بسیار فراگیر شده‌است. این فرمت مزایای بسیار زیادی نسبت به سایر فرمت‌ها دارد. مقاله زیر این دو فرمت را کاملا با هم مقایسه کرده و به بررسی مزایا و معایب آنها پرداخته است. به جز در چند مورد خاص، در بیشتر موارد JSON فرمتی بهتر محسوب می‌شود.

http://www.c-sharpcorner.com/article/is-json-overridden-xml/

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

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



___
برنامه نویسی روی HoloLens یکی از جذاب‌ترین کارهایی است که این روزها برنامه‌نویسان «لبه تکنولوژی» را به سمت خود می‌کشد. مشکلی که در استفاده از این تکنولوژی وجود دارد این است که سخت‌افزار آن گران است و به راحتی هم قابل دسترسی نیست.
خبر خوب این است که در ویژوال استودیو یک HoloLens Emulator وجود دارد که می‌توانید روی آن برنامه نویسی کنید و نتیجه کار خود را روی این ایمولاتور ببینید.
در لینک زیر یکی از برنامه نویسان تجربه کار خود را با Unity و HoloLens Emulator شرح داده‌است.

https://blogs.unity3d.com/2016/08/18/developing-for-hololens-with-the-emulator/

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
اگر در دنیای کامپیوتر و نرم‌افزار زندگی می‌کنید، حتما لینک‌ها و صفحه‌های زیادی در طول روز می‌بینید که دوست دارید بخوانید ولی فرصت مطالعه آن‌ها را ندارید. در پست زیر Scott Hanselman توضیح داده است که چگونه «بعدا بخوانید!» یا «Read it Later!». در این پست ابزارهایی معرفی شده‌است که بتوانید با آنها مطالب نخوانده خود را بهتر مدیریت کنید و بتوانید آن‌ها را به زمانی موکول کنید که فرصت دارید.

http://www.hanselman.com/blog/TwoMustHaveToolsForAMoreReadableWeb.aspx

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

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



___
مفهوم Tuple Deconstrution مفهومی است که قرار است به نسخه ۷.۰ زبان C# اضافه شود. این مفهوم کار با Tuple ها را بسیار راحت‌تر می‌کند. با ظهور این قابلیت امکان نوشتن کد زیر به وجود خواهد آمد:
var (x, y) = point;
Console.WriteLine($"Coordinates: ({x}, {y})");
در این روش در یک خط، هر دو متغییر x و y مقدار گرفته‌اند و قابل استفاده هستند.
این ویژگی در Visual Studio 15 Preview 4 پیاده‌سازی شده و می‌تواند آن را آزمایش کرد.

لینک زیر مثال‌های جالبی از کاربرد این مفهوم ارائه کرده‌است.

http://www.thomaslevesque.com/2016/08/23/tuple-deconstruction-in-c-7/

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۴۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
ویژگی float در CSS یکی از ویژگی‌هایی است که نکات ریز خیلی زیادی دارد. به همین دلیل استفاده از آن معمولا در ابتدا خیلی ساده به نظر می‌رسد، ولی بعد از اینکه مدل صفحه پیچیده‌تر شد و تعداد زیادی از دستورات شروع به تاثیرگذاری روی یکدیگر کردند دیگر مدیریت آن آسان نیست. پست زیر که به زبان فارسی هم هست توضیحات خیلی خوبی در مورد توصیف عملکرد این ویژگی داده‌است که برای تمام کسانی که با CSS کار می‌کنند مفید است.

http://css-tricks.ir/css_reference/float/

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

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



___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
#پست_مجدد این پست تا به حال بیش از ۱۵۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
آیا واقعا الگوریتم ابزار مناسبی برای درک کاربر است!؟ الگوریتم‌ها محدودیت‌های زیادی دارند. آنها معمولا بر اساس «اطلاعات قبلی» ساخته شده‌اند. الگوریتم‌ها معمولا از اطلاعات محدودی استفاده می‌کنند، یعنی برای سادگی قسمت‌هایی از مساله حذف می‌شود تا حل آن ساده‌تر شود. ولی رفتار یک انسان حتی خیلی وقت‌ها شبیه رفتار قبل خودش نیست و تغییر می‌کند. اصولا رفتار انسان یک ویژگی منطقی نیست، ولی الگوریتم سعی در مدل کردن منطقی رفتار کاربران دارد.
مقاله زیر توضیح می‌دهد چگونه الگوریتم‌ها را «انسان‌وار» کنیم (Humanizing the Algorithms).

http://uxmag.com/articles/design-like-a-human-in-the-age-of-algorithms

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

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



___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
مفهوم delegate در زبان C# چه مشکلی را حل می‌کند؟ این مفهوم مشابه همان مفهوم Function Pointer یا اشاره‌گر به تابع در زبان‌هایی مانند C++ است. در حقیقت delegate ها می‌توانند یک تابع را در دل خود نگه‌ دارند و به صورت امن به آن اشاره کنند. شما اجازه دارید آنها را با هر تابعی که با امضای تعریف شده‌ در آنها تطابق دارد مقدار دهی کنید.
لینک زیر این مفهوم را با مثال توضیح می‌دهد.

http://www.c-sharpcorner.com/blogs/what-problem-does-delegates-solve-in-c-sharp

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

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



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

http://www.belbin.com/about/belbin-team-roles/

#مهدی_نظری

لینکدین
https://ir.linkedin.com/in/mohammad-mahdi-nazari-90097b58

توییتر
https://twitter.com/ShamehdiN

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


___
Forwarded from Iran .Net
آشنایی با Parallel LINQ

یکی از قابلیت هایی که در نسخه 3.5 دات نت فریم ورک افزوده شد قابلیت LINQ بود که برای راحت تر و روان تر کردن کار با داده ها طراحی شده بود و کم و بیش همه با آن آشنا هستند.

یکی از قابلیت های کمتر شناخته شده دات نت فریم ورک PLINQ یا Parallel LINQ می باشد که با سادگی به ما کمک می کند، پردازش های ما به طور موازی و همزمان صورت بگیرد و سرعت و بهره وری کد مان افزایش پیدا کند. برای بهره گیری از PLINQ تغییر چندانی در کد لازم نیست بدهیم و راه ورود به قلمرو PLINQ و اجرای موازی پردازش ها تنها و تنها استفاده از متد AsParallel می باشد. صدا زدن متد AsParallel بر روی داده (IEnumerable) به طور خودکار زمینه اجرای LINQ را به PLINQ تغییر خواهد داد.

همیشه اجرای موازی موجب افزایش کارایی نخواهد شد و حتی می تواند نتیجه ای برعکس داشته باشد. موتور اجرای PLINQ می تواند تا حدودی شرایط را ارزیابی کند و در صورت نیاز کد را به صورت Sequential و غیر موازی اجرا کند.
همچنین موتور PLINQ به طور پیشفرض به تعداد هسته های پردازنده Thread ایجاد خواهد کرد و هر Thread را بر روی یک هسته اجرا خواهد کرد. شما می توانید با استفاده از متد WithDegreeOfParallelism مشخص کنید و دستور دهید که به جای تنظیمات پیشفرض چه تعداد Thread باید ایجاد شود.

1. آشنایی مقدماتی با PLINQ:
http://www.codeproject.com/Articles/156980/Parallelism-in-NET-PLINQ

2. آشنایی با حنبه های فنی تر PLINQ:
https://msdn.microsoft.com/en-us/library/dd997425(v=vs.110).aspx

3. مثال هایی عملی و مباحث پیشرفته تر در کتاب آنلاین Albahari:
http://www.albahari.com/threading/part5.aspx#_PLINQ