Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
خیلی وقت ها متدهایی نوشته می شود که تعداد زیادی پارامتر دارد ولی هنگام صدا زدن این متدها ممکن است لازم باشد چند پارامتر خاص آن پر شود و نه همه... اینجاست که مجبورید علاوه بر پارامترهای لازم، پارامترهای غیر لازم را نیز ذکر کرده و به ازای آنها مقدار null پاس دهید... البته اگر با امکانات معرفی شده در C# 4 آشنایی نداشته باشید.
از C# 4 به بعد می توانید از امکانات زیر استفاده کنید.
1. Optional Parameter: شما می توانید به یک پارامتر Default value بدهید و هنگام استفاده از متد در صورتی که نیاز به آن پارامتر ندارید، هیچ آرگومانی به ازای آن پارامتر ننوسید.
2. Nullable Parameter: شما می توانید با nullable کردن یک پارامتر، مقدار null را بعنوان default value به پارامتر اختصاص دهید.
3. Named Argument: شما می توانید هنگام اختصاص مقدار به پارامتر (مشخص کردن آرگومان)، نام پارامتر را نوشته و به این صورت نیازی به رعایت ترتیب پارامترها و ... نداشته باشید.
مقاله زیر توضیح کاملی از این امکانات به همراه مثالهای ساده ارائه کرده است.

http://codebetter.com/2011/01/11/c-in-depth-optional-parameters-and-named-arguments-2

#مریم_داودی

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
امکانات مورد انتظار در C# 7.0

مقاله زیر به طور خیلی خلاصه و مفید،‌ جذاب‌ترین امکاناتی را که قرار است به نسخه جدید سی‌شارپ اضافه شوند را توضیح می‌دهد. امکاناتی مانند Pattern Matching، Record Syntax، Tuple as return type و امکاناتی برای Null Safety در نسخه جدید این زبان،‌ برنامه‌نویسی را بسیار شیرین‌تر و البته Robust تر می‌کند. همچنین در این مقاله توضیح داده شده‌است که چگونه Record ها می‌توانند به پیاده‌سازی یک immutable class کمک کند.

http://www.dotnetcurry.com/csharp/1286/csharp-7-new-expected-features

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

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



___
در زبان SQL، درک منطق اجرای یک کوئری برای خطایابی و نوشتن کد بهینه از اهمیت بالایی برخوردار است. شاید تا‌کنون برای شما هم پیش آمده است که در هنگام نوشتن یک کوئری، از اینکه کوئری بر خلاف انتظارتان عمل می کند دچار سردرگمی شده باشید. مثلا اینکه چرا با وجود اینکه‌alias ‌ها را درSELECT Clause تعریف کرده اید، درWHERE Clause ‌ نمی‌توانید از آنها استفاده کنید.
درSQL ، کوئری به ترتیبی که دستورات آن نوشته می‌شود اجرا نمی‌شود، بلکه به ترتیب زیر است:
۱) FROM clause
۲) WHERE clause
۳) GROUP BY clause
۴) HAVING clause
۵) SELECT clause
۶) ORDER BY clause
۷) TOP
در طراحی زبان SQL، مِلاکِ ترتیب اجرای دستورات کوئری، شبیه بودن به زبان انگلیسی بوده است. فرض کنید که به شما گفته می‌شود :"برو از قفسه سوم کتابخانه، کتاب قمارباز را بیاور!". در این مثال مهم‌ترین بخش محل است، پس شما اول به کتابخانه می‌روید (FROM)، بعد قفسه‌های دیگر را فیلتر می کنید و نگاهتان در قفسه سوم به دنبال کتاب مورد نظر می‌گردد(WHERE) ‌و تازه در این قسمت کتابی که می‌خواهید را بیرون می‌کشید‌‌‌(SELECT) و به شخصی که آن را درخواست کرده می دهید.
در مقاله زیر درباره‌ی Logical Query Processing بیشتر بخوانید.

http://sqlmag.com/sql-server/logical-query-processing-what-it-and-what-it-means-you

#زهره_مرادی

لینکدین:
https://ir.linkedin.com/in/zohre-moradi

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

___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
مفاهیم Promise و Deffered Objects در برنامه‌نویسی جاوااسکریپت بسیار مهم و حیاتی هستند. این مفاهیم کمک می‌کنند روش برنامه نویسی async در این زبان استاندارد و یکسان شود. مقاله زیر این مفهوم را به طور خیلی خلاصه و مفید توضیح داده‌است و سه کتابخانه q.js, when.js و jQuery.js را از لحاظ performance برای پیاده سازی promise‌ مقایسه کرده‌است.

