Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from Software Philosophy
مدیریت کردن برنامه نویس ها از بسیاری جهات شبیه مدیریت کردن دیگر افراد است. آن ها می خواهند که در حل مسائل فنی و منطق برنامه به آن ها کمک شود، از سیاست های غیر ضروری سازمان دور باشند و به دغدغه های شخصی آنها توجه شود. اما مدیریت کردن آن ها به مراتب سخت تر است. در این مقاله پنج نکته درباره اداره کردن تیم های نرم افزاری که محصولات بزرگی را با موفقت ارائه کرده اند توسط یکی از بزرگان این صنعت ذکر شده است.

https://www.cio.com/article/2436015/enterprise-architecture/5-things-grady-booch-has-learned-about-complex-software-systems.html

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

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

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


___
#پست_مجدد این پست تا به حال بیش از ۱۴۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
دیتابیس‌های NoSQL امروزه در معماری‌های نوین نرم‌افزار جایگاه ویژه‌ای پیدا کرده‌اند. در سال‌های قبل از این نوع دیتابیس‌ها فقط در پروژه‌های خاصی استفاده می‌شد ولی به مرور نقش این نوع دیتابیس‌ها با ظهورمعماری‌های نوین یا مفاهیمی مانند CQRS پر رنگ تر شده‌است. مفاهیم این دیتابیس‌ها به طور کلی با مدل فکری دیتابیس‌های رابطه‌ای یا Relational متفاوت است.

https://www.c-sharpcorner.com/article/introduction-to-no-sql-and-working-with-mongodb-part-one/

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

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


___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
اصطلاح Full Stack Developer عبارتی است که در چند سال اخیر بسیار رایج شده‌است. این برنامه‌نویسان معمولا درک خوبی از برنامه‌نویسی، زیرساخت، طراحی و حتی فهم بیزنس‌ها دارند. چند سالی هم هست که «متخصص UX» به عنوان یک تخصص مهم در تیم‌ها جا افتاده است. مقاله زیر اصطلاح جدیدی را با عنوان Full Stack UXer را معرفی می‌کند و نشان می‌دهد که این نقش و تخصص در یک تیم چقدر می‌تواند به موفقیت کمک کند. در این مقاله تخصص‌هایی که از یک Full Stack UXer انتظار می‌رود توضیح داده شده است. در این تعریف معمولا این فرد بیشتر درگیر تخصص‌های زیادی خواهد بود که از Gamification تا حتی برنامه‌نویسی را شامل می‌شود.

مقاله زیر تجربه تعریف و استفاده از نقش توضیح داده شده است.

https://uxmag.com/articles/the-full-stack-uxer

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

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



___
Forwarded from LiTuX


- معرفی ابزار برنامه سازی: ویرایشگر متن (vim)

ابزار vim در واقع یک Clone از ویرایشگر یونیکسی vi بوده و توانایی و کارایی آن فراتر از یک ویرایشگر عادی متن است.
آن در دو حالت متنی (CLI) و گرافیکی (GUI) قابل استفاده است. مانند ویرایشگر vi رابط کاربری vim بر اساس Menu و Toolbar نبوده و در حالت متنی عمل میکند. پوسته gvim رابط گرافیکی کاربری را به آن میدهد اما همچنان همه توان عملکرد آن در حالت متنی است.
همچنین در طراحی و پیاده سازی vim دستیابی به حداکثر سرعت و دقت در تایپ (از طریق حفظ گرایش انگشتان بر موضع سطر خانگی بر روی صفحه کلید) در نظر گرفته شده است.
این ابزار جهت سهولت کار کاربران در شروع بکار با آن، از طریق خط فرمان (فرمان vimtutor) دفترچه راهنمای آن را که بصورت بر خط (On-Line) نیز در دسترس می‌باشد را فراهم نموده است.
همچنین راهنمای (Help) آن از طریق خط فرمان (فرمان help:) در دسترس است.
قدرت و انعطاف عمده vim در شخصی سازی آن در ویرایشگری است. همچنین افزونه های (Plugins) بسیاری جهت افزایش دامنه کارایی آن در دسترس است.
این اسکریپتهای پیچیده در حقیقت با زبان اسکریپتی درونی vim نوشته شده‌اند. همچنین در این رابطه vim از زبانهای اسکریپتی زیر پشتیبانی می‌کند:
Perl, Python, Racket, Ruby & TCL

