Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
آیا گوگل آبجکت‌هایی که به صورت دینامیک در یک صفحه اینسرت می‌شوند را هم ایندکس می‌کند؟
شاید برای شما هم قواعد رفتاری بات‌ها و کرالر (crawler) های گوگل گیج کننده باشد، آیا گوگل آبجکت‌ها و لینک‌های جاوا اسکرسپتی را ایندکس می کند؟ آیا گوگل DOM ها را ایندکس می‌کند؟ نحوه رفتار گوگل در ایندکس صفحه‌ای که ریدایرکت (Redirect) شده است چگونه است؟ آیا این‌ها ایندکس می‌شوند؟
المان‌های صفحه و متا دیتاها چطور؟

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


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

https://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157

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

https://ow.ly/4Ihc30dPA9G

#سبحان_خوش_سیرت (https://ow.ly/IFRT30dLbaW)

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

___
یکی از مسایلی که برنام‌ نویسان در ASP.NET MVC و یا ASP.NET Web Api با آن روبرو هستند مدیریت کدها در کنترلر می‌باشد. کدهای کنترلر ممکن است پس از مدتی پیچیده و دارای خطوط زیادی باشند. با استفاده از MediatR که یک پیاده سازی ساده از الگوی طراحی Mediator است می‌توان در کنترلرها کدهای منظم و کمی داشت.

https://blogs.msdn.microsoft.com/cdndevs/2016/01/26/simplifying-development-and-separating-concerns-with-mediatr/

https://jonhilton.net/2016/06/06/simplify-your-controllers-with-the-command-pattern-and-mediatr/


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

https://ow.ly/heDz30dQmqO

#علیرضا_وفی (https://ow.ly/Vna930dsUGr)


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

___
ویدئوی زیر، نمایشی از پروژه هوش مصنوعی گوگل به نام DeepMind است. در این پروژه به «انسان‌نما» یا متحرک فقط گفته می‌شود که از نقطه A به نقطه B برو. اینکه او چگونه حرکت کند و حالات بدن خود را چطور تنظیم کند کاملا توسط خودش انجام می‌شد. در این مدل او با آزمون و خطا یاد می‌گیرد که چطور بهتر این مسیر را طی کند. روش و مدلی که او راه می‌رود بسیار با مزه و خنده‌دار است ولی جمله‌ای که آخر این ویدئو گفته می‌شود می‌تواند خیلی ترسناک باشد:
«شاید او چیزی می‌داند که ما نمی‌دانیم!!»

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

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

https://ow.ly/e40v30dRMZU

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

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


___
یکی از دغدغه های مهم همه ی کاربران امنیت وب سایت آنها و جلوگیری از نشت اطلاعات می باشد. OWASP سالانه 10 مورد از مهمترین ریسک های نرم افزارهای تحت وب را منتشر می کند. در لینک زیر Troy Hunt به تفکیک هر کدام از این ده مورد را برای برنامه نویسان .NET شرح و مورد بررسی قرار داده است.

https://www.troyhunt.com/owasp-top-10-for-net-developers-part-1/

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

https://ow.ly/7BIV30dVvof

#علیرضا_وفی (https://ow.ly/Vna930dsUGr)


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

___
نرم افزاری برای آموزش امنیت به صورت واقعی! Web Goat یک پیاده سازی نرم افزار وب با آسیب پذیری‌های امنیتی برای آموزش امنیت می‌باشد که توسط OWASP توسعه داده شده است. برای مثال کاربر با انجام حمله‌ی SQL Injection بصورت واقعی به این نرم افزار و سرقت شماره کارت‌های اعتباری، با حملات نرم افزاری و نحوه‌ی عملکرد آن بیشتر آشنا می شود.

https://www.owasp.org/index.php/Category:OWASP_WebGoat.NET

https://github.com/adnanmasood/webgoat.mvc

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

https://ow.ly/2YSf30dXlC6

#علیرضا_وفی (https://ow.ly/Vna930dsUGr)


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

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

۱. آیا گوگل آبجکت‌هایی که به صورت دینامیک در یک صفحه اینسرت می‌شوند را هم ایندکس می‌کند؟
#seo
https://t.iss.one/SoftwarePhilosophy/878

۲. مدیریت کدها در کنترلر با استفاده از MediatR
#dotnet #web
https://t.iss.one/SoftwarePhilosophy/879

۳. پروژه هوش مصنوعی گوگل به نام DeepMind
#ai #google
https://t.iss.one/SoftwarePhilosophy/880

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

۴. ده تهدید مهم نرم‌افزارهای تحت وب در سال ۲۰۱۷
#security
https://t.iss.one/SoftwarePhilosophy/882

۵. نرم افزاری برای آموزش امنیت به صورت واقعی!
#security
https://t.iss.one/SoftwarePhilosophy/883

ـــــــــــ

