یوشا

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

یوشا

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

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

طبقه بندی موضوعی
۱۰
۱۳۹۸/۰۳

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

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

  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
  • یوشا آل ایوب
۲۶
۱۳۹۷/۱۲

 

hsqldb, h2, derby, sqlite compare

  • یوشا آل ایوب
۰۶
۱۳۹۷/۱۱

1- تفاوت HashMap و HashTable:

 

کلاس HashMap از نوع synchronize نیست پس thread-safe نیست. اما کلاس HashTable از نوع synchronize هستش.
کلاس HashMap بخاطر synchronize نبودن کمی سریعتر از HashTable عمل میکنه.
کلاس HashMap اجازه داشتن یک کلید null و چندین مقدار null رو داره، اما کلاس HashTable همچین اجازه ای رو نداره.
کلاس HashMap زیرکلاس AbstractMap هستش، اما کلاس HashTable زیرکلاس Dictionary هستش.
کلاس HashTable تقریباً منسوخ شده و باید از جایگزینش ConcurrentHashMap استفاده بشه.
و...

در بیشتر موارد کلاس HashMap استفاده میشه، درصورتی که synchronization در اولویت نباشه.

 

2- برای حل مشکل ValueError: unsupported pickle protocol در لینوکس کافیه فایل .repopickle_.gitconfig در Android SDK رو پیدا و حذف کنید.

 

3- اصول طراحی کلاس:

- همیشه داده ها و فیلدها رو private نگهدارید و از اصول encapsulation پیروی کنید.

- همیشه فیلدها رو initialize کنید.

- هرکلاس رو به یک نوع/دسته از داده اختصاص بدید.

- کلاسهای چند منظوره با چند مسئولیت طراحی نکنید، بلکه آنها را تجزیه و جداسازی کنید.

- بی دلیل برای همه فیلدها و داده ها accessor و mutator طراحی نکنید. (set/get)

- همیشه بهترین و مناسبترین نام رو برای کلاس و متد تعیین کنید تا هدف رو بخوبی انعکاس بدهند.

- حتاالمکان کلاسها رو immutable (غیرقابل تغییر) طراحی کنید.

- بجای استفاده مکرر تودرتو if/else switch foreach از interface یا کلاس abstract استفاده کنید.

- حتاالمکان کلاس رو static طراحی نکنید. (بخاطر global state و مشکلات unit testing)

- از نوشتن متدهای طولانی و سنگین خودداری کنید. معمولاً متدهای طویل نشاندهنده رفتار و وظایف متعدد هستش که نیاز به تجزیه و refactoring داره.

- از قانون DRY (مخفف Don’t Repeat Yourself) پیروی کنید... متدهای تکراری رو با ساخت superclass abstract یکی کنید.

  • یوشا آل ایوب
۱۵
۱۳۹۷/۱۰

 

دیاگرام اتصال و سلسله مراتب کتابخانه JDBC
 

برای بزرگنمایی کلیک کنید.

 

  • یوشا آل ایوب
۱۱
۱۳۹۷/۰۹

 

برای بزرگنمایی کلیک کنید

PHP skills, back-end developer skills, مهارت های برنامه نویس PHP، roadmap, مهارت های برنامه نویس، programming skills

 

  • یوشا آل ایوب
۱۹
۱۳۹۷/۰۸

 

1- جهت پشتیبانی از ارث بری چندگانه در PHP میتونید توسط trait ها اون رو شبیه سازی کنید.

trait PHP
{
   public function printPHP()
   {
      echo 'PHP ';
   }
}
trait Java
{
   public function printJava()
   {
      echo 'Java ';
   }
}
trait PHPJava
{
   use PHP, Java;
}
class ProgrammingLanguages
{
   use PHPJava;
}

 

2- اگر در حین کار با Composer یا PHPUnit با خطای module openssl is already installed on Unknown in line 0 مواجه شدید، کافیه اکستنشن openssl رو در PHP.ini غیرفعال کنید:

ویندوز
;extension=php_openssl.dll

لینوکس
;extension=php_openssl.so

  • یوشا آل ایوب
۰۹
۱۳۹۷/۰۷

1- بهتره همیشه شماتیک :file رو در کلاس WebView رو مسدود کنید.

کلاس WebView قابلیت نمایش صفحات وب در داخل اکتیویتی رو فراهم میکنه، و از اونجایی که دیگر برنامه ها قادرن Intent URI به WebView ایجاد شده بفرستن، پس این امکان رو هم دارن تا بتونن فایل یا آدرس URI آلوده رو در دستگاه بارگذاری کنن...

راه حل:

String _intentUrl = getIntent().getStringExtra("http://blog.ir");

if (!_intentUrl.startsWith("file:"))
{
   loadUrl = _intentUrl;
}

 

2- از انجایی که همه برنامه ها قادرن محتوای logcat رو read کنن، هرگز اطلاعات حساس رو برای دیباگ Log نکنید، مخصوصاً درخواستها و پاسخهای HTTP رو.

 

3- اگر در حین بازکردن برنامه Eclipse با خطای Java was started but returned exit code 13 مواجه شدید، این یعنی مثلاً Java 64bit نصب کردید، درصورتی که Eclipse تون 32bit هستش. یا Java 32bit نصب کردید، درصورتی که Eclipse تون 64bit هستش.

بنابراین باید معماری هردو یکی باشه... مثلاًً هردو 32bit یا هردو 64bit باشن.

نکته: در صورت حل نشدن مشکل با نصب معماری مناسب، فایل eclipse.ini رو که در کنار فایل اجرایی Eclipse تون هست رو باز کنید و بدنبال واژه –vm بگردید... بعد در زیر این واژه مسیر نصب شده Java رو جایگزینش کنید...

و یا برنامه Eclipse رو باز کنید و به مسیر Menu -> Prefecences -> Java -> Installed JREs برید و مسیرنصب شده Java رو بهش بدید...

  • یوشا آل ایوب
۲۳
۱۳۹۷/۰۶

  • یوشا آل ایوب