TGViewer
Channel Public Channel
نوشته‌های ترمینالی

نوشته‌های ترمینالی

@terminal_stuff

virgool.io/@rsharifnasab
github.com/rsharifnasab
Subscribers
3.51K
Photos
434
Videos
12
Links
2.4K

Showing posts older than #3242 · Back to latest

Older Posts 20 shown
Post #3241 3K
Post #3238 3.91K

Forwarded from Mahi in Tech

درود و امید که خوب باشید.

یک‌سری منابع قرار می‌دم که شاید توی این وضعیت‌‌ای که امیدوارم هرچه زودتر به خوبی تموم شه، به‌دردتون بخوره.

دی‌ان‌اس داخلی:
5.202.100.100
5.202.100.101

رجیستری داکر:
hub.hamdocker.ir
docker.mobinhost.com
docker.arvancloud.ir

میرور NPM, PyPi:
runflare.com/mirrors

میرور Ubuntu:
mirror.digitalvps.ir/ubuntu
ubuntu.pishgaman.net/ubuntu
ubuntu.pars.host
mirror.arvancloud.ir/ubuntu

داکیومنت یه‌سری از تکنولوژی‌ها و ویکی‌پدیای کامپیوتر:
193.151.130.199

DNSTT Resolver:
8.8.8.8:53
77.88.8.8:53
77.88.8.1:53
2.188.21.130:53
2.189.1.1:53
  • 👍 13
  • 👎 5
  • ❤ 1
Post #3234 2.65K
برای کار با io توی لینوکس از سیستم کال استفاده می‌کنیم. یه دسته از این سیستم‌کال ها io_uring نام دارن که به ما امکان پروسس async رو می‌دن. خلاصه‌ش به این شکله که دو تا صف حلقوی مشترک بین user space و kernel space داریم که توی یکی درخواست های io رو می‌نویسیم و نتیجه توی یک صف دیگه قرار می‌گیره.
نکته جالب اول اینه که میتونیم چند تا درخواست رو بنویسیم و بعد به kernel بگیم همه رو پردازش کن و یه حالت batching پیش میاد.
نکته جالب دوم اینه که میتونیم به کرنل بگیم که خودت به شکل polling صف درخواست‌ها رو بررسی کن و خودت کار رو شروع کن، بدون این که حتی نیاز باشه سیستم‌کال بزنیم. البته که برای همه‌ی برنامه‌ها می‌تونه مناسب نباشه چون پردازنده رو درگیر می‌کنه.

https://unixism.net/loti/what_is_io_uring.html
  • 👎 20
  • 👍 9
  • 😁 1
  • 🤬 1
Post #3232 3.43K
پسرم برنامه‌نویس سیستمی لینوکسه، پسرش:

کامند معروف sudo یه فیچر بامزه داره. قضیه از این قراره که وقتی که شما پسورد رو اشتباه می‌زنید در حالت عادی میگه try again و اینا، ولی یه فیچر داره به اسم insults که می‌تونید فعالش کنید و به این صورت می‌تونه به هر کسی که پسورد sudo رو اشتباه زد متن توهین‌آمیز نشون بده.

هدفم از این، این نیست که بگم برید روشنش کنید چون که کاربرد خاصی نداره، ولی به نظرم یه تنظیم نسبتا بی‌خطره برای بازی کردن با تنظیمات sudo.

تو این آموزش هم در مورد اهمیت کاربر root و دستور sudo و هم این فیچر بخونید و هم آموزش تغییر دادن تنظیمات sudo رو با visudo ببینید.

https://www.techtarget.com/searchsecurity/tutorial/Use-sudo-insults-to-add-spice-to-incorrect-password-attempts


شاید بپرسید متن‌های اینا از کجا میاد؟ حتما یه جا توی سیستم منه؟ ولی خب خیر به شکل متنی در اختیارتون نیست. توی یه فایل .so قرار داره. با کامند strings می‌تونید رشته‌های داخلش رو از فایل باینری استخراح کنید (که خروجی به درد بخوری نمیده البته)
https://askubuntu.com/questions/837558/where-are-sudos-insults-stored
Security Use sudo insults to add spice to incorrect password attempts Sudo insults make Linux livelier when a user enters an incorrect password. Learn now to use sudo insults to add some humor to password management.
  • 😁 18
  • 🔥 4
  • ❤ 2
Post #3231 4.1K
در مورد مصاحبه شغلی به عنوان برنامه‌نویس، این سایت رو دوست داشتم. نظراتش رو خودمونی و دوستانه نوشته و توصیه‌های خوبی ارائه می‌ده. اگر درگیر این فضا هستید توصیه می‌کنم بخونید.
چیزی که تو فصل های اول جالب بود این بود که کار سختیه آفر گرفتن و قرار نیست با تلاش های اول به دست بیاد ولی به این معنی نیست که من ناکافی‌ام.

