یوشا آل ایوب

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

یوشا آل ایوب

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

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

طبقه بندی موضوعی
تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران

۴۷ مطلب با موضوع «نرم افزار :: سیستم عامل» ثبت شده است

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

 

۰ نظر ۰۱/۰۹/۰۸
یوشا آل ایوب

- کانفیگ hardening شده هسته Linux برای محیط production x64:

(قبل از کامپایل هسته Linux بهمین شکل پارامترهارو داخل فایل .config موجود در سورس لینوکس تون اعمال کنید)

۱ نظر ۰۱/۰۶/۰۱
یوشا آل ایوب

 

بلخره بعد از مدت ها گنولینوکس Slackware نسخه 15 stable ترخیص شد!

 

  • تغییرات مهم

- Kernel 5.15.19 LTS

- Python 3.9 ,BASh 5.1, LLVM 13, GCC 11.2, PHP 7.4

- XFCE 4.16, KDE 5.23, X Server 1.20

- GRUB 2.0.6, OpenSSL 1.1.1m, BinUtils 2.37, GNU C lib 2.33

- تغییر درایورها

- پشتیبانی بهتر از اینترفیس NVMe و بسترهای نوع UEFI

- جایگزین شدن Elogind بجای ConsoleKit2

- اضافه شدن FFmpeg و Lame

- جایگزین شدن postfix بجای sendmail

- جایگزین شدن Dovecot بجای pop3d و imapd

- جایگزین شدن iproute2 بجای net-tools

- اضافه شدن Qt 5.15 و GTK4

- اضافه شدن تعدادی User/Group جدید

- حذف و اضافه شدن تعداد زیادی package

و بسیاری بهینه سازی و بروز رسانی های دیگه...

 

  •  وبسایت

http://www.slackware.com

 

  • دانلود

32bit

https://mirrors.slackware.com/slackware/slackware-iso/slackware-15.0-iso

https://ftp.osuosl.org/pub/slackware-iso/slackware-15.0-iso

64bit

https://mirrors.slackware.com/slackware/slackware-iso/slackware64-15.0-iso

https://ftp.osuosl.org/pub/slackware-iso/slackware64-15.0-iso

64bit live

https://slackware.nl/slackware/slackware-live/slackware64-15.0-live

 

  • مستندات

https://docs.slackware.com

۰۰/۱۱/۱۶
یوشا آل ایوب

نام توزیع

کشور سازنده

نوع پروانه

معماری

تاریخ بروزرسانی

وبسایت

Kali

(BackTrack)

سوئیس

رایگان/تجاری

Opensource/Binary

i686, x64

2021

kali.org

BlackArch

آمریکا

رایگان

Opensource/Binary

x64

2021

blackarch.org

Grml

استرالیا

رایگان

Opensource

i686, x64

2021

grml.org

Parrot OS

ایتالیا

رایگان

Opensource/Binary

x64

2021

parrotlinux.org

Pentoo

سوئیس

رایگان

Opensource

i686, x64

2020

pentoo.ch

CAINE

ایتالیا

رایگان

Opensource

x64

2021

caine-live.net

نام توزیع

کشور سازنده

نوع پروانه

معماری

تاریخ بروزرسانی

وبسایت

ForLEx

ایتالیا

رایگان

Opensource

x86

2019-10

forlex.it

PALADIN

آمریکا

 

تجاری

Opensource/Binary

x86, x64

?

sumuri.com

DEFT Linux

ایتالیا

رایگان

i686

2018-09

deftlinux.net

BackBox Linux

ایتالیا

رایگان

Opensource/Binary

x86, x64

2020

backbox.org

ALT Linux

روسیه

رایگان

Opensource/Binary

i586, x64

2021

en.altlinux.org

 

basealt.ru

radare2

?

رایگان

Opensource

x86

2021

rada.re/n/

ArchStrike

آمریکا

رایگان

Opensource

i686, x64

2021

archstrike.org

Santoku

?

رایگان

Opensource

x64

2014

santoku-linux.com

نام توزیع

کشور سازنده

نوع پروانه

معماری

تاریخ بروزرسانی

وبسایت

Bugtraq

اسپانیا

رایگان

x86, x64

2013

