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

https://continuous.codes/

#سپیده_قنبری

لینکدین:

https://ir.linkedin.com/in/sepideh-ghanbari-584ba25a

کانال تلگرام:
@SoftwarePhilosophy
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
اضافه کردن فیچر به نرم‌افزار غالبا ویژگی مثبتی به نظر می‌رسد. ولی وقتی تیمی دارید که قدرت بسیار بالایی دارد اضافه کردن فیچرها با سرعت خیلی زیاد خودش می‌تواند نکات منفی داشته باشد. وقتی قدرت اضافه کردن امکانات با سرعت زیاد دارید باید محتاط باشید که امکانات جدید راه‌حل‌هایی جدید برای یک مسئله حل شده نباشند. داشتن تیم قدرتمند این قدرت را به مدیران می‌دهد که بتوانند سریع ایده‌های ذهنی خود را پیاده‌سازی کنند. در این حین باید مراقب بود این امکانات با هم، همپوشانی نداشته باشند.
مثال زیر از تیم توسعه C# آورده شده‌است که در مورد کاربرد دو امکان این زبان که در نسخه‌های ۵ و ۶ اضافه شد صحبت می‌کند.

https://mehrandvd.me/2016/05/02/steady-consistent-flow-features/

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

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



___
Forwarded from Iran .Net
قابلیت Always Encrypted در SQL Server 2016

این ویژگی که در آخرین نسخه SQL Server 2016 پیاده سازی شده است، کمک می کند تا اطلاعات به صورت رمز شده در پایگاه داده قرار بگیرند. در نتیجه مثلا در سازمان ها بین کسانی که مالک داده هستند و کسانی که داده ها را مدیریت (dba ها) می کنند می توانیم تفاوت قائل شویم و مطمئن باشیم اطلاعات حساس مالی، شخضی، هویتی، تجاری و اسناد ... توسط افرادی که به پایگاه داده دسترسی دارند خوانده نخواهد شد.

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

این روش رمزنگاری مستقل از لایه نرم افزار خواهد بود و نیازی به پیاده سازی روش های پیچیده و من درآوردی و ... در کد نخواهیم داشت.

این روش علی رغم مزیت هایش دارای محدودیت هایی هم می باشد که مهم ترین شان به نظر من موارد زیر می باشند:

1. در حال حاضر قابلیت Replication را بر روی ستون های رمز شده نخواهیم داشت.
2. در مورد Index گذاری، Join و عملگرهای مقایسه ای دارای محدودیت هایی هستیم.

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

1. معرفی ویژگی Always Encrypted:
https://msdn.microsoft.com/en-us/library/mt163865.aspx
2. تشریح کلید ها و نکاتی جهت نگهداری آن ها:
https://msdn.microsoft.com/en-us/library/mt708953.aspx
3. مثالی عملی و ساده از کانفیگ دیتابیس، کلید ها و برنامه:
https://www.databasejournal.com/features/mssql/exploration-of-sql-server-2016-always-encrypted-part-1.html
4. توضیح محدودیت ها:
https://www.infoq.com/news/2015/06/SQL-Server-Always-Encrypted

https://www.sqlchamp.com/2016/07/limitations-always-encrypted/337


@irandotnet
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. آشنایی با Xamarin Workbooks
#xamarin #dotnet
https://t.iss.one/SoftwarePhilosophy/713

۲. بدهی فنی چیست؟ (ایران دات نت)
#softwareengineering #technicaldept
https://t.iss.one/SoftwarePhilosophy/714

۳. محیط برنامه‌نویسی Continuous، یک محیط جذاب روی iPad و iPhone برای برنامه‌نویسی به زبان‌های C# , F#
#crossplatform #csharp #fsharp #iphone
https://t.iss.one/SoftwarePhilosophy/717

۴. کنترل سرعت اضافه کردن فیچر به نرم‌افزار
#softwareengineering
https://t.iss.one/SoftwarePhilosophy/719

