Как стать автором
Обновить
11
0
Пятинский Михаил @zenn

Веб-программирование

Отправить сообщение

Web PUSH Notifications быстро и просто

Время на прочтение 17 мин
Количество просмотров 336K

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


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


Web PUSH Notifications


Я думаю, вы уже знаете что такое push-уведомления, но я всё же напишу коротко о главном.


Пользователь, заходя на сайт, вытягивает (pull) с него данные. Это удобно и безопасно, но с развитием интернет ресурсов, появилась необходимость оперативно доставлять информацию пользователям не дожидаясь пока те сами сделают запрос. Так и появилась технология принудительной доставки (push) данных с сервера клиенту.

Читать дальше →
Всего голосов 36: ↑35 и ↓1 +34
Комментарии 66

Как сделать из сайта приложение и выложить его в Google Play за несколько часов. Часть 1/2: Progressive Web App

Время на прочтение 8 мин
Количество просмотров 96K


Наверное, все близкие к веб-разработке люди уже наслышаны о Progressive Web App. Ещё бы! Эта технология практически уравняла веб и мобильную разработку с точки зрения распространения продуктов и вовлечённости пользователей.

Да, современный фронтенд, написанный, например, на React, работает как приложение. Но вот только скачивается это приложение в браузер и запускается из него. В этом и заключается огромный гандикап, который всегда имела мобильная разработка. Давайте подумаем, чем с точки зрения обычного пользователя, «приложение» отличается от «сайта». Сразу в голову приходит, что приложение в телефоне, а сайт на компьютере. Но ведь есть мобильный браузер, так что сайт и в телефоне тоже. Тогда остаётся 3 существенных отличия:
Читать дальше →
Всего голосов 52: ↑52 и ↓0 +52
Комментарии 31

27 отличных open source-инструментов для веб-разработки

Время на прочтение 3 мин
Количество просмотров 51K


Перевод 27 Amazing Web Development Tools for the Past Year (v.2018)

В 2017-м мы сравнили около 7 500 open source-инструментов для веб-разработки, из которых выбрали 27 лучших (0,4%). Это крайне конкурентный список, в который вошли инструменты, библиотеки и проекты, опубликованные в течение 2017-го. Mybridge AI оценивает их качество на основании популярности, заинтересованности и новизне. Чтобы было понятно, у выбранных продуктов среднее количество звёзд на Github — 5260.

Open source-инструменты могут почти даром повысить вашу продуктивность. Также вы можете чему-то научиться, читая исходный код и создавая что-нибудь на основе этих проектов. Так что рекомендуем уделить время и поэкспериментировать с инструментами из нашей подборки, возможно, какие-то из них прошли мимо вас.
Читать дальше →
Всего голосов 70: ↑55 и ↓15 +40
Комментарии 10

Интеграция с ЕСИА на базе oauth2-client (PHP)

Время на прочтение 3 мин
Количество просмотров 23K


Представляем yet another PHP-пакет интеграции с ЕСИА — ekapusta/oauth2-esia. Реализован как адаптер к популярному league/oauth2-client.

Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 15

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Время на прочтение 7 мин
Количество просмотров 697K
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →
Всего голосов 212: ↑212 и ↓0 +212
Комментарии 352

PHP 5.x – старикам здесь (не) место

Время на прочтение 5 мин
Количество просмотров 14K
Индустрия хостинга неразрывно связана с PHP, на котором полностью или частично написаны более 80% сайтов в Internet. Это сильно влияет на разработку любого софта, предназначенного для работы с хостингом — в том числе такого, как контрольная панель Plesk. Мы делаем продукт для автоматизации управления сервером, создания и конфигурации веб-сайтов и приложений, а значит, и для использования PHP. Одной из наших ключевых задач является необходимость поддерживать уже устаревшие версии PHP – сфера хостинговых услуг, как любой крупный рынок, довольно инертна, и переход на новый PHP происходит крайне медленно. Несмотря на то, что Plesk предоставляет пользователям самые свежие версии PHP в течение 48 часов после их релиза, миллионы сайтов продолжают работать на старых версиях, поэтому спрос на решения, которые могут предоставить их поддержку, остается высоким. Именно по этой причине Plesk продолжает поддерживать и EOLed-бранчи до PHP 5.2 включительно.
Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 35

