Категория:

WEB

Темы:

JavaScript

Клонирование объектов в JavaScript

clone

Клонирование объектов в JavaScript довольно частая операция. К сожалению, JS не предоставляет быстрых нативных методов для решения этой задачи.

К примеру, популярная Node.JS ORM Sequelize, которую мы используем на backend-е нашего проекта, значительно теряет в производительности на предвыборке большого (1000+) количества строк, только на одном клонировании. Если вместе с этим, к примеру, в бизнес-логике использовать метод clone известной библиотеки lodash — производительность падает в десятки раз.

Но, как оказалось, не всё так плохо и современные JS-движки, такие как, например, V8 JavaScript Engine, могут успешно справляться с этой задачей, если правильно использовать их архитектурные решения. Желающим узнать как клонировать 1 млн. объектов за 30 мс — добро пожаловать под кат, все остальные могут сразу посмотреть реализацию.

Категория:

WEB

Темы:

События соб

Статистика использования SSL-сертификатов

Какие SSL-сертификаты используют владельцы крупных сайтов? Ответ на этот вопрос не только покажет популярные центры сертификации, но и немного поможет выбрать SSL-сертификат для своего сайта. В общем, статистику всегда интересно анализировать.

Как проводились наблюдения:

1. Взяты сайты из ТОП-500 Alexa.
Это 500 наиболее трафиковых сайтов мира по данным тулбаров Alexa.

2. Для каждого сайта произведена проверка сертификата
Настроен ли для сайта SSL-сертификат и если да, то самоподписанный или же от какого-то известного центра сертификации.

3. Полученные данные сведены в таблицу
Ниже приведены графики, построенные на основе полученной статистики.

Категория:

WEB

Темы:

Безопасность

Как защитить сайт от спам ботов

Каждый владелец веб-сайта или вебмастер сталкивался с таким бичом, как спам в комментариях или формах контактов, а также регистрация спамботов под видом пользователей. В результате форма на сайте обрабатывает эти сообщения, что тратит ресурсы сервера. Некоторые спам боты загружают страницы сайта для обхода антиспам-защиты, из-за чего ресурсов тратится еще больше.

На небольших объемах это незаметно, но когда веб-сайт в сутки получает тысячи подобных запросов, это может существенно влиять на нагрузку процессора сервера.

Сейчас мы расскажем о новой опции в антиспам-плагинах для CleanTalk, которая позволяет эффективно отражать атаки спамботов на ваш сайт. Опция получила название SpamFireWall(SFW), она блокирует POST- и GET-запросы от наиболее активных спамботов и не дает им загружать сервер.

Категория:

WEB

Темы:

CSS

Варианты использования вертикальных медиа-запросов в css

imageМало кто знает, что в глубинах CSS спецификаций, кроме привычных «горизонтальных» медиа запросов, например, max-width: 768px, существуют ещё и «вертикальные». Примеры их использования не так очевидны, поэтому я решил поделиться с Вами статьей, в которой я опишу несколько практических ситуаций, в которых без таких запросов не обойтись.

Две недели назад, Sara Soueidan написала о «любви» к вертикальным медиа запросам, и тут я вспомнил, что и сам использовал их в некоторых проектах, и задумался над тем, почему бы не написать об этом статью? Так сказать поведать дорогим Хабражителям о своем опыте использования вертикальных медиа запросов.

Да-да, все мы любим медиа-запросы. И не говорите что это не так. Без них наш дизайн сайтов не будет таким отзывчивым, каким мы привыкли видеть его на современных интернет ресурсах. Все мы знаем о таких медиа-запросах как min-width и max-width и о том, в каких случаях они применяются. В данной статье я рассмотрю различные случаи использования min-height.

Категория:

WEB

Темы:

JavaScript

События в Angular Light

Angular Light — это самостоятельный клиентский MV(C/VM) фреймворк, который построен на идеях Angular.js и Knockout.js, и похож на упрощенный Angular.js.

События в Angular Light-1

В Angular Light есть директивы обработки событий: al-click, al-dblclick, al-submit, al-blur, al-change, al-focus, al-keydown, al-mousedown, al-mouseenter и т.д. Как видите под каждое отдельное событие создается отдельная директива, а если директивы нет под какое-то событие, то приходилось делать директиву вручную и это не эффективно.

Поэтому было принято решение сделать возможность обрабатывать любые события одним способом. Рассматривались разные варианты (например al-on="keypress=onClick($event,$element), mousedown=onMouseMove()"), в итоге остановились на варианте, который используется (или похож) в других фреймворках.