۵. قابلیت Always Encrypted در SQL Server 2016 (ایران دات نت)
#sqlserver
https://t.iss.one/SoftwarePhilosophy/720

ـــــــــــ
@SoftwarePhilosophy
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
فلسفه Spacive Design جایگزینی برای Responsive Design

چند سالی است که طراحی Responsive به عنوان یکی از مهمترین فلسفه‌های طراحی برنامه‌های جدید شناخته می‌شود. اگر به علت ظهور این مدل تفکر در طراحی فکر کنید ظهور دستگاه‌هایی با اندازه‌های مختلف و با امکانات شبیه هم باعث خلق چنین تفکری شده، نوعی طراحی که بتوان کاربری مناسبی روی دستگاه‌های با اندازه مختلف داشته باشد.
بنابراین ظهور یک دستگاه می‌تواند باعث ایجاد فلسفه‌های جدید طراحی شود. در یک سال اخیر به نظر می‌رسد یک مدیای جدید در راه است. دستگاه‌هایی که امکان ایجاد واقعیت مجازی دارند. شرکت‌های بزرگی مانند گوگل،‌ سونی و مایکروسافت در حال هدایت این بازار هستند. به نظر من ورود این دستگاه‌ها به بازار باعث ایجاد فلسفه‌های جدیدی در طراحی می‌شود.

هنوز خیلی زود است که بتوان در مورد آینده طراحی UI/UX اظهار نظر کرد. ولی به نظر من یکی از آینده های محتمل برای طراحی UI/UX‌ نسل آینده نرم‌افزارها طراحی «فضاگرا» است. طراحی فضاگرا نوعی طراحی نرم‌افزار است که به آن این امکان را می‌دهد تا قسمت‌های مختلف خود را در فضای اطراف کاربر پخش کند. برای مثال فرض کنید هنگام کار با فیسبوک، تایم‌لاین را روی دیوار روبروی خود ببینید و نوتیفیکیشن‌ها رو روی ساعد خود ببینید. به این ترتیب نرم‌افزار فیسبوک توانسته در فضای اطراف شما مستقر شود.

https://mehrandvd.me/2016/07/12/hololens-spacive-design-new-era-uiux/

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

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


___
یکی از تکنیک ها برای ایجاد عمق یا برجستگی، استفاده از shadow-box است. اطلاع از تمام امکانات و ویژگی هایی که این پروپرتی در اختیار ما قرار می دهد، می تواند به خلق طرح های جذاب به ما کمک کند. این ویژگی ها عبارتند از:
• Horizontal Length
• Vertical Length
• Blur Radius
• Spread Radius
• Shadow Color
• Opacity
• Outline/Inset
بطور کلی در پروپرتی box-shadow می توان لیستی از سایه ها را ( که هر کدام شامل ویژگی های بالاست) مشخص کرد. هر قسمت این لیست که با کاما از هم جدا شده است مربوط سایه یک قسمت از element مربوطه خواهد بود. به این ترتیب می توان ترکیب های متنوع و خلاقانه ای از سایه های داخلی یا خارجی با میزان و غلظت های مختلف ایجاد کرد.
لینک زیر به شرح کامل box-shadow با مثال پرداخته و دید کاملی برای استفاده از تمام ویژگی های ارائه کرده است.

https://www.css3.info/preview/box-shadow/

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/MdiE309B7Jm

#مریم_داودی (https://ow.ly/HGkG309B7de)

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

___
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
پیاده سازی 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


___
Forwarded from Iran Agile
انگیزش تیم‌ها

تازه وارد یک شرکت شده اید بسیار شوق و ذوق دارید، می‌خواهید همه چیز را درست کنید، می‌خواهید دنیا را جای بهتری کنید، ولی بعد از مدتی شبیه بقیه می‌شوید، شاید بی انگیزه تر از بقیه. ولی چرا این اتفاق می افتد؟

یکی از بهترین روش های انگیزش تیم‌ها، دیدن تاثیر کار بر روی مشتریان است.

یعنی این تسک من چه تاثیر بر زندگی مشتری ها دارد؟