bugtraq-team.net

URIX OS

بلغارستان

رایگان

x64

2016-01

urix.us

SIFT

؟

؟

x64

2019

digital-forensics.sans.org

Cyborg Linux

هند

رایگان

Opensource

x86

2015

cyborg.ztrela.com

Security Onion

آمریکا

رایگان

Opensource/Binary

x86

2021

securityonion.net

ADIA

?

رایگان

Opensource

x64

2017

forensics.cert.org

NST

آمریکا

رایگان

 Opensource

x64

2021

networksecuritytoolkit.org

Tsurugi Linux

Japan

رایگان

Opensource

x64

2021

https://tsurugi-linux.org


 

دانلود فایل PDF

۱ نظر ۰۰/۱۰/۰۵
یوشا آل ایوب

مسئله Thread و Process دو موضوع نزدیک به هم ولی متفاوت هستن...

 

1- Process مستقل هستش، ولی Thread ها بخشی از یک Process هستن. (یعنی یک Process میتونه چندین Thread بوجود بیاره)
2- هر Process حافظه اختصاصی خودش رو داره، ولی Thread ها از حافظه اشغال شده Process استفاده می کنن. (یعنی هر Process حافظه خودش رو با Thread های خودش به اشتراک میذاره)
3- هر Process شامل یک برنامه و PID انحصاری هستش، ولی هر Thread شامل مجموعه ای از دستورالعمل ها و Stack انحصاری هستش.
4- هر Process درواقع یک Task هستش، ولی هر Thread یک Light wight process هستش.
5- Process ها توسط IPC (یا همون Inter-process communication) با یکدیگر ارتباط برقرار می کنن، ولی Thread ها توسط دستورات برنامه نویسی (در زبان PHP و Java توسط wait, notify و در زبان C توسط pthread_cond_wait, pthread_cond_signal) با یکدیگر ارتباط برقرار می کنن.
6- ساخت Process به سختی توسط duplicate کردن Process والد انجام میشه، ولی ساخت Thread براحتی توسط کپی شی Thread انجام میشه.
7- برای اجرای چند Process بطور موازی/parallel به یک سیستم Multi-Process نیاز هست، ولی برای اجرای چند Thread بطور همزمان به دستورات برنامه نویسی نیاز هست.
8- بطور کلی Process توسط CPU کنترل میشه، ولی Thread توسط Process کنترل میشه.
9- هر Process یک Thread main داره، ولی هر Thread فقط خودشه که کارگر/worker صدا زده میشه.
10- Process در فضای separate memory اجرا میشه، ولی Thread در فضای Shared memory اجرا میشه.
و...

۲ نظر ۹۹/۰۵/۲۵
یوشا آل ایوب

- برآورد مشکلات سیستم

- بررسی کلی سخت افزار

- بررسی کلی نرم افزار

 

سخت افزار

- پاکسازی داخل سیستم و مادربورد

- سرویس CPU و فن CPU

- سرویس Power supply و فن Power supply

- پاکسازی موس، کیبورد و مانیتور

- تهیه باطری جدید برای CMOS/BIOS

- پاکسازی سوکت ها و پورت های سیستم

[- قطع و غیرفعال کردن مودم Dialup]

[- قطع و غیرفعال کردن درایو Floppy]

- تعویض کابلهای کهنه/آسیب دیده

- ریست و تنظیم مجدد مانیتور

- بررسی کابلهای داخل و بیرون سیستم

 

نرم افزار

- بک آپ گیری از اطلاعات!

- آپدیت Firmware مادربورد(BIOS EEPROM)

- ریست و تنظیم مجدد BIOS/CMOS

- فرمت عمقی(low-level) پارتیشن ها یا کل دیسک

- نصب مجدد سیستم عامل

- تنظیم سیستم عامل

[- ریستارت سیستم عامل بعد از انجام تنظیمات]

- تنظیم تاریخ و ساعت سیستم

- نصب نرم افزارهای کتابخانه ای/Runtime

- دانلود [و رایت] و نصب Driver ها

- حذف نرم افزارهای بلااستفاده و مزاحم

- پاکسازی فایلها و پوشه های اضافی و temp

[- بهینه سازی و تنظیم رجیستری]