https://interviewguide.dev/
interviewguide.dev Preface | InterviewGuide.dev An free guide for software development interviews.
  • ❤ 9
  • 👍 4
Post #3230 3.47K
نوشته‌های ترمینالی این پنل به میزبانی دانشگاه بهشتی برگزار میشه، حضوریه و جاش سمت ولنجک تهرانه. اگه جا و زمانش براتون مسأله‌ای نیست، توصیه می‌کنم حتما شرکت کنید. هزینه ثبت‌نام ۲۰۰ هزار تومنه، ولی با کد تخفیف dorsa سی درصد هم کم می‌شه. زمان برگزاری هم چهارشنبه ۱۰ دیه، ساعت…
این پنل، تابمش عوض شده و به پنجشنبه ۱۸ دی تغییر کرد. اگه با روز و ساعتش مشکل داشتین، الان میتوانید ثبت نام کنید ✌️
  • ❤ 1
Post #3229 3.12K

Forwarded from Agora (Alireza)

شمارش با بو کشیدن: HyperLogLog
__________________

نیاز بود تعداد کانتکت‌هایی که به یک اکانت مشخص پیام‌ میدن در یک بازه‌ی ۲۴ ساعته شمرده بشن.

اولین راه حل و بدیهی‌ترینش این بود که واقعا ارسال کننده‌ی پیام‌ها رو توی یک ست ذخیره کنیم. یعنی توی یک بازه‌ی ۲۴ ساعته هرچی پیام بعد از یک ایونت شروع کننده‌ی اون ۲۴ ساعت میومد رو دونه دونه برای هر اکانت بررسی کنیم. پیجیده نبود ولی خیلی جالب به نظر نمیومد به خصوص این که نیازی به شمارش دقیق نداشتیم و این یعنی کلی هدررفت حافظه.

برای این که توی فضای بهینه این مسئله رو حل می‌کردم خیلی زود به یک حدس اولیه رسیدیم: Bloom filter.

بلوم فیلتر کاربردش اینه که به شما می‌تونه بدون ذخیره کردن تمام داده‌ها و در پیچیدگی زمانی ثابت بگه که یک عنصر، عضو یک مجموعه هست یا نه اما با یک مشکل: احتمال این وجود داره که بگه عنصری عضو اون مجموعه هست در صورتی که واقعا نیست.
اما از طرفی: وقتی میگی عنصری عضو مجموعه نیست قطعیه و همیشه درست.

بلوم فیلتر خیلی جالبه ولی راه حل ما نبود. ما نیاز به شمردن داشتیم ولی بلوم فیلتر یک فیلتره(!) نه یک شمارنده. انگار هش‌تیبلیه که بدون این که همه‌ی داده‌ها رو ذخیره کنه بهت میتونه بگه کلیدت احتمالا هست یا قطعا نیست. پس باید یک شمارنده کنار بلوم فیلتر استفاده می‌کردیم که هروقت نبود یکی بهش اضافه بشه. عملا پیچیدگی پیاده‌سازی بدو ‌دلیل کافی بالا می‌رفت و برای همین باید می‌رفتیم سراغ یک روش دیگه.

تو این فکرا بودم و داشتم واسه یه مصاحبه سوال آماده می‌کردم که یهو یادم افتاد که من قبلا توی داکیومنت ردیس چشمم خورد به یک ساختمان داده‌ای که همون موقع برام خیلی جالب بود: HyperLogLog. بعد بررسی مجدد به نظر میر‌سید که جوابمون همینه!

هایپرلاگ‌لاگ یا HLL یک ساختمان داده با پیچیدگی فضایی ثابت مبتنی بر احتمالاته که میتونه تعداد عناصر یکتا در یک مجموعه‌ رو (که بهش می‌گن Cardinality) بدون این که واقعا تعداد تکرار‌ها رو بشمره و یا داده‌ها رو ذخیره کنه با ضریب خطای زیر یک درصد (حدود ۰.۸٪) محاسبه کنه. (برای تعداد ۲ به توان ۱۴ رجیستر. به صورت کلی، نرخ خطا برای m رجیستر برابر است با ۱.۰۴ بر رادیکال m)

