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
این‌داستان؛ مدیرعامل ایرانسل!

🔍 ircf.space
@ircfspace‏⁧
اگر برنامه نویسی به زودی قراره چشمات به فنا بره اگر به این توصیه هایی که بهت میگم عمل نکنی :)

👀 استفاده از قطره اشک مصنوعی

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

به همین دلیل سعی کنید روزی حداقل ➍ مرتبه ازش استفاده کنید


استراحت دادن به چشم

هر 20 دقیقه یک بار پنج دقیقه دست از کار بکشید و 3 الی 5 دقیقه به چشمای خودتون استراحت بدید

حالا به چه شکلی ؟

➊ برید لب پنجره یا جایی که نور طبیعی وجود داره و به دور نگاه کنید، وقتی اینکارو انجام میدید چشماتون یه حالتی میشه و خودتون متوجه تغییر میشید

➋ چشم خودتون رو ببندید و با چپ، راست، بالا و پایین کردن چشمتون بهش ورزش بدید، این کار باعث تقویت عضله های چشم میشه

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


و در نهایت مراقب چشماتون باشید چون یه عمر قراره باهاشون زندگی کنید و سلامتش رو در اولویت قرار بدید ❤️

#️⃣ #tips #programming

🫶 𝗖𝗛𝗔𝗡𝗡𝗘𝗟  |  𝗚𝗥𝗢𝗨𝗣
توی بعضی شرایط rust-analyzer ممکنه رو دستش بیاد؛ اونوقت highlight به درستی انجام نمیشه اگر اینطوری شد توی تنظیمات
Rust-analyzer > Semantic Highlighting > String

وارد بشید و گزینه‌اش رو غیر فعال کنید موقتا ( تا آخر پروژه مثلا)
Forwarded from Gopher Academy
🔵 عنوان مقاله
Some Go Web Dev Notes

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

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


👑 @gopher_academy
Forwarded from 🎄 یک برنامه نویس تنبل (  MΞ)
🔸توی این پست میخوایم پروژه‌های دانلودر از سوشال مدیا رو معرفی کنیم اگه موردی دیگه سراغ داشتید کامنت کنید:

1) پروژه‌های اوپن سورس:
+https://github.com/vaaski/telegram-ytdl
+https://github.com/tskau/cobold
+https://github.com/Rojeck/alwaysReelsBot
+https://github.com/yt-dlp/yt-dlp
+https://github.com/imputnet/cobalt
+https://github.com/TeamNewPipe/NewPipe/

2) سایت:
+https://cobalt.tools/
+https://newpipe.net/
+https://chatgpt.com/share/6714c3a7-a0c0-800f-ae49-869d26afb706

3) ربات‌های تلگرام:
+@uvd_bot
+@coboldbot
+@AlwaysReels_bot
+@MegaSaverBot

#معرفی
@TheRaymondDev
This media is not supported in your browser
VIEW IN TELEGRAM
~> ACID Properties

‏ACID یه سری خصوصیات کلیدی هستش که تو دیتابیس‌های رابطه‌ای برای تضمین صحت تراکنش‌ها (Transactions) استفاده می‌شه. این مفهوم اولین بار سال 1983 توسط Theo Härder و Andreas Reuter معرفی شد.

حالا ACID مخفف چیه؟!⬇️

‏Atomicity (اتمی بودن): یعنی یه تراکنش یا باید کامل انجام بشه یا اصلا انجام نشه. مثلا وقتی پول از یه حساب بانکی به حساب دیگه منتقل می‌شه، یا باید هم کم شدن از حساب اول و هم اضافه شدن به حساب دوم انجام بشه، یا هیچکدوم انجام نشه. حالت نصفه و نیمه نداریم. اگه وسط کار مشکلی پیش بیاد، عملیات Rollback می‌شه.

‏Consistency (سازگاری): یعنی دیتابیس باید همیشه تو حالت معتبر (valid) باشه، چه قبل تراکنش و چه بعدش. مثلا اگه قانون داریم که موجودی حساب نباید منفی بشه، هیچ تراکنشی نمی‌تونه این قانون رو نقض کنه. اگه تراکنشی بخواد این کار رو بکنه، کامل کنسل می‌شه.

‏Isolation (انزوا): یعنی تراکنش‌های همزمان نباید روی هم تاثیر بذارن. مثلا اگه دو نفر همزمان از یه حساب برداشت می‌کنن، سیستم باید طوری مدیریت کنه که نتیجه نهایی درست باشه. این کار با مکانیزم‌های مختلف Locking انجام می‌شه.

