Pull to refresh
11
0
Арвид @Psih

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

Send message

Лучше, чем говорят: три необходимых вещи, чтобы следующий MacBook стал одним из лучших ноутбуков Apple

Reading time9 min
Views31K
Это какая-то, наверное, особая форма слоупочества, но в середине весны, практически на пороге ожидавшегося тогда в июне релиза нового поколения MacBook, я запрыгнул в последний вагон поезда, из которого остальные уже собрались выходить — и стал обладателем «Макбука» пока ещё нынешнего поколения. Того самого, который без вентилятора, с одним портом USB-С на все случаи жизни и очень плохим паблисити после релиза.

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


За шумом вокруг гаджетов почти незаметно, как ноутбуки приблизились к совершенству

Выбор оказался ужасным. Для меня Pro 15" стал личным провалом. До такой степени, что, за 2 месяца до предполагаемого релиза следующего поколения (не случившегося ни тогда в июне, ни вчера, 12 сентября) — я купил розовый MacBook. В конце концов, чего мне опасаться его маломощности, когда самая ресурсоёмкая моя задача, обычно, браузер? (Спойлер: за пять месяцев поводов жаловаться на его мощность так и не возникло).
Читать дальше →
Total votes 97: ↑50 and ↓47+3
Comments371

Докеризация nginx и php на сокетах с ротацией логов

Reading time5 min
Views23K
В статье на Хабре обсуждался «docker way»(TM), который гласит: один контейнер — один процесс.
one process per container
Each container should have only one concern

Decoupling applications into multiple containers makes it much easier to scale horizontally and reuse containers. For instance, a web application stack might consist of three separate containers, each with its own unique image, to manage the web application, database, and an in-memory cache in a decoupled manner.

You may have heard that there should be “one process per container”. While this mantra has good intentions, it is not necessarily true that there should be only one operating system process per container. In addition to the fact that containers can now be spawned with an init process, some programs might spawn additional processes of their own accord. For instance, Celery can spawn multiple worker processes, or Apache might create a process per request. While “one process per container” is frequently a good rule of thumb, it is not a hard and fast rule. Use your best judgment to keep containers as clean and modular as possible.

If containers depend on each other, you can use Docker container networks to ensure that these containers can communicate.
Следование этому принципу при докеризации nginx чревато двумя последствиями. Настроить взаимодействие nginx и php-fpm в разных процессах через unix сокет немного сложнее, чем может показаться. И ротация логов, которая при обычной установке идет «из коробки», не может осуществляться в принципе, т.к. требует отправки сигнала USR1 nginx, для чего нужен ещё один процесс.
Читать дальше →
Total votes 17: ↑11 and ↓6+5
Comments25

Как мы ускорили наш DNS стек в 3 раза

Reading time8 min
Views11K

Компании Cloudflare уже пошёл 6-й год и предоставление авторитативных DNS серверов было основной нашей инфраструктуры с самого начала. С тех пор мы выросли, став самым большим и быстрым поставщиком услуг DNS в Интернете, обслуживая около 100 000 сайтов из списка Alex top 1M sites, и более 6 миллионов DNS зон.


imageImg


На сегодняшний день наш сервис DNS отвечает около 1 миллиона запросов в секунду — не считая трафика во время атак — с помощью глобальной anycast сети. Разумеется, технологии, которые мы, будучи растущим стартапом, использовали для того, чтобы обслуживать сотни и тысячи зон несколько лет назад уже не справляются с миллионами, которые мы имеем сегодня. В прошлом году мы решили заменить два ключевых элемента в нашей DNS инфраструктуре: часть нашего DNS сервера, который отвечает на авторитативные запросы и систему, которая берёт пользовательские изменения и обновляет их на пограничных серверах по всему миру.

Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments3

Видеоконференцсвязь для одной государственной организации: почему нужны аппаратные решения

Reading time7 min
Views27K

Студия телеприсутствия

Итак, однажды мы выиграли тендер на создание ВКС (видеоконференцсвязи) для одного госзаказчика, эксперты которого должны постоянно взаимодействовать с различными министерствами и ведомствами стран СНГ и не только. Серверное ядро системы должно было находиться в Москве у заказчика. Ещё из важного — два больших зала, переговорки, студия телеприсутствия, персональные терминалы для руководства. В общем, много железа.

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

