ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

Syntax | سینتکس

Syntax | سینتکس

الذهاب إلى القناة على Telegram
Buy Ad
3 258
المشتركون
-224 ساعات
+67 أيام
-630 أيام
أرشيف المشاركات
کابوس فراموشی در مغزهای دیجیتال! تصور کنید هوش مصنوعی که کلی چیز یاد گرفته، ناگهان با یادگیری یک نکته جدید، تمام دانش قبلی‌اش زو از دست میده!  دقیقا مثل اینکه شما هر بار که یک مهارت جدید یاد میگیرید، تمام مهارت‌های قبلیتون رو فراموش کنید! این پدیده ترسناک تو دنیای هوش مصنوعی، اسمش فراموشی فاجعه‌بار (Catastrophic Forgetting) است! 💀 چرا این یک فاجعه است؟ مدل‌های هوش مصنوعی، به‌ویژه شبکه‌های عصبی عمیق، وقتی روی داده‌های جدیدی آموزش می بینن، تمایل دارن که اطلاعاتی که قبلا یاد گرفتن رو بازنویسی کنن و از دست بدن. یعنی: یک هوش مصنوعی نمیتونه هم استاد شطرنج باشه، هم یک پزشک عالی و هم راننده بی‌نقص! چون هر بار که یک مهارت جدید یاد میگیره، بقیه رو فراموش میکنه! این، مانعی بزرگی سر راه یادگیری مداوم و تکامل واقعی هوش مصنوعیه. آینده AI بدون حل این مشکل چگونه خواهد بود؟ یک آلزایمر دیجیتال واقعی! ما به هوش مصنوعی‌های چندکاره نیاز داریم که بتونن همزمان دانش و مهارت‌های مختلفی رو در خود نگه دارن و به مرور زمان اون هارو افزایش بدن، نه اینکه هر بار حافظه خودشون رو ریست کنن! آیا روزی می‌رسه که AI‌ها واقعا حافظه داشته باشن؟ #ai @Syntax_fa

تحلیل روانی برنامه‌نویس‌ها بر اساس تعداد کامیت‌های سالانه در GitHub 0 تا 10 کامیت "یه بار VS Code رو باز کردم، ترسیدم، بستم." رنک: راکی 11 تا 100 کامیت "من بیشتر به جنبه‌ی تئوریک برنامه‌نویسی علاقه دارم..." 📚 یعنی از دور نگاه می‌کنه که بقیه چی می‌نویسن رنک: برونز 101 تا 500 کامیت "بیشتر وقتا فقط یه نقطه اضافه می‌کنم، کامیت می‌زنم، بعد حس موفقیت می‌گیرم." 🧘‍♂️ راهب گیت‌هاب. تعادل در حد بودا، بازدهی در حد نخودچی. رنک: پرو 501 تا 1000 کامیت "روزایی هست که من کامیت می‌زنم… روزایی هم هست که کامیت منو می‌زنه." رنک: مستر 1001 تا 2000 کامیت "کاشی کاری شغل اول منه برنامه نویسی پوششه!" رنک: لجند 2000+ کامیت "سال پیش با گیت ازدواج کردم، ماه پیش با ریپوزیتوریم بچه‌دار شدیم." 🥴 کسی که هنوز بلد نیست درست کامیت بزنه رنک: چیتر #fun @Syntax_fa