http://blog.mediumequalsmessage.com/promise-deferred-objects-in-javanoscript-pt1-theory-and-semantics

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

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



___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
زبان TypeScript در حال تبدیل شدن به یکی زبان‌های مهم نوشتن کدهای JavaScript تبدیل می‌شود. این زبان بر پایه زبان JavaScript ساخته شده و تقریبا از تمامی مفاهیم برنامه نویسی پیشرفته مانند class, interface, generic و ساختارهای دیگر پشتیبانی می‌کند.
لینک زیر به طور کاملا خلاصه، شما را در عرض چند دقیقه با مفاهیم اصلی این زبان آشنا می‌کند.

http://www.dotnetcurry.com/typenoscript/1287/typenoscript-quick-start-tutorial

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

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



___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
یک بررسی کلی از معماری .NET Core از Rick Strahl. در این مقاله به بررسی معماری کلی نسخه جدید .Net پرداخته شده‌است. در این مقاله به برنامه بلند مدتی که برای همگرا شدن با تکنولوژی‌های Xamarin وجود دارد نیز اشاره شده‌است. در این مقاله اشاره شده که پروژه‌های .Net Core و Mono به سمتی می‌روند که ممکن است بعد از مدتی انقدر شبیه هم شوند که پیدا کردن تفاوت‌هایشان سخت باشد!
همچنین در این مقاله اشاره شده است که این تکنولوژی‌ها هنوز Bleeding Edge هستند و برای پروژه‌های Big Production زود است که از این تکنولوژی‌ها استفاده شود.

https://weblog.west-wind.com/posts/2016/Jun/13/ASPNET-Core-and-NET-Core-Overview

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

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



___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
پروژه یا محصول؟ مدیر پروژه یا مدیر محصول؟

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

شما در حال توسعه کدام یک هستید؟ محصول یا پروژه؟

https://www.brainmates.com.au/brainrants/project-manager-vs-product-manager

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

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

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



___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
تایپ پیش‌فرض Entity Framework برای نوع تاریخ در دیتابیس datetime است. این تایپ توانایی نگهداری زمانهایی بیشتر از «1/1/1753» را دارد. از طرفی در زبان C# مقدار پیش‌فرض برای DateTime مقدار «1/1/0001» می‌باشد. به همین دلیل اگر یک Property از این نوع داشته باشید هنگام ذخیره در دیتابیس خطا رخ می‌دهد. برای رفع این مشکل یا باید نوع این ستون را به datetime2 تغییر دهید و یا از نوع Nullable یا «DateTime?» استفاده کنید.

لینک زیر این مشکل را به طور خلاصه و فقط در چند خط توضیح می‌دهد.

http://codemeek.blogspot.com/2013/07/resolve-entity-framework-error.html

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

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



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

https://www.microsoft.com/net/tutorials/csharp/getting-started


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

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


___
مصورسازی داده در واقع نمایش گرافیکی خلاصه‌ی اطلاعات به منظور ایجاد ارتباط و انتقال حسی خاص است. حتما بارها و بارها شنیده‌اید که می گویند:"یک عکس خوب بهتر از صدها جمله است."، اما زمانی بهتراست یک مطلب به صورت گرافیکی نمایش داده شود که خوب طراحی شده باشد.
مقاله زیر 20 ابزار و کتابخانه مناسب برای مصورسازی داده در صفحه وب معرفی و خلاصه ای از آن را ارائه کرده است.

http://www.creativebloq.com/web-design/top-data-visualisation-tools-9122832

#مریم_داودی

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

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

___
Forwarded from فلسفه دیزاین
به چشمان خود اعتماد کنیم،
مروری بر تناقض‌های تراز بصری

در انتخاب مطالب «هَم دیزاین» سعی میشه که تا حد امکان خاص، ناب و هیجان‌انگیز باشن. یکی از دلایل فاصله‌های گهگاه طولانی بین مطالب، همین موضوع است.
مطلب امروز هم به نحوی با همین وسواس انتخاب شده.

