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
Forwarded from Python BackendHub (Mani)
و به این شکل یوزر هر زبونی که هست براش ترجمه میکنید.

چرا بهتره ترجمه رو سمت کلاینت نگه داریم؟

۱. از رو مرورگر میتونید متوجه بشید زبون کاربر چیه. ولی بخواین اینو رو سرور متوجه شید باید فرانت اول یک کدی بفرسته که اینو براتون تو سرور بفرسته.

۲. اینکه کاربر چه زبونی داره در درجه اول state frontend هست. نه بک اند.

۳. اگه یوزر زبونش رو تغییر داد, اگه فرانت state management رو درست انجام داده باشه بدون اینکه درخواست http ای بزنه کل محتوا صفحه رو میتونه آپدیت کنه. و این تجربه کاربری رو بهتر میکنه.

۴. اکوسیستم مدیریت زبان در فرانت بسیار قوی تره.

ولی خب در نهایت یک جاهایی مجبور میشیم ترجمه سمت سرورم داشته باشیم. مثلا ارسال نوتفیکیشن.

@PyBackendHub
Forwarded from Python BackendHub (Mani)
این پستو دیدم تقریبا هر Rest standard ای بود توش رعایت نشده :))

در خصوص ارور و integration داشتن خوب با فرانت اند؛

۱. همیشه سعی کنید از HTTP STATUS استفاده کنید. اگه ۲۰۰ میدین یعنی ریسپانس موفقیت آمیز بوده، حالا هرچی که اسمشو موفقیت آمیز میذارید. چون تقریبا تمام ابزار های telemetry (چه بک اند چه فرانت) بر مبنا همین کار میکنه. اینکه شما http status code رو بذارید تو بادی کار بسیار اشتباه و غلطی هست. استاندارد های http رو دور زدید.

۲. فرانتی که نمیدونه کی به سرور درخواست داده، دولوپر نیست. صرفا یک LLM ای هست با دسترسی به git. یک تایمی ارسال میشه از سمت سرور به کلاینت. حالا اگه این تایم استمپ زمان اتمام درخواسته بازم برای کلاینت مهم نیست که شما بخوای رو سرور بذاری. برای کلاینت مهم اینه که درخواست رو کی دریافت کرده که میدونه.

۳. اینکه شما پیام ترجمه شده رو سمت سرور نگه دارید یک اشتباه دیگست. code کافیه. داکیومنت شما باید تو OpenAPI برای ارور ها باید schema داشته باشه که فرانت بدونه چه ارور هایی ممکنه بیاد. اینطوری اگه فرانت از ابزار های code auto generate استفاده کنه (که مثلا schema openapi رو میگیرن و کلاینت میسازن خودشون) اون ارور هارو هم میبینه و تو تایپ سیستمش میاد. میتونه اونا رو حالا به هر زبونی که کاربر هست بهش نشون بده. میتونه هرجوری بخواد ترجمه کنه. OBJECT_NOT_FOUND هم به شدت کلید اشتباهیه. چون معلوم نیست کدوم آبجکت not found عه. درستش اینه مثلا BookNotFound.‌که فرانت بتونه ترجمه کنه.

اگه خیلی فرانت بخوای قشنگ کارو در بیاره (تو سورس کد خودم اینکارو کردم) یک هوک نوشتم useError. این هوک اگه ریسپانس ۲۰۰نباشه ریسپانس رو میگیره. و کدش رو مپ میکنه به زبون یوزر و ترجمه میکنه و بهش نمایش میده. اگه کدی هم وجود نداشت (مثلا اروری که واقعا catch نشده بود) اون موقع فال بک میشه به اینکه خطایی در سرور رخ داده و نمیدونم این خطا چیه :)‌. این هوک من, به شما هم ErrorMessage رو میده. هم یک کال بکی میده که از react-toastify استفاده کرده و ارور رو toast میکنه برای شما.

پس هم میتونی بنویسی

const { errorMessage } = useError()
errorMessage(response)


و هم

