Code‌ Agha
197 subscribers
338 photos
20 videos
20 files
277 links
Here we are talking about computer science and the development of software and algorithms and..

Boost: https://t.me/boost/codeaghajcs
Coffie: https://www.coffeebede.com/codeagha
Github : https://github.com/AmirMahdyJebreily
Email : amirmahdyjdx@gmail.com
Download Telegram
Code‌ Agha
پیاده سازی عملیات مخوف CRUD در سازمان آموزش و پرورش کشور 😂😂😂
🐳 برای دوستانی که پرسیدن که CRUD چیست؟

- چهارتا تا عملیات(تابع) مربوط به دیتا هستن که یه مشت مهندس بیکار اومدن مخففش کردن شده CRUD(برا همینم همشو کپتال مینویسم) :

1. Create - ایجاد اطلاعات
2. Read - خوندن همونایی که ایجاد کردی
3. Update - ویرایش و بروزرسانیشون
4. Delete - حذف یکی یا چند تاشون

- عملیات مخوف CRUD که احتمالا دوستان با یه sql server ساده انجام میدن، در حالت پایه با این دستورات زیر که همه بین RDBMS های مختلف عمدتا مشترکن قابل اجراست :

Create :
INSERT INTO اسم جدول (col1, col2, col3)
VALUES (val1, val2, val3);


Read :
SELECT * FROM اسم جدول


Update :
UPDATE اسم جدول
SET col1 = val1, col2 = val2
WHERE شرط;


Delete :
DELETE FROM اسم جدول WHERE شرط;

- البته حالا ما شوخی میکنیم این کد ها هم حالت پایه هستن، ولی CRUD ابتدایی ترین کاریه که میتونین به عنوان مهندس نرم افزار انجام بدین. لازم نیست با پول ملت برید سامانه راد بزنین ("ک" کراد رو حذف کردن دیگه فهمیدین؟) و بعد افتخار کنین بهش !

- نکته مهم دیگه اینه که ما منظورمون از CRUD فقط منظورمون دستورات بانک اطلاعاتی نیست. هرجایی که با دیتا سر و کار داشته باشیم ازش میشه استفاده کرد. در مجموع این چهار تا تابع رو هرجا داشته باشی و بخوای یه دیتایی رو باهاشون بخونی در واقع داری از CRUD استفاده میکنی. مثلا این لینک با Rest api اومده CRUD رو پیاده کرده :

🔗 Codecademy.com/What is CRUD?

- و این هم سایت همون شرکتیه که باعث شد همه ویندوزا کرش کنن 🙃🙃🙃 اینجا هم حتی CRUD رو کامل توضیح داده :

🔗 Crowdstrike/What is CRUD?
#آموزشی
@codeaghajcs
👍1
📄 پنج نکته برای بهتر کردن پرفورمنس کوئری های سی‌کو‌اِل | 5 Tips for Improving SQL Query Performance

- یکی مواردی که توی کار با پایگاه‌داده مهمه، کوئری هاییه که برای استخراج دیتا اجرا میکنید. تقریبا تمام تکنولوژی هایی که برای ارتباط با پایگاه داده این وسط استفاده میکنید سریع هستن و سرعت و پرفرومنس کوئری هاتون تقریبا تنها راه بالاتر بردن سرعت نرم افزار هاتونه. منظور ما هم از پرفورمنس کوئری اینه که کوئری هاتون رو طوری تنظیم کنید که ریسپپانس تایم کمتری داشته باشن و دقیقا اطلاعاتی که لازم دارید رو استخراج کنن نه یه یک جدول بزرگ با هزاران خط و ستون دیتای اضافی !

- مد نظر بگیرید بین همه این پست های یک سالمون، این یکی از مفید ترین مقاله هایی بود که با شما به اشتراک گذاشتم...

🔗 5 Tips for Improving SQL Query Performance

