Dev Perfects
40 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
تجربه برنامه‌نویسی با نرون‌های کمتر :)

چند روز پیش مسئله‌ای پیش آمد که باید داده‌های سایت اداره کل حقوقی قوه قضاییه کرول شود. اما چون این سایت که با فریمورک ASP MVC پیاده‌سازی شده و برای جلوگیری از CRAWL از یک توکن در صفحه به صورت hidden استفاده می‌کند، امکان کرول مستقیم API آن وجود نداشت و باید حتما صفحه ابتدا باز شده و پس از بررسی آن مقدار هش، سپس درخواست‌های API ارسال شود. این چالش فرصتی فراهم کرد که مدل جدید Claude 3.7 sonnet را به صورت thinking امتحان کنم.
ابتدا پروژه را در گیت ساختم و چند فایل خالی به عنوان ساختار اولیه ایجاد کردم. سپس برای ورودی و خروجی API با استفاده از مدل claude-3.7-sonnet-thinking در crusor مدل‌های pydantic ساختم.
توضیحات قدم به قدم اجرای پروژه را در این مقاله به همراه پرامپت‌ها نوشتم.

https://virgool.io/@code/claude-37-sonnet-irwyrfawspao

@DevTwitter | <Mohammadreza Shaghouzi/>
Forwarded from Geek Alerts
نسخه جدید اپ Gemini توی IOS یه سری ویجت توی لاک اسکرین هم نمایش میده، داخل این ویجت میشه کارهایی مثل تایپ پرامپت، مکالمه یا دستیار صوتی و اشتراک‌گذاری تصویر و فایل رو داشت. در واقع دسترسی به Gemini بسیار سریع‌تر و ساده تر هست.

🔗 testingcatalog
🤓 @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
خب خب خب Design Patterns 🏗

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

🧠 ‏Design Patterns چیه؟

Design Patterns یا الگوهای طراحی، راه‌حل‌های استاندارد و امتحان‌شده‌ای هستن برای مشکلات رایجی که تو طراحی نرم‌افزار بهشون برمی‌خوریم. این الگوها مثل یه نقشه‌ی راهن که به شما نشون می‌دن چطور یه مسئله‌ی خاص رو به بهترین شکل ممکن حل کنین. این مفهوم اولین بار تو کتاب معروف Gang of Four یا GoF
معرفی شد. این کتاب سال ۱۹۹۴ منتشر شد و هنوزم یه منبع معتبر و مرجع به حساب میاد.

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

📚 انواع Design Patterns
طبق دسته‌بندی Gang of Four، الگوهای طراحی به سه دسته‌ی اصلی تقسیم می‌شن:

1⃣Creational Patterns (الگوهای ساختاری):
این الگوها با نحوه‌ی ساختن اشیاء (Objects) سر و کار دارن و به شما کمک می‌کنن که اشیاء رو به روش‌های انعطاف‌پذیر و بهینه بسازین.

2⃣Structural Patterns (الگوهای ساختاری):
این الگوها درباره‌ی سازمان‌دهی و ارتباط بین کلاس‌ها و اشیاء هستن تا ساختار کِدتون منظم‌تر بشه.

3⃣Behavioral Patterns (الگوهای رفتاری):
این الگوها روی تعاملات و مسئولیت‌های بین اشیاء تمرکز دارن و باعث می‌شن ارتباط بین بخش‌های مختلف برنامه‌تون بهتر بشه.

حالا بریم سراغ یه مثال پایتونی از هر دسته تا دقیق ببینین چطور کار می‌کنن.

1️⃣ ‏Creational Pattern: Singleton (تک‌تون)

الگوی Singleton مطمئن می‌شه که از یه کلاس فقط یه نمونه (Instance) ساخته بشه و همه‌جای برنامه به همون یه نمونه دسترسی داشته باشن.

مثال:
فرض کنین می‌خواین یه سیستم لاگ داشته باشین که فقط یه شیء ازش وجود داشته باشه:
class SingletonLogger:
# متغیر استاتیک برای ذخیره‌ی نمونه
_instance = None

