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 One3erver.com
🔵پلتفرم PaaS یا Platform as a Service یکی از مدل‌های رایانش ابری یا Cloud Computing است که به توسعه‌دهندگان این امکان را می‌دهد تا نرم‌افزارها و برنامه‌ها را بدون نیاز به مدیریت مستقیم زیرساخت‌های سخت‌افزاری و نرم‌افزاری، توسعه، اجرا و مدیریت کنند.

🔺 برای مشاهده کامل پست، کلیک کنید 🔺

✉️ @one3erver
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Accio
A #typescript trick that was useful to me today:
type NullableKeys<T> = {
[K in keyof T]: undefined extends T[K] ? K : never;
}[keyof T];

export type MakeOptionalPropertiesNullable<T> = {
[K in Exclude<keyof T, NullableKeys<T>>]: T[K];
} & {
[K in NullableKeys<T>]: T[K] | null;
};

MakeOptionalPropertiesNullable will make optional fields of T accept null as well as their type. e.g:
interface User {
name: string;
lastName?: string;
}

Will be transformed into:
interface NewUser {
name: string;
lastName?: string | null;
}


How is this useful?
Working with different controllers, validators or even ORMs might produce situations like this. For example in Prisma schemas any optional value is simply nullable so for an easier type mapping you might want to introduce a persistence model from your read model via this type mapper.
Or you want to accept both null and undefined from your users but don't want to clutter your domain types with it

How is this even working?
We are taking advantage of typescript mappers/transformers. NullableKeys<T> first creates a type that assigns never to any property of T that is not optional (deciding with undefined extends T[K]) and at the end it will get the keys of the transformed object (which will skip any field that has the type never). So we end up with a type like below:
"field1" | "field2" | "field3" | ...

What now? now we pass our type to MakeOptionalPropertiesNullable<T> which at first, goes through any key of T that is not included in NullableKeys<T>. Meaning any key that isn't optional. We don't want to touch those so we simply assign their respective types via T[K]. Now it's time for optional keys to join the party. They will be assigned their own types along side a | null to make them nullable. A simple & will seal the deal at the end.
خب، داشتم محتویات کانال قبلیم رو که حذف کردم (توی یکجا بکاپ داشتم) مرور می‌کردم، دوتا پست رو که به نظر خودم مفید بودن برداشتم و الان می‌خوام بزارم توی این کانال.


@SohrabContents
چطور یک ریمستر از دبیان بسازیم؟ 🫤

خیلی از سوالایی که از من پرسیده میشه اینه که من یک توزیع دبیان بیس نصب کردم، میخوام ازش یک کپی بسازم که کانفیگ هامو داشته باشم و یا میخوام توزیع خودمو داشته باشم.

اول از همه اینکه شما باید تغییراتی که میخواین رو اعمال کنید توی دبین، تغییر تم و غیره
توجه کنید که تم ها باید توی root نصب شده باشن:

/usr/share/icons
/usr/share/themes

بعد از دادن تغییرات و اعمال کردنشون، پوشه های
~/.config
و
~/.local
رو به
/etc/skel
ببرید.

برنامه penguin eggs رو.نصب کنید و طبق دستور العمل گیتهابش مراحل رو طی کنید.

بعد از اتمام کار شما یک iso دارید که کانفیگ ها و تغییرات و برنامه هایی که نصب کردید توش باقی مونده.


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


پ.ن: میخواستم یک فیلم هم از مراحلش بسازم ولی سیستمم ترکید متاسفانه.


@SohrabContents
Forwarded from Dev (♪ Ayhan)
Forwarded from Gopher Academy
🔵 عنوان مقاله
Streamline Your Product Delivery with monday dev

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

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


👑 @gopher_academy
Forwarded from Code Module | کد ماژول (𔓙)
تکنیک های بیشتری برای نوشتن یک رزومه خوب یاد بگیر 👾

