Как стать автором
Обновить
0
0

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

Отправить сообщение

Математические аспекты хорошего кода

Время на прочтение 7 мин
Количество просмотров 6.5K

Программисты постоянно стараются сделать код лучше, используя для этого различные практики. Однако само понятие хорошего кода крайне расплывчато, о чём свидетельствует одно только количество книг, посвящённых этой теме, а также их объём. Например, книга "Чистый код'' Р. Мартина содержит почти 500 страниц. Неужели нет возможности выразить хотя бы основные критерии хорошего кода короче?

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

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

Кроме того, для мышления необходимы память и время. Любая модель мышления (модель вычислений) обязана включать эти два понятия. Действительно, в машине Тьюринга роль памяти играет лента, а роль времени – головка. Аналогично, в современном компьютере эти две роли выполняют RAM и CPU, соответственно.

Итак, в нашем распоряжении три аспекта, относящиеся к мышлению: рассуждение, балансировка и природа памяти/времени. Эти аспекты напрямую относятся к самой сути программирования. Каждый из этих аспектов несёт в себе математику, которая и будет использоваться для вывода критериев хорошего кода.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 9

Как пользователи спасают психику техподдержке

Время на прочтение 5 мин
Количество просмотров 12K

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

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

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

Именно эта общительность пользователей даёт первый важный плюс: когда в компании 200–300 человек, а вы социально активны, не боитесь смотреть в глаза людям и нормально общаетесь, — через пару месяцев будете знать вообще всех. И при этом к вам будут хорошо относиться, потому что вы помогаете. Нет, конечно, будут время от времени встречаться люди, которые, наверное, в ресторанах орут на официантов, но с поддержкой фокус «Быстро подойди сюда, я тут босс» не работает. Потому что, кроме SLA, тогда будет применяться USLA, например, при SLA — один час на ответ, при USLA будет 58 минут на ожидание. Но такие случаи очень редки. Чаще всего мы всех любим и нас все любят.

Уже в первые дни любовь выражается в том, что вас стараются подкормить. Почти у всех есть вкусняшки в кабинетах, а приход инженера для многих из разряда «Оно шевелится, милое, давайте его покормим!» Ну, если вы мило шевелитесь, конечно.

Дальше становится интереснее.
Читать дальше →
Всего голосов 51: ↑50 и ↓1 +49
Комментарии 9

Пароль для стартапа

Время на прочтение 2 мин
Количество просмотров 4.2K
image

Недавно администрация США объявила о возобновлении программы International Entrepreneur Parole. Путь для предпринимателей въехать в штаты и остаться для развитии собственной компании.

Процесс


  1. Заполнить форму I-941 (и форму I-131 для членов семьи: супруг или дети, родители — это не семья)
  2. Если заявка по форме I-941 подтверждена — посетить консульство США за границей, чтобы получить выездные документы на parole determination (разрешение на въезд и временное пребывание иностранца в США)
  3. Прибыть в США для получения окончательного parole determination (разрешение на въезд и временное пребывание иностранца в США)

Критерии


  1. Предприниматель должен владеть минимум 10% доли бизнеса и играть центральную роль в его работе
  2. Стартап должен быть основан в США в течении последних 5-ти лет
  3. Стартап должен демонстрировать потенциал для быстрого роста и создания рабочих мест

О потенциале свидетельствуют


  1. Капитальные вложения не менее 250 000 долларов США от квалифицированных американских инвесторов
  2. Награды или гранты (не менее 100 000 долларов США) от федеральных, государственных или местных органов власти
  3. Предоставление других «надежных и убедительных доказательств» (например, подтверждение поступления в стартап-акселератор)
Читать дальше →
Всего голосов 20: ↑12 и ↓8 +4
Комментарии 2

Не паникуйте: Kubernetes и Docker

Время на прочтение 4 мин
Количество просмотров 46K
Прим. перев.: свежая публикация в блоге Kubernetes — оперативный ответ на ту шумиху, что поднялась вокруг грядущего релиза K8s, в котором поддержка Docker будет объявлена устаревшей. Представляем вашему вниманию её перевод.



