Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from Iran .Net
قابلیت Multi Threading در JavaScript

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

در این سناریو و بسیاری از سناریو های دیگر نیاز هست تا پردازش های سنگین و یا موازی در صفحه مان داشته باشیم و برای حل مشکلی که در فوق مطرح شد باید از Multi Threading استفاده کنیم.

در استاندارد HTML5، قابلیت Web Worker معرفی شد که به مرورگر ها اجازه میداد اپلیکشن ها را به صورت Multi Thread اجرا کنند. در واقع هر Worker معادل با یک Thread می باشد.

* در مورد Web Worker در مستندات MDN:
http://blog.teamtreehouse.com/using-web-workers-to-speed-up-your-javanoscript-applications

* کتابخانه ای که کار با Web Worker ها را به شدت ساده تر و خوانا تر می کند:
https://github.com/calvinmetcalf/catiline

@irandotnet
Forwarded from LiTuX
📜📜📜
-معرفی ابزار لاتک (LaTex)

لاتک یه سیستم تهیه اسناد خیلی رایج هست که بوسیله ی دانشمندان,مهندسان,ریاضی دان ها, و.... خیلی مورد استفاده قرار میگیرد.
لاتک با استفاده از یک زبان نشانه گذاری متون که درون اسناد پی دی اف کامپایل میشود به نوعی قوانین تایپی را بهینه میکند
در نتیجه چه شما از لاتک استفاده کنید و چه از سایر نرم افزار ها مانند word نتیجه شاید یکسان باشد ولی محیطی که شما در آن متنتان را مینویسید بیسار متفاوت میباشد و لاتک دارای محیط حرفه ای تری میباشد.
قابلیت سفارشی سازی (customization) یکی دیگر از قابلیت های ویژه ی لاتک میباشد که آن را از سایر رقبای خود بسیار متمایز میسازد.

اگر شما هم علاقه مند به یادگیری لاتک و نحوه ی کار با آن هستید میتوانید از وبسایت زیر استفاده کنید:

http://www.latextemplates.com

#Amateurs
#Development_Tools
#Text_Editor
#latex

💻💻💻
@Litux (کاربردی ترین کانال گنو/لینوکس)
Forwarded from Iran .Net
در برخی از نرم افزارها که از سایز به نسبت بزرگی برخوردار هستند، به دلایلی گاهی بیشتر از یک پایگاه داده استفاده می شود. هنگامی که می خواهیم تغییری در داده های سیستم اعمال کنیم، نیاز هست تا هم زمان بر روی دو یا چند پایگاه داده، داده های جدید را ثبت کنیم. اما چطور مطمئن شویم که این عملیات بر روی همه پایگاه های داده ها با موفقیت ثبت شده و یا اگر مشکلی هست، مطمئن شویم در هیچ کدام هیچ تغییری صورت نپذیرفته است (Atomicty) و به عبارتی دقیق تر با شرابطی مواجه نشویم که یکپارچگی داده ها در سیستم از بین رفته باشد و داده ای در جایی ثبت شده باشد و در جایی دیگر موجود نباشد.

جواب این سوال استفاده از Transaction می باشد. یک Transaction به ما این امکان را می دهد تا کارهای ما به صورت اتمیک انجام بگیرند. یعنی یا همه با هم صورت بپذیرند و یا مطمئن باشیم هیچ کدام صورت نگرفته اند. در SQL Server می توانیم یک Transaction را بین چند پایگاه داده به اشتراک بگذاریم تا عملیات ما بر روی آن ها به صورت اتمیک صورت f.

یا در سناریو های ساده تر نیاز هست تا در Entity Framework چند بار متد SaveChanges را پشت سر هم صدا بزنیم. اگر در یکی از این دفعات متد SaveChanges با خطا رو به رو شد، با شرایطی مواجه می شویم که یکپارچگی داده ها از بین می رود چرا که یک سری از داده ها ذخیره شده اند و یک سری از داده ها از دست رفته اند. راه حل این مشکل هم استفاده از Transaction ها می باشد.

استفاده از Transaction ها در EF 6.x:
https://msdn.microsoft.com/en-us/data/dn456843.aspx
#پست_مجدد این پست تا به حال بیش از ۱۵۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
مفاهیم Covariance و Contravariance یکی از مباحث مهم در زبان‌های برنامه‌نویسی مدرن محسوب می‌شود. تسلط بر این مفاهیم به طراحان فریم‌ورک‌ها و پلتفرم‌ها کمک می‌کند تصمیم‌های مناسب‌تری در طراحی کلاس‌ها داشته باشند.
از آنجایی این مفاهیم انتزاعی هستند، معمولا فهم آنها در وهله اول سخت به نظر می‌رسد. مقاله زیر با چند مثال قابل لمس این مفاهیم را به زبان ساده‌تری توضیح داده تا فهم آن لذت‌بخش‌تر و آسان‌تر شود.

