Pull to refresh
96
0
Таир Юнусов @blaarb

Пользователь

Send message

Предварительная загрузка в PHP 7.4

Reading time5 min
Views14K
Перевод данной статьи подготовлен специально для студентов курса «Backend разработчик на PHP».



В PHP 7.4 добавлена предварительная загрузка — возможность, которая позволяет значительно повысить производительность кода.

О предзагрузке в двух словах.

  • Для предварительной загрузки файлов вам потребуется написать отдельный PHP-скрипт.
  • Этот скрипт выполняется однократно при запуске сервера.
  • Все предварительно загруженные файлы доступны в памяти для всех запросов.
  • Изменения, внесенные в исходный файл, не подействуют, пока вы не перезапустите сервер.

Поговорим о новой возможности подробнее.

Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments15

Как генерировать осмысленные коммиты. Применяем стандарт Conventional Commits

Reading time8 min
Views116K


Привычный хаос в названиях коммитов. Знакомая картина?

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

Меня зовут Ержан Ташбенбетов, я работаю в одной из команд Яндекс.Маркета. И сегодня я расскажу читателям Хабра, какие инструменты для создания осмысленных коммитов мы используем в команде. Приглашаю присоединиться к обсуждению этой темы.

Читать дальше →
Total votes 72: ↑71 and ↓1+70
Comments84

WebSockets — полноценный асинхронный веб

Reading time7 min
Views343K
Пару недель назад разработчики Google Chromium опубликовали новость о поддержке технологии WebSocket. В айтишном буржунете новость произвела эффект разорвавшейся бомбы. В тот же день различные очень известные айтишники опробовали новинку и оставили восторженные отзывы в своих блогах. Моментально разработчики самых разных серверов/библиотек/фреймворков (в их числе Apache, EventMachine, Twisted, MochiWeb и т.д.) объявили о том, что поддержка ВебСокетов будет реализована в их продуктах в ближайшее время.
Что же такого интересного сулит нам технология? На мой взгляд, WebSocket — это самое кардинальное расширение протокола HTTP с его появления. Это не финтифлюшки, это сдвиг  парадигмы HTTP. Изначально синхронный протокол, построенный по модели «запрос — ответ», становится полностью асинхронным и симметричным. Теперь уже нет клиента и сервера с фиксированными ролями, а есть два равноправных участника обмена данными. Каждый работает сам по себе, и когда надо отправляет данные другому. Отправил — и пошел дальше, ничего ждать не надо. Вторая сторона ответит, когда захочет — может не сразу, а может и вообще не ответит. Протокол дает полную свободу в обмене данными, вам решать как это использовать.

Я считаю, что веб сокеты придутся ко двору, если вы разрабатываете:
— веб-приложения с интенсивным обменом данными, требовательные к скорости обмена и каналу;
— приложения, следующие стандартам;
— «долгоиграющие» веб-приложения;
— комплексные приложения со множеством различных асинхронных блоков на странице;
— кросс-доменные приложения.

Заинтриговал? Давайте посмотрим подробнее
Total votes 222: ↑210 and ↓12+198
Comments389

Почти линейное увеличение производительности bzip2 на многопроцессорных системах

Reading time2 min
Views17K
В Linux часто используется сжатие с помощью gzip и bzip2. Они оба обеспечивают хорошую плотность сжатия, и удобны в использовании. При этом bzip2 сжимает большинство файлов эффективнее — но, с другой стороны, работает медленнее, чем более традиционные gzip или zip.

Но можно получить эффективность bzip2, при этом существенно увеличив скорость. Речь идёт об утилите pbzip2 — Parallel BZIP2. В обычном случае при использовании bzip2 задействуется только одно процессорное ядро, в то время как на современных системах их может быть 2, 4, или, например, 8.

Pbzip2 может использовать сразу несколько процессорных ядер, что приводит, по заявлению авторов, к почти линейному увеличению производительности. Сжатые файлы, которые создаёт pbzip2, полностью совместимы с bzip2 1.0.2 и более новыми версиями bzip2 (также есть утилита pigz, которая, в свою очередь, является многопоточной реализацией gzip — спасибо altexxx).