@iranagile

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

یکی از مثال‌های اخیر که بیاد دارم، در شرکتی که یک فروشگاه اینترنتی است، یک باگ مربوط به پرینت لیبل وجود داشت. درخواست دهنده این بخش انبار بود و بشدت انتظار رفع این باگ را داشتند. لیبل‌هایی که چاپ می شدند قابل اسکن نبودند و این روند انبارداری را بسیار کند می‌کرد.

ولی این باگ برای برنامه نویس ها اهمیتی نداشت، "بابا اینکه باگ مهمی نیست، دستی دارن کار رو انجام یمدهند دیگه، برای چی باید روش وقت بگذاریم، اصلا مهم نیست...". ولی زمانی که باگ رفع شد، از برنامه نویس ها خواسته شد که در محل انبار حضور داشته باشند و خوشحالی کل کارمندان را دیدند که چقدر از رفع این باگ خوشحال شده بودند، خودشان دیدند این چقدر به راحتی کار آنها در انبار کمک می کرد، و دیالوگ جدیدشان این بود که "چرا ما این رو سریع تر درست نکردیم..."

یا مثال دیگر در پروژه بانکداری الکترونیکی که در آن هستم، ویژگی با عنوان "پرداخت مستمر" پیاده شده است، در جلسه برنامه ریزی یکی از برنامه نویس ها گفتند "یک مورد دیدم که عنوان پرداخت مستمر رو زده بود، پرداختی ماهانه برای مامان، شما تصور کنید یک پسر داره ماهانه یک مبلغی برای مادرش واریز میکنه، حالا فکر کنید این از کار بیفته و پول به دست مادر نرسه، چه حالی می شوید...".

یکی از تفاوت های اصلی روش های چابک در این است که شما واسط تیم ها با بازار-مشتریان نشوید، اجازه بدهید تیم ها مشکلات مشتری ها را لمس کنند، اجازه بدهید اهمیت و تاثیر خروجی کارشان بر مشتری ها را ببینند.

https://blog.scrum.ir/2017/03/team-motivation
#پست_مجدد این پست تا به حال بیش از ۹۷۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
یکی از تکنیک‌هایی که در مدیریت پروژه‌های نرم‌افزاری برای مدیریت کارها استفاده می‌شود استفاده از مفهوم «کانبان» است. این روش که شرکت تویوتا از آن در سیستم تولید just-in-time خود استفاده می‌کند برای پروژه‌های نرم‌افزاری نیز سازگار شده‌است.
یکی از اهداف کانبان، شناسایی گلوگاه‌های کاری است تا بتوان به فرایندی بهینه‌تر برای تولید نرم‌افزار رسید.

لینک زیر پس از توضیح مفهوم کانبان، نحوه استفاده از بورد کانبان را در پروژه‌های نرم‌افزاری شرح داده‌است.

https://kanbanblog.com/explained/

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

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

___
#پست_مجدد این پست تا به حال بیش از ۹۸۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
مفهوم Planning Poker یا Scrum Poker یکی از روش‌های بسیار موثر و کارا در تخمین فعالیت‌های نرم‌افزاری است. این روش که مانند یک بازی اجرا می‌شود فرایند تخمین کار را به یک کار جذاب و کارا تبدیل می‌کند. با اینکه این فرایند بسیار شبیه یک بازی اجرا می‌شود، ولی تمام مراحلی که برای انجام این بازی طراحی شده‌دارای دلایل بسیار عمیقی است. برای مثال اینکه افرادی که تخمین می‌زنند نباید از تخمین یکدیگر خبر داشته‌باشند دلیل روانشناسی دارد و حتی آزمایش‌های جالبی برای اثبات آن ساخته شده است.

لینک زیر مفهوم Planning Poker که در اسکرام استفاده می‌شود را توضیح داده و برخی از دلایل پشت فرایند آن را هم تشریح کرده‌است.

https://en.wikipedia.org/wiki/Planning_poker

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

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