توی این پست یه ریپازیتوری خوب بهتون معرفی میکنم که تکنیک های رزومه نویسی، که میتونه در ساخت یه رزومه خوب و استاندارد به شما کمک کنه، شرح داده.

🔗 Link

#resume
@CodeModule
‏در میان کلی خبر مثل انفجار پیجرها، باجگیری از بانک‌های ایران، CTF دزدی شاپرک و غیره، هک شدن Dr.Web هم رخ داده و اینقدر وضعیت بد بوده که مجبور شدن اتصال تمامی سرورها به اینترنت را قطع کنند!
تعداد 400 سرور کامل هک شدند و 390G داده به سرقت رفته است!
https://www.bleepingcomputer.com/news/security/russian-security-firm-drweb-disconnects-all-servers-after-breach/

@DevTwitter | <Vahid Nameni/>
Forwarded from Geniuses Group (Omid Hekayati)
🔗 با همفکری و همراهی چند تن از دوستان سومین دوره جلسات کتاب خوانی و نقد و بررسی آن را ترتیب دادیم.
جلسات بدلیل فیلتر شدن نرم افزار دیسکورد در ایران، در گوگل میت برگزار میشه. در کامنت های همین پست، جزییات شرکت در جلسات و صوت ضبط شده جلسات را قرار میدیم.

🤝 در این سری جلسات کتاب Designing Data-Intensive Applications (THE BIG IDEAS BEHIND RELIABLE, SCALABLE, AND MAINTAINABLE SYSTEMS) از نشر o'reilly را بررسی خواهیم کرد. آرشام در این پست بیشتر در مورد این کتاب توضیح داده.

🧠 در جلسات قصد هست همانطور که کتاب هم تاکید داره تبیین درستی از کلمه Data در حوزه #توسعه #نرم_افزار برای خودمون ایجاد کنیم. هر چند همین ابتدا تاکید می کنیم، این کلمه Data محدود به حوزه توسعه نرم افزار قطعا نیست.

در انتها یک جلمه از هم پیش گفتار کتاب اینجا بیاریم و یادآوری کنیم که یکی از اهداف از سلسه جلسات قبل یعنی بررسی #فلسفه_علم دقیقا فهم چرایی جمله زیر هست که در اونجا با #یادگیری و جداسازی #علم از #ابزار می تونیم با درک عمیق پرسش ها، #تصمیم_سازی های با کیفیت تری داشته باشه.
Software keeps changing, but the fundamental principles remain the same.
Forwarded from LinFAQ (Reza)
#روزی_یک_نکته با دلاتو

دسته‌بندی: #آموزشی #کاربردی
#fzf #bash

خب بریم 5 تا فانکشن bash ردیف شده با fzf که به کار میاد ببینیم

این بخش رو به bashrc اضافه کنید تا با Ctrl r بتونید هیستوری بش رو ببینید یا...:
eval "$(fzf --bash)"

لیست فایل ها (از جمله فایل های پنهان به جز فایل های داخل .git)
function ff() {
    vim "$(fd --type f --hidden --exclude .git | fzf --preview 'cat {}' --select-1 --exit-0)"
}

ترکیب cd و fzf(از جمله دایرکتوری های پنهان به جز .git):
function fcd() {
    cd "$(fd --type d --hidden --exclude .git | fzf --preview 'ls -la {}' --select-1 --exit-0)" || exit
}

لیست فایل ها و باز کردنشون با fzf:
open() {
    xdg-open "$(fd --type f | fzf)"
}

دستورات جهت حذف و نصب پکیج ها:
( البته در pacman )


install() {
    pacman -Slq | fzf --multi --preview 'pacman -Si {1}' | xargs -ro sudo pacman -S
}

uninstall() {
    pacman -Qq | fzf --multi --preview 'pacman -Qi {1}' | xargs -ro sudo pacman -Rns
}

Source


@LinAcademy | @LinFAQ
Forwarded from Gopher Academy
🔵 عنوان مقاله
Tokens for LLMs: Byte Pair Encoding in Go

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