@SoftwarePhilosophy
مساله‌ای که ممکن است برای هر برنامه‌نویسی چالش باشد این است که کدها را چگونه و بر چه اساسی در قالب فولدرها مرتب نماید. بعنوان مثال در یک پروژه‌ی وب View ها، Controller ها و Model ها هر کدام در یک فولدر جداگانه باشند و یا بر اساس کارکرد View ، Controller و Model ها در کنار هم قرار داشته باشند. در ویدیو زیر اسکات آلن بر اساس تجربه اش به این موضوع و 51 مساله ی دیگر می پردازد.

https://www.youtube.com/watch?v=6Fi5dRVxOvc


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

https://ow.ly/b1QP30e0yvS

#علیرضا_وفی (https://ow.ly/Vna930dsUGr)


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

___
عنوان URLs are UI، عنوانی بسیار جذاب برای مقاله جدید scott hanselman است. نکته خیلی جالبی که بسیاری از برنامه‌های امروزی ندارند. او در این مقاله توضیح می‌دهد که خود URL ها به قسمتی از UI برنامه تبدیل شده‌اند و خوانا بودن آن و قابل خواندن بودن آنها بسیار مهم است.
برای مثال لینک یک فایل در OneDrive شبیه
https://onedrive.live.com/?id=CD0633A7367371152C%21172&cid=CD06A73371152C
است. در حالیکه لینک یک فایل مشابه در DropBox شبیه
https://www.dropbox.com/home/Games
است.
در مقاله زیر توضیح داده شده‌است که برای مثال مدلی که در StackOverflow استفاده می‌شود چقدر خوب و خلاقانه است.
https://stackoverflow.com/users/1831530/mehrandvd
در این مدل هم از کد و هم از نام استفاده شده ولی قسمت نام بی‌اثر است و با حذف آن هنوز لینک کار می‌کند.

https://www.hanselman.com/blog/URLsAreUI.aspx

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

https://ow.ly/YHoU30e1jDD

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

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


___
زبان JavaScript‌ را با کارایی بالا و بدون خطاهای زمان اجرا تولید کنید.
زبان‌های برنامه نویسی ML-family از جمله Haskell و Ocaml کامپایلرهایی دارند که تقریبا همه‌ی خطاها را در زمان کامپایل شناسایی می‌کنند و امکان بروز خطا در محیط تولید را به صفر می‌رسانند. زبان‌های ML-family برای back-end هستند و به دلیل سختی یادگیری و کاربری٬ چندان مورد توجه برنامه‌نویسان قرار نگرفتند. تلاش‌های زیادی برای آوردن robustness زبان‌های ML-family به برنامه‌نویسی front-end انجام شد که نتیجه‌ی آن پروژه‌هایی از جمله Fay و GHCJS هستند که به JavaScript‌ کامپایل می‌شوند. اما همچنان به دلیل سختی یادگیری و کاربری٬ این پروژه‌ها هم منزوی شدند. یادگیری JavaScript ساده است اما نگهداری پروژه‌های بزرگ JavaScript کابوس دهشتناکی است. زبانی با robustness زبان‌های ML-family و کاربری بالای زبان JavaScript می تواند پاسخگوی نیاز برنامه‌نویسی front-end باشد. Elm‌ با چنین نگرشی ایجاد شد. Elm‌ زبان برنامه نویسی functional برای ایجاد برنامه‌های front-end است. Elm بهترین‌های دو دنیا را برای ساخت راحت‌تر برنامه های robust در خود جای داده است. Richard Feldman در سخنرانی خود در کنفراس Goto 2017 به معرفی Elm پرداخته است.

https://www.youtube.com/watch?v=28aJOb1A34o

همچنین لینک زیر چگونگی کاربری Elm‌را تشریح می کند.

https://guide.elm-lang.org/

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

https://ow.ly/uASh30e4wRc

#شراره_لطفی (https://ow.ly/xvC530dx8xL)


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


___
Forwarded from Software Philosophy
رویداد «استارتاپ ویکند» یکی از رویدادهای جذابی است که مخصوصا برای برنامه نویسان می‌تواند بسیار مفید باشد. در این رویداد سه نوع ثبت‌نام وجود دارد.
- ثبت‌نام به عنوان «برنامه‌نویس»
- ثبت نام به عنوان «گرافیست»
- ثبت‌نام به عنوان «ایده‌پرداز یا بیزنس»
تیم‌هایی که در این رویداد شکل می‌گیرند در عرض ۳ روز محصولات شگفت‌انگیزی خلق می‌کنند که حاصل همکاری تیمی بسیار تنگاتنگ آنها طی این ۳ روز و به کمک منتورها است. برنامه‌نویسان در این رویداد تجربیات فوق‌العاده‌ای در زمینه ساخت یک «استارتاپ» و توسعه یک محصول جدید کسب می‌کنند.
اگر شما یک برنامه‌نویس هستید و دوست دارید در آینده صاحب یک بیزنس باشید این رویداد می‌تواند تاثیر فوق‌العاده‌ای در مسیر شما بگذارد و توصیه می‌شود در این رویداد شرکت کنید.

www.modotech.ir

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

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

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

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

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

https://ow.ly/nsXP30e8yCn


#علیرضا_وفی (https://ow.ly/Vna930dsUGr)


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

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

