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)
ما یک لایبری داریم تو راست به اسم pyo3 که بهت اجازه میده تو راست کد binding بزنی بدون اینکه بخوای یک عالمه بویلرپلیت بنویسی. اما چطور؟ core پایتون expose شده تحت لایبری C به اسم libpython

لایبری مثل Pyo3 که اجازه میده با راست برای پایتون کد binding بزنی اینطوری کار میکنه که میاد اون لایبری libpython رو wrap میکنه ولی به صورت تایپ سیف و مموری سیف. من الان یکم داکشو خوندم فکر کنم بخوام یک ادد ساده بنویسم این شکلی میشه:


use pyo3::prelude::*;

#[pyfunction]
fn add(a: i32, b: i32) -> i32 {
a + b
}

#[pymodule]
fn my_module(_py: Python, m: &PyModule) -> PyResult<()> {
m.add_function(wrap_pyfunction!(add, m)?)?;
Ok(())
}


و ظاهرا خوده ‍PyO3 برام فایل stub هم میسازه که مشخص شه اینترفیس پکیجم چطوری شده.


def add(a: int, b: int) -> int


بعد با این لایبری میام کد rustمو کامپایل میکنم. میزنم maturin develop که پکیج رو کامپایل میکنه به فایل so یا dll. و خودش هم میفرسته رو pypi همون فایلو با دستور maturin publish.
بعدش پکیجمو نصب میکنم نویسم

from my_module import add
add(1,2)

و جوابش میاد میشه ۳. اما تو ران تایم چطوری اجرا میشه؟

فایل .so بهش میگن shared object.
وقتی داری یک چیزی رو کامپایل میکنی دو حالت داره:
۱. یا اینکه بیای static linking انجام بدی. یک executable میدی بیرون که اونو اجرا میکنی درجا اجرا میشه.
۲. یا اینکه بیای dynamic loading انجام بدی. یعنی نمیای executable بدی که قابل اجراست و و همه چیز داخلش هست. به جاش میای باینری کد برنامتو کمپایل میکنی به همراه یک سری symbol و executable نیست دیگه مستقیم.سیمبل میشه function ها و variable هات.و یک برنامه دیگه اونوقت میتونه بیاد با استفاده از اون سیمبل ها, به صورت داینامیک از ماشین کدت استفاده کنه.

حالا چطوری؟ تو سیستم عامل یک چیزی وجود داره به اسم dynamic loader که وظیفش اینه دقیقا همین فایل های .so رو ران کنه. اینم رفرنس لینوکیسش.

در نهایت مفسر پایتون میتونه تو ران تایم کد rust ای که تحت فایل .so داری رو با داینامیک لودر ران کنه. و اون کد so دقیقا توابعی که تو راست نوشتی ماشین کدشو به صورت callable پایتون داره و از اون جایی که libpython هم wrap شده میتونی از api های libpython استفاده کنی. مثل گرفتن GIL و ریلیز کردنش. بقیه extension های ‍C هم همینطوری کار میکنند.

@PyBackendHub
Forwarded from Linuxor ?
اگه دارین برای اکوسیستم اپل یا مایکروسافت برنامه مینویسین بهتره سیستم عامل هم متناظر با همون انتخاب کنید در غیر این صورت لینوکس بهترین گزینه برای برنامه نویسی با اکثر زباناست.


لینوکس بهتون قوی ترین خط فرمان ممکن رو میده، رایگان و متن بازه، اگه برنامه سمت سرور می‌نویسین خیالتون از بابت خطا های احتمالی روی سرور راحت تره، نصب ابزار ها و کتابخونه ها توی لینوکس راحت تره.

البته به این توجه داشته باشین که کوچ کردن به لینوکس کمی زمان بره و ممکنه اوایل زیادی دستتون برای کار کردن با سیستم عامل باز نباشه ولی شما رو محدود نمیکنه، و برعکس آزادی عمل بیشتری هم حتی بهتون میده.



🐧 @Linuxor
بچه ها اگر از توان سیستمتون یا قدرت اینترنتتون اطمینان ندارید، نرید سراغ fne-tune کردن مدلی
آخرش مثل من دچار سر درد حاد میشید
اول مواد اولیه رو تامین کنید بعد از این کارا بکنید
Forwarded from Yasha
بچه‌ها اخیرا توی تلگرام یه بازی به نام گوبلین اومده که میشه امتیازات بازی رو به TON تبدیل کرد. توی این ویدیو ۱۰ دقیقه‌ای یکم درباره‌اش صحبت کردم و آموزش دادم که چطوری میشه انجامش داد.

https://youtu.be/BBKNgwiiTaQ

@Yasha
Forwarded from Code Module | کد ماژول (𔓙)
سر یک موضوع احمقانه ۱ ساعت وقتم رفت.
توی تصویر می‌بینید که خط رو شکونده دقیقا باید توی rust همینکارو بکنید وگرنه query درست نیست و بدتر از اون خطایی هم دریافت نمی‌کنید.
r#"--sql SELECT name FROM users;"

چیزی که بدون مشکل هست:
r#"--sql
SELECT name FROM users;
"


خلاصه که حواستون باشه؛ من حتی توی کدهای دیگران هم دیدم این مورد رو.
#Quick

توی پایتون (باقی زبان‌ها) وقتی کسی بهم می‌گفت سریعترین راه برای پیشرفت کردن جیه می‌گفتم یاد بگیر خطاهارو خیلی زود بفهمی.
توی Rust این موضوع صادق نیست چون کامپایلر خیلی دقیق خطارو می‌کوبه تو صورتت اما یک چیز معادل داریم که توی تجربه این مدت بهش رسیدم.

