Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
مفهوم «Saga» در معماری نرم‌افزار مفهومی است که اخیرا در مقاله‌های مربوط به CQRS Pattern بسیار زیاد از آن صحبت می‌شود.
با این که مفهوم بیشتر از طریق CQRS شناخته شده‌است ولی در حقیقت این مفهوم از قبل وجود داشته‌است. مفهوم Saga اولین بار در مقاله‌ای با نام «Sagas» توسط «هکتور گارسیا» و «کنت سالم» در سال سال ۱۹۸۷ معرفی شد. لینک زیر این مفهوم را با نام «Process Manager» معرفی کرده و این نام را نام بهتری برای این مفهوم دانسته.

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

https://msdn.microsoft.com/en-us/library/jj591569.aspx

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

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

___
یکی از محصولاتی که بصورت تخصصی در حوزه مجازی سازی در لایه سیستم عامل فعالیت می‌کند Docker می باشد . داکر یک محصول Open Source است که فرایند ایجاد، توسعه و اجرا کردن Application ها را با استفاده از Container ها ساده می‌کند. Container ها به یک برنامه نویس این اجازه را می‌دهد که application خود را با تمامی اجزای مورد نیاز آن اعم از فایل‌های dll و کلیه library ها، کلیه وابستگی ها در قالب یک بسته نرم افزاری بیرون بدهد به شکلی که از بیرون یک نرم افزار واحد به نظر برسد.
از ویژگی های اصلی Docker میتوان به Open Source بودن محصول، سبک بودن، Deploy سریع اپلیکیشن، قابلیت جابجایی Containerها بین ماشین‌های مختلف و قابلیت ورژن کنترل Containerها می‌باشد.
لینک زیر در مورد مکانیزم Docker و ویژگی‌های آن توضیح می‌هد.

http://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular

#محمدرضا_جلیلوند
لینکدین:

http://ir.linkedin.com/in/mohammad-reza-jalilvand-0a5572b1

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

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

۱. امکانات اضافه شده به نسخه آینده زبان جاوا (Java 9):
https://telegram.me/SoftwarePhilosophy/538

۲. ابزاری برای تست صفحات وب در browser های مخلتف:
https://telegram.me/SoftwarePhilosophy/540

۳. دیباگ کردن به سبک جغدها:
https://telegram.me/SoftwarePhilosophy/542

۴. ابزاری برای تست صفحات وب در browser های مخلتف به همراه اسکرین‌شات:
https://telegram.me/SoftwarePhilosophy/543

۵. مفهوم Saga در معماری نرم‌افزار:
https://telegram.me/SoftwarePhilosophy/545

۶. پلتفرم اوپن سورس Docker و نحوه عملکرد آن:
https://telegram.me/SoftwarePhilosophy/546

ـــــــــــ
@SoftwarePhilosophy
نوشتن بات‌ برای بازی‌های کامپیوتری یکی از تفریحاتی است که برای برنامه‌نویسان می‌تواند جذاب باشد. با اینکه این برنامه‌ها معمولا جز برنامه‌های کوچک محسوب می‌شوند ولی معماری نرم‌افزاری آنها کماکان می‌تواند جذاب باشد. یکی از روش‌های معماری این نرم‌افزارها مدل کردن جهان بازی است. در این معماری تمامی امکاناتی که یک بازی در اختیار کاربر قرار می‌دهد به طور انتزاعی طراحی می‌شود. برای مثال برای اینکه بازی ساده Telegram Lumberjack را مدل کرد باید بررسی کرد این بازی چه امکاناتی را در اختیار بازیگر قرار می‌دهد. برای مثال یک عامل می‌تواند با گرفتن فیلم از اسکرین و فرستادن دکمه‌های چپ و راست به موقع به عنوان یک بات برای این بازی عمل کند.

لینک زیر یکی از پیاده‌سازی‌های ممکن برای گرفتن امتیازهای بالا در Telegram Lumberjack را شرح داده‌است.

http://mehrandvd.me/2016/10/30/cheating-telegram-lumberjack/

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

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