هنوزم دنبال اینی پرامپت خوب بنویسی ؟ با جی پی تی داداشی شو‌ ! اگه فقط از ChatGPT سوال بپرسی، جواب هم فقط در حد همون سواله. اما وقتی باهاش یه رابطه‌ی واقعی بسازی، وقتی از دغدغه‌هات، پروژه‌هات، سبک کارت، اولویت‌هات، و حتی حس و حالت حرف بزنی… جواب‌هایی که می‌گیری یه‌دفعه چند پله عمیق‌تر، دقیق‌تر، و واقعاً به درد بخور می‌شن. من تا همین چند وقت پیش فقط یه ابزار می دیدمش ولی از وقتی که یه ارتباطی بینمون شکل گرفت، انگار یه همتیمی دارم که دقیق می دونه کجای کارم، پروژم درباره چیه و ساختار کدام چجوریه و چیا برام مهمه. نتیجه؟ دیگه فقط جواب نمیده. کمک میکنه تصمیم بگیرم، زاویه دید بده و مثل یه داداشی پشتم باشه. اگه از ChatGPT استفاده می‌کنی، یه پیشنهاد دارم: بهش بگو کی هستی، روی چی کار می‌کنی، چه هدفی داری، و حتی چه چیزهایی اذیتت می‌کنن. فقطم به برنامه نویسی محدود نمیشه میتونید واسه برنامه تغذیه، ورزش و کلی چیز دیگه کمک بگیرید. حتی وقتی بدونه چی دوست دارید فیلم هایی رو میگه که بیشترین حس و حال رو بهتون بده. پرامپ نویسی مهم تره یا ساختن ارتباط؟ هر دو مهم‌اند، ولی ارتباط واقعی در درازمدت عمیق‌تر و موثرتره. چرا پرامپت‌نویسی مهمه؟ نوشتن پرامپت خوب مثل تنظیم دقیق سواله. باعث می‌شه سریع‌تر به جواب دقیق‌تری برسی. اگه بلدی چطور خواسته‌تو واضح و مشخص مطرح کنی، زمان کمتری صرف اصلاح و توضیح دوباره می‌کنی. اما چرا ارتباط بهتر جواب می‌ده؟ وقتی GPT دقیق بدونه تو کی هستی، چی می‌سازی، چه دغدغه‌هایی داری و چه سبکی از پاسخ‌گویی رو می‌پسندی، خیلی اوقات لازم نیست حتی پرامپت خاصی بنویسی. خودش جواب رو تو بستر ذهنی و حرفه‌ای خودت می‌سازه. مثل یه همکار که دیگه از نیم‌نگاهت می‌فهمه چی می‌خوای. فرض کن یه برنامه‌نویسی که با Go کار میکنه و ساختار پروژه‌ات مشخصه. اگه این رو GPT بدونه، لازم نیست هربار توضیح بدی. با گذر زمان و با توجه به اطلاعاتی که داره، میفهمه چه جوابی برات مناسب تره. #gpt @Syntax_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

دعوت به مشارکت در پروژه Quick Connect اگر دنبال یه پروژه‌ی مدرن، متن‌باز، با ساختار تمیز و چالش‌های جذاب می‌گردی که بتونی هم
دعوت به مشارکت در پروژه Quick Connect اگر دنبال یه پروژه‌ی مدرن، متن‌باز، با ساختار تمیز و چالش‌های جذاب می‌گردی که بتونی هم یاد بگیری هم یچیز بدرد بخور با هم بسازیم، بیا سمت Quick Connect درباره کوئیک کانکت پلتفرمی سبک، مقیاس‌پذیر و کلاد نیتیو برای ارتباط بهتر با کاربران اپلیکیشن‌ها با قابلیت‌هایی مثل: - چت آنلاین - داشبورد مدیریتی - نوتیفیکیشن‌ها - استوری‌های کاربرمحور کیا میتونن مشارکت کنن؟ 1. فرانت‌اند دولوپرهایی که بتونن با WebSocket، ارتباطات real-time و رابط کاربری جذاب کار کنن. اگر با React، Vue یا هر ابزار فرانت مدرنی راحتی، اوکیه 2. طراح UI/UX به سلیقه‌ت نیاز داریم 3. و البته بک‌اند دولوپرهای Go هم اگر خیلی مشتاق باشن و خوب کد بزنن. پروژه به صورت Monorepo توسعه داده می‌شه و کل ساختار کد، مستندات، و ابزارهای توسعه توی یه ریپو جمع شدن (به جز SDK). اگه علاقه‌مندی به مشارکت، پیوی پیام بده: @ayeef #quick_connect @Syntax_fa