Ниже результат тестирования скорости сжатия участка SQL-файла размером 1000M (dd if=dump.sql of=testfile bs=1M count=1000) на компьютере с двумя процессорами Intel Xeon E5520 (4 ядра, 8 потоков, тактовая частота 2,26 ГГц):

Результаты тестирования

Как видно из результатов тестирования, pbzip2, работающий в 4 потока, приблизительно в 3,6 раз быстрее, чем bzip2, работающий в один поток — что действительно является почти линейным увеличением производительности.

При этом pbzip2, работающий в 16 потоков, оказался медленнее, чем pbzip2, использующий 4 потока — вероятно, из-за скорости выполнения операций ввода/вывода. Также смотрите дополнительные тесты в комментариях (спасибо tristan и bliznezz) — в том числе, с использованием tmpfs-раздела в оперативной памяти.

Используется pbzip2 примерно так же, как и просто bzip2, но есть некоторые дополнительные функции, например вывод прогресса выполнения операции в процентах.

Читать дальше →
Total votes 58: ↑51 and ↓7+44
Comments17

Padding Oracle Attack: криптография по-прежнему пугает

Reading time6 min
Views14K

Эту уязвимость чинят уже пятнадцать лет


В хабрапереводе текста четырёхгодовалой давности «Padding Oracle Attack или почему криптография пугает» была подробно описана атака на режим шифрования CBC. В этом режиме каждый очередной блок открытого текста xor-ится с предыдущим блоком шифротекста: в результате каждый блок шифротекста зависит от каждого блока открытого текста, который был обработан к тому моменту.

Чтобы пропустить исходное сообщение (произвольной длины) через CBC-шифр, к нему дописывается MAC (хеш для проверки целостности, обычно 20-байтный SHA-1) и затем padding, чтобы дополнить открытый текст до целого числа блоков (обычно 16-байтных):


Padding («набивка») состоит из одинаковых байтов, на единицу меньших своей длины: (0) или (1,1) или (2,2,2) или т.п.
Таким образом, получатель шифротекста должен
  1. расшифровать все его блоки;
  2. прочитать последний байт последнего блока, чтобы определить длину набивки и, соответственно, позицию MAC в открытом тексте;
  3. проверить корректность набивки и MAC.

В 2002 г. французский криптограф Серж Воденэ обнаружил в CBC уязвимость к атакам типа «padding oracle»:
Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments18

Повышаем безопасность закрытых ssh-ключей

Reading time8 min
Views64K
Вы когда-нибудь интересовались механизмом работы ssh-ключей? Или тем, насколько безопасно они хранятся?

Я использую ssh каждый день много раз — когда запускаю git fetch или git push, когда развертываю код или логинюсь на сервере. Не так давно я осознал, что для меня ssh стал магией, которой я привык пользоваться без понимация принципов ее работы. Мне это не сильно понравилось — я люблю разбираться в инструментах, которые использую. Поэтому я провел небольшое исследование и делюсь с вами результатами.

По ходу изложения встретится много аббревиатур. Они не помогут понять идеи, но будут полезны в том случае, если вы решите погуглить подробности.

Итак, если вам доводилось прибегать к аутентификации по ключу, то у вас, скорее всего, есть файл ~/.ssh/id_rsa или ~/.ssh/id_dsa в домашнем каталоге. Это закрытый (он же приватный) RSA/DSA ключ, а ~/.ssh/id_rsa.pub или ~/.ssh/id_dsa.pub — открытый (он же публичный) ключ. На сервере, на котором вы хотите залогиниться, должна быть копия открытого ключа в ~/.ssh/authorized_keys. Когда вы пытаетесь залогиниться, ssh-клиент подтвержает, что у вас есть закрытый ключ, используя цифровую подпись; сервер проверяет, что подпись действительна и в ~/.ssh/authorized_keys есть открытый ключ, и вы получаете доступ.

Что же хранится внутри закрытого ключа?

Читать дальше →
Total votes 92: ↑92 and ↓0+92
Comments22

Давайте уже разберемся в DNS

Reading time8 min
Views437K

image
Внимательный читатель найдет на этой картинке IPv6


