توی برنامه نویسی زیادی خسیس نباشید
اگه ذهنیتتون به سمتی بره که همیشه در حال محاسبه باشه چه حرکتی بزنم که حافظه کمتر و سرعت بیشتری داشته باشه توی باتلاق میفتید و قدرت ساختن یه سیستم بزرگ و انعطاف پذیر رو از دست میدید.
بعضی مواقع انقدری به سمت الگوریتم میریم که داریم به کلیت سیستم آسیب میزنیم مثلا قراره یه دیتایی ارسال کنیم بجای اینکه به این شکل ارسال کنیم
{"name":"linuxor","type":"channel"}
میایم یه صرفه جویی کثیف میکنیم
["linuxor",2]
ما اینجا توی حافظه صرفه جویی کردیم ولی هر جایی بخوایم از این دیتا استفاده کنیم باید بدونیم ایندکس صفرم name هست و ایندکس یکم type و عدد 2 هم برای type یعنی channel این یعنی نیاز به مستندات بیشتر.
درسته حافظه کمتری مصرف کردیم ولی قدرت خوانایی کد رو آوردیم پایین در واقع با بهتر کردن یه بخش جزئی سیستم به کلیت سیستم آسیب زدیم، و اگه این کارو هی توی بخش های مختلف سیستم تکرار کنیم در نهایت به جایی میرسیم که دیگه صرفه نداره سیستم رو توسعه بدیم.
🐧 @Linuxor
اگه ذهنیتتون به سمتی بره که همیشه در حال محاسبه باشه چه حرکتی بزنم که حافظه کمتر و سرعت بیشتری داشته باشه توی باتلاق میفتید و قدرت ساختن یه سیستم بزرگ و انعطاف پذیر رو از دست میدید.
بعضی مواقع انقدری به سمت الگوریتم میریم که داریم به کلیت سیستم آسیب میزنیم مثلا قراره یه دیتایی ارسال کنیم بجای اینکه به این شکل ارسال کنیم
{"name":"linuxor","type":"channel"}
میایم یه صرفه جویی کثیف میکنیم
["linuxor",2]
ما اینجا توی حافظه صرفه جویی کردیم ولی هر جایی بخوایم از این دیتا استفاده کنیم باید بدونیم ایندکس صفرم name هست و ایندکس یکم type و عدد 2 هم برای type یعنی channel این یعنی نیاز به مستندات بیشتر.
درسته حافظه کمتری مصرف کردیم ولی قدرت خوانایی کد رو آوردیم پایین در واقع با بهتر کردن یه بخش جزئی سیستم به کلیت سیستم آسیب زدیم، و اگه این کارو هی توی بخش های مختلف سیستم تکرار کنیم در نهایت به جایی میرسیم که دیگه صرفه نداره سیستم رو توسعه بدیم.
🐧 @Linuxor
👍154👎8🗿3🔥1
👍22🗿5❤1
یک بار برای همیشه فرق Emulator و Simulator رو یاد بگیر
ایمولیتور "دقیقا" اون سیستم رو شبیه سازی میکنه مثل VirtualBox یا شبیه سازی بازی های کنسول.
اما سیمولیتور "تقریبی" اون سیستم رو شبیه سازی میکنه، مثلا شبیه ساز های مدار الکتریکی، یا شبیه ساز پرواز هواپیما
توی شبیه ساز VirtualBox شما دقیقا دارید یه سیستم عامل رو شبیه سازی میکنید یعنی اگه یه عملی توی شبیه ساز انجام بدید دقیقا توی واقعیت هم همون عمل انجام میشه. اما توی شبیه ساز مدار الکتریکی به صورت ریاضی این عمل انجام میشه و تا حد ممکن توی واقعیت هم همین رفتار رو داره ولی ممکنه رفتارش متفاوت باشه.
🐧 @Linuxor
ایمولیتور "دقیقا" اون سیستم رو شبیه سازی میکنه مثل VirtualBox یا شبیه سازی بازی های کنسول.
اما سیمولیتور "تقریبی" اون سیستم رو شبیه سازی میکنه، مثلا شبیه ساز های مدار الکتریکی، یا شبیه ساز پرواز هواپیما
توی شبیه ساز VirtualBox شما دقیقا دارید یه سیستم عامل رو شبیه سازی میکنید یعنی اگه یه عملی توی شبیه ساز انجام بدید دقیقا توی واقعیت هم همون عمل انجام میشه. اما توی شبیه ساز مدار الکتریکی به صورت ریاضی این عمل انجام میشه و تا حد ممکن توی واقعیت هم همین رفتار رو داره ولی ممکنه رفتارش متفاوت باشه.
🐧 @Linuxor
1👍102❤5👎3
با سایت زیر میتونید به کمک هوش مصنوعی GPT تست نفوذ کنید :
pentestgpt.ai
مثلا میتونید بهش بگید
find nic.ir subdomains
میره واستون با پلاگین هایی که داره سابدامین هارو اسکن میکنه و میده.
🐧 @Linuxor
pentestgpt.ai
مثلا میتونید بهش بگید
find nic.ir subdomains
میره واستون با پلاگین هایی که داره سابدامین هارو اسکن میکنه و میده.
🐧 @Linuxor
👍64🤣15🔥5🗿4
کن تامسون خالق یونیکس یه جا گفته بود ما توی سیستم های توزیع شده وقتی به مشکلی توی سخت افزار میخوردیم به کد های لینوکس نگاه میکردیم چون اونا همیشه از ما جلو تر بودن و منابع زیادی برای مقابله با سخت افزار داشتن.
Ken Thompson; cited in Seibel, Peter (2009). Coders At Work. p. 479.
🐧 @Linuxor
Ken Thompson; cited in Seibel, Peter (2009). Coders At Work. p. 479.
🐧 @Linuxor
1🔥112👍13🗿6🥴2🍓1
با ابزار hotspot میتونید پرفورمنس پراسس هارو آنالیز کنید.
من اینجا اومدم یه برنامه ساده رو بهش دادم که اجراش کنه و آنالیزش کنه
آنالیز بالا نشون میده که ابزار dd فقط از یه هسته سی پیو استفاده کرده.
همچنین حدود 8 درصد سیکل های سیپیو برای دسترسی به مموری fault شده یعنی سی پیو تلاش کرده صفحه ای رو از مموری بخونه که توی physical memory نبوده.
و حدود 10 درصد از سیکل های خودشو صرف strcmp کرده یعنی احتمالا توی برنامه dd یه جایی توی حلقه ای دوتا استرینگ دارن باهم مقایسه میشن. (میتونید برنامه هایی که خودتون نوشتید رو آنالیز کنید و علت کندیش رو پیدا کنید)
ابزار hotspot نسخه گرافیکی perf هست که اختصاصی برای کرنل لینوکس نوشته شده.
گیتهابش :
https://github.com/KDAB/hotspot
🐧 @Linuxor
من اینجا اومدم یه برنامه ساده رو بهش دادم که اجراش کنه و آنالیزش کنه
dd if=/dev/zero of=/dev/null count=1 bs=10MiB
آنالیز بالا نشون میده که ابزار dd فقط از یه هسته سی پیو استفاده کرده.
همچنین حدود 8 درصد سیکل های سیپیو برای دسترسی به مموری fault شده یعنی سی پیو تلاش کرده صفحه ای رو از مموری بخونه که توی physical memory نبوده.
و حدود 10 درصد از سیکل های خودشو صرف strcmp کرده یعنی احتمالا توی برنامه dd یه جایی توی حلقه ای دوتا استرینگ دارن باهم مقایسه میشن. (میتونید برنامه هایی که خودتون نوشتید رو آنالیز کنید و علت کندیش رو پیدا کنید)
ابزار hotspot نسخه گرافیکی perf هست که اختصاصی برای کرنل لینوکس نوشته شده.
گیتهابش :
https://github.com/KDAB/hotspot
🐧 @Linuxor
👍45🗿3🔥1🆒1
یه نفر اومده روی لپ تاپ فریمورک چند تا بازی رو بین ویندوز 11 و لینوکس فدورا 40 مقایسه کرده.
مقایسه روی میزان FPS بوده و نتایج مقایسه به اینصورت شده :
بازی Shadow of the Tomb Raider روی لینوکس نیتیو نسبت به ویندوز 7% فریم ریت بیشتری داشته.
بازی Total War: Warhammer III روی لینوکس نیتیو نسبت به ویندوز 2% فریم ریت کمتری داشته.
بازی Forza Horizon 5 روی لینوکس از طریق پروتون نسبت به ویندوز 7% فریم ریت کمتری داشته.
بازی Cyberpunk 2077 روی لینوکس از طریق پروتون نسبت به ویندوز 7% فریم ریت بیشتری داشته.
پروتون درواقع یه لایه سازگار کننده بازی ویندوز برای لینوکسه اینکه روی لینوکس Cyberpunk فریم ریت بهتری داشته عجیبه؛ البته مقایسه به عوامل محیطی زیادی وابستهس و نمیشه با این اعداد مقایسه دقیقی انجام داد، اما به صورت کلی میشه این مقایسه رو قبول کرد.
برای دیدن مقاله اینجا کلیک کنید.
🐧 @Linuxor
مقایسه روی میزان FPS بوده و نتایج مقایسه به اینصورت شده :
بازی Shadow of the Tomb Raider روی لینوکس نیتیو نسبت به ویندوز 7% فریم ریت بیشتری داشته.
بازی Total War: Warhammer III روی لینوکس نیتیو نسبت به ویندوز 2% فریم ریت کمتری داشته.
بازی Forza Horizon 5 روی لینوکس از طریق پروتون نسبت به ویندوز 7% فریم ریت کمتری داشته.
بازی Cyberpunk 2077 روی لینوکس از طریق پروتون نسبت به ویندوز 7% فریم ریت بیشتری داشته.
پروتون درواقع یه لایه سازگار کننده بازی ویندوز برای لینوکسه اینکه روی لینوکس Cyberpunk فریم ریت بهتری داشته عجیبه؛ البته مقایسه به عوامل محیطی زیادی وابستهس و نمیشه با این اعداد مقایسه دقیقی انجام داد، اما به صورت کلی میشه این مقایسه رو قبول کرد.
برای دیدن مقاله اینجا کلیک کنید.
🐧 @Linuxor
1👍60❤🔥3👀3🗿2👎1
آیا استارلینک صرفه اقتصادی برای ایران داره؟
یه سری افراد ناشناس توی تهران استارلینک رو تست کردن و سرعت حدودی 200Mbps گرفتن. اشتراک ماهیانه 50 دلاره که حدودی میشه 3 میلیون تومن
بیاین اقتصادی فکر کنیم فرض کنیم اکثر مردم ایران میخوان استفاده ساده از اینترنت داشته باشن مثلا شبکه های اجتماعی مثل اینستاگرام و تلگرام استفاده کنن، برای 50 نفر میتونیم سرعت 4 مگ رو داشته باشیم، ماهیانه برای هر نفر حدود 60 هزار تومن میشه با این تفاوت که اینترنتش نامحدوده و اینترنتش هیچ محدودیتی نداره.
اگه حجم زیادی استارلینک توی ایران باشه قیمتش حتی از اینترنت ایران هم به صرفه تر میشه.
🐧 @Linuxor
یه سری افراد ناشناس توی تهران استارلینک رو تست کردن و سرعت حدودی 200Mbps گرفتن. اشتراک ماهیانه 50 دلاره که حدودی میشه 3 میلیون تومن
بیاین اقتصادی فکر کنیم فرض کنیم اکثر مردم ایران میخوان استفاده ساده از اینترنت داشته باشن مثلا شبکه های اجتماعی مثل اینستاگرام و تلگرام استفاده کنن، برای 50 نفر میتونیم سرعت 4 مگ رو داشته باشیم، ماهیانه برای هر نفر حدود 60 هزار تومن میشه با این تفاوت که اینترنتش نامحدوده و اینترنتش هیچ محدودیتی نداره.
اگه حجم زیادی استارلینک توی ایران باشه قیمتش حتی از اینترنت ایران هم به صرفه تر میشه.
🐧 @Linuxor
👍186😁12👎5🗿2
این یه SD Card ساده نیست یه کامپیوتر که یه ماژول Wi-Fi داره و یه لینوکس کوچولو برای اشتراک گذاری دیتا ها از طریق Wi-Fi.
به این صورته که مثلا به دوربین عکاسیتون وصلش میکنید و اگه با دوربین عکس یا فیلم بگیرید توی این SD Card ذخیره میشه و اگه با گوشیتون به Wi-Fi ش وصل شید داخل مروگر گوشیتون روی یه Ip خاص که بهتون میده میتونید فایل های ایجاد شده داخل SD Card رو بی سیم دانلود و مدیریت کنید.
🐧 @Linuxor ~ photo : QVHankel
به این صورته که مثلا به دوربین عکاسیتون وصلش میکنید و اگه با دوربین عکس یا فیلم بگیرید توی این SD Card ذخیره میشه و اگه با گوشیتون به Wi-Fi ش وصل شید داخل مروگر گوشیتون روی یه Ip خاص که بهتون میده میتونید فایل های ایجاد شده داخل SD Card رو بی سیم دانلود و مدیریت کنید.
🐧 @Linuxor ~ photo : QVHankel
👍117🔥27🗿7❤🔥4💯2
اینارو بعدا قراره خیلی توی خونه ها ببینید.
بهشون میگن Mesh مِش، کارشون افزایش ناحیه تحت پوشش سیگنال Wi-Fi هست. مثلا اگه یه خونه با متراژ خیلی بزرگ دارید یه مودم اگه همه نقاط خونه رو آنتن نده، میتونید بجای تنها یک مودم اصلی، توی هر نقطه از خونه یه مش بزارید، مش ها بی سیم یا باسیم به هم دیگه وصل میشن و باعث میشن کل خونه Wi-Fi آنتن بده.
ایده مش توی دانشگاه ها و دفاتر خیلی استفاده میشه ولی برای استارلینک هم استفاده خواهد شد به این صورت که کافیه که روتر استارلینک روی پشت بوم باشه و هر طبقه یدونه از این دستگاه ها داشته باشه، حتی میشه باهاش ساختمون های اطراف هم از یه استارلینک مشترک استفاده کنن.
🐧 @Linuxor
بهشون میگن Mesh مِش، کارشون افزایش ناحیه تحت پوشش سیگنال Wi-Fi هست. مثلا اگه یه خونه با متراژ خیلی بزرگ دارید یه مودم اگه همه نقاط خونه رو آنتن نده، میتونید بجای تنها یک مودم اصلی، توی هر نقطه از خونه یه مش بزارید، مش ها بی سیم یا باسیم به هم دیگه وصل میشن و باعث میشن کل خونه Wi-Fi آنتن بده.
ایده مش توی دانشگاه ها و دفاتر خیلی استفاده میشه ولی برای استارلینک هم استفاده خواهد شد به این صورت که کافیه که روتر استارلینک روی پشت بوم باشه و هر طبقه یدونه از این دستگاه ها داشته باشه، حتی میشه باهاش ساختمون های اطراف هم از یه استارلینک مشترک استفاده کنن.
🐧 @Linuxor
👍110🔥6💊4🗿3
با دستور زیر میتونید کانفیگ کرنل فعلی در حال اجرا رو برای بیلد کردن کرنل بدست بیارید
zcat /proc/config.gz > .config
مثلا اگه یه دستگاه لینوکسی دیدید میتونید کرنل متناسب باهاشو با دستور زیر بیلد کنید
make oldconfig
این دستور کرنل متناسب با فایل config. که ساختید رو براتون بیلد میکنه.
یا مثلا کانفیگ کرنل گوشی اندرویدتون یا هر دستگاه لینوکسی دیگه رو بدست بیارید با ورژن جدید بیلدش کنید و بدون هیچ مشکلی کرنل رو آپدیت کنید.
🐧 @Linuxor
zcat /proc/config.gz > .config
مثلا اگه یه دستگاه لینوکسی دیدید میتونید کرنل متناسب باهاشو با دستور زیر بیلد کنید
make oldconfig
این دستور کرنل متناسب با فایل config. که ساختید رو براتون بیلد میکنه.
یا مثلا کانفیگ کرنل گوشی اندرویدتون یا هر دستگاه لینوکسی دیگه رو بدست بیارید با ورژن جدید بیلدش کنید و بدون هیچ مشکلی کرنل رو آپدیت کنید.
🐧 @Linuxor
👍42🗿4🔥1
یه ویدیو گیم چیتر اومده تجربیاتش از اسمبلی ARMv8 رو در قالب یه آموزش برای تازه کار ها نوشته
https://mariokartwii.com/armv8/
🐧 @Linuxor
https://mariokartwii.com/armv8/
🐧 @Linuxor
👍59🔥5🐳2🗿2
استادمون از روی یه اسلایدی درس میداد خیلی ظاهرش قدیمی میخورد من خیلی کنجکاو بودم که چند ساله داره اون اسلایدو درس میده
با exiftool رفتم Date رو grep کردم و دیدم بعله از سال 1998 داره اون اسلایدو درس میده حالا خدارو شکر سال 2011 یه ادیتی شده.
با exiftool میتونید exif فایل هارو ببینید کلی دیتا راجع به فایل بهتون میده مثلا میتونید ببینید یه عکس با چه گوشی و توی چه لوکیشنی گرفته شده.
🐧 @Linuxor
با exiftool رفتم Date رو grep کردم و دیدم بعله از سال 1998 داره اون اسلایدو درس میده حالا خدارو شکر سال 2011 یه ادیتی شده.
با exiftool میتونید exif فایل هارو ببینید کلی دیتا راجع به فایل بهتون میده مثلا میتونید ببینید یه عکس با چه گوشی و توی چه لوکیشنی گرفته شده.
🐧 @Linuxor
👍98🤣33🔥5🗿5😁2
دنبال این که کدوم زبان مطلقا بهتره هیچ وقت نرید، هیچ وقت هیچ زبانی نمیتونه توی همه ویژگی ها بهتر از زبان دیگه باشه و اون زبان بده هنوز وجود داشته باشه.
این قانون طبیعته، اگه چیزی بتونه توی همه ویژگی ها از یه چیز دیگه بهتر باشه اون چیز بده بلافاصله از بین میره.
مثلا یه ماشین جدید بنز توی همه ویژگی ها از پراید بهتره، میدونید چرا نتونسته جایگزین پراید بشه؟ چون توی قیمت از پراید شکست خورده.
ما قبل از اینکه این تعداد زبان برنامه نویسی رو داشته باشیم به تعداد 100 برابرش زبان داشتیم که منسوخ شدن و این زبان هایی که تونستن تا الان بقا پیدا کنن حداقل یه ویژگی مهم داشتن که باعث بقاشون شده، پس میتونید امیدوار باشید زبان درحال استفاده ای که دارید یاد میگیرید حداقل توی یه ویژگی حرفی برای گفتن داره و یادگیریش هیچ ضرری نداره.
🐧 @Linuxor
این قانون طبیعته، اگه چیزی بتونه توی همه ویژگی ها از یه چیز دیگه بهتر باشه اون چیز بده بلافاصله از بین میره.
مثلا یه ماشین جدید بنز توی همه ویژگی ها از پراید بهتره، میدونید چرا نتونسته جایگزین پراید بشه؟ چون توی قیمت از پراید شکست خورده.
ما قبل از اینکه این تعداد زبان برنامه نویسی رو داشته باشیم به تعداد 100 برابرش زبان داشتیم که منسوخ شدن و این زبان هایی که تونستن تا الان بقا پیدا کنن حداقل یه ویژگی مهم داشتن که باعث بقاشون شده، پس میتونید امیدوار باشید زبان درحال استفاده ای که دارید یاد میگیرید حداقل توی یه ویژگی حرفی برای گفتن داره و یادگیریش هیچ ضرری نداره.
🐧 @Linuxor
6👍133❤6🗿2
چند تا روش مصنوعی برای افزایش ذهنیت هکری که تا الان به صورت تجربی بدستشون آوردم
+ بمباران سوال : سعی کنید برای موضوعتون سوال طرح کنید. این کارو انقدر باید تکرار کنید که همیشه سوال های خوب به ذهنتون برسه و سوالای سطحی حذف بشه
+ نقض فرضیه ها : همه چیز ممکنه، سعی کنید فرضیه های مسئله رو به راحتی قبول نکنید. حتی در حد چند ثانیه بیشتر فکر کردن
+ از بازی روانی نترسید : قرار نیست یه سایت یا اپلیکیشن چون ui خوب و تعداد کاربر بالایی داره باگ نداشته باشه همه جا برای شما زمین بازیه حتی سایت Google.com
+ پلن برای فانه : استرس اینکه وقت و پول ندارم رو نداشته باشید، نگهبان بازی (مغزتون) بفهمه پول یا وقت ندارید خیلی بی رحمه اجازه نمیده خوب بازی کنید
+ سازنده باشید : فقط دنبال این نباشید که این سیستم رو هک کنم و اون سیستم رو هک کنم، خودتون سعی کنید یه سیستم بسازید، ناخودآگاه نقاط ضعف سیستم های بقیه رو پیدا میکنید
+ در نهایت شما نیاز به علم دارید : با ورودی اطلاعات ثابت به مغزتون به احتمال زیاد خروجی تکراری میده باید ورودی های مغزتون رو بالا ببرید تا بتونید خروجی های غیر تکراری تری تولید کنید
🐧 @Linuxor
+ بمباران سوال : سعی کنید برای موضوعتون سوال طرح کنید. این کارو انقدر باید تکرار کنید که همیشه سوال های خوب به ذهنتون برسه و سوالای سطحی حذف بشه
+ نقض فرضیه ها : همه چیز ممکنه، سعی کنید فرضیه های مسئله رو به راحتی قبول نکنید. حتی در حد چند ثانیه بیشتر فکر کردن
+ از بازی روانی نترسید : قرار نیست یه سایت یا اپلیکیشن چون ui خوب و تعداد کاربر بالایی داره باگ نداشته باشه همه جا برای شما زمین بازیه حتی سایت Google.com
+ پلن برای فانه : استرس اینکه وقت و پول ندارم رو نداشته باشید، نگهبان بازی (مغزتون) بفهمه پول یا وقت ندارید خیلی بی رحمه اجازه نمیده خوب بازی کنید
+ سازنده باشید : فقط دنبال این نباشید که این سیستم رو هک کنم و اون سیستم رو هک کنم، خودتون سعی کنید یه سیستم بسازید، ناخودآگاه نقاط ضعف سیستم های بقیه رو پیدا میکنید
+ در نهایت شما نیاز به علم دارید : با ورودی اطلاعات ثابت به مغزتون به احتمال زیاد خروجی تکراری میده باید ورودی های مغزتون رو بالا ببرید تا بتونید خروجی های غیر تکراری تری تولید کنید
🐧 @Linuxor
👍86🔥13🤣3🗿2💘2
توضیح :
به برنامه های اجرایی ELF گفته میشه در واقع مخفف Executable and Linkable Format هستش.
توی لینوکس میتونید با دستور زیر ببینید یه برنامه اجرایی به چه لایبری هایی لینک شده
lddtree /bin/ls
که تقریبا اکثر برنامه های اجرایی از لایبری libc استفاده میکنن این لایبری در واقع قلب تپنده برنامه های نوشته شده با زبان c هستش حتی ممکنه برنامه ای با زبان c نوشته نشده باشه اما از libc استفاده کنه.
🐧 @Linuxor
به برنامه های اجرایی ELF گفته میشه در واقع مخفف Executable and Linkable Format هستش.
توی لینوکس میتونید با دستور زیر ببینید یه برنامه اجرایی به چه لایبری هایی لینک شده
lddtree /bin/ls
که تقریبا اکثر برنامه های اجرایی از لایبری libc استفاده میکنن این لایبری در واقع قلب تپنده برنامه های نوشته شده با زبان c هستش حتی ممکنه برنامه ای با زبان c نوشته نشده باشه اما از libc استفاده کنه.
🐧 @Linuxor
❤48👍13🗿2