#مقاله #مهم
@codeaghajcs
👍2👌1
📄 راهنمای کش و هدرهای کش برای محتوا های استاتیک | Guide for Caching and HTTP Cache Headers for Static Content
- کش کردن برای صفحات وب امروز یک امر بشدت مهم هست! بطوریکه فرض کن امروز وارد یک سایت شدی و لوگوی اون سایت رو مرورگرت یه بار دانلود کرده، حالا که وارد یه صفحه دیگه میشی، لوگوی اون سایت اگر کش شده باشه دوباره برات دانلود نمیشه و از حافظه پنهان خود مرورگر بازیابی میشه!

🔗 Guide for Caching and HTTP Cache Headers for Static Content

- این هم مقاله کامل تری هست در این مورد در سایت Medum
🔗 A Web Developer’s Guide to Browser Caching

#مقاله
@codeaghajcs
👍1
🐳 معرفی فریمورک FastHTML

- تلاش توسعه دهنده های این فریمورک برای این بود که طراحی صفحات وب رو ساده و آسون تر کنن. در واقع این روزا ما خیلی از پایه ای وب (بقول خودشون) دور شدیم و همش با مدل هایی کار میکنیم که این فرمورک هایبزرگ بخوردمون میدن تا توسعه وب رو راحت تر کنن بقول خودشون، درحالی که میشه از این پایه ها دور نبود و کم کد زد و آسون پیش رفت و سریع هم بود!
- اینجاست که FastHTML با الهام از کلی ابزار توسعه وب دیگه (مهمترینشون FastAPI و Next.Js هستن) میاد وسط تا این کار رو برامون انجام بده !
- میتونید ببینید که چقدر ساده با چند خط کد پایتون هم براتون یه سرور با Routing میاره بالا و هم یه صفحه Html بر میگردونه :
from fasthtml.common import *
page = Html(
Head(Title('Some page')),
Body(Div('Some text, ', A('A link', href='https://example.com'), Img(src="https://placehold.co/200"), cls='myclass')))
print(to_xml(page))

🔗 توضیحات کامل در مورد خودش و تمام تکنولوژی هایی که توش استفاده کردن.

🔗 سایت خودش، شامل داکیومنت هاش

#معرفی_ابزار #مهم
@codeaghajcs
👍1
📄 راهنمای دیزاین پترن های جاوا اسکریپت | JavaScript design patterns guide

- یکی از جملاتی که تو این مقاله خیلی خوب بود :

Design patterns are pre-made blueprints that developers can tailor to solve repetitive design problems during coding.

دیزاین پترن ها الگو هایی از پیش ساخته شده ای هستند که توسعه دهنده ها حین کد نویسی برای جلوگیری از دیزاین تکراری، طراحی کردند.

- خیلی مقاله کامل و دقیقه حتما مطالعه کنید حتی اگر جاوا اسکریپت بلد نیستید!

🔗 JavaScript design patterns guide

#آموزشی #مهم
@codeaghajcs
👍2
🐳 ایران:

- بالقوه اروپا، بالفعل خاورمیانه

@codeaghajcs
🤣4👍2
📄 مسیر یادگیری توسعه فرانت اند | Front-end Development Learning Path

🔗 Front-end Development Learning Path
#آموزشی #مهم
@codeaghajcs
👍2👎1
🐳 کتابایی که باید برا کنکور ایران خوند
VS .
محاسبات ریاضی ناسا برای آپولو هوا کردن


تهش: دانشگاه با اساتیدی که بلد نیستن ریکرشن چیه! 😑😂

#فان
@codeaghajcs
👍3💩2
👍1🤓1
📄 واکنش‌پذیری ناهمزمان | Async Derivations in Reactivity

- واکنش پذیری تو صفحات وب گاهی لازم میشه تا Async پردازش بشه. این مقاله با jsx داره کار میکنه ولی خوبیش اینه که اگر از vue یا هر ابزار دیگه ای استفاده میکنید، میدونید تو بک گراند چه اتفاقاتی میوفته.

🔗 Async Derivations in Reactivity

#آموزشی #وب
@codeaghajcs
👍1
Forwarded from Linuxor ?
اگه مبتدی هستید این سایت بهتون مهندسی معکوس یاد میده. و اینکه چطور بدون داشتن سورس کد یه برنامه از پشتش باخبر بشیم.

x86re.com

🐧 @Linuxor
👍4
🐳 تایپ یک Node در مرورگر ها چیست؟

