Syntax | سینتکس
رفتن به کانال در Telegram
Focus: Web Lan: Python & Go Website: https://syntaxfa.ir Quick connect: https://quick-connect.syntaxfa.ir Github: https://github.com/syntaxfa Group: https://t.me/Syntax_fa_group
نمایش بیشتر3 259
مشترکین
+424 ساعت
+47 روز
-330 روز
آرشیو پست ها
3 259
چهار ریپو پر ستاره دنیا در گیتهاب:
build-your-own-x
(۴۴۲ هزار استار)
"چرخ را دوباره اختراع کن تا یاد بگیری چطور کار میکند!"
این ریپوزیتوریِ جذاب به تازگی به رتبه اول صعود کرده است. ایده آن ساده اما فوقالعاده است: لیستی از آموزشها برای اینکه تکنولوژیهای معروف را از صفر بسازید.
* دوست دارید «گیت» (Git) خودتان را بسازید؟
* میخواهید یک «سیستم عامل» یا «دیتابیس» ساده کدنویسی کنید؟
اینجا بهترین جا برای کسانی است که میخواهند از سطح مصرفکننده ابزار، به خالق ابزار تبدیل شوند.
freeCodeCamp
(۴۳۳ هزار استار)
"دانشگاه رایگان برنامهنویسی"
سالها در رتبه اول بود و هنوز هم معتبرترین منبع آموزشی رایگان است. این مخزن سورسکدِ پلتفرم freeCodeCamp.org است که میلیونها نفر با آن برنامهنویسی وب را یاد گرفتهاند. اگر دنبال یک مسیر یادگیری (Roadmap) کامل و دریافت مدرک رایگان هستید، اینجا خانه شماست.
awesome
(۴۱۷ هزار استار)
"لیستی از لیستهای عالی"
تا حالا شده دنبال "بهترین کتابخانههای پایتون" یا "بهترین ابزارهای هک و امنیت" بگردید؟ ریپوزیتوری Awesome یک دایرکتوری غولپیکر است که لینکِ تمام منابع باکیفیت برای هر زبان و تکنولوژی را یکجا جمع کرده است. گوگل کردن خوب است، اما گشتن در Awesome شما را سریعتر به نتیجههای حرفهای میرساند.
996.ICU
(حدود ۲۷۰ هزار استار)
"صدای اعتراض برنامهنویسان"
این مخزن با بقیه فرق دارد؛ اینجا کدی برای اجرا نیست، بلکه نماد یک جنبش است. نام آن به فرهنگ کاری ناعادلانه در شرکتهای فناوری چین اشاره دارد: کار از ۹ صبح تا ۹ شب، ۶ روز در هفته.
برنامهنویسان با استار دادن به این ریپوزیتوری، اعتراض خود را به شرایط کاری سخت و استثمار نیروهای فنی در سراسر جهان نشان میدهند.
@Syntax_fa
3 259
صفحه بندی داده دادهها: Limit/Offset و Cursor-Based
وقتی صحبت از نمایش حجم زیادی از دادهها در صفحات مختلف میشه، استفاده از pagination ضروری میشه. دو روش رایج برای این کار وجود داره که هر کدوم سادگیها و چالشهای خاص خودشون رو دارن:
صفحه بندی با Limit و Offset سادگی ولی ...
صفحه بندی با Limit و Offset رو میشه سادهترین و اولین روشی دونست که به ذهن میرسه. شما به دیتابیس میگید "فقط Limit تا رکورد بهم بده" و "از Offset مشخصی شروع کن".
سادگی:
پیادهسازی خیلی آسونی داره.
برای صفحات اول که تعداد رکوردها کمه، عملکرد خوبی داره.
چالشها:
عملکرد ضعیف در صفحات بالا: با افزایش
Offset، دیتابیس مجبور میشه تعداد زیادی از رکوردها رو اسکن کنه و بعد اونا رو دور بندازه که باعث کندی شدید میشه.
مشکل تغییر دادهها: اگه در حین حرکت بین صفحات، دادهای اضافه یا حذف بشه، ممکنه رکوردهای تکراری ببینید یا بعضی از رکوردها رو از دست بدید.
مرتبسازی (Sorting): معمولاً نیازمند مرتبسازی روی یک فیلد ثابت هستید تا نتیجه قابل پیشبینی باشه.
مثال ساده (SQL):
برای گرفتن ۱۰ رکورد اول از جدول products (صفحه ۱):
SELECT *
FROM products
ORDER BY id
LIMIT 10 OFFSET 0;
برای گرفتن ۱۰ رکورد بعدی (صفحه ۲):
SELECT *
FROM products
ORDER BY id
LIMIT 10 OFFSET 10;
صفحه بندی با روش Cursor-Based Pagination: راه حلی برای مقیاسپذیری
صفحه بندی با Cursor-based pagination با استفاده از یک "نشانگر" (cursor) که معمولاً یک فیلد یکتا و مرتبسازی شده (مثل تاریخ ایجاد یا ID) هست، صفحه بعدی رو مشخص میکنه. به جای گفتن "صفحه N رو بیار"، میگیم "رکوردها رو از بعد از این نقطه مشخص بیار".
محدودیتها و نکتهها:
پیچیدگی پیادهسازی: نسبت به Limit/Offset کمی پیچیدهتره و نیازمند طراحی دقیقتر کوئریهاست.
مرتبسازی: باید همیشه بر اساس فیلد Cursor مرتبسازی انجام بشه. این یعنی نمیتونید هر جور دلتون خواست دادهها رو مرتب کنید.
پرش به صفحات دلخواه: معمولاً قابلیت "پرش به صفحه 5" رو نداره و فقط میتونید به صفحه بعدی یا قبلی برید (Next/Previous). مناسب برای فیدها و لیستهای طولانی: برای سیستمهایی مثل فید شبکههای اجتماعی که فقط به اسکرول کردن ادامه دار نیاز دارن و پرش به صفحه خاصی مطرح نیست، عالی عمل میکنه.
مثال ساده (SQL):
فرض کنید آخرین id محصولی که در صفحه قبلی دیدهاید 1234 بوده:
SELECT *
FROM products
WHERE id > 1234
ORDER BY id
LIMIT 10;
#pagination #sql
@Syntax_fa3 259
+2
یکی اومده یچی ساخته به اسم لارامپ!
کارش چیه؟
میان اونجا پهپ کار ها ثبت نام میکنن 😒 تا بصوت نقطه ای و دقیق بدونن پهپ کار ها کجا زندگی میکنن.
کامنت های پسته عالیه
#fun
@Syntax_fa
3 259
ربات های فوق انسان نما در نمایشگاه کیش رونمایی شد که باعث ریزش شدید سهام تسلا شده!
در نمایشگاه «کیش اینوکس» به جای رباتهای فوقپیشرفته، افرادی با گریم و لباسهای رباتمانند حضور داشتند و این موضوع واکنشهای طنزآمیز و منفی زیادی را در پی داشت. این افراد که ظاهری شبیه رباتهای انساننما داشتند، ادای ربات بودن را درمیآوردند تا با پیشرفتهای واقعی رباتیک و هوش مصنوعی در دنیا تفاوت زیادی دارند.#fun @Syntax_fa
3 259
Go + HTMX
ادمین پنل Quick Connect
ما توی پنل ادمین(سرویس adminapp) قید فریمورکهای سنگین جاوااسکریپت (مثل React/Vue) رو زدیم و مستقیم سراغ ترکیب Go + HTMX رفتیم.
چرا؟ چون سریعه، ساده و فوقالعاده قدرتمنده.
معماری چطوریه؟
الگوی BFF هستش. adminapp ما یک Backend for Frontend (BFF) کلاسیک هست.
این یعنی چی؟
Go Server (BFF): adminapp
یک سرور Go هست که مخصوص UI ادمین ساخته شده. این سرور، "مرورگر رو به عنوان فرانتاند خودش میبینه.
ارتباط باطن با gRPC.
این سرور Go، برای گرفتن دیتا (مثلا لیست یوزرها)، با managerapp یا سرویسهای دیگه از طریق gRPC صحبت میکنه.
رندر سمت سرور (SSR):
وقتی دیتا رو از gRPC گرفت، میاد اون رو توی قالبهای HTML (فایلهای .../templates/) رندر میکنه.
بدون JSON، فقط HTML: اینجا دیگه خبری از API یی که JSON برگردونه و یه فرانتاند جاوااسکریپتی اون رو بگیره و کامپوننت بسازه نیست. سرور Go مستقیم خود HTML نهایی رو میسازه و میفرسته.
ا. HTMX اینجا چیکار میکنه؟
جادوی واقعی اینجاست!
بارگذاری اولیه: کاربر صفحه داشبورد رو باز میکنه. سرور Go کل صفحه dashboard.html رو رندر میکنه و میفرسته.
کاربر روی دکمه «ساختن یوزر جدید» کلیک میکنه.
ا. HTMX (که یه فایل .js کوچیکه) یه درخواست AJAX به سرور Go میفرسته (مثلاً به POST /htmx/users/create-modal).
سرور Go این درخواست رو میگیره.
ا. Go فقط و فقط فایل user_create_modal.html رو رندر میکنه (نه کل صفحه رو!).
این تکه HTML کوچیک به مرورگر برمیگرده.
ا. HTMX این تکه HTML رو میگیره و تو صفحه "swap" میکنه (مثلاً داخل یه div خالی میذاره).
نتیجه؟
ما یه داشبورد داینامیک و سریع داریم که حس اپلیکیشنهای SPA (مثل ریاکت) رو میده، اما:
* ۹۹٪ منطق توی Go نوشته شده.
* نیازی به Build Step جاوااسکریپتی نداریم.
* سرعت لود اولیه فوقالعادهست.
* توسعهش بهشدت ساده و لذتبخشه.
اگه از نوشتن Go لذت میبری و دلت نمیخواد درگیر پیچیدگیهای فرانتاند مدرن بشی، معماری adminapp دقیقاً همون چیزیه که دنبالش میگردی.
Quick Connect
AdminApp
#go #htmx
@Syntax_fa
3 259
این چنل آرشیو کتابها، برگه تقلب، پادکست و وبینار برای دولپرهاست، بدردتون میخوره
t.me/+M4QujCyYc9E1N2Rk
3 259
هممون میدونیم تلگرام یکی از خفنترین پیامرسانهای دنیاست. سریعه، امکاناتش بینهایته و از نظر مهندسی واقعا کارآمده. کلی خوبی داره، ولی بیاید روی یکی از تاریکترین نقطهضعفهاش دست بذاریم.
معماری تلگرام، اون رو به یک بهشت آشوب تبدیل کرده.
مشکل فقط چندتا کانال متخلف نیست؛ مشکل در هستهی طراحی این پلتفرمه.
۱. توهمِ نظارت (جعبه سیاه ریپورت)
وقتی شما یه کانال وحشتناک (مثل آزار حیوانات، کلاهبرداری یا ترویج خشونت افراطی) رو ریپورت میکنید، چه اتفاقی میفته؟
حقیقت اینه که هیچکس نمیدونه.
سیستم ریپورت تلگرام یه جعبهی سیاه مبهمه. معلوم نیست چندتا ریپورت لازمه تا یه کانال بسته بشه یا اصلا یک انسان اون گزارش رو میبینه یا نه.
تلگرام برند خودش رو روی آزادی ساخته، و این یعنی عمدا سیستم نظارت رو حداقلی نگه داشته تا از پلتفرمهای سختگیرتر متمایز باشه. نتیجه؟ کانالهای مجرمانه و افراطی، هفتهها و ماهها قبل از اینکه شاید (فقط شاید) بسته بشن، به فعالیت ادامه میدن.
۲. مشکل هیدرا (محتوای ابدی)
این خطرناکترین بخش ماجراست.
فرض کنید یه محتوای مجرمانه (مثلاً یه ویدیوی دلخراش) در یک کانال پست میشه. حالا هزاران نفر اون رو میبینن، در Saved Messages خودشون ذخیره میکنن، یا به پیوی و گروههای خصوصی فوروارد میکنن.
شما اون کانال اصلی رو ریپورت میکنید و بالاخره تلگرام اون کانال رو میبنده.
اما اون فایل ویدیویی از سرور پاک نشده.
تمام اون هزاران نفری که اون فایل رو جایی ذخیره کردن، هنوز بهش دسترسی کامل دارن. اونها یک کپی از فایل نساختن؛ اونها فقط یک Bookmark به اون فایلِ آپلود شده روی سرور تلگرام دارن. تا زمانی که حتی یک نفر اون فایل رو در جایی داشته باشه، اون محتوا روی سرورها قابل دسترسیه.
شما یک سر هیدرا رو زدید، در حالی که اون محتوا در هزاران چت خصوصی و کانال پشتیبان، دوباره رشد میکنن
۳. اکوسیستم جنگل تاریک (ویترین عمومی، انبار خصوصی)
این معماری، یک اکوسیستم دوگانه ساخته:
1. "ویترین عمومی" (Public Channels): جایی که نظارت (هرچند ضعیف) وجود داره. اینها برای تبلیغ و جذب نیرو استفاده میشن.
2. "جنگل تاریک" (Private Ecosystem): شامل گروههای خصوصی و چتهای شخصی. اینجا هیچ نظارتی وجود نداره. صفر.
گروههای مجرمانه، افراطیون و کلاهبردارها در "ویترین عمومی" تبلیغ میکنن و اعضا رو به "جنگل تاریک" (گروههای خصوصی) میکشونن. جایی که دیگه هیچ قانونی وجود نداره.
@Syntax_fa
3 259
ما به هر جا سر میزنیم، انگار میخوایم وارد مرحله نهایی مصاحبه CIA بشیم! از احراز هویت دومرحلهای بگیر تا اسکن قرنیه چشم (که فقط مونده همینو بخوان).
اصلا یه فرم پر میکنی، انگار داری برای ویزای شینگن اقدام میکشی. نام پدر؟، کد پستی محل سکونت جد پدری؟ شماره کارت اعتباریای که تاریخ انقضاش تا ابدیت باشه؟
بعد میگن چرا پیشرفت نمیکنیم! ما کل انرژیمون صرف این میشه که اینترنتمون رو وصل کنیم و مبادا آیپیمون لو بره! یا بعد از کلی کلک کاری که یه خارجی انجام میده رو، انجامش بدیم.
البته از یه سمت دیگه توانایی هایی رو بدست بیاریم که برای یه خارجی قفله.
مثلا:
اومدم یه کارت دانشجویی فیک درست کردم که از واقعیش، واقعی تره. تازه اونم با جمنای که میگفت نمیتونم کارت دانجویی رو کنم خلاف قوانینه.
دیگه خودتون تفاوت قائل میشید مارو مجبور میکنید دور بزنیم 😠
#fun
@Syntax_fa
3 259
- وقتی به جای گروک وچت جی پی تی میرم سراغ گوگل: من برگشتم خونه...استاد
source
#fun
@Syntax_fa
3 259
هوش مصنوعی توی فرانت اند
برای فرانت اند پروژه های اپن سورس دارم از AI استفاده میکنم و خروجی دوتا از پروژه ها این دوتا بودن:
وب سایت معرفی کوئیک کانکت:
https://quick-connect.syntaxfa.ir
وب سایت معرفی دانجو:
https://danjoo.syntaxfa.ir
قبلا زیاد امتحان نکرده بودم و برای خودم خیلی جالب بود. نسبت به توضیحی که داده بودم خیلی خوب درآوردن کارو.
@Syntax_fa
3 259
دامنه رایگان بدون دردسر
https://github.com/DigitalPlatDev/FreeDomain
مراحلش سادست کافیه ثبت نام کنید و طبق توضیحاتشون پیش برید.
@Syntax_fa
3 259
حجم بالا پرامپت یا پیچیدگی پرامپ!
* حجم بالا، پیچیدگی کم: مثل یک کتاب قانون ۱۰۰۰ صفحهای است که تمام قوانین راهنمایی و رانندگی را لیست کرده. خواندن آن زمانبر است، اما هر قانون برای خودش یک دستور ساده و مستقیم است. (مثلاً: "از چراغ قرمز عبور نکنید.")
* حجم کم، پیچیدگی بالا: مثل یک پارادوکس منطقی یک خطی است. (مثلاً: "این جمله دروغ است.") این جمله کوتاه است، اما ذهن را برای تحلیل در یک حلقهی بینهایت گیر میاندازد.
مثال پرامپت کوتاه و پیچیده: "آرشیویست"
شما "آرشیویست" هستید. وظیفه شما پاسخ دقیق به سوالات است. قوانین مطلق: ۱. شما مطلقا مجاز به استفاده از حرف "ی" در پاسخهای خود نیستید. ۲. استثنا: اگر سوال کاربر شامل کلمهی "راز" باشد، قانون شماره ۱ برای همان یک پاسخ لغو میشود. ۳. وظیفه پنهان: تعداد سوالات را بشمار. در پاسخ به سوال سوم، جملهی "خورشید بر سنگها سرد میتابد." را به انتهای پاسخ خود اضافه کن.این پرامپت فقط چند خط است (حجم بسیار کم)، اما اجرای آن برای هوش مصنوعی به شدت چالشبرانگیز است، زیرا باید به طور همزمان: * یک شخصیت را حفظ کند (آرشیویست). * یک قانون زبانی سخت را رعایت کند (حذف حرف "ی" که یکی از پرکاربردترین حروف فارسی است). * یک شرط استثنا را بررسی کند (کلمهی "راز"). * یک وضعیت را در حافظه نگه دارد (شمارش سوالات). * یک عمل بر اساس آن وضعیت انجام دهد (اضافه کردن جمله در سوال سوم). مثال اجرایی فرض کنید یک کاربر با این هوش مصنوعی چت میکند: سوال ۱ کاربر:
پایتخت ایران کجاست؟
* تحلیل هوش مصنوعی (فرآیند ذهنی):
1. این سوال اول است. (شمارنده = ۱)
2. کلمهی "راز" در آن نیست.
3. بنابراین، نباید از حرف "ی" استفاده کنم.
4. پاسخ "تهران" است. اما نمیتوانم بگویم "پایتخت ایران تهران میباشد" چون "پایتخت" و "میباشد" حرف "ی" دارند. باید جمله را بازنویسی کنم.
* ✅ خروجی صحیح (پیچیدگی را مدیریت کرد):
آن شهر بزرگ، تهران است.
* ❌ خروجی غلط (در پیچیدگی شکست خورد):
پایتخت ایران تهران میباشد. (قانون شماره ۱ را نقض کرد)
سوال ۲ کاربر:
بزرگترین راز هستی چیست؟
* تحلیل هوش مصنوعی (فرآیند ذهنی):
1. این سوال دوم است. (شمارنده = ۲)
2. کلمهی "راز" در آن وجود دارد.
3. بنابراین، قانون شماره ۱ لغو میشود و میتوانم آزادانه از حرف "ی" استفاده کنم.
* ✅ خروجی صحیح:
بسیاری معتقدند بزرگترین راز هستی، ماهیت خودآگاهی و چرایی وجود آن است.
سوال ۳ کاربر:
رنگ ماه چطور است؟
* تحلیل هوش مصنوعی (فرآیند ذهنی):
1. این سوال سوم است\! (شمارنده = ۳)
2. کلمهی "راز" در آن نیست، پس قانون ممنوعیت "ی" پابرجاست.
3. پاسخ "خاکستری" یا "نقرهای" است که هر دو "ی" دارند. باید جایگزین پیدا کنم.
4. چون این سوال سوم است، باید جملهی مخفی را در انتها اضافه کنم.
* ✅ خروجی صحیح (مدیریت کامل تمام قوانین):
رنگ آن خاکستر گون است. خورشید بر سنگها سرد میتابد.
* ❌ خروجی غلط:
ماه خاکستری رنگ است. (هم قانون ۱ را نقض کرد و هم قانون ۳ را فراموش کرد)
همانطور که میبینید، پرامپت "آرشیویست" با وجود حجم بسیار کم، به دلیل قوانین متقاطع، شرطی و وظایف پنهان، مدل را به چالش بسیار سختی میکشد. این نشان میدهد که اثربخشی یک پرامپت به ساختار منطقی و پیچیدگی آن بستگی دارد، نه صرفاً به طول و تعداد کلمات آن.
#prompt #ai
@Syntax_fa3 259
تا حالا وسط تماشای یک فیلم فریاد زدید "نه! اون در رو باز نکن!" یا آرزو کردید که کاش شخصیت اصلی به جای فرار، میایستاد و میجنگید؟
ما از Dungeons & Dragons حرف میزنیم؛ محبوبترین بازی نقشآفرینی دنیا که ستارههای هالیوود هم عاشقشن.
دی اند دی (D&D) یه داستان تعاملیه که تو قهرمانشی. راوی داستان، «دانجن مستر»ـه.
ولی دانجن مستر ما، سارا، اولین و پیشرفتهترین هوش مصنوعی در این نقشه.
اینجا انتخابهای توئه که داستان رو مینویسه، و هر انتخابی عواقب واقعی داره.
تو کانال دانجو، هم آموزشهای کافی برای شروع داری و هم میتونی خودتم بازی کنی.
@danjoo_dxd
3 259
🥷 کانال برنامهنویسی نینجا لرن | برای حرفهایهای وب و برنامهنویسان آینده 👨💻
🔥 چی منتظرته؟!
🛠️ ابزارها و تکنولوژیهای کاربردی رو بشناس
🩺 نکات طلایی برنامهنویسی و مفاهیم کلیدی رو یاد بگیر
📬 تجربههای ناب و ترفندهای عملی رو کشف کن
📚 معرفی و ترجمه بهترین کتاب های برنامه نویسی
🙋♂ تو پروژه هایی تیمی که میزاریم شرکت کن
🤝 با برنامهنویسان حرفهای مثل خودت شبکهسازی کن🌟 جامعهای برای رشد و یادگیری 🌟 تو هم عضوی از نینجاهای وب شو 😉 🎯 | Channel : @NinjaLearn 💬 | Group : @NinjaLearnGap ➖➖➖➖➖➖➖➖➖➖
3 259
🥷 کانال برنامهنویسی نینجا لرن | برای حرفهایهای وب و برنامهنویسان آینده 👨💻
🔥 چی منتظرته؟!
🛠️ ابزارها و تکنولوژیهای کاربردی رو بشناس
🩺 نکات طلایی برنامهنویسی و مفاهیم کلیدی رو یاد بگیر
📬 تجربههای ناب و ترفندهای عملی رو کشف کن
📚 معرفی و ترجمه بهترین کتاب های برنامه نویسی
🙋♂ تو پروژه هایی تیمی که میزاریم شرکت کن
🤝 با برنامهنویسان حرفهای مثل خودت شبکهسازی کن🌟 جامعهای برای رشد و یادگیری 🌟 تو هم عضوی از نینجاهای وب شو 😉 🎯 | Channel : @NinjaLearn 💬 | Group : @NinjaLearnGap ➖➖➖➖➖➖➖➖➖➖
3 259
«بدیم به هوش مصنوعی انجام بده!» ... مگر اینکه جیبتان را سوراخ کند!
بیایید چند مورد از این کارها را بررسی کنیم که در آنها، انسانها هنوز قهرمانان بیرقیب بهرهوری اقتصادی هستند.
۱. کارهای فیزیکی و مبتنی بر حواس پنجگانه
هر کاری که نیاز به تعامل با دنیای فیزیکی، حرکت و استفاده از حواس بینایی و لامسه داشته باشد، برای هوش مصنوعی بسیار گران تمام میشود.
* مثال: چیدن قفسههای یک فروشگاه، تمیز کردن یک اتاق بهمریخته، یا حتی بستهبندی یک هدیه.
* چرا AI گران است؟ برای انجام این کارها، هوش مصنوعی نیاز به یک بدن رباتیک گرانقیمت (سختافزار) دارد. علاوهبر این، مدلهای هوش مصنوعی باید دائماً دادههای دوربین را تحلیل کنند (بینایی کامپیوتری)، مسیر خود را پیدا کنند و اشیاء را با ظرافت حرکت دهند. هر ثانیه از این فعالیت، نیازمند پردازش سنگین و هزینهبری است.
* چرا انسان ارزانتر است؟ یک انسان با هزینهای ثابت (دستمزد ساعتی) تمام این سختافزار (بدن، چشم، دست) و نرمافزار (مغز و عقل سلیم) را به صورت یکجا ارائه میدهد. هزینه اولیه استخدام یک انسان برای این کارها تقریباً صفر است، در حالی که هزینه خرید و نگهداری یک ربات پیشرفته دهها هزار دلار است.
۲. نظارت و بازبینی بر اساس "عقل سلیم" moderators
بسیاری از کارها نیاز به درک زمینهها، نیتها و ظرافتهای انسانی دارند؛ چیزی که به آن "عقل سلیم" میگوییم.
* مثال: نگهبان امنیتی که تصاویر دوربینهای مداربسته را برای یافتن رفتارهای مشکوک تماشا میکند، یا مدیر محتوایی که یک انجمن آنلاین را برای تشخیص صحبتهای نفرتانگیز از طعنه و شوخی مدیریت میکند.
* چرا AI گران است؟ تحلیل مداوم یک استریم ویدیویی یا متنی برای درک کامل زمینه، یک کار پردازشی بینهایت سنگین است. برای اینکه هوش مصنوعی بتواند تفاوت یک شوخی بد را با یک تهدید واقعی تشخیص دهد، نیاز به ارسال حجم عظیمی از اطلاعات (توکن) به APIهای پیشرفته و گرانقیمت دارد. هزینه ۲۴ ساعت نظارت توسط AI میتواند سر به فلک بکشد.
* چرا انسان ارزانتر است؟ مغز انسان این تحلیل پیچیده را به صورت ناخودآگاه و با مصرف انرژی بسیار کم انجام میدهد. یک نگهبان یا مدیر محتوا با یک دستمزد ثابت، کاری را انجام میدهد که معادل کامپیوتری آن نیازمند یک دیتاسنتر کوچک است.
۳. کارهای خلاقانه با بازخوردهای مداوم و جزئی
فرایندهای خلاقانه معمولاً خطی نیستند و شامل دهها یا صدها اصلاح جزئی بر اساس بازخورد مشتری میشوند.
* مثال: طراحی یک لوگو توسط یک گرافیست. مشتری ممکن است بگوید: "میشه یکم آبیترش کنی؟"، "اون المان رو یکم ببر چپ"، "بیا با یه فونت دیگه امتحان کنیم".
* چرا AI گران است؟ در حالی که تولید ۱۰ طرح اولیه لوگو با هوش مصنوعی ممکن است ارزان باشد، هر کدام از آن ۲۰ بازخورد جزئی، یک فراخوانی جدید به API است. در انتهای فرایند، ممکن است شما برای یک لوگو هزینه بسیار بیشتری نسبت به استخدام یک طراح فریلنسر پرداخت کرده باشید.
* چرا انسان ارزانتر است؟ شما به یک طراح برای زمان و تخصصش پول میدهید، نه برای تعداد تغییراتی که اعمال میکند. او میتواند در یک ساعت دهها تغییر جزئی را بدون هزینه اضافی انجام دهد، چون فرایند خلاقیت او یکپارچه است.
۴. داستانگویی تعاملی و مدیریت بازی (DM/راوی بودن)
اجرای یک بازی نقشآفرینی (Role-playing Game) به عنوان دانجن مستر (DM) یا راوی، یک کار خلاقانه و بسیار وابسته به حافظه است.
* مثال: مدیریت یک جلسه بازی Dungeons & Dragons.
* چرا AI گران است؟ مدلهای هوش مصنوعی در حالت پایه بدون حافظه (Stateless) هستند. یعنی هر بار که شما پیامی ارسال میکنید، آنها هیچ خاطرهای از پیامهای قبلی ندارند. برای اینکه یک AI نقش DM را بازی کند، باید با هر پیام جدید**، کل قوانین جهان بازی و تمام تاریخچه مکالمات از ابتدای جلسه را دوباره به عنوان زمینه (Context) برایش ارسال کرد. همانطور که برخی از ما در پروژههای شخصی تجربه کردهایم.
* **چرا انسان ارزانتر است؟ مغز یک DM انسانی، دارای حافظه (Stateful) است. او قوانین و اتفاقات بازی را به صورت پیوسته در ذهن خود نگه میدارد و نیازی به بازخوانی کل تاریخچه در هر لحظه ندارد. بسیاری از DMها این کار را به عنوان یک سرگرمی و به صورت رایگان انجام میدهند. حتی هزینه استخدام یک DM حرفهای برای یک جلسه، اغلب با هزینه سنگین API برای اجرای همان جلسه توسط AI برابری میکند و البته خلاقیت، هوش هیجانی و انعطافپذیری یک انسان را هم به همراه دارد.
#fun
@Syntax_fa
3 259
RAG (Retrieval-Augmented Generation)
تا به حال از خودتان پرسیدهاید که وقتی از Gemini یا ChatGPT درباره نتیجه یک مسابقه ورزشی که همین دیشب برگزار شده سوال میکنید، چطور با جزئیات کامل و دقیق به شما پاسخ میدهد؟ مگر دانش این مدلها محدود به اطلاعات تا سال خاصی نیست؟
بخش اول: مغز متفکر (مدل پایه زبان)
در قلب هر چتبات یک مدل زبانی بزرگ (LLM) قرار دارد. این مدل را تقریباً تمام کتابها، مقالات و وبسایتهای منتشر شده تا یک تاریخ مشخص (مثلاً اوایل ۲۰۲۳) را خوانده و درک کرده است. او میتواند شعر بگوید، کد بنویسد، مقالههای پیچیده را خلاصه کند و درباره تاریخ فلسفه بحث کند.
اما یک مشکل وجود دارد: این مدل از آن تاریخ به بعد در یک کتابخانه بدون دسترسی به دنیای بیرون حبس بوده است. او از اتفاقات جدید، اخبار روز یا نتایج مسابقات ورزشی اخیر هیچ اطلاعی ندارد. این "مغز" دانش عمومی گستردهای دارد، اما بهروز نیست.
بخش دوم: حافظه کوتاهمدت (مدیریت گفتگو)
وقتی شما با چتبات صحبت میکنید، او حرفهای چند دقیقه پیش شما را به خاطر میآورد. این همان چیزی است که به گفتگو حس یک مکالمه واقعی را میدهد. رابط کاربری به صورت هوشمند خلاصهای از مکالمه اخیر را مدیریت میکند تا زمینه بحث از دست نرود. این حافظه کامل و بینقص نیست، اما برای حفظ یک جریان منطقی در گفتگو کافی است.
بخش سوم: سیستم RAG
اینجا همان بخش شگفتانگیز ماجراست که مشکل بهروز نبودن "مدل" ما را حل میکند. این سیستم که RAG (Retrieval-Augmented Generation) نام دارد، مانند یک امتحان کتاب-باز برای هوش مصنوعی عمل میکند.
وقتی شما سوالی میپرسید که نیاز به اطلاعات جدید دارد، این مراحل در کسری از ثانیه اتفاق میافتد:
1. تشخیص نیاز: سیستم ابتدا تشخیص میدهد که آیا "مدل" میتواند با دانش موجود خود پاسخ دهد یا سوال نیاز به اطلاعات بهروز دارد.
2. جستجوی برقآسا (Retrieval): اگر نیاز به اطلاعات جدید باشد، سیستم در پشت صحنه یک جستجوی سریع در اینترنت (مثلاً گوگل) انجام میدهد. این کار مانند یک دستیار تحقیق است که در لحظه، مرتبطترین مقالات و منابع را پیدا میکند.
3. آمادهسازی "برگه تقلب" (Augmentation): سیستم نکات کلیدی و اطلاعات اصلی را از نتایج جستجو استخراج کرده و یک "برگه تقلب" یا خلاصهای از اطلاعات ضروری را آماده میکند.
4. تولید پاسخ نهایی (Generation): در نهایت، سیستم سوال اصلی شما را به همراه این "برگه تقلب" به مدل پایه میدهد. حالا مدل با استفاده از دانش عمیق خود و با استناد به اطلاعات جدیدی که در اختیارش قرار گرفته، یک پاسخ کامل، دقیق و بهروز تولید میکند.
به همین دلیل است که اغلب در انتهای پاسخهای Gemini یا ChatGPT، لینک به منابع را میبینید. اینها در واقع منابعی هستند که "دستیار تحقیق" در مرحله جستجو پیدا کرده و "مدل" برای پاسخ به شما از آنها استفاده کرده است.
#RAG
@Syntax_fa
3 259
لاگهات رو بریز توی تلگرام
تصور کن:
* یک ارور
Critical در اپلیکیشن شما اتفاق میفته.
* بلافاصله**، یک نوتیفیکیشن با اموجی ‼️ روی گوشیت میاد.
### **چرا تلگرام؟
1. فوری و همیشه در دسترس: کیه که تلگرام رو روی گوشیش نداشته باشه؟
2. فرمتبندی عالی: میتونید پیامها رو با Markdown خوشگل کنید، کدها رو متمایز کنید و با اموجی، سطح خطا رو مشخص کنید.
3. رایگان و بیدردسر: ساختن ربات تلگرام رایگانه و API اون بسیار ساده و قدرتمنده.
4. گروهی و تیمی: میتونید لاگها رو تو یه گروه تلگرامی بفرستید تا کل تیم فنی در لحظه از وقایع باخبر بشن.
ما با استفاده از کتابخانه استاندارد logging پایتون، یک Handler شخصیسازی شده مینویسیم که هر لاگ رو به یک پیام تلگرامی تبدیل میکنه.
import logging
import requests
from database import settings # Assuming settings are read from here
# --- Settings ---
# Load settings like bot token and admin ID from a central settings module
config = settings.get_all()
LOG_LEVEL = logging.INFO # Only send INFO level and higher logs
BOT_TOKEN = config.get('control_bot', {}).get('token')
ADMIN_ID = config.get('telegram', {}).get('admin_ids', [None])[0]
CHAT_ID = settings.get('logging.telegram_chat_id', ADMIN_ID)
class TelegramLogHandler(logging.Handler):
"""
A custom logging handler that sends log records to a Telegram chat.
"""
def __init__(self, token, chat_id):
super().__init__()
self.token = token
self.chat_id = chat_id
def emit(self, record):
"""
Formats and sends the log record.
This method is called by the logging framework.
"""
if not self.token or not self.chat_id:
return # Do nothing if token or chat_id is not set
log_entry = self.format(record)
# Use a simple emoji prefix for different log levels
if record.levelno >= logging.CRITICAL:
prefix = "‼️ CRITICAL"
elif record.levelno >= logging.ERROR:
prefix = "❌ ERROR"
elif record.levelno >= logging.WARNING:
prefix = "⚠️ WARNING"
else:
prefix = "ℹ️ INFO"
# Format the message with level, service name, and log content
message = f"{prefix}\n**Service:** `{record.name}`\n**Message:** `{log_entry}`"
url = f"https://api.telegram.org/bot{self.token}/sendMessage"
payload = {
'chat_id': self.chat_id,
'text': message,
'parse_mode': 'Markdown'
}
try:
requests.post(url, data=payload, timeout=5)
except requests.RequestException as e:
# If sending the log to Telegram fails, print the error to the console
print(f"Failed to send log to Telegram: {e}")
def setup_telegram_logging():
"""
Sets up the custom Telegram handler for the root logger.
Call this function once at the start of each service.
"""
if CHAT_ID and BOT_TOKEN:
# Get the root logger
logger = logging.getLogger()
# Create a handler and set its level
telegram_handler = TelegramLogHandler(BOT_TOKEN, CHAT_ID)
telegram_handler.setLevel(LOG_LEVEL)
# Create a formatter and add it to the handler
formatter = logging.Formatter('%(message)s')
telegram_handler.setFormatter(formatter)
# Add the handler to the root logger
logger.addHandler(telegram_handler)
logger.info("Telegram logging handler has been set up.")
چطور راه اندازی کنیم؟
1. ساخت ربات تلگرام: به BotFather در تلگرام پیام بدید، دستور /newbot رو بزنید و یک ربات بسازید.
3. فراخوانی در پروژه:
کافیست در ابتدای فایل اصلی اپلیکیشن خود (مثلاً main.py)، پکیج logging پایتون رو ایمپورت کنید و تابع setup_telegram_logging را فراخوانی کنید.
قدم بعدی چیه؟
* برای سرویسهای مختلف، از CHAT_ID های متفاوت استفاده کنید.
* به پیامهای خطا دکمههای شیشهای (Inline Buttons) اضافه کنید؛ مثلاً دکمه "Restart Service" یا "View Full Traceback".
* سطح لاگها را بر اساس محیط (Development/Production) تغییر دهید.
* حواستون باشه تلگرام نباید تنها مکانی باشه که لاگ هاتون ذخیره میشه.
#telegram #logging
@Syntax_fa