Начиная с версии v1.20, Kubernetes отказывается от Docker как от исполняемой среды контейнеров.

Но не паникуйте. Не все так страшно, как представляется на первый взгляд.

TL;DR. Kubernetes отказывается от Docker в пользу сред выполнения на базе Container Runtime Interface (CRI), разработанного специально для Kubernetes. Образы для Docker продолжат работать во всех средах выполнения как обычно.
Читать дальше →
Всего голосов 46: ↑45 и ↓1 +44
Комментарии 24

СХД, которая не устаревает. Никогда

Время на прочтение 7 мин
Количество просмотров 25K
image

Поначалу история звучит довольно просто: СХД хорошо работает три года на расширенной гарантии, относительно нормально живёт четвёртый, а на пятый покупается новая вместо устаревшей. Вендоры выжимают из вас деньги повышением стоимости поддержки и всякими платными фичами вроде поддержки VDI. Можно поломать эту схему? Наверное, да.

Компания вышла на рынок с интригующим предложением: железяка всегда работает, всегда делает это быстро, стоимость поддержки каждый год одна и та же, все фичи доступны сразу. Ну то есть просто взяли коробку и время от времени меняют в ней комплектующие так, что они устаревают примерно со скоростью замены. Раз в три года обновляются контроллеры, есть возможность замены старых дисков на более современные, т. е. занимаемое СХД в стойке место может не только расти, но и уменьшаться, при этом объём и производительность увеличиваются.

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

image

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

Давайте посмотрим, что получилось и как получилось. Начнём с архитектуры.

Для начала — процедура работы с массивом не предусматривает кнопок питания. Совсем. Не понадобится. Для выключения достаточно просто выдернуть кабели из PDU.

image
Всего голосов 81: ↑78 и ↓3 +75
Комментарии 44

Чек-лист: что нужно было делать до того, как запускать микросервисы в prod

Время на прочтение 9 мин
Количество просмотров 50K

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


К сожалению, некоторые невысокие программисты всерьёз полагают, что Dockerfile с какой-нибудь вообще любой командой внутри — это уже сам по себе микросервис и его можно деплоить хоть сейчас. Докеры крутятся, лавешка мутится. Такой подход оборачивается проблемами начиная с падения производительности, невозможностью отладки и отказами обслуживания и заканчивая кошмарным сном под названием Data Inconsistency.


Если вы ощущаете, что пришло время запустить ещё одну аппку в Kubernetes/ECS/whatever, то мне есть чем вам возразить.


English version is also available.

Читать дальше →
Всего голосов 138: ↑135 и ↓3 +132
Комментарии 71

Основы Ansible, без которых ваши плейбуки — комок слипшихся макарон

Время на прочтение 12 мин
Количество просмотров 132K

Я делаю много ревью для чужого кода на Ансибл и много пишу сам. В ходе анализа ошибок (как чужих, так и своих), а так же некоторого количества собеседований, я понял основную ошибку, которую допускают пользователи Ансибла — они лезут в сложное, не освоив базового.


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


Ожидаемый уровень читателя — уже написано несколько тысяч строк ямла, уже что-то в продакшене, но "как-то всё криво".

Читать дальше →
Всего голосов 112: ↑110 и ↓2 +108
Комментарии 66

Что будет с вашей кожей от постоянного ношения перчаток

Время на прочтение 8 мин
Количество просмотров 84K

Нитриловые перчатки. Бывают всех цветов радуги, но очень редко белые, чтобы отличаться от латексных

В некоторых регионах России помимо обязательного ношения масок нужно будет носить ещё и перчатки. За отсутствие обещали штрафовать.

В этом месте мне бы радоваться, что наработки нашей уютной лаборатории как раз пригодятся, но нет. Мы и так по уши загружены производством медиагелей для всей страны, а теперь ещё добавятся дерматиты. Да, к сожалению, если носить перчатки долго, то примерно каждый четвёртый из вас получит контактный или аллергический дерматит от их ношения, а где-то 20 % получит аллергию на латекс и различные компоненты полимеров.

