CleverDevs – Telegram
CleverDevs
8.47K subscribers
733 photos
282 videos
27 files
435 links
به کانال کلوردوز خوش اومدین

سعی میکنیم چیزایی که بنظر کاربردی هستن رو باهاتون به اشتراک بزاریم


🔥لینوکس
🔥برنامه نویسی فرانت‌اند
🔥برنامه نویسی بک‌اند
🔥اخبار تکنولوژی و...

CleverDevs are better than other Devs
💢~> @mmdrsdev
Download Telegram
همه میدونیم که مهم‌ترین بخش یادگیری تمرینه؛
اگه ایده‌ای برای تمرین و زدن پروژه ندارید میتونید از این‌جا صد تا پروژه مختلف رو ببینید و هر کدوم یه‌چیز خاص دارن که باید برید راجع بهش سرچ کنید.

لینک:

https://dev.to/bigsondev/100-free-frontend-challenges-3f0?ref=dailydev

#Tool
@CleverDevs @CleverDevsGp
👍18104👌2
این آقا ستار هاشمی وزیر ارتباطات جدید کشوره.

ببینیم تو فحش خوردن میتونه رکورد جهرمی رو بشکونه یا نه

#News
@CeverDevs @CleverDevsGp
🤣105😁16👍8👌4👎2
یکی از بچه های چنل یه ریپازیتوری ساخته و داخلش درباره اینکه چطور توی hyperv*، لینوکس نصب کنیم و اسکریپت برای فعال کردن قابلیت های ویژه اش قرار داده.
تست کنید و اگه ایرادی داشت بگید.
*هایپر-وی برای دوستانی که نمیدونن:
یه هایپروایز نوع یک هست یعنی اینکه ماشین های مجازیتون مستقیما روی سخت افزارتون اجرا میشن و کاری به سیستم عاملتون(ویندوز) نداره و عملکردی خیلی بهتری نسبت به virtual box و vmware میده.

https://github.com/ali-hasehmi/LinuxVM-HyperV

#hyperv
@CleverDevs - @CleverDevsGp
👍246🔥5
Good 🆚 Bad Refactor


وقتی یه پروژه رو میخوایم ریفکتور کنیم چیکارا نکنیم که وضع بدتر شه؟ (این پارت یکه.)

1. Don't Change The Base


بیس کد فعلی رو تا حد امکان تغییر ندید، صرفا شرایط فعلی رو بهتر کنید. مثال:

قبل:
function processUsers(users: User[]) {
const result = [];
for (let i = 0; i < users.length; i++) {
if (users[i].age >= 18) {
const formattedUser = {
name: users[i].name.toUpperCase(),
age: users[i].age,
isAdult: true
};
result.push(formattedUser);
}
}
return result;
}


بعد از یه ریفکتور بد:
import * as R from 'ramda';
const processUsers = R.pipe(
R.filter(R.propSatisfies(R.gte(R.__, 18), 'age')),
R.map(R.applySpec({
name: R.pipe(R.prop('name'), R.toUpper),
age: R.prop('age'),
isAdult: R.always(true)
}))
);


بعد از یه ریفکتور خوب:
function processUsers(users: User[]): FormattedUser[] {
return users
.filter(user => user.age >= 18)
.map(user => ({
name: user.name.toUpperCase(),
age: user.age,
isAdult: true
}));
}


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

#CleanCode SRC
@CleverDevs @CleverDevsGp
👍26👌5🔥322
یکی از ابزار های لینوکسی که اکثر اوقات ازش استفاده میکنم tmux هستش

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

ممکنه بگید خب تب جدید باز میکنم چه نیازی به tmux دارم اما خب tmux دوتا مزیت داره

اول اینکه تو محیط tty که نمیتونید تب باز کنید و اینا میتونید با tmux چند تا کارو باهم انجام بدید
دوم اینکه همه بخش ها جلو چشمتونه و برای دیدن لاگ و ... راحت ترید

برای نصب و استفاده یه سر به گیت هابش بزنید
https://github.com/tmux/tmux/wiki

برای اینکه باهاش را بیوفتید میتونید این چیت شیت یا این ویدیو از جادی رو ببینید

#tools #tmux
@CleverDevs - @CleverDevsGp
1🔥28👍1033👎1🤣1
مثل اینکه پاول دورف (مدیر عامل تلگرام) از آذربایجان رفته فرانسه و توی فرودگاه گرفتنش

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

#News #FREEDUROV
@CleverDevs - @CleverDevsGp
👎40💔30👍10🤣4
خب حالا که رفتید تمرین کردید(😔)، اگه میخواید نمونه‌کار واقعی بزنید برید فیگمای این آقا رو چک کنید:
https://www.figma.com/@praha


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

#Design #Portfolio #Figma
@CleverDevs @CleverDevsGp
128👍7🔥5👌2💔2
Typography Responsive


بجای استفاده از مدیا کوئری،
یه تکنیک برای ریسپانسیو کردن تایپوگرافی‌‌ها اینه که:

1. فونت‌سایز اون متن توی کوچیک‌ترین حالت سایت رو بدست میارید
مثلا کوچیک‌ترین حالت 320px هست و فونت‌سایز اون متن هم تو این حالت 16px.

2. همینکارو برای بزرگ‌ترین حالت هم انجام میدیم مثلا 1280px حداکثر سایز سایته و تو این حالت فونت‌سایز 28px هست.

3. حالا این اطلاعات رو طبق عکس وارد این سایت میکنیم:
Fluid Typography Calculator

