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 Armon technical logs (armon Taheri)
شفافیت به معنی اتاق هایی شیشه ای نیست.
Forwarded from Codino School (ایمان غفوری)
کدام ابزار رو برای تست نویسی انتخاب می‌کنید؟
Anonymous Poll
77%
Phpunit
24%
Pest
4%
Dusk
7%
other
Forwarded from Woland's Linux Journal (Woland)
کانال پیرتوب Woland's Machine راه اندازی شده و ویدیو‌ها من‌بعد علاوه بر یوتوب در پیرتوب هم بارگزاری می‌شن.

خوبی پیرتوب اینه که فیلتر نیست (فعلا)

لینک کانال:

👉🔗 Woland's Machine

#معرفی
به نظرتون یکم زیاد نمیگه قیمت رو؟؟
یوتیوب رو ۱۰۰-۲۰۰ تومن هم میشه در آورد جدا
بخش قابل‌توجهی از مردم برای استفاده از اینترنت به VPN وابسته هستن. وب‌سایت mintpressnews مدعی‌شده که ۳ #فیلترشکن ExpressVPN، CyberGhost و Private Internet Access توسط شرکتی اداره میشن که روابط نزدیکی با نهادهای اطلاعاتی اسرائیل داره!

👉 mintpressnews.com/exposed-how-israeli-spies-control-your-vpn/288259

🔍 ircf.space
@ircfspace
برای typescript سایت جالبی بود

https://www.totaltypescript.com/

@DevTwitter | <Error 403:Forbidden/>
Forwarded from Linuxor ?
کامپیوترا زیادم نشونه گیریشون دقیق نیس، مثلا وقتی داره یه بیت از یه کامپیوتر به یه کامپیوتر دیگه پرتاب میشه ممکنه نخوره به هدف به این پدیده میگن bit slip که یکی از دلایلش عدم هماهنگی کلاک دوتا کامپیوتره.


🐧 @Linuxor
Forwarded from DevAcademy
خب دوستان عزیزم!
با توجه به اینکه پروژه های جدیدی در راه است و نیاز داریم اسکواد های شرکت را کامل‌تر کنیم، به 1 نفر نیروی Mid-Level جدید نیاز داریم
مهارت های زیر برای ما مهم هست:
JavaScript/TypeScript
React.js
Next.js 14
Tailwind CSS
Wagmi یا Ethers.js یا.. (آشنایی کفایت می کند)

از آنجایی که برخی پروژه های شرکت مرتبط با بلاک‌چین و Web3 هست، آشنایی با مفاهیم Blockchain، Smart Contract، Solidity و.. نیاز هست ولی اگر آشنایی نداشتید در کنار هم، بیشتر یاد می گیریم

شرکت مشهد هست ولی همکاری به صورت Remote می باشد

حقوق هم پس از مصاحبه و براساس توانایی های شما کارجوی عزیز تعیین می شود

توجه: ارائه نمونه کار در رزومه الزامی هست

لطفا رزومه های خود را فقط با عنوان «Front-End» به ایمیل من ارسال کنید:
[email protected]


https://www.linkedin.com/posts/alibahaari_aepaezaedaesabraecaeiaesahy-activity-7243572895455625216-Q1TB?utm_source=share&utm_medium=member_desktop


💻@DevAcaademy
💬@DevAcademyGroup
Forwarded from Anophel | آنوفل
🔹یکی از دوستان ی پروژه ای نوشته بودن و از تایپ اسکریپت اومدن استفاده کردن، بعد قرار شد کد هاش بررسی کنم و مواردی که حالا نیاز بود رعایت کنه رو بگم. اینجام قرار میدم که همه مون تو پروژه های آینده مون استفاده کنیم ازش.

🫶1. از Mapped Types استفاده کنید.
حالا Mapped Types در TypeScript به شما اجازه میده تا نوع‌های جدیدی را بر اساس نوع‌های موجود ایجاد کنید. با استفاده از یک نوع ژنریک ( Generic) که از یک union از PropertyKeyها (معمولاً با استفاده از keyof ایجاد میشه) برای تکرار کلیدها و ایجاد یک نوع جدید انجام میشه.

🫶2. از آپشنال chaining ?. استفاده کنید.
این باعث میشه دیگه نگران مقدار های null یا undefined نباشید.

🫶3. از Utility Types استفاده کنید.
حالا Utility Types در TypeScript مجموعه‌ای از نوع‌های از پیش تعریف شده هستند که به شما کمک می‌کنند تا تغییرات و عملیات‌های رایج روی نوع‌ها را انجام بدید. این نوع‌ها به شما اجازه میده تا نوع‌های جدیدی بر اساس نوع‌های موجود ایجاد کنید، پراپرتی ها Partial یا Required و همچنین Readonly کنید، نسخه‌های غیرقابل تغییر از نوع‌ها بسازید و ...

🫶4. استفاده از Branded Types
اینم قشنگه و در تایپ‌اسکریپت یک روش برای ایجاد انواع یونیک است که از اشتباهات لاجیکال جلوگیری میکنه. این نوع‌ها با اضافه کردن یک ویژگی خاص به نوع اصلی، به نوعی “برند” می‌شوند.
دقت کنید این ویژگی در زمان اجرا وجود ندارد، اما به کامپایلر تایپ‌اسکریپت کمک می‌کند تا تفاوت بین انواع مختلف را تشخیص بده.

موارد دیگه ای هم بودن، در پست های آینده بهش می پردازیم.

موردی هم بود حتما در بخش کامنت ها بنویسید ♥️

Anophel | آنوفل

#تایپ_اسکریپت #ts #typescript
Please open Telegram to view this post
VIEW IN TELEGRAM
گوگولی بود برای خودش یه دورانی
هنوز هم برنامه هایی که باهاش نوشتم دارن کار میکنن

@DevTwitter | <Keyhan jk/>
#text

برنامه نویس خوب برنامه نویسیه که ...

این جمله رو کامل کنید👆😁

🚀 @coolycode
توی پست جدیدمون داکر رو معرفی کردیم، یه سر بهش بزنید 🌹

https://www.instagram.com/p/DAQGDXQIRcI/?igsh=NHd2czUxYmF5azZ4
Forwarded from Gopher Academy
😢یادش بخیر دوران دبیرستان😅
چه ذوقی میکردیم وقتی اجرا میکردیم

👑 @gopher_academy
🌳 همه‌چی درباره B-Tree توی دیتابیس‌های رابطه‌ای 🌳

امروز می‌خوایم درباره B-Tree توی دیتابیس‌های رابطه‌ای صحبت کنیم. اگه تا حالا با دیتابیس‌های مثل MySQL یا PostgreSQL کار کرده باشی، احتمالاً اسم B-Tree به گوشت خورده. B-Tree یکی از مهم‌ترین ساختارهای داده توی دیتابیس‌هاست که برای ایندکس کردن و جستجوی سریع داده‌ها استفاده میشه 📈.

حالا B-Tree چیه؟ 🌳

خب B-Tree یه ساختار درختی (tree structure) هست که توی ایندکس‌های دیتابیس استفاده میشه. این درخت به‌صورت بالانس طراحی شده، یعنی همه شاخه‌ها از ریشه تا برگ‌ها تقریباً به یه اندازه طول دارن. این باعث میشه عملیات جستجو، درج، حذف و به‌روزرسانی داده‌ها با سرعت بالایی انجام بشه 🚀.

توی B-Tree، هر گره (node) می‌تونه چندین کلید (key) و فرزند (child) داشته باشه. این یعنی برخلاف درخت‌های دودویی معمولی که هر گره فقط ۲ فرزند داره، توی B-Tree هر گره می‌تونه چند فرزند و کلید داشته باشه. این باعث میشه که عمق درخت کم بشه و دسترسی به داده‌ها سریع‌تر باشه.

چرا B-Tree توی دیتابیس‌ها استفاده میشه؟ 🤔

1⃣ سرعت بالای جستجو 🔍 
   یکی از مزیت‌های بزرگ B-Tree اینه که جستجو توی اون خیلی سریع انجام میشه. چون این درخت به‌صورت متوازن طراحی شده، عمق زیادی نداره و سریع میشه به داده‌ها رسید.

2⃣ مناسب برای عملیات درج و حذف  
 خب B-Tree نه‌تنها برای جستجو عالیه، بلکه برای درج و حذف داده‌ها هم خیلی بهینه است. وقتی یه داده جدید رو وارد می‌کنی یا داده‌ای رو حذف می‌کنی، درخت همچنان بالانس خودش رو حفظ می‌کنه و کارایی رو پایین نمیاره.

