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

http://mehrandvd.me/2016/03/28/linq-the-bad-parts/

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

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



___
#پست_مجدد این پست تا به حال بیش از ۱۳۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
در معماری نرم افزار گاهی نیاز است الگوهایی که دارای بیشترین قابلیت تست و همچنین نسبت به تغییرات خارجی دچار کمترین تغییرات هستند مورد استفاده قرار بگیرند . معماری Hexagonal(یا Ports and Adapter) یکی از این الگوهاست که مکانیزم‌هایی را برای تحقق این هدف بر مبنای تفکر DDD بیان می‌کند . لینک زیر در خصوص این معماری توضیحات مناسبی را ارائه می‌دهد :

https://blog.ndepend.com/hexagonal-architecture/

#شهریار_انتظام (http://ow.ly/qDN430nPiCg)

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

___
Forwarded from فلسفه دیزاین
روش‌هایی برای مفیدتر بودن

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

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

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

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

https://medium.com/s/story/7-things-you-need-to-stop-doing-to-be-more-productive-backed-by-science-a988c17383a6

(زمان حدودی مطالعه، ۱۱ دقیقه)

نویسنده: نیما حکیم‌رابط

#اصول #بازدهی #بهره‌وری
@Dexign فلسفه دیزاین


______
#پست_مجدد این پست تا به حال بیش از ۴۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
و بالاخره Blazor از نسخه آزمایشی خارج شد!

پروژه Blazor داستان جذابی دارد. حدود دو سال پیش Steve Sanderson یک پروژه تفریحی به نام Blazor در گیت‌هاب خود درست کرد و شروع به آزمایش ایده خود کرد.
اگر مدت زیادی است که در دنیای JavaScript هستید حتما نام فریم‌ورک محبوب knockout.js را شنیده‌اید. این فریم‌ورک یکی از فریم‌ورک‌های کوچک و سبک بایندینگ است که هنوز هم در خیلی از محصولات استفاده می‌شود. خالق این پروژه نیز Steve Sanderson بود!

ایده Steve این بود: اجرای کدهای C# روی مرورگر با استفاده از WebAssembly و استفاده از Razor و اجرای آن روی مرورگر. بنابراین ترکیب Razor و Browser شد نام پروژه: Blazor. با زبان خیلی ساده می‌توان گفت Blazor قرار است یک فریم‌ورک مانند Angular یا React باشد ولی با زبان C#!
تنها پس از چند ماه این پروژه شخصی او توجه بسیاری را به خود جلب کرد تا حدی که مایکروسافت تصمیم گرفت این پروژه را به عنوان یک پروژه آزمایشی به ASP.NET GitHub Organization اضافه کند. در زمان نوشتن این مطلب این ریپو ۷۹۰۰ استار دارد.

امروز همزمان با ریلیز ASP.NET Core 3.0 Preview 4 این پروژه از حالت آزمایشی درآمد و رسما به دات‌نت کور اضافه شد. یک تصمیم مهم تغییر نام Razor Component به Server-side Blazor بود. بنابراین از این به بعد Blazor یک مدل واحد نوشتن برنامه‌های سمت کلاینت است با چندین مدل هاست شدن:
- Server-side Blazor: runs on the server via SignalR
- Client-side Blazor: runs client-side on WebAssembly

جالب است بدانید که شرکت‌های DevExpress، Telerik و Syncfusion شروع به ساختن کامپوننت‌های Blazor کرده‌اند و همین الان محصولاتی روی آن ساخته‌اند.

لینک زیر حاوی اطلاعات جزئی‌تری از برنامه ریلیز و امکانات این محصول است.

https://devblogs.microsoft.com/aspnet/blazor-now-in-official-preview/

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

http://ow.ly/Pnh030ouEX5


#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
“طراحی پایگاه داده تکاملی” عنوان مقاله ایست که مارتین فاولر و پرمید سادلچ با بررسی این رویکرد که "معماری سیستم باید از طریق تکرارهای مختلف نرم افزار تکامل یابد" نوشته شده است .
نحوه تعامل بین DBA ها و برنامه نویسان، استفاده از ورژن کنترل‌ها، Database refactoring و .... همگی در این مقاله مورد بررسی قرار گرفته‌اند :

https://www.martinfowler.com/articles/evodb.html

#شهریار_انتظام (http://ow.ly/qDN430nPiCg)

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

___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
🔰 #آیا_میدانستید
توی کنسول مروگر میتونین با دستور console.table، آرایه ها و لیست ها تون رو به صورت جدولی نشون بدین؟

var exampleArray = [
"First item in the array",
"I'm the second item in this array",
"Obviously i'm the last item"
];
console.table(exampleArray);