Люди часто озадачены доменами. Почему мой сайт не работает? Почему эта хрень поломана, ничего не помогает, я просто хочу, чтобы это работало! Обычно, вопрошающий или не знает про DNS, или не понимает фундаментальных идей. Для многих DNS — страшная и непонятная штука. Эта статья — попытка развеять такой страх. DNS — это просто, если понять несколько базовых концепций.


Что такое DNS


DNS расшифровывается как Domain Name System. Это глобальное распределенное хранилище ключей и значений. Сервера по всему миру могут предоставить вам значение по ключу, а если им неизвестен ключ, то они попросят помощи у другого сервера.


Вот и все. Правда. Вы или ваш браузер запрашивает значение для ключа www.example.com, и получает в ответ 1.2.3.4.

Читать дальше →
Total votes 52: ↑48 and ↓4+44
Comments36

DNS-запись CAA. Зачем нужна и как использовать?

Reading time3 min
Views46K
CAA (Certification Authority Authorization) — это новый тип DNS-записи, предназначенный для определения центров сертификации, которым разрешен выпуск SSL/TLS-сертификатов для определенного доменного имени или субдомена.

Крупнейшие и наиболее популярные центры сертификации договорились, что начиная с 8 сентября 2017 года в обязательном порядке строго следовать инструкциям, указанным в CAA-записях доменного имени или субдомена для которого запрашивается выпуск сертификата.

Использование CAA-записи позволит повысить уровень безопасности в сети Интернет и сократить случаи неавторизованного получения сертификатов для сторонних доменных имен.

Я подготовил подробную инструкцию, которая разъясняет возможности CAA-записи и формат ее использования.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments27

Почти 4 млн биткоинов потеряны навсегда

Reading time5 min
Views37K


Подобно тому как золотые слитки могут потеряться в море или 100 долларовые купюры — сгореть, биткоины могут исчезнуть из Интернета навсегда. К моменту добычи всего запаса биткоинов в количестве 21 млн коинов в 2040 году, реальное количество монет, доступных для торговли или траты будет существенно меньше.

По данным нового исследования цифровых криминалистов из фирмы Chainalysis, специалисты которой регулярно изучают Биткоин-блокчейн, количество потерянных навсегда биткоинов составляет от 2.78 до 3.79 млн биткоинов. То есть фактически речь идет о недоступности 17%-23% существующих электронных монет, стоимость каждой из которых по нынешним меркам составляет более 8.5 тыс. долларов1.

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

Как видно на приведенной выше инфографике, Chainalysis поделила существующих запас биткоинов на сегменты, на основе таких признаков, как возраст виртуальных монет и операционная активность. Для определения потерь в некоторых сегментах компания воспользовалась статистической выборкой.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments92

Как ускорить сайт или факторы, влияющие на загрузку сайта

Reading time8 min
Views25K
Цель: Дать базовые понятия о факторах, влияющих на скорость загрузки сайта. Разобрать каждый этап загрузки. Дать понятие о способах ускорения за счёт оптимизации каждого фактора загрузки, на который можно повлиять.

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

Целевая аудитория: владельцы сайтов, web-студии, специалисты и любители. Постараюсь написать статью таким образом, чтобы она была доступна в понимании всем.

Причина написания статьи кроется в том, что я заметил, что многие даже не понимают истинных причин тормозов их сайтов и решил написать эту статью, чтобы человек сам смог прочитать и понять, чего же ему не хватает. На загрузку сайта влияет очень много факторов, на большую часть из них мы можем повлиять; остальные нам просто нужно учитывать.
Читать дальше →
Total votes 24: ↑16 and ↓8+8
Comments19

Как заставить сайт летать и сэкономить десятки часов системного администрирования

Reading time10 min
Views109K
Скорость работы вашего сайта, его стабильность и отказоустойчивость всегда зависят от трех составляющих:

1. Платформа (CMS) и ее настройки, которые влияют на производительность (параметры кэширования и т.п.)
2. Конфигурация сервера (реального физического или виртуального) и настройки системного ПО (веб-сервер, база данных и т.д.)
3. Качество разработки, кода, интеграции с платформой.

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

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

