запуск завтра
27.6K subscribers
326 photos
34 videos
3 files
1.2K links
Будни технического директора @samatg (ex-CTO Meduza, Bookmate, RAWG, Pure)

«Закрытие Parse и куда с него переехать», очередной лонгрид «как программируют в NASA» и прочие ссылки с hackernews. Ну и истории, конечно.

Чатик @ctodailychat

Рекламу не продаю
Download Telegram
Эти три поста — мини-ода серверу Nginx и его создателю Игорю Сысоеву. Я не написал о покупке компании NGINX американским гигантом F5 за 670 миллионов долларов в феврале (профайл в Ведомостях и в Форбсе), исправляюсь.

Nginx — это скотч веб-разработчика. Вы ведь знаете, что именно с помощью скотча астронавты починили свой автомобиль на луне? С помощью Nginx можно скрепить разные части сайта между собой (микросервисы, ау), ускорить сайт с помощью кеширования (скорость работы Медузы и RAWG), серьезно сэкономить на хостинге и даже защититься от DDoS-атак. Nginx поддерживает и простейшие одностраничные сайты и гигантские корпорации. Это сервер, который вобрал в себя лучшее от таможни, DHL и завода.

Мы с коллегами недавно сделали с помощью nginx две необычные вещи, которыми я хочу поделиться.
Во-первых, перевели один очень старый сайт с http на https (это улучшает позиции в гугле), по пути убрали www из всех адресов и добавили кеширование, так что сайт стал открываться раз в 10 быстрее.

Интересная часть в том, что на сайте было много хардкод-адресов http://www..., и поменять исходный код было решительно невозможно (старый perl), так что мы использовали модуль ngx_http_sub_module, который позволяет переписать содержимое ответа на лету.

Мы не поменяли ни одной строки кода в движке сайта, все изменения — через настройки nginx.
Во-вторых, добавили щепотку динамического контента в кешированные nginx'ом страницы. Под нагрузкой наш django + react сервер отвечает не очень быстро. Для того, чтобы сайт отвечал мгновенно — мы кешируем странички для анонимов, то есть регулярно пересчитываем их, а при запросах мгновенно отдаем последнюю сохраненную версию.

Для проверки одной SEO-гипотезы нам потребовалось добавить несколько случайных ссылок на каждую страницу. Казалось, nginx-кеширование и динамический контент не сочетаются. Но нет, выручил SSI — технология родом из 1993, когда писали статический html-код страниц, а динамику добавляли маааленькими кусочками. Мы добавили в код своих страниц <include>, так что основная страница кешируется как и раньше, а блок со ссылками быстро отдается отдельным быстрым микросервисом.

Да здравствует nginx и инженеры, умеющие с ним управляться!
​​На алгоритме Диффи-Хеллмана держатся современная криптография и интернет.

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

Вот одна картинка, которая помогла мне понять принцип работы алгоритма. Перевод мой специально для мамы. Мама, ты поймешь 100%.
​​В русской википедии утверждается, что «наглядная работа алгоритма показана на рисунке» и дальше вот этот рисунок. Диплом о высшем математическом образовании дает мне силы сказать: это картинка не наглядная, а не мы тупые.

Не корите себя, если очень стараетесь понять что-то в разработке и не получается. Скорее всего, часть ответственности на учителе. Если речь о вашем разработчике — просите объяснить яснее, вы имеете право понимать.
Вчера в Яндексе выступал Вадик Мармеладов, космический русский дизайнер, рассказывал (ютуб) про свои недавние работы [1, 2] и текущий проект LOT2046.

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

Побольше бы таких сумасшедших.
Вот с такой картинкой и личностью у меня ассоциируется Вадик (это я пытаюсь уговорить посмотреть видео тех, кто не купился на мой текст выше:)
Прошлой ночью по Москве у гугла прилегла сеть в Штатах. 4 с половиной часа, с 12 до 17 PT. Проблемы затронули как собственные сервисы Gmail, YouTube и прочие так и клиентов облака: Snapchat и другие.

Гугл потерял «три девятки» (99.99% доступности сервисов) в этом квартале.

С нетерпением ждём постмортем. Ожидаемо, что надёжность сети - последняя нерешенная проблема облаков. Интересно, как они её в результате решат и решат ли в принципе.

Мои сочувствия ребятам из России, у которых пользователи/клиенты в штатах (обычно я им завидую:). У вас была горячая ночь.

Ну и это хорошее напоминание нам всем, что для критических сервисов имеет смысл посчитать стоимость резервирования хостингов.
Когда отшила неприятного мужика в тиндере, а он оказался Жаровым...

Если говорить серьезно, то мне кажется, что это РКН так генерит инфоповоды про себя. Не представляю, что Тиндер будет с ними сотрудничать.
Перевёл сегодня интерфейс одного проекта с одного языка на другой с помощью Google Cloud Translation API.

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

