- کانفیگ hardening شده هسته Linux برای محیط production x64:
(قبل از کامپایل هسته Linux بهمین شکل پارامترهارو داخل فایل .config
موجود در سورس لینوکس تون اعمال کنید)
- کانفیگ hardening شده هسته Linux برای محیط production x64:
(قبل از کامپایل هسته Linux بهمین شکل پارامترهارو داخل فایل .config
موجود در سورس لینوکس تون اعمال کنید)
۱- اینکه Exception ها، استثنا هستن! فقط باید از اونها برای مواجه با مشکلات غیر قابل پیش بینی استفاده کنید.
۲- هرگز از Exception برای کنترل جریان/flow نرم افزار استفاده نکنید. اینکار باعث میشه که نتونید مسیر اجرای کد رو دنبال کنید و پرفورمنس نرم افزار هم کاهش پیدا میکنه. (مثل دستور GoTo که در برخی زبانها وجود داره)
۳- هرگز شی Exception رو بعنوان مقدار و خروجی return
نکنید.
۴- Exception فقط باید حاوی اطلاعات رخداد/رویداد باشد و نباید حاوی پارامترها(یا اطلاعات اضافی) باشه که روی نحوه انجام و منطق داخل بلوک 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
قراربدید و نه در بلوک
. بلوک catchfinally
همیشه اجرا میشه اما بلوک 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
ارث بری کنید.
18- بهتره در بلوک catch
از if/else
استفاده نکنید تا از ایجاد branch های تودرتو جلوگیری بشه.
19- همیشه پیامهای Exception رو در فایلی log کنید.
20- بجای 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
و بسیاری بهینه سازی و بروز رسانی های دیگه...
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
تعریف جرمیابی دیجیتال: به مجموعه فرایند جمع آوری، ارزیابی و ارائه مدارک جمع آوری شده از تجهیزات دیجیتال گفته میشود.
این مدارک دیجیتالی از کامپیوترها، تلفن های همراه، دستگاه های اینترنت اشیا و سرورها به دست می آیند. جرمیابی دیجیتال به حل پرونده های پیچیده ای که بر مدارک دستگاه های دیجیتالی تکیه دارند کمک می کند.
این حوزه کاری زیر مجموعه امنیت سایبری می باشد و به فرد متخصصی که در این حوزه کار میکند متخصص جرمیابی دیجیتال و واکنش به حوادث گفته میشود.
(به انگلیسی Digital Forensics and Incident Response (DFIR))
نام توزیع |
کشور سازنده |
نوع پروانه |
معماری |
تاریخ بروزرسانی |
وبسایت |
Kali (BackTrack) |
سوئیس |
رایگان/تجاری Opensource/Binary |
i686, x64 |
2021 |
|
BlackArch |
آمریکا |
رایگان Opensource/Binary |
x64 |
2021 |
|
Grml |
استرالیا |
رایگان Opensource |
i686, x64 |
2021 |
|
Parrot OS |
ایتالیا |
رایگان Opensource/Binary |
x64 |
2021 |
|
Pentoo |
سوئیس |
رایگان Opensource |
i686, x64 |
2020 |
|
CAINE |
ایتالیا |
رایگان Opensource |
x64 |
2021 |
|
نام توزیع |
کشور سازنده |
نوع پروانه |
معماری |
تاریخ بروزرسانی |
وبسایت |
ForLEx |
ایتالیا |
رایگان Opensource |
x86 |
2019-10 |
|
PALADIN |
آمریکا |
تجاری Opensource/Binary |
x86, x64 |
? |
|
DEFT Linux |
ایتالیا |
رایگان |
i686 |
2018-09 |
|
BackBox Linux |
ایتالیا |
رایگان Opensource/Binary |
x86, x64 |
2020 |
|
ALT Linux |
روسیه |
رایگان Opensource/Binary |
i586, x64 |
2021 |
|
radare2 |
? |
رایگان Opensource |
x86 |
2021 |
|
ArchStrike |
آمریکا |
رایگان Opensource |
i686, x64 |
2021 |
|
Santoku |
? |
رایگان Opensource |
x64 |
2014 |
|
نام توزیع |
کشور سازنده |
نوع پروانه |
معماری |
تاریخ بروزرسانی |
وبسایت |
Bugtraq |
اسپانیا |
رایگان |
x86, x64 |
2013 |
|
URIX OS |
بلغارستان |
رایگان |
x64 |
2016-01 |
|
SIFT |
؟ |
؟ |
x64 |
2019 |
|
Cyborg Linux |
هند |
رایگان Opensource |
x86 |
2015 |
|
Security Onion |
آمریکا |
رایگان Opensource/Binary |
x86 |
2021 |
|
ADIA |
? |
رایگان Opensource |
x64 |
2017 |
|
NST |
آمریکا |
رایگان Opensource |
x64 |
2021 |
|
Tsurugi Linux |
Japan |
رایگان Opensource |
x64 |
2021 |
دسترسی به 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 و جدیدتر در دسترسه.
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
.