Forwarded from Python BackendHub (Mani)
چند نفر تو پیوی ازم پرسیدن چطور به این نتیجه رسیدم و این لایبری رو نوشتم. گفتم شاید بهتر باشه تو کانال در موردش صحبت کنم چون نکته مهمیه که همیشه به درد میخوره.
ببینید من نه مهندس معکوسم، نه تو امنیت کار کردم. یکی از پروژههایی که داشتم روی کراولینگ بود. یه روز دیدم سایتی که کراول میکردم همه درخواستهارو بلاک میکنه. یه درخواست با curl زدم، نتیجه رو ذخیره کردم و دیدم. فهمیدم مشکل چالش Cloudflare هست. جالبه که با مرورگر وقتی همون درخواست رو میزدم، سریع جواب میگرفتم.
من قبلاً کتابی در مورد HTTP و TLS خونده بودم و میدونستم معجزهای در کار نیست. وقتی درخواست میزنی، سرور جوابی میده. پس یه چیزی تو curl داره اشتباه میشه که تو مرورگر نمیشه. درخواست مرورگر رو دقیقاً با curl کپی کردم، ولی بازم فیل شد! ترافیک سیستم رو پروکسی کردم، یک بار همون curl رو زدم و یک بار هم با مرورگر. مقایسهشون کردم و دیدم تفاوت اصلی توی Hello Client هست. همینو تو پایتون پیاده کردم و بایپس شد.
کل این پروسه ۲۰ دقیقه طول کشید. یه سرچ کردم ببینم کلاینت پایتونی برای Cloudflare هست یا نه. دو تا پروژه پیدا کردم که نه کار میکردن نه توضیح داده بودن چطور این کارو کردن. حتی اگه کارم میکردن، استفاده نمیکردم. هیچوقت لایبری که نمیدونی چیکار میکنه رو تو پروداکشن استفاده نکن. بعداً سورس کد یکیشونو دیدم که وسطش یه کار عجیب میکرد که باعث مموری لیک میشد!
نکات مهم این داستان:
۱. دانشی که بهصورت تئوری دارید، زود یادتون میره. وقتی ازش استفاده عملی کنید، بیشتر تو ذهنتون میمونه. استفاده عملی از یک نیاز میاد. نه اینکه یک کتاب بخونید ببینید کد هاشو کپی پیست کنید.
۲. همیشه تحقیق کنید و سولوشنی که پیاده کردید رو بفهمید. من اگه اون لایبری رو استفاده میکردم، مموری لیک میخوردم و این لایبری هم نوشته نمیشد.
۳. برای یادگیری از GPT استفاده نکنید. تئوری یاد بگیرید بهتر از اینه که از GPT بپرسید. چون GPT تئوری رو ناقص میگه و نمیتونه دقیقاً مشکل رو تشخیص بده. همین الان هم این سوال رو ازش پرسیدم با بهترین prompt ای که میشد داد. و جوابشو ببینید خودتون
۴. با تمرین و تکرار مهارتتون بالا میره. این پروسه ۲۰ دقیقه طول کشید چون بارها ترافیک سیستم عاملمو پروکسی کرده بودم و میدونستم Network Tab مرورگر خیلی سطح بالاست و بعضی HTTP Headerها رو نشون نمیده. هیچ مجیکی وجود نداره، تمرینه که دستتو سریع میکنه. شاید یک نفری که ندونه اینارو و نکرده این تسک چند هفتش میشد.
@PyBackendHub
ببینید من نه مهندس معکوسم، نه تو امنیت کار کردم. یکی از پروژههایی که داشتم روی کراولینگ بود. یه روز دیدم سایتی که کراول میکردم همه درخواستهارو بلاک میکنه. یه درخواست با curl زدم، نتیجه رو ذخیره کردم و دیدم. فهمیدم مشکل چالش Cloudflare هست. جالبه که با مرورگر وقتی همون درخواست رو میزدم، سریع جواب میگرفتم.
من قبلاً کتابی در مورد HTTP و TLS خونده بودم و میدونستم معجزهای در کار نیست. وقتی درخواست میزنی، سرور جوابی میده. پس یه چیزی تو curl داره اشتباه میشه که تو مرورگر نمیشه. درخواست مرورگر رو دقیقاً با curl کپی کردم، ولی بازم فیل شد! ترافیک سیستم رو پروکسی کردم، یک بار همون curl رو زدم و یک بار هم با مرورگر. مقایسهشون کردم و دیدم تفاوت اصلی توی Hello Client هست. همینو تو پایتون پیاده کردم و بایپس شد.
کل این پروسه ۲۰ دقیقه طول کشید. یه سرچ کردم ببینم کلاینت پایتونی برای Cloudflare هست یا نه. دو تا پروژه پیدا کردم که نه کار میکردن نه توضیح داده بودن چطور این کارو کردن. حتی اگه کارم میکردن، استفاده نمیکردم. هیچوقت لایبری که نمیدونی چیکار میکنه رو تو پروداکشن استفاده نکن. بعداً سورس کد یکیشونو دیدم که وسطش یه کار عجیب میکرد که باعث مموری لیک میشد!
نکات مهم این داستان:
۱. دانشی که بهصورت تئوری دارید، زود یادتون میره. وقتی ازش استفاده عملی کنید، بیشتر تو ذهنتون میمونه. استفاده عملی از یک نیاز میاد. نه اینکه یک کتاب بخونید ببینید کد هاشو کپی پیست کنید.
۲. همیشه تحقیق کنید و سولوشنی که پیاده کردید رو بفهمید. من اگه اون لایبری رو استفاده میکردم، مموری لیک میخوردم و این لایبری هم نوشته نمیشد.
۳. برای یادگیری از GPT استفاده نکنید. تئوری یاد بگیرید بهتر از اینه که از GPT بپرسید. چون GPT تئوری رو ناقص میگه و نمیتونه دقیقاً مشکل رو تشخیص بده. همین الان هم این سوال رو ازش پرسیدم با بهترین prompt ای که میشد داد. و جوابشو ببینید خودتون
۴. با تمرین و تکرار مهارتتون بالا میره. این پروسه ۲۰ دقیقه طول کشید چون بارها ترافیک سیستم عاملمو پروکسی کرده بودم و میدونستم Network Tab مرورگر خیلی سطح بالاست و بعضی HTTP Headerها رو نشون نمیده. هیچ مجیکی وجود نداره، تمرینه که دستتو سریع میکنه. شاید یک نفری که ندونه اینارو و نکرده این تسک چند هفتش میشد.
@PyBackendHub
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
Forwarded from Sadra Codes
روی Hey یه آپدیت ریز دادم. حالا میتونید آدرس سرویس LLM دلخواه خودتون رو ست کنید واسه پروژه. اینجوری آپدیت کنید:
و اینجوری از کانفیگ جدید استفاده کنید:
اگه نگران پاک شدن کانفیک قبلی هستید (چون config create کانفیگتونو بازنویسی میکنه)، فقط این رو اضافه کنید به کانفیگ فعلیتون:
بصورت پیشفرض تنظیم شده به سرویس MindsDB که میتونید از این به بعد تغییرش بدید. و اینکه ورژن قبلی هنوز به خوبی کار میکنه. اگه احیانا میخواید سرویس رو تغییر بدید اپدیت کنید.
pip install -U hey-mindsdb
و اینجوری از کانفیگ جدید استفاده کنید:
hey config create
hey config edit
اگه نگران پاک شدن کانفیک قبلی هستید (چون config create کانفیگتونو بازنویسی میکنه)، فقط این رو اضافه کنید به کانفیگ فعلیتون:
...
"service": "https://llm.mdb.ai",
...
بصورت پیشفرض تنظیم شده به سرویس MindsDB که میتونید از این به بعد تغییرش بدید. و اینکه ورژن قبلی هنوز به خوبی کار میکنه. اگه احیانا میخواید سرویس رو تغییر بدید اپدیت کنید.
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
Forwarded from Golden Code (علی 🇨🇴)
در لاراول برای تعیین نام جدول pivot به صورت customize شده در رابطه "many to many" از کدوم متود استفاده میشه؟
Anonymous Quiz
27%
PivotTable()
10%
Table()
52%
WithPivot()
11%
Using()
❤1
Forwarded from CleverDevs (Mahdi)
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
Forwarded from Python Hints
راهنمای ایرانسل برای تنظیم اینترنت روی گوشی، مثلاً به انگلیسی، متن نوشته شده :
برسونید به دست بچههای ایرانسل، الان فهمیدم چرا بعضی توریستها دربهدر دنبال یکی میگردن تنظیمات اینترنت رو براشون راه بندازه.
باقی متون انگلیسی ایرانسل هم همینجوری هست ؟
البته همینجا بگم، همراه اول هم وضعیت بهتری نداره ها!
Dar: Settings>More>Mobile Networks>Access Point Names "APN" ra ezafe
برسونید به دست بچههای ایرانسل، الان فهمیدم چرا بعضی توریستها دربهدر دنبال یکی میگردن تنظیمات اینترنت رو براشون راه بندازه.
باقی متون انگلیسی ایرانسل هم همینجوری هست ؟
البته همینجا بگم، همراه اول هم وضعیت بهتری نداره ها!
Forwarded from 🎄 یک برنامه نویس تنبل (Raymond Dev)
🔶 خطای کلاس Normalizer برای نصب لاراول در لینوکس ویندوز
این کلاس Normalizer که بخشی از پسوند intl PHP است در محیط شما موجود نیست. این کلاس برای عادی سازی یونیکد استفاده می شود و برای عملیات خاصی، به ویژه در چارچوب Symfony و Laravel ضروری است.
خطا:
برای حل این خطا بسته زیر را نصب کنید.
Ubuntu/Debian:
Red Hat/CentOS:
Fedora:
Windows:
اگر از زمپ یا لاراگون استفاده می کنید باید اکستشن php_intl.dll در فایل php.ini فعال کنید و برای فعال سازی سمیکالِن یا ویرگول ; زیر را حذف کنید.
راه اندازی مجدد وب سرور
Apache:
Nginx with PHP-FPM:
یا دستور زیر از نصب شدن بسته intl مطمئن شوید.
#linux
#windows
#laravel
@TheRaymondDev
این کلاس Normalizer که بخشی از پسوند intl PHP است در محیط شما موجود نیست. این کلاس برای عادی سازی یونیکد استفاده می شود و برای عملیات خاصی، به ویژه در چارچوب Symfony و Laravel ضروری است.
خطا:
PHP Fatal error: Uncaught Error: Class "Normalizer" not found
برای حل این خطا بسته زیر را نصب کنید.
Ubuntu/Debian:
sudo apt install php-intl
Red Hat/CentOS:
sudo yum install php-intl
Fedora:
sudo dnf install php-intl
Windows:
اگر از زمپ یا لاراگون استفاده می کنید باید اکستشن php_intl.dll در فایل php.ini فعال کنید و برای فعال سازی سمیکالِن یا ویرگول ; زیر را حذف کنید.
extension=php_intl.dll
راه اندازی مجدد وب سرور
Apache:
sudo systemctl restart apache2
Nginx with PHP-FPM:
sudo systemctl restart php-fpm
یا دستور زیر از نصب شدن بسته intl مطمئن شوید.
php -m | grep intl
#linux
#windows
#laravel
@TheRaymondDev
Forwarded from Pishro App
#نکته #داکر
یکی از نکاتی که موقع ایجاد داکر فایل برای پروژه هاتون باید بهش توجه کنید عدم استفاده مکرر از دستور RUN برای هر بخش هست.
🔥 هر دستور RUN در Dockerfile یک لایه اضافی در تصویر نهایی ایجاد می کند.
پس بهترین روش این است که تعداد لایه ها را محدود کنید تا تصویر سبک بمونه.
برای نمونه به جای این:
به این صورت استفاده کنید:
🧠 پس موقع نوشتن داکر فایل سعی کنید از دستور RUN بصورت بهینه استفاده کنید
👾 @pishroapp
یکی از نکاتی که موقع ایجاد داکر فایل برای پروژه هاتون باید بهش توجه کنید عدم استفاده مکرر از دستور RUN برای هر بخش هست.
پس بهترین روش این است که تعداد لایه ها را محدود کنید تا تصویر سبک بمونه.
برای نمونه به جای این:
RUN curl -SL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" --output nodejs.tar.gz
RUN echo "$NODE_DOWNLOAD_SHA nodejs.tar.gz" | sha256sum -c -
RUN tar -xzf "nodejs.tar.gz" -C /usr/local --strip-components=1
RUN rm nodejs.tar.gz
RUN ln -s /usr/local/bin/node /usr/local/bin/nodejsبه این صورت استفاده کنید:
RUN curl -SL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" --output nodejs.tar.gz \
&& echo "$NODE_DOWNLOAD_SHA nodejs.tar.gz" | sha256sum -c - \
&& tar -xzf "nodejs.tar.gz" -C /usr/local --strip-components=1 \
&& rm nodejs.tar.gz \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejsPlease open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from ⚝
YouTube
Tchaikovsky: Swan Lake - The Kirov Ballet
Tchaikovsky: Swan Lake - The Kirov Ballet
Buy from Amazon: http://smarturl.it/KirovSwanLakeAmazon
In this production of the best loved classical ballet 'Swan Lake' the naturally gifted Yulia Makhalina dances the challenging role of Odette/Odile while the…
Buy from Amazon: http://smarturl.it/KirovSwanLakeAmazon
In this production of the best loved classical ballet 'Swan Lake' the naturally gifted Yulia Makhalina dances the challenging role of Odette/Odile while the…
YouTu.be/9rJoB7y6Ncs
Piped | Invidious
به یقین، یکی از بهترین اجراهای بالهٔ جهان:
#culture #heritage
@amiria703_channel
Piped | Invidious
به یقین، یکی از بهترین اجراهای بالهٔ جهان:
#culture #heritage
@amiria703_channel
Forwarded from Sadra Codes
لانچش کردم روی پروداکتهانت. آره خلاصه نیازمند Upvoteهای گرمتان هستیم. 🤍🙌
🐈 : https://www.producthunt.com/new/products/hey-30620d3c-3330-4c6a-86cd-8cf9930a2490
🐈 : https://www.producthunt.com/new/products/hey-30620d3c-3330-4c6a-86cd-8cf9930a2490
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
#کد_بزنیم
میخوام یه نرم افزار بنویسم بیای فایل زیرنویس بدی با گوگل ترنسلیت به صورت خودکار بیاد زیرنویس رو به فارسی برگردونه بدون به هم ریختگی ساعت میدونم شاید خیلی زیرنویس خوبی در نیاد ولی بازم بنظرم برای برنامه نویسایی که انگلیسیشون ضعیفه و بخاطر اون مجبورن دوره های فارسی رو ببینن خیلی خوبه به از طرفی یخوردهمتوجه بشید اونمشکل حل میشه
حالا کسی بهتر از گوگل ترنسلیت برای ترجمه سراغ داره بگه یا هر کی خواست کمک کنه بیاد پیوی باهم بنویسیم حداقلش اینه برنامهنویسامون دوره درست حسابی میبینن بجای خیلی از دوره های فارسی زبان :)
@DevTwitter
میخوام یه نرم افزار بنویسم بیای فایل زیرنویس بدی با گوگل ترنسلیت به صورت خودکار بیاد زیرنویس رو به فارسی برگردونه بدون به هم ریختگی ساعت میدونم شاید خیلی زیرنویس خوبی در نیاد ولی بازم بنظرم برای برنامه نویسایی که انگلیسیشون ضعیفه و بخاطر اون مجبورن دوره های فارسی رو ببینن خیلی خوبه به از طرفی یخوردهمتوجه بشید اونمشکل حل میشه
حالا کسی بهتر از گوگل ترنسلیت برای ترجمه سراغ داره بگه یا هر کی خواست کمک کنه بیاد پیوی باهم بنویسیم حداقلش اینه برنامهنویسامون دوره درست حسابی میبینن بجای خیلی از دوره های فارسی زبان :)
@DevTwitter
Forwarded from ⚝
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
Forwarded from محتوای آزاد سهراب
به زودی در پلاسما ۶.۲
امکان تنظیم نور صفحه هر مانیتور به صورت مجزا و یک سری قابلیتهای جدید.
https://pointieststick.com/2024/08/23/this-week-in-kde-per-monitor-brightness-control-and-update-then-shut-down/
@SohrabContents
امکان تنظیم نور صفحه هر مانیتور به صورت مجزا و یک سری قابلیتهای جدید.
https://pointieststick.com/2024/08/23/this-week-in-kde-per-monitor-brightness-control-and-update-then-shut-down/
@SohrabContents
Adventures in Linux and KDE
This week in KDE: per-monitor brightness control and “update then shut down”
This week was all about the quality of life features! As we close in on Plasma 6.2 (the soft feature freeze is in four days, eek!), some great work that’s been in progress for a long time got…
Forwarded from Anophel | آنوفل
زبان برنامه نویسی GO یا Golang چیست؟ بررسی تخصصی
🔺 گو (Go) که با نام گولنگ (Golang) نیز شناخته می شود، یک زبان برنامه نویسی متن باز، کامپایل شده و تایپ شده استاتیک است که توسط گوگل طراحی شده است. این ساده، با کارایی بالا، خوانا و کارآمد ساخته شده است. Go (یا Golang) قطعاً محبوبترین زبان برنامهنویسی...
🌐 : زبان برنامه نویسی GO یا Golang چیست؟ بررسی تخصصی
#Go #golang #گو #گولنگ
🔺 گو (Go) که با نام گولنگ (Golang) نیز شناخته می شود، یک زبان برنامه نویسی متن باز، کامپایل شده و تایپ شده استاتیک است که توسط گوگل طراحی شده است. این ساده، با کارایی بالا، خوانا و کارآمد ساخته شده است. Go (یا Golang) قطعاً محبوبترین زبان برنامهنویسی...
🌐 : زبان برنامه نویسی GO یا Golang چیست؟ بررسی تخصصی
#Go #golang #گو #گولنگ
Forwarded from Anophel | آنوفل
بهترین روش های MongoDB: بهینه سازی عملکرد
🔺 MongoDB به عنوان یک راه حل قدرتمند دیتابیس NoSQL که انعطاف پذیری، مقیاس پذیری و سهولت استفاده را ارائه می دهد، محبوبیت گسترده ای به دست آورده است. با این حال، برای استفاده از پتانسیل کامل آن، توسعه دهندگان باید به بهترین شیوه هایی که عملکرد و قابلیت...
🌐 : بهترین روش های MongoDB: بهینه سازی عملکرد
#دیتابیس #mongodb
🔺 MongoDB به عنوان یک راه حل قدرتمند دیتابیس NoSQL که انعطاف پذیری، مقیاس پذیری و سهولت استفاده را ارائه می دهد، محبوبیت گسترده ای به دست آورده است. با این حال، برای استفاده از پتانسیل کامل آن، توسعه دهندگان باید به بهترین شیوه هایی که عملکرد و قابلیت...
🌐 : بهترین روش های MongoDB: بهینه سازی عملکرد
#دیتابیس #mongodb