۱. توضیحات اسکات آلن در مورد مرتب‌سازی کدها
#refactoring #architecture #aspnet
https://t.iss.one/SoftwarePhilosophy/885
https://t.iss.one/SoftwarePhilosophy/886

۲. استاندارد طراحی URL از لحاظ UX
#ux #webapi #architecture
https://t.iss.one/SoftwarePhilosophy/887

۳. آشنایی با زبان Elm
#elm #javascript #haskel
https://t.iss.one/SoftwarePhilosophy/888
https://t.iss.one/SoftwarePhilosophy/889

۴. استارتاپ ویکند مدوتک ۲
#startupweekend
https://t.iss.one/SoftwarePhilosophy/890
https://t.iss.one/SoftwarePhilosophy/891

۵. معرفی دیتابیس‌های NoSQL و بررسی انواع آن‌ها
#nosql
https://t.iss.one/SoftwarePhilosophy/892
https://t.iss.one/SoftwarePhilosophy/893


@SoftwarePhilosophy

ـــــــــــ
امروزه در بسیاری از پروژه‌ها از Web Sockets استفاده می‌شود. در این نوع ارتباط در کنار ایجاد ارتباطی از سرور به کلاینت که از آن برای ارسال پیام‌ها استفاده می‌شود، ارتباطی از کلاینت به سرور نیز باز می‌شود که عموما مورد استفاده قرار نمی‌گیرد. ضمن اینکه با توجه به متفاوت بودن پروتکل Web Sockets با HTTP، بسیاری از مواردی که بر روی پروتکل HTTP تنظیم می‌کنیم (مانند CORS - Compression‌ و ...) بر روی Web Sockets اعمال نمی‌شود. Server Sent Events در قیاس با Web Sockets گزینه‌ای مناسب‌تر برای اکثریت پروژه‌ها می‌باشد که کاملا بر اساس پروتکل HTTP ایجاد شده و سربار کمتری نیز دارد. لینک زیر حاوی توضیحی نسبتا مفصل از مزایایی است که Server Sent Events می‌تواند برای پروژه شما به ارمغان آورد.

https://docs.bit-framework.com/docs/design-backgrounds/server-sent-events-or-web-sockets.html

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

https://ow.ly/2nBc30ebM8o

#یاسر_مرادی (https://ow.ly/Ph6w30ebM21)


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

___
در وب‌سایت‌های چند صفحه‌ای برای هدر که باید در همه صفحات وجود داشته باشد چه باید کرد؟ آیا باید در هر صفحه دوباره هدر را نوشت؟ اینطور که خیلی بد است، با هر تغییر هدر باید تمام هدرهای صفحات مختلف تغییر کند...
در ui router anguler مفهومی به نام nested states , nested views وجود دارد که در آن می‌توان هدر را به عنوان مستر با کنترولر مربوط به خود در نظر گرفت و محتویات صفحه به صورت دیتیل با کنترولر مخصوص خود قرار بگیرد... به این معنی که با تغییر صفحه هدر جای خود باقی مانده و با تغییر url، فقط محتویات آن عوض می‌شود.
استفاده از این ویژگی کمک زیادی حذف کدهای اضافی از صفحات کرده و خوانایی و کارآمدی آن را بالا می‌برد.
لینک زیر توضیح کاملی از چگونگی انجام این کار است.

https://github.com/angular-ui/ui-router/wiki/Nested-States-and-Nested-Views

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

https://ow.ly/qS7V30ecsZ2

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


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

___
بررسی کدها و اجزای نرم افزار از نقطه نظر معماری و طراحی، یافتن وابستگی میان اجزای کد، پیدا کردن مشکلات در کد در زمان اجرا و خواندن کدهای دیگران یکی از مسایلی بوده که همیشه برنامه نویسان و طراحان سیستم‌ها با آن روبرو هستند. یکی از قابلیت‌های پنهان و بسیار قدرتمند Visual Studio که از نسخه ۲۰۱۵ ارائه شده است Code Map می‌باشد که با Visualize کردن باعث می‌شود کارهای گفته شده به سادگی بیشتر انجام پذیرد.

https://channel9.msdn.com/Events/TechEd/Europe/2014/DEV-B346

https://docs.microsoft.com/en-us/visualstudio/modeling/use-code-maps-to-debug-your-applications

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

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

https://ow.ly/Kjey30edWbn

#علیرضا_وفی (https://ow.ly/Vna930dsUGr)

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

___
تاکنون اتصال به دستگاه‌های بلوتوث تنها از طریق native apps امکان پذیر بود. Web Bluetooth API این امکان را برای web browser ها نیز فراهم آورده است. کتابخانه‌هایی برای کار با این API‌ ها در Node‌و Angular و Polymer نیز پیاده‌سازی شده است. لینک زیر توضیحاتی در مورد این API ها و کاربری آن ارايه می‌دهد.

https://developers.google.com/web/updates/2015/07/interact-with-ble-devices-on-the-web

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

https://ow.ly/6Gq530efr9v

#شراره_لطفی (https://ow.ly/xvC530dx8xL)

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

___