یوشا آل ایوب

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

یوشا آل ایوب

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

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

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

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

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

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

۱- اینکه exception ها، استثنا هستن! فقط باید از اونها برای مواجه با مشکلات غیر قابل پیش بینی استفاده کنید.

۲- هرگز از استثنائها برای کنترل جریان/flow نرم افزار استفاده نکنید. اینکار باعث میشه که نتونید مسیر اجرای کد رو دنبال کنید و پرفورمنس نرم افزار هم کاهش پیدا میکنه. (مثل دستور GoTo که در برخی زبانها وجود داره)

۳- هرگز شی exception رو بعنوان مقدار و خروجی return نکنید.

۴- استثنائها فقط باید حاوی اطلاعات رخداد/رویداد باشد و نباید حاوی پارامترها(یا اطلاعات اضافی) باشه که روی نحوه انجام و منطق داخل بلوک catch تاثیر بذاره.

۵- هرگز exception های زیرساختی/داخلی مثل SystemException, OutOfMemoryException, StackOverflowException, ComException, ExecutionEngineException, NullReferenceException, IndexOutOfRangeException رو پرتاب نکنید.

۶-  برای حالت debug نرم افزار exception پرتاب نکنید.

۷- داخل متد toString() کلاس هاتون exception پرتاب نکنید. اینکار عمل debugging رو سخت می کنه. (از این متد برای debug کردن استفاده میشه)

۸- داخل توابع مقایسه ای(true/false) و equal هرگز exception پرتاب نکنید.

۹- هرگز StackOverflowException و OutOfMemoryException رو catch نکنید. اینها غیرقابل کنترل و هندل شدن هستن.

۱۰- همیشه exception های سطح پایین و general رو به exception های ریز تر و خاص تر wrap کنید. مثل:

NotFoundException -> FileNotFoundException/URLNotFoundException

۱۱- همیشه عملیات پاکسازی/Cleanup رو در بلوک finally قراربدید و نه در بلوک catch. بلوک finally همیشه اجرا میشه اما بلوک catch فقط هنگام رخداد exception اجرا میشه.

۱۲- فقط باید زمانی exception رو catch کنید که میتونید بخوبی مشکل رو handle و recovery کنید. درغیراینصورت بهتره exception رو catch نکنید. (چون درواقع صرفا مخفیش کردید)

۱۳- بهتره که هنگام timeout شدن یک عملیات، TimeoutException پرتاب کنید نه اینکه توسط if/else اونرو handle کنید.

۱۴- در بلوک finally هرگز exception پرتاب نکنید.

۱۵- صرفا Log و rethrow کردن یک exception در بلوک catch بمعنای handle کردنش نیست.

۱۶- هرگز exception مادر/عمومی مثل Exception رو throw نکنید.

۱۷- برای wrap کردن exception همیشه از کلاس مادر Exception یا RuntimeException ارث بری کنید.

۱۸- بهتره از exception های predefined استفاده کنید تا اینکه اونهارو خودتون مجدد بسازید.

۱۹- بهتره در بلوک catch از if/else استفاده نکنید تا از ایجاد branch های تودرتو جلوگیری بشه.

۲۰- همیشه پیامهای exception رو در فایلی log کنید.

۲۱- بجای throw ex از throw استفاده کنید تا پیامهای stacktrace قبلی و کنونی موجود در ex حفظ بشن.

catch(Exception ex)
{
   throw;
}

 

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

 

بلخره بعد از مدت ها گنولینوکس 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

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

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

 

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

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

 

 

مطالب مرتبط

- نقشه راه توسعه دهنده PHP

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

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


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

 

 فهرست/مندرجات
    • مقدمه
    • اجرای برنامه‌ها بر روی GPU
    • ظهور GPGPU
    • OpenCL و Java
    • CUDA و Java
    • ماندن در بالای کد low-level
    • نتیجه‌گیری

 

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

1- حتی الامکان دایرکتیوهای using رو بداخل namespace منتقل کنید و در خارج از محدوده namespace رها نکنید.

StyleCop: SA1200: UsingDirectivesMustBePlacedWithinNamespace

namespace ConsoleApp1
{
   using System;
   using System.Collections.Generic;
   using System.Text;

   class Program
   {
      private static void Main(string[] args)
      {
      }
   }
}

نکته: درصورتیکه فقط یک namespace در فایل موردنظر موجود باشه.

 

2- همیشه reference های بلااستفاده رو از پروژه حذف کنید.

نکته: البته هنگام کامپایل برنامه، همه reference های استفاده نشده حذف میشن، ولی خب همیشه محیط کدنویسی رو تمیز و خلوت نگه دارید.

 

3- همیشه دایرکتیوهای using بلااستفاده(خاکستری رنگ) رو از کلاسها حذف کنید.

   using System.Drawing;
   using System.Resources; // <-----
   using System.Reflection; // <-----
   using System.Runtime.InteropServices; // <-----
   using System;
   using System.Windows.Forms;

 

4- جهت بازگشت چندین مقدار از یک متد میتونید از کلمه کلیدی ref یا out یا پرانتز (type1, type2, typeN) یا حتی Tuple استفاده کنید:

public Tuple <int, string, string> GetStudent()
{
   int studentId = 11;
   string firstName = "Alex";
   string lastName = "Koertson";
   return Tuple.Create(studentId, firstName, lastName);
}

نکته: Tuple از نوع reference type هستش و حداکثر ظرفیت 8 عنصر رو داره. همچنین از دات نت نسخه 4 و جدیدتر در دسترسه.

 

5- قابلیت های مخفی در #C!

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

 

1- برای بدست اوردن میزان حافظه مصرف شده باید از دستور memory_get_usage(FALSE) استفاده کنید و برای میزان حافظه رزرو شده باید از دستور memory_get_usage(TRUE) استفاده کنید.

اما این نکته در مستندات سایت PHP.net برعکس توضیح داده شده:

int memory_get_usage ([ bool $real_usage = FALSE ] )

Returns the amount of memory, in bytes, that's currently being allocated to your PHP script.

 

2- زمانی از دستور strcmp استفاده کنید که قراره مقدار رشته ها شمارش(کمتر/بیشتر) بشن، درغیراینصورت استفاده از اپراتور === برای برابر بودن/نبودن رشته ها بهترین گزینست.


3- آیا میدونید به 4 روش مختلف میتونید تصاویر رو در مرورگر نمایش/output بدید؟

header('Content-Type: image/jpg');
$image = imagecreatefromjpeg('yourfilename.jpg');
header('Content-Length: ' . filesize('yourfilename.jpg'));
imagejpeg($image);
imagedestroy($image);

و

header('Content-Type: image/jpg');
header('Content-Length: ' . filesize('yourfilename.jpg'));
readfile('yourfilename.jpg');

و

header('Content-Type: image/jpg');
header('Content-Length: ' . filesize('yourfilename.jpg'));
echo file_get_contents('yourfilename.jpg');

و

header('Content-Type: image/jpg');
header('Content-Length: ' . filesize('yourfilename.jpg'));
header('X-Sendfile: ' . 'yourfilename.jpg'); 
exit;

 

4- اگر از PHP CLI در محیط text UI سیستم عامل استفاده می کنید و مشکلات output و نمایشی دارید، بهتره از دستور passthru استفاده کنید.

 

5- نکته جزیی: فراموش نکنید که تابع json_decode فقط اعضای public شی موردنظر رو تبدیل میکنه، و نه private / protected.

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