___
تکنولوژی Xamarin یکی از تکنولوژی‌های توسعه برنامه‌های موبایل cross-platform است. سایت «تکنولوژی رادار» که توسط «مارتین فاولر» مدیریت می‌شود و به بررسی تکنولوژی‌ها می‌پردازد، از سال ۲۰۱۵ این تکنولوژی را وارد حلقه Trial کرده است. ورود این تکنولوژی به حلقه Trial به این معنی است که به نظر متخصصان شرکت Thought Works، «این تکنولوژی ارزش دنبال کردن دارد و برای استفاده در محصولات شرکت‌های بزرگی که حاضرند روی تکنولوژی‌های جدید سرمایه‌گذای کنند مناسب است». تا قبل از سال ۲۰۱۵ این تکنولوژی در حلقه Assess قرار داشت که که به این معنی بود: « تکنولوژی جذابی است ولی هنوز شرکت‌ها باید آن را بررسی کنند».
با آماده شدن این تکنولوژی برای توسعه برنامه‌های موبایل و کامپوننت‌هایی که برای آن نوشته شده‌است به نظر می‌رسد نسل جدیدی از برنامه نویسی موبایل شکل گیرد.

https://www.thoughtworks.com/radar/tools/xamarin

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

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


___
استایل برنامه‌نویسی JSFuck یک نوع خاص برنامه‌نویسی رمزگونه و آموزشی در JavaScript است. در این نوع برنامه نویسی فقط و فقط از ۶ کاراکتر‌ «()+[]!» استفاده می‌شود و تمام المان‌های مورد نیاز برنامه نویسی با استفاده فوت و فن‌ها و trick های JavaScript معادل‌سازی شده‌اند. برای مثال برای معادل عبارت false، ![] و برای true از !![] استفاده می‌شود. اینها trick هایی در زبان JavaScript هستند که معمولا توصیه می‌شود از آن دوری شود، ولی در این سبک همین تکنیک‌ها پایه و اساس هستند. کشف راز هر کدام از این معادل‌ها تفریح خوبی برای برنامه‌نویسان JavaScript است. چند معادل‌سازی جالب دیگر این روش عبارتند از:
1. false => ![]
2. true => !![]
3. undefined => [][[]]
4. NaN => +[![]]
5. 0 => +[]
6. 1 => +!+[]
7. 2 => !+[]+!+[]
به این ترتیب هر کد JavaScript را می‌توان به سبک JSFuck هم نوشت! در سایت زیر ضمن معرفی این استایل برنامه‌نویسی، ابزاری برای encode کردن کد JavaScript به این سبک نیز وجود دارد.

http://www.jsfuck.com/

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

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


___
فایل‌های گرافیکی دو دسته اند vector و raster:
در فایل‌های Vector برای نمایش یک عکس از خطوط و منحنی استفاده شده است. این فایل‌های گرافیکی توسط نرم افزارهای کامپیوتری ساخته می‌شوند که هر خط و منحنی مشخصات خود را دارد. به همین دلیل با زوم روی این عکس‌ها از شفافیت آن کاسته نمی‌شود.
در فایل‌های Raster (Bitmap image)، این پیکسل‌ها هستند که یک عکس را تشکیل می‌دهند. با زیاد کردن زوم روی این عکس‌ها، از کیفیت آنها کاسته می‌شود اما در کل عکس‌های طبیعی‌تری را می‌توانند نمایش دهند، از این جهت که با زیاد کردن تعداد پیکسل‌ها با رنگ‌های زیاد می‌توان عکس را به واقعیت نزدیک کرد.
دانستن معایب و مزایای هرکدام از این فایل‌ها برای انتخاب صحیح و متناسب با نیاز، لازم و ضروری است. مقاله زیر به شرح این مهم پرداخته است.

http://vector-conversions.com/vectorizing/raster_vs_vector.html

#مریم_داودی

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

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

___
Forwarded from فلسفه دیزاین
هنری‌ترین استتار تاریخ
و مروری بر کنفرانس جدید گوگل

پیش‌تر در همینجا درباره سری جدید کنفرانس‌های Google Design صحبت کرده بودم. این کنفرانس‌ها بعد از پیوستن Matías Duarte به گوگل (به عنوان معاون طراحی) و مدتی بعد از معرفی Material Design شروع شد. آخرین کنفرانس از این سری، با نام SPAN 2016، سه روز قبل (۲۷ اکتبر) در شهر لس‌آنجلس برگزار شد.

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

