В нашем очередном недельном обзоре послушаем рассказ представителя Google в Беларуси о MBA, поговорим о правильном кешировании и девяти главных антипаттернах, о плохих Ruby и Python, а также ответим на главный вопрос: почему люди становятся программистами?
1. Google Belarus
Свежий рассказ о программе IMBA от Натальи Коробко, которая после окончания учёбы основала стартап в Азербайджане, а теперь развивает сервисы Google в Беларуси.
В Google я ощущаю себя так, будто попала на второй MBA. Параллелей очень много — уникальная среда, особенные люди, огромный поток информации, высокие ожидания и бешеный ритм. У меня была цель снова оказаться в таком мире. Сейчас моё большое преимущество в том, что я успешнее могу управлять собой и лучше понимаю коллег.
На серьёзное знакомство материал не тянет, поэтому для чисто личностного впечатления усилю ссылку выступлением Натальи в Минске в этом году.
Лично я кроме этого недавнего символического события пока никак не вижу присутствия Google на нашем рынке, тем более что физически Наталья находится в Варшаве.
Окей, Беларусь вполне можно сопоставить с Польшей, так вот для сравнения: в Польше у Google три полноценных офиса — Варшава, Краков, Вроцлав. «Менеджер по Беларуси» — это просто рядовой сотрудник варшавского офиса Google, что лишний раз подтверждает сомнительность претензий Беларуси на роль «восточноевропейского лидера ИТ».
2. Белорусы качают права с WMB
Довольно знаковый инцидент в Минске: «Почему я должен платить за идентификацию?». Минчанин вступил в спор с «Технобанком» по поводу платы за аттестат WebMoney. И выиграл его!?
В письмах из «Технобанка» я так и не смог получить ответ на вопрос: кто уполномочил ОАО «Технобанк» взимать плату при проведении идентификации согласно декрету президента от 28.12.2014 № 6, постановлению Правления Нацбанка Республики Беларусь от 26.11.2003 № 201, закону Республики Беларусь от 30.06.2014 № 165-З. Мне кажется, что руководством банка допущено произвольное толкование и применение законодательных актов.
Информация о требовании именно системы WebMoney к владельцам кошельков о прохождении идентификации и получении начального или персонального аттестата, которая также передавалась мне в письме из банка, — неверная. Электронный кошелек, имеющийся у меня в WMZ, до настоящего времени функционирует. Для проведения платежей WebMoney, согласно требованиям системы, достаточно и формального аттестата, а требование увеличить уровень аттестата до начального — это требование ОАО «Технобанк», т. е. банк навязывает дополнительные услуги клиенту.
В итоге ему вроде бы предложили бесплатный аттестат «абы чтоб отстал».
Тем не менее, «Технобанк» обещает скоро официально разъяснить свою позицию — за что у пользователей Webmoney деньги вообще берут при аттестации? (Очевидно, что сходу ответить на этот интересный вопрос пока не получилось).
В Украине, кстати, после итогов разбора прошлогодних тёрок по временной приостановке работы Webmoney начали процедуру смены гаранта WMU на нового.
3. Anti-Patterns Every Programmer Should Be Aware Of
Вернемся к делам программистским.
Хорошая порция критики к уже священным методологиям — 9 анти-паттернов, которые нужно понимать и знать. Очень много умных мыслей. Рекомендую — но всё на языке «потенциального противника».
4. Почему сложно сделать правильное кэширование?
Читать вот здесь:
Вы, наверняка, знаете, как это бывает. Ой, у нас тут такие тяжёлые вычисления / так долго тянутся данные из базы. А давайте просто прикрутим кэшик. Что может пойти не так? Так вот, опыт показывает, что пойти не так может очень и очень многое.
@afiskon Хочется выделить два капитанских пункта — 1. инвалидируйте кэши перед записью 2. при записи не используйте данные из кеша.
— Jonn Mostovoy (@podmostom) May 13, 2015
Классический случай, когда комментарий к статье ценнее самого материала (приводится в сокращении):
Я думаю что изначальный план иметь такую концепцию, как кеш в системе, построенной на akka, фундаментально неверное решение.
Идиоматический для akka путь работы с большим набором данных, которые надо шардировать (для size, geographic скалабилити), является Distributed Domain Driven Design. Здесь юнитом становится PersistentActor (Aggregate root в терминологии DDD). Например, пользователь со своим внутренним состоянием. Такой актор получает команды и записывает эвенты в свой журнал БД и только после этого изменяет свое состояние в памяти. Внутреннее состояние каждого актора воссоздается (при старте/рестарте) путём проигрывания последовательности евентов, сохраненных этим актором ранее. Для запросов нужно иметь отдельный View layer.
В итоге у нас strong consistency внутри Aggregate root и eventual между. Нужно моделировать свой домен под эти условия. Сейчас в akka есть механизмы для запуска множества таких PersistentActor в кластере, разбивая их на шарды. В распределенном режиме, конечно, появляется необходимость кое-где иметь at-least-once + idempotant получатель и применять Saga Pattern.
В данный момент при исключении шарда из кластера запросы в данный шард не будут обслуживаться равно до того момента, как потерянный шард не будет автоматически восстановлен на доступных нодах кластера. Для частичного решения этой проблемы можно иметь мулти-мастер топологию.
5. Загадка от Intel
На прошлой неделе Intel в своём Twitter как бы между прочим запостил снимок экрана монитора, на котором читатели увидели очень необычный психоделический код, понять который можно было бы разве через вывих мозга. Вместо того, чтобы мирно пройти мимо и продолжить заниматься повседневными служебными делами, наш_человек не смог его развидеть, и решил проникнуть в загадочный потусторонний смысл увиденного в виде слегка жутковатых машинных инструкций.
Для всех любителей Python, желающих познать насколько глубока кроличья норка, — читаем вот здесь отчет об эзотерических глубинах познанного:
Имеется страшилка, обладающая невероятным количеством подчёркиваний, лямбд и чрезвычайно редкой функцией __import__. Что за зверь и что он делает?
Конечно же, мы можем как нормальные люди перепечатать код в интерпретатор и посмотреть, что будет. Но раз уж время давно за полночь, разбираться интереснее руками.
Подчёркивания и лямбды: http://t.co/WUHHoalWVr. Разгадываем картинку из Твиттер-аккаунта компании «Intel». pic.twitter.com/VlOiEf7IWj
— Хабрахабр (@habrahabr) May 12, 2015
Если кому-то это покажется простой задачкой, переходим на следующий уровень: задачка 1, задачка 2.
6. Не совсем крутые Ruby и Python
Читать вот здесь:
Помню, как два года назад столкнулся с Руби. Язык показался прекрасным, всё в нем понятно и просто, нет ничего лишнего, нет ничего не очевидного. Шло время, навыки росли, времена менялись и вот уже Руби не кажется мне таким привлекательным как раньше: медленно работает, да и большие проекты поддерживать тяжело. Почему?
Да потому что большие проекты и Руби — это вообще вещи несовместимые. Ты видишь скорость выполнения на других языках и хочется плакать — из-за того, что когда-то был сделан выбор именно в сторону этого языка программирования.
Продолжаем тему всего плохого и кошмарного, чтобы снова вернуться к Питону.
Явное лучше неявного: http://t.co/6EhUYtm7Iq. Ночные кошмары Питона: неявный «this». pic.twitter.com/N6KBcg9Vcr
— Хабрахабр (@habrahabr) May 14, 2015
В добавку из свежего питоньего: Почему я не люблю конфигурацию в django-style.
Также опубликовано введение в функциональное программирование на Питоне:
Рассуждая о функциональном программировании, люди часто начинают выдавать кучу «функциональных» характеристик. Неизменяемые данные, функции первого класса и оптимизация хвостовой рекурсии. Это свойства языка, помогающие писать функциональные программы. Они упоминают мапирование, каррирование и использование функций высшего порядка. Это приёмы программирования, использующиеся для написания функционального кода. Они упоминают распараллеливание, ленивые вычисления и детерменизм. Это преимущества функциональных программ.
Забейте. Функциональный код отличается одним свойством: отсутствием побочных эффектов. Он не полагается на данные вне текущей функции, и не меняет данные, находящиеся вне функции. Все остальные «свойства» можно вывести из этого.
По совету автора перевода «забить» на всё остальное можно по этой ссылке. Также по этой же теме вышла новая статья Монада, да не та:
Нынче, на волне интереса к функциональщине в программировании, термин «монада» в среде программистов трактуется однозначно. Дискурс такой. Но монады бывают разные.
Кстати, всем кому интересен Python — вот пост-список всех самых лучших материалов на «Хабре» по теме этого языка, вручную классифицированных и отобранных.
7. Тестирование ПО в Facebook
Продолжая тему тестирования в Google, теперь инженер из Facebook рассказывает о тестировании в своей компании.
#itloft #web #it #цитата pic.twitter.com/kJVnyWV0mj
— LOFTBLOG (@loft_blog) May 16, 2015
8. Про злых хакеров и Wi-Fi
Полная жесть, если подтвердится. Не могу поверить, что развлекательная система и система управления самолётом не разнесены физически по разным сетям.
ФБР: «Крис Робертс во время полёта взломал развлекательную систему самолета и переписал код на компьютере управления тягой. После этого он смог отправить команду на набор высоты и заставить самолет на короткое время изменить курс.
Во время допроса в ФБР он сознался, что ему даже удалось заставить один из самолётов набрать высоту и отклониться от намеченного маршрута. «Он заявил, что смог отдать команду одному из двигателей, что привело к набору скорости, а самолёт начал уходить в стороны, сбиваясь с маршрута», — говорится в ордере, подписанном агентом ФБР Марком Хёрли.
Я вот подумал, насколько у меня жизнь мелкая. А вот слабо так, в летящем с твоим телом самолёте хачить его систему управления и править код управления движком по живому? Просто море ощущений (профита, правда, никакого, кроме тюрьмы)!
What? You can hack from in-flight entertainment system into flight control??? https://t.co/0sTnAoXb6U
— Sergei Burkov (@bilb02) May 16, 2015
Так вот ты какое — экстремальное программирование. И всему виной — публичный Wi-Fi.
Экстремальное программирование http://t.co/STnh5WAHPa
— _She1llmatic (@_She1llmatic) May 12, 2015
Wi-Fi вообще зло, он выжигает нам моск изнутри:
Американские ученые: Wi-Fi оказывает крайне негативное влияние на человека и на растения http://t.co/rGv2mGL8Qd
— Компьютерные вести (@newkv) May 12, 2015
9. Несколько технических ссылок
Всё технические ссылки прошлой недели, заинтересовавшие меня лично, выдаю одной транзакцией:
- Заметки к курсу машинного обучения из Стенфордского университета (Andrew Ng).
- Интересная статья: Архитектура веб-сайтов в эпоху HTTP/2. Кстати, HTTP/2 — теперь стандарт.
- Как представлять мета-данные для REST API.
- Хорошая книга отныне в свободном доступе: Automate the Boring Stuff with Python.
- Фантастическая коллекция ресурсов, посвященная визуализации данных в веб.
- Тот интересный случай, когда о data mining можно много узнать из судебных материалов. Что же в итоге Google знает о каждом из нас в судебных документах?
- Замечательная подборка — Awesome Data Science.
- Математика и программное обеспечение, которые поддерживают популярный сервис определения возраста по фотографии.
- Новый проект от Apache: интерактивный анализ данных (включая Spark) — Zeppelin.
- Новинки свежего релиза Firefox 38 для разработчиков в блоге Марата Таналина.
10. Почему люди становятся программистами?
Если отбросить случайных прохожих, которые приходят в ИТ просто «на подзаработать», то остаются самые странные — идейные. Вот о них-то и речь на видео ниже.
Ужасная и тоталитарная правда о true-программистах и их потаенных желаниях, откровение длиною в 1 минуту.
Поэтому можно сказать, что программист — это такой мелкий политик-интроверт, фактически это такой «детский вариант» диктатора (уж раз мы много сегодня говорили про Питона — сразу вспоминается его Великодушный пожизненный диктатор). Но закончить обзор хочу на позитивной ноте: для софтверных мини-политиков у меня хорошие новости:
Компания Microsoft вернет в операционную систему Windows 10 игры «Сапер», «Косынка» и «Червы». http://t.co/w6SvO3ubfL
— Gomin news (@gomin_com_ua) May 16, 2015
Возьмитесь крепче за ручки кресел: вышло продолжение «Змейки» для iOS, Android и Windows Phone http://t.co/u4vegdJDm6 pic.twitter.com/IyBsfvZgjn
— Секрет Фирмы (@scrtmag) May 14, 2015
*Мнение колумнистов может не совпадать с позицией редакции.
**В цитировании сохранены авторская орфография и пунктуация.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.