مثال های بیشتر:
https://www.telerik.com/blogs/better-visualization-of-console-data-with-tables
__________
@IranAspMvc
#پست_مجدد این پست تا به حال بیش از ۴۳۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
چطور برنامه‌نویسی موازی را برای مادربزرگتان توضیح دهید!؟

برنامه نویسی موازی (Parallel Programming) و برنامه نویسی ناهمگام (Asynchronous Programming) مفاهیم نسبتا جدیدی در دنیای برنامه‌نویسی هستند که برای اغلب برنامه‌نویسان جدید است. همه در مورد آن شنیده‌انم ولی اغلب واضح نیست که دقیقا چیست و چرا سخت است. یک مفهوم پایه برای درک این مفاهیم پایه Thread یا نخ است. نخ‌ها مفاهیمی هستند که وظیفه انجام کارها روی CPU را دارند. در دنیای ما انسان‌ها کسانی هستند که کار انجام می‌دهند. مقاله زیر مفهوم «نخ» را به «انسان» شبیه دیده‌است و سعی کرده‌است مفاهیم پیچیده دنیای برنامه‌نویسی را با مفاهیم ساده‌ دنیای ما انسان‌ها توضیح دهد.

http://mehrandvd.me/2016/04/18/parallel-programming-grandmother/


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

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



___
Forwarded from فلسفه دیزاین
«پراگرسیو وب‌اپ» یا PWA چیست؟

تکنولوژی PWA یا Progressive Web Apps یکی از پرطرفدارترین تغییرات تکنولوژی در وب است که در دنیای تکنولوژی وب برای خود امپراتوری بی‌نظیری بوجود آورده است. این موضوع تعجب آور نیست زیرا پراگرسیو وب اپ‌ها توانسته‌اند رویای نصب تعداد زیادی برنامه بر روی گوشی کاربران را متصور سازند.

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

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

پراگرسیو وب‌ اپ‌ها به دو دسته کلی ذیل تقسیم می‌شوند:
۱- وب سایت‌هایی که مانند اپلیکیشن‌ها رفتار می‌کنند.
۲- اپلیکیشن‌هایی که تحت فضای وب هستند.

بر اساس توضیحات گوگل، انواع پراگرسیو وب اپ‌ها دارای ویژگی‌های مشترکی نظیر قابل‌اطمینان‌بودن (Reliable)، سرعت عمل‌داشتن (Fast) و ترغیب‌کنندگی (Engaging) هستند. بطور‌ کلی تمرکز همه پراگرسیو وب‌اپ‌ها بر کاربرد آسانتر برنامه و حذف هرگونه اصطکاکی است که جلوی سریعتر رسیدن کاربران به آنچه از برنامه می‌خواهند را می‌گیرد. ایده PWA موفق به پرکردن شکاف میان فضای وب و اپلیکیشن‌ها شده‌است. با توجه به روشن‌بودن آینده پیش‌روی PWA و مزیت‌های کاربردی آن، بنظر می‌رسد تمرکز بر این‌نوع از برنامه‌ها یکی از مباحث جذاب مورد توجه طراحان و توسعه دهنده‌گان دنیای وب می‌باشد.

نویسنده مقاله امروز که مطالعه آن را به شما پیشنهاد می‌کنم، به توضیح مفهوم Progressive Web App پرداخته و ویژگی‌های آن را بررسی می‌کند.

مقاله امروز را از دست ندهید:

https://www.invisionapp.com/inside-design/whats-a-pwa/

(زمان حدودی مطالعه، ۱۱ دقیقه)

نویسنده: نیما حکیم رابط

#معرفی_مفاهیم #تکنولوژی #PWA
@Dexign فلسفه دیزاین

ـــــــــ
#پست_مجدد این پست تا به حال بیش از ۵۴۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
تجربه کاربری یا UX یکی از مفاهیمی است که تاثیر زیادی در محبوب شدن یک محصول دارد. مفهوم DX یا Developer Experience نیز مفهوم جدیدی است که تجربه یک برنامه‌نویس هنگام استفاده از یک پلتفرم یا فریم‌ورک را بررسی می‌کند. چرا یک پلتفرم یا فریم‌ورک محبوب می‌شود و دیگری نه؟ این سوالی‌ است که عوامل زیادی در پاسخ دادن به آن موثر هستند. اینکه یک برنامه نویس هنگام کار با آن پلتفرم چه تجربه‌ای احساس می‌کند یکی از عوامل مهم موفقیت یک پلتفرم است. در مقاله زیر مفهوم جدیدی به نام Dotability‌ معرفی شده که می‌توان به وسیله آن کتابخانه‌ها و فریم‌ورک‌های مختلف را از لحاظ DX بررسی کرد.