# بازنویسی متد __new__ برای کنترل ساخت نمونه
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance

def log(self, message):
print(f"Log: {message}")

# تست کردن
logger1 = SingletonLogger()
logger2 = SingletonLogger()

# چک می‌کنیم که آیا هر دو متغیر به یه شیء اشاره می‌کنن
print(logger1 is logger2) # خروجی: True
logger1.log("سلام دنیا") # خروجی: Log: سلام دنیا
logger2.log("تست دوم") # خروجی: Log: تست دوم

توی متد new چک می‌کنیم که آیا _instance قبلاً ساخته شده یا نه. اگه نشده باشه، یه نمونه جدید می‌سازیم.

چون logger1 و logger2 به یه شیء اشاره می‌کنن، هر تغییری که با یکی بدین، روی اون یکی هم اعمال می‌شه.

خروجی True نشون می‌ده که فقط یه نمونه از SingletonLogger وجود داره.


2️⃣Structural Pattern: Adapter (آداپتور)
الگوی Adapter مثل یه پل عمل می‌کنه که دو کلاس با رابط‌های (Interface) متفاوت رو به هم وصل می‌کنه.

مثال:
فرض کنین یه کلاس قدیمی به اسم OldPrinter دارین که متد print_text داره، ولی سیستم جدیدتون از متد print پشتیبانی می‌کنه:
# کلاس قدیمی
class OldPrinter:
def print_text(self, text):
print(f"Old Printer: {text}")

# آداپتور
class PrinterAdapter:
def __init__(self, old_printer):
self.old_printer = old_printer

def print(self, text):
self.old_printer.print_text(text)

# تست کردن
old_printer = OldPrinter()
adapter = PrinterAdapter(old_printer)

adapter.print("سلام از سیستم جدید") # خروجی: Old Printer: سلام از سیستم جدید

کلاس OldPrinter یه متد قدیمی داره به اسم print_text.
کلاس PrinterAdapter یه نمونه از OldPrinter رو می‌گیره و متد print رو به print_text وصل می‌کنه.
حالا سیستم جدیدتون می‌تونه با adapter.print() کار کنه، بدون اینکه OldPrinter رو تغییر بدین.

3️⃣Behavioral Pattern: Observer (ناظر)
الگوی Observer یه رابطه‌ی یک‌به‌چند بین اشیاء تعریف می‌کنه. یه شیء اصلی (Subject) وقتی وضعیتش تغییر می‌کنه، به‌طور خودکار به همه‌ی ناظرها (Observers) خبر میده

مثال:
فرض کنین یه سیستم اعلان دارین که وقتی پیام جدید میاد، همه‌ی کاربرها باخبر بشن:

ادامه, پست بعد
🔥 مشاهده و دنبال کردن Log با lnav
مطالعه فایل لاگ بهترین راه برای پیدا کردن مشکل یک سیستم است
🗓 ابزار های زیادی tail/grep/less به صورت standard Unix utilities و
حتی بهینه شده مثل btail یا Toolong که قبلا معرفی کرده بودم هستند ولی فقط پردازش میکنند فایل لاگ را نمیفهمند

☀️ ابزار LNAV -- The Logfile Navigator با قابلیت :
💠تشخیص فرمت فایل
💠ترکیب کردن فایل
💠دنبال کردن، تغییر نام ، ساخت index ازerrors و warnings فایل
💠و خروجی کار با Json
قابلیت بیشتر اینجا
⚙️ برای نصب
 brew install lnav

البته میتوانید آنلاین هم تست کنید یا با نام کاربردی "tutorial 1" آموزش ببینید
$ ssh [email protected]
$ ssh [email protected]

👨🏻‍💻روش استفاده
$ lnav /path/to/file1 /path/to/dir ...
$ journalctl | lnav
$ journalctl -f | lnav

بخش journalctl -o json | lnav برای من کار نکرد کرش میکنه شما تست کنید شاید مشکل از سیستم تست منه

مستندات
❤️ ممنون از حمایت هاتون 💐🌺