اینجاست که ذهن بی‌نظیر هنرمندها و دیزاینرها به یکی از هوشمندانه‌ترین راه‌حل‌های ممکن میرسه! مفهومی به اسم Dazzle Camouflage.
در جنگ جهانی اول، Norman Wilkinson، راه‌حلی به اسم Dazzle Camouflage رو برای جنگ در دریا پیشنهاد میده. آقای Wilkinson کشتی‌ها رو با اشکال هندسی با کنتراست بالا (اغلب سیاه و سفید) نقاشی می‌کنه که در شکلی خاص همدیگه رو قطع می‌کنند. نتیجه این کار خارق‌العاده‌ست!
این نوع نقاشی در نیروی دشمنی که قصد نابودی کشتی مورد نظر رو داشتند خطای دید ایجاد کرده و باعث میشه در محاسبه جهت و سرعت کشتی مورد نظر، دچار مشکل بشن و تبعا نتونن اون رو مورد هدف موشک‌هاشون قرار بدن.

این نوع استتار چنان ترکیب هیجان‌انگیزی بین موضوعات جنگی و هنر ایجاد کرده که وقتی کشتی‌های با این استتار رو ببینید، همچون اثری هنری، نام هنرمند نقاش اون هم در کنارش حضور داره!

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

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

#هنر #کاربرد_هنر #جنگ #نقاشی
@HamDesign هَم دیزاین
Forwarded from فلسفه دیزاین
یک نمونه از کشتی‌هایی که از استتار Dazzle در جنگ جهانی اول استفاده می‌کردند.

@HamDesign هَم دیزاین
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
اگر از فریم ورک AngularJS استفاده میکنید، حتما این سوال برایتان پیش آمده که فرق service با factory در چیست؟ چه موقع باید از service استفاده کرد و چه موقع از factory؟ در بیشتر مقالات موجود که به مقایسه ی service و factory پرداخته شده است، بیشتر به شباهت های این دو API اشاره شده و کمتر تفاوت های آنها مطرح شده است.
بطور خلاصه، می توان گفت که هر دو API، singleton هستند و فقط یک instance از آنها زمان runtime ایجاد میشود.
Service در angular فقط یک متد مانند یک constructor function است که زمان runtime یک بار با new صدا زده می شود.
با اینکه Factory می تواند مانند یک Service عمل کند اما با این حال یک روش دیگر برای Service نیست بلکه می تواند بسیار قوی تر و منعطف تر از service عمل کند. در واقع factory یک design pattern است که در نهایت یک Object برمیگرداند.
مقاله زیر مقایسه کاملی بین این دو API ارائه کرده و چند مثال از انعطاف پذیری و قابلیت بیشتر Factory آورده است.

https://toddmotto.com/factory-versus-service

#مریم_داودی

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

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

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

۱. گرفتن امتیاز ۴۰۰ در Telegram Lumberjack با استفاده یک بات برنامه‌نویسی شده:
https://telegram.me/SoftwarePhilosophy/550
https://telegram.me/SoftwarePhilosophy/551

۲. نوشتن بات برای بازی‌های کامپیوتری:
https://telegram.me/SoftwarePhilosophy/552

۳. بررسی جایگاه تکنولوژی Xamarin:
https://telegram.me/SoftwarePhilosophy/553

۴. برنامه‌نویسی در JavaScript به شیوه JSFuck:
https://telegram.me/SoftwarePhilosophy/554

۵. فایل‌های گرافیکی vector و raster:
https://telegram.me/SoftwarePhilosophy/555

۶. استفاده از هنر طراحی برای استتار در جنگ (هم دیزاین):
https://telegram.me/SoftwarePhilosophy/556
https://telegram.me/SoftwarePhilosophy/557

۷. مقایسه service و factory در AngularJS:
https://telegram.me/SoftwarePhilosophy/559

ـــــــــــ
@SoftwarePhilosophy
تکنولوژی 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 SQL Server
در این بلاگ پست یادمیگیرد که چطور با کمترین هزینه و با استفاده از مقدار اضافی حافظه اصلی سرعت بازدهی بانکهای اطلاعاتی خود را به بیش از 40% افزایش بدید. حتما این مطلب را مطالعه کنید!
توجه: محتوای این بلاگ نباید در دوره های آموزشی گنجانده شود (البته دوره های آموزشی با هزینه) و استفاده از محتوای این بلاگ (ترجمه شده به هر زبان) با ذکر منبع موردی ندارد.
http://fard-solutions.com/boost-sql-server-performance-minimal-investment/