Итак, давайте сначала посмотрим на инфраструктуру всего проекта оснащения комплекса зданий по этажам.
Читать дальше →
Total votes 27: ↑20 and ↓7+13
Comments43

6 типичных ошибок при заключении договоров на разработку ПО

Reading time9 min
Views34K
В очередной раз хотим затронуть тему, когда компания разработчик ПО выполняет свою работу, но заказчик не хочет ее оплачивать. И судя по количеству публикаций на подобную тему, актуальность данного вопроса для отечественных разработчиков ПО растет.

Описанная ниже ситуация — это ситуация из жизни. В момент написания статьи данная ситуация еще не получила окончательного положительного разрешения для компании разработчика ПО (далее будем называть ее ИТ компания, название компании в данный момент раскрыть не можем), с которым мы работаем вот уже более года по взысканию семизначной суммы задолженности. Возможно, для кого-то данная статья окажется полезной и позволит избежать подобной участи, либо позволит минимизировать возможные потери если ситуация еще не сильно запущена.
Читать дальше →
Total votes 38: ↑31 and ↓7+24
Comments47

Низкий FPS при прокрутке страницы. Решение проблемы background-attachment: fixed

Reading time2 min
Views41K
Решил я тут недавно на одном из своих сайтов сделать легкий редизайн. И дошло дело до фона. Показался он мне каким-то скучным. Захотелось его немного «оживить». Подобрал подходящую картинку небольшого размера, загнал ее в свойство фона:

body{
	background: url("../images/bg.jpg") no-repeat center center / cover fixed;
}


и довольный нажал F5. Красота, да и только!

Начал скроллить страничку вниз и чувствую, что-то не то…


Такое чувство, как будто я играю в Crysis на очень старом компьютере. Почему же на сайте начались «тормоза» и прокрутка проходит рывками?

Я начал свое расследование…
Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments33

Почему Яндекс отказался от подтверждения сайтов txt-файлом

Reading time5 min
Views55K
Эта история про забавное стечение обстоятельств и один крошечный баг, который до недавнего времени имел место быть в сервисе «Я.Вебмастер». Хронология и некоторые моменты, изложенные тут, немного изменены, для более складного повествования. Но тем не менее, суть, остаётся не изменной.



Началось всё с того, что я заметил странную особенность CMS Wordpress. Так, при при первом обращении, к моему сайту по адресу www.domain.com/non_existent_file.ext выводился заголовок «404 Not Found», а при повторном «200 OK». На тот момент казалось, что на это могут влиять мои правки в движке и различные прикрученные костыли. Но при диагностике, на этапе отключения плагинов, выяснилось, что причиной такого поведения является плагин «W3 Total Cache». Не разбираясь в деталях, с мыслью «допилят ещё», включил его снова и забыл.

Через пару месяцев решил добавить этот сайт в Я.Вебмастер. Сервис предоставлял несколько способов для подтверждения владения сайтом.
Читать дальше →
Total votes 72: ↑68 and ↓4+64
Comments31

Как я 8 месяцев переписывал свою криптовалюту с PHP на Go. Часть 1

Reading time6 min
Views69K


«Не звони и не пиши мне больше!!!!» — пришла смс-ка от моей девушки Кати. Через пару часов я осознал, что теперь у меня появилась куча свободного времени и я решил переписать Dcoin на Go.


Читать дальше →
Total votes 100: ↑78 and ↓22+56
Comments58

Видео с очередной встречи PUG: Phalcon и Zephir

Reading time1 min
Views3.9K


Привет, Хабр!

Сегодня хотим поделиться видео с пятой встречи днепропетровской PHP User Group. Александр Трищенко и Иван Стеценко рассказывали про Phalcon и Zephir. Информацию о спикерах и докладах можно найти под видео.


Читать дальше →
Total votes 14: ↑10 and ↓4+6
Comments0

Взгляды на Zend PHP Certification

Reading time2 min
Views19K
О том, что такое Zend Certified PHP Engineer (ZCE) и как к нему готовиться было достаточно статей. Я опишу свое мнение о ZCE (PHP 5.5) и свой процесс подготовки за неделю (с учетом моего пятилетнего опыта практической разработки).

Взгляды на ZCE


Сама по себе сертификация, в общем и целом (за исключением нескольких вопросов), проверяет, насколько усвоенной оказалась официальная документация PHP. Может попасться пару практических вопросов, а также вопросы на знание паттернов (мне попался про Registry и его применимость), что немного радует.
Читать дальше →
Total votes 23: ↑16 and ↓7+9
Comments22