#linux #devops #security
This media is not supported in your browser
VIEW IN TELEGRAM
یک کورس جدید بازهم از HuggingFace و این یکی راجع به reasoning و reinforcement learning هست. این مفاهیم را کامل توضیح میده و اینکه چطور مدل DeepSeek R1 کار میکنه به همراه روش آموزش این مدل. واقعا این کورس ارزشش را داره.
Link: https://huggingface.co/learn/nlp-course/en/chapter12/1

@DevTwitter | <Mehdi Allahyari/>
Forwarded from Agora (Alireza Azadi)
Forwarded from Python Hints
ابزار تقلب توی مصاحبه :

Interview Coder AI tool

این ابزار کاملاً open source هم هست، حالا چرا اینجا گذاشتم ؟
نه برای اینکه تقلب کنید (چون درجا گیر میوفتید اگر طرف کار بلد باشه)
برای این هست که فوق‌العاده میشه ازش برای آمادگی مصاحبه فنی استفاده کرد؛ اینکه چی بگید رو هم براتون می‌ذاره.

بخصوص بدرد مرحله اول و دوم مصاحبه که کد زدن و الگوریتم و ... داره می‌خوره
Forwarded from LinNews (Benyamin)
موتور بازی‌سازی Godot 4.4 با بهبودهای بسیاری منتشر شد.

تغییرات نسخه 4.4 عبارتند از:
- فیزیک Jolt با موتور ادغام شده‌ است(تا قبل از این بروزرسانی به‌عنوان یک “افزونه‌” در دسترس بود).

- ویرایش بلادرنگ (Realtime) درون بازی و بهبودهای دیگر برای ویرایشگر Godot.

- پشتیبانی از Ubershader به منظور کاهش لکنت (stuttering)، فیزیک سه‌بعدی و AgX Tone Mapping.

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

- اکنون گودو برای لینوکس، امکان پشتیبانی از دوربین دستگاه‌ها را فراهم می‌کند (بعلاوه تکمیل پشتیبانی قبلی MacOS و IOS).

- ایمپورت سریعتر با استفاده از کمپرسور تکسچر Betsy.

- پشتیبانی‌ از .NET 8.0 برای .NET Scripting.

- پشتیبانی رسمی از زبان برنامه‌نویسی Swift.

- افزودن Recovery Mode.

- بهینه‌سازی‌های متعدد برای بهبود عملکرد و اصلاحات دیگر.
اطلاعات بیشتر در GodotEngine.org

منبع خبر
مرورگر کروم داره روی یه چیزی به اسم «توابع CSS» کار میکنه که یه جورایی منطق وارد CSS میشه، یعنی الان CSS ها بیشتر برای توصیف ظاهر هستن، نه برای محاسبه و تصمیم‌گیری. با این توابع ولی میشه شرط‌بذاری، محاسبه کنی و قوانین خاص اجرا کنی.
مثلا الان وقتی کلی CSS نوشته شده، اگه بخوایم یه سری ویژگی‌هارو تغییر بدیم مثلا رنگ‌ها مجبوریم تمام CSS هارو ویرایش کنیم ولی توی توابع میتونی یه جا تعریفش کنی و جاهای دیگه صداش کنی. خروجی میشه CSS فوق‌العاده کمتر و سرعت بیشتر توی نوشتن و ویرایش کدهای CSS.
از طرفی با نسخه‌ی پیشرفته‌تری از سایت‌ها روبرو میشیم که به مراتب داینامیک‌تر عمل میکنن.
بعد میتونید مجموعه‌ای از توابع رو بسازی (یه جورایی یه کتاب‌خونه ساختی) و توی پروژه‌های بعدیت ازشون استفاده کنی.
فعلا این ویژگی تو نسخه‌ی آزمایشی Chrome Canary اضافه شده
میشه پیش‌بینی کرد همین امسال به کروم اصلی هم اضافه بشه، از اونجایی که بیشتر سهم بازار مرورگرها در اختیار کروم هست و مابقی هم مرورگرهای کروم بیس هستن میشه انتظار داشت از سال آینده توابع CSS به شکل گسترده‌ استفاده بشه.

