🎄 DevTwitter | توییت برنامه نویسی – Telegram
🎄 DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.36K photos
358 videos
6 files
4.11K links
توییت های برنامه نویسی و طراحی وب :)

@dvtwi

Hashtags:
devtwitter.t.me/5

DevBooks Channel:
https://news.1rj.ru/str/+AYbOl75CLNYxY2U0

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
وقتی از خطرات قالب نال شده وردپرس صحبت میکنیم یه همچین مواردی مد نظر هست.
از دامنه یه سایت شرکتی ایرانی برای فیشینگ استفاده کردن.
با شرکت تماس گرفتم و بهشون اطلاع دادم و پشماشون ریخته بود که چجوری این ممکنه. من اینجا برای شما توضیح میدم:

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

@DevTwitter | <Ameer Mousavi/>
👍72🔥6🤣3👎1
اخیرا مدلهای تبدیل متن به صدا یا  Text to Speech (TTS) زیادی آمدن با توانایی های مختلف. اما یک مدل جدید اومده که چندتا ویژگی داره که از بقیه متمایزش میکنه. اول اینکه کامل اپن سورسه و لایسنس آزاد داره یعنی بدونه هیچ نگرانی میتونید برای پروژه های تجاری ازش استفاده کنید.
اما مهمتر اینکه وقتی متن بهش میدید میتونید یک پرامپت هم بهش بدید که چه جور صدایی را درست کنه. مثلا میتونید بگید "صدای یک زن با لهجه آمریکایی و تون جدی" و اینجوری صدا را با توجه به این پرامپت درست میکنه. مقاله ۵ صفحه بیشتر نیست و خوندنی!

https://github.com/huggingface/parler-tts

@DevTwitter | <Mehdi Allahyari/>
👍30🔥52👎1
دوستان گولنگ کار من درتلاشم که ماژول Collection رو به Goravel اضافه کنم ما میخوایم تا جای ممکن شبیه Laravel Collection باشه اما من به یه مشکلی خوردم اگه گولنگ بلدید میتونید جزئیات رو توی این PR ببینید و اگه نظر یا راه حلی دارید بدید

https://github.com/goravel/framework/pull/456#pullrequestreview-1999671450

@DevTwitter | <Kamandlou/>
👍19👎9
امروز یه پروژه پایان نامه خیلی جالب دیدم، بررسی دروغ-صحت سنجی با پردازش زبان طبیعی (NLP)
تمام کدها با زبان پایتون نوشته شده، سورس کد گیت هاب این پروژه:

https://github.com/Melanee-Melanee/TruthDetection

@DevTwitter | <amir atar/>
👍26👎8🤣2
ساعت هوشمند چطور داده های خام شتابسنج و ژیروسکوپ رو به گام شماری تبدیل میکنه یا میفهمه کی خوابیدیم و کی بیدار شدیم؟!

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

Pedometer
Sleep tracking

ویدئو در یوتیوب:
https://youtu.be/MTMo72uaCZw?si=TgOSVvZ6yMQ5XTAT

@DevTwitter | <حسنوند/>
🔥31👍10👎1
یکی از سوال های محبوب مصاحبه بک اند: فرق Kafka و RabbitMQ چیه؟

۱. Performance and Scalability
کافکا برای throughput بالا و horizontal scalability ساخته شده است. هرچند RabbitMQ پرفرمنس بالایی دارد وقتی throughput و حجم داده زیاد باشد کافکا مناسب تر است.

۲. Message Ordering
در RabbitMQ در یک صف ترتیب پیام ها حفظ میشود. در کافکا در یک پارتیشن ترتیب پیام های یک topic حفظ میشود اما نه در پارتیشن های مختلف.

۳. Message Priority
در RabbitMQ از اولویت پیام ها پشتیبانی میشود که اجازه میدهد پیام های با اولویت بالا زودتر پردازش شوند. کافگا به صورت built-in از اولویت پشتیبانی نمیکند.

۴. Message Model
مدل پیام های RabbitMQ مبتنی بر صف است و از پروتکل AMQP تبعیت میکند اما کافکا مدل لاگ توزیع شده دارد.

