یوشا

دست نوشته ها و تجربیات شخصی

یوشا

دست نوشته ها و تجربیات شخصی

شهید دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم آنکس که تخصص ندارد و کاری را می پذیرد بی تقواست!

طبقه بندی موضوعی
۰۶
اسفند

MVC یک معماری طراحی نرم‌ افزاری است که پروژه نرم افزاری را به سه بخش اصلی تقسیم می‌ کند:

- Model (مدل): مسئول مدیریت داده‌ ها و منطق پروژه است.

کار با پایگاه داده

اعتبارسنجی داده‌ ها

محاسبات و منطق کسب‌ و کار(که به لایه Repository هم میشود منتقل کرد)

 

- View (نمایش): مسئول نمایش اطلاعات به کاربر است.

رابط کاربری (UI)

صفحات وب، فرم‌ ها، نمودارها

فقط نمایش داده‌ ها (در صورت داشتن منطق می توان به لایه ViewModel هم منتقل کرد)

 

- Controller (کنترلر): واسط بین Model و View است.

درخواست‌ های کاربر را دریافت می‌ کند

با Model کار می‌ کند تا داده را پردازش کند

View مناسب را انتخاب و داده را به آن می‌ فرستد

 

تصاویر:

 

دقیقتر:

 

 

دقیقتر:

 

mvc چیست، ام وی سی چیست، ساختار mvc

مزایای MVC

  • جداسازی منطق پروژه از نمایش و Data source
  • قابلیت نگهداری و توسعه آسان‌ تر
  • امکان کار موازی تیم‌ ها روی بخش‌ های مختلف

 

منبع: https://blog.glyphobet.net/essay/153/ و خودم

  • یوشا آل ایوب
۱۲
بهمن

 

  • یوشا آل ایوب
۰۹
دی

1. Package Design Checklist

1.1. General

  • 1.1.1. Favor placing API and implementation into separate packages [explain]
  • 1.1.2. Favor placing APIs into high-level packages and implementation into lower-level packages [explain]
  • 1.1.3. Consider breaking up large APIs into several packages [explain]
  • 1.1.4. Consider putting API and implementation packages into separate Java archives [explain]
  • 1.1.5. Avoid (minimize) internal dependencies on implementation classes in APIs [explain]
  • 1.1.6. Avoid unnecessary API fragmentation [explain]
  • 1.1.7. Do not place public implementation classes in the API package [explain]
  • 1.1.8. Do not create dependencies between callers and implementation classes [explain]
  • 1.1.9. Do not place unrelated APIs into the same package [explain]
  • 1.1.10. Do not place API and SPI into the same package [explain]
  • 1.1.11. Do not move or rename the package of an already released public API [explain]

1.2. Naming

  • 1.2.1. Start package names with the company’s official root namespace [explain]
  • 1.2.2. Use a stable product or product family name at the second level of the package name [explain]
  • 1.2.3. Use the name of the API as the final part of the package name [explain]
  • 1.2.4. Consider marking implementation-only packages by including “internal” in the package name [explain]
  • 1.2.5. Avoid composite names [explain]
  • 1.2.6. Avoid using the same name for both package and class inside the package [explain]
  • 1.2.7. Avoid using “api” in package names [explain]
  • 1.2.8. Do not use marketing, project, organizational unit or geographic location names [explain]
  • 1.2.9. Do not use uppercase characters in package names [explain]
  • یوشا آل ایوب
۱۸
مهر

مقالات مرتبط:

#2 - نکاتی برای افزایش امنیت وبسایت

 

 

1- مکانیزم و شیوه کار پروتوکل HTTP رو کامل فرا بگیرید.

 

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

 

3- جهت جلوگیری از click-jacking مقدار هدر X-Frame-Options رو DENY قرار بدید:

Apache httpd.conf:

Header always append X-Frame-Options DENY


Apache .htaccess:

Header append X-FRAME-OPTIONS "DENY"


Nginx:

add_header X-Frame-Options "DENY";


PHP:

header('X-Frame-Options: DENY');

 

4- بصورت هفتگی یا ماهیانه کل سایت رو توسط نرم افزارها و سایتهای اسکنر امنیتی چک کنید:

https://observatory.mozilla.org

https://securityheaders.com

https://urlvoid.com

https://virustotal.com
https://immuniweb.com/websec
https://detectify.com
http://amn.bayan.ir
https://ssllabs.com/ssltest/index.html

http://isithacked.com
https://app.upguard.com/webscan
https://app.webinspector.com/online_scan
https://suip.biz/?act=sqlmap
https://pentest-tools.com/home
https://sitecheck.sucuri.net
https://quttera.com
https://siteguarding.com

https://transparencyreport.google.com/safe-browsing/search

 

5- داده های ورودی توسط کاربر را بدقت بررسی، برش و فیلترسازی کنید.

 

6- برای اپلیکیشن، قابلیت debug mode درست کنید تا در مواقع لزوم بتونید فعالیت های اپلیکیشن رو مانیتور و خطازدایی کنید.

  • یوشا آل ایوب
۰۱
شهریور

programming mistakes

  • یوشا آل ایوب
۳۱
تیر

 

  • یوشا آل ایوب
۱۳
تیر

بر اساس مستندات و آمارهای رسمی، نه توهمات و شنیده ها و برداشت های شخصی:

 

کشورهایی که بالاترین میزان خیانت به همسر در دنیا و دارن (2016)

تایلند، دانمارک، ایتالیا، آلمان، فرانسه، انگلیس...

 

 

 

کشورهایی که بالاترین میزان بی خانمان در هر شب رو دارن (2012 تا 2019)

آلمان، آمریکا، انگلیس، فرانسه، سوئد، کانادا...

 

 

 