🟣لینک مقاله:
https://eli.thegreenplace.net/2024/tokens-for-llms-byte-pair-encoding-in-go/


👑 @gopher_academy
Forwarded from Linuxor ?
چطور بدون سابقه کاری، رزومه‌ای قوی بسازیم؟

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

راحت ترین چیزی که میمونه گرفتن مدرک ها و سرتیفیکیت هاست، این ریپو اومده یه لیستی از کورس ها و سرتیفیکیت های رایگان که اتفاقا معتبر هم هستن رو جمع آوری کرده

https://github.com/cloudcommunity/Free-Certifications

مثلا بجای اینکه ساده بنویسید Network بلدم بنویسید فلان سرتیفیکیت Network رو از huawei دارم، خیلی خیلی توی رزومتون بولد تر دیده میشه.


🐧 @Linuxor
Forwarded from Python BackendHub (Mani)
یک پست خیلییی خوب دیدم تو لینکدین حیفم اومد باهاتون به اشتراک نذارم!

لینک پست


تو پست بعدی ترجمه شدشو با chatgpt میذارم
@PyBackendHub
Forwarded from Python BackendHub (Mani)
مدیرها، بی‌خیال تیم‌هاتون بشید! لازم نیست کارمندها رو مثل بچه‌هایی که نیاز به مراقبت دائم دارن، کنترل کنید.

اونا نباید برای داشتن زندگی شخصی بیرون از کار معذرت‌خواهی کنن.
به تیم‌تون اعتماد کنید که کار رو تحویل بدن. اینجوری یه محیط مثبت و مولد می‌سازید که همه می‌تونن توش رشد کنن.
استخدام افراد درست فقط شروع کاره. جادوی واقعی زمانی اتفاق می‌افته که بهشون اعتماد کنید و قدرت بدید.
اعتماد یعنی اینکه به تیم‌تون آزادی بدید که کارشون رو بدون دخالت مستقیم شما مدیریت کنن. این نشون می‌ده که بهشون به‌عنوان آدم‌های بالغی که می‌تونن هم زندگی کاری و هم زندگی شخصی‌شون رو مدیریت کنن، احترام می‌ذارید.
این فقط محدود به مرخصی و تعطیلات نیست.
بحث اینه که یه فرهنگ بسازید که آدم‌ها توش احساس کنن می‌تونن کارشون رو به بهترین شکل ممکن انجام بدن - چه توی دفتر باشن، چه از راه دور کار کنن، یا حتی وسط روز کارهای شخصی‌شون رو انجام بدن.
تمرکز باید روی نتیجه باشه، نه “micromanagement”.
Micromanagement خلاقیت رو می‌کشه و انگیزه رو نابود می‌کنه.
اعتماد، برعکس، آدم‌ها رو به بهترین عملکردشون تشویق می‌کنه.
وقتی به تیم‌تون مالکیت کارهاشون رو می‌دید و بهشون فضا می‌دید که موفق بشن، می‌بینید که چطور رشد می‌کنن.

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

- ارتباطات رو باز نگه دارید: فضایی ایجاد کنید که آدم‌ها احساس امنیت کنن و بتونن ایده‌ها و فیدبک‌هاشون رو راحت به اشتراک بذارن.
- موفقیت‌ها رو جشن بگیرید: دستاوردها رو بشناسید و انگیزه رو بالا نگه دارید.
- از تعادل بین کار و زندگی حمایت کنید: به تعادل سالم تشویق کنید تا رفاه و بهره‌وری بهتر بشه.
♻️ Neha K Puri

@PyBackendHub
گنوم ۴۷ وارد مخازن آرچ شد.

ارتقا با
sudo pacman -Syyu



@ParchLinux
دلایل ایجاد overflow در صفحات html

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

1️⃣ استفاده از واحدهای ثابت مانند px برای عرض

اگر از واحدهای ثابت مثل px برای عرض یک عنصر استفاده کنید و این عرض بیشتر از اندازه ویوپورت باشد، اسکرول ایجاد می‌شود.