http://mehrandvd.me/2016/05/31/developer-experience-dotability/
http://mehrandvd.me/2016/05/31/developer-experience-dotability/

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

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


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

در این مقاله نحوه انتخاب بین این دو و موجی که اخیرا در جهت استفاده از ری‌اکت ایجاد شده است بررسی شده است.

https://itnext.io/is-angular-dying-because-of-react-a8e885f09421


#مریم_کمالی (http://ow.ly/9Wa430mFGeK)

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

___
Forwarded from Software Philosophy
توسعه دهندگان در ارتباط با APIها همیشه با چالش‌هایی رودرو بوده‌اند مانند:
-Multiple Endpoints
- Over-fetching/Under-fetching Data
- API Versioning
این مشکلات باعث شد تا برخی متخصصین به دنبال روش‌هایی برای کاهش این چالش‌ها باشند . GraphQL یکی از این راهکارهاست که در سال 2012 توسط facebook ارائه شد.
از نکات مهم این است که یک پرس و جو را به API خود ارسال کنید و دقیقا همان چیزی که نیاز دارید را دریافت کنید ، نه اطلاعات اضافه را که هر API ممکن است در خروجی خود ارسال کند. لینک زیر یک فیلم با عنوان: "Moving Existing "API From REST To GraphQL است که نگاه جالبی نسبت به موضوع دارد:

https://www.youtube.com/watch?v=broQmxQAMjM


#شهریار_انتظام (http://ow.ly/qDN430nPiCg)

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

___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
معرفی Windows Terminal

مایکروسافت در روز اول کنفرانس Build 2019 از برنامه ای به نام Windows Terminal پرده برداری کرد.
این برنامه، یک ترمینال مرکزی برای دسترسی به PowerShell و Cmd و WSL (کرنل Linux در Windows) است.

این برنامه گرافیک بهتری دارد و دارای قابلیت Multiple Tab - Theming and Styling - Emoji and GPU text-rendering - Syntax Highlight می باشد.

ویدیوی دموی برنامه (حتما ببینین) :
https://aka.ms/terminal-video

اطلاعات بیشتر :
https://devblogs.microsoft.com/commandline/introducing-windows-terminal/
مخزن پروژه در گیتهاب :
https://github.com/Microsoft/Terminal
_______________
@IranAspMvc
Forwarded from فلسفه دیزاین
دیزاین اسپرینت، منظومه ۵ فرمان

دیزاین اسپرینت یکی از متدهای تجربه کاربری بود که گوگل از آن رونمایی کرده و هدف اصلیش، حداقل کردن زمان تست و ارزیابی یک ایده و امکان پیاده‌سازی همزمان است. این متد توسط تیم Google Ventures ساخته و ارائه شد و به دلیل کارآیی و بازده زیاد، خیلی سریع بین طراحان UX فراگیر شد.
دیزاین اسپرینت فرایندی است که در پنج روز کاری اتفاق می‌افتد و به تیم طراحان کمک می‌کند که یک مشکل را به شکلی کاربردی (و با زمان کوتاه با کمک دیگر اعضای شرکتی که دارند برایش طراحی می‌کنند)، حل کنند. در صورتی که این اتفاق رخ ندهد و مشکل بعد از پنج روز حل نشود نیز زمان زیادی از دست نرفته و امکان تست و ارزیابی دوباره وجود دارد.
دیزاین اسپرینت به این دلیل که اولین بار بصورت تخصصی برای طراحی UX استفاده شد، باعث به وجود امدن برخی افسانه ها شد که به پنج مورد از بزرگترین آن‌ها اشاره می‌کنیم:

۱- دیزاین اسپرینت‌ها فقط برای تیم‌های کوچک هستند.

۲- در دیزاین اسپرینت‌ها فقط طراحان باید حضور داشته باشند.

۳- دیزاین اسپرینت‌ها برای هر مشکلی می‌توانند استفاده شوند.

۴- تنها تیم‌های دیزاین می‌توانند از دیزاین اسپرینت استفاده کنند.

۵- بعد از یکبار استفاده از متد اسپرینت دیگر نیازی به استفاده دوباره از این فرآیند نیست.

برای خواندن ادامه مطلب برروی لینک زیر ضربه بزنید:

http://bit.ly/dxgn494

(زمان حدودی مطالعه، ۸ دقیقه)

نویسنده: رضا دانشیان

#تجربه_کاربری #دیزاین_اسپرینت #متد
@Dexign فلسفه دیزاین