بعیده که اپلیکیشن یا وب‌سایتی طراحی کرده باشید و برایتان پیش نیامده باشد که چند آیکن کنار هم چیده و با وجود اینکه اندازه همه آن‌ها را عددی یکسان در نظر گرفته‌اید، آیکون‌ها از نظر بصری هم‌اندازه دیده نشوند.
مطلب امروز این موضوع رو به چالش می‌کشه که آیا ملاک طراحی رو ویژگی‌های محاسباتی شکل‌ها قرار بدیم یا به چشمان خود اعتماد کنیم.
یکی از بارزترین مثال‌های این ناهماهنگی‌های بصری و محاسباتی، دکمه Play است. همین حالا می‌تونید امتحان کنید. یک آیکن مثلثی رو داخل یک شکل دایره‌ای قرارداده و مرکز آن‌ها رو بصورت محاسباتی روی هم منطبق کنید. آیکن نهایی اشتباه به نظر می‌رسه، درسته؟
این موضوع به قدری واضح به نظر می‌رسه که گاهی فراموش می‌کنیم درستی اون رو در طراحی‌هامون بررسی کنیم.
مطلب امروز، این تناقض رو در قالب چند بخش (تراز بصری، رنگ، ابعاد، تایپوگرافی و …) مطرح می‌کنه و برای هر بخش مثال بصری درستی ارائه می‌کنه.

به خوندن این مقاله هیجان‌انگیز دعوتتون می‌کنم.
https://blog.marvelapp.com/optical-adjustment-logic-vs-designers/

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

پ. ن.
به نظر میرسه که این مشکلِ عدم رعایت وزن بصری، در چیدمان آیکن‌های صفحه اطلاعات یک محصول، در نسخه اخیر (۱.۱.۱) اپلیکیشن iOS دیجی‌کالا هم قابل مشاهده‌ست.
آیکن قلب (افزودن به لیست مورد علاقه) بزرگتر از بقیه آیکن‌ها دیده میشه.

#تکنیک #طراحی_بصری #چالش
@HamDesign هَم دیزاین
Forwarded from Iran .Net
اجرای کد های دات نت در SQL Server

یکی از قابلیت های اعجاب آور و البته کمتر شناخته شده SQL Server آن می باشد که توانایی اجرای کد های دات نت را دارا می باشد. به این ویژگی SQL CLR گفته می شود که از نسخه SQL Server 2005 پشتیبانی می شود.
شما برای پیاده سازی منطق های پیچیده نیازی به استفاده از T-SQL نخواهید داشت تا ماحصل تلاش تان کدهای کثیف، ناخوانا، بدقیافه و طولانی T-SQL باشد. به راحتی می توانید Store Procedure، Function، Trigger و موارد متعدد دیگری را در قلب SQL Server توسط زبان پرقدرت سی شارپ اجرا کنید.
در SQL CLR می توانید از تمام کتابخانه های دات نت استفاده کنید و از آن ها برای پیاده سازی منطق خود بهره بگیرید. می توانید به راحتی ایمیل ارسال کنید، وب سرویسی را صدا بزنید، با فایل ها کار کنید، با سیستم عامل تعامل کنید، در صورت لزوم از الگوریتم های رمزنگاری استفاده کنید و غیره. با سی شارپ می توانید کدی با ساختارِ خوانا و قابل نگهداری داشته باشید و آن را به راحتی توسط Visual Studio دیباگ کنید و به راحتی کد های تان در پایگاه داده مورد نظر خود مستقر (Deploy) کنید.
مزیت SQL CLR آن می باشد که کارایی اش تفاوت بسیار جزیی با T-SQL دارد و حتی در سناریو های پیچیده دارایِ کارایی بهتری می باشد.

*برای توسعه این نوع از پروژه ها نیاز به نصب SQL Server Data Tools
می باشد.

* فعال سازی اجرای SQL CLR در SQL Server
https://msdn.microsoft.com/en-us/library/ms131048.aspx?f=255&MSPPError=-2147217396

* مزایای SQL CLR
https://msdn.microsoft.com/en-us/library/k2e1fb36%28v=vs.100%29.aspx?f=255&MSPPError=-2147217396

* آشنایی مقدماتی
http://www.codeproject.com/Tips/841439/Create-Run-Debug-and-Deploy-SQL-CLR-Function-with

* کمی فنی تر
http://www.sqlservercentral.com/articles/Stairway+Series/119429/

و

http://www.sqlservercentral.com/articles/SQLCLR/138154/

در این زمینه نکات ریز و درشت متعددی برای یادگیری وجود دارد که حتما بر حسب نیازتان می توانید به راحتی جستجو کره و بیاموزید.

@irandotnet
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.