Очередная статья про Docker для новичка [nginx + php-fpm + postgresql + mongodb]

Время на прочтение 5 мин
Количество просмотров 68K
image

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

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

Добро пожаловать под кат!
Читать дальше →
Всего голосов 25: ↑18 и ↓7 +11
Комментарии 19

Освобождённая эволюция

Время на прочтение 14 мин
Количество просмотров 8.4K

Устраивать ли эволюционной биологии серьёзный пересмотр, или же никакой «революции» не предвидится?




Когда исследователи из Университета Эймори в Атланте тренировали мышей пугаться запаха миндаля (при помощи электрических разрядов), они к своему ужасу обнаружили, что и дети, и внуки этих мышей тоже боялись запаха миндаля. Но такого быть не должно. Многим поколениям школьников рассказывали, что наследовать приобретённые свойства невозможно. Мышь не может рождаться со знанием, полученным её родителями – это как если бы мышь, потерявшая хвост во время несчастного случая, родила бы бесхвостую мышь.

Нет ничего постыдного в том, чтобы не знать о состоянии современной эволюционной биологии, если только вы, конечно, не биолог. Она восходит корнями к синтезу наук, возникшему в 1940-60 годах, поженившему механизм естественного отбора, открытый Чарльзом Дарвином, с открытием Грегора Менделя наследования генов. Традиционный, до сих пор преобладающий подход, говорит о том, что адаптация – всего, от человеческого мозга до хвоста павлина – полностью и удовлетворительно объясняется естественным отбором (и последующим наследованием). Однако с появлением новых идей из геномики, эпигенетики и биологии развития большая часть эволюционистов соглашаются с тем, что их область знаний меняется. Множество данных говорит о том, что процесс эволюции гораздо сложнее, чем когда-то считалось.
Читать дальше →
Всего голосов 20: ↑15 и ↓5 +10
Комментарии 10

Как я писал telegram-бота и заливал его на удаленный сервер

Время на прочтение 7 мин
Количество просмотров 196K

Вступление


Как только на территории РФ вступил в силу запрет на анонимность в мессенджерах, у меня дошли руки написать пост про telegram-бота. По ходу создания бота столкнулся с большим количеством проблем, которые пришлось решать по отдельности, и буквально выцеживать крупинки информации со всего интернета. И вот после нескольких месяцев страданий и мучений (кодинг – не основное моё занятие) я наконец-то закончил с ботом, разобрался со всеми проблемами и готов поведать свою историю Вам.


Читать дальше →
Всего голосов 32: ↑17 и ↓15 +2
Комментарии 20

Обучаемый Telegram чат-бот с ИИ в 30 строчек кода на Python

Время на прочтение 6 мин
Количество просмотров 340K
image

Сегодня мне в голову пришла мысль: «А почему бы не написать Telegram чат-бота с ИИ, которого потом можно будет обучать?»

Читать дальше →
Всего голосов 82: ↑68 и ↓14 +54
Комментарии 106

21 совет по эффективному использованию Composer

Время на прочтение 9 мин
Количество просмотров 25K

Хотя большинство PHP-разработчиков умеют пользоваться Composer, не все делают это эффективно или лучшим возможным образом. Поэтому я решил собрать советы, которые важны для моей повседневной работы. Большинство из них опираются на принцип «От греха подальше»: если что-то можно сделать несколькими способами, то я выбираю наименее рискованный.
Читать дальше →
Всего голосов 42: ↑38 и ↓4 +34
Комментарии 7

Как прочитать большой файл средствами PHP (не грохнув при этом сервак)

Время на прочтение 9 мин
Количество просмотров 47K

Перевод статьи Christopher Pitt.


PHP разработчикам не так уж часто приходится следить за расходом памяти в своих приложениях. Сам движок PHP неплохо подчищает мусор за нами, да и модель веб-сервера с контекстом исполнения, "умирающим" после выполнения каждого запроса, позволяет даже самому плохому коду не создавать больших долгих проблем.


Однако, в некоторых ситуациях, мы можем столкнуться с проблемами нехватки оперативной памяти — например, пытаясь запустить композер на маленьком VPS, или при открытии большого файла на сервере не богатом ресурсами.


Fragmented terrain


Последняя проблема и будет рассмотрена в этом уроке.