- مرورگر ها یک Ciritical Render Path دارن که تو این مسیر شروع میکنن و اجزای متن سند HTML رو شناسایی (Token گذاری) میکنند و اون ها رو به یک ساختمان داده tree در ممروی RAM تبدیل میکنن که ما اون رو به اسم Document Object Model یا همون DOM میشناسیم. حالا تو این فرایند که مرورگر درخت اشیاء داخل سند HTML رو میسازه، چیزی از قلم نمیوفته حتی Comment ها!
درواقع بخش های سند HTML همه با هم به این درخت بزرگ اظافه میشن و ما به هر کدوم میگیم یک Node که هر Node یک تایپ داره :
1    ELEMENT_NODE
2 ATTRIBUTE_NODE
3 TEXT_NODE
4 CDATA_SECTION_NODE
5 ENTITY_REFERENCE_NODE
6 ENTITY_NODE
7 PROCESSING_INSTRUCTION_NODE
8 COMMENT_NODE
9 DOCUMENT_NODE
10 DOCUMENT_TYPE_NODE
11 DOCUMENT_FRAGMENT_NODE
12 NOTATION_NODE

- حالا هر نودی که تایپش 1 باشه میشه element.‌ و همونطور که میبینید، میتونید یک کامنت رو داخل این درخت بزرگ اشیاء داشته باشید.

🔗 مطالعه بیشتر
🔗 مطالعه داکیومت های mdn


#آموزشی #مهم
@codeaghajcs
👍1
نسل 3.1 لاما تغییرات جالبی رو با خودش همراه کرد.

این سری از مدل‌های لاما در سه نسخه 8B، 70B و 405B منتشر شدن و یه تغییر بزرگ رو توی جامعه اوپن سورس رقم زدن. این تغییر بزرگ به واسطه انتشار بزرگترین مدل این سری یعنی Llama 3.1 405B اتفاق افتاده. مدلی با 405 میلیارد پارامتر که بزرگترین مدل اوپن سورس تا به امروز هست. تا حالا هیچ کمپانی‌ای مدلی به این عظمت رو اوپن نکرده بود و این یعنی قراره شاهد اتفاقات بزرگی توی جامعه اوپن سورس باشیم.


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


این مدل روی 150 تا بنچمارک مختلف سنجیده شده و اتفاق جالب اینه که توی بنچمارک‌هایی که متا منتشر کرده، به سطحی نزدیک به Claude 3.5 Sonnet، GPT-4 و GPT-4o رسیده و حتی توی بعضی بنچمارک‌ها بهتر عمل کرده. مثلا توی بنچمارک IFeval که مربوط به Instruction following هست، از هردوی Claude Sonnet 3.5 و GPT-4o بهتر عمل کرده.

این نتایج نشون میدن که پیشرفت های موثری تو پرفورمنس مدل های اوپن سورس در حال صورت گرفتن هست.

در رابطه با دو نسخه کوچیک 8 و 70 میلیاردی،
دو تغییر اصلی این دو مدل شامل طول کانتکست 128K و پشتیبانی از چند زبان مختلف مثل انگلیسی، فرانسوی، آلمانی، هندی، ایتالیایی، پرتغالی، اسپانیایی و تای هستن. متأسفانه، زبان فارسی هنوز به‌صورت رسمی به این مدل‌ها اضافه نشده. البته، این مدل‌ها می‌تونن تا حدی فارسی صحبت کنن، اما نمیشه بهشون اعتماد کامل داشت و امیدواریم تو آپدیت‌های بعدی زبان فارسی هم به‌صورت کامل پشتیبانی بشه.

و همینطور عملکرد مدل‌های این نسل توی کدنویسی خیلی بهتر شده.
درکل جز تغییراتی که گفته شد تغییر خیلی مهم دیگه ای صورت نگرفته و این دو مدل صرفا اپدیتی از مدل های قبلی نسل ۳ هستن.


جزییات فنی:

- دیتا: دیتای آموزشی این نسل نسبت به نسل قبل خیلی بزرگتر و باکیفیت‌تر شده. حجم دیتا حدود 15.6 تریلیون توکن هست که تقریباً 8 برابر دیتای نسل قبلی لاما (نسل 2) هست.