امیدوارم استفاده کامل را ببرید. سوالات خود را در گروه پرسش و پاسخ ما به آدرس زیر درمیان بگذارید
https://telegram.me/joinchat/BTQQtzy50j-IxIAOKHWwVg
همیشه نبودن قابلیت‌هایی مثل Variables, Functions, Mixins، دستورات شرطی و حلقه‌ها و… یا نبودن یک ساختار منسجم، توسعه دهنگان وب را آزار می‌داد تا اینکه تکنولوژی‌هایی به نام Preprocessor ها مانند LESS و SASS و Stylus و … معرفی شدند که دارای Syntax سوای از CSS بودند و از راه‌ها و Syntax های دیگری برای اضافه کردن این قابلیت‌ها استفاده می‌کنند.
برای رفع این مشکلات و حتی بهبود کدنویسی، PostCSS معرفی شد که به عنوان ابزاری برای تبدیل CSS شما به CSS بهینه‌تر به کمک Module هایی بر پایه JS شناخته می‌شود برای مثال کد شما را فشرده می‌کند، پیشوندهای مروگر را اضافه می‌کند، قابلیتهایی مثل متغیر ها و… را به شما می‌دهد، قابلیت‌هایی که در آینده به CSS اضافه خواهند شد را اکنون در اختیار شما قرار می‌دهد و ده‌ها قابلیت دیگر که همگی اینها به عهده Module ها می‌باشد.از جمله Module های معروف می‌توان به autoprefixer و stylelint اشاره کرد که انتظارات را از یک Preprocessor یا Postprocessor نیز فراتر می‌برد.
در مقاله زیر به شرح امکانات و ویژگی های دیگر PostCSS و همینطور شناخت دقیق‌تر آن پرداخته شده است.

http://julian.io/some-things-you-may-think-about-postcss-and-you-might-be-wrong

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
در زبان SQL، درک منطق اجرای یک کوئری برای خطایابی و نوشتن کد بهینه از اهمیت بالایی برخوردار است. شاید تا‌کنون برای شما هم پیش آمده است که در هنگام نوشتن یک کوئری، از اینکه کوئری بر خلاف انتظارتان عمل می کند دچار سردرگمی شده باشید. مثلا اینکه چرا با وجود اینکه‌alias ‌ها را درSELECT Clause تعریف کرده اید، درWHERE Clause ‌ نمی‌توانید از آنها استفاده کنید.
درSQL ، کوئری به ترتیبی که دستورات آن نوشته می‌شود اجرا نمی‌شود، بلکه به ترتیب زیر است:
۱) FROM clause
۲) WHERE clause
۳) GROUP BY clause
۴) HAVING clause
۵) SELECT clause
۶) ORDER BY clause
۷) TOP
در طراحی زبان SQL، مِلاکِ ترتیب اجرای دستورات کوئری، شبیه بودن به زبان انگلیسی بوده است. فرض کنید که به شما گفته می‌شود :"برو از قفسه سوم کتابخانه، کتاب قمارباز را بیاور!". در این مثال مهم‌ترین بخش محل است، پس شما اول به کتابخانه می‌روید (FROM)، بعد قفسه‌های دیگر را فیلتر می کنید و نگاهتان در قفسه سوم به دنبال کتاب مورد نظر می‌گردد(WHERE) ‌و تازه در این قسمت کتابی که می‌خواهید را بیرون می‌کشید‌‌‌(SELECT) و به شخصی که آن را درخواست کرده می دهید.
در مقاله زیر درباره‌ی Logical Query Processing بیشتر بخوانید.

http://sqlmag.com/sql-server/logical-query-processing-what-it-and-what-it-means-you

#زهره_مرادی

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

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

___
یکی از مسائل مهمی که هر وبسایت نوپایی با آن مواجه است، شناخته شدن وبسایت توسط موتورهای جستجوگر یا همان search engine هاست.
به طور کلی باید گفت هرچقدر مطالب، موضوعات و متن وب سایت قویتر باشد، تعداد مراجعات به وبسایت و ارجاعات به سایت در شبکه‌های اجتماعی بیشتر خواهد بود و به این ترتیب است که موتورهای جستجوگر وبسایت شما را به عنوان سایتی که برای مردم جالب و جذاب است، می شناسند.
روش هایی برای بهبود فرایند گفته شده وجود دارد که به نام Search Engine Optimization یا همان SEO مرسوم شده‌اند.
سئو یا همانSEO، به مجموعه فعالیت‌هایی اطلاق می شود که در نتیجه آنها میتوان اطمینان داشت که نام وبسایت با جستجوی کلمات مرتبط با بیزنس و کاربری آن، در صفحات اصلی خروجی موتورهای جستجوگر وجود دارد.
مقاله زیر مجموعه فعالیت های SEO و روشهای آنرا شرح داده است.

http://www.wordstream.com/blog/ws/2012/01/17/seo-content-beginners-guide

#مریم_داودی

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

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


___