۵. Durability:
برای اینکه پیام ها Durable باشند یعنی اگر failure رخ دهد از بین نروند، در RabbitMQ نیاز به تنظیمات است اما کافکا به طور درونی از این مورد پشتیبانی میکند.

۶. Message Routing
در Rabbit برای مسیریابی پیام ها پیشرفته تر و با استفاده از exchange و binding انجام میشود اما در کافکا ابتدایی تر و با استفاده از topic و پارتیشن ها انجام میشود.

۷. Replication
در Rabbit برای replication می توان از Mirrored Queue استفاده کرد. و کافکا نیز به صورت درونی از partition replication پشتیبانی میکند.

8. Stream Processing
هر دو کافکا و Rabbit از پردازش Stream پشتیبانی می کنند.

9. Latency
طراحی RabbitMQ برای تاخیر کم است و در جایی که نیاز به پردازش نزدیک به realtime است، استفاده میشود.

10. License
لایسنس Rabbit از نوع Mozilla Public License و لایسنس کافکا از نوع 2.0 Apache است.

‏RabbitMQ یک message broker اما کافکا یک distributed streaming platform است.
یک فرق اساسی این است که کافکا pull-based اما RabbitMQ داری پروتکل push-based است.
یک سیستم pull-based صبر می کند تا مصرف کننده ها داده را درخواست کنند.
یک سیستم push-based به صورت اتوماتیک پیام ها را به مصرف کنندهای که subscribe کردهاند میفرستد.
یک سیستم pull-based برای کافکا معنی میدهد. چون در کافکا پیام های هر پارتیشن ترتیب دارد و کاربران می توانند با throughput بیشتری داده ها را دریافت کنند.

‏RabbitMQ یک push model با محدودیت prefetch دارد. برای پیام هایی با low-latency مناسب است. هدف اصلی مدل push این است که پیام ها هر چه سریعتر توزیع شوند اما یکی یکی.

‏RabbitMQ می تواند هر ثانیه 4k تا 10k پیام هر ثانیه بفرستد اما کافکا می تواند ۱ میلیون پیام هر ثانیه بفرستد.
در Rabbit مدل smart broker و dumb consumer استفاده میشود اما در کافکا مدل dumb broker و smart consumer استفاده میشود.
نگه داری پیام در RabbitMQ به صورت acknownledge-based اما در کافکا به صورت policy-based است.
در RabbitMQ هیچ محدودیتی برای سایز payload نیست اما در کافکا به صورت پیش فرض یک مگابایت است.

تمرین عملی: یک اپلیکیشن چت بنویسید که چند نمونه از بک اند بالا باشد و هر کلاینت به یک بک اند وصل شود و از طریق کافکا یا RabbitMQ بک اند ها رو با هم sync کنید.

@DevTwitter | <Pouria Jahandideh/>
👍435👎1
Macro instructions
در دنیای کامپیوتر و برنامه نویسی، macro یه سری از دستورات کوچیکه که می‌تونه یه کار بزرگتر رو انجام بده(درشت دستور). مثلا فرض کنید می‌خواین یه سری عملیات پیچیده رو روی یه فایل انجام بدید، به جای اینکه دستور به دستور اونارو تایپ کنید، می‌تونید یه macro بنویسید که همه اون دستورات رو یه جا اجرا می‌کنه.

- مزایاش چیه؟
۱. صرفه‌جویی در زمان:
به جای تایپ کردن دستورات مکرر، فقط کافیه macro رو فراخوانی کنید و همه کارا انجام میشه.
۲. کاهش خطاها:
چون دیگه نیازی به تایپ دستورات نیست، احتمال خطای انسانی کمتر می‌شه.
۳. سازماندهی بهتر:
می‌تونید macro‌هاتون رو طوری بنویسید که کدتون منظم‌تر و خوانا‌تر بشه.
- و...

البته باید دقت کنید که نباید از macro‌ها زیاد سوء استفاده کنید، چون ممکنه باعث بشه برنامهٔ شما کند و ناکارآمد بشه. (با درایت ازشون استفاده کنید)

@DevTwitter | <PinkOrca/>
👍26👎2
گوگل یه repo جدید منتشر کرده که یه سری راهنمایی و مثال داره که چطوری از Gemini API استفاده کنیم.