نحوه‌ی کارش هم به این شکله که به جای ذخیره یا شمردن مستقیم عنصر‌ها، هر ورودی رو ابتدا با یک تابع هش یکنواخت به یک مقدار باینری با طول ثابت تبدیل می‌کنه. بعد چند بیت ابتدایی این هش رو برای تعیین رجیستری (باکت) که داده بهش تعلق می‌گیره استفاده می‌کنه و روی بقیه‌ی بیت‌ها، تعداد صفرهای متوالی ابتدای رشته شمرده می‌شه.

از اونجایی که ظاهر شدن تعداد زیاد صفرهای متوالی در ابتدای یک عدد باینری در صورت استفاده از همچین تابع هشی یک رخداد کم احتمالیه، این مقدار می‌تونه به‌صورت آماری نماینده‌ای از بزرگی مجموعه‌ی عناصر یکتا باشه.
یعنی چی؟

احتمال این که یک عدد باینری:
- با ۱ صفر شروع بشه:
P(0) = ۱/۲

- با ۲ صفر متوالی شروع بشه (00):
P(00) = ۱/۴

- با ۳ صفر متوالی شروع بشه (000):
P(000) = ۱/۸

- با k صفر متوالی شروع بشه:
P(00…0)= ۱/۲^k

یعنی به ازای هر صفر اضافه، احتمال نصف می‌شه.

در نتیجه دیدن عددی که مثلاً با ۱۰ صفر شروع بشه، احتمالی به برابر با ۱ به ۱۰۲۴ داره. اتفاقی که فقط وقتی حجم داده‌ها بزرگ باشه رخ می‌ده.

در نهایت برای محاسبه‌ی تعداد تکرار، فرایند محاسبه‌ی آماری رو رو نه روی کل داده‌ها، بلکه روی مجموعه‌ای از رجیسترها انجام می‌ده. به این صورت که برای هر رجیستر فقط بیشترین تعداد صفر متوالی‌ای که تا اون لحظه دیده شده ذخیره می‌شه و با ترکیب آماری مقادیر همه‌ی رجیسترها، یک تخمین از تعداد عناصر یکتا به دست میاد.

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

در همین راستا، و برای این که این روایت برای علاقه‌مندان ابتر نمونه، این بلاگ پست رو که آقای Salvatore Sanfilippo که از ایتالیایی‌های اهل دل و البته از توسعه‌دهندگان اصلی ردیس هستن رو به هیج‌وجه از دست ندین. بلاگ راجع‌به HLL و پیاده‌سازیش در ردیسه:

Redis new data structure: the HyperLogLog

In the Redis implementation it only uses 12kbytes per key to count with a standard error of 0.81%, and there is no limit to the number of items you can count, unless you approach 2^64 items (which seems quite unlikely).
  • ❤ 5
  • 👌 4
  • ❤‍🔥 2
Post #3227 2.66K

Forwarded from Linux Experts (𝖕𝖝𝖊)

💠 آشنایی با مجموعه ابزارهای moreutils

در کنار coreutils که ابزارهای کلاسیک مثل cp،‏ ls،‏ mv و… رو فراهم می‌کنه، moreutils چند ابزار کوچیک ولی کاربردی اضافه می‌کنه که جای خالی بعضی قابلیت‌ها رو تو محیط‌های یونیکسی و لینوکسی پر می‌کنن و توی اسکریپت‌نویسی خیلی به‌درد می‌خورن.

لیست چند تا از اسکریپت‌های کاربردی moreutils رو می‌تونید در ادامه ببینید:
‏- combine: ترکیب خطوط دو فایل با منطق AND/OR
‏- errno: نمایش اسم و توضیح خطاهای استاندارد errno
‏- ifdata: گرفتن اطلاعات اینترفیس شبکه بدون پارس ifconfig
‏- ifne: اجرای برنامه فقط اگه stdin خالی نباشه
‏- isutf8: چک‌کردن معتبر بودن UTF‑8 ورودی یا فایل
‏- lckdo: اجرای فرمان با فایل قفل برای جلوگیری از اجرای همزمان
این فرمان بعد از اضافه شدن فرمان flock به util-linux منسوخ شده و تو نگارش‌های آینده حذف می‌شه

‏- mispipe: پایپ‌کردن دو فرمان، ولی برگرداندن کد خروجی فرمان اول
‏- parallel: اجرای هم‌زمان چند فرمان (چند job)
‏- pee: شبیه tee، ولی فرستادن stdin به چند پایپ
‏- sponge: گرفتن کل ورودی و آخر کار نوشتن روی فایل
‏- ts: اضافه‌کردن timestamp به ابتدای هر خط ورودی
‏- vidir: ویرایش اسم/جای فایل‌ها از داخل ادیتور
‏- vipe: بازکردن stdin در ادیتور و فرستادن خروجی ویرایش به stdout
‏- zrun: اجرای فرمان روی فایل‌های فشرده، با آنزیپ خودکار موقت

#linux #commandline #tools
🔘 @linux_exp ~> More
  • 👍 7
  • ❤ 2
Post #3225 4.55K
آیا در یک تیم نرم‌افزاری، همه‌ی کار قابل مشاهده است؟ نه!
کارهایی مثل کد ریویو، تغییرات سریع روی پروداکشن و ... معمولا به شکل تسک و روی جیرا قرار نمی‌گیرن، در نتیجه قابل ارزیابی و پایش (مثلا برای ترفیع هم نیستن)

این مطلب علاوه بر توضیح مساله، یه سری راهکار هم بررسی کرده ولی مهم تر از راهکار به نظرم اینه که همه این حقیقت رو بپذیریم!

https://newsletter.manager.dev/p/the-shadow-work-in-engineering-teams
www.manager.dev Shadow work in engineering teams And the price your team pays for it
  • ❤ 5
  • 👍 4
  • 💔 3
Post #3224 2.82K
این پنل به میزبانی دانشگاه بهشتی برگزار میشه، حضوریه و جاش سمت ولنجک تهرانه. اگه جا و زمانش براتون مسأله‌ای نیست، توصیه می‌کنم حتما شرکت کنید.

هزینه ثبت‌نام ۲۰۰ هزار تومنه، ولی با کد تخفیف dorsa سی درصد هم کم می‌شه.
زمان برگزاری هم چهارشنبه ۱۰ دیه، ساعت ۱۳.

لینک ثبت‌نام:
https://evand.com/events/ai4se
  • 👍 5
  • ❤ 4
  • 👎 3
Post #3223 4.63K
در مورد سندروم imposter یا همون حس ناکافی بودن خودمون این مطلب جالب بود و مثال های خوبی داشت. یکم طولانیه ولی اگه باهاش درگیر هستین توصیه میکنم بخونید. در مورد مدیرها هم قضیه رو باز می‌کنه که به‌عنوان مدیر بازخورد گرفتن و فهمیدن این که من خوبم یا نه چندان ساده نیست و ممکنه آدم ها راحت در این سمت، دچار خودکم‌بینی بشن.

https://mikefisher.substack.com/p/imposter-syndrome


نظر خودم هم بخوام بگم، ما معمولا خودمون رو با چیزهایی مقایسه می‌کنیم که نباید.

۱- مثلا با یه دولوپر معمولی که یه تسک دیگه میزنه، و تصور می‌کنیم کار اون خفن تره، چون کار خودمون رو مسلط هستیم ولی کار اون رو نه، در حالی که اونم به کار خودش مسلطه و به کار ما نیست.

۲- نتیجه کار خودمون در چند ساعت یا چند روز رو با نتیجه کار یه تیم بزرگ و با بودجه زیاد که ماه ها روش کار کردن مقایسه می‌کنیم. مثلا من چرا نمیتونم تو خونه تلگرام رو بنویسم. در بهترین حالت من مثل یه برنامه نویس تلگرامم که روز اوله داره می‌ره وارد تیم میشه. و یادمون نره هرچیزی روز اول MVP بوده تا این که کم کم بالغ شده یا اکثرا رها شده.
Substack Imposter Syndrome Why people second guess their effectiveness
  • 👍 8
  • ❤ 4
Post #3222 2.36K
چطور از اجزایی که ممکنه دچار خطا بشن، یک سیستم قابل اتکا بسازیم؟
این مطلب به نظرم خیلی جالب و عمیق بود. مثال هایی از سیستم های سیاسی تا زیستی میزنه ولی به نظرم روح system design جذابی داشت و توصیه می‌کنم حتما بخونید.

https://medium.com/@alireza_norouzi/build-reliable-systems-from-unrealiable-parts-bd921be088c5
Medium Build Reliable Systems from Unrealiable Parts Do Not Let Faults Lead to Failures
  • 🍓 3
  • ❤ 1
Post #3221 2.51K
کد ریویو اجباری خوبه یا بد؟ خلاصه اینکه توسعه رو کند می‌کنه ولی باگ ها رو هم کم میکنه!

نکته ها:
+ یا کد ریویو نکنید یا اگه میکنید سریع و دقیق باشه. :))
+ میشه به جای اجبار همیشگی، هوشمندانه استفاده کرد، مثلا اگه کد حیاتی نوشته شده، یا ریویوی کد کسی که به کد مسلط نیست.

https://newsletter.manager.dev/p/the-price-of-mandatory-code-reviews
www.manager.dev The price of mandatory code reviews Challenging the unwritten law of software engineering
  • 👍 9
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →