Forwarded from Iran .Net
مهندسی معکوس و یا Decompile کردن کدهای دات نت:
در پلتفرم دات نت، فارغ از زبانی (سی شارپ، F# و ویژوال بیسیک و ....) که برای برنامه نویسی استفاده می کنیم، کد های ما پس از کامپایل شدن تبدیل به یک زبان میانی به نام IL و یا Intermediate Language می شوند. به علت اینکه تمامی کد ها در نهایت به یک "زبان واحدِ میانی" تبدیل می شوند، می توانیم در هر زبانی که هستیم که از کتابخانه هایی که توسط زبان های دیگر توسعه پیدا کرده اند استفاده کنیم.
در هنگام اجرا، زبان IL به زبان ماشین کامپایل می شود و همین جا یکی از دلایل کندی نرم افزار های توسعه داده شده با دات نت در قیاس با زبان های C و یا C++ می باشد. چرا که باید زمانی را صرف کامپایل کد ها به زبان ماشین نماییم.
زبان IL، اگر چه شبیه به زبان Assembly است ولی به پیچیدگی و گنگی آن نیست. در کد های IL اطلاعات بسیار زیادی در مورد کد اصلی ما نگهداشته می شود. به همین خاطر روند مهندسی معکوس کد ها از زبان IL به زبان اصلی بسیار ساده صورت خواهد پذیرفت. یعنی می توانیم با داشتن یک dll یا فایل exe کد های اصلی را بدست بیاوریم. ابزارهای بسیار متنوعی برای این منظور وجود دارند.
برگرداندن کد ها به جز استفاده های غیر قانونی، برای یادگیری و فهمیدن رفتار کتابخانه های دیگران بسیار مفید می باشند.
ابزار های:
1. https://ilspy.net
2. https://www.jetbrains.com/decompiler
در پلتفرم دات نت، فارغ از زبانی (سی شارپ، F# و ویژوال بیسیک و ....) که برای برنامه نویسی استفاده می کنیم، کد های ما پس از کامپایل شدن تبدیل به یک زبان میانی به نام IL و یا Intermediate Language می شوند. به علت اینکه تمامی کد ها در نهایت به یک "زبان واحدِ میانی" تبدیل می شوند، می توانیم در هر زبانی که هستیم که از کتابخانه هایی که توسط زبان های دیگر توسعه پیدا کرده اند استفاده کنیم.
در هنگام اجرا، زبان IL به زبان ماشین کامپایل می شود و همین جا یکی از دلایل کندی نرم افزار های توسعه داده شده با دات نت در قیاس با زبان های C و یا C++ می باشد. چرا که باید زمانی را صرف کامپایل کد ها به زبان ماشین نماییم.
زبان IL، اگر چه شبیه به زبان Assembly است ولی به پیچیدگی و گنگی آن نیست. در کد های IL اطلاعات بسیار زیادی در مورد کد اصلی ما نگهداشته می شود. به همین خاطر روند مهندسی معکوس کد ها از زبان IL به زبان اصلی بسیار ساده صورت خواهد پذیرفت. یعنی می توانیم با داشتن یک dll یا فایل exe کد های اصلی را بدست بیاوریم. ابزارهای بسیار متنوعی برای این منظور وجود دارند.
برگرداندن کد ها به جز استفاده های غیر قانونی، برای یادگیری و فهمیدن رفتار کتابخانه های دیگران بسیار مفید می باشند.
ابزار های:
1. https://ilspy.net
2. https://www.jetbrains.com/decompiler
ویژگی float در CSS یکی از ویژگیهایی است که نکات ریز خیلی زیادی دارد. به همین دلیل استفاده از آن معمولا در ابتدا خیلی ساده به نظر میرسد، ولی بعد از اینکه مدل صفحه پیچیدهتر شد و تعداد زیادی از دستورات شروع به تاثیرگذاری روی یکدیگر کردند دیگر مدیریت آن آسان نیست. پست زیر که به زبان فارسی هم هست توضیحات خیلی خوبی در مورد توصیف عملکرد این ویژگی دادهاست که برای تمام کسانی که با CSS کار میکنند مفید است.
https://css-tricks.ir/css_reference/float/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
https://css-tricks.ir/css_reference/float/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
آموزش حرفه ای و تخصصی CSS
float - آموزش حرفه ای و تخصصی CSS
توضیح کامل ویژگی float در سایت css-tricks.ir توسط مجتبی سیدی
به نظر میرسد که تکنولوژی آنقدرها هم که به نظر میرسد به موفقیت پروژهها کمک نمیکند! برای مثال در کتاب «Peopleware: Productive Projects and Teams» عامل مهمتری را برای موفقیت یک پروژه معرفی کردهاست: «اعتماد افراد به یکدیگر». در تیمی که افراد به یکدیگر اعتماد نداشته باشند ریسک خیلی بالایی متوجه پروژه میشود و آینده آن به شدت در خطر خواهد بود.
Better technology seemed unlikely to be much help. If a group of people who had to work together didn’t trust each other.
از کتاب
Peopleware: Productive Projects and Teams
نوشته:
Tom DeMarco & Timothy Lister
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilisophy
___
Better technology seemed unlikely to be much help. If a group of people who had to work together didn’t trust each other.
از کتاب
Peopleware: Productive Projects and Teams
نوشته:
Tom DeMarco & Timothy Lister
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilisophy
___
Linkedin
Afshin Alizadeh Behjati | LinkedIn
View Afshin Alizadeh Behjati’s professional profile on LinkedIn. LinkedIn is the world's largest business network, helping professionals like Afshin Alizadeh Behjati discover inside connections to recommended job candidates, industry experts, and business…
Forwarded from Iran .Net
مایکروسافت قریب به یک سال است که یک CSS Framework به نام Office UI Fabric را به صورت متن باز توسعه داده است. با استفاده از این فریم ورک می توانید وب اپلیکشن هایی با شکل و شمایل Office و یا ویندوز 10 طراحی کنید.
https://dev.office.com/fabric
https://dev.office.com/fabric
Forwarded from Software Philosophy
یکی از ارکان مهم هر تیم رهبری تیم است. منظور از رهبر، یک نفر خاص نیست. بلکه رهبری یک ویژگی شخصیتی است که وجود آن در تک تک افراد تیم باعث پیشرفت تیم میشود.
در یک تیم فوتبال، دربازهبان شخصیتی است که وظیفه بسیار سختی دارد. برعکس مهاجمان که از بین تمام حرکاتشان فقط آنهایی که منجر به گل زدن میشود شمرده میشوند و مستحق تشویقند، دربازهبانها بین تمام حرکاتشان فقط اشتباهاتشان شمرده میشود که منجر به شکست تیم میشود.
در یک تیم شخصیت رهبری تشابهات زیادی با ویژگیهای شخصیتی یک دربازهبان دارد. در لینک زیر توضیح داده شده است که چگونه خصلتهای دربازهبانها میتواند الگویی برای تقویت روحیه رهبری باشد.
https://mehrandvd.me/2015/07/16/goalkeepers-vs-leaders-2/
#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
در یک تیم فوتبال، دربازهبان شخصیتی است که وظیفه بسیار سختی دارد. برعکس مهاجمان که از بین تمام حرکاتشان فقط آنهایی که منجر به گل زدن میشود شمرده میشوند و مستحق تشویقند، دربازهبانها بین تمام حرکاتشان فقط اشتباهاتشان شمرده میشود که منجر به شکست تیم میشود.
در یک تیم شخصیت رهبری تشابهات زیادی با ویژگیهای شخصیتی یک دربازهبان دارد. در لینک زیر توضیح داده شده است که چگونه خصلتهای دربازهبانها میتواند الگویی برای تقویت روحیه رهبری باشد.
https://mehrandvd.me/2015/07/16/goalkeepers-vs-leaders-2/
#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
موقعیتهای زیر را در نظر بگیرید:
۱) رانندهای که اگر به موقع به فرودگاه نرسد، پرواز را از دست میدهد.
۲) عابر پیادهای که عجله دارد.
۳) خانم خانهداری که مهمانها یک ساعت زودتر آمدهاند و گرسنه هستند.
احتمالا هر یک از ما حالت مشابهی را تجربه کردیم که در آن یک محدودیت زمانی وجود دارد و ناخواسته قوانینی را که رعایت میکردیم، دیگر رعایت نمیکنیم.
۱) به احتمال زیاد دیگر به تابلو ورود ممنوع و یا حق تقدیم توجهی نمیکند .
۲) به چراغ قرمز توجه نمیکند و از پل عابر پیاده نیز استفاده نمیکند .
۳) از کیفیت غذا کاسته شده است.
برنامهنویس نیز از این قاعده مستثنی نیست. اگر تحت فشار زمانبندی پروژه باشد سریعتر کار میکند ولی به خاطر اینکه سر وقت بتواند پروژه را تحویل دهد قوانینی را نادیده میگیرد و در نتیجه از کیفیت کد کاسته میشود.
People under time pressure don’t work better—they just work
faster.
از کتاب:
Peopleware: Productive Projects and Teams (Tom DeMarco & Timothy Lister)
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilisophy
___
۱) رانندهای که اگر به موقع به فرودگاه نرسد، پرواز را از دست میدهد.
۲) عابر پیادهای که عجله دارد.
۳) خانم خانهداری که مهمانها یک ساعت زودتر آمدهاند و گرسنه هستند.
احتمالا هر یک از ما حالت مشابهی را تجربه کردیم که در آن یک محدودیت زمانی وجود دارد و ناخواسته قوانینی را که رعایت میکردیم، دیگر رعایت نمیکنیم.
۱) به احتمال زیاد دیگر به تابلو ورود ممنوع و یا حق تقدیم توجهی نمیکند .
۲) به چراغ قرمز توجه نمیکند و از پل عابر پیاده نیز استفاده نمیکند .
۳) از کیفیت غذا کاسته شده است.
برنامهنویس نیز از این قاعده مستثنی نیست. اگر تحت فشار زمانبندی پروژه باشد سریعتر کار میکند ولی به خاطر اینکه سر وقت بتواند پروژه را تحویل دهد قوانینی را نادیده میگیرد و در نتیجه از کیفیت کد کاسته میشود.
People under time pressure don’t work better—they just work
faster.
از کتاب:
Peopleware: Productive Projects and Teams (Tom DeMarco & Timothy Lister)
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilisophy
___
Forwarded from Software Philosophy
وجود یک «لکه» یا Blob در کد برنامه شما یک نمونه ضد الگوی برنامه نویسی (Anti Pattern) محسوب میشود. یکی از علائمی که نشان میدهد برنامه شما لکه دارد، زمانی است که از این جمله استفاده میکنید: «این قسمت از کد، قلب سیستم است»
وقتی از این جمله استفاده میکنید، یعنی قسمتی از کد شما وجود دارد که در آن حجم زیادی از منطق برنامه شما نوشته شدهاست و شکسته نشدهاست. لکهها تمایل به بزرگ شدن دارند، یعنی خیلی وقتها برای نوشتن یک کد جدید، احساس میکنید باید آن را به «قلب سیستم» اضافه کنید. خیلی وقتها علت این مشکل معماری بد و یا حتی «نبود معماری» است.
لینک زیر بیشتر در مورد این Anti Pattern توضیح داده است.
https://sourcemaking.com/antipatterns/the-blob
#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
وقتی از این جمله استفاده میکنید، یعنی قسمتی از کد شما وجود دارد که در آن حجم زیادی از منطق برنامه شما نوشته شدهاست و شکسته نشدهاست. لکهها تمایل به بزرگ شدن دارند، یعنی خیلی وقتها برای نوشتن یک کد جدید، احساس میکنید باید آن را به «قلب سیستم» اضافه کنید. خیلی وقتها علت این مشکل معماری بد و یا حتی «نبود معماری» است.
لینک زیر بیشتر در مورد این Anti Pattern توضیح داده است.
https://sourcemaking.com/antipatterns/the-blob
#مهران_داودی
لینکداین:
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.
جملات زیر غالبا به مقدار زیاد شنیده میشوند:
• من صبح زود و قبل از اینکه کسی دیگری در شرکت باشد خیلی بهتر کار میکنم.
• در یک روز تعطیل میتوانم به اندازه ۲ یا ۳ روز کاری، کار انجام بدهم.
جملاتی از قبیل جملات بالا نشانه این هستند که محیط کاری مناسبی وجود ندارد. و مدیران با اتخاذ تصمیمات مناسب میتوانند آرامش را به محیط کار برگردانند. ولی متاسفانه هیچ کس کاری انجام نمیدهد.
Staying late or arriving early or staying home to work in peace is a damning indictment of the office environment.
The amazing thing is not that it’s so often impossible to work in the workplace; the amazing thing is that everyone
knows it and nobody ever does anything about it.
از کتاب:
Peopleware: Productive Projects and Teams (Tom DeMarco & Timothy Lister)
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilisophy
___
• من صبح زود و قبل از اینکه کسی دیگری در شرکت باشد خیلی بهتر کار میکنم.
• در یک روز تعطیل میتوانم به اندازه ۲ یا ۳ روز کاری، کار انجام بدهم.
جملاتی از قبیل جملات بالا نشانه این هستند که محیط کاری مناسبی وجود ندارد. و مدیران با اتخاذ تصمیمات مناسب میتوانند آرامش را به محیط کار برگردانند. ولی متاسفانه هیچ کس کاری انجام نمیدهد.
Staying late or arriving early or staying home to work in peace is a damning indictment of the office environment.
The amazing thing is not that it’s so often impossible to work in the workplace; the amazing thing is that everyone
knows it and nobody ever does anything about it.
از کتاب:
Peopleware: Productive Projects and Teams (Tom DeMarco & Timothy Lister)
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilisophy
___
Forwarded from Software Philosophy
قورباغه را دوباره اختراع نکنید!
در مهندسی نرمافزار، شناخت دقیق نیازمندیها و سپس ساخت محصولی مطابق نیازمندیها یکی از کارهای به ظاهر ساده ولی در عمل پیچیده است. مطلب زیر داستانی را تشریح میکند که در آن یک مهندس نرمافزار هنگام خلقت زمین پروژه طراحی «زنبور» را بر عهده گرفتهاست. ولی به دلایلی که در داستان توضیح داده شده اقدام به طراحی یک «وزغ» میکند که هیچ تناسبی با نیازمندیهای «زنبور» ندارد. این مهندس نرمافزار در حقیقت به جای خلق موجودی که نیازمندیهای زنبور را برآورده کند، یک حیوان جدید به نام وزغ خلق کرده که اتفاقا خدا قبلا آن را با نام «قورباغه» خلق کرده بوده!
اگر لینک زیر را کامل بخوانید ارتباط آن را با پروژههای نرمافزاری میبینید و خواهید دید که چگونه این خطا باعث شکست یک پروژه نرمافزاری میشود.
https://mehrandvd.me/2016/03/09/reinventing-the-frog/
#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
در مهندسی نرمافزار، شناخت دقیق نیازمندیها و سپس ساخت محصولی مطابق نیازمندیها یکی از کارهای به ظاهر ساده ولی در عمل پیچیده است. مطلب زیر داستانی را تشریح میکند که در آن یک مهندس نرمافزار هنگام خلقت زمین پروژه طراحی «زنبور» را بر عهده گرفتهاست. ولی به دلایلی که در داستان توضیح داده شده اقدام به طراحی یک «وزغ» میکند که هیچ تناسبی با نیازمندیهای «زنبور» ندارد. این مهندس نرمافزار در حقیقت به جای خلق موجودی که نیازمندیهای زنبور را برآورده کند، یک حیوان جدید به نام وزغ خلق کرده که اتفاقا خدا قبلا آن را با نام «قورباغه» خلق کرده بوده!
اگر لینک زیر را کامل بخوانید ارتباط آن را با پروژههای نرمافزاری میبینید و خواهید دید که چگونه این خطا باعث شکست یک پروژه نرمافزاری میشود.
https://mehrandvd.me/2016/03/09/reinventing-the-frog/
#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Dot Philosophy
Reinventing the Frog! - Dot Philosophy
Do you remember the time that God was creating the "Planet Ecosystem" as a sub project of "Earth Project"!? You know, there was a lot of work needed to be done to create this world. Some sample tasks might be: Creating Flowers Designing Rose Designing Tulip…
Forwarded from Software Philosophy
تا امروز فیدبکهای خیلی خوبی از شما دوستان گرفتیم. بر اساس فیدبکهای شما تصمیم گرفتیم که پستهای این کانال را در سه دسته بندی پست کنیم:
۱) مطالب مهندسی و معماری نرمافزار و مدیریت تیمهای نرمافزاری
۲) مطالب مربوط به آخرین تکنولوژیها
۳) مطالب مربوط به تکنولوژیهای مرسوم که در شرکتها استفاده میشود.
هر هفته مطالبی که پست میشود شامل تمامی دستههای بالا خواهد بود. به این ترتیب اگر به یکی یا چندتا از دستهبندیها علاقه دارید، هر هفته حتما چند پست مورد علاقه شما در این کانال «فلسفه نرمافزار» وجود دارد.
لطفا اگر نظر، پیشنهاد، انتقاد و یا هرگونه فیدبکی نسبت به این کانال دارید، در توئیتر بنویسید. مطمئن باشید ما آنها را میخوانیم. (در توئیتر https://twitter.com/mehrandvd را منشن کنید و از هشتگ #SoftwarePhilosophy استفاده کنید)
۱) مطالب مهندسی و معماری نرمافزار و مدیریت تیمهای نرمافزاری
۲) مطالب مربوط به آخرین تکنولوژیها
۳) مطالب مربوط به تکنولوژیهای مرسوم که در شرکتها استفاده میشود.
هر هفته مطالبی که پست میشود شامل تمامی دستههای بالا خواهد بود. به این ترتیب اگر به یکی یا چندتا از دستهبندیها علاقه دارید، هر هفته حتما چند پست مورد علاقه شما در این کانال «فلسفه نرمافزار» وجود دارد.
لطفا اگر نظر، پیشنهاد، انتقاد و یا هرگونه فیدبکی نسبت به این کانال دارید، در توئیتر بنویسید. مطمئن باشید ما آنها را میخوانیم. (در توئیتر https://twitter.com/mehrandvd را منشن کنید و از هشتگ #SoftwarePhilosophy استفاده کنید)
در یک بازی شطرنج با محدودیت زمانی ۵ دقیقه (شطرنج سریع یا بلیتس)، بازیکنان در یک زمان کم تصمیم میگیرند و حرکت را انجام میدهد ولی در حالت بدون محدودیت زمانی بازیکنان به اندازه کافی وقت برای فکر کردن و تصمیم گرفتن را دارند. در نتیجه شطرنج سریع از لحاظ کیفیت قابل مقایسه با شطرنج بدون محدودیت زمانی نیست.
یک رابطه مستقیم بین کیفیت و زمان انجام کار وجود دارد. هرچه که زمان بیشتر باشد کیفیت کار نیز بیشتر است. این قاعده در پروژههای نرمافزاری نیز صادق است. اگر مدیر پروژه به هر دلیلی مدت زمان انجام پروژه را کم در نظر بگیرد ناخواسته از کیفیت برنامه کاسته میشود، و این عدم کیفیت در سایت مشتری خودش را نشان میدهد.
بروز خطا در سایت مشتری به مراتب اثر منفی بیشتری دارد تا دیر تحویل دادن یک پروژه با کیفیت عالی.
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.