👾 твой cto
1.04K subscribers
13 photos
11 videos
141 links
Будни технического директора
Илья Чекальский (@ilya0)
chekalsky.com
Download Telegram
Исправил предыдущий пост, адрес, который был в нём указан, принадлежит бирже, а не хакеру, кошелёк которого достоверно неизвестен (но его всё равно попробовали выследить, и возможно это гражданин Литвы) и украл он намного меньше суммы, которую я написал. Прошу прощения, что ввёл в заблуждение.
Что мы обычно ждём от техподдержки SaaS-компаний? Для меня самые главные — две вещи:
1) Скорость ответа. Я хочу, чтобы мне сразу отвечали, что сообщение принято и в течение какого времени мне ждать решение вопроса. Это развитый рынок, пока мне сутки готовят ответ, я могу успеть сменить двух их конкурентов.

2) Чтобы меня не держали за идиота. Когда я обращаюсь не в техподдержку своего домашнего провайдера, я хочу, чтобы меня не просили обновить страницу браузера или переподключить Wi-Fi. Если я пишу, что что-то не работает, то обычно я пишу, какие варианты уже попробовал. Иногда в ответ мне предлагают попробовать их ещё раз.

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

Я очень доволен техподдержкой Селектела — много лет они очень правильно к этому подходят. Кого-то ещё из тех, куда я писал за последние годы я не вспомню, но два недавних примера приведу:

InfoBip — они рассылали авторизационные СМС нашим пользователям во время одного из спецпроектов и мне очень понравилось с ними работать. Во-первых, у них очень толковые менеджеры, которые работали с полной отдачей даже несмотря на то, что мы сразу предупредили, что закупим СМС только на пару тысяч рублей. Во-вторых, когда мы в продакшене столкнулись с проблемой, ребята локализовали её и написали, как исправить за 18 минут. И это русскоязычный отдел в глобальной компании.

Ngenix — наш новый CDN-провайдер тоже порадовал быстрым заключением договора и оперативным общением с менеджером и поддержкой. Каких-то серьёзных проблем ещё не возникало, но даже к мелким вопросам ребята относятся очень серьёзно.

#saas
Когда мы только начинали писать Основу (наша платформа для медиа), я добавил в механизм авторизации простую проверку украденных кук — суть её сводилась к тому, что если одну и ту же куку используют в двух браузерах, то все сессии пользователя сбрасываются, и она становится невалидной.

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

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

https://habrahabr.ru/company/fbk/blog/347312/
​​Прекрасный плагин для PHPStorm — PHP Inspections EA

Статический анализатор, который позволяет сделать ваш код ещё лучше. Что покрывает:
• architecture related issues
• weak types control and possible code construct simplifications
• performance issues
• non-optimal, duplicate and suspicious "if" conditions
• validation of magic methods usage
• regular expressions
• validation of exception handling workflow
• compatibility issues
• variety of time-consuming bugs
• PhpUnit API usage
• security issues

У него есть ещё платная версия, в которой проверок ещё больше. В общем, если вы любите писать идеальный код, то статический анализатор прямо в IDE вам понравится.

#php #ide
Лучший концепт по написанию надёждных и безопасных приложений. Не забудьте заглянуть в Pull Requests — там есть имплементации с тестированием.

https://github.com/kelseyhightower/nocode
​​С момента переезда в Польшу начал искать вдохновение для названий классов в польском языке, и боюсь, коллеги скоро начнут меня ненавидеть.

Ну а пока шаблонизатор будет называться Кживик. Потому что по-польски это лекало. А лекало — это первая ссылка в википедии по запросу «шаблон».
​​​​ФБК опубликовали датасет с нарушениями депутата Слуцкого — самое время попрактиковаться в API Яндекс.Карт. Теперь надо как-то оптимизировать производительность, потому что столько точек Яндекс.Карты не тянут.

https://chekalskiy.ru/slutsky/
Прекрасные новости! Let’s Encrypt запустил выдачу бесплатных wildcard-сертификатов.

https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579
Мне кажется, the next big thing — статические генераторы сайтов.

У меня подошёл к концу бесплатный год в Google Cloud — там хостился наш блог chechannel.com — год назад я взял Ghost и закинул его туда, чтобы складывать длинные заметки про Польшу, но их в итоге оказалось не так много, и почти никто на сайт не заходит. Но домен мне нравится и просто так отключать его не хотелось.

Переезжать на vscale, хоть это и будет стоить 200 рублей в месяц, не хотелось, равно как и оплачивать Ghost Pro по $19 в месяц — зачем платить вообще что-то за сайт с 10 посетителями.