___
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. فلسفه Spacive Design جایگزینی برای Responsive Design

https://t.iss.one/SoftwarePhilosophy/723

۲. آشنایی با box-shadow در CSS

https://t.iss.one/SoftwarePhilosophy/724

۳. تنظیم Claim based authentication برروی ASP.NET WebApi با استفاده از Owin Authorization

https://t.iss.one/SoftwarePhilosophy/726

۴. راهکارهایی برای انگیزش تیم‌ها (Iran Agile)

https://t.iss.one/SoftwarePhilosophy/727

۵. آشنایی با کانبان و نحوه کار بورد کانبان در پروژه‌های نرم‌افزاری

https://t.iss.one/SoftwarePhilosophy/730

۶. توضیحاتی در رابطه با مفهوم Planning Poker در اسکرام

https://t.iss.one/SoftwarePhilosophy/732

ـــــــــــ
@SoftwarePhilosophy
#پست_مجدد این پست تا به حال بیش از ۱۳۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
تکنولوژی Xamarin.Forms تکنولوژی ساخت برنامه‌های موبایل cross-platform نسل جدید Xamarin است. یکی از جذابیت‌های این تکنولوژی قابلیت استفده از XAML در طراحی و تولید رابط کاربری است. اگر قصد برنامه نویسی با Xamarin.Forms را دارید احتمالا می‌خواهید نمونه‌هایی از برنامه‌های ساخته شده را ببینید تا روش استفاده از کامپوننت‌های مختلف و نحوه نمایش آن را در پلتفرم‌های مختلف موبایل ببینید. در لینک زیر مثال‌های نمایشی زیادی را در این مورد در اختیار برنامه‌نویسان قرار داده‌است تا بتوانند قابلیت‌های هر کنترل را در پلتفرم‌های مختلف بررسی کنند.

https://developer.xamarin.com/samples/xamarin-forms/all

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
با توجه به افزایش استفاده از تلفن همراه بسیاری از افراد برای دستیابی به اطلاعات دنیای وب از تلفن همراه خود استفاده می‌کنند و آمار استفاده از موبایل روند صعودی خود را می‌پیماید. گوگل در اوایل سال 2016 یکی از ابزارهای جدید خود، به نام AMP(Accelerated Mobile Pages) را منتشر کرده است. هدف از ارائه این ابزار بهبود عملکرد صفحات وب حاوی متن, تصویر، فیلم، انیمیشن و…. در موبایل می‌باشد که در نتیجه آن سرعت لود صفحات در موبایل افزایش می‌یابد، خصوصا سایت‌هایی که دارای متن زیادی می‌باشند )مانند سایت‌های خبری.(
پروژه AMP یک فریم‌ورک جدید و متن باز است که به طور کامل از فناوری‌های موجود در وب ساخته شده است. این پروژه که به وسیله گوگل و توییتر انجام شده است، به برنامه نویسان کمک می کند صفحات HTML با حجم کم ایجاد کنند. شما به عنوان یک برنامه نویس فقط تگ‌های خاصی از HTML را می‌توانید استفاده کنید و مجاز به استفاده از همه تگ‌ها نیستید. همچنین شما فقط می‌توانید کدهای ساده CSS و آن‌هایی که دارای کاربرد بسیار هستند را استفاده کنید. استفاده از کدهای جاوا اسکریپت نیز در همه جا مجاز نمی‌باشد. در واقع AMP استاندارد خاصی را برای کدهای شما در نظر می‌گیرند و کدهایی که حجم صفحات را افزایش می‌دهد، به عنوان عامل غیرمجاز در نظر می‌گیرد.
با مراجعه به لینک زیر علاوه بر آشنایی بیشتر با این زیرساخت قدرتمند می‌توانید در راستای استاندارد کردن سایت خود بر مبنای AMP گام بردارید.

https://www.ampproject.org/docs/get_started/create

#محمدرضا_جلیلوند
لینکدین:
https://ir.linkedin.com/in/mohammad-reza-jalilvand-0a5572b1

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

___