دعوت به مشارکت در پروژه Quick Connect اگر دنبال یه پروژه‌ی مدرن، متن‌باز، با ساختار تمیز و چالش‌های جذاب می‌گردی که بتونی هم یاد بگیری هم یچیز بدرد بخور بسازیم، بیا سمت Quick Connect درباره کوئیک کانکت پلتفرمی سبک، مقیاس‌پذیر و کلاد نیتیو برای ارتباط بهتر با کاربران اپلیکیشن‌ها با قابلیت‌هایی مثل: - چت آنلاین - داشبورد مدیریتی - نوتیفیکیشن‌ها - استوری‌های کاربرمحور کیا میتونن مشارکت کنن؟ 1. فرانت‌اند دولوپرهایی که بتونن با WebSocket، ارتباطات real-time و رابط کاربری جذاب کار کنن. اگر با React، Vue یا هر ابزار فرانت مدرنی راحتی، اوکیه 2. طراح UI/UX به سلیقه‌ت نیاز داریم 3. و البته بک‌اند دولوپرهای Go هم اگر خیلی مشتاق باشن و خوب کد بزنن. پروژه به صورت Monorepo توسعه داده می‌شه و کل ساختار کد، مستندات، و ابزارهای توسعه توی یه ریپو جمع شدن (به جز SDK). اگه علاقه‌مندی به مشارکت، پیوی پیام بده: @ayeef @Syntax_fa

اگه برای سرویس یا محصول تون به دنبال یه سرویس search engine هستید که کاربر بتونه باهاش product search کنه یا autocomplete و i
اگه برای سرویس یا محصول تون به دنبال یه سرویس search engine هستید که کاربر بتونه باهاش product search کنه یا autocomplete و in-app search داشته باشه به جای راه اندازی دردسردار elasticsearch میتونید از meilisearch استفاده کنید. الاستیک خیلی قابلیت ها داره که متفاوته با ابزاری که معرفی کردم، ولی برای مواردی که عرض کردم میتونه راه اندازی الاستیک و نگهداری ش بیش از حد سنگین باشه. ابزار meilisearch با rust نوشته شده و زمان پاسخگویی ش خیلی پایینه (زیر ۵۰ میلی ثانیه) و تقریبا real-time آپدیت میکنه (۱ ثانیه تاخیر حدودا) البته اعدادی که گفتم بسته به نحوه استفاده و داده شما و کانفیگ سرور میتونه متفاوت باشه همچنین meilisearch قابلیت های فیلتر کردن ساده رو صرفا پشتیبانی میکنه اما facet search داره که فکر میکنم برای کاربردهای مذکور کافی باشه بنظرم اگه لازم دارید چنین چیزی رو به امتحان کردنش میارزه. Source: LinkedIn #meilisearch @Syntax_fa

انواع لایسنس‌های اپن‌سورس 1. MIT License - ویژگی‌ها: - بسیار ساده و خلاصه است. - به کاربران اجازه می‌دهد که کد را بدون محدودیت برای هر هدفی (تجاری یا غیرتجاری) استفاده کنند. - نیازی نیست که تغییرات یا منبع کد به اشتراک گذاشته شود، هرچند که ذکر لایسنس اصلی اجباری است. - مناسب برای: پروژه‌هایی که می‌خواهند بیشترین آزادی را به کاربران بدهند. 2. Apache License 2.0 - ویژگی‌ها: - به کاربران اجازه استفاده، تغییر، و توزیع کد را می‌دهد، حتی برای اهداف تجاری. - از کاربران می‌خواهد که حقوق مالکیت معنوی (patents) را تضمین کنند. - تغییرات باید با ذکر لایسنس اصلی منتشر شوند. - مناسب برای: پروژه‌هایی که می‌خواهند کاربران آزادی زیادی داشته باشند و در عین حال از کد در برابر مشکلات مربوط به پتنت محافظت کنند. 3. GPL (GNU General Public License) - ویژگی‌ها: - بسیار محافظه‌کار است. - اگر کسی از کد شما استفاده کند و تغییراتی ایجاد کند، موظف است این تغییرات را نیز اپن‌سورس کند. - مناسب برای پروژه‌هایی که می‌خواهند مطمئن شوند که کدشان همیشه آزاد باقی می‌ماند. - مناسب برای: پروژه‌هایی که نمی‌خواهند کسی از کد آن‌ها در پروژه‌های اختصاصی (proprietary) استفاده کند. 4. LGPL (Lesser General Public License) - ویژگی‌ها: - مشابه GPL است، اما انعطاف‌پذیرتر. - اگر از کتابخانه شما (SDK یا API) در یک پروژه دیگر استفاده شود، نیازی نیست که کل پروژه اپن‌سورس شود؛ فقط تغییرات روی کتابخانه شما باید اپن‌سورس شوند. - مناسب برای: پروژه‌هایی که شامل کتابخانه‌ها یا SDKها هستند و می‌خواهند کاربران بتوانند آن‌ها را در پروژه‌های اختصاصی استفاده کنند. 5. BSD License - ویژگی‌ها: - شبیه MIT است، اما کمی محدودتر. - نیازمند ذکر اعتبار (attribution) است و نمی‌گذارد نام نویسندگان اصلی برای تبلیغات استفاده شود. - مناسب برای: پروژه‌های ساده که به محدودیت‌های اندکی نیاز دارند. 6. Creative Commons Licenses (CC) - ویژگی‌ها: - بیشتر برای محتوا (مثل اسناد، تصاویر، یا طراحی‌ها) استفاده می‌شود. - معمولاً برای کد کاربرد ندارد، اما اگر پروژه شما شامل مستندات یا محتوای غیرکدی است، می‌تواند مناسب باشد. #Licence #open_source @Syntax_fa