- آموزش: مدل 405B با 3.8 × 10**25 FLOPs روی 15.6T توکن آموزش داده شده. این مدل چند ماه توی فاز آموزش بوده و روی 16000 تا تراشه H100 آموزش دیده که در مجموع به 39.3 میلیون ساعت محاسباتی GPU میرسه و چند صد میلیون دلار هزینه داشته. همچنین مدل‌های این سری روی 10 میلیون سوال و جواب انسانی و 25 میلیون داده مصنوعی (synthetic) فاین‌تیون شدن. توی این فرآیند از SFT و DPO استفاده شده. SFT یعنی مدل رو با داده‌های واقعی که انسان‌ها آماده کردن، بهبود دادن. DPO هم روشی برای تنظیم مدل هست که بر اساس ترجیحات انسانی، داده‌های مصنوعی ایجاد می‌کنه تا عملکرد مدل بهتر بشه.

- معماری: توی معماری این سری خبری از روش‌های پیچیده‌ای مثل MoE نیست و از یک معماری ساده Decoder Only استفاده شده. همه مدل‌های این سری از تکنیکی به نام GQA یا Grouped Query Attention استفاده می‌کنن. GQA یه روش هست که با بهینه کردن عملکرد الگوریتم اتنشن، کمک میکنه مدل در طول آموزش، پایداری و کارایی بهتری داشته باشه.
همچنین، مدل رو از فرمت BF16 به FP8 کوانتایز کردن تا حجمش کمتر بشه و جالبه که میگن اینکار باعث شده بتونن مدل رو روی یه نود سرور واحد اجرا کنن.

اجرا و تست مدل‌ها:

مشخصاً مدل بزرگ رو نمیتونین به‌صورت لوکال اجرا کنین و باید از پروایدرهای third-party استفاده کنین. متا با 25 تا سرویس قرارداد داره مثل Nvidia Nims, fire works, ... که مدل هارو ارائه میدن. برای تست نسخه‌های کوچیکتر میتونین از Ollama استفاده کنین. برای استفاده از نسخه 8B کوانتایز شده میتونین با 4090 لودش کنین و نسخه کوانتایز شده 70B هم با A100، L40 یا L40S قابل اجراست.

همچنین از طریق پلتفرم ما هم میتونین از همه مدل های این سری استفاده کنین
نکات اضافی:


- متا گفته که قراره نسل‌های جدید لاما MultiModal باشن.

- متا به زودی یه سرویس API برای این مدل‌ها ایجاد میکنه که با Bing هم سازگار خواهد بود.
👍1
📄 روز 0.0.0.0 یک آسیب پذیری ۱۸ ساله در مرورگر ها که به هکر ها اجازه میده تمام امنیت مرورگر ها رو دور بزنن | 0.0.0.0 Day – 18 Yr Old Vulnerability Let Attackers Bypass All Browser Security

- قصه اینجاست که آی‌پی 0.0.0.0 توی IPv4 کلا ممنوعه و کسی نباید استفاده کنه ولی خب ما میبینیم که کلی ابزار در روز برای حالتای مختلف از این 0.0.0.0 استفاده میکنن.

- و یه سالی هم مرورگر ها به پیشنهاد گوگل اومدن یک استانداردیو به نام PNA پیاده سازی که بخاطرش کروم و مرورگر های کروم بیس و بعد موزیلا و سافاری، اجازه دسترسی به شبکه داخلی از طریق شبکه خارجی رو بطور جدی محروم میکردن.

- با اینکه استفاده از 0.0.0.0 توی IPv4 درست نیست، ولی بعضی از سرورا (مثل unicorn و امثالهم) میان از این به عنوان آدرس دیفالت استفاده میکنن.

- حالا محققا کشف کردن که توی PNA آدرس 0.0.0.0 تعریف نشده و نتیجتا، میشه از این طریق از راه دور به فایل های سرور دسترسی پیدا کرد و کد execute کرد.

🔗 لینک خبر توی Cyber security news

#خبر #مهم
@codeaghajcs
👍1