Я попробовал несколько разных систем машинного перевода для этой задачи, самая хорошая - Google Translate. Она даже теги span и переменные в фигурных скобках не корёжит, переводит только тексты. Учитывая бесплатные полмиллиона символов перевода - даже с настройкой биллинга не придётся заморачиваться, скорее всего. Регистрируетесь в Google Cloud Platform, пишете небольшой питоновский скрипт и вперёд. Можете взять мой за основу.

Конечно, локализация (l10n) и интернационализация (i18n) проекта (разница между ними) — гораздо больше, чем просто перевод; а даже организация перевода для большого проекта с несколькими переводчиками — то ещё развлечение. Но это тема для гораздо более длинного поста.
Впечатляющая ежегодная презентация Apple WWDC. Формально для разработчиков, на самом деле смотрят, конечно, все. Презентовали новые iOS и macOS, которые выйдут публично осенью.

То, что заметят все:
- потерянные макбуки можно будет искать при помощи Bluetooth через сеть всех айфонов на планете;
- activation lock для макбуков, наконец-то. Украденный макбук перестанет работать и превратится в тыкву (читай запчасти);
- Sign in with Apple — регистрация и вход в приложения одной кнопкой (все стартапы дружно пошли программировать). Для каждого приложения генерируется уникальный почтовый ящик, так что можно легко отписаться и приложения никак не смогут вас затрекать. Google, FB и прочие маркетологи сильно недовольны сейчас;
- новое приложение для фото с использованием ML;
- переделали карты, но как и раньше, только для избранных стран, продолжаем пользоваться Google maps и maps.me :(
- клавиатура со свайпами (да, как в андроиде уже много лет);
- подкасты не забыты — тоже, как гугл, распознают тексты и позволяют по ним искать. Интересно, будет ли работать с русским?
- поработали над скоростью, обещают, что всё станет быстрее, а FaceID ускорится аж на треть;
- системник мак про за 6 тысяч баксов и гигантский (и кажется, очень хороший) ретина монитор от Apple за 5 тысяч долларов (за 6 тысяч матовый). Стойка к монитору ещё тысяча. Готовьте денежки, богачи! 💸

Для разработчиков:
- iPad-приложения можно перекомпилировать для маков чуть ли ни одной клавишей; для демо на сцену выпустили подозрительно улыбчивого разработчика Jira 🙈
- новая система верстки интерфейсов в Swift, простая прямо как в Keynote. Кажется, я смогу наконец сделать приложение, которое не осилил заверстать через сonstraints!
- новая платформа для AR, кажется хорошая (то, что обещает Magic leap, только без очков). Классная презентация майнкрафта с AR;
- голосовое управление сделали классное (нет, это не Voice Over, чуть другое, для видящих).

В целом: бодренько, ждем ускорения айфонов осенью и издеваемся над ценой за стойку монитора. Каноническая текстовая трансляция MacRumors.
​​Sign In with Apple станет обязательным для iOS приложений в этом году, будет работать в вебе! ⚡️ Это очень важная новость для всей индустрии.

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

Даже если мы регистрируемся по имейлу — создатели приложений могут найти нас по почте на том же фейсбуке и в гугле и гоняться за нами с рекламой. Такие возможности «ретаргетинга» есть в рекламных админках fb и google, хотя многие люди не подозревают о них. Некоторые приложения ещё спамят почем зря и от них трудно отписаться.

Sign In with Apple решает эти проблемы, потому что 1) Apple не продает рекламу 2) по желанию, при регистрации в очередном приложении, можно вместо своего настоящего адреса использовать Private email relay, предоставляемый Apple. Речь о почтовых адресах вида flgfhoq934fhrg@privaterelay.appleid.com — Apple будет пересылать письма с этих адресов на ваш ящик, но 1) по этому адресу вас невозможно отследить 2) вы можете деактивировать пересылку в любой момент — никаких «введите пароль для того, чтобы отписаться от нашей прекрасной еженедельной рассылки».

Это блестящий и вместе с тем опасный ход. Только представьте, на всех формах входа, где раньше были Google и Facebook теперь появится яблочко Apple. Я не знаю, как ещё лучше можно заявить о своем бренде на чужой площадке. Эта кнопка, черт побери, будет и в Android-версиях мобильных приложений! Опасно тем, что я могу себе представить аргументацию, что Apple использует один свой сервис для усиления другого — за это наказали в своё время Microsoft. Большая разница — у Apple нет монопольного положения на рынке мобильных телефонов (привет Андроид), но всё же.

Я лично не буду этим пользоваться Sign In with Apple для важных сервисов (не хочу класть все яйца в одну корзину, пусть и золотую), но я буду рекомендовать эту кнопку всем своим родственникам и близким не-гикам. Потому что это лучшее решение, которым они будут реально пользоваться. А ещё оно будет дико удобное, уж что-то, а большую жирную кнопку «войти (купить)» Apple умеет делать хорошо, так что мои советы никому не потребуются.

Для разработчиков приложений пилюля не целиком горькая, есть две большие ложки мёда: 1) Sign In with Apple (SIwA?) гарантирует, что перед вами живой человек — для таких регистраций можно отказаться от дополнительных верификаций по SMS или Google reCaptcha 2) все эти аккаунты защищены двуфакторной аутентификацией на стороне Apple.