http://mehrandvd.me/2016/06/18/covariant-and-contravariant/

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

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



___
در واحدهای نسبی یک اندازه طولی نسبت به یک اندازه طولی دیگر محاسبه می‌شود به همین دلیل به آنها نسبی گفته می‌شود.
زمانی که از واحدهای نسبی در CSS استفاده می‌شود خروجی به راحتی می تواند در محیطهای گوناگون وفق پیدا کند.
این واحدها در دو دسته واحدهای نسبی وابسته به فونت و واحدهای نسبی وابسته به Viewport قرار می‌گیرند.
واحدهای نسبی وابسته به فونت در CSS شامل چهار واحد ch, ex, em و rem می‌باشند و واحدهای نسبی وابسته به Viewport شامل چهار واحد vmin, vw, vh و vmax می‌باشند.
مقاله زیر توضیحات کاملی در مورد نحوه استفاده از موارد ذکر شده را به همراه مثالهای کاربردی ارائه کرده است.

http://css-tricks.ir/tutorial/%D9%88%D8%A7%D8%AD%D8%AF%D9%87%D8%A7%DB%8C-%D9%86%D8%B3%D8%A8%DB%8C

#مریم_داودی

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
حتما تا به حال از کتابخانه Bootstrap استفاده کرده‌اید. این نوع کتابخانه‌ها کمک می‌کنند که بتوانید به راحتی از امکانات CSS استفاده کنید، بدون اینکه نیاز به درگیر شدن با پیچیدگی‌های آن پیدا کنید. کتابخانه‌های زیادی از این قبیل به وجود آمده‌اند. یکی از این کتابخانه‌ها که اخیرا به دنیای برنامه‌نویسی معرفی شده کتابخانه Office UI Fabric است. این کتابخانه که تقریبا تمام امکانات گرید سیستمBootstrap را دارد بر اساس معماری مدرن UI که در نرم‌افزارهای مایکروسافت استفاده شده ساخته شده‌است. اگر با این کتابخانه کار کنید، می‌توانید برنامه‌هایی بسازید که UI آن سازگار با برنامه‌هایی مانند Word Online, Excel Online, Outlook Online و مانند آن باشد.

http://dev.office.com/fabric/get-started

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

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



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

http://sirwan.info/Why-Angular

#سیروان_عفیفی
لینکدین:
https://ir.linkedin.com/in/sirwan-afifi-73225345

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



___
Forwarded from Iran .Net
پروژه Awsome Dotnet سعی کرده است بهترین پروژه های دات نت در حوزه های مختلف را گردآوری کند. در این جا کتابخانه ها و فریم ورک ها طبقه بندی شده و شرح کوتاه خوبی از هر کدام داده شده است. بدون شک نگاه کردن به فهرست شما را با پروژه هایی خوب و کاربردی در حوزه های مختلف آشنا می کند و جعبه ابزار تان را با ابزارهای قدرتمند مجهز خواهد کرد.
این فهرست با سرعت خوبی به روز شده و با کیفیت بالایی نگهداری می شود:
https://github.com/quozd/awesome-dotnet

@irandotnet
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
هشت نکته در زبان C# که احتمالا آنها را نمی‌دانید! دو نکته که برای من جالب بود:
۱. در Indexer ها می‌توان از params استفاده کرد و چندین پارامتر ورودی استفاده کرد.
۲. بر روی enum ها هم می‌توان Extension Method تعریف کرد.

https://damieng.com/blog/2012/10/29/8-things-you-probably-didnt-know-about-csharp

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

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


___
Forwarded from Iran .Net
چه تفاوتی بین مفاهیم Asynchronous و Multi Threading وجود دارد؟

تفاوت این دو مفهوم برای خیلی مشخص نیست، با آنکه به کلی متفاوت از هم می باشند.

مفهوم Asynchronous به ماهیت Non-Blocking یک متد یا فرایند اشاره می کند.
به طور ساده، می دانیم که در صورت صدا زدن یک متد، جریان برنامه متوقف می شود. پس از پایان یافتن متد، برنامه مجددا به مسیرِ اجرای خود ادامه خواهد داد. به این نوع از متد ها متدهای Blocking گفته می شود، بدین معنی که فرایند برنامه تا زمانِ اتمام این نوع از متد ها متوقف (بلاک) خواهد شد. اما در موردمتدهای Non-Blocking و یا Asynchronous قضیه فرق می کند و جریانِ اصلی برنامه پس از صدا زدن متد، معطل تمام شدن متد نخواهد ماند و به مسیر خود ادامه خواهد داد. این نوع از متدها معمولا در مورد امور I/O و مواردی که در حوزه سیستم عامل، دیسک و شبکه و پایگاه داده و ... می باشند، مورد استفاده قرار می گیرند.
از سوی دیگر مفهوم Multi Threading به این موضوع اشاره می کند که یک تکه از کد همزمان توسط چند Thread در حال اجرا می باشد. این نوع از اجرا بیشتر در مورد کد هایی استفاده می شوند که به اصطلاح CPU Bound بوده و دارای بار پردازشی زیادی می باشند. با تقسیم بار بین چند پردازنده سعی می کنیم، موجب سریع تر و بهینه تر شدن کد شویم.