راهنمای prompt نویسی و فیچرهای مختلف APIش رو گذاشته..

آدرس Repo:
https://github.com/google/generative-ai-python

@DevTwitter | <Sam92/>
👍26🤣3👎2
مورد Redis و Sqlite زیاد صحبت کردیم
بریم سر Redka یک re-implemented از Redis با SQLite
ویژگی های قابل توجه:
نیازی نیست که داده ها در RAM قرار بگیرند.
امکان ACID transactions
امکان SQL views
امکان Go API و RESP
دستورات Redis-compatible و wire protocol
https://github.com/nalgeon/redka

@DevTwitter | <MehrdadLinux />
👍20👎1
دیوار آنتروپی؛‌ چگونه چند لامپ ساده جلوی هک‌شدن اینترنت را می‌گیرند؟
شرکت Cloudflare با دیواری از لامپ‌های گدازه‌ای لاوا که دیوار آنتروپی نامیده می‌شود، بخش بزرگی از اینترنت جهانی را از خطر هک‌شدن دور نگه می‌دارد.

https://www.zoomit.ir/security/419005-lava-lamp-help-encryption/

@DevTwitter | <Zoomit/>
👍44🔥12👎4🤣2
TELNET
می‌دونستید که این پروتکل از اواخر دهه 60 میلادی وجود داشته؟ یعنی قدیمی‌تر از چیزایی که امروزه استفاده می‌کنیم.

کارش این بوده که به کمکش بتونیم از راه دور به یک سیستم دیگه وصل بشیم و روش دستورات رو اجرا کنیم. مثلا تصور کنید می‌خواین به یه سرور از راه دور دسترسی پیدا کنید. با Telnet می‌تونستید این کار رو انجام بدید و دستورات رو مستقیما روی اون سیستم اجرا کنید.

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

جالبه که بدونید Telnet برای برقراری ارتباط از پروتکل TCP استفاده می‌کنه. پس می‌تونیم بگیم که یکی از اولین برنامه‌های کاربردیِ اینترنت بوده که روی TCP کار می‌کرده.

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

@DevTwitter | <PinkOrca/>
👍384👎1
من یک پکیج برای تولید خروجی PDF برای پروژه‌های جنگو نوشتم.
دقیقا شبیه viewهای جنگو ولی تمپلیت هم HTML و هم LaTeX می‌گیره و بعد در خروجی فایل PDFاش بر می‌گردونه.

pip install django-perisan-pdf

از هر بهبودی برای کد و تست‌هاش استقبال می‌کنم:
https://github.com/BinDruid/django-persian-pdf

@DevTwitter | <Druid/>
👍30🔥9👎1
اگر از ووکامرس استفاده میکنید و محصولات متغییر زیادی دارید با این مشکل روبه روشدید که وقتی می خواهید محصولاتی رو ناموجود کنید باید تک تک برید و موجودی اونها رو صفر کنید.
این bulk edit رو نصب کنید و فله‌ای اقدام به صفر کردن موجودی بکنید.

https://gist.github.com/devlifeX/fd66978ad234fffdc52ff41d95fc032f

@DevTwitter | <Dariush vesal/>
👍20👎1
#کوته_نیوز

دیسکورد فیلتر شد

@DevTwitter
🤣58👎32👍235
یا اینجا توضیح دادم که الگوریتم Mark-and-Sweep در Garbage Collector در JavaScript چطور عمل میکنه و بعد از اینکه یه قسمت از کد اجرا میشه و بخش تخصیص داده شده در حافظه غیر قابل دسترس میشه توسط اون حذف میشه و مشکلات کد های غیر اصولی و memory leak و چطور اتفاق می افته!

@DevTwitter | <Max Shahdoost/>
👍19🤣8👎1
یک پچ داخل wayland مرج شده که اکثر مشکلات wayland رو با انویدیا رفع می‌کنه.

https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/90

بعد از اون هم پشتیبانی‌ ازش به kwin اضافه شده:

https://invent.kde.org/plasma/kwin/-/merge_requests/4693


گنوم هنوز مرج نکرده.