То, что Apple умудрились одной этой функцией нанести урон ещё и Google reCaptcha — невероятный финт ушами. Снимаю шляпу. Для человека, варящегося в индустрии, весь Sign In with Apple — как хорошая музыка. Каждый шаг — красота.

Го прогать.
Поведение при факапе - отдельное искусство.

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

Твит про это капитально бомбанул, на ситуацию обратил внимание основатель компании и вот Digitalocean публикует образцовый постмортем.

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

5/5

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

Я не знаю, кого сейчас «копал» Ваня и кто его «заказал». Я уверен, что наркотиков у Вани быть не могло. Очень цинично, но приторговывать наркотиками параллельно с резонансными расследованиями в России — полная тупость, а Ваня — не дурак, можете убедиться в этом прочитав его расследования.

Мне страшно, стыдно, чувствую беспомощность и злость.
Гугл опубликовал публичный постмортем про воскресную аварию. Текст длинный, но суть простая: у них ломается сеть, если специальная программа не подвозит правильную конфигурацию сети (BGP) каждые пару минут. Несколько копий этой программы запущены на отдельных серверах в каждом дата-центре (отказоустойчивость!). Эти серверы включает-выключает другая программа управления конфигурацией. Во второй программе была ошибка, из-за которой она выключила все копии первой программы. Через пару минут после этого протухли BGP-анонсы и развалилась сеть.

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

Чинят тем, что 1) запретят подсистеме выключения задач тушить сразу несколько серваков 2) система не будут терять состояние при потушенных серверах (не придется настраивать её заново руками) 3) сеть будет дольше работать без внешней поддержки программой управления (самое очевидное решение).



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

Разоблачаешь чиновников коррупционеров → менты подкидывают наркотики, бьют, двое суток держат в наручниках без сна → медуза подключает все свои ресурсы, про это публично говорит буквально каждый хоть сколь-то известный человек в стране → домашний арест и зрители в зале «суда» устраивают 5-минутную овацию «судье». 🤮
Едете заграницу? Обязательный шаг моей подготовки — консультация с Prepaid Data SIM Card Wiki. Это вики, на которой собрана информация, как не разориться на мобильном интернете при путешествиях. По каждой стране: названия провайдеров, реальные зоны покрытия, нужен ли паспорт для оформления симки, «сколько нужно закинуть на счет» и на какой номер потом отправить смс, чтобы включился правильный «пакет данных». И цены в нормальной таблице. Один из лучших примеров краудсорсинга.

Вспомнил, потому что лечу в Тунис на RightsConмеждународную конференцию про «свободу слова в цифровую эпоху». Расскажу про ESNI, DoH и почему они сильно изменят цензуру в интернете. Опять не встречусь там с Леонидом Волковым, он опять арестован. Потом сразу в Москву.
​​Ваня Голунов под домашним арестом вторые сутки. Я знаю, что в России тысячи незаконно осужденных, но этот конкретный случай вывел меня из себя.

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

Если уж мы Ваню не можем защитить (пока чуть чуть получается!), то меня эта машина съест — мало кто заметит. Для меня это момент кристаллизации, когда в растворе уже слишком много соли. Надеюсь, что я не один такой и вместе мы сможем изменить ситуацию.

P.S. Респект Ведомостям, Коммерстанту и РБК: совместное заявление и общая обложка (фото Медузы).
Ваня на свободе!

«Принято решение о прекращении уголовного преследования Ивана Голунова в связи с недоказанностью его участия в совершении преступления, заявил министр внутренних дел РФ Владимир Колокольцев. По его словам, журналист "Медузы" будет во вторник освобожден из-под домашнего ареста, обвинения с него сняты.» — ТАСС. Трансляция на Медузе.

ААААА! У нас получилось!
Мы в RAWG сегодня открываем публичное API. 300 тысяч игр, 2 миллиона скриншотов, 400 тысяч оценок и прямые ссылки на игры в магазинах.

Это самая большая база данных игр в мире.

Для рекомендаций «похожих игр», мы единственные анализируем внутриигровой контент, а не только метаданные. Эти рекомендации также доступны по API.

Для некоммерческого использования API бесплатное, по всем вопросам пишите на api@rawg.io или @samatg в личку. Примеры приложений — бот на реддите, бот на DTF и другие (с исходниками) доступны тут. Есть обертки для питона и nodejs, написанные сообществом. Ура!
NYTimes опубликовала учебные материалы своего курса по работе с данными, пишет NiemanLab. На трехнедельных курсах они учили журналистов как использовать анализ данных в свои расследования и техническим приемам работы с массивами информации.

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

Список умений, подневный план и все остальные учебные материалы доступны в папке Google Docs.

С этими материалами можно многому научиться самому и даже построить свой курс. Очень жаль, что нет видео записей занятий.

❤️

P.S. Факультеты журналистики, не пропустите — это учебный курс мирового уровня.