const { toastError} = useError()
toastError(response)



@PyBackendHub
کتابخونهٔ «hazm» آپدیت نمی‌شه و با نسخه‌های جدید پایتون و کتابخانه‌هایی مثل pandas و langchain سازگار نیست.
اما کتابخونهٔ جدیدتری توسعه داده شده به نام «شِکَر». کتابخانه‌ای مدرن، به‌روز و هماهنگ با آخرین نسخه‌های پایتون برای پردازش متن فارسی.

https://github.com/amirivojdan/shekar

@DevTwitter | <Ali Moameri/>
نرید توی لینکدین.

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


@DevTwitter
Forwarded from Mr Python | مستر پایتون (حسین)
🟣 اسمبلی x86 - قسمت 6 : چرخه اجرای 8086

از این قسمت وارد بخشی از دوره خواهیم شد که اختصاصا به ریزپردازنده 8086 که پایه ی خانواده x86 حساب میشه میپردازیم . در این قسمت به معرفی نمای کلی داخلی 8086 که شامل بخش های EU و BIU هست میپردازیم ، چرخه اجرای (Execution Cycle) این ریزپردازنده را بررسی کرده و در مورد قابلیت خط لوله (Pipeline) که موجب تسریع و بهینه سازی اجرای دستورالعمل ها خواهد شد صحبت میکنیم .

02:08 معرفی و یادآوری ریزپردازنده 8086
08:17 چرخه اجرا (Execution Cycle)
12:40 نمای کلی داخلی 8086 شامل بخش های BIU و EU
22:07 قابلیت خط لوله (Pipeline) در 8086

Aparat : https://www.aparat.com/v/bpww31t
Youtube : https://youtu.be/xgZ2AmyrDKI

🆔 : @MrPythonBlog | BOOST
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
⭐️ ۷ اپلیکیشن رایگان و کاربردی Odoo برای کاربران لینوکس در سال ۲۰۲۵
🔹پست آموزشی کامل در آکادمی کندوی دانش. مرجع آموزشهای متن باز و لینوکس به فارسی


https://learninghive.ir/odoo/

نویسنده: حسین سیلانی
Forwarded from Gopher Academy
🔵 عنوان مقاله
celebrates its tenth anniversary with a look

🟢 خلاصه مقاله:
این مقاله دهمین سالگرد یک ابزار زیرساختی متن‌باز مبتنی بر Go را جشن می‌گیرد و نشان می‌دهد چگونه از یک ابزار کوچک به مولفه‌ای بالغ و شناخته‌شده در تیم‌های DevOps و SRE تبدیل شده است؛ با بهبودهای کارایی و پایداری، معماری افزونه‌پذیر، API/CLI پایدار و تمرکز جدی بر امنیت و زنجیره تأمین. اکوسیستم آن با جامعه‌ای پویا، مستندات بهتر، نسخه‌بندی معنادار، سازگاری عقب‌رو و یکپارچگی گسترده با فضای ابری، CI/CD و ابزارهای مشاهده‌پذیری رشد کرده است. در ادامه، نقشه‌راه بر بهبود تجربه کاربری، غنی‌تر شدن API/SDK، تقویت policy-as-code، مدیریت بهتر وضعیت و دریفت، و اتوماسیون ایمن‌تر در مقیاس تأکید می‌کند.

#Go #Infrastructure #DevOps #OpenSource #Cloud #Automation #Security #Observability

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


👑 @gopher_academy
Forwarded from Codino School (ایمان غفوری)
آیا پاسخ سوال مطرح شده رو می‌دانید؟
Anonymous Poll
12%
بله
46%
خیر - نیازی هم نداشتم بهش
41%
خیر - نیاز دارم بهش
Angular 20 Project Structure — Clean, Scalable & Future-Ready

With Angular 20, structuring your project well is as important as writing clean code. A well-organized folder structure makes your app scalable, testable, and maintainable. Here’s a recommended layout for modern Angular apps:

Highlights in Angular 20
- app.config.ts instead of app.module.ts (module-less bootstrap)
- Standalone components as the default approach
- Signals & fine-grained reactivity support
- Better lazy-loading structure for features

Pro tip: Keep core for singletons and shared for reusables. Every feature should live in features/ for clean boundaries.

@DevTwitter | <Rania Chaeib/>
Forwarded from Linuxor ?
This media is not supported in your browser
VIEW IN TELEGRAM
چند تا رو میدونستی؟

@Linuxor ~ iranux
با توجه به میزان عدم رضایت کاربران از سرویس‌های تاکسی اینترنتی مانند اسنپ یا تپسی، فرم زیر طراحی شده تا نتایج آن در بهبود تجربه سفرهای شما توسط استارتاپ Mann-E Cars استفاده شود.
لازم به ذکر است که این فرم، کاملا ناشناس بوده و هیچ اطلاعات هویتی از شما دریافت نمی‌شود.

لینک فرم:
https://survey.porsline.ir/s/fOfjhG2

با شرکت در این نظرسنجی، می‌توانید کمک بسزایی در استفاده از #هوش_مصنوعی در بهبود تجربه سفرهای خود با کمک پلتفرم‌های تاکسی اینترنتی داشته باشید.

@haghiri75_blog
Forwarded from Woland's Linux Journal (Woland)
حالا که صحبت از گیت کردیم، بذارید چندتا از بهترین افزونه‌های ویم برای گیت رو بهتون معرفی کنم.

Plug 'tpope/vim-fugitive'
Plug 'airblade/vim-gitgutter'
Plug 'rbong/vim-flog'

Plug 'jreybert/vimagit'


افزونه‌ی vim-fugitive که توسط tpope نوشته شده، یک اینترفیس برای گیت از داخل گیت هست که می‌تونه به اجرای دستورهای گیت از داخل ویم خیلی کمک کنه.

افزونه‌ی gitgutter نشانه‌هایی برای نمایش تغییرات شاخه به نسبت شاخه اصلی توی ویم اضافه می‌کنه.

افزونه‌ی flog که برای من پرکاربردترین در میان این افزونه‌هاست، یک کاوشگر شاخه برای گیت هست که تغییرات شاخه رو به‌صورت یک diff توی ویم نمایش می‌ده. این افزونه به‌عنوان یک interface برای fugitive کار می‌کنه.

افزونه‌ی vimagit هم افزونه‌ایه که به تقلید از magit که برای ایمکس هست ساخته شده، اما من خودم ازش خیلی استفاده نکردم.

#git #vim
#ویم #گیت #آموزش
Forwarded from Woland's Linux Journal (Woland)
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 با تصویب نهایی لایحه حذف چهار صفر از پول ملی، واحد رسمی کشور «تومان» و واحد خردتر «قران» تعیین شد.

#خبر

@TheRaymondDev
Forwarded from Gopher Academy
🔵 عنوان مقاله
Slice Tails Don't Grow Forever

🟢 خلاصه مقاله:
** این مطلب از Golang Weekly توضیح می‌دهد که در Go، وقتی از یک slice یک “tail” مثل s[i:] می‌سازیم، رشد آن به capacity وابسته است و پایدار و بی‌نهایت نیست. تا وقتی capacity اجازه دهد، append روی همان آرایه‌ی پشتی انجام می‌شود؛ اما به‌محض عبور از capacity، runtime آرایه‌ی جدیدی می‌سازد و داده‌ها را کپی می‌کند، در نتیجه اشتراک حافظه با sliceهای قبلی از بین می‌رود. این رفتار هم می‌تواند باعث شگفتی در منطق اشتراک‌گذاری داده‌ها شود و هم روی کارایی و مصرف حافظه اثر بگذارد (مثلاً نگه‌داشتن یک زیر-slice کوچک می‌تواند یک آرایه‌ی بزرگ را در حافظه زنده نگه دارد). نتیجهٔ عملی: روی رشد بی‌نهایت tail حساب نکنید، خروجی append را یک slice بالقوه با آرایه‌ی پشتی جدید در نظر بگیرید، برای آزادسازی حافظه از copy استفاده کنید، در صورت نیاز capacity مناسب را از قبل با make در نظر بگیرید و حتماً با benchmark تصمیم بگیرید.