Подробно об объектах и классах в PHP

Reading time25 min
Views94K
Сегодня объекты используются очень активно, хотя это трудно было предположить после выхода PHP 5 в 2005 году. Тогда я ещё мало что знал о возможностях этого языка. Пятую версию PHP сравнивали с предыдущей, четвёртой, и главным преимуществом нового релиза стала новая, очень мощная объектная модель. И сегодня, десять лет спустя, около 90% всего PHP-кода содержит объекты, не изменившиеся со времени PHP 5.0. Это убедительно говорит о том, какую роль сыграло внедрение объектной модели, неоднократно улучшавшейся на протяжении последующих лет. В этом посте я хотел бы рассказать о том, как всё устроено «под капотом». Чтобы люди понимали суть процессов — почему сделано так, а не иначе — и лучше, полнее использовали возможности языка. Также я затрону тему использования памяти объектами, в том числе в сравнении с эквивалентными массивами (когда это возможно).

Я буду рассказывать на примере версии PHP 5.4, и описываемые мной вещи справедливы для 5.5 и 5.6, потому что устройство объектной модели там почти не претерпело изменений. Обратите внимание, что в версии 5.3 всё не так хорошо с точки зрения возможностей и общей производительности.

В PHP 7, который пока ещё активно разрабатывается, объектная модель переработана не сильно, были внесены лишь незначительные изменения. Просто потому что всё и так хорошо работает, а лучшее — враг хорошего. Были добавлены возможности, не затрагивающие ядро, но здесь об этом речи не пойдёт.
Читать дальше →
Total votes 58: ↑54 and ↓4+50
Comments15

Nginx и https. Получаем класс А+

Reading time4 min
Views161K
image

Недавно вспомнилось мне, что есть такой сервис — StartSsl, который совершенно бесплатно раздаёт trusted сертификаты владельцам доменов для личного использования. Да и выходные попались свободные. В общем сейчас напишу, как в nginx настроить HTTPS, чтобы при проверке в SSL Labs получить рейтинг А+ и обезопасить себя от последних багов с помощью выпиливания SSL.

Итак, приступим. Будем считать, что у вы уже зарегистрировались на StartSsl, прошли персональную проверку и получили вожделенный сертификат. Для начала опубликую итоговый конфиг, а после этого разберу его.
Читать дальше →
Total votes 61: ↑52 and ↓9+43
Comments85

Лучшая практика развертывания SSL/TLS, часть 2. Конфигурация

Reading time4 min
Views16K
Представляем вашему вниманию вторую часть перевода статьи о развертывании SSL/TLS, первую часть можете почитать тут.

2. Конфигурация

Если вы правильно настроили на сервере TLS, то можете быть уверены, что данные вашего сайта корректно отображаются для посетителей сайта, используются только безопасные алгоритмы и все известные уязвимости устранены.

2.2. Используйте безопасные протоколы

Существует пять версий протоколов в SSL/TLS семейства: SSL v2, SSL v3, TLS v1.0, TLS v1.1 и TLS v1.2. Из них:
• SSL v2 является небезопасным и не должен быть использован.
Читать дальше →
Total votes 13: ↑10 and ↓3+7
Comments4

Переходим на HTTPS на Nginx: шпаргалка

Reading time3 min
Views151K
Уже второй раз сталкиваюсь с задачей «поставь https на наш сервер» от моего босса, поэтому решил сделать для самого себя шпаргалку, а заодно и для всех остальных. Итак, ситуация следующая: к нам пришел босс и заявил, что ему нужен https. Под катом я напишу 5 простых шагов, как все сделать буквально за час. Приступим.
Читать дальше →
Total votes 66: ↑43 and ↓23+20
Comments60

IOCELL Netdisk: необычный NAS

Reading time3 min
Views4K
image

Сетевых хранилищ данных на рынке представлено много. Большие и маленькие, быстрые и медленные, хорошие и разные. Мы так привыкли к ним, что, кажется, уже ничем производители не смогут удивить искушённую публику. Ну, NAS. Ну, подключается через сеть. Наверняка ведь через SMB или NFS, по старому знакомому TCP/IP, с уже практически «стандартным» веб-интерфейсом.
Тем приятнее, когда появляются неожиданные исключения, новизной использованных решений вызывающие как минимум поднятую бровь и удивлённое «Ого!» Попавшие мне в руки Netdisk SOLO и Netdisk DUO от компании IOCELL – живой тому пример.