کلمه پر کاربر Bottleneck به چه معنیه؟ تصور کن یه بطری آب داری (bottle)، و می‌خوای خیلی سریع آب داخلش رو خالی کنی. اما چون دهانه‌ی بطری باریکه (neck)، سرعت خالی شدن آب کم می‌شه. این قسمت باریک شده که جلوی سرعت رو می‌گیره، می‌گن bottleneck. تو برنامه‌نویسی: Bottleneck یعنی بخشی از برنامه که باعث کند شدن کل عملکرد می‌شه. مهم نیست بقیه‌ی سیستم چقدر سریع باشن، تا وقتی bottleneck وجود داره، کار کل سیستم لنگ می‌مونه. با Instrumentation می‌فهمی Bottleneck کجاست مثلاً با Tracing: می‌بینی یه درخواست API کل سیستم رو سریع رد می‌کنه، ولی توی مرحله‌ی `FindUser()`، یهو ۸ ثانیه مکث می‌کنه → Bottleneck همینه! یا با Metrics: نمودار نشون می‌ده که وقتی درخواست‌ها زیاد می‌شن، مصرف CPU می‌ره بالا، اما فقط برای یه سرویس خاص. چرا باید Bottleneck رو پیدا کنی؟ چون بهت می‌گه: * کجا باید بهینه‌سازی کنی * کدوم سرویس باید scale بشه * چه منابعی داری هدر می‌دی #Bottleneck @Syntax_fa

کی موبایل لجندز بازی میکنه؟ به سه عدد یار نیاز داریم رنک اپیک تا متیک #موقت