- سبکی و چالاکی نسبت به رقبای انحصاری که موجب کوتاه شدن زمان بالا آمدن نرم‌افزار (Startup)، ذخیره شدن فضای دیسک، کارایی (Performance) بهینه تر در زمان اجرا می‌گردد.
- پشتیبانی از Unicode
- تکمیل کننده کد
- مقایسه کننده و ترکیب کننده فایلها
- پشتیبانی کامل از Regexp پیشرفته (و البته زبان Perl)
- پشتیبانی از عملیات مربوط به فایلها از طریق پروتکلهای شبکه مانند:
SSH, FTP & HTTP
- پشتیبانی از Spell Checking
...

پوسته gvim این ابزار بر پایه کتابخانه GTK ساخته شده است.

در سیستم‌های بر پایه دبیان، در مخازن رسمی در دسترس بوده و با دستور زیر در ترمینال نصب می‌شود:

$ sudo apt install vim

#Development_Tools
#vi
#vim

👁‍🗨👁‍🗨👁‍🗨
+ @Litux (Reference applications of GNU/Linux)
#پست_مجدد این پست تا به حال بیش از ۱۳۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
فریم‌ورک Aurelia یکی از فریم‌ورک‌های خوش‌ساخت برنامه‌های وب نسل جدید است. این فریم‌ورک که در حقیقت معادل و رقیب Angular 2 است معمولا به معماری خوب و Syntax بهتر از رقیب خود شناخته می‌شود. مدتی است که در مقایسه فریم‌ورک‌های جاوا اسکریپتی یکی از نکاتی که بسیار مورد توجه قرار می‌گیرد یکپارچگی آنها با TypeScript است. از این نظر نیز Aurelia بسیار خوب عمل کرده است و نه تنها کاملا با تایپ اسکریپت سازگار است، بلکه تمامی مستندات آن برای این زبان نیز وجود دارد و اصولا یکی از روش‌های اصلی توسعه سیستم در آن استفاده از زبان TypeScript است.
مقاله زیر که توسط Mike Graham نوشته شده، توضیح می‌دهد که چگونه با این دو تکنولوژی می‌توان شروع به توسعه نرم‌افزار کرد.

https://blog.durandal.io/2015/05/06/getting-started-with-aurelia-and-typescript

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

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



___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
معماری حافظه در .Net یکی از مفاهیم مهمی است که هنگام کار، مخصوصا هنگام نوشتن برنامه‌هایی که از Parallel Programming استفاده می‌کنند بسیار اهمیت دارد. کلمه کلیدی volatile دستوری در زبان C# است معمولا کمتر شناخته شده‌است، ولی در خیلی از شرایط موازی، عدم استفاده از آن باعث ایجاد خطاهای عجیب می‌شود. مقاله زیر از Igor Ostrovsky (یکی از برنامه نویسان تیم ابزارسازی دات‌نت) در مورد مدل معماری حافظه در .Net صبحت کرده است. در این مقاله در مورد مفاهیمی مانند Lazy Initialization که بسیار پر کاربرد هستند نیز صحبت کرده است.

https://msdn.microsoft.com/en-us/magazine/jj863136.aspx

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

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



___
#پست_مجدد این پست تا به حال بیش از ۱۴۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
نوشتن یک رزومه خوب برای پست‌های برنامه‌نویسی و یا UI/UX بسیار مهم است. رزومه باید بتواند قابلیت‌های شما را در یک تعامل ذهنی به خواننده منتقل کند. شما باید بتوانید در رزومه خود، یک خط پنهان طراحی کنید تا کسی که رزومه شما را می‌خواند ناخودآگاه به ترتیبی که شما می‌خواهید رزومه شما را ببیند. به عبارت دیگر، اگر برای پست UI/UX رزومه می‌نویسید باید در آن اصول UI/UX را رعایت کنید.

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

https://www.rleonardi.com/interactive-resume

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

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