В итоге сайт может «хромать» из-за проблем и «узких» мест в любой из составляющих: CMS, хостинг, разработка. Клиент в нюансы не вникает и остается не удовлетворен проектом в целом. Его негатив переносится на всех: «Тормозной хостинг! Ужасная система! Разработчики ничего не умеют!»

Такая картина нас, конечно, никогда не устраивала. И мы решили, что надо что-то делать…
Читать дальше →
Total votes 99: ↑57 and ↓42+15
Comments107

Шпаргалка: кеширование картинок, CSS и JS в NGINX

Reading time1 min
Views78K
Заметка для тех, кто не специалист в NGINX, а проблему нужно решить быстро.

Допустим, у вас на сервере стоит NGINX и вы хотите, чтобы вся статика кешировалась у клиента. В конфиге хоста NGINX пропишите это:

server {
listen 80;
server_name mysite.com;
...
# Задаем правила обработки статического контента (типов файлов можно поставить и больше)
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js)$ {
root /path/to/document/root/; # Путь к корню вашего сайта
access_log off; # не пишем логи
expires 3d; # кешируем у клиента на 3 дня
}
}

Проверить можно в FireBug во вкладке NET: обновите страницу 2 раза и посмотрите код ответа. Если 200 ОК, то не работает. Если 304 Not Modified, то работает.

Неплохо ускоряет работу сайта.
Total votes 87: ↑52 and ↓35+17
Comments30

Приручаем Tmux для повседневных нужд

Reading time5 min
Views74K
Каждый из нас выбирает для себя наиболее удобную среду разработки. Многие пользуются отдельной IDE, несколькими открытыми консолями, отдельным браузером, множеством прочих сторонних инструментов. Я же придерживаюсь принципа — все должно быть милимастично и просто конфигурируемо. Tmux позволяет сделать очень удобную рабочую среду для программиста.


Конечно даже к хорошему нужно привыкать, у меня лично на адаптацию к Tmux ушло пару дней, после чего я уже начал во всю менять конфиг для увеличения своей производительности. Через полгода я не предсавляю, как можно работать без него.
Если Вам интересно, как можно изменить обычную консоль, превратив ее в нечто похожее на привычный оконный менеджер, то добро пожаловать под кат
Читать дальше →
Total votes 36: ↑33 and ↓3+30
Comments34

Внедрение DMARC для защиты корпоративного домена от спуфинга

Reading time9 min
Views56K
A Thief on the Run by Manweri
A Thief on the Run by Manweri

Привет, Хабр! В этом посте мы снова поговорим о проблеме подделки отправителя (или так называемом спуфинге). В последнее время такие случаи очень участились: подделывается все: письма со счетами за ЖКХ, из налоговой инспекции, банков и так далее. Решить эту проблему помогает настройка строгой DMARC-политики. Мы как почтовая служба проверяем все приходящие к нам письма на DMARC начиная с февраля 2013 года. Мы были первым в рунете почтовым сервисом, поддержавшим стандарты DMARC. Однако чтобы минимизировать число поддельных писем, этого, к сожалению, недостаточно. Главное, чтобы строгий DMARC был поддержан на стороне отправителя. Вот почему мы не устаем качать эту тему, ведем активную разъяснительную работу и всячески призываем всех включать у себя строгий DMARC.

Позитивные сдвиги уже есть: с каждым месяцем мы видим прирост числа корпоративных отправителей, прописавших DMARC, на десятки процентов. Однако безусловно, еще есть над чем работать. Практика показывает, что IT-культура находится на очень разном уровне. Кто-то слышал краем уха про DMARC, но пока не собирается его внедрять. Есть и такие, для кого факт, что в транспортных протоколах электронной почты отсутствует какая-либо проверка и защита адреса отправителя, до сих пор является настоящим откровением. Кроме того, поддержка DMARC — задача непростая. Только на первый взгляд кажется, что достаточно опубликовать запись в DNS, и не требуется никакого дополнительного софта или технических средств (подробнее в нашей статье DMARC: защитите вашу рассылку от подделок). На практике в крупной компании с многочисленными потоками электронной почты и развесистой структурой почтовых доменов все гораздо сложнее. И есть моменты, которые следует предусмотреть и продумать заранее. Именно для таких сложных случаев мы написали эту статью, постаравшись собрать в ней все нюансы.
Читать дальше →
Total votes 51: ↑44 and ↓7+37
Comments33