Что же в них необычного?
Читать дальше →
Total votes 37: ↑27 and ↓10+17
Comments44

Принтер для футболок: от домашней поделки до серийной модели текстильного принтера

Reading time6 min
Views261K
Летом 2011 года я опубликовал на хабре пару статей (вот и вот) о том, как из подручных материалов практически «на коленке» собрать текстильный принтер. Как оказалось — тема эта весьма интересная многим людям, и с момента публикации этих статей любителями поиздеваться над принтерами было собрано много самодельных аппаратов, которые успешно печатают и даже приносят прибыль.

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

Так что если вам все это интересно, то добро пожаловать под кат.

image

Читать дальше →
Total votes 162: ↑161 and ↓1+160
Comments58

Следующая версия PHP будет называться PHP 7

Reading time1 min
Views53K
imageДолгий спор вокруг названия следующей версии PHP сегодня наконец-то закончился: итак, следующая версия будет иметь порядковый номер 7.

В основу PHP7 ляжет PHPng. Многие из свежих предложений и патчей делаются уже на его базе — в том числе такие интересные вещи, как uniform variable syntax, native big integers и abstract syntax tree. Из-за изменений во внутренних API, многие сторонние расширения (например, xdebug, расширения для mongodb и memcached, php-protocolbuffers) должны быть переработаны, поэтому в PHP 5.7 PHPng войти уже не сможет. Казалось бы, проблема не так велика — но, например, Yahoo в своих разработках использует около 400 различных PHP-расширений, поэтому процесс должен занять некоторое время.
Читать дальше →
Total votes 90: ↑82 and ↓8+74
Comments62

Настройка современного Puppet сервера с нуля

Reading time9 min
Views64K
Недавно я переосмыслил процедуру установки нового сервера Puppet с нуля на Ubuntu 12.04, включая все современные свистелки и перделки. В итоге у меня получился этот гайд.

Для начала нам потребуется чистая Ubuntu c работающей сетью и настроенным DNS.

В итоге мы должны получить:
  • Установленый везде Puppet 3-й версии
  • Конфиги в git репозитории с общим доступом
  • Динамические окружения, управляемые r10k
  • Поддержку PuppetDB
  • Поддержку Hiera


Данное руководство довольно длинное, т.к. все настройки делаются вручную, чтобы впоследствии легко можно было пользоваться результатом и подстраивать его под себя. Единственным исключением является PuppetDB, который проще установливать через собственный модуль от Puppet Labs, а не вручную.

Предполагается, что все команды будут выполнены от пользователя root на сервере Puppet, если не указано иное.
Читать дальше →
Total votes 33: ↑30 and ↓3+27
Comments15

PHP Zend сертифицирование сегодня

Reading time4 min
Views25K
image
Причины для прохождения PHP Zend сертифицирования могут быть разными: кто-то хочет проверить свои знания, кому-то хочется выделится из огромного числа php разработчиков, а у кого-то это требование на работе. Месяц назад мне удалось успешно пройти сертифицирование, и в этой статье я расскажу как выглядит этот экзамен сегодня, где искать материалы для подготовки, а так же солью немного инфы о реальных вопросах с экзамена.
Читать дальше →
Total votes 57: ↑47 and ↓10+37
Comments32

Форматирование цены, или как я input переписывал

Reading time5 min
Views23K
По работе недавно столкнулся с, вроде бы, тривиальной задачей — форматирование цены и деление ее по разрядам.
Ничего сложного решил я. Тем более на просторах интернета лежит уже куча готовых решений от простых и скучных (разворачиваем строку, добавляем через каждые 3 символа пробелы и разворачиваем назад) до вполне интересных (уверен что эту регулярку многие видели, но речь не о ней)
price.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ')


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


На глаза попадались даже библиотеки, для разбивания чисел по разрядам, но я решил остановится на вышеупомянутой регулярке.
Повесил форматирование на keyup, что может быть сложнее?
Как выяснилось - может.
Total votes 25: ↑15 and ↓10+5
Comments30
1

Information

Rating
Does not participate
Location
Рига, Латвия, Латвия
Date of birth
Registered
Activity