@DevTwitter | <Geek Alerts/>
Forwarded from Linuxor ?
برخلاف تصورتون توی SQL معنی عدد داخل پرانتز INT(10) شبیه به VARCHAR(10) نیست که حداکثر اندازه رو مشخص کنه؛ عدد داخل پرانتر برای INT یکم متفاوته در واقع داره طول نمایش رو توی حالت ZEROFILL نشون می‌ده و INT همیشه 32 بیته.


@Linuxor
Forwarded from Linuxor ?
نام‌شَخص، کُدملی‌شَخص

@Linuxor
Forwarded from یه شعر (Poem Bot)
مولانا | دیوان شمس | رباعیات | رباعی شمارهٔ ۷۳۲

سرهای درختان گل تر می چینند
و اندر دل خود کان گهر می بینند
چون بر سر پایند که با بی برگی
نومید نگردند و ز پا می شینند

#مولانا | گنجور
📍@iipoem
یکی از قابلیت‌هایی که Full-Text در MySQL دارد، امکان تعریف stopwords برای جلوگیری از بزرگ شدن ایندکس و افزایش کیفیت نتایج جستجو است.
ما می‌تونیم با حذف کلماتی مانند حروف اضافه، افعال رایج و حتی کلمات نامناسب، ایندکس بهینه داشته باشیم.
برای این کار کافیه، جدولی با یک ستون به نام value بسازیم و اون رو با استفاده از آپشن innodb_ft_server_stopword_table به MySQL معرفی کنیم.
دیکشنری‌های آماده‌ی زیادی برای stopwords در اینترنت وجود داره که میشه ازشون استفاده کرد.
یکی از دیکشنری‌های Open Source که میشه ازش استفاده کرد، پروژه‌ی زیر است:
https://github.com/kharazi/persian-stopwords

بعد از اعمال تغییرات در stopwords، باید ایندکس Full-Text را مجدداً ایجاد کنید تا تغییرات اعمال شود.

@DevTwitter | <Hamoon Mohammadian Pour/>
#اختلال_اینترنت
مدیرعامل شرکت ارتباطات زیرساخت علت اختلال‌های ایجادشده در اینترنت کشور را قطعی فیبر در مرز گرجستان و ارمنستان و به دنبال آن، از دسترس خارج شدن حجم زیادی از ظرفیت اینترنت کشور اعلام کرد. /دیجیاتو

🔍 ircf.space
@ircfspace
خب نوشتن این راهنما رو دوباره از سر گرفتم، البته اصولیش اینه که با لاتک بنویسم ولی خب لیبره‌آفیس واقعاً گزینه دم دست تریه :)))



@SohrabContents
زرنشین ابزاری برای مدیریت Xray هست، که از طریق رابط وب و همینطور CLI قابل استفاده بوده و به‌عنوان یک ابزار جانبی، در کنار مرزنشین طراحی شده تا مدیریت سرورها رو ساده‌تر کنه.
رابط کاربری زرنشین امکان کنترل ورودی‌ها، خروجی‌ها، DNS، بالانسرها و سایر ویژگی‌های Xray رو فراهم می‌کنه و ابزار خط فرمان قابلیت انجام وظایفی مثل تغییر پورت، تنظیم HTTPS، به‌روزرسانی فایل‌های جغرافیایی و مدیریت سرویس رو به‌صورت سریع و مستقیم ارائه میده.

👉 github.com/MeXenon/Xarneshin
🎥 youtube.com/watch?v=zCE2emLkpu0

🔍 ircf.space
@ircfspace
Forwarded from LearnPOV | لرن پی او وی (Smin)
اینم از لینک نظر سنجی 🔻

https://docs.google.com/forms/d/e/1FAIpQLSfq3FZnAgTajYjg0-4p48RStH_psFcBXaRIQNQpEy-fXXJKCQ/viewform?usp=dialog

ممنون که وقت می‌ذارید، نظراتتون برای ما خیلی ارزشمنده! ❤️