Читать дальше →
Всего голосов 64: ↑59 и ↓5 +54
Комментарии 47

Руководство по написанию защищённых PHP-приложений в 2018-м

Время на прочтение 18 мин
Количество просмотров 57K

Приближается 2018 год, и технари — в частности веб-разработчики — должны отбросить многие старые методики и верования в сфере разработки защищённых PHP-приложений. Особенно это относится ко всем, кто не верит, что такие приложения вообще возможны.


Это руководство — дополнение к электронной книге PHP: The Right Way с сильным уклоном в безопасность, а не общие вопросы программирования на PHP (вроде стиля кода).

Читать дальше →
Всего голосов 75: ↑72 и ↓3 +69
Комментарии 38

// бухой, пофиксю позже

Время на прочтение 5 мин
Количество просмотров 102K
long long ago; /* in a galaxy far far away */

 //
    //                       _oo0oo_
    //                      o8888888o
    //                      88" . "88
    //                      (| -_- |)
    //                      0\  =  /0
    //                    ___/`---'\___
    //                  .' \\|     |// '.
    //                 / \\|||  :  |||// \
    //                / _||||| -:- |||||- \
    //               |   | \\\  -  /// |   |
    //               | \_|  ''\---/''  |_/ |
    //               \  .-\__  '-'  ___/-. /
    //             ___'. .'  /--.--\  `. .'___
    //          ."" '<  `.___\_<|>_/___.' >' "".
    //         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
    //         \  \ `_.   \_ __\ /__ _/   .-` /  /
    //     =====`-.____`.___ \_____/___.-`___.-'=====
    //                       `=---='
    //
    //
    //     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    //               佛祖保佑         永无BUG
    //

«Слава богу, багов нет»
Читать дальше →
Всего голосов 261: ↑235 и ↓26 +209
Комментарии 143

Лучшие VPN-решения для пользователей Linux

Время на прочтение 10 мин
Количество просмотров 152K
Если вы выходите в интернет со своего Linux-ноутбука, вам стоит знать об особенностях виртуальных частных сетей (Virtual Private Network, VPN). Эта технология особенно актуальна для тех, кто подключается к Сети через точки доступа, расположенные в общественных местах, однако, во многих ситуациях VPN не повредит и компьютеру, которым пользуются дома.



VPN позволяет защищать данные, передаваемые из точки «А» в точку «Б». Точка «А» — это ваш компьютер. Точка «Б» — это VPN-провайдер, или VPN-система, которую развернули вы сами, либо в облаке, либо где-то ещё, например — в офисе. С VPN-сервисами можно взаимодействовать, используя множество протоколов, но их суть остаётся одной и той же: трафик, который путешествует между компьютером и VPN-сервисом, шифруется. Благодаря этому обеспечивается защита данных от перехвата на пути от пункта отправления к пункту назначения.

В ходе работы с VPN применимо множество сценариев, касающихся маршрутизации. Типичный сценарий заключается в перенаправлении всего трафика по VPN-соединению, но, кроме того, можно применить концепцию «раздельного туннелирования». При таком подходе некоторые данные идут через VPN, а другие — по обычному интернет-соединению в соответствии с правилами маршрутизации.
Читать дальше →
Всего голосов 17: ↑14 и ↓3 +11
Комментарии 36

Создание веб-приложения на Go в 2017 году. Часть 2

Время на прочтение 9 мин
Количество просмотров 49K
Содержание

Итак, наше приложение будет иметь две основные части: клиентская и серверная. (Какой сейчас год?). Серверная часть будет на Go, а клиентская — на JS. Давайте сначала поговорим о серверной части.

Читать дальше →
Всего голосов 26: ↑24 и ↓2 +22
Комментарии 11

Релиз FFCMS 3.0.0 — новая переработанная система

Время на прочтение 5 мин
Количество просмотров 7.9K
Доброго времени суток обитатель habrahabr, сегодня я хочу тебе рассказать о новом релизе ffcms — 3.0.0 и кратко осветить кардинальные изменения, которые претерпела система с момента предыдущего релиза — 2.0.4.

Система сохранила бесплатную модель распространения и открытый исходный код (MIT), но исходный код был полностью переписан под MVC архитектуру и автозагрузку PSR-0. Многие «велосипеды» были убраны из системы, а их место заняли популярные компоненты: symfony http foundation, laravel eloquent и многие другие.