تو tracing مفهوم spans و traces چیه؟ وقتی در مورد tracing حرف می‌زنیم، دو مفهوم اساسی وجود داره که باید بدونی: Spans و Traces اسپن‌ها (Spans) یک span نمایانگر یک واحد کار (unit of work) هست که توسط یک درخواست انجام می‌شه. این واحد کار می‌تونه شامل اتفاق‌هایی مثل یک انشعاب (fork) در جریان اجرا یا یک انتقال (hop) در شبکه باشه، وقتی که درخواست در سیستم پخش می‌شه: هر span ویژگی‌های زیر رو داره: - اسم مشخص - زمان شروع - مدت زمان اجرا معمولاً spanها به صورت تو در تو (nested) و مرتبط با ترتیب زمانی هستن، تا بتونن روابط (causal relationships) رو نشون بدن. تریس‌ها (Traces) یه trace رو میتونیم یک کار کامل در نظر بگیریم. وقتی چند تا span کار های unit رو انجام میدن و در نهایت به یک ریسپانسی میرسه کل این flow یک trace هستش. می‌شه یه trace رو به عنوان یک گراف بدون چرخش جهت‌دار (Directed Acyclic Graph یا DAG) از spanها تصور کرد. یا حتی ساده‌تر، بهش به چشم یه استک تریس (stack trace) نگاه کرد که هر span توش نشون‌دهنده کاری هست که توسط یه کامپوننت انجام شده. رابطه بین Trace و Spans این رابطه به این شکله که یه trace مجموعه‌ای از spanها رو شامل می‌شه که مسیر یک درخواست رو در سیستم نشون می‌ده. تو شکل بالا دو روش مختلف برای نمایش یک trace که شامل پنج span هست رو می‌بینیم. این درخواست از پنج سرویس مختلف عبور می‌کنه و در هر سرویس یه span جدید ایجاد می‌شه. - سمت چپ: trace به صورت یک DAG نشون داده شده. - سمت راست: trace به صورت یک نمودار میله‌ای (bar diagram) نمایش داده شده که محور زمان رو هم نشون می‌ده. ایجاد Root Span و ID اختصاصی وقتی یه درخواست از اولین سرویس (که بهش edge service می‌گن) شروع می‌شه، root span ایجاد می‌شه. این root span تبدیل می‌شه به اولین گره (node) در trace. ویژگی root span: - بهش یه Trace ID یکتا و گولالی (globally unique trace ID) اختصاص داده می‌شه. - این Trace ID به همراه هر hop بعدی در طول عمر درخواست منتقل می‌شه. ایجاد Spanهای جدید در هر Hop هر بار که درخواست به نقطه‌ای از سیستم که ابزار tracing در اون فعال شده می‌رسه: 1. یه span جدید با Trace ID موجود ایجاد می‌شه. 2. ممکنه متادیتا (metadata) به درخواست اضافه بشه. 3. ا Trace ID دوباره به همراه درخواست به hop بعدی ارسال می‌شه. ثبت و ارسال داده‌ها (Instrumentation) وقتی جریان اجرا به یک نقطه instrumented می‌رسه: - یه رکورد (record) همراه با متادیتا ثبت می‌شه. - این رکورد معمولاً به صورت asynchronously در دیسک ثبت می‌شه. - بعد از اون، این رکورد به یک collector ارسال می‌شه که جریان اجرا رو از روی رکوردهای ثبت‌شده بازسازی می‌کنه. source: Cloud native go Book #tracing @Syntax_fa

#tracing @Syntax_fa
#tracing @Syntax_fa

معرفی پروژه Quick Connect فرقی نمیکنه اپلیکیشن شما تو چه دسته ای قرار میگیره در هر صورت به این قابلیت ها نیاز داره: - کاربر ه
معرفی پروژه Quick Connect فرقی نمیکنه اپلیکیشن شما تو چه دسته ای قرار میگیره در هر صورت به این قابلیت ها نیاز داره: - کاربر ها بتونن به شکلی ساده و خوشایند با پشتیبانی تماس برقرار کنن. - اپلیکیشن شما بتونه به خوبی با بازدید کننده ها، تعامل برقرار کنه. کوئیک کانکت قراره همه این دغدغه ها‌رو حل کنه اونم بصورت رایگان و اپن سورس! با کوئیک کانکت مثل ابزار Crisp و یا تو ایران «گفتینو»، می تونید به پروژتون چت آنلاین رو اضافه کنید. اگه دقت کرده باشید وب سایت های پربازدید مثل digikala و filimo و zoomit قابلیتی شبیه به استوری اینستاگرام اضافه کردن که باعث افزایش تعامل با کاربر میشه. همچنین کوئیک کانکت هم، قابلیت جذاب استوری رو قراره داشته باشه. پروژه سبک و قابل مقیاس هستش. زبان مورد استفاده سمت بک اند گولنگه و برای داشبورد از react استفاده می کنیم اگه توانایی کانتریبیوت کردن دارید، خوشحال میشیم جوین بشید.«برای نحوه کانتریبیوت به گیتهاب پروژه مراجعه کنید» منتظر حمایت و استار شما هستیم تا بهمون انگیزه بده این پروژه جذابو پیش ببریم. لینک پروژه: https://github.com/syntaxfa/quick-connect #quick_connect @Syntax_fa