4. و بوم یه فانکشن clamp بهمون میده و فونت‌سایز اون متن رو برابر باهاش قرار میدیم.

#Design #CSS #Tool
@CleverDevs @CleverDevsGp
👍196👌42
This media is not supported in your browser
VIEW IN TELEGRAM
حرف های استاد رو باید با طلا نوشت

#fun
@CleverDevs - @CleverDevsGp
😁48🤣43👍7🤯3
Bye Bye try-catch blocks!

?=


مثل اینکه یه آپدیت برای Js قراره بیاد و ارور هندلینگ رو متحول کنه.

الان، برای ارور هندلینگ از try-catch استفاده میکنیم، ولی توی این آپدیت قراره
Safe Assignment Operator
اضافه شه، که خیلی سینتکس تمیز تری داره:
async function getData() {
     const [error, response] ?= await fetch("https://api.example.com/data");
     if (error) return handleError(error);
     return response;
   }


چندتا مزیتش:
👈 نستینگ و تو‌در‌تو بودن کدها کم‌تر میشه.

👈 ای‌پی‌آی های مختلف، ممکنه ارور هندلینگ متفاوتی داشته باشن، و با این روش دیگه نیاز نیست توی بلاک catch شرط‌های مختلف بذاریم.

👈 میتونیم با استفاده از Symbol.result ارور
هندلینگ سفارشی داشته باشیم، اینجوری:
function example() {
     return {
       [Symbol.result]() {
         return [new Error("Error message"), null];
       },
     };
   }
   const [error, result] ?= example();


// البته فعلا چیزی برای جایگزینی بلاک finally گفته نشده که میتونه یکی از معایبش باشه.

#Js #Es Source
@CleverDevs @CleverDevsGp
👍218👌3🔥1
New Text Document.txt
605 B
درود دوستان طی هفته گذشته داشتم یه وبسایت با nextjs توسعه میدادم و برای ui دنبال component های آماده و زیبا و کاربر پسند بودم که به این لایبرری ها و وبسایت ها بر خوردم، امیدوارم به شما هم کمک کنن.

01. shadcn
02. nextui‌
03. mui
04. chakra
05. tailwind
06. aceternity
07. preline
08. tailus
09. flowbite
10. daisyui
11. mantine
12. ariakit
13. primevue

موفق باشید🌹

#UI #Next #React
@CleverDevs @CleverDevsGp
🔥3011👍62👌2
‏Named Arguments توی php چیه و چه کاربردی داره ؟

این فیچر که توی php8 اضافه شده به ما کمک میکنه که آرگومان های تابع رو به جای ترتیب بر اساس اسم هاشون به تابع پاس بدیم

مثلا تابع زیر رو تصور کنید

function createNewUser($name , $city = "Tehran" , $age = "18", $gender = ""){

$user = new User();
$user->name = $name;
$user->city = $city;
$user->age = $age;
$user->gender = $gender;
$user->save();
}


یک تابع سادس که میاد یه کاربر اضافه میکنه. تابع برای سه تا از پارامتر هاش مقدار دیفالت داره یعنی اگه پاسش ندیم اون مقدار دیفالت رو در نظر میگیره حالا فک کنید بخوایم یه کاربر اضافه کنیم و میخوایم شهر و سنش همون مقدار دیفالت باشه ولی جنسیتش رو ست کنیم اگه بخوایم پیشفرض و بر اساس ترتیب آرگومان هارو پاس بدیم نیازه که حتما مقدار شهر و سن رو هم توی آرگومان ها پاس بدیم تا بتونیم مقدار جنسیت رو بدیم اما در عوض میتونیم از طریق اسم پارامتر ها آرگومان هارو پاس بدیم مثل کد پایین



createNewUser(name : "Mammad" , gender : "male");


حالا اگه اسم آرگومان هارو مشخص نمیکردیم مجبور بودیم هر چهارتا آرگومان رو پاس بدیم و خب کدوم شلوغ تر و سخت تر میشد

این قابلیت برای توابعی که تعداد پارامتر زیادی دارن و بیشترشون هم آپشنال هستن خیلی کاربردیه

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

https://stitcher.io/blog/php-8-named-arguments

#php
@CleverDevs - @CleverDevsGp
👍216🔥31👌1
من وقتی میبینم تو یه فیلم/سریال هکره ویندوز داره :

#fun
@CleverDevs - @CleverDevsGp
🤣87😁11👍3
Forwarded from Abolfazl Devs (Abolfazl)
اگه تو ام ازونایی هستی که با فیلم دیدن میخوای زبانتو بهتر کنی ادامه این مطلبو از دست نده 🤓

شما هم احتمالا اکثر فیلما رو با زیر نویس می‌بینید ولی گاهی اوقات شده تو یه فیلم یه عبارتی رو میگن و خوب متوجه نمی‌شید حالا اگه دوتا زیر نویس رو همزمان(یکی بالا یکی پایین) داشته باشید، دیگه چیزیو از دست نمیدید👌

برنامه Subnoscript Merger دقیقا همینکار رو میکنه و دوتا زیر نویس میگیره و در خروجی یه فایل زیر نویس نهایی بهتون میده که میتونید رو پلیر هاتون استفاده کنید.

این برنامه برنامه متن باز هست و با مراجعه در لینک زیر میتونید نحوه استفاده اون رو ببینید.

https://github.com/ixabolfazl/subnoscript-merger

اگه خوشتون اومد خوشحال میشم تو گیتهاب ستاره بدید.

@abolfazl_devs
👍45💯64🔥2👌2👎1