http://blog.slaks.net/2014-12-23/parallelism-async-threading-explained/

@irandotnet
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
برای شما که علاقه دارید (عجله دارید!) تا امکانات C# 7.0 را همین الان امتحان کنید، قبل از اینکه نسخه‌ نهایی آن منتشر شود، لینک زیر توضیح می‌دهد که چطور می‌توانید در Visual Studio 2015 و یا Visual Studio '15' (نسخه بعدی) نسخه جدید زبان C# را امتحان کنید. با توجه به اینکه کامپایلر جدید این زبان (Roslyn) دیگر Open Source شده، شما می‌توانید حتی آخرین نسخه‌ موجود را امتحان کنید.

http://www.c-sharpcorner.com/article/how-to-compile-test-C-Sharp-7-features/

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

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



___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
همیشه یکی از مراحل مهم در توسعه نرم‌افزار، مرحله Optimization است. در این مرحله معمولا کدها نوشته شده و حال نوبت رفع کندی‌هایی است که در برنامه وجود دارد. برای این کار باید ابتدا تشخیص دهید چه قسمت‌هایی از برنامه کند است، یا به طور دقیق‌تر چه متدهایی و یا دقیقا اجرای چه خط‌هایی باعث کند شدن برنامه شده‌است. به ابزارهایی که به شما کمک می‌کنند بتوانید نرم‌افزار خود را از این لحاظ بررسی کنید Performance Profiler می‌گویند. از نمونه ابزارهای قوی در این حوزه می‌توان به dotTrace و ANZ اشاره کرد. در خود Visual Studio نیز چنین ابزاری به نام Profiler وجود دارد که لینک زیر نحوه استفاده از آن را شرح داده‌است.

https://blogs.msdn.microsoft.com/visualstudioalm/2016/04/28/how-cpu-sampling-works/

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

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



___
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
از جمله تکنولوژی‌های جذابی که این روز‌ها به عنوان تکنولوژی‌های آینده وب مطرح هستند Angular 2، TypeScript و ASP.NET Core برای ساخت برنامه‌های Cross-Platform هستند. یکی از جذابیت‌های این تکولوژی‌ها این است که تمامی آنها کاملا از ابتدا نوشته شده‌اند و با توجه به این که نیازی به پشتیبانی از نسخه‌های قبل ندارند معماری کاملا نوینی و مدرنی دارند.
این لینک به صورت قدم به قدم آموزش داده است که همین الان چطور می‌توانید با این تکنولوژی‌ها برنامه تولید کنید. بنابراین با خواندن این پست و انجام مراحل شما یک محصول کامل خواهید نوشت.


https://chsakell.com/2016/01/01/cross-platform-single-page-applications-with-asp-net-5-angular-2-typenoscript/

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

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



___
بهترین راه برای تست کارایی یک نمونه‌ی اولیه واسط کاربری، مشاهده دقیق افرادیست که برای اولین بار از آن استفاده می‌کنند. با این کار می‌توان به راحتی متوجه شد که چه قسمت هایی گیج کننده است، چه قسمت هایی نامفهوم است یا کارایی مناسب را ندارد و از آن‌ها در جهت بهبود طراحی استفاده کرد.
برای انجام این کار با توجه به اینکه کاربر نهایی چه کسی است و چه اهدافی دارد، یک سناریو یا داستان نوشته می شود و کارهایی که شخص باید انجام دهد را مشخص می‌کند اما در آن به جای اینکه مشخصا از شخص خواسته شود که "کار X را انجام بده!"، یک سناریو طرح می‌شود که این فضا را به شخص بدهد که کار X را انجام دهد. برای مثال، یک سناریو می‌تواند این باشد: "شما در‌حال برنامه‌ریزی سفر به شهر اصفهان از تاریخ ۳ فروردین تا ۶ فروردین هستید و احتیاج دارید که بلیط هواپیمای خود را بخرید. برای انجام این کار به سایت هواپیمایی ماهان می روید.". و متوجه می‌شویم که کاربر آیکون خرید بلیط را خیلی سخت پیدا کرده است. این آزمایش به طراح نشان می‌دهد باید طراحی تجربه کاربری را تغییر دهد...
در مقاله ی زیر می توانید با این روش کاملتر آشنا شوید.

https://www.nngroup.com/articles/task-scenarios-usability-testing

#زهره_مرادی

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

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

___