3. مقیاس‌پذیری 📏 
   دیتابیس‌هایی مثل MySQL و PostgreSQL برای اینکه بتونن حجم زیادی از داده‌ها رو مدیریت کنن، از B-Tree استفاده می‌کنن. این ساختار داده به‌خاطر توانایی مدیریت تعداد زیادی از کلیدها و گره‌ها، مقیاس‌پذیری خوبی داره.

چطوری B-Tree کار می‌کنه؟ ⚙️

فرض کن یه جدول توی دیتابیس داری که می‌خوای ازش به‌سرعت داده‌هایی رو پیدا کنی. اگه این جدول بزرگ باشه، جستجوی خطی خیلی طول می‌کشه. اینجاست که ایندکس به کمک میاد! وقتی یه ایندکس می‌سازی، دیتابیس از B-Tree برای ذخیره کردن اون ایندکس استفاده می‌کنه.

مثلاً اگه یه کوئری مثل این داشته باشی:

SELECT * FROM users WHERE id = 123;

اگه روی ستون id ایندکس ساخته باشی، دیتابیس از B-Tree برای پیدا کردن رکورد مورد نظر استفاده می‌کنه و این کار خیلی سریع انجام میشه.

تفاوت B-Tree و B+Tree چیه؟ 🤨

خیلی از دیتابیس‌های مدرن از نسخه‌ای به نام B+Tree استفاده می‌کنن. فرق B+Tree اینه که همه داده‌ها فقط توی برگ‌ها (leaf nodes) ذخیره میشن و گره‌های میانی فقط برای جستجو استفاده میشن. این باعث میشه که دسترسی به داده‌ها سریع‌تر بشه، چون برگ‌ها به‌صورت مرتب ذخیره شدن و به‌راحتی میشه بین اون‌ها پیمایش کرد.

چطوری ایندکس B-Tree بسازیم؟ 🛠️

ساختن ایندکس B-Tree توی دیتابیس خیلی ساده است. مثلاً توی MySQL می‌تونی اینجوری یه ایندکس روی ستون id بسازی:

CREATE INDEX idx_id ON users (id);


با این کار، دیتابیس یه index برای ستون id می‌سازه و از این به بعد جستجوها خیلی سریع‌تر میشن.

جمع‌بندی 🎯

فهمیدیم B-Tree یه ساختار داده عالی برای مدیریت ایندکس‌ها توی دیتابیس‌های رابطه‌ایه. سرعت بالای جستجو، درج و حذف داده‌ها، و مقیاس‌پذیری بالا از ویژگی‌های خوبشه. با اینکه B-Tree یه ساختار پیچیده‌ست، ولی خیلی از دیتابیس‌های معروف مثل MySQL و PostgreSQL از اون استفاده می‌کنن تا کارایی کوئری‌ها رو بهینه کنن.

امیدوارم مفید بوده باشه :)

#db #btree #bptree


@ninja_learn_ir
Forwarded from Geek Alerts
سامسونگ میخواد با همکاری TSMC یک کارخونه تولید تراشه داخل امارات تاسیس کنه، این پروژه ۱۰۰ میلیارد دلاری سرمایه‌گذارش صندوق Mubadala ابوظبی هست و شامل همون پروژه MGX میشه که میخواد امارات رو به یکی از مراکز هوش‌مصنوعی و تراشه تبدیل کنه، با OpenAI هم همکاری دارن.
ولی از یه طرف اینا چون تکنولوژی های‌تک حساب میشن هر کشوری مثل امارات و ... نمیتونه تولید تراشه داشته باشه.
برای حل این موضوع امارات و سامسونگ اومدن پیشنهاد دادن که آمریکا بر روند تولید و فروش تراشه‌ها نظارت داشته باشه.
سخنگوی امنیت ملی آمریکا هم گفتن تو مسیر درستی برای این همکاری هستیم که یعنی منظورشون ساخته شدن قطعی کارخانه تولید تراشه در امارات هست.
اینا البته جدال بین غرب و شرق هم میشه، آمریکا با این شرط به کشورهای عربی اجازه میده وارد تکنولوژی‌های پیشرفته بشن که در واقع سمت غرب باشن. «نقطه مقابل چین هست»
the-decoder
@geekalerts
Forwarded from Geek Alerts
توی زندان‌ها متداول هست که از زندانی‌ها توی کارهای مثل خیاطی، نظافت و ... استفاده میکنن.
الان توی فنلاند اومدن به کمک یه استارتاپ به اسم Metroc از زندانی‌ها برای کارهای مرتبط با هوش‌مصنوعی استفاده میکنن.
اینجوری که اول یه دوره آموزشی هوش‌مصنوعی برای زندانی‌ها میذارن، به هر کدوم یک لپ‌تاپ میدن و بعد زندانی‌ها توی تمرین دادن هوش‌مصنوعی کمک میکنن.
هم حقوق دریافت میکنن و هم زمان آزادی یک تخصص برای کار کردن دارن که سمت خلاف نرن.
میگن انقدر کار خاصی بوده که کشورهای دیگه ازشون درخواست کردن برای اجراش بهشون مشاوره بدن.
euronews
@geekalerts
Forwarded from Syntax | سینتکس (𝙰𝚖𝚒𝚛𝚑𝚘𝚜𝚜𝚎𝚒𝚗)
Django Serializers: Related Fields in Serializer