کشورهایی که بالاترین میزان خودکشی در دنیا رو دارن (2016)

آمریکا، ژاپن، فرانسه، استرالیا، آلمان، انگلیس، ترکیه...

 

  • یوشا آل ایوب
۱۰
خرداد

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

مهم‌ ترین تهدیدهای سایبری خودروهای مدرن عبارتند از:

  1. دسترسی غیرمجاز به سیستم‌ های حیاتی: هکرها ممکن است از طریق آسیب‌پذیری‌ های نرم‌افزاری، کنترل سیستم‌ هایی مانند ترمز، فرمان یا حتی موتور را به دست بگیرند و باعث ایجاد حوادث جانی شوند!

  2. سرقت داده‌ های حساس: بسیاری از خودروها اطلاعاتی مانند موقعیت جغرافیایی، تاریخچه سفرها، شماره های تماس، و حتی اطلاعات شخصی راننده را ذخیره می‌ کنند که در صورت نفوذ، می‌تواند مورد سوء استفاده قرار گیرند.

  3. حملات بدافزاری: نصب نرم‌ افزارهای مخرب روی سیستم‌ های خودرو میتواند عملکرد آن را مختل کند یا امکان جاسوسی از کاربر خودرو را فراهم سازد.

  4. حملات به شبکه‌ های ارتباطی خودرو (V2X): خودروهای متصل (Connected cars) از فناوری‌ هایی مانند V2V (ارتباط خودرو با خودرو / VechineToVechile) و V2I (ارتباط خودرو با زیرساخت) استفاده می‌ کنند که در صورت عدم رمزنگاری مناسب داده ها و اتصالات، ممکن است مورد حمله قرار گیرند.

  5. حملات اشغال سرویس (DoS): با overload کردن سیستم‌ های ارتباطی یا عملیاتی خودرو، ممکن است سرویس‌ های حیاتی خودرو از کار بیفتند.

  6. و...

 

در تصویر زیر، برخی از تهدید های خودروهای مدرن توسط شرکت KasperySky طراحی شده است:

  • یوشا آل ایوب
۲۳
ارديبهشت

MSSQL / Azure SQL Database

 

MySQL

 

Oracle Database

 

jdbc, driver, versions, jdk, odbc, ojdbc

  • یوشا آل ایوب
۱۲
فروردين

مقایسه پرفورمنس(startup, rendering, event handling)

از سریع‌ ترین به کندترین:

Windows platform
FLTK > wxWidgets > GTK > Qt

Linux platform
FLTK > GTK > (wxWidgets / Qt)

نکته: در اینجا منظور از GTK نسخه GTKmm هستش که wrapper/مخصوص  ++C  هستش.
نکته 2: عناصر کتابخانه  wxWidgets صددرصد native هستن. اما عناصر کتابخانه FLTK و Qt و GTK فقط "شبیه" به native هستن. که برای این شبیه سازی از CSS و API های theming سیستم استفاده می کنن.


این توضیحات رو هم در نظر بگیرید:
- کتابخانه FLTK از نظر استایل بهترین گزینه برای لینوکس با محیط EDE هستش. از نظر فضای دیسک، بسیار کم حجم هستش. پرفورمنس بالاتری نسبت به بقیه کتابخانه ها داره. استفاده ازش آسون هست. از بعضی دیگر زبانهای برنامه نویسی هم پشتیبانی میکنه. در ویندوز برروی WinAPI، در لینوکس برروی X Window و در مک بر روی Quartz سوار هست. FLTK بعضی از widget های مدرن مثل Treeview رو نداره. بعضی از widget ها حالت RTL (راست به چپ) رو ندارن.

 

- کتابخانه wxWidgets از نظر استایل بهترین گزینه برای ویندوز و مک و لینوکس هستش. از نظر فضای دیسک، حجیم هستش. یادگیری و استفاده ازش کمی سخته. UI designer هم داره. از خیلی زبانهای برنامه نویسی پشتیبانی میکنه. در لینوکس بر روی کتابخانه GTK قرار داره و در پشت پرده از API های GTK استفاده میکنه. wxWidgets فقط کتابخانه GUI نیست، یک فریم ورک محسوب میشه.

 

- کتابخانه GTK از نظر استایل بهترین گزینه برای لینوکس با محیط Cinnamon, GNOME, XFCE یا Mate هستش. یادگیری و استفاده ازش آسونه. UI designer هم داره. از خیلی زبانهای برنامه نویسی پشتیبانی میکنه.

 

- کتابخانه Qt از نظر استایل بهترین گزینه برای لینوکس با محیط KDE, TDE یا LXQt هستش. از نظر فضای دیسک، حجیم هستش. یادگیری و استفاده ازش بواسطه Qt Creator آسونه. UI designer هم داره. از خیلی زبانهای برنامه نویسی پشتیبانی میکنه. امکانات غیر استاندارد هم داره(meta-object). طیف گسترده تری از platform ها رو در بر گرفته. Qt فقط کتابخانه GUI نیست، یک فریم ورک هستش. برای پروژه های غیر opensource باید لایسنس داشته باشید. از مدل برنامه نویسی reactive پشتیبانی می کنه. (به کمک شتابدهنده گرافیکی میشه بار سنگین رندر رو از روی پردازنده برداشت، بنابراین باعث افزایش پرفورمنس میشه)

 

جمع‌بندی انتخاب کتابخانه بر اساس نیاز

معیار بهترین گزینه
بالاترین پرفورمنس FLTK
Native Look در ویندوز wxWidgets
Native Look در لینوکس GTK
multi-platform + امکانات پیشرفته Qt
سبک‌ وزنی و Embedded systems FLTK
پروژه تجاری با لایسنس Qt یا wxWidgets
  • یوشا آل ایوب