#Go #Golang #Slices #Append #MemoryManagement #Performance #GolangWeekly

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


👑 @gopher_academy
Forwarded from Geek Alerts
اولین پیوند موفق کلیه‌ی انسانی، که از نوع خونی A به O تبدیل شده بود، انجام شد. محققان دانشگاه بریتیش کلمبیا، با استفاده از آنزیم‌هایی که توسعه دادن، از ناسازگاری و پس زدن این عضو پس از پیوند جلوگیری کردن.

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

آنتی‌ژن‌های نوع خون مثل برچسب‌نام روی سلول‌ها و رگ‌های خونی اندام‌ها عمل می‌کنن و اگه مشابه نباشن، توسط سیستم ایمنی بدن به اون‌ها حمله می‌شه. تیم UBC در سال ۲۰۱۹ دو آنزیم کشف کرد که با حذف قند تعیین‌کننده‌ی نوع A، اون رو به نوع O تبدیل می‌کنن. این آنزیم‌ها مانند قیچی، برچسب آنتی‌ژن را می‌برن و نوع O رو نشون می‌دن. [L]

🤓 abolfazl @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
داشتم با N8N کار میکردم که دیدم یه سری چیزا نداره. با کامیونیتی نود هاش آشنا شدم. دیدم بازم یه چیزی کمه. گفتم بزنیم چرا که نه!
این شد که احتمالا جامع ترین پکیج ایسنتا رو زدم.

https://github.com/Msameim181/n8n-nodes-instagram-integrations

https://npmjs.com/package/n8n-nodes-instagram-integrations

@DevTwitter | <Mohammad Mahdi Samei/>
Forwarded from Codino School (ایمان غفوری)
پاسخ ویدئویی در قسمت نظرات آپلود شده.

@codino
Forwarded from Codino School (ایمان غفوری)
This media is not supported in your browser
VIEW IN TELEGRAM
Do you know how to split commits in git history?

آیا میدانید که چطور یک کامیت در تاریخچه گیت رو به چند کامیت کوچکتر تقسیم کنید؟


پاسخ ویدئویی در قسمت نظرات 👇👇👇
@codino
📄 دستور less در لینوکس

دستور less برای مرور فایل‌های متنی بزرگ استفاده میشه، بدون اینکه کل فایل یک‌باره توی حافظه بارگذاری بشه. (برخلاف cat)

📌 کاربردهای پایه:
less file.txt      # باز کردن فایل
less +100 file.txt # شروع از خط 100
less -N file.txt # نمایش شماره خط‌ها

🔥 کلیدهای پرکاربرد داخل less

🔹 حرکت:
j → یک خط پایین⬇️ یا
k → یک خط بالا⬆️ یا
Space → یک صفحه جلو
b → یک صفحه عقب
g → رفتن به ابتدای فایل
G → رفتن به انتهای فایل

🔹 جستجو:
/pattern → جستجو به جلو
?pattern → جستجو به عقب
n → تکرار جستجو (بعدی)
N → تکرار جستجو (قبلی)

🔹ویرایش:
v → ورود به محیط ویرایشگر

🔹 خروج:
q → خروج از less

🔥 ترفندهای ترکیبی و خلاقانه
dmesg | less        # مرور لاگ کرنل
less +F logfile.log # حالت Follow مثل tail -f
ps aux | less -S # بدون شکست خطوط طولانی


🔹 باز کردن چند فایل با هم:
less file1.txt file2.txt

:n # فایل بعدی
:p # فایل قبلی


🔹 نمایش رنگ در خروجی (مثلاً برای کدها):
less -R colored.txt

#دیوار_لینوکس
@MehrdadLinuxchannel
#Linux #لینوکس
#linux_command