وقتی با مدل‌های مرتبط در Django کار می‌کنیم، نمایش اطلاعات کامل آن‌ها در سریالایزرها می‌تواند چالش‌برانگیز باشد. خوشبختانه، Django REST Framework (DRF) ابزارهای قدرتمندی برای این کار در اختیار ما قرار می‌دهد.

سریالایزر DRF به‌طور پیش‌فرض برای فیلدهای مرتبط در هنگام سریال‌سازی داده‌ها از مقدار primary key استفاده می‌کند. به عنوان مثال:

class Author(models.Model):
name = models.CharField()
last_name = models.CharField()

class Blog(models.Model):
title = models.CharField()
author = models.ForeignKey(Author, on_delete=models.CASCADE)

class BlogSerializer(serializers.ModelSerializer):
class Meta:
model = Blog
fields = "__all__"


خروجی BlogSerializer به شکل زیر خواهد بود:

{
"title": "black python",
"author": 3
}


حالا اگر بخواهیم به جای PK، اطلاعات اضافی از Author نمایش دهیم، چند راه حل وجود دارد:

1. استفاده از depth:
با تنظیم پارامتر 1 = depth در Meta کلاس سریالایزر، می‌توانید مشخص کنید که تا چه عمقی از روابط مدل‌ها سریالایز شوند. این روش ساده و سریع است، اما کنترل کمتری بر روی داده‌های خروجی به شما می‌دهد.

class BlogSerializer(serializers.ModelSerializer):
class Meta:
model = Blog
depth = 1


خروجی BlogSerializer به شکل زیر خواهد بود:

{
"title": "python black",
"author": { "name": "amirhossein", "id": 1, "last_name": "some last name" }
}


2. استفاده از Nested Serializers:
با تعریف سریالایزرهای تو در تو، می‌توانید کنترل کاملی بر روی فیلدهایی که می‌خواهید از مدل‌های مرتبط نمایش دهید داشته باشید. این روش انعطاف‌پذیرتر است، اما نیاز به نوشتن کد بیشتری دارد , مثال:

class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = ("name",)

class BlogSerializer(serializers.ModelSerializer):
author = AuthorSerializer()

class Meta:
model = Blog
fields = "__all__"


خروجی به شکل زیر خواهد بود:

{
"title": "black python",
"author": { "name": "amirhossein" }
}


مشکل N + 1 در هنگام استفاده از Depth یا Nested Serializer:
حتما باید در queryset خود از select_related یا prefetch_related استفاده کنید تا از بروز مشکل N + 1 جلوگیری کنید!

Django Serializers: Validators

1 : field level validators
برای اعتبار سنجی داده ها در سطح فیلد در drf باید از دستور زیر پیروی کنید:
class BlogSerializer(serializers.ModelSerializer):
....
def validate_<field name>(self, value): # validate_email
if vlaue in "_" :
serializers.ValidationError("some error")
return value

2 : object level validator

class BlogSerializer(serializers.ModelSerializer):
....
def validate(self, attrs):
if attrs.name == attrs.title :
serializers.ValidationError("name and title can not be same")
return value


Django Serializers: to_internal_value
متود to_internal_value در ModelSerializer قبل از اجرای اعتبارسنجی داده ها به داده های خام دسترسی دارد و میتوانید برای تغییر داده ها یا اضافه کردن داده ها قبل از اعتبارسنجی از اون استفاده کنید:
class BlogSerializer(serializers.ModelSerializer):
....
def to_internal_value(self, data):
data["user"] = self.context["user"] # افزودن شی user به data
return super().to_internal_value(data)