ـــــــ
اگر شما دولوپرید و درون تیمی مشغول به کارید که همکار دیتا ساینتیست دارید، به احتمال زیاد در هنگام ریفکتور کد یا کد ریویو، با نام گذاری متغیرها توسط همکار دیتا ساینتیست خودتان به مشکل برخورده اید و یا شاید به ستوه آمده باشید!

مقاله زیر به صورت مفصل، راهنمایی‌هایی جامع در مورد نام گذاری Variableها و Constantها در زبان پایتون به شما ارائه می‌دهد که با اشتراک گذاری آن‌ها با هم تیمی‌هایتان به عنوان یک قرارداد، می‌توانید در زمان و انرژی مورد استفاده برای توسعه نرم افزارها صرفه جویی بسیاری داشته باشید.

https://bit.ly/2G31PZ3

#محمدرضا_حاج_بابایی (https://bit.ly/2ThD3YO)

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

ـــــــــ
#پست_مجدد این پست تا به حال بیش از ۷۹۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
محصولی مانند BMW واقعا چگونه در ذهن ما به عنوان یک محصول با کیفیت شکل گرفته است؟ آیا ما تخصص بررسی عملکرد موتور و گیربکس آن را داریم؟ آیا مقایسه‌ای فنی روی آن انجام داده‌ایم تا بفهمیم ماشین BMW یک محصول با کیفیت است؟
در حقیقت یک محصول را مفهومی به نام «نقاط تماس» یا Touch Points تعریف می‌کند. نقاط تماس مجموعه لحظاتی است که مشتری محصول را تجربه می‌کند. یک نقطه تماس می‌تواند لحظاتی باشد که مشتری با آن کار می‌کند، یا لحظاتی که مشتری پوستر محصول را می‌بیند و یا زمانی که صدای تیم پشتیبانی شما را از پشت تلفن می‌شوند.

ما برنامه نویس‌ها عادت کردیم برنامه بنویسیم! و البته دوست داریم مشتریان برای این عادت ما ارزش قائل شوند و برای آن پول پرداخت کنند. اما حقیقت این است که مشتریان چیزی از زیبایی معماری نرم‌افزار ما نمی‌بینند همانطور که چیزی از جزئیات گیربکس یک BMW نمی‌دانند.
در حقیقت بهترین معماری و برنامه‌نویسی زمانی اتفاق می‌افتد که آنقدر همه چیز درست کار کند که مشتری اصلا نفهمد برنامه نویسی انجام شده، همانطور که یک گیربکس عالی گیربکسی است که مشتری هیچ‌وقت متوجه وجودش نشود و فقط مطمئن باشد که دنده به درستی عمل می‌کند.
بنابر این در اکثر مواقع توضیح اینکه برنامه چقدر خوب نوشته شده ارزشی برای مشتریان ندارد.
مقاله زیر به طور خلاصه مفهوم Touch Point و نقش آن در تعریف محصولات نرم‌افزاری را شرح داده‌است.

http://mehrandvd.me/2016/10/02/touch-point-real-percepction-product/

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

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

___
کانال‌های فارسی خود را دوطرفه کنید!

مدتی قبل به عنوان یک پروژه دست‌گرمی! یک کار جالب کردیم.
چند تا از برنامه‌نویسان حرفه‌ای کانال «فلسفه نرم‌افزار» و طراحان حرفه‌ای کانال «فلسفه دیزاین» طی یک هفته دست به کار شدیم و یک بات تلگرام درست کردیم که امکان «کامنت‌گذاری فارسی» زیر پست‌ها را به کانال تلگرام اضافه کنیم.
پروژه بسیار جذابی بود و تصمیم گرفتیم که با شما هم به اشتراک بگذاریم.

از جذابیت‌های فنی این بات:
۱. کل تیمی که یک هفته روی این بات کار کردند کاملا ریموت بوده و همدیگر را ندیده‌اند!

۲. همه این سیستم روی Azure ریلیز شده و به شدت آماده گسترش (Scale شدن) است. اگر کانال‌های زیادی شروع به استفاده از این بات کنند، گزارش‌هایی را از روش گسترش این سرویس روی Azure، همینجا با شما به اشتراک می‌گذاریم.

۳. این بات از ویژگی جدید LoginURL که جدیدا به تلگرام اضافه شده استفاده می‌کند. این ویژگی به کاربران این امکان را می‌دهد که وقتی از طریق تلگرام یک لینک را باز می‌کنند، بصورت اتوماتیک Login شوند.


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

برای اضافه شدن این امکان، کافی‌ست بات @CommentFarsiBot را به کانال خود اضافه کنید (به عنوان ادمین).

حالا دیگه ما هم صدای شما را می‌شنویم!

کانال فلسفه نرم‌افزار: @SoftwarePhilosophy
کانال فلسفه دیزاین:‌ @Dexign


ــــــــ