Пришлось озаботиться переносом контента с Ghost на Hugo. Hugo — это такой движок для статических сайтов, написанный на Go. А хоститься при этом можно бесплатно на GitHub Pages в связке с Cloudflare, который возьмёт на себя редиректы, HTTPS, кэширование и всё, что душе угодно.

В итоге несколько часов провозился с конвертером постов и собственно настройкой Hugo — и voilà! статическая версия блога с простой CMS (forestry.io) уже в продакшене.

И вот эта вот простота, надёжность и дешевизна — это явно то, что вскоре позволит всем нам отказаться от Wordpress, к которому нужен ещё и разбирающийся админ, а ещё нужно следить за версией openssl на сервере, да и вообще от серверов. И уже существуют CMS, которые позволяют удобно создавать контент и настраивать генератор статической версии сайта. И всё это автоматически публиковать.

Ссылки для дальнейшего изучения:
https://www.staticgen.com — рейтинг генераторов статических сайтов
https://headlesscms.org — список CMS для них
​​Вау, Cloudflare запустили свой супер-быстрый DNS с поддержкой DNS-over-TLS и DNS-over-HTTPS.

1.1.1.1
1.0.0.1

Вот тут пост о том, почему они решили это сделать и где раздобыли такой крутой IP.
В августе прошлого года у меня сломался айфон, и когда я восстановил резервную копию из iCloud на новом, из Google Authenticator пропали 2FA-коды всех сервисов (хотя они должны были остаться). Так как я немного параноик и control freak, я отдельно хранил список всех сервисов с 2FA, которыми я пользуюсь. Поэтому нужно было всего лишь восстановить все доступы по списку.

В основном это было не сложно — либо присылают смс, либо просят один из резервных кодов, либо ещё какие-то данные. Небольшие проблемы возникли с blockchain.info — но всё тоже прошло нормально. Настоящими параноиками оказались только Amazon — если потерять девайс с кодами, то сбросить логин можно только по звонку на привязанный к аккаунту номер телефона. Но почему-то именно на этот номер не проходили звонки, а я уже довольно долго находился в Польше. Я позвонил в поддержку Amazon и объяснил ситуацию, предложил прочитать все последние инвойсы, рассказать, что есть внутри аккаунта, но саппорт был непреклонен. В итоге, только сейчас я решился повторить попытку, поставил переадресацию, разобрался с техподдержкой Йоты и Билайна, и наконец-таки смог зайти в свой аккаунт.

Теперь я переживаю — все остальные ведь не так надёжно охраняют мои аккаунты. 🤔
Подборка утилит для PHP-разработки. Про некоторые из них я уже писал, но есть и новые.

Например, PHP Magic Number Detector — ищет магические числа, которые неплохо бы сделать константами (200, 404, 3600 и т.д.).

Кстати, на гитхабе есть наиболее полный список утилит для статического анализа PHP-кода.

P.S. Если вы используете SaaS-сервис, в котором есть большинство или хотя бы самые популярные из этих утилит и который умеет интегрироваться в GitHub Pull Requests, напишите мне, пожалуйста, о своих впечатлениях: @ilya0
Если вы главный контрибьютор некоммерческого opensource-проекта (и удовлетворяете ещё нескольким простым критериям), то можете получить бесплатную лицензию на 1Password Team — лучшее приложение для хранение паролей по мнению автора этого канала.

https://github.com/1Password/1password-teams-open-source
История о том, как мы потеряли нашего андроид-разработчика.
Когда твой SaaS сервис не готов к 2к18.
🔥 DaisyDisk со скидкой 50%

Для вас скидка на потрясающую утилиту для мака — она поможет найти, куда делось всё свободное место. Пользуюсь ей столько же, сколько владею макбуками (и крайне рекомендую), но купить решил только по такому вот прекрасному поводу. Может быть, вам тоже будет полезно.
Когда получил послание в бутылке в 21 веке
Ещё полгода назад наша платформа, на которой работают издания TJ, vc.ru и DTF, представлялась мне не очень большой, но когда в процессе рефакторинга мы переписали десятки тысяч строк кода и потратили пять месяцев, стало понятно, что представление было ошибочным.

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

Наверное, самый главный урок из всего этого — не планировать глобальный рефакторинг, делать все небольшими шагами. Если вы не успеваете прочитать весь исходный код своего проекта за один день — будьте очень осторожны с оценками времени, похоже, у вас уже большой проект.
Помню, как мы отключали репортинг о notice'ах в своих проектах. Хорошее было время, беззаботное. Прямо девяностые в мире PHP.
— Выложите на Гитхаб
— Босс, выложили за Гитхаб круглую сумму, когда можем объявить о покупке?

https://www.theverge.com/2018/6/3/17422752/microsoft-github-acquisition-rumors