سطوح مختلف Isolation وجود داره:
‏- Read Uncommitted: کمترین سطح ایزوله بودن.
‏- Read Committed: فقط تغییرات تایید شده دیده می‌شن.
‏- Repeatable Read: خوندن‌های تکراری نتیجه یکسان می‌دن.
‏- Serializable: بالاترین سطح ایزوله بودن.

‏Durability (ماندگاری): یعنی وقتی تراکنشی موفق انجام شد (Commit شد)، تغییراتش باید دائمی باشه و حتی با قطع برق یا کرش سیستم هم از بین نره. این کار معمولا با Write-Ahead Logging‏ (WAL) انجام می‌شه.

تو دنیای واقعی گاهی باید بین این خصوصیات تعادل برقرار کرد. مثلا NoSQL‌ها معمولا از مدل BASE استفاده می‌کنن که Basically Available, Soft State, Eventually Consistent هستش و سازگاری کمتری داره ولی در عوض مقیاس‌پذیری (Scalability) بیشتری داره.

PostgreSQL یکی از بهترین پیاده‌سازی‌های ACID رو داره و می‌تونه همه سطوح Isolation رو ساپورت کنه. MySQL هم ACID رو پشتیبانی می‌کنه ولی فقط با موتور InnoDB، موتور MyISAM این قابلیت رو نداره.

یه نکته جالب اینه که پیاده‌سازی ACID روی عملکرد (Performance) دیتابیس تاثیر منفی می‌ذاره. به همین خاطر بعضی سیستم‌ها مثل Redis از تکنیک‌های خاصی مثل AOF‏ (Append-Only File) استفاده می‌کنن تا تعادل بهتری بین کارایی و تضمین‌های ACID برقرار کنن.

#نرم_افزار #علوم_کامپیوتر #نوشته
~> @PinkOrca 🩷
Please open Telegram to view this post
VIEW IN TELEGRAM
Audio
رادیوجادی ۱۷۹ - کیلومتر آخر، هکر بین المللی برزیلی، ترمینال اندروید، استارلینک و دسترسی پذیری دیوار

در رادیو جادی شماره ۱۷۹، سریع هستیم. از هکری می‌گیم که در برزیل دستگیر شده، سری به اندروید می‌زنیم و سرعت استارلینک و بحث رو با دسترسی پذیری و اهمیتش می‌بندیم. با هم باشیم؛ حتی اگر کوتاهیم.

00:00 - رادیو جادی ۱۷۹
01:11 - دستگیری هکر بین المللی در برزیل
09:45 - اندروید ۱۶ احتمالا دارای یه ترمینال واقعی لینوکس خواهد بود
14:28 - استارلینک ویژه سرویس دهنده ها به دیگران
17:40 - بحث دسترسی پذیری اپ ها و درگاه‌ها با تشکر از دیوار
20:19 - بخش آخر
https://youtu.be/MTg2YqDA4H0

#پادکست
Forwarded from Go Casts 🚀
معرفی یه دوره ناب

چهار سال پیش به توصیه استاد عزیز مصطفی جان صولتی شروع کردم به دیدن دوره ویدیویی uncle bob

و نمیتونم بگم دیدن این دوره، حتی در حد ۱۰، ۱۵ جلسه اولش، چقدر به شما دید خوبی میده در مورد مسائل مختلف مهندسی نرم افزار

این دوره رو نبینید که نکاتش رو حفظ کنید، این دوره رو ببینید که از قدرت تحلیل بهره مند بشید.

اصلا مهم نیست چقدر uncle bob رو قبول دارید یا نه، و اصلا مهم نیست که در نهایت قبولش خواهید داشت یا نه، مهم اینه که شنیدن حرف هاش به عنوان یه برنامه نویس با تجربه به شما قدرت تحلیل میده، حتی اگه در نهایت خروجی تحلیل شما باهاش متفاوت بشه، مهم بهره مند شدن از قدرت تحلیل هست و نه خروجی تحلیل…

اون موقع وقت و حوصله بیشتر بود و نکته برداری میکردم و تحلیل میکردم، به همه تون دیدن این سری ویدیویی رو توصیه میکنم

https://cleancoders.com/library/all


توضیحات «دوره + تیمسازی بکند و گولنگ Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://t.iss.one/gocasts/515


@gocasts


#uncle_bob #clean_architecture #clean_code #software
چینش ها به پارچ گنوم می‌آیند!

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

این چینش ها عبارتند از:
- 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