در یک بازی شطرنج با محدودیت زمانی ۵ دقیقه (شطرنج سریع یا بلیتس)، بازیکنان در یک زمان کم تصمیم میگیرند و حرکت را انجام میدهد ولی در حالت بدون محدودیت زمانی بازیکنان به اندازه کافی وقت برای فکر کردن و تصمیم گرفتن را دارند. در نتیجه شطرنج سریع از لحاظ کیفیت قابل مقایسه با شطرنج بدون محدودیت زمانی نیست.
یک رابطه مستقیم بین کیفیت و زمان انجام کار وجود دارد. هرچه که زمان بیشتر باشد کیفیت کار نیز بیشتر است. این قاعده در پروژههای نرمافزاری نیز صادق است. اگر مدیر پروژه به هر دلیلی مدت زمان انجام پروژه را کم در نظر بگیرد ناخواسته از کیفیت برنامه کاسته میشود، و این عدم کیفیت در سایت مشتری خودش را نشان میدهد.
بروز خطا در سایت مشتری به مراتب اثر منفی بیشتری دارد تا دیر تحویل دادن یک پروژه با کیفیت عالی.
Managers jeopardize product quality by setting unreachable deadlines.
Workers kept under extreme time pressure will begin to sacrifice quality. They will push problems under the rug to be dealt with later or foisted off onto the product’s end user. They will deliver products that are unstable and not really complete. They will hate what they’re doing, but what other choice
do they have?
از کتاب:
Peopleware: Productive Projects and Teams (Tom DeMarco & Timothy Lister)
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilisophy
___
یک رابطه مستقیم بین کیفیت و زمان انجام کار وجود دارد. هرچه که زمان بیشتر باشد کیفیت کار نیز بیشتر است. این قاعده در پروژههای نرمافزاری نیز صادق است. اگر مدیر پروژه به هر دلیلی مدت زمان انجام پروژه را کم در نظر بگیرد ناخواسته از کیفیت برنامه کاسته میشود، و این عدم کیفیت در سایت مشتری خودش را نشان میدهد.
بروز خطا در سایت مشتری به مراتب اثر منفی بیشتری دارد تا دیر تحویل دادن یک پروژه با کیفیت عالی.
Managers jeopardize product quality by setting unreachable deadlines.
Workers kept under extreme time pressure will begin to sacrifice quality. They will push problems under the rug to be dealt with later or foisted off onto the product’s end user. They will deliver products that are unstable and not really complete. They will hate what they’re doing, but what other choice
do they have?
از کتاب:
Peopleware: Productive Projects and Teams (Tom DeMarco & Timothy Lister)
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilisophy
___
استفاده از منوها یا دکمههایی که کلیک بر روی آن باعث Scroll در صفحه میشود اخیرا بسیار متداول شدهاست. برای نوشتن چنین سایتهایی باید از طریق کد جاوا اسکریپت به اسکرول مرورگر دسترسی داشتهباشید. یکی از کتابخانههایی که برای این منظور میتوان استفاده کرد Jump.js است. مقاله زیر نحوه استفاده از این کتابخانه را توضیح میدهد.
https://www.sitepoint.com/smooth-scrolling-vanilla-javascript/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
https://www.sitepoint.com/smooth-scrolling-vanilla-javascript/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
Sitepoint
How to Implement Smooth Scrolling in Vanilla JavaScript - SitePoint
Forget jQuery plugins, Giulio Mainardi shows how do smooth scrolling in vanilla JavaScript, and refactors an ES6 library to ES5.
مفاهیم Equality و Identity در Java، مفاهیمی متفاوت هستند که درک تفاوت آنها در بسیاری از شرایط بسیار مهم است. مفهوم Equality یا مساوی بودن برای هر کلاس قابل تعریف است و برنامهنویسان میتوانند آن را تعریف کنند. این که این تعریف چه مشخصاتی باید داشته باشد و بسیاری از مطالب جالب دیگر در مقاله زیر شرح داده شدهاند. حتی اگر فکر میکنید به این مفاهیم کاملا مسلط هستید، هنوز خواندن این مقاله میتواند خیلی جذاب باشد زیرا این مطلب را بسیار روان توضیح دادهاست و به شما کمک میکند بتوانید آن را راحتتر به بقیه آموزش دهید.
https://www.sitepoint.com/implement-javas-equals-method-correctly/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
https://www.sitepoint.com/implement-javas-equals-method-correctly/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
SitePoint
How to Implement Java’s equals Method Correctly
Implementing equals and hashCode is a fundamental task for any Java developer. Nicolai Parlog explains how to do so correctly.
Forwarded from Software Philosophy
معماری نرمافزار مانند معماری ساختمان یک هنر است آیا تا به حال به فرق یک معمار و یک مهندس عمران فکر کردهاید؟ تمرکز مهندسان عمران معمولا بر ساخت سازهها است. آنها فکر میکنند چطور سازههایی مانند دیوار، در، پنجره و سایر اجزا را به طور صحیح بسازند. از طرف دیگر معمارها معمولا به اینها فکر نمیکنند! تمرکز اصلی آنها روی ساخت و معماری فضاهایی است که بین این اجزا به وجود میآید. در حقیقت مهندسین عمران به دیوارها فکر میکنند و معمارها به فضای بین دیوارها.
نکته جالب این است که انسانها یا مشتریان در نهایت از فضاها استفاده میکنند نه دیوارها! آنها پول خرج میکنند تا فضای زیبایی بخرند و به ندرت دیوارها را میبینند.
در مهندسی نرمافزار، ساخت دیوار مانند کد نویسی است. برنامهنویسان با کد نویسی در حقیقت در حال ساخت دیوارهایی هستند که این دیوارها مستقیما برای مشتری معنی ندارد. مشتریان امکاناتی را میبینند که توسط این کدها برای آنها خلق شدهاست. یکی از وظایف یک مهندس نرمافزار تمرکز بر فضاهای ایجاد شده برای مشتری است. اینکه این فضاها چقدر کارا و مفید طراحی شدهاند.
توضیحات کامل مفهوم فضا و تاثیر آن بر مشتری را میتوانید در لینک زیر بخوانید.
https://mehrandvd.me/2015/10/26/spaces-shape-your-software-architecture/
#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
نکته جالب این است که انسانها یا مشتریان در نهایت از فضاها استفاده میکنند نه دیوارها! آنها پول خرج میکنند تا فضای زیبایی بخرند و به ندرت دیوارها را میبینند.
در مهندسی نرمافزار، ساخت دیوار مانند کد نویسی است. برنامهنویسان با کد نویسی در حقیقت در حال ساخت دیوارهایی هستند که این دیوارها مستقیما برای مشتری معنی ندارد. مشتریان امکاناتی را میبینند که توسط این کدها برای آنها خلق شدهاست. یکی از وظایف یک مهندس نرمافزار تمرکز بر فضاهای ایجاد شده برای مشتری است. اینکه این فضاها چقدر کارا و مفید طراحی شدهاند.
توضیحات کامل مفهوم فضا و تاثیر آن بر مشتری را میتوانید در لینک زیر بخوانید.
https://mehrandvd.me/2015/10/26/spaces-shape-your-software-architecture/
#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Forwarded from Software Philosophy
افزونگی کد یک اشتباه برنامه نویسی نیست، یک بیماری معماری است. مهندسین نرمافزار همیشه تلاش میکنند تا «افزونگی کد» یا کدهای تکراری را کم کنند. در بسیاری از شرایط افزونگی کد به عنوان یک بیدقتی برنامهنویس محسوب میشود. برنامهنویسانی که به «نزدیکبینی کد» مبتلا هستند! یعنی در کدی که مینویسند گم میشوند و یادشان میرود که کجای کد هستند و چرا این کد را مینویسند و به طور کلی نمیتوانند دورنمایی از کاری را که انجام میدهند در ذهن خود تجسم کنند.
ولی تجربه نشان میدهد بیشترین علت «افزونگی کد» برنامهنویسان نیستند! بلکه این مشکل بیشتر به خاطر «معماری بد نرمافزار» است. معمار نرمافزار کسی است که هنگام معماری باید «فضاهای» کد را طوری معماری کند تا احتمال به خطا افتادن برنامهنویسان کمتر شود.
لینک زیر توضیح میدهد که چگونه یک معماری بد باعث «رشد افزونگی کد» در نرمافزار میشود.
https://mehrandvd.me/2016/02/28/growing-redundancy-an-architectural-disease/
#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
ولی تجربه نشان میدهد بیشترین علت «افزونگی کد» برنامهنویسان نیستند! بلکه این مشکل بیشتر به خاطر «معماری بد نرمافزار» است. معمار نرمافزار کسی است که هنگام معماری باید «فضاهای» کد را طوری معماری کند تا احتمال به خطا افتادن برنامهنویسان کمتر شود.
لینک زیر توضیح میدهد که چگونه یک معماری بد باعث «رشد افزونگی کد» در نرمافزار میشود.
https://mehrandvd.me/2016/02/28/growing-redundancy-an-architectural-disease/
#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
آیا واقعا الگوریتم ابزار مناسبی برای درک کاربر است!؟ الگوریتمها محدودیتهای زیادی دارند. آنها معمولا بر اساس «اطلاعات قبلی» ساخته شدهاند. الگوریتمها معمولا از اطلاعات محدودی استفاده میکنند، یعنی برای سادگی قسمتهایی از مساله حذف میشود تا حل آن سادهتر شود. ولی رفتار یک انسان حتی خیلی وقتها شبیه رفتار قبل خودش نیست و تغییر میکند. اصولا رفتار انسان یک ویژگی منطقی نیست، ولی الگوریتم سعی در مدل کردن منطقی رفتار کاربران دارد.
مقاله زیر توضیح میدهد چگونه الگوریتمها را «انسانوار» کنیم (Humanizing the Algorithms).
https://uxmag.com/articles/design-like-a-human-in-the-age-of-algorithms
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
مقاله زیر توضیح میدهد چگونه الگوریتمها را «انسانوار» کنیم (Humanizing the Algorithms).
https://uxmag.com/articles/design-like-a-human-in-the-age-of-algorithms
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
Uxmag
Design like a Human in the Age of Algorithms
Algorithms are based on past behaviors—what you liked, what you purchased, what you clicked.
عادتهای خوب برنامهنویسی در هر زبان با زبان دیگر متفاوت است. یکی از نکاتی که در مورد عادتهای برنامهنویسی مهم است، درک این مطلب است که هنگام استفاده از هر زبان یا تکنولوژی باید «مانند آن» فکر کنید و سعی نکنید عادتهای قبلی خود را وارد زبان جدید کنید و یا طرز فکر قبلی خود را به زبان جدید تحمیل کنید. برای مثال اگر با زبانهای شیگرا کار کردهاید، هنگام کار با یک زبان Functional سعی کنید مثل آن فکر کنید.
مقاله زیر توضیح میدهد چگونه برای کار با زبانهای Functional مانند F# باید طرز فکر خود را تغییر دهید.
https://www.codeproject.com/Articles/462767/How-to-Think-Like-a-Functional-Programmer
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
مقاله زیر توضیح میدهد چگونه برای کار با زبانهای Functional مانند F# باید طرز فکر خود را تغییر دهید.
https://www.codeproject.com/Articles/462767/How-to-Think-Like-a-Functional-Programmer
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
CodeProject
How to Think Like a Functional Programmer
Lessons learned about FP from the perspective of an Object Oriented programmer
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرمافزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
این پیغام را برای آنها Forward کنید.
Forwarded from Iran .Net
ثبت خطاهای Client Side، یکی از مشکلاتی است که در برنامه های مدرن مبتنی بر وب ایجاد می شود. این برنامه ها در قسمت های مربوط به Client Side به شدت و قوت و وفور از جاواسکریپت استفاده می کنند. این قسمت از کد هم در سمت کاربر و خارج از سرور های ما اجرا می گردد.
حال فرض کنید وب سایت پر زرق و برقِ سازمانی ما بر روی سیستم صد ها نفر از پرسنل سازمان در حال اجرا باشد. چطور می توانیم خطاها و باگ هایی که در کد های جاوا اسکریپت ما وجود دارد و کاربران در حین کار با آن ها مواجه می شوند را در جایی متمرکز ثبت کنیم و یا حتی گامی فراتر رفته و برای ثبت این خطا ها از Elmah استفاده نماییم؟
کتابخانه JSNLog دقیقا به همین منظور و پاسخ به همین نیاز طراحی شده است. این کتابخانه کم حجم را می توانید به راحتی به نرم افزار خود اضافه کنیم تا دیگر وقوع هیچ خطایی در Client Side از پیش شما پنهان نماند.
https://jsnlog.com
حال فرض کنید وب سایت پر زرق و برقِ سازمانی ما بر روی سیستم صد ها نفر از پرسنل سازمان در حال اجرا باشد. چطور می توانیم خطاها و باگ هایی که در کد های جاوا اسکریپت ما وجود دارد و کاربران در حین کار با آن ها مواجه می شوند را در جایی متمرکز ثبت کنیم و یا حتی گامی فراتر رفته و برای ثبت این خطا ها از Elmah استفاده نماییم؟
کتابخانه JSNLog دقیقا به همین منظور و پاسخ به همین نیاز طراحی شده است. این کتابخانه کم حجم را می توانید به راحتی به نرم افزار خود اضافه کنیم تا دیگر وقوع هیچ خطایی در Client Side از پیش شما پنهان نماند.
https://jsnlog.com
بهترین UX برای یک برنامه، UXی است که دیده نمیشود! هر چه تجربه کاربری یک برنامه بهتر طراحی شده باشد، باعث میشود کاربر احساس راحتی بیشتری کند و اصلا احساس نکند چیزی وجود دارد! برای این منظور باید اصولی را در طراحی برنامه رعایت کرد.
- طراحی باید طوری باشد که همه چیز آشنا به نظر برسد!
- تمیز بودن و خلوت بودن به اندازه کاربردی بودن مهم است.
- رعایت اصل سادگی کمک بزرگی به طراحی روانتر میکند.
لینک زیر مواردی را که برای رسیدن به یک UX که دیده نشود لازم است را توضیح میدهد.
https://uxmag.com/articles/the-best-enterprise-ux-is-the-one-you-never-see
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
- طراحی باید طوری باشد که همه چیز آشنا به نظر برسد!
- تمیز بودن و خلوت بودن به اندازه کاربردی بودن مهم است.
- رعایت اصل سادگی کمک بزرگی به طراحی روانتر میکند.
لینک زیر مواردی را که برای رسیدن به یک UX که دیده نشود لازم است را توضیح میدهد.
https://uxmag.com/articles/the-best-enterprise-ux-is-the-one-you-never-see
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
Uxmag
The Best Enterprise UX Is the One You Never See
Whether developing software in the ecommerce, biotech, storage, or security industries, there are five philosophies that shape an approach to enterprise UX.
چطور برنامهنویسی موازی را برای مادربزرگتان توضیح دهید!؟
برنامه نویسی موازی (Parallel Programming) و برنامه نویسی ناهمگام (Asynchronous Programming) مفاهیم نسبتا جدیدی در دنیای برنامهنویسی هستند که برای اغلب برنامهنویسان جدید است. همه در مورد آن شنیدهانم ولی اغلب واضح نیست که دقیقا چیست و چرا سخت است. یک مفهوم پایه برای درک این مفاهیم پایه Thread یا نخ است. نخها مفاهیمی هستند که وظیفه انجام کارها روی CPU را دارند. در دنیای ما انسانها کسانی هستند که کار انجام میدهند. مقاله زیر مفهوم «نخ» را به «انسان» شبیه دیدهاست و سعی کردهاست مفاهیم پیچیده دنیای برنامهنویسی را با مفاهیم ساده دنیای ما انسانها توضیح دهد.
https://mehrandvd.me/2016/04/18/parallel-programming-grandmother/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
برنامه نویسی موازی (Parallel Programming) و برنامه نویسی ناهمگام (Asynchronous Programming) مفاهیم نسبتا جدیدی در دنیای برنامهنویسی هستند که برای اغلب برنامهنویسان جدید است. همه در مورد آن شنیدهانم ولی اغلب واضح نیست که دقیقا چیست و چرا سخت است. یک مفهوم پایه برای درک این مفاهیم پایه Thread یا نخ است. نخها مفاهیمی هستند که وظیفه انجام کارها روی CPU را دارند. در دنیای ما انسانها کسانی هستند که کار انجام میدهند. مقاله زیر مفهوم «نخ» را به «انسان» شبیه دیدهاست و سعی کردهاست مفاهیم پیچیده دنیای برنامهنویسی را با مفاهیم ساده دنیای ما انسانها توضیح دهد.
https://mehrandvd.me/2016/04/18/parallel-programming-grandmother/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
مفهوم Dependency Injection یکی از مواردی است که در طراحی ASP.NET Core وجود دارد. مقاله زیر علاوه بر اینکه مروری بر این مفهوم مهم دارد، نحوه پیادهسازی و استفاده از آن را در ASP.Net Core توضیح میدهد. همچنین در این مقاله به منظور آموزش این مفهوم، یک مثال به صورت قدم به قدم پیادهسازی شدهاست.
https://www.c-sharpcorner.com/article/dependency-injection-in-Asp-Net-core/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
https://www.c-sharpcorner.com/article/dependency-injection-in-Asp-Net-core/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
Microsoft
ASP.NET Core, an open-source web development framework | .NET
Build web apps and services that run on Windows, Linux, and macOS using C#, HTML, CSS, and JavaScript. Get started for free on Windows, Linux, or macOS.
همیشه هر چیز خوبی، میتواند بد استفاده شود و نتیجه عکس دهد. این قضیه در مورد تکنولوژی هم صادق است. مقاله زیر توضیح میدهد که چه عادتهای اشتباهی هنگام کار با LINQ میتواند شما را به اشتباه بیندازد و باعث ایجاد کد بد شود.
یکی از خطرناکترین ویژگیهای LINQ این است که وقتی با آن کار میکنید احساس میکنید خیلی باهوشید که غالبا باعث میشود کد احمقانه و پیچیدهای با آن بنویسید. فهمیدن مفهوم Provider ها نیز مسئله مهمی است که باید با آن آشنا باشید.
مقاله زیر این نکات را شرح میدهد.
https://mehrandvd.me/2016/03/28/linq-the-bad-parts/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
یکی از خطرناکترین ویژگیهای LINQ این است که وقتی با آن کار میکنید احساس میکنید خیلی باهوشید که غالبا باعث میشود کد احمقانه و پیچیدهای با آن بنویسید. فهمیدن مفهوم Provider ها نیز مسئله مهمی است که باید با آن آشنا باشید.
مقاله زیر این نکات را شرح میدهد.
https://mehrandvd.me/2016/03/28/linq-the-bad-parts/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
مفهوم delegate در زبان C# چه مشکلی را حل میکند؟ این مفهوم مشابه همان مفهوم Function Pointer یا اشارهگر به تابع در زبانهایی مانند C++ است. در حقیقت delegate ها میتوانند یک تابع را در دل خود نگه دارند و به صورت امن به آن اشاره کنند. شما اجازه دارید آنها را با هر تابعی که با امضای تعریف شده در آنها تطابق دارد مقدار دهی کنید.
لینک زیر این مفهوم را با مثال توضیح میدهد.
https://www.c-sharpcorner.com/blogs/what-problem-does-delegates-solve-in-c-sharp
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
لینک زیر این مفهوم را با مثال توضیح میدهد.
https://www.c-sharpcorner.com/blogs/what-problem-does-delegates-solve-in-c-sharp
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
C-Sharpcorner
What Problem Does Delegates Solve in C#?
In this blog you will learn how to solve Delegates Problem in C#.
تا کنون روشهاهای زیادی برای اندازه گیری نرم افزار (مخصوصا در راستای ارزش گذاری) پیشنهاد و به کار گرفته شده است. از روشهای قدیمی مانند LOC و FP مبتنی بر قیمت تمام شده تولید تا روشهای بروز تر و خلاقانه تری که اکنون به کار می رود.
زمانی که میخواهیم از نرم افزار، در آمد کسب کنیم، اولین چیزی که به ذهن می آید، فروش آن است؛ و این یعنی که ما نرم افزار را یک محصول در نظر گرفته ایم که تمام آن و یا حق امتیاز (Licence) استفاده از آن را در اختیار مشتری قرار می دهیم. اما آیا فروش محصول تنها راه کسب در آمد از طریق نرم افزار است؟
https://goo.gl/RY3veo
محمد مهدی نظری
لینکدین
https://ir.linkedin.com/in/mohammad-mahdi-nazari-90097b58
توییتر
https://twitter.com/ShamehdiN
کانال تلگرام:
@SoftwarePhilosophy
___
زمانی که میخواهیم از نرم افزار، در آمد کسب کنیم، اولین چیزی که به ذهن می آید، فروش آن است؛ و این یعنی که ما نرم افزار را یک محصول در نظر گرفته ایم که تمام آن و یا حق امتیاز (Licence) استفاده از آن را در اختیار مشتری قرار می دهیم. اما آیا فروش محصول تنها راه کسب در آمد از طریق نرم افزار است؟
https://goo.gl/RY3veo
محمد مهدی نظری
لینکدین
https://ir.linkedin.com/in/mohammad-mahdi-nazari-90097b58
توییتر
https://twitter.com/ShamehdiN
کانال تلگرام:
@SoftwarePhilosophy
___
Forwarded from SQL Server
در این مقاله شما متوجه می شوید که چگونه SQL Server In-Memory OLTP بدن استفاده از Lock و Latch تراکنشها را در یک زمان و بر روی یک سطر از داده انجام می دهد. https://fard-solutions.com/sql-server-memory-multi-version-concurrency-control/
یکی از کاربردهایی که پروژه Roslyn در برنامههای بیزنسی دارد، توانایی اجرای کد برنامه در زمان اجرا است. برای مثال میتوانید قسمتی از کد برنامه را در یک تکستباکس از کاربر بگیرید و آن را اجرا کنید. معمولا قسمتهایی از برنامه که نباید Hard Code شود را به این صورت میتوان به عنوان پیکربندی در دیتابیس ذخیره کرد و هنگام پیادهسازی نرمافزار، بدون تغییر کد اصلی، رفتار برنامه را تنظیم کرد. به این قابلیت Scripting هنگام اجرای برنامه میگویند.
مقاله زیر نشان میدهد که چگونه توسط Roslyn میتوان کدها را در زمان اجرا، کامپایل و اجرا کرد.
https://daveaglick.com/posts/compiler-platform-scripting
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
مقاله زیر نشان میدهد که چگونه توسط Roslyn میتوان کدها را در زمان اجرا، کامپایل و اجرا کرد.
https://daveaglick.com/posts/compiler-platform-scripting
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Daveaglick
Dave Glick - Introduction to Scripting with the .NET Compiler Platform (Roslyn)
The personal blog of Dave Glick
Forwarded from Software Philosophy
ضد الگوی «کد مرده» یا Dead Code، یک Anti Pattern رایج در شرکتهایی است که مدت نسبتا زیادی سیستم تولید میکنند. اگر شما این جملهها را میشنوید احتمالا شما هم دچار این ضد الگو شدهاید:
- این کد رو دو نفر قبلا نوشند که سه سال پیش رفتند و پارسال یه نفر دیگه تلاش کرد یاد بگیره و مستند بنویسه براش و اون هم رفته. البته فک نکنم الان اصلا از این کد استفاده بشه، ولی محض احتیاط بهتره پاک نشه!
این نوع کدها غالبا پیچیدگی سیستم را به شدت بالا میبرند و تغییرات آتی سیستم را بسیار سخت میکنند.
بسیاری از این کدها به این علت به وجود میآیند که در زمان تولید کدهای در حد R&D وارد کد عملیاتی شده و به مدیریت آن در آینده فکر نشده.
https://sourcemaking.com/antipatterns/lava-flow
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
- این کد رو دو نفر قبلا نوشند که سه سال پیش رفتند و پارسال یه نفر دیگه تلاش کرد یاد بگیره و مستند بنویسه براش و اون هم رفته. البته فک نکنم الان اصلا از این کد استفاده بشه، ولی محض احتیاط بهتره پاک نشه!
این نوع کدها غالبا پیچیدگی سیستم را به شدت بالا میبرند و تغییرات آتی سیستم را بسیار سخت میکنند.
بسیاری از این کدها به این علت به وجود میآیند که در زمان تولید کدهای در حد R&D وارد کد عملیاتی شده و به مدیریت آن در آینده فکر نشده.
https://sourcemaking.com/antipatterns/lava-flow
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Sourcemaking
Design Patterns and Refactoring
Design Patterns and Refactoring articles and guides. Design Patterns video tutorials for newbies. Simple descriptions and full source code examples in Java, C++, C#, PHP and Delphi.
مفهوم «Lambda Expression» یکی از مفاهیم جذابی است که از دنیای Functional Programming وارد زبانهای شیگرا شدهاست. در نسخه Java 8 این امکان به زبان جاوا هم اضافه شدهاست. عبارات لامبدا باعث میشوند برنامه نویسی به شدت لذتبخشتر و کمخطا تر شوند. همچنین خوانایی کد میتواند با استفاده از لامبدا بسیار بهتر شود. مقاله زیر که به توضیح چگونگی استفاده از لامبدا در زبان جاوا پرداخته است، نشان میدهد چگونه برنامه نویسی با این مفهوم لذتبخشتر شده است.
https://mehrandvd.me/2015/09/10/tasty-lambdas-in-java-8/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
https://mehrandvd.me/2015/09/10/tasty-lambdas-in-java-8/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Forwarded from Software Philosophy
اندیشه طراحی یا «Design Thinking» یک مفهوم جدید در طراحی نرمافزار است که توسط IBM معرفی شدهاست. این روش به فرایند تولید نرمافزار به دید خلق یک سرویس نگاه میکند، سرویسی که قرار است به مشتریان ارائه شود تا نیاز واقعی آنها را برطرف کند. این روش با روش Agile متفاوت دارد ولی از ویژگیهای آن استفاده میکند. به نظر میرسد این روش محبوبیت خیلی زیادی به دست آورد و مطالعه آن واقعا لذتبخش است.
https://www.ibm.com/design/thinking/
ویدئوی زیر این روش را به اختصار شرح میدهد:
https://bit.ly/1WzM4dQ
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
https://www.ibm.com/design/thinking/
ویدئوی زیر این روش را به اختصار شرح میدهد:
https://bit.ly/1WzM4dQ
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
Ibm
IBM Enterprise Design Thinking
Discover IBM's Enterprise Design Thinking framework—a scalable, human-centered framework that helps teams align on user outcomes, accelerates collaboration, and drives innovation at speed and scale.
Forwarded from Software Philosophy
همیشه هر چیز خوبی، میتواند بد استفاده شود و نتیجه عکس دهد. این قضیه در مورد تکنولوژی هم صادق است. مقاله زیر توضیح میدهد که چه عادتهای اشتباهی هنگام کار با LINQ میتواند شما را به اشتباه بیندازد و باعث ایجاد کد بد شود.
یکی از خطرناکترین ویژگیهای LINQ این است که وقتی با آن کار میکنید احساس میکنید خیلی باهوشید که غالبا باعث میشود کد احمقانه و پیچیدهای با آن بنویسید. فهمیدن مفهوم Provider ها نیز مسئله مهمی است که باید با آن آشنا باشید.
مقاله زیر این نکات را شرح میدهد.
https://mehrandvd.me/2016/03/28/linq-the-bad-parts/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
یکی از خطرناکترین ویژگیهای LINQ این است که وقتی با آن کار میکنید احساس میکنید خیلی باهوشید که غالبا باعث میشود کد احمقانه و پیچیدهای با آن بنویسید. فهمیدن مفهوم Provider ها نیز مسئله مهمی است که باید با آن آشنا باشید.
مقاله زیر این نکات را شرح میدهد.
https://mehrandvd.me/2016/03/28/linq-the-bad-parts/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___