اگه از NearbyShare و QuickShare توی اندروید استفاده میکنید این شخص اومده ورژن لینوکس و مکش رو درست کرده برای جابجایی سریع فایل ها با گوشی اندرویدتون ابزار خیلی خوبیه.
http://github.com/Martichou/rquickshare
🐧 @Linuxor
http://github.com/Martichou/rquickshare
🐧 @Linuxor
👍56❤🔥12🗿1
معمولا وقتی میخوایم یه برنامه cli برای ترمینال بسازیم، میایم از صفر شروع میکنیم argument handler یا man page یا cli autocomplete میسازیم.
اکثر برنامه های cli اصلا رابط کاربری خوبی ندارن مثلا من یجا رسیدم میخام به یه سویچ پارامتر بدم TAB میزنم که کمکم کنه، برنامه میاد داریکتوری های جاری رو پیشنهاد میده. اصلا هیچ سنسی برای autocomplete نداره و نمیفمه من چیز مربوط به سویچ رو میخام پیشنهاد بدی نه فایل های دارکتوری جاری ...
با هر زبانی که میخواین برنامه cli بسازین یه فریمورکی براش ساختن که توی این موارد خیلی کمکتون میکنه و برنامه های cli که میسازین رو پویا تر میکنه.
https://github.com/shadawck/awesome-cli-frameworks
توی این ریپو فریم ورک های ساخت برنامه cli برای همه زبان هارو جمع کردن، کافیه برید و فریمورک زبان برنامه نویسی خودتون رو پیدا کنید.
🐧 @Linuxor
اکثر برنامه های cli اصلا رابط کاربری خوبی ندارن مثلا من یجا رسیدم میخام به یه سویچ پارامتر بدم TAB میزنم که کمکم کنه، برنامه میاد داریکتوری های جاری رو پیشنهاد میده. اصلا هیچ سنسی برای autocomplete نداره و نمیفمه من چیز مربوط به سویچ رو میخام پیشنهاد بدی نه فایل های دارکتوری جاری ...
با هر زبانی که میخواین برنامه cli بسازین یه فریمورکی براش ساختن که توی این موارد خیلی کمکتون میکنه و برنامه های cli که میسازین رو پویا تر میکنه.
https://github.com/shadawck/awesome-cli-frameworks
توی این ریپو فریم ورک های ساخت برنامه cli برای همه زبان هارو جمع کردن، کافیه برید و فریمورک زبان برنامه نویسی خودتون رو پیدا کنید.
🐧 @Linuxor
🔥54👍18🗿2❤1
پینگ یه سویچ داره A- که باهاش میتونید به صورت Adaptive پینگ بگیرید
توی حالت عادی هربار که پینگ میفرسته یه زمان ثابتی صبر میکنه بعد دوباره پینگ میفرسته. اما با حالت Adaptive شرایط شبکه در نظر گرفته میشه یعنی بجای صبر کردن به اندازه تایم ثابت میاد به اندازه round-trip صبر میکنه. اگه سرعت شبکتون خوب باشه پینگ هارو میتونید با سرعت بالا تری بفرستید.
🐧 @Linuxor
توی حالت عادی هربار که پینگ میفرسته یه زمان ثابتی صبر میکنه بعد دوباره پینگ میفرسته. اما با حالت Adaptive شرایط شبکه در نظر گرفته میشه یعنی بجای صبر کردن به اندازه تایم ثابت میاد به اندازه round-trip صبر میکنه. اگه سرعت شبکتون خوب باشه پینگ هارو میتونید با سرعت بالا تری بفرستید.
ping -A google.com
ping -A 127.0.0.1
🐧 @Linuxor
👍50🔥4🍓1🗿1
میدونستین برای سادگی alias های مختلفی برای ls ساختن ؟
با l میتونین میتونین به صورت ستونی ls بگیرین و نوع رو هم مشخص میکنه مثلا اگه دایرکتوری باشه یه / تهش میزاره.
با la میتونین تمام فایلها رو ببینید، از جمله فایلهای پنهان (که با نقطه شروع میشه)، میشه.
با ll میتونین اطلاعات مفصل درباره فایلها (مانند مجوزها، مالک، گروه، اندازه و تاریخ آخرین تغییر) رو ببینید.
بهترین ترکیبی هم که میشه ساخت ls -ltrha هستش که هم فایل های مخفی رو نشون میده هم اطلاعات مفصل رو.
اگه نمیتونین سویچ هاشو حفظ کنید اینو کنکوری یادتون باشه
ls -authlogin
🐧 @Linuxor
با l میتونین میتونین به صورت ستونی ls بگیرین و نوع رو هم مشخص میکنه مثلا اگه دایرکتوری باشه یه / تهش میزاره.
با la میتونین تمام فایلها رو ببینید، از جمله فایلهای پنهان (که با نقطه شروع میشه)، میشه.
با ll میتونین اطلاعات مفصل درباره فایلها (مانند مجوزها، مالک، گروه، اندازه و تاریخ آخرین تغییر) رو ببینید.
بهترین ترکیبی هم که میشه ساخت ls -ltrha هستش که هم فایل های مخفی رو نشون میده هم اطلاعات مفصل رو.
اگه نمیتونین سویچ هاشو حفظ کنید اینو کنکوری یادتون باشه
ls -authlogin
🐧 @Linuxor
⚡30👍7💅6🗿2🌚1
یادگیری ابزار jq برای parse کردن JSON فقط با دو مثال ساده
Access to object and members:
output : "linuxor"
Access to array :
output : 3
🐧 @Linuxor
Access to object and members:
echo '{"channel":{"id":1234,"username":"linuxor","members":[1,2,3,4]} }' | jq .channel.usernameoutput : "linuxor"
Access to array :
echo '{"channel":{"id":1234,"username":"linuxor","members":[1,2,3,4]} }' | jq .channel.members[2]output : 3
🐧 @Linuxor
🔥31👍8💅2👾2🍓1
فکر کنم کلا اونایی که کرنل رو مینویسن در مورد معماری و سخت افزار اعصاب ندارن، نمونه داکیومنت مموری الاینمنت رسمی کرنل.
https://www.kernel.org/doc/html/latest/arch/arm/mem_alignment.html
🐧 @Linuxor ~ _AbolfazlAbbasi
https://www.kernel.org/doc/html/latest/arch/arm/mem_alignment.html
🐧 @Linuxor ~ _AbolfazlAbbasi
🤣96😁7🗿3😭2😐1
دوره #فوق_لینوکسه_ها قسمت 6
توی این قسمت با FHS آشنا میشین FHS یه استانداردیه برای سلسله مراتب دایرکتوری ها توی لینوکس که ما از دایرکتوری / یا روت شروع کردیم و همه دایرکتوری های مهم توی لینوکس رو برسی کردیم. کاراکتر دیوایس های مهم رو برسی کردیم و اینکه چرا میگن توی لینوکس همچی فایله رو دقیق تر توی این قسمت میتونین ببینید.
https://youtu.be/G2-5cnvZwIM?si=eXjr5hv8gK1jqcDV
🐧 @Linuxor
توی این قسمت با FHS آشنا میشین FHS یه استانداردیه برای سلسله مراتب دایرکتوری ها توی لینوکس که ما از دایرکتوری / یا روت شروع کردیم و همه دایرکتوری های مهم توی لینوکس رو برسی کردیم. کاراکتر دیوایس های مهم رو برسی کردیم و اینکه چرا میگن توی لینوکس همچی فایله رو دقیق تر توی این قسمت میتونین ببینید.
https://youtu.be/G2-5cnvZwIM?si=eXjr5hv8gK1jqcDV
🐧 @Linuxor
🔥26👍8❤4🗿1
کرنل لینوکس به قدری منعطف نوشته شده که میتونه هر کارت گرافیک با تکنولوژی پیچیده ای رو ساپورت کنه.
اما تعدادی کمی از افراد هستن که میتونن برای لینوکس درایور بخصوص اونم GPU بنویسن، اگه به برنامه نویسی سطح پایین علاقه دارید پیشنهاد میکنم این داکیومنشن که اومده توضیح داده چطوری میتونید یه درایور GPU برای کرنل لینوکس بسازید رو بخونید :
https://www.kernel.org/doc/html/v4.14/gpu/index.html
شرکت هایی مثل اپل و IBM همیشه پوزیشن باز برای توسعه دهنده های کرنل دارن و متقاضی هم بسیار کم. اگه بتونید توی این حوزه برای خودتون رزومه درست کنید میتونید توی این شرکتا به راحتی استخدام بشید و حقوق سالیانه میانیگن 150 تا 250 هزار دلاری بگیرید.
🐧 @Linuxor
اما تعدادی کمی از افراد هستن که میتونن برای لینوکس درایور بخصوص اونم GPU بنویسن، اگه به برنامه نویسی سطح پایین علاقه دارید پیشنهاد میکنم این داکیومنشن که اومده توضیح داده چطوری میتونید یه درایور GPU برای کرنل لینوکس بسازید رو بخونید :
https://www.kernel.org/doc/html/v4.14/gpu/index.html
شرکت هایی مثل اپل و IBM همیشه پوزیشن باز برای توسعه دهنده های کرنل دارن و متقاضی هم بسیار کم. اگه بتونید توی این حوزه برای خودتون رزومه درست کنید میتونید توی این شرکتا به راحتی استخدام بشید و حقوق سالیانه میانیگن 150 تا 250 هزار دلاری بگیرید.
🐧 @Linuxor
🔥84👍20🤯4❤2🗿2
تزریق فرایند یا process injection یه روشیه که یک کد مخرب دلخواه رو به فرایند در حال اجرا وارد میکنن و به یه نتیجه دلخواه میرسن.
معمولا مهاجم دست روی پراسس هایی میزاره که سیستمی هستن و دسترسی بیشتری دارن و داده های حساس تری رو هندل میکنن.
اگه دوست داشتین بیشتر بدونید این مدیوم به طور خلاصه تکنیک های process injection رو توضیح داده :
https://medium.com/csg-govtech/process-injection-techniques-used-by-malware-1a34c078612c
🐧 @Linuxor
معمولا مهاجم دست روی پراسس هایی میزاره که سیستمی هستن و دسترسی بیشتری دارن و داده های حساس تری رو هندل میکنن.
اگه دوست داشتین بیشتر بدونید این مدیوم به طور خلاصه تکنیک های process injection رو توضیح داده :
https://medium.com/csg-govtech/process-injection-techniques-used-by-malware-1a34c078612c
🐧 @Linuxor
👍41💅3🗿1
تا میتونید الگوریتم یاد بگیرید. اکثر مسائلی که براتون پیش میاد الگوریتم بهینه ای قبلا براش کشف شده.
سر یه پروژه بودم به این صورت بود که باید از طریق API به یه سروری ریکوست میدادم و یه دیتایی میگرفتم.
مشکل این بود که حجم دیتایی که من میخواستم خیلی زیاد بود. و ریکوست هایی که میدادم اگه از یه حدی فراتر میرفت ارور 429 یعنی Too Many Requests میگرفتم و یه تایمی هم API_KEY رو جریمه میکرد و اون API_KEY کلا از دادن ریکوست محروم میشد و به طور مثال میگفت 30 ثانیه دیگه نمیتونی ریکوست بدی.
و مشکل اساسی این بود که API هیچ اطلاعاتی درباره سیستم flood ش نداده بود (و معمولا هم نمیدن) و نمیشد پیش بینی کرد که کی قراره API_KEY لیمیت بخوره.
من تعداد API_KEY هارو توی قدم اول افزایش دادم ولی بازم اون حجم از دیتایی که میخوام رو نتونستم دریافت کنم، چون جریمه ها زمان رو اتلاف میکرد.
و اینکه برای هر API_KEY من میومدم تعداد ریکوست های در ثانیه اش رو کم هم میکردم هم ایده خوبی نبود چون بهینه ترین حالت نبود و هزینه اضافی API_KEY رو فقط تحمیل میکرد.
در نهایت بعد از چند روز تونستم یه الگوریتمی بنویسم که با توجه به شرایط بهترین تصمیم رو میگیره و بالا ترین حجم دیتا رو از API میگیره.
قسمت جالب اینجاست که الگوریتمی که نوشتم خیلی شبیه الگوریتم AIMD توی شبکه س که 50 سال پیش نوشته شده ... و اصلا نیازی نبود انقدر به خودم زحمت بدم و چرخ رو از اول اختراع کنم !
🐧 @Linuxor
سر یه پروژه بودم به این صورت بود که باید از طریق API به یه سروری ریکوست میدادم و یه دیتایی میگرفتم.
مشکل این بود که حجم دیتایی که من میخواستم خیلی زیاد بود. و ریکوست هایی که میدادم اگه از یه حدی فراتر میرفت ارور 429 یعنی Too Many Requests میگرفتم و یه تایمی هم API_KEY رو جریمه میکرد و اون API_KEY کلا از دادن ریکوست محروم میشد و به طور مثال میگفت 30 ثانیه دیگه نمیتونی ریکوست بدی.
و مشکل اساسی این بود که API هیچ اطلاعاتی درباره سیستم flood ش نداده بود (و معمولا هم نمیدن) و نمیشد پیش بینی کرد که کی قراره API_KEY لیمیت بخوره.
من تعداد API_KEY هارو توی قدم اول افزایش دادم ولی بازم اون حجم از دیتایی که میخوام رو نتونستم دریافت کنم، چون جریمه ها زمان رو اتلاف میکرد.
و اینکه برای هر API_KEY من میومدم تعداد ریکوست های در ثانیه اش رو کم هم میکردم هم ایده خوبی نبود چون بهینه ترین حالت نبود و هزینه اضافی API_KEY رو فقط تحمیل میکرد.
در نهایت بعد از چند روز تونستم یه الگوریتمی بنویسم که با توجه به شرایط بهترین تصمیم رو میگیره و بالا ترین حجم دیتا رو از API میگیره.
قسمت جالب اینجاست که الگوریتمی که نوشتم خیلی شبیه الگوریتم AIMD توی شبکه س که 50 سال پیش نوشته شده ... و اصلا نیازی نبود انقدر به خودم زحمت بدم و چرخ رو از اول اختراع کنم !
🐧 @Linuxor
🔥74👍25👌8😐1🗿1
دوره #فوق_لینوکسه_ها قسمت 7
توی این قسمت با سخت افزار ها توی لینوکس آشنا میشید. نحوه مانت و آنمانت کردن رو میبنید، کاربرد انواع پورت ها مثل PCI و Thunderbolt و USB رو میبینید همچنین با درایور ها یا ماژول های کرنل بیشتر آشنا میشید.
https://youtu.be/F4CKztOVLPc?si=D1AMKzrPQM9DhwRc
🐧 @Linuxor
توی این قسمت با سخت افزار ها توی لینوکس آشنا میشید. نحوه مانت و آنمانت کردن رو میبنید، کاربرد انواع پورت ها مثل PCI و Thunderbolt و USB رو میبینید همچنین با درایور ها یا ماژول های کرنل بیشتر آشنا میشید.
https://youtu.be/F4CKztOVLPc?si=D1AMKzrPQM9DhwRc
🐧 @Linuxor
🔥34❤6👍1🗿1
زبان برنامه نویسی هیچ ربطی به کانتنت داخل سایت نداره.
کروم یه اکستنش داره wappalyzer میشه باهاش تکنولوژی های استفاده شده توی یک سایت رو برسی کرد.
این اکستنش هم حتی درست نمیگه، چرا؟ چونکه با استفاده از هدر x-powered-by چک میکنه و سایت دوبار این هدر رو پر کرده یه بار با php یه بار با asp.
تحلیل تکنولوژی های backend مگر با دیتا هایی که خودشون توی هدر میدن عملا غیر ممکنه.
مثلا من میتونیم سایتی بسازم که با php باشه اما وانمود کنم سایت با asp ساخته شده.
حتی جالب اینجاست routing هم میشه دستکاری کرد که اخر url سایت asp باشه ولی سایت php باشه.
مثال ساده از routing :
url.com/file.zip
الزاما به یه file زیپ اشاره نمیکنه و ممکنه file.zip یه صفحه وب باشه.
توی مورد بالا هم من حس میکنم بخاطر تغییر زبان سایت و backward compatibility این اتفاق افتاده یعنی نخواستن route هاشون تغییر کنه و زبان بکند رو تغییر دادن. در هر صورت هیچ تحلیلی در مورد زبان بکند به طور قطعی نمیشه کرد. حتی امکان داره یه شوخی باشه.
🐧 @Linuxor
کروم یه اکستنش داره wappalyzer میشه باهاش تکنولوژی های استفاده شده توی یک سایت رو برسی کرد.
این اکستنش هم حتی درست نمیگه، چرا؟ چونکه با استفاده از هدر x-powered-by چک میکنه و سایت دوبار این هدر رو پر کرده یه بار با php یه بار با asp.
تحلیل تکنولوژی های backend مگر با دیتا هایی که خودشون توی هدر میدن عملا غیر ممکنه.
مثلا من میتونیم سایتی بسازم که با php باشه اما وانمود کنم سایت با asp ساخته شده.
حتی جالب اینجاست routing هم میشه دستکاری کرد که اخر url سایت asp باشه ولی سایت php باشه.
مثال ساده از routing :
url.com/file.zip
الزاما به یه file زیپ اشاره نمیکنه و ممکنه file.zip یه صفحه وب باشه.
توی مورد بالا هم من حس میکنم بخاطر تغییر زبان سایت و backward compatibility این اتفاق افتاده یعنی نخواستن route هاشون تغییر کنه و زبان بکند رو تغییر دادن. در هر صورت هیچ تحلیلی در مورد زبان بکند به طور قطعی نمیشه کرد. حتی امکان داره یه شوخی باشه.
🐧 @Linuxor
👍64🗿2