Расскажи более подробно
Всего голосов 23: ↑20 и ↓3 +17
Комментарии 77

Ваш язык программирования — отстой

Время на прочтение 54 мин
Количество просмотров 139K
1 Почему JavaScript отстой
• 1.1 Плохая конструкция
• 1.2 Система типов
• 1.3 Плохие функции
• 1.4 Отсутствующие функции
• 1.5 DOM
2 Почему Lua отстой
3 Почему PHP отстой
• 3.1 Исправлено в поддерживаемых в настоящее время версиях
4 Почему Perl 5 отстой
5 Почему Python отстой
• 5.1 Исправлено в Python 3
6 Почему Ruby отстой
7 Почему Flex/ActionScript отстой
8 Почему скриптовые языки отстой
9 Почему C отстой
10 Почему C++ отстой
11 Почему .NET отстой
12 Почему C# отстой
13 Почему VB.NET отстой
15 Почему Objective-C отстой
16 Почему Java отстой
• 16.1 Синтаксис
• 16.2 Исправлено в Java 7 (2011)
• 16.3 Модель
• 16.4 Библиотека
• 16.5 Обсуждение
17 Почему Backbase отстой
18 Почему XML отстой
19 Почему отстой XSLT/XPath
20 Почему CSS отстой
• 20.1 Исправлено в CSS3
21 Почему Scala отстой
22 Почему Haskell отстой
23 Почему Closure отстой
24 Почему Go отстой
• 24.1 Базовые средства программирования (базовый язык)
• 24.2 Взаимосовместимость
• 24.3 Стандартная библиотека
• 24.4 Набор инструментальных средств
• 24.5 Сообщество
25 Почему Rust отстой
• 25.1 Безопасность
• 25.2 Синтаксис
• 25.3 Конструкция API и система типов
• 25.4 Сообщество
• 25.5 Набор инструментальных средств

Почему JavaScript отстой


Учтите, что некоторые положения относятся не к самому JavaScript, а к программным интерфейсам веб-приложений (https://developer.mozilla.org/en/docs/Web/API).

Плохая конструкция

• Каждый скрипт исполняется в едином глобальном пространстве имён, доступ в которое возможен в браузерах с оконным объектом.
• Camel-регистр никуда не годится:

XMLHttpRequest
HTMLHRElement

Читать дальше →
Всего голосов 314: ↑167 и ↓147 +20
Комментарии 353

Работа с WAV-файлами с использованием PHP

Время на прочтение 7 мин
Количество просмотров 17K
Всё началось с того, что я задумался о том, как отобразить на сайте информацию о загруженном аудио-файле. Для начала решил разобраться с самым простым форматом — wav. Как оказалось, ничего сложного в этом нет и писать именно об этом, в общем-то, не было бы никакого смысла, благо, информации о том, как устроен wav-файл «изнутри» в Интернете полно.

И тут Остапа понесло И тут в голову пришла светлая мысль о том, что было бы прикольно не просто отображать информацию о файле, но и иметь возможность генерировать такой файл «на лету». Думаю, все видели в сети всевозможные «онлайн-пианино» и прочее, верно?

Итак, что мне удалось сделать за 2 вечера — под катом.
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 13

Mandrill всё? Как я искал замену и нашел 2 прекрасные альтернативы Мандрилу

Время на прочтение 4 мин
Количество просмотров 59K
TL;DR: Mandrill захотел поднять цены в 4 раза. Они нашли способ через интеграцию с MailChimp.

В феврале этого года, как гром среди ясного неба, пришло письмо от Mandrill о том, что с 27го апреля он перестаёт существовать как независимый сервис и теперь чтобы им пользоваться нужно будет интегрировать свой Mandrill аккаунт в платный аккаунт MailChimp. Именно платный, пусть даже и самый дешевый. Вот как выглядит ценник MailChimp:



Напомню, что раньше Mandrill был бесплатным для небольших проектов до 12.000 писем в месяц (около 400 в день). Сейчас же как минимум $20 + сколько напосылаешь писем.
Читать дальше →
Всего голосов 25: ↑23 и ↓2 +21
Комментарии 69

Информация

В рейтинге
Не участвует
Откуда
Керчь, Республика Крым, Россия
Дата рождения
Зарегистрирован
Активность