Поэтому посмотрим, как правильно их выбирать, как носить и чем мазать руки, если что. Латекс, например, довольно проблемный вариант. А ещё, скорее всего, перчатки не так сильно помогают, как может показаться, и я расскажу про это тоже. ВОЗ, например, не рекомендует.
Всего голосов 92: ↑89 и ↓3 +86
Комментарии 157

Скучный технологический стек интернет-компании из одного человека

Время на прочтение 8 мин
Количество просмотров 25K

Поисковая выдача на ListenNotes.com

Listen Notes — это поисковая система и база данных подкастов. Технология на самом деле очень скучная. Никакого ИИ, глубокого обучения или блокчейна. «Если вы должны объявлять о внедрении ИИ, то вы не используете Настоящий ИИ» :)

После прочтения этой статьи вы сможете повторить мой проект или легко сделать нечто подобное. Не придётся нанимать много разработчиков. Помните, когда Instagram привлёк $57,5 млн и отошёл к Facebook за $1 млрд, у них было всего 13 сотрудников — и это не только разработчики. Покупка Instagram произошла в начале 2012-го. Сейчас 2019 год, и сегодня как никогда просто создать что-то значимое с крошечной инженерной командой — даже из одного человека.
Всего голосов 71: ↑69 и ↓2 +67
Комментарии 54

Money-моноид

Время на прочтение 10 мин
Количество просмотров 12K

Mark Seeman рассказывает о функциональном программировании просто и быстро. Для этого он начал писать цикл статей, посвященных связи между паттернами проектирования и теорией категорий. Любой ООПшник, у которого есть 15 минут свободного времени, сможет заполучить в свои руки принципиально новый набор идей и инсайтов, касающихся не только функциональщины, но и правильного объектно-ориентированного дизайна. Решающим фактором является то, что все примеры — это реальный код на C#, F# и Haskell.

Этот хабрапост — вторая статья из цикла статей о моноидах:

Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Комментарии 11

Моноиды, полугруппы и все-все-все

Время на прочтение 12 мин
Количество просмотров 41K

Если ты на практике используешь ООП, то хорошо разбираешься в таких вещах, как «паттерны проектирования». А знаешь ли ты, что есть множество полезных паттернов, которые не укладываются в этот стандартный список? К сожалению, многие из них связаны с «функциональным программированием», которое, согласно легенде, сложное и заумное. Если десять раз сказать слово «моноид», можно вызвать Дьявола.


Mark Seeman расскажет о функциональном программировании просто и быстро. Для этого он начал писать цикл статей, посвященных связи между паттернами проектирования и теорией категорий. Любой ООПшник, у которого есть 15 минут свободного времени, сможет заполучить в свои руки принципиально новый набор идей и инсайтов, касающихся не только функциональщины, но и правильного объектно-ориентированного дизайна. Решающим фактором является то, что все примеры — это реальный код на C#, F# и Haskell. Этот хабрапост — перевод самого начала цикла, первых трех статей, слитых воедино для удобства понимания.


Кроме того, с Марком можно пообщаться вживую, посетив конференцию DotNext 2017 Moscow, которая состоится 12-13 ноября 2017 г. в Москве, в «Славянская Рэдиссон». Марк прочитает доклад на тему «From dependency injection to dependency rejection». Билеты можно взять здесь.

Читать дальше →
Всего голосов 60: ↑57 и ↓3 +54
Комментарии 22

Легкие контроллеры с AngularJS

Время на прочтение 2 мин
Количество просмотров 36K
В дополнение к этому посту.

Кто не знает, есть такая штука ui-router. Замена стандартного роутера Ангуляра. Учитывая, что в Ангуляре 2.0 планируют запилить нечто подобное, вскоре этот роутер станет стандартом.

С помощью него можно строить приложение, например, так:
Читать дальше →
Всего голосов 27: ↑21 и ↓6 +15
Комментарии 14

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность