Dev Perfects
41 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Linuxor ?
واقعاً این جوابه وقتی می‌خوای یه ابزار بسازی که هم سبک باشه، هم سریع، هم واکنش‌گرا، Dear ImGui یه UI لایبرری آنی (Immediate Mode) برای C++ئه که به طرز عجیبی ساده و قابل کنترله.

برای وقتی که می‌خوای یه پنل دیباگ، یه ادیتور یا حتی یه ابزار شخصی‌سازی درست کنی، بدون اینکه بری تو دردسر UI کلاسیک.

github.com/ocornut/imgui

@Linuxor
نمونه زاییدن AI وقتی کدبیس بزرگه و قرار نیست یه توپ که می‌خوره در و دیوار رو کد بزنه
https://github.com/dotnet/runtime/pull/115762

@DevTwitter | <Arman/>
Forwarded from Armon technical logs (armon Taheri)
Forwarded from a pessimistic researcher (Kc)
از آمفی تئاتر Arles تا پل‌های Saarbrücken
صرفا بهانه‌ای برای گفتگو
——————————

دو سه هفته مونده بود ترم پیش شروع بشه که روپاک یه ایمیل زد بهم گفت که میخواد یه درسی راجع به Software Verification ارائه بده و آیا من دوست دارم که TA بشم و بعدش یک syllabus بسیار tentative برام فرستاد که هیچکدوم از تاپیک‌هاش به جز دو سه مورد برام آشنا نبود. خب تقریبا شوک بزرگی بود. حسابش رو بکن این همه سال درس خوندی و توی این حوزه کار کردی، ولی هیچ اسم و رسمی از این مباحث رو نشنیدی و انگار که تا الان تو این رشته نبودی. هم خوشحال بودم هم ناراحت. خوشحال از اینکه قراره منم همراه با دانشجوها یاد بگیرم و ناراحت که سن خر پیر رو دارم هنوز هیچی بلد نیستم. شما که غریبه نیستید، اینجا بالاخره یه فرصتی گیر آوردم که یکم درد و دل کنم. این روزا به شدت آدم تاریک و غمگینی‌ام. احساس میکنم که خیلی عقبم و زمان زیادی رو هم از دست دادم. همیشه طلب دارم. خیلی خیلی زیاد طلب دارم. قدیما نمی‌ذاشتم طلبام تلنبار بشه. قدیم. هر چیزی قدیمیش بهتره. دیروز از امروز بهتر بود. صبح از امشب بهتر بود. حتی خود قدیمیم رو خیلی بیشتر دوست دارم. خود قدیمیم خسته نمیشد. زود جا نمیزد. وایمیستاد. جلوی همه وایمیستاد. اگر خود قدیمیم اون روز توی سفارت مراکش بود، احتمالا تو روی دربون وایمیستاد. داد میزد. فریاد میزد. خشم، خشم، خشم. چقدر خشم فرو خوردم. چقدر خشم طلب دارم. همیشه توی ذهنم خشن ترم. توی ذهنم خود قدیمم زندگی میکنه. کاش موهام سفید نشن. خیلی زوده. عجله. باید عجله کنم. همیشه دیر کردم. همیشه دیر رسیدم. کدوم قبری وایساده بودم. وایسادم چی رو تماشا کنم؟ هر چی میدوم تموم نمیشه. هر چی میدوم چیزی معلوم نمیشه. یک جاده‌ی بی‌نهایت. خالی از سکنه. پس بقیه کجان؟ چطور انقدر جلوترن؟ چرا پس من نمیرسم بهشون؟ همش دویدن بود. دویدم و دویدم و دویدم غیر از رد پای آدما چیزی ندیدم.

ترم که شروع شد من باید هفته‌ای یک جلسه کلاس tutorial برگزار میکردم و تقریبا اینطوری بود که روپاک میومد سر کلاس ایده‌ی کلی مبحث رو میگفت و جزئیات و اثبات‌ها میموند برای کلاس tutorial. یه مشکل خیلی بزرگ این بود که هیچ تکست‌بوکی وجود نداشت که مطالب رو پوشش بده و با یک حجم زیادی از مقالات مواجه بودیم که هر کدوم دیدگاه و سبک فرمال خودشون رو داشتن و یک دست کردنشون خیلی چالش بود. ولی خب تا یه حد خوبی تونستیم از پسش بربیایم و اون ترم تونستم هر چیزی که رو میخوام سر کلاس توضیح بدم رو دست نویس بنویسم. دانشجوها هم خیلی درس رو دوست داشتن و جلسه‌ی آخر که ازشون فیدبک خواستیم خیلی از سبک و جدید بودن مطالب تعریف کردن. تصمیم گرفتم که این ترم بشینم برای این درس Lecture notes بنویسم و کی میدونه شاید یه روزی کتاب هم شد. یه دیدگاه خیلی خوبی که روپاک تو دوران دکتری بهم داده اینه که همیشه باید به وریفیکیشن برنامه‌های Large-scale فکر کنم و اگر قراره ایده‌هام فقط از پس یک سری toy example بربیان بدرد نمیخوره. راستش رو بخواید اصلا برای همین بود که مطالب جدید بود. توی این Lecture notes ها هم میایم راجع به ایده‌های کلاسیک صحبت می‌کنیم و هم سعی ‌میکنم به فریمورک خودمون یعنی DPOR تعمیمش بدیم.

یکی از این ایده‌ها Induction in Compositional Model Checking هستش. این ایده میاد روی سیستم‌های concurrent ای که پراسس‌های روی یک ordered set ای تعریف شدن، یک reduction تعریف می‌کنه و بعد سعی‌ میکنم روی اون دومین reduce شده induction بزنه. نکته‌ی جالبش اینه که برای انجام قدم‌های induction برخلاف اکثر روش‌ها که از deduction استفاده میکنند از model checking استفاده میکنه، به عبارت دیگه برای بررسی یک مدل روی دومین بی‌نهایت از یک روشی که روی مدل‌های finite عمل میکنه استفاده میکنیم و چی از این بهتر! منتهی بدی این روش اینه که نمیشه کامل automate اش کرد و لازمه که برنامه‌نویس برای انجام reduction یک سری information مشخص کنه. ما میخوایم این نیاز رو رفع کنیم و سوار DPOR کنیمش و بریم سراغ وریفیکیشن سیستم‌های infinite state.
Forwarded from a pessimistic researcher (Kc)
یه چیز خیلی جالبی که بهش برخوردم اینه که تعدادی از مقالات خوب این حوزه توی یک کنفرانسی چاپ شدن به اسم CHARME که من هیچ اسمی ازش نشنیده بودم. خلاصه نظرم رو جلب کرد و یکم پی‌اش رو گرفتم. متوجه شدم که کنفرانس CHARME یا همون Advanced Research Working Conference on Correct Hardware Design and Verification Methods اولین بار سال ۱۹۹۳ توی شهر Arles فرانسه برگزار شده و بعد از اون هر سه چهار سال یک بار توی اروپا برگزار میشده. نکته جالبی که خیلی نظرم رو جلب کرد به خودش این بود که آدمای خیلی خفن و مقالات خیلی کلیدی‌ توی این سری از کنفرانس‌ها چاپ شدن و خیلی‌هاشونم در مورد وریفیکیشن سافتور بودن، منتهی چون اون زمان برای اینکه بتونی ایده‌های وریفیکیشنی رو بفروشی می‌باید می‌چسبوندیش به هاردور، اینا هم اومدن و مقالاتشون رو اینجا چاپ کردن. این کنفرانس آخرین بار سال ۲۰۰۵ توی شهر خودمون Saarbrücken برگزار شد و دیگه خبری ازش نشد.

ما از این دست کنفرانس‌ها زیاد داریم که مثلا اون موقع یه چیزی روی بورس بوده و اومدن اسم کنفرانس‌ رو بر اساس اون انتخاب کردن ولی چون خیلی اعتبار گرفته نیومدن اسمش رو تغییر بدن ولی مورد کاربریش رو چرا. یه مثال خوب کنفرانس OOPSLA هستش که مخفف Object-Oriented Programming, Systems, Languages & Applications هستش ولی خب الان یکی از کنفرانس‌های تاپ حوزه‌ی PL/FM هستش و شاید فقط ۵ درصد مقالاتش مربوط به OOP باشه.

روپاک هم توی CHARME مقاله چاپ کرده. از مراکش که برگشت باید ازش بپرسم که چرا CHARME دیگه تموم شد و ادامه‌اش ندادن. شاید اطلاع داشت.
حالا که دارین با پروژه هاتون فلکس میکنین منم اینو اضاف کنم:

نصب کوبر به صورت production ready
https://github.com/ramed6273/k8s-production-ready

@DevTwitter | <بوم بر بوم به/>
Forwarded from Syntax | سینتکس (alireza-fa)
image-1746985558205.png
783.8 KB
دعوت به مشارکت در پروژه Quick Connect

اگر دنبال یه پروژه‌ی مدرن، متن‌باز، با ساختار تمیز و چالش‌های جذاب می‌گردی که بتونی هم یاد بگیری هم یچیز بدرد بخور بسازیم، بیا سمت Quick Connect

درباره کوئیک کانکت
پلتفرمی سبک، مقیاس‌پذیر و کلاد نیتیو برای ارتباط بهتر با کاربران اپلیکیشن‌ها
با قابلیت‌هایی مثل:
- چت آنلاین
- داشبورد مدیریتی
- نوتیفیکیشن‌ها
- استوری‌های کاربرمحور

کیا میتونن مشارکت کنن؟

1. فرانت‌اند دولوپرهایی که بتونن با WebSocket، ارتباطات real-time و رابط کاربری جذاب کار کنن.
اگر با React، Vue یا هر ابزار فرانت مدرنی راحتی، اوکیه

2. طراح UI/UX
به سلیقه‌ت نیاز داریم

3. و البته بک‌اند دولوپرهای Go هم اگر خیلی مشتاق باشن و خوب کد بزنن.

پروژه به صورت Monorepo توسعه داده می‌شه و کل ساختار کد، مستندات، و ابزارهای توسعه توی یه ریپو جمع شدن (به جز SDK).

اگه علاقه‌مندی به مشارکت، پیوی پیام بده:

@ayeef

@Syntax_fa
Forwarded from Syntax | سینتکس (alireza-fa)
دعوت به مشارکت در پروژه Quick Connect

اگر دنبال یه پروژه‌ی مدرن، متن‌باز، با ساختار تمیز و چالش‌های جذاب می‌گردی که بتونی هم یاد بگیری هم یچیز بدرد بخور با هم بسازیم، بیا سمت Quick Connect

درباره کوئیک کانکت
پلتفرمی سبک، مقیاس‌پذیر و کلاد نیتیو برای ارتباط بهتر با کاربران اپلیکیشن‌ها
با قابلیت‌هایی مثل:
- چت آنلاین
- داشبورد مدیریتی
- نوتیفیکیشن‌ها
- استوری‌های کاربرمحور

کیا میتونن مشارکت کنن؟

1. فرانت‌اند دولوپرهایی که بتونن با WebSocket، ارتباطات real-time و رابط کاربری جذاب کار کنن.
اگر با React، Vue یا هر ابزار فرانت مدرنی راحتی، اوکیه

2. طراح UI/UX
به سلیقه‌ت نیاز داریم

3. و البته بک‌اند دولوپرهای Go هم اگر خیلی مشتاق باشن و خوب کد بزنن.

پروژه به صورت Monorepo توسعه داده می‌شه و کل ساختار کد، مستندات، و ابزارهای توسعه توی یه ریپو جمع شدن (به جز SDK).

اگه علاقه‌مندی به مشارکت، پیوی پیام بده:

@ayeef

#quick_connect

@Syntax_fa
Forwarded from cyru55 unofficial channel (cyru55)
Because the wheel did not turn to the taste of a wise man
If you want to count the world as seven, or even eight
While you must die and put down all your wishes
Whether ants eat you at the grave, whether wolves at the plain

👤Khayyam
Forwarded from AI Pulse (Mohammad)
گوگل در کنفرانس دیشب از  Gemini Diffusion رونمایی کرد. یه مدل آزمایشی که به‌جای پیش‌بینی کلمه‌به‌کلمه، از تکنیک "دیفیوژن" (پخش تدریجی) برای تولید متن استفاده می‌کنه. این سیستم دقیقا مشابه چیزیه که قبلا در مدل های خانواده Mercury دیده بودیم.

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

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


‏Gemini Diffusion به‌جای اینکه متن رو از چپ به راست و به‌صورت خطی تولید کنه، یک‌باره بخش‌های کامل از متن رو تولید می‌کنه — و این کار رو خیلی سریع‌تر از مدل‌های سنتی انجام می‌ده. دیپ‌مایند گفته این سیستم می‌تونه با سرعت ۱۴۷۹ توکن بر ثانیه (بدون احتساب سربار سیستم) کار کنه و تأخیر اولیه‌ی اون فقط ۰.۸۴ ثانیه‌ست.

به‌گفته‌ی «برندن اوداناهیو»، پژوهشگر دیپ‌مایند، این مدل توی کارهای برنامه‌نویسی حتی می‌تونه به سرعت ۲۰۰۰ توکن در ثانیه هم برسه، حتی وقتی سربارهایی مثل توکنیزیشن، آماده‌سازی و بررسی‌های ایمنی رو هم در نظر بگیریم.

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

در آزمون‌ها، Gemini Diffusion عملکردی تقریباً برابر با نسخه‌ی Gemini 2.0 Flash Lite داشته. توی وظایف برنامه‌نویسی مثل HumanEval (با دقت ۸۹.۶٪ در مقابل ۹۰.۲٪) و MBPP (۷۶٪ در مقابل ۷۵.۸٪) نتایج تقریباً مساوی بوده.

حتی توی برخی آزمون‌ها مثل LiveCodeBench (۳۰.۹٪ در مقابل ۲۸.۵٪) و LBPP (۵۶.۸٪ در مقابل ۵۶٪)، Gemini Diffusion کمی بهتر ظاهر شده. با این حال، توی حوزه‌هایی مثل استدلال علمی (GPQA Diamond) و آزمون چندزبانه‌ی Global MMLU Lite ضعیف‌تر عمل کرده و به‌ترتیب امتیازهای ۴۰.۴٪ و ۶۹.۱٪ رو گرفته، در حالی که مدل Flash Lite امتیازهای بالاتری به‌دست آورده (۵۶.۵٪ و ۷۹٪).

به این ترتیب، برای اولین‌بار یه مدل زبانی مبتنی بر تکنیک دیفیوژن تونسته به سطح عملکرد مدل‌های رایج فعلی برسه — حتی با وجود اینکه Gemini 2.0 Flash-Lite یه مدل اقتصادی‌تر و قدیمی‌تر از گوگله.

«جک ری»، دانشمند ارشد دیپ‌مایند، این دستاورد رو یه «لحظه‌ی تاریخی» دونسته. تا پیش از این، مدل‌های خودبازگشتی (autoregressive) همیشه توی کیفیت متن عملکرد بهتری داشتن و مشخص نبود که مدل‌های دیفیوشن بتونن بهشون برسن. ری این موفقیت رو نتیجه‌ی تحقیقات متمرکز و حل «تعداد زیادی» از چالش‌های فنی دونسته.

@aipulse24
Forwarded from AI Pulse (Mohammad)
مدل
Devstral: the best open source model for coding agents

با ۲۴ میلیارد پارامتر روی ollama اضافه شد.


Ollama

حجم بسیار کم، نتایج بسیار عالی (بنچمارک) از ویژگی‌های این مدل هست.
Forwarded from Linuxor ?
سمنتیک یو آی یه فریم‌ورک UI مثل Bootstrap ولی با کلاس‌های قابل خواناتر. مثلاً به‌جای btn-primary، مینویسی ui primary button — خود جمله‌ست.

خودت بخونش، راحت‌تر درکش می‌کنی.

برای ساخت سریع UI تمیز و قابل کاستوم، تو پروژه‌های MVP یا دمو واقعاً می‌درخشه.

github.com/Semantic-Org/Semantic-UI

@Linuxor
Forwarded from cyru55 unofficial channel (cyru55)
🔻برنامه‌نویسی، هک، لینوکس، ربات، هوش و...

👥 @WhatIsProgramming

🙄
Forwarded from Syntax | سینتکس (alireza-fa)
نمونه‌برداری و کاهش چشمگیر هزینه‌ها در Tracing بدون از دست دادن Visibility

قبل اینکه بریم سراغ sampling توضیح کوتاهی درباره trace و span بخونیم:
یک trace رو می‌تونیم به‌عنوان نماینده‌ ی یک کار کامل تو سیستم در نظر بگیریم. مثلا وقتی کاربر درخواست ثبت سبد خرید میده، این عملیات به‌صورت کامل یک Trace حساب می‌شه.

هر Span یک بخش کوچک از اون Trace هست. مثلاً برای ثبت سبد خرید، ممکنه چند سرویس درگیر بشن (مثل بررسی موجودی، محاسبه‌ی تخفیف، ثبت در پایگاه داده و ...) که هر کدوم از این مراحل می‌تونه یک Span جدا باشه. در نهایت، این Spanها کنار هم قرار می‌گیرن و یک کار کامل یعنی trace رو تشکیل می‌دن.

پس با استفاده از traces (یا همون ردپاها)، می‌تونید با دقت بررسی کنید یک درخواست از کجا شروع شده، به کدوم سرویس‌ها رفته، و حتی در هر فانکشن یا لایه چقدر زمان برده تا پردازش بشه.
می‌تونید اطلاعات اضافی (Attributes) یا رویدادهایی که اتفاق افتاده رو هم به هر Span اضافه کنید. در کل، Trace ابزار فوق‌العاده‌ای برای تحلیل دقیق و عمیق رفتار سیستمتونه.

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

نمونه برداری یعنی چی؟

نمونه برداری یعنی تصمیم بگیریم کدوم Traceها نگه‌داری (Sampled) بشه و کدوم رو حذف کنیم (Not Sampled).
هدف اینه که با یه درصد کوچیک و حساب‌شده از داده‌ها، تصویری واضح از وضعیت سیستم داشته باشیم.

مثلا اگه شما هزار تا Trace در ثانیه تولید می‌کنید، نگه داشتن ۱۰۰٪ اونا هم پرهزینه‌ست و هم اغلب غیرضروری. توی این شرایط، یه نرخ Sampling حتی در حد ۱٪ هم می‌تونه نماینده خوبی از رفتار کلی سیستم باشه.

چه زمانی باید از Sampling استفاده کنیم؟

* وقتی تعداد زیادی Trace در ثانیه تولید می‌کنید (مثلا بیشتر از ۱۰۰۰ تا)
* وقتی بیشتر ترافیک شما سالم و بدون خطاست
* وقتی بتونید با قواعد خاصی (مثل خطا داشتن یا latency زیاد) تصمیم بگیرید که چه Traceهایی مهم‌ترن
* وقتی بودجه محدودی برای observability دارید

همچنین ما دو نوع نمونه برداری داریم:

1. Head Sampling

اینجوریه که تو لحظه ای که یک تریس ایجاد میشه، براساس ID و بدون درنظر گرفتن محتوا تصمیم‌گیری میکنه که این تریس سمپل هستش یا نه.
مزیتش اینه ساده و سریعه، ولی نمی‌تونه مثلا تشخیص بده که آیا داخل اون Trace خطا بوده یا نه.
مثال استفادش مثلا میگیم پنجاه درصد کل درخواست هارو نگه دار.

2. Tail Sampling

نمونه برداری بعد از اینکه کل Trace جمع‌آوری شد. می‌تونه براساس شرایطی مثل داشتن خطا، زیاد بودن latency، یا حتی اطلاعات مربوط به یک سرویس خاص تصمیم بگیره. خیلی قدرتمنده ولی نسب به head sampling منابع و هزینه بیشتری میخواد.

مثال tail sampling:
– هر Trace که error داشته باشه رو حتما نگه دار
– اگه latency بالای ۳ ثانیه بود، نگه دار
– تریس هایی که از سرویس جدیدمون شروع می‌شن رو بیشتر نگه دار

گاهی ترکیب Head و Tail Sampling بهترین راهه

مثلا ممکنه یه سیستم خیلی پرحجم اول با Head Sampling فقط ۱۰٪ داده‌ها رو رد کنه، بعد اون ۱۰٪ رو بیاره داخل یه سیستم Tail Sampling تا براساس هوشمندی بیشتر تصمیم بگیره چی رو نگه داره.

پیاده سازی عملی:
ما تو پروژه اپن سورس و مدرن Quick-Connect از opentelemetry برای جمع آوری تریس ها استفاده کردیم و از head sampling هم برای نمونه برداری استفاده کردیم که توی کانفیگ میتونید مشخص کنید به چه صورت باشه.
اگه 0 تنظیم کنید هیچی تریس نمیکنه و اگه 1 تنظیم کنیم صد درصد تریس میکنه.
برای اینکه مشخص کنید ده درصد باشه میتونید روی 0.1 تنظیمش کنید.

https://github.com/syntaxfa/quick-connect/tree/main/adapter/observability/traceotela


#trace #sampling #opentelemetry #observability

@Syntax_fa
Forwarded from یک برنامه نویس تنبل (The Lazy 🌱)
This media is not supported in your browser
VIEW IN TELEGRAM
🔶 این خط پایان ترجمه است؛

این شروع همکاری‌های بین‌المللی و گفتگوی ملت‌ها است و دیگر به زبان محدود نخواهد بود!

گوگل میت قابلیت ترجمه همزمان زنده را فعال کرده؛

کاربران می‌توانند در لحظه صحبت افراد را به زبان خود یا هر زبانی بشنوند!

#خبر

@TheRaymondDev
Forwarded from یه شعر (Poem Bot)
مولانا | دیوان شمس | رباعیات | رباعی شمارهٔ ۹۹

در چشم آمد خیال آن در خوشاب
آن لحظه کزو اشک همی رفت شتاب
پنهان گفتم به راز در گوش دو چشم
مهمان عزیز است بیفزای شراب

#مولانا | گنجور
📍@iipoem
Forwarded from Gopher Academy
🔵 عنوان مقاله
Compress: Optimized Compression Packages for Go

🟢 خلاصه مقاله:

مقاله به تجزیه و تحلیل جامع استانداردهای مختلف فشرده‌سازی پرداخته که شامل zstandard، S2، gzip، snappy، و zip می‌باشد. هر یک از این استانداردها خصوصیات منحصر به فردی دارند و بسته به نیاز کاربردی، سرعت و کارایی فشرده‌سازی، مزایای مختلفی ارائه می‌دهند. این مقاله به خوبی ویژگی‌های کلیدی و موارد استفاده ایده‌آل هر استاندارد را خلاصه کرده است تا افراد و سازمان‌ها بتوانند بر اساس نیازهای خاص فشرده‌سازی داده‌های خود تصمیم‌ گیری کنند.

🟣لینک مقاله:
https://golangweekly.com/link/169230/web


👑 @gopher_academy
متأسفانه چون به چشم خودم دیدم که یک‌جایی pipe ( | ) رو با && اشتباه گرفته بودن، این مطلب رو صرفاً می‌نویسم تا فرقشون رو به صورت خلاصه بگم. بعداً هم اگر حال داشته باشم یک مطلب کلی‌تر توی بلاگم با عکس و نمودار و اینا می‌نویسم که فرق کلیشو بگم.

خب اول از همه با پایپ شروع می‌کنیم، پایپ چی هستش؟

عملگر Pipe ( |) در شل به شما اجازه می‌دهد خروجی یک دستور را مستقیماً به ورودی دستور بعدی منتقل کنید. به عبارت ساده‌تر، وقتی از | استفاده می‌کنید، آنچه را که در خروجی دستور اول تولید می‌شود، به عنوان ورودی دستور دوم دریافت می‌شود.


مثلاً، من یک فایل دارم به اسم foo.txt می‌خوام ببینم این فایل من چند خط هستش.

چیکار می‌کنم؟

cat foo.txt | wc -l


اینطوری خروجی دستور اول رو به عنوان ورودی دستور دوم که wc -l برای نشان دادن تعداد خط هستش می‌فرستم و مثلاً خروجی ۹۱ رو دریافت می‌کنم.


از پایپ می‌تونید استفاده‌های دیگه‌ای هم بکنید :).


حالا && چیه؟
در شل (Shell)، عملگر && هم برای زنجیره‌سازی دستورات به کار می‌رود، اما با یک شرط: دستور بعد از && فقط زمانی اجرا می‌شود که دستور قبل از آن بدون خطا (با موفقیت) اجرا شده باشد.


مثلاً، من می‌خوام یک دایرکتوری بسازم و بعد بهش وارد بشم یا اول سیستمم رو آپگرید کنم بعدش درجا ری‌استارتش کنم:

mkdir foo && cd foo


sudo pacman -Syu --noconfirm && reboot


این کلا یک توضیح ساده بود :)


@SohrabContents