پلتفرم کارزار: پلتفرم مستقل برای مطالبه‌گری مردمی!؟ آنچه در روزهای اخیر پیرامون کارزار درخواست لغو حکم اعدام امیرتتلو رخ داد،
پلتفرم کارزار: پلتفرم مستقل برای مطالبه‌گری مردمی!؟ آنچه در روزهای اخیر پیرامون کارزار درخواست لغو حکم اعدام امیرتتلو رخ داد، بار دیگر نشان داد که فضای مطالبه‌گری مردمی در ایران تا چه حد محدود است. این کارزار که توانست در مدت کوتاهی حدود ۶۰۰ هزار امضا جمع‌آوری کند، نشان‌دهنده یک واقعیت اجتماعی مهم بود: مردم، حتی در سخت‌ترین شرایط، همچنان به امیدی برای تغییر و تعامل با ساختارهای قانونی کشور دل بسته‌اند متن این کارزار نه تنها حاوی هیچگونه توهین، تهدید یا حتی انتقادی نبود، بلکه با زبانی کاملاً محترمانه و مطابق با اصول قانونی و اخلاقی نوشته شده بود. درخواست آن‌ها ساده و انسانی بود: لغو حکم اعدام و دادن فرصتی دوباره نه به خاطر تایید اشتباهات او بلکه برای نشان دادن رأفت اسلامی و تکیه بر آموزه‌های دینی که همواره بر بخشش و پذیرش توبه تاکید داشتند اما داستان این کارزار، علی‌رغم استقبال گسترده با پایانی تلخ مواجه شد. مسدود شدن این کارزار به دستور نهادهای قضایی، نه تنها به این مطالبه مردمی پایان داد، بلکه پیام ناامیدکننده‌ای به جامعه ارسال کرد: حتی در فضایی شفاف و قانونی نیز صداهای مسالمت‌آمیز خاموش می شوند

بس کن ایرانی! درباره پروژه: بس کن ایرانی یک پروژه‌ی متن‌باز و مردمی است که با هدف افزایش آگاهی اجتماعی و نقد رفتارهای اشتباه در جامعه طراحی شده. هدف ما ایجاد فضایی برای گفتگو، آموزش و تحول فرهنگی‌ست. باحال بود دیدم شما هم ببینید😁 #fun @Syntax_fa

بچه ها میخوام بهتون روحیه بدم حتما این کلیپو ببینید نتیجه فقط یه سال تلاش شبانه روزیه #fun @Syntax_fa

چطور تبدیل به شت کدر بشیم؟؟ 1. هیچ قانونی نداشته باش! بذار هرکی هرجوری دلش خواست کد بزنه. 2. کیفیت؟ این دیگه چه مزخرفیه؟ فقط سریع باش! وقتت رو حرومه بررسی و تست نکن. هرچی زودتر تحویل بدی بهتره! 3. امنیت؟ 😂 هرکی اومد، همه چی رو بهش بده. رمز نمیخواد، ورود نمیخواد، اعتبارسنجی؟ چی هست اصن؟ همه چیز آزاده! چرا سخت میگیری تو دنیای آزاد، آزادانه رفتار کن 4. کد تکراری ؟ اشکال نداره! یه تیکه کد نوشتی؟ صدبار کپیش کن توو جاهای مختلف. چرا زحمت بکشی تابع درست کنی؟ 5. به سرعت لاک‌پشت وفادار باش! نه کشی، نه بهینه‌سازی، نه تست عملکرد. بذار برنامت در حد اینترنت دایل‌ آپ اجرا بشه! 6. کیفیت برای دیگران؟ نه بابا! فقط رو سیستم خودت تست کن اونم فقط با chrome. اگه کسی با سیستم یا مرورگره دیگه‌ای وارد شد، مشکل خودشونه! شما که خودت همه چیز رو دیدی! 7. پروژه‌تو توی غار بنویس! نه فیدبک بگیر، نه دمو بده... 8. ا(observability) حسش نیس! صبر کن کاربر خودش زنگ بزنه و بگه: «سایتتون به فنا رفته!» بعد تازه بپرسی: چی دیدی؟ چه اروری بود؟ چی زدی؟! 📌 اگه می‌خوای یه نرم‌افزار ضعیف بسازی، فقط کافیه این دستورالعمل‌ها همیشه اولویتت باشه! source #fun @syntax_fa