πfs — революционная файловая система без хранения данных­

Reading time2 min
Views176K

Что это?


πfs это революционная файловая система, которая вместо того, чтобы тратить место на вашем жестком диске, хранит все данные в π. Вам никогда больше не придется заботится о свободном месте! Вам говорили, что 100% сжатие невозможно? Да вот же оно!

Как собрать?


πfs собирается элементарно:
./configure
make


Да и использовать его не сложнее:
πfs -o mdd=<metadata directory> <mountpoint>

Где metadata directory — каталог с метаданными (названия файлов, смещение в π), а mountpoint ­— каталог монтирования.

Что же π делает с моими данными?


π — одна из самых важных констант математики, и у нее есть куча интересных свойств (о которых можно прочесть в статье на википедии)
Одним из таких свойств числа π предположительно является нормальность, что означает, что все его числа распределяются равномерно, при условии, что это дизъюнктивная последовательность, т.е. все конечные числовые последовательности находятся внутри него. Если мы рассмотрим число π по основанию 16 (HEX), то это предположение верно. Первая запись об этом была в 2001 году.
Ну а если так, то зачем нам хранить все эти эксабайты данных на винчестерах, если мы можем найти их в π?
Читать дальше →
Total votes 395: ↑300 and ↓95+205
Comments228

Введение в систему классификации TIER

Reading time4 min
Views23K
Система классификации Tier, разработанная Uptime Institute для оценки надежности дата-центров, приближается к рубежу в два десятилетия. Со времени своего создания в середине 90-х гг. система прошла путь от общей терминологии до глобального стандарта проверки инфраструктуры дата-центров.

Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments6

Как сбросить пароль в Linux

Reading time3 min
Views429K

Давайте рассмотрим несколько способов сбрасывания системного пароля в Linux. Вы наверное знаете, что у пользователя root есть права на изменение пароля любого пользователя в системе. А что если вы забыли пароль от рута? Вот об этом и пойдет речь в статье.

При восстановления пароля (рута или любого другого пользователя) встречаются две различные ситуации, требующие разного подхода.
Читать дальше →
Total votes 88: ↑71 and ↓17+54
Comments66

Настройка DKIM/SPF/DMARC записей или защищаемся от спуфинга

Reading time5 min
Views242K
Приветствую, Хабр! В этой статье будет инструкция по настройке DKIM/SPF/DMARC записей. А побудило меня написать эту статью полное отсутствие документации на русском языке. Все статьи на эту тему, которые были мной найдены, были крайне не информативны.
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments8

Сети для самых маленьких. Часть вторая. Коммутация

Reading time18 min
Views758K


После скучного рассказа о подключении к кошкам переходим к настройке сети. В этот раз темы будут для новичков сложные, для старичков избитые. Впрочем сетевым аксакалам едва ли удастся почерпнуть что-то новое из этого цикла. Итак, сегодня:
а) аккуратно впитываем теорию о коммутаторах, уровнях сетевой модели, понятии инкапсуляции и заголовков (не пугайтесь — еще не время),
б) собираем спланированную в нулевой части цикла сеть,
в) настраиваем VLAN'ы, разбираемся с access и trunk-портами и тегированными Ethernet-фреймами,
г) соотносим текущие знания со стеком протоколов TCP/IP и моделью OSI (да, наконец-то мы ее коснёмся).



Перед тем, как вы обратитесь к практике, настоятельно рекомендуем почитать нулевую часть, где мы всё спланировали и запротоколировали.

Читать дальше →
Total votes 92: ↑88 and ↓4+84
Comments45

KiB, Kib, KB, Kb

Reading time3 min
Views120K
Вот в этом посте товарищ призывает следовать стандартам. Не всё так с ними просто, со стандартами. Я хочу показать насколько сложна ситуация с обозначениями единиц измерения информации. Не буду объяснять важность темы — кому интересно, прошу под кат.
Подробности
Total votes 37: ↑32 and ↓5+27
Comments53
1

Information

Rating
Does not participate
Location
Алматы (Алма-Ата), Алма-Атинская обл., Казахстан
Registered
Activity