نکته:
اقا حتما موقع return از super().to_internal_value(data) استفاده کنید و return data استفاده نکنید ; چون اینطوری باعث میشه تمام validatorهای modelSerializer که از روی مدل شما بطور پیشفرض ساخته شده , غیرفعال بشن!

Django Serializers: to_representation

ما میتوانیم این رو ش را override کنیم تا قبل از داده های سریالی که نمونه سریالسازبر میگرداند،
دستکاری داده ها را انجام دهیم , مثال:
class BlogSerializer(serializers.ModelSerializer):
....
def to_representation(self, instance):
resp = super().to_representation(instance)
resp['title'] = resp['title'].upper()
return resp


برای اطلاعات بیشتر به کتاب :django in production مراجعه کنید.
یه آمار بگیریم ببینیم دوستان چیکاره هستن 😄

لطفا همه شرکت کنن، بهمون برای تولید محتوای بهتر و مناسب تر کمک میکنه
Anonymous Poll
7%
فرانت کارم
73%
بک اند کارم (Django)
5%
بک اند کارم (Node.js)
15%
سایر
Forwarded from Python BackendHub (Mani)
https://martinheinz.dev/blog/92

یک پست خوب از بنیامین که تو گروه گذاشته بود که چرا نباید از ایمیج Alpine استفاده کنید. سه نکته همیشه موقع تصمیم گیری یادتون باشه:

۱. خیلی کم پیش میاد که یک چیزی خوبه مطلق باشه. همین که قدرت تصمیم گیری تو اپلیکیشن بالغی برای شما فراهم شده یعنی یک ترید آف وجود داشته که maintainer ها گذاشتن خودتون تصمیم بگیرید. اینکه ایمیج سایز کمتر بهتره واقعا جمله چرتیه! درستش اینه که ایمیج چیزه اضافه ای نداشته باشه که نیاز نداشته باشین و مراحل بیلدش درست باشه.

۲. همیشه تحقیق کنید. پیرو مورد یک, خیلی وقتا نیازه که تصمیم گیری کنید. اگه چند تا آپشن دارین, گوگل کنید که چرا اون آپشن بده. و drawback های اون آپشن چیه. درکش کنید چطور کار میکنه. همینطوری از یک توتوریال برندارین کپی پیست کنید.

۳. بهتره داکیومنت که چرا اون تصمیم رو گرفتین. تحقیق کردین, دراوبک هارو متوجه شدید, و طبق یک منطقی یک چیزی رو انتخاب کردین. سعی کنید این پروسه رو داکیومنت کنید, چون ۲ ماه دیگه ممکنه یادتون نباشه چرا اون تصمیم رو گرفتین. و یا هم تیمی هاتون ممکنه بعدا گیج بشن چرا فلان تصمیم گرفته شده. تو این مثال فکر کنید یک نفر بگه خب ما این مشکلی که تو این مقاله گفته شده رو نداریم, پس میریم از ایمیج Alpine استفاده میکنیم. ۱ سال دیگه همون مشکل پیش میاد, چون فرضیاتی که داشتین موقع تصمیم گیری دیگه درست نیست. اشتراک دانش یکی از عناصر مهم پویایی یک تیم و پروداکته.

@PyBackendHub
این article رو در مورد prompt engineering و قدم های بعدیش نوشتم
خوشحال میشم اگه بهش یه نگاه بندازید
https://msnp1381.github.io/posts/Evolution-Prompt/

@DevTwitter | <Nemat/>
Forwarded from Geek Alerts
۵ تا استارشیپ بدون سرنشین تا ۲ سال آینده پرتاب میشن، اگه موفقیت آمیز باشن تا ۴ سال دیگه SpaceX اولین انسان‌هارو به مریخ میفرسته.
سفر از زمین به مریخ فقط هر دو سال یک بار شدنی هست، زمانی که سیارات در یک راستا هستن، قراره مثل تاکسی خطی باشه، یعنی هرکسی بخواد بتونه به مریخ سفر کنه.
اگه برنامه ۵ تا استارشیپ با مشکل مواجه بشه برنامه بعدی یعنی ارسال انسان به مریخ ۲ سال به تعویق میفته.
در واقع تاریخ اول ۲۰۲۸ هست و اگر این تاریخ انجام نشه برای ۲۰۳۰ قطعی هست.
X
@geekalerts