راه حل ها :
● ریسپانسیو کردن المنت ها و جلوگیری از بروز این مشکل در سایز های کوچک تر.

● استفاده از واحدهای نسبی مثل % یا vw این.

.element {
  width: 100vw;
}


2️⃣ عدم تنظیم صحیح box-sizing

به صورت پیش‌فرض، ویژگی padding و border به عرض یک عنصر اضافه می‌شوند، که ممکن است باعث شود عرض کلی عنصر از مقدار مورد انتظار بیشتر شود و اسکرول ایجاد کند و راه حل برطرف کردنش استفاده از box-sizing: border-box هستش.

راه حل :
* { box-sizing: border-box; }

استفاده از box-sizing: border-box باعث می‌شود padding و border داخل عرض اصلی محاسبه شوند.


3️⃣ استفاده از position: absolute یا position: fixed

اگر عنصری با استفاده از position: absolute یا position: fixed از ویوپورت خارج شود، می‌تواند اسکرول افقی ایجاد کند.

مثال :
.out-of-bounds { position: absolute; left: 2000px; } 


4️⃣ عدم مدیریت صحیح کلمات بلند یا لینک‌ها

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

راه حل :
استفاده ویژگی‌های word-break و overflow-wrap باعث میشه تا مرورگر در صورت برخورد با کلمات بلند، اونها رو به صورت خودکار شکسته و در خطوط جدید قرار دهد.

.long-text {
word-break: break-all;
overflow-wrap: break-word;
}


راه‌حل جامع

برای جلوگیری از اسکرول افقی در کل صفحه می‌تونید از ویژگی overflow-x: hidden استفاده کنید، اگر نیازی به اسکرول افقی ندارید.

نحوه استفاده :
body { overflow-x: hidden; }

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


💎 توی این مطلب سعی کردم تمامی مواردی که میتونن باعث اسکرول افقی در صفحه بشن رو بهتون توضیح بدم

اگر براتون کاربردی و مفید بود حمایت یادتون نره، برای رفقاتونم بفرستید تا استفاده کنن 🔥❤️


#️⃣ #overflow #css #webpage

🚀 @coolycode
کمپایل کدهای C در آپدیت اخیر Bun
از الان پکیج فروش های جاوااسکریپت میتونن ادعا کنن میشه با جی اس، سیستم عامل نوشت :)
https://bun.sh/blog/compile-and-run-c-in-js

@DevTwitter | <hadi mirzaei/>
این بار برای تست مدل یک سری تغییرات دادم :
همونطور که قبلتر هم اشاره کردم Qwen2 جزو مدل‌هایی هست که من همیشه ازش استفاده می‌کنم؛ مخصوصا روی سیستم خودم و کنار مدل‌های دیگه‌ای که دارم (multi-model)

اینبار این مدل رو با qwen2 مقایسه کردم؛ اول روی تسک‌های عادی از چندساعت قبل داشتم روی یک سورس کد Rust کار می‌کردم؛ البته بیشتر برای یادگیری داشتم میخوندم و این ۲ مدل رو با chatgpt مقایسه کردم؛ به همه مدل‌ها دسترسی به اینترنت دادم برای سرچ زدن و البته برای مدل‌های لوکل از duckduckgo استفاده میکردم.

نکته دوم context-length مدل رو روی همون 8K نگه داشتم.

توی این موارد که بیشتر سرچ و توضیح بخش از کد بود و با توجه به اینکه روی Rust هم آموزش دیده خیلی راحت جواب میداد؛ qwen2 جاهایی رو اشتباه میزد مخصوصا وقتی مثال نزدیک بهش توی داکیومنت یا سرچ پیدا نمیکرد. اما نسخه 2.5 موردی نبود که نشه جواب بده خیلی جالب بود که وقتی مثال خوبی هم پیدا نمیکرد بر اساس توضیحات می‌تونست خودش مثال هم بزنه (دسترسی به سرچ رو می‌بستم و ازش میخواستم مثال بزنه) مدل chatgpt هم همینکار رو می‌کرد اما مثال‌های سخت‌تری میزد
برای مثال روی مفهوم مربوط به lifetime ازش سوال پرسیدم اما مثالی که تحویل داد ترکیبی از lifetime, generic بود و وقتی گفتم با مفهوم دوم آشنا نیستم و مثالی بزنه که فقط lifetime توی حالت خاصی که پرسیدم رو توضیح بده؛ یک مثال ساده زد که دیگه اون قوانین lifetime رو نداشت.