- نصب و بروزرسانی نرم افزارهای کاربردی

- نصب ضدبدافزار سبک و قدرتمند

- بروزرسانی ضدبدافزار

- اسکن کل پارتیشن ها توسط ضدبدافزار

- بهینه سازی تنظیم سرویس ها

- Defrag/Optimize پارتیشن ها(بجز SSD ها!)

- پاکسازی و تنظیم startup سیستم عامل

- پاکسازی system restore point ها

 

شبکه

- پاکسازی کش DNS و ریست Socket سیستم

- آپدیت Firmware مودم ADSL/DSL

- تنظیم subnet mask مودم به 255.255.255.128 یا بالاتر

- تنظیم Subnet prefix مودم به 25

- تنظیم Security protocol مودم به WPA2 یا WPA3

- خاموش کردن قابلیت WPS مودم ADSL/DSL

- پنهان کردن SSID مودم

 

۰ نظر ۹۹/۰۱/۱۳
یوشا آل ایوب

 

۰ نظر ۹۸/۱۱/۱۲
یوشا آل ایوب

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 یکی کنید.

۲ نظر ۹۷/۱۱/۰۶
یوشا آل ایوب

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 رو بهش بدید...

۱ نظر ۹۷/۰۷/۰۹
یوشا آل ایوب

 نکته اینکه دستور compile در نرم افزار Android Studio 3 و جدیدتر منسوخ شده و بجاش باید از دستور api استفاده بشه. (میتونید براحتی و بدون مشکل جایگزینشون کنید)

پس باید بپرسیم فرق دستور api با دستور implemention چیه:

- دستور api به اصطلاح حکم public کردن یک کتابخانه رو داره

- اما دستور implemention به اصطلاح حکم private کردن یک کتابخانه رو داره

- همونطور که با public کردن یک متد میتونید اون متد رو برای همه کلاس ها و پکیج ها share و قابل استفاده کنید، توسط دستور api هم میتونید محتویات یک کتابخانه رو برای کل پروژه  share و قابل استفاده کنید. (درواقع توسط دستور api، کتابخانه مورد نظر در همه جای پروژه "رخنه" میکنه)

- همونطور که با private کردن یک متد میتونید اون متد رو از همه کلاس ها و پکیج ها "مخفی و غیر قابل استفاده" کنید که " فقط در محل خودش قابل استفاده باشه"، توسط دستور implemention هم میتونید محتویات یک کتابخانه رو فقط برای برنامه یا کتابخانه ای که ازش استفاده کرده "نمایان و قابل استفاده" کنید.

MyApp -> Lib -> Lib2
👆 در اینجا برنامه MyApp به کتابخانه Lib وابستست، و کتابخانه Lib به کتابخانه Lib2 وابستست...
با api کردن Lib2 باعث میشید تا محتویات این کتابخانه در کل پروژه قابل دسترس باشه. اما آیا واقاً لازم دارید؟

dependencies
{
   api project(':Lib2')
}

مثلا اگر متد sendRequest() در کتابخانه Lib2 قرار گرفته باشه و فقط کتابخانه Lib از این متد استفاده کرده باشه، با api کردن Lib2 اون متد هم در اختیار شما و کل پروژه خواهد بود. چیزی که واقاً لازم نیست...


زمانی باید از دستور api استفاده کنید که میخوایید از محتویات یک کتابخانه که برای یک کتابخانه دیگر هست استفاده کنید. 👆 مثل  Lib2
یا  پروژه تون کلاً یک کتابخانست. مثل SugarORM یا Log4J یا Volley یا ApacheHTTP...


✅ همیشه باید از دستور implemention استفاده کنید. اینطوری خود Gradle plugin هوشمندانه تشخص میده که آیا لازمه به api تغییر کنه یا نه.
درصورت بروز خطا، بدونید که به اشتباه از متدهای کتابخانه های  تودرتو و زیرین استفاده کردید پس باید رفعش کنید.


Android Gradle plugin engineer Jerome Dochez: When you switch to the new Android Gradle plugin 3, you should replace all your compile (and api) with the implementation keyword.

implementation  / testImplementation  / androidTestImplementation

۰ نظر ۹۷/۰۶/۱۳
یوشا آل ایوب