@DevTwitter | <SohrabContents/>
👍234👎1🤣1
اگه برنامه‌نویس پایتون باشین حتماً تا حالا اسم Pyinstaller رو شنیدین. این برنامه یه ابزار خیلی کاربردیه که به شما کمک می‌کنه برنامه‌های پایتونی رو به یه فایل اجرایی تبدیل کنین تا بشه اونا رو روی سیستم‌های دیگه بدون نیاز به نصب پایتون اجرا کرد.

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

یه نکته جالب اینه که Pyinstaller از فایل‌های باینری پایتون (bytecode) استفاده می‌کنه تا حجم فایل نهایی کمتر بشه. البته فایل‌های اجرایی ساخته شده توسط Pyinstaller معمولاً حجم زیادی دارن... ولی خب چاره‌ای نیست چون باید همه وابستگی‌ها رو شامل بشن.

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

نصب پکیج:
pip install pyinstaller

روش استفاده:
pyinstaller --onefile my_noscript.py
(اینجا onefile باعث می‌شه که فقط یه فایل اجرایی ساخته بشه و تمام وابستگی‌ها داخلش باشن.)


@DevTwitter | <PinkOrca/>
👍46🤣12👎21
تفاوت Ctrl+F5 و F5 چیه؟

دکمه F5 همون رفرش ساده و استاندارده ، اما کنترل F5 یک رفرش اجباری (forced reload ) انجام میده و این مرورگر رو مجبور میکنه که صفحه رو از سرور دوباره دانلود کنه.

با زدن دکمه F5 به تنهایی فقط صفحه سایت رو با استفاده از کش مرورگر و فایل ها و عکس ها و... که قبلا تو مرورگر ذخیره کرده بود ، صفحه رو Reload میکنه ولی با نگه داشتن Ctrl و سپس زدن F5 ، کل محتوای سایت رو از سرور دانلود میکنه و کاری به کش مرورگر نداره.


@DevTwitter | <Computer_MCH/>
👍90🔥8🤣8👎1
ساخت رابط های کاربری مدرن در پایتون با استفاده از eel
این یک کتابخانه کوچک و بسیار جالبه که به شما کمک میکنه رابط کاربری برای نرم افزارهای دسکتاپی که با پایتون کد زده میشن با استفاده از html, css, javascrip بسازید

این میتونه به شما کمک کنه تا مثلا با کمک bootstrap بتونید رابط های کاربری مدرن در پایتون ایجاد کنید

@DevTwitter | <code_pedia/>
🔥35👍11🤣4👎3
در کرنل لینوکس NUMA چیست؟ به زبان ساده

فرض کنید کامپیوتر شما یه خونه آپارتمانیه. توی این خونه چندتا اتاق (گره) هست که هر کدوم تخت خواب (پردازنده) و کمد (حافظه) دارن.

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

با توجه با این NUMA مثل اینه که یه سری از تخت‌ها و کمدها رو به اتاق‌های دیگه ببریم. این کار به کسایی که توی همون اتاق زندگی می‌کنن کمک می‌کنه که سریع‌تر به تخت‌ها و کمدهاشون دسترسی داشته باشن، بدون اینکه منتظر بمونن بقیه که توی اتاق‌های دیگه هستن ازشون استفاده کنن.

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


در کل NUMA می‌تونه سرعت کار رو با کم کردن زمان دسترسی به حافظه، مخصوصاً برای برنامه‌هایی که به حافظه زیاد نیاز دارن، بهتر کنه.


@DevTwitter | <Linuxor/>
👍35👎3
برای استفاده‌ی رایگان از Llama 3 به لینک زیر برید و از بین مدل ها Llama 70b رو انتخاب کنید.

بعد از کار کردن باهاش خودتون قدرتش رو متوجه میشید و اما نکته‌ی مهم:
برخلاف Llama 2، فارسی رو هم متوجه میشه و دقیق تر بگم از فارسی GPT-4 و Claude خیلی بهتره و این نظر شخصی منه.
پس با این تغییرات، اولین مدل اپن سورس با پشتیبانی از زبان فارسی هم منتشر شد.
لینک استفاده:
labs.perplexity.ai

@DevTwitter | <Sabber/>
👍27🤣3👎1