توی Rust برای پیشرفت سریعتر باید یادبگیری داکیومنت اون crate ایی که داری باهاش کار می‌کنی رو توی سایت
https://docs.rs/
به راحتی داخلش بچرخی و به راحتی بخونی و درک کنی (چیزی که ندیدم جایی آموزش بده) این موضوع رو توی سنیورهای Rust به خوبی میشه دید سریعا متدهای struct, enum, ... رو پیدا می‌کنند trait هایی که باید پیاده‌سازی بشه و نحوه استفاده و ...
ولی برای جونیورها خیلی خیلی سخت هست انگار و اکثرا سمت داکیومنت نمیرن (خیلی دیر این سمتی میروند)
Forwarded from  (Amir Hossein "Amiria" Maher)
این عوعو سگان شما نیز، بگذرد.
Forwarded from Woland's Linux Journal (Woland)
💠کنترل کردن ترمینال💠

مطلبی درباره شروع کار با کد‌های انسی و بش برای ساختن برنامه‌های ترمینالی نوشتم که در سایت بارگذاری شده.

توی این اسکریپت یک Hello World را در ترمینال حرکت می‌دهیم.

قبلاً هم فرسته‌ای درباره خلاقیت در Hello World نوشته بودم.

چون پرسیده بودین چطور می‌شه نوشتن چنین کدهایی رو شروع کرد، بسیار ساده‌است! اینطور شروع می‌کنند!

توی این سایت من‌بعد مطالب زیادی از این دست خواهم گذاشت.

👉🔗 Bash-Notes

#آموزش #بش
#bash
Forwarded from کدنویس یکروزه (𝕻𝖊𝖉𝖗𝖆𝖒 𝕽𝖆𝖍𝖎𝖒𝖎)
دوبله‌ی ویدیو با لب خوانی!

با این هوش مصنوعی زبان ۱۸۰ کشور دنیا رو قادریم به هم دوبله کنیم و لب‌خوانی صحیح رو هم در فیلم جدید داشته باشیم!
تصور کنید یک تولید کننده‌ی محتوا هستین و تصمیم دارین آموزش های خودتون رو بدون دردسر در کشورهای مختلف دوبله و به فروش برسونین.

نسخه‌ی رایگان اون از هر فیلم ۱ دقیقه و روزی ۳ دقیقه رو تبدیل می‌کنه. ولی می تونین با ارتقای پولی اکانت تا ۹۰ دقیقه دوبله انجام بدین!
اینجا تونستم از یک پست جالب که قبلاً به فارسی ارسال کرده بودم و کد مرتبط رو هم فرستاده بودم، نسخه های انگلیسی و ترکی هم بسازم!

در بخش کامنت و دیدگاههای همین پست نمونه‌ی خروجی ها رو قرار میدم که کیفیت کار رو بتونین ببینید.

https://www.vidnoz.com/ai-dubbing.html
Forwarded from Gopher Academy
🔵 عنوان مقاله
Joining Errors in Go

🟢 خلاصه مقاله:
مقاله مورد نظر به بررسی دو رویکرد در زبان برنامه‌نویسی Go می‌پردازد: استفاده از چندین %ws و استفاده از دستور errors.Join که در نسخه 1.20 زبان Go معرفی شده است. رویکرد اول، %ws، از دستورهای فرمت‌بندی متنی برای ایجاد نتیجه‌ای استاندارد و یکپارچه استفاده می‌کند. این رویکرد به برنامه‌نویس اجازه می‌دهد که خروجی‌ها و پیام‌ها را به شکل واضح و دقیق نمایش دهد، خصوصاً در محیط‌هایی که نیاز به ترکیب و نمایش چندین مقدار متفاوت است. رویکرد دوم، errors.Join، امکان مدیریت و ترکیب چندین خطا را در یک پیغام خطا الحاقی فراهم می‌کند که بسیار مفید است برای دسته‌بندی خطاها و واکنش‌های مرتبط با آن‌ها. این امکان به برنامه‌نویس کمک می‌کند تا خطاهای متعدد را به شکل مؤثری دریابد و رفع کند، و در نهایت به بهبود خوانایی و قابلیت نگهداری کد کمک می‌کند.


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


👑 @gopher_academy
Forwarded from Linuxor ?
اجرا کردن ماشین مجازی رو مرورگر وب

https://dev.to/nadchif/run-a-virtual-machine-in-your-browser-2kjk


🐧 @Linuxor
Forwarded from Linuxor ?
برای گرفتن سرتیفیکیت HTTPS روی localhost از این روش میتونین استفاده کنین :

https://tailscale.com/kb/1153/enabling-https


🐧 @Linuxor
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
This media is not supported in your browser
VIEW IN TELEGRAM
درود

من از همتون معذرت میخوام که سالهای سال بهتون اشتباه گفتم سیستم عامل لینوکس

گویش درست این سیستم عامل رو باهم یاد بگیریم

#با‌هندزفری‌گوش‌کنید
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
همه توپوق میزنن
من خودم هزاران بار واژه‌ها رو به اشتباه خوندم و خیلی چیز‌ها رو هنوزم نمیدونم که درستشون چیه
برای همین خوب درکش میکنم
کلا از زمان پیدایشش بنده خدا اشتباه می‌زد :)))


#meme
@SohrabContents
Forwarded from Gopher Academy
Forwarded from CleverDevs (Mammad)
درگاه دیجی کالا رو بستن

#News
@CleverDevs - @CleverDevsGp