Категория:

WEB

Темы:

WordPress Безопасность

XSS уязвимость по-прежнему не устранена в WordPress

В ходе регулярных проверок и исследований была обнаружена сохранность XSS уязвимости, которая затрагивает плагин WordPress Jetpack, установленный на более чем миллион WordPress сайтов. Уязвимость может быть легко использована с помощью wp-комментариев, и поэтому рекомендуется обновить свой плагин как можно быстрее, если Вы этого еще не сделали.

XSS уязвимость по-прежнему сохранятся для WordPress\n \n\nперевод-1

Уязвимость безопасности находится в шорткоде встроенного Jetpack модуля, поэтому, если Вы не активировали его на сайте, Вас не затронет эта проблема. Атакующий может использовать данную уязвимость, оставив комментарий, подготовленный шорткод, чтобы выполнить вредоносный код Javascript на уязвимом сайте.

Поскольку это Cross-Site Scripting (XSS) уязвимость, она может позволить злоумышленнику похитить учетные данные администраторов, вставить SEO спам на пораженную страницу и перенаправлять посетителей на вредоносные веб-сайты.

Категория:

WEB

Особенности лицензирования Plone

Следующей CMS, по вопросам которой готов перевод справочного материала о лицензировании, является Plone. На Хабре про нее также ранее шла речь (см., например, здесь). Она, как и многие другие системы, распространяется на условиях свободной лицензии GPL. Возможно, эта справка и уступает по своему объему иным аналогичным материалам про лицензирование конкретных CMS (например, про тот же Drupal), но все же является хорошим примером того, как разработчики продукта разъясняют своим пользователям (в т.ч. и потенциальным) детали его лицензирования.

Этот документ отвечает на некоторые общие вопросы о Plone, политике его лицензирования и работе лицензии GPL. Соглашение контрибьютора и лицензия GPL остаются официальными источниками (например, все, что мы пишем здесь, не перекрывается этими документами), но этот документ полезен для чтения, если у вас есть вопросы о Plone и его лицензии и вам не хочется читать юридические документы для получения ответов на некоторые простые вопросы.

image

Категория:

WEB

Темы:

CSS

Как сделать "липкий" футер

image

При разработке шаблонов, в какой-то момент Вы, должно быть сталкивались с таким вопросом. Так давайте же разберемся, как сделать так, чтобы футер был внизу тела шаблона, даже если на странице мало текста, который бы толкал футер достаточно вниз, вместо этого футер находится в центре экрана, оставляя огромные пробелы ниже.

В этом уроке я собираюсь рассказать Вам о современных техниках верстки, в частности для создания прилипающего футера, которые гарантированно будут Вам полезны, и гарантированно будут придерживать его в нижней части страницы.

Категория:

WEB

Темы:

SQLite JavaScript Node.js

NeDB - аналог SQLite для NodeJS

NeDB: аналог SQLite для NodeJS-1

NeDB (Node.js Embedded Database) — встраиваемая база данных для NodeJS, реализующая подмножество MongoDB API. Эта легкая NoSQL СУБД написана на чистом JavaScript, не имеет бинарных зависимостей и, помимо NodeJS, может использоваться в NW.js, Electron или прямо в браузере.

NeDB обеспечивает хранение данных в простом файле на диске в json-формате, который похож на коллекции в MongoDB.

Категория:

WEB

Темы:

CSS

Линтинг CSS с помощью stylelint

Перевод гостевого поста Дэвида Кларка на CSS-Tricks.

Дэвид — один из создателей Stylelint — инструмента, позволяющего навести порядок в CSS. Он написал превосходное вступление о том, зачем нужно линтить CSS.

Stylelint hero

Вы пишете CSS. Возможно, очень много. И вы допускаете ошибки. Возможно, тоже очень много. Миру нужен новый герой, который спасёт нас от ошибок в CSS!

Категория:

WEB

Темы:

События

Как все начиналось: первые слова крупных проектов

Первые слова крупных проектов-1

Большое дело начинается с малого шага. Какой-то студент из Питера смастерил веб-сайт на коленке. Никому не известный энтузиаст из Финляндии прислал анонс в тематическую эхо-конференцию по Minix. Кто может предположить, к чему это приведёт?

Спустя много лет интересно взглянуть, как начинались некоторые популярные ИТ-проекты.