#خفن #باحال
#c
https://github.com/h0mbre/Learning-C
اینم مخزن باحالی بود یه نگاه بهش انداختم خیلی چیزای پیشرفته ای رو شامل میشه. منطقا یه پیشوندیشو بلد هستیم ولی نه بیشتر!
من که خودم توی برنامم گذاشتمش یه نگاه دقیقتر بهش بندازم.
#c
https://github.com/h0mbre/Learning-C
اینم مخزن باحالی بود یه نگاه بهش انداختم خیلی چیزای پیشرفته ای رو شامل میشه. منطقا یه پیشوندیشو بلد هستیم ولی نه بیشتر!
من که خودم توی برنامم گذاشتمش یه نگاه دقیقتر بهش بندازم.
GitHub
GitHub - h0mbre/Learning-C: A series of mini-projects used to learn C for beginners
A series of mini-projects used to learn C for beginners - h0mbre/Learning-C
🔥9🍌1
نمیدانم
#meme #file_system #ext2 یک پوشه معمولی در لینوکس
شاید سوالتون باشه چرا
جوابش هم اینه که من ls رو با lsd الیاس کردم و lsd پوشه . و .. رو حالت خاص در نظر میگیره و بقیشونو با این که وجود دارن نشون نمیداد 😂
/bin/ls زدم و خود ls چش بودجوابش هم اینه که من ls رو با lsd الیاس کردم و lsd پوشه . و .. رو حالت خاص در نظر میگیره و بقیشونو با این که وجود دارن نشون نمیداد 😂
😁5🔥1
#file_system #ext2
حالا سوال بعدی که به وجود میاد اینه که اصن این چطوری ممکنه 😂
جوابش اینطوریه :
توی خانواده فایل سیستم های ext مثل ext2 و ext3 و ext4 نام فایل ها توی پوشه ها نگهداری میشن (فکر کنم توی اکثر فایل سیستم های ادمیزادی همینطوری باشه). حالا اگه شما بیاید برید محتوی که اون پوشه رو توصیف میکنه عوض کنید میتونید از این کارای عجیب بکنید 😂
حالا سوال بعدی که به وجود میاد اینه که اصن این چطوری ممکنه 😂
جوابش اینطوریه :
توی خانواده فایل سیستم های ext مثل ext2 و ext3 و ext4 نام فایل ها توی پوشه ها نگهداری میشن (فکر کنم توی اکثر فایل سیستم های ادمیزادی همینطوری باشه). حالا اگه شما بیاید برید محتوی که اون پوشه رو توصیف میکنه عوض کنید میتونید از این کارای عجیب بکنید 😂
🔥4❤1👀1
نمیدانم
#file_system #ext2 حالا سوال بعدی که به وجود میاد اینه که اصن این چطوری ممکنه 😂 جوابش اینطوریه : توی خانواده فایل سیستم های ext مثل ext2 و ext3 و ext4 نام فایل ها توی پوشه ها نگهداری میشن (فکر کنم توی اکثر فایل سیستم های ادمیزادی همینطوری باشه). حالا اگه…
#file_system #ext2
حالا بریم کامندشو بگم. شمام بتونید اوتیسم خودتونو به اشتراک بذارید 😂
برای این کار ما میخوایم دسترسی خام داشته باشیم که محتوی یه دایرکتوری رو بنویسیم که لینوکس در حالت عادی به ما اجازشو نمیده برای همین ما یه fs.img درست میکنیم که فایل سیستمشو خودمون دستی مدیریت کنیم. به علت سادگی و اشنایی هم ext2 در نظر میگیرم فایل سیستمشو.
حالا برای اصلاح (اوباش) خودمون کد سی زیرو میزنیم :
حالا بریم کامندشو بگم. شمام بتونید اوتیسم خودتونو به اشتراک بذارید 😂
برای این کار ما میخوایم دسترسی خام داشته باشیم که محتوی یه دایرکتوری رو بنویسیم که لینوکس در حالت عادی به ما اجازشو نمیده برای همین ما یه fs.img درست میکنیم که فایل سیستمشو خودمون دستی مدیریت کنیم. به علت سادگی و اشنایی هم ext2 در نظر میگیرم فایل سیستمشو.
truncate -s 2M fs.img
mkfs.ext2 fs.img
mkdir ./tmpdir
sudo mount -o loop fs.img ./tmpdir/
sudo touch ./tmpdir/a # add your desired number of files
sudo umount ./tmpdir
حالا برای اصلاح (اوباش) خودمون کد سی زیرو میزنیم :
#include <cstdint>
#include <fcntl.h>
#include <linux/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define EXT2_NDIR_BLOCKS 12
#define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS
#define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1)
#define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1)
#define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1)
struct ext2_inode {
__le16 i_mode; /* File mode */
__le16 i_uid; /* Low 16 bits of Owner Uid */
__le32 i_size; /* Size in bytes */
__le32 i_atime; /* Access time */
__le32 i_ctime; /* Creation time */
__le32 i_mtime; /* Modification time */
__le32 i_dtime; /* Deletion Time */
__le16 i_gid; /* Low 16 bits of Group Id */
__le16 i_links_count; /* Links count */
__le32 i_blocks; /* Blocks count */
__le32 i_flags; /* File flags */
union {
struct {
__le32 l_i_reserved1;
} linux1;
struct {
__le32 h_i_translator;
} hurd1;
struct {
__le32 m_i_reserved1;
} masix1;
} osd1; /* OS dependent 1 */
__le32 i_block[EXT2_N_BLOCKS]; /* Pointers to blocks */
__le32 i_generation; /* File version (for NFS) */
__le32 i_file_acl; /* File ACL */
__le32 i_dir_acl; /* Directory ACL */
__le32 i_faddr; /* Fragment address */
union {
struct {
__u8 l_i_frag; /* Fragment number */
__u8 l_i_fsize; /* Fragment size */
__u16 i_pad1;
__le16 l_i_uid_high; /* these 2 fields */
__le16 l_i_gid_high; /* were reserved2[0] */
__u32 l_i_reserved2;
} linux2;
struct {
__u8 h_i_frag; /* Fragment number */
__u8 h_i_fsize; /* Fragment size */
__le16 h_i_mode_high;
__le16 h_i_uid_high;
__le16 h_i_gid_high;
__le32 h_i_author;
} hurd2;
struct {
__u8 m_i_frag; /* Fragment number */
__u8 m_i_fsize; /* Fragment size */
__u16 m_pad1;
__u32 m_i_reserved2[2];
} masix2;
} osd2; /* OS dependent 2 */
};
struct ext2_dirent {
__u32 inode;
__u16 rlen;
__u8 nlen;
__u8 ttype;
};
int main(int argc, char *argv[]) {
FILE *fs = fopen("fs.img", "r+");
#define ROOT_INODE_BLK 12
#define BSIZE 1024
#define ROOT_INODE_IDX 2
#define INODE_SIZE 256
#define BPTR(id) ((id) * BSIZE)
#define INODE_PTR(id) (BPTR(ROOT_INODE_BLK) + (id) * INODE_SIZE)
// #define
// printf("x %lu\n", sizeof(struct ext2_inode));
//
struct ext2_inode nd;
fseek(fs, INODE_PTR(1), SEEK_SET);
fread(&nd, sizeof(nd), 1, fs);
__u8 dat[BSIZE];
__u32 blkptr = BPTR(nd.i_block[0]);
fseek(fs, blkptr, SEEK_SET);
fread(dat, sizeof(dat), 1, fs);
// printf("%x\n", nd.i_mode);
__u8 *ptr = dat;
struct ext2_dirent dirent;
int i = 0;
do {
memcpy(&dirent, ptr, sizeof(dirent));
if (i++ > 0) {
dirent.nlen = 1;
memcpy(ptr, &dirent, sizeof(dirent));
memcpy(ptr + sizeof(dirent), "..", 1);
}
printf("%u %u %u %u %.*s\n", dirent.inode, dirent.rlen, dirent.nlen,
dirent.ttype, dirent.nlen, (char *)(ptr + sizeof(dirent)));
ptr += dirent.rlen;
} while (ptr < dat + BSIZE);
fseek(fs, blkptr, SEEK_SET);
fwrite(dat, sizeof(dat), 1, fs);
}
🔥7
نمیدانم
#file_system #ext2 حالا سوال بعدی که به وجود میاد اینه که اصن این چطوری ممکنه 😂 جوابش اینطوریه : توی خانواده فایل سیستم های ext مثل ext2 و ext3 و ext4 نام فایل ها توی پوشه ها نگهداری میشن (فکر کنم توی اکثر فایل سیستم های ادمیزادی همینطوری باشه). حالا اگه…
این کد میاد پوشه / رو میگیره تمام بچه هاشو "." میکنه.
حالا کافیه کامپایل کنیم و اجرا کنیم :
حالا کافیه کامپایل کنیم و اجرا کنیم :
g++ wtf.c && ./a.out
sudo mount -o loop fs.img ./tmpdir/
/bin/ls ./tmpdir
🔥3
#ssd #tech
قابل توجه دوستان عزیزو و فنیم یه چیزایی رو توضیح بدم بهتون جالبه.
حافظه های ssd طبق نرخ تحملشون قیمتگذاری میشن و عملا بعد یه مدتی خورده میشه خونه های حافظشون! (حالا توی درس معماری دکتر اسدی یه سر کوچیکی میزنید به این داستان) . ssd ها بر مبنای تعداد بیت نگهداری شده در هر خونه شون دسته بندی میشن.
SLC : Single Layer Cell
DLC : Double Layer Cell
TLC : Triple Layer Cell
QLC : Quad Level Cell
این ها انواع این نوع حافظه ها هستن که به ترتیب از اولی تا پایینی اینشکلیه که ۱ بیت به ازای هر خونه، دو بیت، سه بیت و چهار بیت داده رو توی هر خونش نگهداری میکنه. با توجه به همین مساله از بالا به پایین ارزونتر و با توجه به مداراتش و نرخ نویز افزوده برای تمایز بیت ها، از پایین به بالا کارایی و سرعت بالا و دوام خونه ها افزایش پیدا میکنه (این افزایش ها گاها نمودار های نمایی داره).
حافظه های عادی که دست من و شماست معمولا اینطوریه که خوباش از نوع TLC و معمولیاش QLC هستن.
قابل توجه دوستان عزیزو و فنیم یه چیزایی رو توضیح بدم بهتون جالبه.
حافظه های ssd طبق نرخ تحملشون قیمتگذاری میشن و عملا بعد یه مدتی خورده میشه خونه های حافظشون! (حالا توی درس معماری دکتر اسدی یه سر کوچیکی میزنید به این داستان) . ssd ها بر مبنای تعداد بیت نگهداری شده در هر خونه شون دسته بندی میشن.
SLC : Single Layer Cell
DLC : Double Layer Cell
TLC : Triple Layer Cell
QLC : Quad Level Cell
این ها انواع این نوع حافظه ها هستن که به ترتیب از اولی تا پایینی اینشکلیه که ۱ بیت به ازای هر خونه، دو بیت، سه بیت و چهار بیت داده رو توی هر خونش نگهداری میکنه. با توجه به همین مساله از بالا به پایین ارزونتر و با توجه به مداراتش و نرخ نویز افزوده برای تمایز بیت ها، از پایین به بالا کارایی و سرعت بالا و دوام خونه ها افزایش پیدا میکنه (این افزایش ها گاها نمودار های نمایی داره).
حافظه های عادی که دست من و شماست معمولا اینطوریه که خوباش از نوع TLC و معمولیاش QLC هستن.
👍5👏1
نمیدانم
#ssd #tech قابل توجه دوستان عزیزو و فنیم یه چیزایی رو توضیح بدم بهتون جالبه. حافظه های ssd طبق نرخ تحملشون قیمتگذاری میشن و عملا بعد یه مدتی خورده میشه خونه های حافظشون! (حالا توی درس معماری دکتر اسدی یه سر کوچیکی میزنید به این داستان) . ssd ها بر مبنای تعداد…
#ssd #tech
حالا برای این که همه این مطالبو جمع کنم. کلا اینطوریه که کارخونه ها برای این که دوام حافظشونو با یه عدد بتونن بیان کنن میان میگن به این حافظه کلا در مجموع چقد میتونی بنویسی و همونطوری که مشاهده میکنید، من در طی ۵ سالی که این لپتاپ رو دارم تقریبا ۳۷ ترابایت بهش نوشتم (احتمالا ۲ ۳ ترابایتش به خاطر OS و چند هسته ای باشه :))) )
و همینطور این خونه ها وقتی خراب میشن، خود حافظه یه سری خونه رو دست نخورده نگهمیداره تا موقعی که یه خونه خراب میشه ازش استفاده بکنه.
اون ۱۰ درصد و ۷ درصد که اون بالا میبینید هم نشون دهنده همین مسالست و خب نکته اینجاست که وقتی این درصده از ۱ و ۲ رد میشه میره بالا کارایی ssd تون هم شروع به افت شدید میکنه!
حالا برای این که همه این مطالبو جمع کنم. کلا اینطوریه که کارخونه ها برای این که دوام حافظشونو با یه عدد بتونن بیان کنن میان میگن به این حافظه کلا در مجموع چقد میتونی بنویسی و همونطوری که مشاهده میکنید، من در طی ۵ سالی که این لپتاپ رو دارم تقریبا ۳۷ ترابایت بهش نوشتم (احتمالا ۲ ۳ ترابایتش به خاطر OS و چند هسته ای باشه :))) )
و همینطور این خونه ها وقتی خراب میشن، خود حافظه یه سری خونه رو دست نخورده نگهمیداره تا موقعی که یه خونه خراب میشه ازش استفاده بکنه.
اون ۱۰ درصد و ۷ درصد که اون بالا میبینید هم نشون دهنده همین مسالست و خب نکته اینجاست که وقتی این درصده از ۱ و ۲ رد میشه میره بالا کارایی ssd تون هم شروع به افت شدید میکنه!
👍1👏1
#arch #archlinux #daily_drive
خب بریم برای نصب آرچ
به نظرم وقت مناسبیه که ستاپ کامل ارچمو توضیح بدم.
اول از همه چی که خب اینترنت میخوایم که یه
بعدش میریم فایل
کافیه کامنت رو از خط های
خب بریم برای نصب آرچ
به نظرم وقت مناسبیه که ستاپ کامل ارچمو توضیح بدم.
اول از همه چی که خب اینترنت میخوایم که یه
iwctl میزنیم و وصل میشیمبعدش میریم فایل
/etc/pacman.conf رو اصلاح میکنیم : کافیه کامنت رو از خط های
Color و ParallelDownloads بردارید و دانلود موازی رو به اندازه دلخواهتون وابسته به تعداد هسته های پردازندتون (که با استفاده از lscpu میتونید کل اطلاعات پردازندتون از جمله همین موضوع رو ببینید) بذارید به عنوان مثال من 8 میذارمش.❤🔥1
#arch #archlinux #daily_drive
حالا وقت
اینجا میایم mirror رو میذاریم ایران.
disk config رو میایم
یه پارتیشن حدودا ۵۰۰ مگی /boot درست میکنیم و بقیشو میدیم به /
Bootloader رو میذاریم grub
Hostname و User account
رو تعیین میکنیم
Profile رو میذاریم روی
Kde
و اگه کارت گرافیک انویدیا دارید همینجا درایورشو مشخص کنید nvidia proprietary
Audio رو میذاریم pipewire
Network رو میذاریم network manager
Additional رو میتونید هرچی که خواستید بذارید ولی توصیه من اینه که firefox و neovim رو داشته باشید
Optional repo رو هم بذادید multilib
Timezone هم که تهران
و در نهایت نصب میکنیم
حالا وقت
archinstall عه که خب نصاب tui ارچه و جدیدا یه بهبود هایی هم داشته نسبت به قدیم رابط کاربریش.اینجا میایم mirror رو میذاریم ایران.
disk config رو میایم
یه پارتیشن حدودا ۵۰۰ مگی /boot درست میکنیم و بقیشو میدیم به /
Bootloader رو میذاریم grub
Hostname و User account
رو تعیین میکنیم
Profile رو میذاریم روی
Kde
و اگه کارت گرافیک انویدیا دارید همینجا درایورشو مشخص کنید nvidia proprietary
Audio رو میذاریم pipewire
Network رو میذاریم network manager
Additional رو میتونید هرچی که خواستید بذارید ولی توصیه من اینه که firefox و neovim رو داشته باشید
Optional repo رو هم بذادید multilib
Timezone هم که تهران
و در نهایت نصب میکنیم
🥰2👎1
نمیدانم
#arch #archlinux #daily_drive خب بریم برای نصب آرچ به نظرم وقت مناسبیه که ستاپ کامل ارچمو توضیح بدم. اول از همه چی که خب اینترنت میخوایم که یه iwctl میزنیم و وصل میشیم بعدش میریم فایل /etc/pacman.conf رو اصلاح میکنیم : کافیه کامنت رو از خط های Color و P…
از پشت صحنه (پارسا پردلی) میگن که پرچم ILoveCandy رو هم فعال کنید :)
❤1
نمیدانم
#arch #archlinux #daily_drive حالا وقت archinstall عه که خب نصاب tui ارچه و جدیدا یه بهبود هایی هم داشته نسبت به قدیم رابط کاربریش. اینجا میایم mirror رو میذاریم ایران. disk config رو میایم یه پارتیشن حدودا ۵۰۰ مگی /boot درست میکنیم و بقیشو میدیم به / Bootloader…
#arch #archlinux #daily_drive
خب برگردیم به ادامه این داستان :)
حالا که ارچ و kde اومدن بالا
شلمون fish https://news.1rj.ru/str/dontknowlinux/5 و starship https://news.1rj.ru/str/dontknowlinux/12
و پارو https://news.1rj.ru/str/dontknowlinux/10 (برای aur)
همچنین ابزار های
البته من از یه سری mirror های غیر رسمی هم تحت عنوان alhp برای بیلد های مطابق نسخه x86 پردازندم استفاده میکنم ولی خب خیلی توصیه بهتون نمیکنم این سمتی بیاید چون بعضی وقتا پکیجا با همدیگه نمیخونن و این داستانا
همچنین فونت های فارسی رو هم با توجه به اینجا اوکی میکنیم https://news.1rj.ru/str/dontknowlinux/11 البته توی تنظیمات kde هم فک کنم باید اصلاح بشه
علاوه بر این داستانا من برای اوکی کردن قابلیت های لپتاپم
برای vscode من از پکیج های
از
همینطور اخیرا با استفاده از
برای مانیتور کردن سیستم هم از
خب برگردیم به ادامه این داستان :)
حالا که ارچ و kde اومدن بالا
شلمون fish https://news.1rj.ru/str/dontknowlinux/5 و starship https://news.1rj.ru/str/dontknowlinux/12
و پارو https://news.1rj.ru/str/dontknowlinux/10 (برای aur)
همچنین ابزار های
less fzf bat zoxide رو میریزیمالبته من از یه سری mirror های غیر رسمی هم تحت عنوان alhp برای بیلد های مطابق نسخه x86 پردازندم استفاده میکنم ولی خب خیلی توصیه بهتون نمیکنم این سمتی بیاید چون بعضی وقتا پکیجا با همدیگه نمیخونن و این داستانا
همچنین فونت های فارسی رو هم با توجه به اینجا اوکی میکنیم https://news.1rj.ru/str/dontknowlinux/11 البته توی تنظیمات kde هم فک کنم باید اصلاح بشه
علاوه بر این داستانا من برای اوکی کردن قابلیت های لپتاپم
rog-control-center رو از paru نصب میکنم که قابلیت هایی مثل کنترل باتری و این چیزای لپتاپم رو هندل کنه. اگه asus ه لپتاپتون که همینو بریزید. اگه نیست احتمالا یا خودش اوکی باشه یا یه بنده خدایی یه ابزار دیگه ای زده براش.برای vscode من از پکیج های
code و code-marketplace و code-features به جای vscode استفاده میکنم. اولی نسخه اوپن سورسه وسکده برای همین ممکنه یه سری قابلیت خاص مرتبط با مایکروسافت رو نداشته باشه که این مشکلات رو دوتا پکیج بعدی حل میکنن.از
imfile به عنوان دانلود منیجرم استفاده میکنم که حقیقتا قوی ترین دانلود منیجر ممکنه و اکثر فرمت هارو پوشش میده و مثل IDM روی ویندوز میاد یه دانلود رو به چندین تیکه میشکونه و هرکدوم رو موازی دانلود میکنه. البته این در واقع کار backendش هست که اون aria2 هست که تحت ترمینال کار میکنه و این imfile یک gui روی اونه.همینطور اخیرا با استفاده از
webapp-manager اومدم از deepseek و این پیامرسانای داخلی وب اپ درست کردم که دسترسیش راحت تر بشه.برای مانیتور کردن سیستم هم از
btop و nvtop(برای gpu) استفاده میکنم.Telegram
نمیدانم
# install fish e.g. sudo apt install fish | sudo pacman -S fish
chsh # then select /bin/fish as your shell
همین! حالا شما تقریبا هرچی میخواستید رو دارید.
یه سری ابزار دیگه که من رو هر شلی سوار میکنم رو اوردم توش
برای تنظیم کردن fish باید برید فایل
~/.con…
chsh # then select /bin/fish as your shell
همین! حالا شما تقریبا هرچی میخواستید رو دارید.
یه سری ابزار دیگه که من رو هر شلی سوار میکنم رو اوردم توش
برای تنظیم کردن fish باید برید فایل
~/.con…
❤🔥1
نمیدانم
#arch #archlinux #daily_drive خب برگردیم به ادامه این داستان :) حالا که ارچ و kde اومدن بالا شلمون fish https://news.1rj.ru/str/dontknowlinux/5 و starship https://news.1rj.ru/str/dontknowlinux/12 و پارو https://news.1rj.ru/str/dontknowlinux/10 (برای aur) همچنین ابزار های less fzf bat zoxide…
#arch #archlinux #daily_drive #hyprland
در نهایت ui اصلی که درش زندگی میکنم رو بهتون معرفی میکنم.
اسمش hyprland عه و خب نکته اینجاست که هایپرلند در حالت عادی صرفا بهتون یه اصطلاحا tiling window manager میده و صرفا پنجره هاتون رو مدیریت میکنه. برای همین ما فقط به همین بسنده نمیکنیم و یه "اجرا کننده برنامه" و "نوار بالایی" هم میریزیم.
https://hyprland.org/
نوار بالایی مون اسمش هست
البته یه نکته هم که هست اینه که خود هایپر لند کلی ماژول های مختلف داره برای همین برای ریختنش صرفا به
رو میریزیم.
(البته من خودم نسخه گیتشونو ریختم)
در نهایت ui اصلی که درش زندگی میکنم رو بهتون معرفی میکنم.
اسمش hyprland عه و خب نکته اینجاست که هایپرلند در حالت عادی صرفا بهتون یه اصطلاحا tiling window manager میده و صرفا پنجره هاتون رو مدیریت میکنه. برای همین ما فقط به همین بسنده نمیکنیم و یه "اجرا کننده برنامه" و "نوار بالایی" هم میریزیم.
https://hyprland.org/
نوار بالایی مون اسمش هست
waybar و اجرا کننده برنامه مون اسمش هست wofi.البته یه نکته هم که هست اینه که خود هایپر لند کلی ماژول های مختلف داره برای همین برای ریختنش صرفا به
paru -S hyprland بسنده نمیکنیم و ابزار های hypridle : فرایند هایی مانند قفل کردن خودکار رو هندل میکنهhyprpaper : تصویر پس زمینهhyprlock : صفحه قفلgrimblast و hyprpicker : گرفت عکس از صفحهرو میریزیم.
(البته من خودم نسخه گیتشونو ریختم)
hypr.land
Hyprland: Dynamic tiling window compositor with the looks
Hyprland - Dynamic tiling Wayland compositor with the looks.
👎1
نمیدانم
#arch #archlinux #daily_drive #hyprland در نهایت ui اصلی که درش زندگی میکنم رو بهتون معرفی میکنم. اسمش hyprland عه و خب نکته اینجاست که هایپرلند در حالت عادی صرفا بهتون یه اصطلاحا tiling window manager میده و صرفا پنجره هاتون رو مدیریت میکنه. برای همین ما…
اینم فایل های تنظیمات خودمن که کافیه توی
~/.config
استخراجشون کنید
~/.config
استخراجشون کنید
🔥2