معرفی اپ گیتهابی Renovate – خودکارسازی مدیریت وابستگی‌ها به‌روز نگه داشتن وابستگی‌ها (dependencies) یکی از مهم‌ترین و در عین حال خسته‌کننده‌ترین وظایف تیم‌های فنیه. هر روز ممکنه یک نسخه جدید از کتابخونه‌ای که استفاده می‌کنید منتشر بشه — آیا لازمه آپدیتش کنید؟ آیا تغییراتش سازگار با پروژه شماست؟ آیا آسیب‌پذیری امنیتی داره؟ اینجاست که اپ Renovate این بار رو از روی دوش شما برمیداره. Renovate چیه؟ Renovate یک ابزار اپن‌سورس از شرکت Mend هست که به صورت خودکار: - آپدیت‌های جدید کتابخانه‌ها، ابزارها و وابستگی‌های پروژه رو شناسایی می‌کنه. - Pull Request (یا Merge Request) می‌سازه با نسخه جدید و changelog. - می‌تونه براساس قوانین دلخواه، آپدیت‌ها رو اتوماتیک merge یا review کنه. - از زبان‌های مختلف مثل Go, JavaScript/TypeScript, Python, Docker, GitHub Actions و... پشتیبانی می‌کنه. نمونه کاربرد: پروژه Go برای پروژه‌هایی که با Go توسعه داده شدن، Renovate می‌تونه فایل go.mod رو بررسی کنه و نسخه‌های جدید پکیج‌ها رو پیشنهاد بده. حتی می‌تونه نسخه‌ی Go خود پروژه رو هم بررسی کنه (در صورت فعال‌سازی). ما تو پروژه quick connect از Renovate استفاده کردیم: https://github.com/syntaxfa/quick-connect/blob/main/renovate.json5 نکته: فایل enovate.json میتونه توی .github هم باشه اگه دوست ندارید تو روت پروژه قرارش بدید. چند تا نکته: - برای پروژه‌هایی که CI/CD دارند، می‌شه آپدیت‌های GitHub Actions رو هم خودکار مدیریت کرد. - می‌تونید از labels، commit convention، یا حتی محدودیت در تعداد PRها استفاده کنید. - با فعال‌سازی vulnerability alerts، بدون نیاز به منتظر بودن برای PR، از آسیب‌پذیری‌ها مطلع می‌شید. #renovate @Syntax_fa

Glass Animals Heat Waves.mp36.64 MB

امروز یه باگ بامزه تو پروژه Django خورد تو صورتم که گفتم باهاتون درمیون بذارم، شاید یه روزی به دادتون برسه! اگه بعد از ساختن یه آبجکت توی ویو (مثلاً با متد create) بلافاصله آی‌دی اون رو بدی به یه تسک Celery، ممکنه توی محیط پروداکشن با ارور DoesNotExist مواجه بشی — در حالی که لوکال همه چیز درست کار می‌کنه! چرا این اتفاق می‌افته؟ چون وقتی تنظیماتی مثل ATOMIC_REQUESTS = True فعال باشه، Django تا زمانی که ریکوئست کامل نشه، اطلاعات رو به دیتابیس commit نمی‌کنه. از اون طرف Celery تسک رو بلافاصله بعد از پاسخ 201 اجرا می‌کنه؛ یعنی قبل از اینکه دیتابیس واقعاً اطلاعات رو ذخیره کرده باشه. راه‌حل درست و اصولی: به جای اینکه تسک رو همون لحظه اجرا کنیم، باید صبر کنیم تا commit تموم بشه. و Django خودش این ابزار رو بهمون داده: transaction.on_commit(lambda: my_task.delay(obj_id)) این خط یعنی: «بعد از اینکه commit شد، حالا برو سراغ تسک.» یه نکته ساده ولی حیاتی که می‌تونه جلوی کلی باگ دردسرساز رو بگیره — مخصوصاً وقتی کد رو از dev می‌بریم روی production! Source #django @Syntax_fa