![](https://webcf.waybackmachine.org/web/20220307152857im_/https://habrastorage.org/getpro/habr/upload_files/83b/9ca/dbe/83b9cadbedde8b0fba0769e900122c7c.jpg)
Когда вы разрабатываете сайт, то либо решаете проблему пользователя, либо нет. Будет это эффективный инструмент для бизнеса, приносящий прибыль, или это будет еще один сайт в сети Интернет? Это зависит от множества факторов…
Делаем веб лучше
Когда вы разрабатываете сайт, то либо решаете проблему пользователя, либо нет. Будет это эффективный инструмент для бизнеса, приносящий прибыль, или это будет еще один сайт в сети Интернет? Это зависит от множества факторов…
Прим. Wunder Fund: мы занимаемся высокочастотной торговлей и это заставляет нас часто думать об оптимизации кода, но в основном, конечно, плюсового. В этой короткой статье описаны несколько подходов к оптимизации Python-программ по памяти. И хотя много проблем можно решить, просто докупив ещё памяти, но не все.
Когда заходит разговор об оптимизации производительности приложений, обычно основное внимание уделяют лишь скорости процессора и уровню его использования. Редко кого заботят соображения, касающиеся потребления памяти. Ну — до тех пор, пока программа не исчерпает доступную ей RAM. Обычно, оптимизируя работу с памятью, программы защищают от сбоев, вызываемых ошибками, связанными с нехваткой памяти. Но существует и множество других причин для того, чтобы попытаться ограничить потребление памяти приложением.
В этом материале я исследую подходы, используемые для выяснения того, какие именно части Python-приложений потребляют слишком много памяти. Я проанализирую причины этого и, в итоге, расскажу о том, как снизить уровень потребления памяти, как сделать так, чтобы приложение занимало бы в памяти меньше места. В частности, речь пойдёт о некоторых несложных приёмах и о применении структур данных, позволяющих эффективно использовать память.
Привет, друзья!
В этой серии из 2 статей я хочу поделиться с вами своими заметками о Prisma
.
Prisma
— это современное (продвинутое) объектно-реляционное отображение (Object-Relational Mapping, ORM) для Node.js
и TypeScript
. Проще говоря, Prisma
— это инструмент, позволяющий работать с реляционными (PostgreSQL
, MySQL
, SQL Server
, SQLite
) и нереляционной (MongoDB
) базами данных с помощью JavaScript
или TypeScript
без использования SQL
(хотя такая возможность имеется).
Если вам это интересно, прошу под кат.
Сложно ли найти работу за границей? Вопрос, который волнует многих как начинающих специалистов, так и профессионалов с многолетним стажем. Очень часто возможность поработать за границей представляется чем-то недосягаемым, а одна только мысль о поиске вакансий приводит людей в ужас. По своему личному опыту могу сказать, что бояться тут совершенно нечего.
Работа за границей – это отличный шанс попробовать что-то новое, найти своё место в жизни, а также изменить к лучшему своё профессиональное будущее. В этой статье я поделюсь советами и рекомендациями по поиску работы в зарубежных компаниях и выводами, сделанными на личном опыте, а также расскажу про инструменты необходимые для успешного достижения поставленной цели. Все, кто готов рискнуть и круто поменять свою жизнь – welcome.
Картинка имеет большое значение в современном мире, в том числе, и в рамках интернет продаж - и изображения товаров, и фото готовых работ и объектов или просто привлекательные снимки офиса и сотрудников.
На сайтах присутствует весь спектр пиксельных (и не только) изображений.
Неумелое и беспорядочное использование большого количества картинок может привести к низкой скорости загрузки сайта.
Основная ошибка в подборе изображений для сайта - перфекционизм.
Мы ищем фотографии огромного размера, которые весят не менее 1Мб - для большинства это является показательным критерием качества изображения. На деле же нет никакой необходимости в загрузке такого контента на сайт, пользователь просто не сможет оценить превосходную детализацию снимка на маленьком экране смартфона. И как тогда быть? Уменьшить размер загружаемой картинки. Вот несколько способов, которые можно использовать как по отдельности, так и вкупе:
Привет, друзья!
В этой серии из 2 статей я хочу поделиться с вами своими заметками о Prisma
.
Prisma
— это современное (продвинутое) объектно-реляционное отображение (Object-Relational Mapping, ORM) для Node.js
и TypeScript
. Проще говоря, Prisma
— это инструмент, позволяющий работать с реляционными (PostgreSQL
, MySQL
, SQL Server
, SQLite
) и нереляционной (MongoDB
) базами данных с помощью JavaScript
или TypeScript
без использования SQL
(хотя такая возможность имеется).
Если вам это интересно, прошу под кат.
К старту курса по Fullstack-разработке на Python делимся подборкой расширений Visual Studio Code, среди которых вы найдёте генератор документации для кода JavaScript на базе ИИ и лёгкий, простой клиент REST API. За подробностями приглашаем под кат.
VSCode — самый популярный редактор кода среди веб-разработчиков. Вы можете использовать его с нуля, однако со временем его базовых функций станет недостаточно. Рассказываю, как сам докрутил этот редактор под свои потребности.
Рядовой случай: заказали сайт, web-студия его разработала, протестировала и успешно сдала проект, а в течение гарантийного срока (3-6 месяцев) исправила баги. На первый взгляд все в порядке. Что еще нужно?
Но бизнес не стоит на месте, возможно уже завтра потребуется добавить новый функционал или раздел. Можно конечно заказать доработку. Однако, на практике, если нет своей команды, готовой этим заниматься все может пойти не по плану. В данной статье на примерах разберем что должна включать техподдержка сайта и нужна ли она вообще.
Привет, друзья!
В этой небольшой статье я хочу рассказать вам о File System Access API
(далее — FSA
), позволяющем читать и записывать файлы в локальную систему пользователя с помощью браузера.
Основные источники:
Если вам это интересно, прошу под кат.
Рассмотрим простой пример, чтобы понять, зачем нужны регулярные выражения. Допустим, перед нами стоит задача — найти и заменить местоимение 'ее'
на 'его'
в строке 'Быстрее всего мы догоним ее на машине'
.
Самое очевидное решение — использовать прямую замену, применив встроенную в JavaScript функцию replace():
'Быстрее всего мы догоним ее на машине'.replace('ее', 'его');
Однако 'ее'
также является окончанием слова 'Быстрее'
, а .replace()
заменит первое вхождение подстроки. В итоге мы получим ожидаемо неверный результат: 'Быстрего всего мы догоним ее на машине'.
Поэтому необходимо проверить строку на наличие символа, стоящего перед 'ее'
: если это пробел, можно делать замену.
Больше примеров и неочевидные выводы о том, нужны ли фронтендерам регулярки — внутри статьи.
Бывают ситуации, когда компонент необходимо добавить на страницу динамически. Например, тултип или баннер. В такие моменты на помощь приходит Angular, который умеет создавать компоненты в рантайме и рендерить их. Для этого разработчик может воспользоваться методом createComponent
у ViewContainerRef.
Но с 13 версией фреймворка API этого метода немного изменился. В этой статье поделюсь тем, как теперь выглядит процесс динамического добавления компонента.
<div>
— это самый универсальный и широко используемый HTML-элемент. Сам по себе <div>
не представляет ничего, но он, в то же время, позволяет разработчикам превратить его почти во всё что угодно. Делается это посредством использования CSS (для стилизации), JavaScript (для функционала) и ARIA (для обеспечения доступности контента).<div>
для множества самых разных целей, но, к сожалению, такая вседозволенность может легко привести к злоупотреблениям. Когда тегом <div>
пользуются недостаточно осмотрительно, в итоге может получиться <div>-суп, контент, лишённый семантического значения, интерактивные элементы, не отличающиеся доступностью, или некая комбинация этих нехороших явлений.<div>
выявить сравнительно просто (подробнее об этом поговорим ниже). Но мы дошли до того, что кто-то может назвать «образцом недоступности контента» полностью правильное использование <div>
, или, как минимум, пример лёгкого отклонения от правильности. В таких ситуациях говорят о том, что «кому-то стоило бы вместо <div>
воспользоваться семантическим HTML-элементом».<div>
— давайте вспомним о том, что контекст — это важно.<div>
— это плохо… или — что замена некоего <div>
на «более семантический» элемент способна улучшить доступность некоего документа.<div>
.Всегда хотел взломать Хабр. Мечта такая, но как-то руки не доходили. И вот, вдохновившись статьей о праведной борьбе с Безумным Максом, я, как и автор поста, решил исследовать функционал Хабра на предмет уязвимостей.
Как разработчик я люблю тратить время на пет-проекты и разрабатывать, но не люблю тратить время на маркетинг и хоть как-то их продвигать. Знакомо?
Сегодня я хочу рассказать, как в 2019 году я придумал и внедрил механику тестов в Instagram, делал легкий маркетинг и проверил нужно ли это рынку.
Меня зовут Павел Поляков, сейчас я Principal Engineer в каршеринг компании SHARE NOW, в Гамбурге в 🇩🇪 Германии. Эта и другие истории из моего опыта привели меня к созданию Telegram-канала Хороший разработчик знает, где я рассказываю обо всем, что обычно знает хороший разработчик. Сейчас давайте узнаем, что произошло в 2019.
В данной статье я хочу рассказать про то, как технически устроены бот-атаки типа парсинг цен на e-commerce сайтах, какие механизмы используют атакующие, как противостоять бот-атакам самостоятельно и с помощью прикладных решений.
Я поделюсь практическим опытом нашей компании в защите e-commerce приложений и продемонстрирую реальные кейсы противодействия парсинга и бот-атакам.
В рамках статьи я сосредоточусь на атаках, которые относятся к типу Scraping по классификации OWASP. Детальную классификацию автоматизированных угроз веб-приложениям можно изучить в документе OWASP Automated Threats to Web Applications. Конечно, противодействие бот-атакам данного типа позволит остановить и другие автоматизированные атаки, но в нашей практике мы видим, в основном, именно атаки типа price scraping – автоматизированный сбор информации о товарах и ценах, или парсинг цен. Я не рассматриваю юридические и морально-этические вопросы парсинга цен в данной статье.
Возможно, вы уже читали о конкурсе Flutter Puzzle Hack и думаете о том, как проявить максимум творческих способностей. И мы вам в этом поможем, рассказав о том, как структурирована кодовая база нашего примера головоломки. Подробностями делимся к старту авторского курса по веб-разработке на Python.