البته بعد از ۲-۳ بار تکرار هم زمان پاسخ chatgpt کمتر می‌شد هم نتایج بهبود پیدا میکرد ولی بطور کلی من امتیاز این بخش رو به qwen2.5 میدم.

سوالات بعدی هم این موارد بود که qwen2.5 تمام موارد رو به خوبی جواب داد:
۱- سوالاتی درمورد اتفاقات اخیر انتخابات آمریکا
۲- موضوع مربوط به انفجار پیجرها و ...
۳- سخنرانی اسنودن و خلاصه صحبتش درمورد انتخابات و انتخاب رئیس جمهور

این ۳ مورد کاملا جدید بود و می‌شد نحوه کارش برای استخراج اطلاعات رو تست کرد؛ متاسفانه chatgpt کمی با احتیاط پاسخ میداد (یک سری سوالات جزئی دیگر هم پرسیدم که مجبورش کنم جواب دقیقتر و بی‌پرده بده ولی با اینکه با توجه به fact‌ها باید یک طرف رو انتخاب میکرد اینکار رو نکرد)
مشکلی که با qwen2.5 نبود و راحت تر می‌شد ازش جواب بر اساس دیتا گرفت (البته این مدل هم سانسور شده هست ولی به سوالات عمومی بر اساس دیتا راحت‌تر جواب میده)

مشکل اصلی که با qwen2.5 روی سوالات بالا داشتم کم بودن context-length بود؛ چون گزارش شده بود که مدل 32 میلیارد پارامتری عملکرد بهتری از chatgpt 4o-mini داره برای همین منم از 32b استفاده کردم بجای 7b و مجبور شدم روی 8K context بمونم.

سوالات حل ریاضی - تصویر و ... هم بهش ندادم؛ چون توی کاربردهایی نیست که استفاده می‌کنم ولی قطعا برنده این بخش chatgpt o1 خواهد بود بدون شک.

بعد رفتم سراغ qwen2.5-coder فعلا فقط مدل 7b منتشر شده؛ و منم مستقیم رفتم سر وقت باگ‌هایی که توی کدهای Rust داشتم میگرفتم؛ خیلی سوالاتم سخت و پیچیده نبود شاید (چون تازه‌کار هستم توی Rust و نمی‌تونم ارزیابی کنم سطح کدها رو) و تمام موارد رو با روش ۵ مرحله‌ای که چندشب پیش گفتم ارزیابی کردم.
تقریبا تمام موارد رو بدون نیاز به گوگل کردن به جواب رسیدم؛ بهترین مورد در مورد هر ۲ مدل qwen2.5, qwen2.5-coder قدرتشون توی دنبال کردن دستورالعمل‌ها بود.

شدیدا منتظر انتشار مدل qwen2.5-coder 32b هستم برای استفاده روزمره.
دارم به این فکر می‌کنم شاید باید به زودی سخت‌افزار رو برای استفاده از مدل‌های 70b آپگرید کنم 🧐
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
دستوراتی برای مدیران سیستم لینوکس:
برای پشتیبان گیری از grub

sudo dd if=/dev/sd1    of=/mbr_backup.img    bs=512 count=1



برای بازیابی از grub

sudo dd if=/mbr_backup.img of=/dev/sda bs=512 count=1




نویسنده: حسین سیلانی
منبع : کانال لینوکسی: لینوکس تی ان تی
@linuxtnt
https://seilany.ir