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
چینش ها به پارچ گنوم می‌آیند!

به زودی در پارچ گنوم قادر خواهید بود تا میان ۴ چینش پیش‌فرض انتخاب کنید.

این چینش ها عبارتند از:
- Windows 11 Style
- Unity Style
- Parch Style
- Stock Gnome


@ParchLinux
Forwarded from 🎄 یک برنامه نویس تنبل (  MΞ)
ضرر چرا؟ 😒

🔍 ircf.space
@ircfspace‏⁧
اپ Purlite که اخیرا برای سیستم‌عامل اندروید عرضه شده، یک فیلترشکن ساده و رایگان برای دورزدن فیلترینگ هست، که از مخازن کانفیگ رایگان استفاده کرده و از امکان تعریف لیست‌سیاه برنامه‌ها برخورداره.
این‌فیلترشکن به‌طور متن‌باز منتشر شده و با گیت‌هاب‌اکشنز بیلد گرفته میشه.

👉 github.com/davudsedft/purlite/releases/latest

🔍 ircf.space/software
@ircfspace‏⁧
‏یه اسکریپت پایتون نوشتم که خیلی سریع و راحت میشه سایز queue ها و topicهای روی سرویس باس Azure روی ترمینال مانیتور کرد.
راه های دیگه هم داره، ولی من یه چیز ساده و مخصوص ترمینال میخواستم تا توی کارم ازش استفاده کنم.
https://github.com/imaun/servicebus-size-monitor

@DevTwitter | <imun/>
💻 #مسابقه 🎮

فکر کن بهت این اجازه رو دادن که با هر زبان، فریم‌ورک و لایبرری که میخوای خونه خودت رو بسازی 🏠

استفاده از هر زبان و یا فریم‌ورکی آزاده توی هر حوزه ای ؛)

ترکیب درست و منطقی از ابزارها و لایبرری‌ها امتیاز بالاتری داره 🔥

توضیح در مورد جذئیات و دلیل ترکیبی که چیدید هم امتیاز مثبت داره


بین بهترین جواب ها رای گیری میزارم ببینم خونه کی درست حسابی تره 😎🔥

#️⃣ #question #fun

🫶 𝗖𝗛𝗔𝗡𝗡𝗘𝗟  |  𝗚𝗥𝗢𝗨𝗣
در لاراول، به جای اینکه خودمون بیایم و شناسه‌های مدل‌ها رو دستی مقایسه کنیم، بهتره از روابطی که بین مدل‌ها تعریف کردیم استفاده کنیم. اینجوری هم کدمون تمیزتر و خواناتر میشه، هم استانداردتر و حرفه‌ای‌تر!

مثلاً فرض کن می‌خوایم یه پست رو بر اساس دسته‌بندی و نویسنده‌اش پیدا کنیم. به جای اینکه شناسه‌ها رو اینطوری چک کنیم:


Post::where('category_id', $category->id)
->where('author_id', $user->id)
->first();



میتونیم از متدهای خفن لاراول مثل whereBelongsTo استفاده کنیم که خودش باهوشه و از روابط تعریف‌شده استفاده می‌کنه:


Post::whereBelongsTo($category)
->whereBelongsTo($user, 'author')
->first();



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


$post->author_id == $user->id;


خیلی راحت می‌تونیم از رابطه استفاده کنیم:

$post->author()->is($user);


اینجوری کدمون ساده‌تر و شیک‌تر میشه و از امکانات قوی لاراول هم به بهترین شکل ممکن استفاده می‌کنیم!

@DevTwitter | <Firoozeh Daeizadeh/>
Forwarded from Python BackendHub (Mani)
خیلی وقت پیش یکی تو گروه پرسید چطور با زبونای دیگه مثل rust برای پایتون لایبری مینویسن.
منم جوابشونو دادم ولی یادم رفت بفرستم تو کانال. برای همین پست بعدیو به این موضوع اختصاص میدم.
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)
این عوعو سگان شما نیز، بگذرد.