___
#پست_مجدد این پست تا به حال بیش از ۱۳۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
زبان C++ کماکان یکی از قوی‌ترین زبان‌هایی است که تا به امروز ساخته شده است. خالق این زبان Bjarne Stroustrup اخیرا یک پیش‌نویس ارائه داده است که در آن در مورد اهداف نسخه بعدی یعنی C++ 17 صبحت کرده‌است. مهمترین اهداف طراحی در این نسخه عبارتند از:
• بهبود پشتیبانی از large-scale dependable software
• بهره‌مند شدن از ماژول‌های سطح بالاتر برای concurrency
• ساده سازی هسته زبان

لینک زیر مصاحبه‌ای است که با Stroustrup در مورد این پیش‌نویس انجام شده است.

https://www.infoq.com/news/2015/04/stroustrup-cpp17-interview

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

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


___
مفهوم Parameter Binding در ASP.NET Web Api وظفیه نگاشت و پر کردن پارامترهای مورد نیاز در متد تعریف شده به عنوان Action را دارد. این کار به وسیله اطلاعاتی که در پارامترها در URI و اطلاعاتی که در Body آمده‌است انجام می‌شود.
به صورت پیش‌فرض پارامترهای از نوع‌های پایه (int, string, …) از طریق URI پر می‌شوند و پارامترهای Complex از طریق Body ساخته می‌شود. برای تغییر این رویه روش‌های خاصی وجود دارد که در مقاله زیر به طور کامل توضیح داده شده‌است.

https://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

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

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

___
پیاده سازی Owin Authorization در برنامه‌هایی که از Owin WebApi استفاده می‌کنند معمولا بسیار کاربردی است. استفاده از Owin در معماری برنامه‌های تحت وب مزایای زیادی دارد. مفهوم Middleware در این معماری باعث خوانایی بسیار زیادی در معماری می‌شود. در معماری Owin فضاهای بسیار مشخصی برای نوشتن کدها تعریف شده‌است.
مقاله زیر به خوبی نشان می‌دهد چطور Claim based authentication را با استفاده از Owin روی ASP.NET WebApi تنظیم کنید.

https://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer

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

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


___
برنامه نویس ارشد یا مدیر تیم شدن اتفاقی است که ممکن است برای هر برنامه نویسی پیش بیاید، اتفاقی جذاب و پر استرس. شما یک برنامه نویس خوب هستید، اما این لزوما به معنی توانایی بالا در ارتباط برقرار کردن با دیگران، مدیریت امور و رفع تناقض‌ها نیست. شما از این به بعد مسئولیت کل تیم را به عهده دارید که شامل افراد فنی و افراد غیر فنی است. مقاله زیر پنج نکته مفید در مورد یک مدیر فنی موثر را توضیح داده است.

https://www.thoughtworks.com/insights/blog/5-tips-being-effective-tech-lead

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

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

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

___
به احتمال خیلی زیاد همه ما، خصوصا برنامه نویسان موبایل، بعد از شهرت یافتن بازی پوکومن با مفهوم واقعیت افزوده یا Augmented Reality آشنا شده ایم. تکنولوژی که می تواند تمامی معادلات آینده را دستخوش تغییر کند. اما تفاوت‌های آن با مفهوم Virtual Reality (واقعیت مجازی)، یکی از مبهم‌ترین مسائل می باشد. مقاله زیر تفاوت این دو مفهوم را به سادگی توضیح داده است.

https://www.augment.com/blog/virtual-reality-vs-augmented-reality/

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

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
پیاده سازی Multi-Tenant Application و مدیریت داده‌های مشتریان مختلف در یک بانک اطلاعاتی، پیچیدگی‌های فراوانی دارد. در نسخه SQL Server 2016 امکانی به نام RLS (Row-Level Security) اضافه شده که این موضوع را بسیار ساده‌تر کرده است. لینک زیر توضیح می‌دهد که چگونه با استفاده از این امکان می‌توان امنیت داده‌ها را در سطح رکورد فراهم کرد. با استفاده از این قابلیت‌ می‌توان برنامه‌هایی برای چندین مشتری که اطلاعات آنها در یک بانک اطلاعاتی نگهداری می شوند، تولید کرد.

https://www.mssqltips.com/sqlservertip/4004/sql-server-2016-row-level-security-introduction

#محمدمحبتی

لینکدین :
https://www.linkedin.com/in/mohabbati

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


___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.