Описанные ниже практики могут показаться самими собой разумеющимися для опытных тимлидов и пиэмов, давно и плотно занимающихся профессиональной разработкой ПО. Однако, попав в стартап, можно обнаружить, что горе-фаундеры забыли их внедрить. Давайте о них поговорим.
Гит
На проекте я тимлид,
В мастер пушу свой коммит,
У меня на это есть
Полный доступ в гит.
Если команда проекта состоит из вас одного, да, можно заливать код по FTP и вносить правки прямо на прод. Но уже когда вас становится двое, начинаются проблемы. Вы будете затирать код друг друга, откат из серверной резервной копии будет занимать массу времени и проч. Кроме того, в процессе залития файлов через FTP, прод будет работать нестабильно. Гит решает все эти проблемы, у вас появляется нормальная версионность, нормальный мерджинг, нормальное залитие кода в прод. Первым делом в стартапе надо внедрить гит, если его ещё не внедрили.
Код ревью
Как и в предыдущем случае, если команда из вас одного, вы сами за всё отвечаете и качество кода только на вашей ответственности. Но как только появляется второй разработчик, начинаются риски, что он будет вливать говнокод с очень странными и неочевидными программными решениями. Код ревью надо внедрять вторым делом и никогда на него не забивать, даже в экстренных случаях, когда какая-то важная функция работает неправильно, иначе вы рискуете положить прод вообще.
CI/CD
Эту загадочную аббревиатуру нужно внедрять в третью очередь, когда гит и код ревью уже заработали. Даёт великое множество профитов — возможность гибко управлять правами доступа, автоматизировать ручные действия и самое главное, возможность нормально масштабироваться. Без CI/CD в случае резкого всплеска нагрузки вам останется только развести руками.
Прозрачный процесс постановки задач
В прошлом команды зачастую проживали несколько стадий — устная постановка задач, запись на листочках, запись на физической доске, обвешивание досками всего кабинета, депрессия, переход на таск-трекер.
В других компаниях руководство грешит тем, что кидается задачами прямо в почте или в чатах, потом удивляется, почему ничего не сделано и ничего невозможно отследить. В четвёртую очередь ставим таск-трекер и принуждаем всех пользоваться им. Если руководство слишком нежное, обязываем кого-нибудь наиболее ответственного из тестирования или, в крайнем случае, тимлида, преобразовывать эти потоки сознания в тикеты.
Руководитель изрыгнул в чат баг или очередную светлую идею — ответственный сотрудник заводит тикет в таск-трекере и скидывает в чат номер. Исключений нет.
Одна задача = одна ветка в гите.
Крупные задачи нужно дробить на мелкие. А для мелких заводить отдельные ветки. Причина проста. Если вы решите вести в одной ветке 10 задач и срочно потребуется релизиться, вы не сможете это сделать, если хотя бы в одной будет критичный баг. Если вести задачи в отдельных ветках, вы совершенно спокойно зальёте 9 рабочих веток с 9 рабочими задачами и обрадуете стейкхолдеров и пользователей.
Автотесты
Вам может показаться, что продукт слишком мал и прост для автотестов. Но проблема роста потому и проблема, потому что момент роста сложности трудно заметить. А без автотестов вы постоянно будете сталкиваться с тем, что вливаемые функции ломают существующие. А когда вы станете совсем большими, можете завести выделенный отдел автотестирования.
Мониторинг ошибок
Последний, но не по важности пункт, который надо внедрять в стартапе в обязательном порядке. Ставить систему мониторинга ошибок и настраивать этот самый мониторинг. Потому что иначе вы будете узнавать об ошибках от пользователей, как правило, с очень ограниченной информацией, вроде мутного скриншота и ещё более мутного описания последовательности действий. Ещё хуже, если к вам с ошибками будет прибегать кто-нибудь из топ-менеджмента, на этом ваша карьера в этом стартапе может быстро закончиться.
Мониторинг ошибок позволяет узнавать о багах по мере появления, надо только выстроить процесс так, чтобы на этот мониторинг ответственные лица не забивали.
Вот, в целом, и все полезные практики, которые вам нужно завести в свежем стартапе чем раньше, тем лучше.
Free cute chihuahua dog biting a shoe image, public domain animal CC0 photo.
Об интерфейсе планирования встреч
Идея для самого лучшего корпоративного плагина для гуглокалендаря. На основании часовых ставок сотрудников считает, во сколько обойдётся компании планируемое совещание и предлагает вместо этого отправить письмо.
* * *
Про кино и нейросети
Когда в кино показывают большой отрезок жизни человека, для его детства берут просто похожего ребёнка, а потом сразу показывают подростка или взрослого человека, которого играет взрослый актёр.
Чаще всего получается непохоже, мы всё-таки сохраняем большую часть детских черт, а тут разные люди. С показом человека в старости всё проще, накладывают старческий грим, серебрят волосы, дорисовывают графикой. Думаю, с ростом качества дипфейков этот подход изменится и взрослые герои станут реально похожи на себя в детстве.
Айти на службе кино.
* * *
О поисковиках
Я считаю главным достижением поисковика гугла умение находить нужный графический мем по описанию. А главным провалом — что он дал заднюю и разучился находить людей в соцсетях по фото.
* * *
Об онбординге
В книге «Звёздный десант» Роберта Энсона Хайнлайна есть эпизод, в котором курсант ударил инструктора. Из ряда вон выходящая ситуация, все на ушах. И капитан ругает… инструктора. Ты же профессионал, ты должен был вырубить его уже в тот момент, когда он только подумал совершить такое преступление, тем самым спасти мальчика от административного наказания (публичной порки).
Предположим, вы проводите онбординг нового сотрудника и в вашей компании есть, например, еженедельная отправка специфического отчёта, который будет читать, в том числе вышестоящее руководство. Большинство «инструкторов» просто уведомляет сотрудника о том, что надо писать отчёт, снабжает примерами и ждёт. Сотрудник делает отчёт с большим количеством ошибок, потому что он специфический. «Инструктор» обвиняет сотрудника в ошибках, сотрудник их итеративно исправляет, постепенно демотивируясь.
А нужно не дать ему совершить ошибку. Один раз сесть с ним и сделать этот отчёт вместе, объяснив, что и как писать в каждом разделе отчёта, помочь с формулировками. На второй и следующие разы — конечно, уже пусть делает сам и если будет косячить, указываем ему на это.
* * *
О цвете пояса
Каратистам, айкидошникам и другим восточникам по мере роста опыта и заслуг, присваивают пояса различных цветов, в разных школах они различаются. Но принцип один и тот же: когда-то давно бойцы, начиная карьеру, подпоясывались поясом белого цвета, он в процессе тренировок и боёв впитывал кровь и пот, постепенно темнея, отсюда и традиция.
Думаю, было бы интересно присваивать айтишникам какой-нибудь предмет гардероба, который бы менял цвет по мере выгорания владельца.
* * *
О сериалах для людей под сорок
На заре российского телевидения, там крутили сериалы, ЦА которых были пенсионеры, которым было интересно смотреть за всякими Просто Мариями. Почти одновременно с ними стали показывать контент до шестнадцати и старше, вроде «Друзей». И вот в последние годы я всё чаще замечаю сериалы, которые лучше всего отзовутся людям под сорок.
«After Life» (первый сезон), «Мистер Корман», «В Бореньке чего-то нет» (из отечественного) и вот теперь «Терапия». Там Джейсон Сигель, вылезший из образа Марша Сладенького, а также пожилой Харрисон Форд. Вышло пока три эпизода и да, это сериал для людей под сорок.
* * *
Об уверенных в себе людях
Все знают про эффект Даннинга-Крюгера. Дураки полны уверенности, умные люди полны сомнений. Но на уверенность в себе оказывает не только имеющийся набор знаний и опыта.
Дело в том, что умный человек видит больше вариантов развития событий и вариантов поведения в них, поэтому и может колебаться при выборе актуального. Дурак же видит один-два варианта событий и действует уверенно.
Бойтесь уверенных в себе людей.
* * *
О монетизации личного бренда
Став знаменитым, Сальвадор Дали перестал платить в ресторанах. Он приходил, пил, ел, а когда приносили счёт, выписывал чек на нужную сумму, а на обороте рисовал что-нибудь сюрреалистическое.
Рестораторы эти чеки никогда не обналичивали, а продавали на аукционах живописи за намного большие деньги. И все были довольны.
* * *
О детских бизнес-заблуждениях
Есть типовые детские заблуждения, они у всех более-менее стандартные, это не очень интересно. У меня же было несколько бизнес-заблуждений.
1. Был уверен, что заместитель директора — это такая мегасинекура. Человек вообще ничего не делает и начинает выполнять функции директора, только когда последний куда-нибудь отлучается.
2. Кадровик — невероятно могущественный человек, потому что решает, кого нанимать и кого на какую должность ставить. По сути, третий человек в компании, после пункта 3.
3. Офис-менеджер — это тоже мегамогущественный человек, потому что управляет неким конкретным офисом целиком, со всеми чадами и домочадцами.
* * *
О необычном использовании личного помощника
Вычитал интересную практику использования личного помощника. Предприниматель поручил помощнику прочитать десять лучших книг по маркетингу, а потом рассказать ему самое интересное. В итоге узнал ОЧЕНЬ много интересного о маркетинге, потратив всего час времени на разговор вместо двух недель чтения, которых у него из-за постоянной занятости не было.
И такое можно делегировать.
* * *
О странном UI
Приз за самое странное UI-решение получают дизайнеры Майкрософта. Вот эта панелька в веб-версии Тимс меняет ширину, в зависимости от… чиселок в времени длительности разговора, которые набраны пропорциональным шрифтом. Панелька укорачивается на несколько пикселей, если во времени количество минут или секунд содержит единичку и отпрыгивает назад, когда чиселка меняется.
* * *
О важности своевременности
Из-за постоянно изменяющейся среды, старый опыт чаще всего, не особо актуален. То, что не работало в 2010 г., вполне может заработать в 2023. То, что работало тогда, может не заработать сейчас.
Представьте себе попытку сделать какую-нибудь Яндекс.Музыку в 2002 году на российском рынке с кнопочными телефонами и людьми, которые видели банковские карты только в рекламе по телику. И вот, спустя всего десять лет она отлично запускается и работает.
Представьте сервис, просящий доллар за скачивание рингтона для телефона в 2023. Глупость? А не так давно контент-провайдеры отлично на этом зарабатывали.
И ещё совершенно не факт, что в этом безумном мире и в этой безумной стране колесо истории сделает оборот и эти способы заработка снова заработают. Опыт переоценён.
* * *
О вырезании фона
В Вентуре можно встроенными средствами удалять фон с изображения. Жмякаем правой кнопкой → Быстрые действия → Удалить фон.
Попробовал на картинке со сливающимся фоном, получилось сносно.
* * *
О вкатывании в айти
Лучший способ вкатиться в айти в 2023 — чтобы вас покусал другой айтишник.
* * *
Конфуций об онбординге
Расскажи мне и я забуду. Покажи и я запомню. Дай мне сделать и я пойму. (приписывается Конфуцию) Это не баянистая присказка, а истина.
* * *
О выражениях в официальной документации
Как-то спала мода на опросы. Давайте исправляться. Имеем большую компанию с кучей начальников, некоторые из которых любят заглядывать в проектную документацию с разными целями. Как вы считаете, формулировка «Второй вариант архитектуры выглядит любопытным» в протоколе созвона (внутреннего) — это приемлемо или так писать нельзя?
* * *
Об айтишном джокере
В нолановской трилогии Джокер говорит, что больше всего на свете обожает бензин и динамит, потому что они дёшевы и с их помощью можно навести много шороху.
Когда будет время, напишу рассказ или даже книжку про айтишного Джокера, который обожает эксплойты и сканеры уязвимостей, потому что они мало весят и с их помощью можно тоже навести немало шороху.
* * *
О народных псевдоприметах
Некоторые «народные приметы», которым нас в детстве учили бабушки и дедушки, имели под собой вполне материальную основу.
Например, меня учили ни в коем случае не наступать на канализационные люки, плохая примета. Но ведь это логично, люк может быть плохо закреплён, есть риск упасть и переломать ноги.
Или обходить столбы и дорожные знаки только с дальней от дороги стороны, если обходить близко к дороге, плохая примета. Всё верно, чем дальше от дороги, тем ниже риск быть сбитым каким-нибудь дураком.
Но одна вещь осталась для меня непонятной. Зачем они говорили, что если заснуть на левом боку, приснится кошмар? Меня это так впечатлило, что все три или четыре раза, которые я за детство уснул на левом боку, снились лютые хорорры. Уже потом, когда я понял, что это всё херня, стал спокойно спать на любом боку. Какую цель ставило перед собой приучение спать только на правом боку?
А вас учили каким-то приметам, под которыми была здравая основа?
* * *
О ворклогах
Один из самых страшных вопросов, который может задать руководитель начинающему специалисту: «А что конкретно ты делал всю неделю?» Я столкнулся с ним, когда в молодости предпринимал первые попытки сисадминить. Проблема в том, что делаешь массу мелких вещей и совершенно их не помнишь, а ответ: «Делал множество мелких вещей» руководство не устраивает.
И я приобрёл привычку записывать ВСЁ, что делаю. Эвернота тогда не было, зато был майкрософт аутлук, синхронизирующийся с КПК и я струячил туда всё:
У бухгалтера слетел банк-клиент. Исправил.
Настроил секретарше номера быстрого набора на телефоне.
В удалённом офисе засбоил почтовый сервер. Подключился, настроил, вроде, почта снова ходит.
Завёл в AD учётку нового пользователя (финансы).
Переустановил винду на ноутбуке офис-менеджера. Настроил бэкап Акронис, чтобы больше не тратить на это время.
И так далее.
И так далее. И когда руководитель радостно спрашивал: «А что конкретно ты делал на этой неделе?», уже предвкушая как лишит меня премии, я спокойно печатал эту простынь и подносил ему в папочке. Обычно он на это хмурился, отвечал, что такие подробности его не интересуют и отставал надолго.
Когда перешёл в разработку, этот вопрос стал звучать реже, потому что есть джира и дневные отчёты. Но пару раз за карьеру менеджера проектов всё же слышал этот самый вопрос.
В общем, если вы только начинаете карьеру, рекомендую завести полезную привычку вести такие ворклоги, это не очень затратно и легко затыкает разных высокопоставленных дураков.
* * *
О личных качествах обучающего
В крупных продуктовых и во многих аутсорсных компаниях изобретают собственную методологию управления проектами, со своими выстраданными процессами и правилами. В компании может быть своя система проектной документации, особый подход к ведению требований и другие формальные аспекты, которым новичков нужно обучать.
Возникает соблазн делегировать роль «тренера» самому знающему и опытному пиэму. Я же рекомендую назначить для этого необязательно самого знающего, но обязательно самого доброжелательного и терпеливого специалиста.
Скорость обучения у всех новичков разная. Кроме того, некоторые из них могут плохо воспринимать на слух и лучше понимать текст, другие наоборот. Опытный и знающий начнёт по привычке требовать и давить, а может и оскорблять и угрожать карами, что приведёт только к тому, что вы потеряете часть «учеников».
Доброжелательность и терпеливость — вот ключи к успешному обучению. Ну и обязательно нужно сочетать методы. Рассказать в общих чертах, показать, как это делается, дать «ученикам» задание на дом, чтобы закрепить навыки и снабдить текстовыми описаниями, чтобы использовать их в качестве справочника.
* * *
О мегатрендах
Если бы я мог выделить один глобальный тренд в бизнесе в 2022 году, это было бы желание потребителей прозрачности. Желание понимать, из чего складывается стоимость услуги, что входит в состав товара и всё такое. Игнорировать этот тренд можно, но те, кто ему следуют, зарабатывают больше.
* * *
О видах прогресса
В продолжение поста о наставничестве. Бывают разные типы прогресса и к ним всем нужно относиться спокойно.
* * *
О странных запросах в техподдержку
Техподдержка регулярно сталкивается с самыми чудными запросами пользователей, но самое интересное я узнал вчера. Чувак был уверен, что его логин и пароль от одного сайта подходят ко всем сайтам в интернете
* * *
О разнице между спамом и флудом
Спам — это рекламное сообщение, которое пользователь не запрашивал. А флуд — поток навязчивых сообщений, необязательно рекламных. Почему-то 99 % пользователей путают спам и флуд.
* * *
Об эмблемах
Вы когда-нибудь думали о том, что на иконке Android Studio – циркуль, изящный и точный инструмент инженеров и архитекторов, а на иконке Xcode — молоток?
Когда-то давно разработчики писали софт с нуля. Нужна тебе, к примеру, функция, делающая текст капслоком, берёшь и пишешь. Надо решение квадратного уравнения — берёшь и пишешь модуль для решения квадратного уравнения руками. Наиболее сообразительные программисты достаточно быстро поняли, что часто используемый код можно стандартизировать и стали писать библиотеки готовых модулей. Появилась возможность импортировать в свой проект чужую библиотеку и обращаться к уже написанным и отлаженным методам.
Приложение, использующее библиотеки, состоит из основного кода разработчика, который обращается к библиотекам, вызывая методы из них.
Однако через некоторое время выяснилось, что можно ещё сильнее ускорить разработку. Например, в огромном количестве веб-проектов нужно писать веб-админку с более-менее стандартными гридами. Ну или часто пишутся сайты с более-менее стандартизированной вёрсткой. Выделение таких программистских потребностей привело к появлению первых фреймворков. Слово «фреймворк» переводится как «каркас».
Приложение на фреймворке содержит код фреймворка в своей основе, каркасе, и вызывает код разработчика, который выполняет специфические для этого приложения функции, в этом его архитектурное отличие от приложения с вызовами библиотек. Впрочем, никто не мешает комбинировать эти подходы и использовать в приложениях на фреймворке подключение библиотек и вызовы методов из них.
Классификация фреймворков
Бэкенд-фреймворки
Эти фреймворки предназначены для реализации серверных функций приложения. Веб-страницы с их помощью делать можно, но только самые просты.
Например, при помощи Django вы можете сделать админку с гридами, о которой я писал выше. Это фреймворк на питоне.
Ещё можно выделить:
Symfony, Laravel — PHP;
Express.js — JavaScript;
Ruby on Rails — Ruby.
Все эти фреймворки имеют на борту функции формирования выходных данных, с их помощью можно релизовывать безопасность серверной части от попыток взлома.
Фронтенд-фреймворки
При помощи фронтенд-фреймворков вы напротив, можете реализовывать веб страницы с богатым содержанием, различными элементами интерфейса, кастомными и стандартизированными контролами. Различные анимации тоже можно делать с их помощью. Как правило, речь идёт о JS-фреймворках, например:
Angular;
Vue.js;
Svelte;
React — формально это не фреймворк, а библиотека, но значение этого инструмента так велико, что его постоянно сравнивают с другими веб-фреймворками.
Фуллстек-фреймворки
Сюда относятся фреймворки, реализующие как клиентскую, так и серверную часть. Например, JS Meteor.
Возможности фреймворков
Веб-кеширование
Позволяет снизить нагрузку на сервер, отдавая самые популярные пользовательские данные из кэша.
Скаффолдинг
Позволяет автоматически сгенерировать наиболее важные части приложения или вообще, всю его структуру. Сильно повышает скорость разработки, очень полезно для новичков.
Шаблонизация
Отвечает за веб-публикацию. Основная задача шаблонизатора — отделить код от представления (например, HTML-разметки). Веб-шаблоны применяются для создания сайтов и страниц любого типа, так как шаблон выполняет роль незаполненного бланка документа, одинакового для любых представлений до заполнения данными.
Безопасность
Противостояние кулхацерам. Стандартизованные функции для идентификации пользовательских действий. Распознавание профилей, используемых для кликджекинга — механизма обмана, при котором злоумышленник получает доступ к конфиденциальной информации пользователя и даже его устройствам.
Сопоставление URL
Вообще, это механизм интерпретации URL-адресов. Нужно для упрощения индексации с сохранением красивого названия для сайта. Например, URL-адрес, который заканчивается на «/page.cgi?cat=science&topic=physics», можно изменить на просто «/page/science/physics», удобно и красиво же.
Приложения
Возможность разрабатывать стандартизованные приложения — форумы, блоги, CMS.
Важное для менеджера
На любом фреймворке можно реализовать как «летающий» продукт, так и медленно ползающее нечто, всё зависит от квалификации ваших разрабов и навыков архитектора. Поэтому фреймворк нужно выбирать не согласно веяниям моды, а исходя из того, каким лучше владеет ваш тимлид или CTO, это минимизирует риски.
Кроме того, специалисты, владеющие разными фреймворками, по-разному оплачиваются, есть более и менее оплачиваемые специализации. Эти цифры постоянно колеблются, никакой системы выделить нельзя, надо анализировать рынок в каждый момент времени.
В целом, это всё, что пиэму нужно знать о фреймворках.
В изрядной доле проектов нужно интегрировать два или больше приложений. В самом тривиальном случае — фронтенд с бэкендом. В более сложном — мобильное приложение с бэкендом. В случае со звёздочкой — два бэкенда и другие извращения. Стандартом де-факто для таких задач в наше время считается API.
Кроме того, в вашем продукте может потребоваться реализовать дорогостоящую функцию, которая уже сделана в стороннем сервисе на отличненько. Например, если вам нужны карты, целесообразно использовать API Open Street Map или Яндекс.Карт, это сильно дешевле, чем пилить собственные карты.
Также вам пригодится API платёжных шлюзов, если нужно реализовать на сайте оплату чего-нибудь, неважно, физических товаров или виртуальных.
В наше время считается дурным тоном делать регистрацию и авторизацию на сайте логином и паролем, это делают через API социальных сетей, гугловский, фейсбучий, вконтактовский, телеграмовский.
Если у вас сайт с большим количеством контента, например, маркетплейс, имеет смысл реализовать API для использования ваших данных в сторонних сервисах (возможно, платно), это проще, чем постоянно банить десятки ботов, которые будут ваши данные парсить, создавая нагрузку на сервера.
Самая прозрачная аналогия с реальным миром — ресторан. Кухня — бэк, зал ресторана — фронт, официанты — API. Посетитель через зал посетителей стучится в API-официанта, даёт ему заказ. Официант доставляет заказ кухне-бэкенду, там его готовят и отдают официанту, который доставляет результат клиенту в зал ресторана. Если всё сильно упростить, реальное API работает именно так.
Различия REST и SOAP
Чаще всего в современной разработке встречаются REST и SOAP API. Давайте разберём, в чём разница.
REST
REST(от англ. Representational State Transfer — «передача репрезентативного состояния» или «передача „самоописываемого“ состояния») — архитектурный стиль взаимодействия компонентов распределённого приложения в сети.
Предполагает использование протокола HTTP для передачи данных.
Применяется преимущественно в вебе и в мобильных приложениях.
Ещё используется в облачных вычислениях.
Через REST API могут передаваться разные форматы данных, но обычно используется JSON.
Предполагает кэширование передаваемых данных.
Хорошо масштабируется.
SOAP
SOAP(от англ. Simple Object Access Protocol — простой протокол доступа к объектам) — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур (RPC).
При помощи SOAP данные могут передаваться не только через HTTP, но и, например, MQ.
Применяется, преимущественно, в Enterprise, для интеграции нескольких отдельно стоящих систем.
Данные передаются только в формате XML.
Данные не кэшируются.
Типы запросов
Метод обозначает тип производимого запроса, де-факто он является спецификацией операции, которую должен произвести сервер. Всего существует пять типов запросов:
GET
POST
PUT
PATCH
DELETE
GET – используется для получения со стороны севера определенного ресурса. Если вы производите этот запрос, сервер ищет информацию и отправляет ее вам назад. По сути, он производит операцию чтения на сервере. Дефолтный тип запросов.
POST – нужен для создания определенного ресурса на сервере. Сервер создает в базе данных новую сущность и оповещает вас, был ли процесс создания успешным. По сути, это операция создания.
PUT и PATCH – используются для обновления определенной информации на сервере. В таком случае сервер просто изменяет информацию существующих сущностей в базе данных и оповещает об успехе выполнения операции.
DELETE – как и следует из названия, удаляет указанную сущность из базы или сигнализирует об ошибке, если такой сущности в базе не было.
Postman
Для тестирования API применяется инструмент Postman. Раньше он был плагином для Хрома, но сейчас это автономное приложение для любых платформ. Штуковина достаточно понятная интуитивно, разработчики чаще всего передают данные об API тестировщикам именно в виде коллекций Постман.
Эндпоинт принимает только один строковый параметр text. Отправим Постманом GET запрос на этот эндпоинт:
Интерфейс Postman с простым GET-запросом к API
Как видите, API возвращает такой ответ:
{
"success": {
"total": 1
},
"contents": {
"translated": "Force be with you yoda,Polovec helloy you",
"text": "Hello Yoda, Polovec helloy you",
"translation": "yoda"
}
}
Как нетрудно понять, эндоинт возвратил код успеха, а в поле контента передал три значения:
translated — переведённый текст.
text — исходный текст.
translation — тип переводчика.
По такому же принципу работают любые REST API, только в реальных запросах параметров больше и они сложнее.
Применение в реальной разработке
Проектирует API обычно архитектор. Бэкенд-разработчики реализуют эндпоинты и пишут документацию. Фронтендеры или мобильные разработчики интегрируются с этим API, реализуют получение данных из него и отправку данных в него. Тестеры всё это проверяют.
Может сложиться так, что проект будет совсем маленьким и проектирование API поручат вам. Для такого случая предлагаю вам пример API спроектированного мной для мобильного приложения для операций с топливом.
Очень часто для использования API требуется авторизация. Для этого необходимо реализовать механизм выдачи токенов доступа каждому пользователю API, чтобы клиентское приложение добавляло эти токены к запросам. Посмотрите приложенный пример и поймёте, как это делается.
Если вы интегрируетесь со сторонней системой и успех проекта сильно зависит от её корректной работы, попросите QA реализовать пинговалку стороннего API, они умеют это делать, в том числе с помощью Постмана. Система будет с определённой периодичностью слать запросы на внешнее API и если ответы перестанут поступать, будет записывать такие события в лог, с помощью которого вы потом сможете доказать, что разработка тормозила из-за отваливающегося стороннего API.
На собеседовании на менеджера проектов вас могут спросить, что такое Kubernetes или просто Кубер. Если вы претендуете на место технического менеджера проектов, придётся рассказать ещё, зачем он нужен и как используется в современной разработке. Давайте разбираться.
Для того, чтобы понять, зачем нужен Кубер, сначала нужно понять, зачем нужен Докер.
Docker
Позволяет «упаковать» приложение со всем его окружением[en] и зависимостями в контейнер, который может быть развёрнут на любой Linux-системе с поддержкой контрольных групп в ядре, а также предоставляет набор команд для управления этими контейнерами.
Иными словами, при помощи Докера вы можете упаковать приложение в изолированный контейнер, а потом разместить этот контейнер, где хотите, и где бы вы его ни развернули, везде у этого приложения будет одинаковое окружение. Подход сильно облегчает развёртывание и тестирование.
У вас может возникнуть вопрос, в чём разница докера и самой обычной виртуальной машины?
Контейнеры и виртуальные машины — это разные способы виртуализации. Только виртуалка реализует её на уровне железа, а Docker — на уровне операционной системы.
Виртуальная машина функционирует как отдельный компьютер с собственным оборудованием и операционной системой. Распространённая практика — купить большой сервер и установить на него гипервизор, базу для виртуалок. Сервер «нарезается» на много виртуальных компьютеров, что избавляет нас от необходимости покупать их отдельно.
Виртуальные компьютеры вполне полноценны. На них можно установить операционную систему любого семейства и работать в ней, например, через графический интерфейс в многопользовательском режиме, устанавливая и запуская множество приложений и сервисов.
Если цель виртуалки — полностью воспроизвести устройство компьютера, то основная цель Docker — создать среду для одного приложения. Виртуальная среда контейнера запускается внутри операционной системы. Ей не нужно виртуализировать оборудование — она использует его через ОС. Поэтому контейнеры Docker потребляют меньше ресурсов, быстрее развёртываются, проще масштабируются и меньше весят.
Если кратко перечислить преимущества контейнеризации, то это:
быстрое создание и развертывание приложений;
непрерывные разработка, интеграция и развертывание;
разграничение ответственности разработчиков и администраторов;
однородность сред разработки, тестирования и промышленного использования;
переносимость между разными облачными провайдерами и ОС;
сосредоточение управления непосредственно на приложении;
слабо связанные, распределенные, эластичные, независимые микросервисы;
изоляция ресурсов;
утилизация ресурсов.
Все основные облачные провайдеры, такие как Amazon AWS, Google’s GCE, Microsoft’s Azure и даже Alibaba Cloud, предоставляют услуги по размещению контейнеров.
Докер работает на линухе. Чтобы использовать его на винде или макоси, нужно ставить виртуальную машину с линуксом. Теперь несколько слов о том, из каких компонентов состоит Докер:
Docker host — это операционная система, на которую устанавливают Docker и на которой он работает.
Docker daemon — служба, которая управляет Docker-объектами: сетями, хранилищами, образами и контейнерами.
Docker client — консольный клиент, при помощи которого пользователи взаимодействуют с Docker daemon и отправляют ему команды, создают контейнеры и управляют ими.
Docker image — это неизменяемый образ, из которого разворачивается контейнер.
Docker container — развёрнутое и запущенное приложение.
Docker Registry — репозиторий, в котором хранятся образы.
Dockerfile — файл-инструкция для сборки образа.
Docker Compose — инструмент для управления несколькими контейнерами. Он позволяет создавать контейнеры и задавать их конфигурацию.
Docker Desktop — GUI-клиент, который распространяется по GPL. Бесплатная версия работает на Windows, macOS, а с недавних пор и на Linux. Это очень удобный клиент, который отображает все сущности Docker и позволяет запустить однонодовый Kubernetes для компьютера.
Основных сущностей для работы с докером три:
Докер образ — неизменяемая штуковина, на основании которой потом будут создаваться контейнеры. В него ставятся приложение, конфигурации и зависимости. От мастер-образа можно наследовать другие образы, например, с другой файловой системой.
Докерфайл — в этой штуковине находятся рецепты по получению контейнеризированного приложения из образа.
Контейнер — собственно, ради этой сущности весь сыр-бор.
Ещё есть специальный репозиторий для хранения докер-образов.
Вы вполне можете использовать Докер без Кубера, но Кубер даст дополнительные возможности.
Kubernetes
Если кратко, то Kubernetes – это ПО, позволяющее гибко управлять контейнеризированными приложениями. Штука целиком гугловая, опережает все аналоги очень сильно. В общем, если вам надо строить инфраструктуру под сколько-нибудь сложное и высоконагруженное приложение, Кубер ваш выбор. А если вы используете микросервисную архитектуру, сама наука велела изучить и использовать этот софт.
Сущностей в этой предметной области много, рассмотрим основные, чтобы более-менее понять размещённую выше схему.
Кластер
Кластер — это набор компьютеров, хранилищ данных и сетевых ресурсов, с помощью которых Kubernetes выполняет различные задачи в вашей системе. Система может состоять из нескольких кластеров.
Узел
Узел — это отдельный компьютер (физический или виртуальный). Его задача состоит в запуске подов. Каждый узел в Kubernetes содержит несколько компонентов, таких как kubelet и прокси kube. Все они находятся под управлением ведущего узла. Узлы — это нечто наподобие рабочих пчел, которые занимаются выполнением всех основных задач. Устаревшее название узла — миньон.
Под
Под (pod) — это единица работы в Kubernetes. Каждый под содержит один или несколько контейнеров. Поды всегда работают совместно, то есть на одном компьютере. Все контейнеры внутри пода имеют одни и те же IP-адрес и пространство портов, они могут общаться между собой через локальный сервер или посредством межпроцессного взаимодействия. Кроме того, все контейнеры имеют доступ к общему локальному хранилищу данных узла, на котором находится под. Такое хранилище может быть подключено к каждому контейнеру.
Что же можно сделать при помощи Кубера?
Если совсем кратко, то с помощью Кубера вы можете создать полноценную, отказоустойчивую инфраструктуру на основе контейнеров и положиться на неё. Используя шаблоны Кубера, разработчики могут конструировать нативные облачные приложения, которые также будут обладать устойчивостью к высоким нагрузкам.
Несколько слов о возможностях Кубера:
Мониторинг. Кубер позволяет в реальном времени мониторить множество параметров вашего кластера или отдельного приложения. Есть веб-интерфейс, инфа представляется в наглядном и удобном виде.
Балансировка сетевой нагрузки. Дело в том, что трафик для разных контейнеров может сильно разниться, где густо, где пусто. Кубер умеет автоматически его балансировать, но также имеет инструменты, при помощи которых разрабы или девопсы могут написать правила балансировки.
Оркестрация хранилища. С помощью Kubernetes разработчик может выбрать систему хранения: локальное хранилище, облако и т.д. Платформа автоматически создаст ее и настроит под потребности проекта.
Автоматизированное развёртывание. Кубер умеет автоматически и вручную делать раскатку изменений. Есть возможность раскатать доработку на ограниченное количество контейнеров и протестировать работоспособность, если что-то сломается, изменения будет легко откатить.
Самоконтроль. Кубер умеет автоматически останавливать или перезапускать засбоивший контейнер. Девопс может задать критерии для качества работы контейнеров и Кубер будет скрывать от пользователей контейнеры, которые перестали им соответствовать. Ну и уведомлять девопса о таких событиях.
Безопасность и конфиденциальность. Kubernetes может сохранять и контролировать конфиденциальные данные (пароли, ключи SSH, OAuth-токены), распределять права доступа к системе. Обновление и развертывание приложений не затрагивает образы контейнеров и не раскрывает секретные сведения в конфигурации стека.
В Кубере много автоматики, но эта система не является полностью автоматической и требует определённого уровня знаний для её конфигурирования.
В целом, это всё, что пиэму нужно знать про Докер и Кубер.
Когда-то давно я посещал имиджборды и там были популярны так называемые десктоп-треды, в которых аноны демонстрировали искусство расположения ярлыков, панелей и виджетов на рабочих столах своих компов. Покопавшись в архивах, я нашёл три старых скриншота рабочего стола и сделал текущий. О них и пойдёт речь.
Самый старый десктоп, 2009 год (кликабельно):
Это экран старенького нетбучика Самсунг. Уже не берусь вспомнить, какой именно модели. Был куплен в качестве временной замены сгоревшему Фуджицу Сименс, но нет ничего более постоянного, чем временное. Используется забытая утилита для организации панелей ярлыков, по двойному клику по рабочем столу, левая и правая панельки исчезают.
Пойдём слева направо, сверху вниз.
Бапки. Это приложение Вебмани. Когда-то расчёты за рекламу в ЖЖ производились именно на вебмани. Я не знаю на 100 %, работает ли он сейчас в РФ, была новость, что у аффилированного банка отозвали лицензию.
Блог. Это ЖЖ-клиент Семаджик. Когда-то был самым удобным способом постить контент в LiveJournal. Жив до сих пор, можете его скачать и насладиться.
Скайп. Несмотря на запредельную глючность, тяжеловесность и неудобность, почему-то жутко популярен в РФ, прошёл со мной сквозь все эти годы. Сейчас используется для созвонов с мамой, в Telegram почему-то эхо.
Резюме. hh на тот момент не был популярен, вакансии разыскивались чёрте-где и резюме засылалось по почте, аттачем. В 2009 году я это делал так часто, что держал резюме на десктопе.
Фотошоп. Не берусь сказать, какой версии. До распространения адобовской подписки в РФ было ещё далеко, пиратский, конечно.
Асидисюк. Виндовая гляделка фотографий ACDSee Pro. Про версия, потому что я тогда активно фотографировал и конвертил равы. Асидисюшный рав конвертер не серил фотографии, в отличие от адобовского камера рава.
Дропбокс. Моё первое облако. Тогда ещё не разросшаяся софтина для синхронизации определённой папочки с облачным сервером для использования откуда угодно. Прошла со мной сквозь годы.
Аська. Это был QIP Infium. Когда-то минималистичный, но потом, по мере осваивания быдлокодинга автором, обросший свистелками и перделками IM-клиент. Использовался вместо телеграма. Больше не поддерживается, но на всяких софтпорталах его можно скачать.
SMS. До распространения мессенджеров, самым надёжным способом передать инфу другу, были эсэмэски. Безлимитных пакетов эсэмэсок тогда не придумали, они были платными, но можно было слать их с компа, разгадав несложную капчу. Можно было и с сайта, но через специальное приложение это делать было проще. Название программы утеряно в веках.
Электропочта. Это был The Bat. У меня было несколько ящиков, с которых этим самым батом забиралась почта. Софтина жива до сих пор.
Мамбл. До всяких там Клабхаусов мы прекрасно собирались в Мамбле для голосового общения. Я был подключён к некому каналу, на котором практически всё время какие-то странные люди сутками рубились в Arma, а по субботам читали стихи. Жив до сих пор, хоть и несколько потеснён более технологичными Zello и Discord.
Опера. Когда-то был одним из самых быстрых браузеров. Потом был заменён мной на более технологичный Файрфокс.
Командир. Управлять файлами в винде сколько-нибудь эффективно можно было только при помощи Total Commander. Когда я его увидел впервые, он ещё назывался Windows Commander и это было сильнейшее впечатление. Возможности, превосходящие Нортон Коммандер и при этом в виндовом интерфейсе, крутота же! Существует до сих пор, но несколько утратил актуальность с повсеместным переходом в облака.
Планировщик. Microsoft Outlook. Смартфоны ещё были в зародыше, я пользовался коммуникатором Asus P526. Аутлок умел с ним синхронизироваться при помощи специальной софтины. Можно было вести записную книжку, календарь и список задач на компе, а перед уходом из дома синхронизировать с коммуникатором, подсоединив кабель, разумеется. Живее всех живых.
Ворд. Microsoft Word. Специализированные редакторы для писателей ещё не появились, тексты писались в ворде. Жив, хоть и утратил актуальность из-за гуглодоков.
Истории болезней. Записная книжка OneNote. Так называлась, потому что я мнил себя психологом и анализировал разных знакомых, систематизируя инфу в этом заметочнике. Оброс функциями, стал облачным, жив.
Скриншотер. Я предположу, что это Ashampoo Snap, утилита для удобной работы со скриншотами. Тогда я частенько писал юзабилити-аудиты разных продающих сайтов и при помощи этой скриншотилки, снабжал свои разборы скриншотами со стрелочками. Жив до сих пор, мной уже не используется.
Десктоп 2012 года (кликабельно):
Нетбук тот же. Здесь используется аналог маковского дока под названием Rocket Dock. Последняя версия датируется 2007 годом, но я его до сих пор ставлю на виндовые компы. Пробежимся по софту:
OmmWriter — очень располагающий к писанине текстовый редактор. К сожалению, очень медленно стартует и имеет весьма скудные настройки. В общем, порт с макоси во все поля. Жив до сих пор, мной использоваться перестал.
Тёмная комната — на случай, когда хочется чего-нибудь написать, но времени запускать OmmWriter нет. Выветрилась из памяти, нагуглить не смог. Видимо, больше не поддерживается.
Microsoft Word 2007 — с ним всё понятно.
Microsoft Outlook — раньше активно использовал для тайм менеджмента, сейчас этот ярлык не используется.
Skype — не люблю эту софтину, однако всё ещё используется для деловых переговоров.
QIP Infium — мультипотокольный клиент. Тяжеловат, глючноват, но привычен.
Firefox — тормозная, но функциональная лисица.
ACDSee Pro — гляделка, графический редактор и рав конвертер.
Ashampoo Snap — идеальная скриншотилка, всегда должна быть под рукой.
Total Commander — не понимаю людей, пользующихся Проводником.
Дальше два ярлыка радмина и извлечение флешки.
На столе лежат три книжки, читаемые в тот момент:
Госпитальная хирургия. Интересовался устройством человека. В основное книгохранищие эта книга не перекочевала и была потеряна.
Законы Паркинсона. Винрарнейший труд про законы, управляющие бюрократической организацией. Работа занимает всё отведённое ей время, да.
Якоб Нильсен. Веб Дизайн. Нестареющий учебник, из которого можно почерпнуть ключевые принципы юзабилити.
Десктоп 2017 года (кликабельно):
Это уже мой первый макбук, 2013 года с ретина-дисплеем. Как видите, я перестал хранить на столе даже самые важные файлы и у меня появились новые, чисто маковские инструменты. На маке несколько сложнее менять дефолтные иконки приложений, поэтому тут они не кастомизированы.
Появился текстовый редактор Sublime Text. Иногда используется и сейчас, когда нужно обязательно написать текст без всякого форматирования.
Самый удобный инструмент для ведения личного дневника, DayOne.
Телеграм в представлении не нуждается.
Маковский календарь заменил Outlook.
Team Viewer. В основном, чтобы помогать маме. В РФ больше не работает, я его заменил на VNC Viewer.
uTorrent же.
Оффлайновый музыкальный плеер VOX. У него почему-то до сих пор не сохраняются изменения в плейлисте, если поменять порядок песен, в остальном хорош.
Десктоп 2022 года (кликабельно):
Более современный макбук, 14-дюймовая прошка 2021 года, подробней о нём в обзоре. Мне надоело подбирать себе красивые обои, поставил Unsplash Wallpaper и они теперь каждый день новые. Иконки в трее аккуратно прибраны при помощи Bartender, на виду только самое важное.
Что добавилось в доке:
Agenda – штуковина заменяет листочек бумаги для быстрых записей.
Появился дефолтный почтовый клиент Mac OS, потому что gmail сделал свой веб-клиент грузящимся по полминуты.
Todoist – я долго искал идеальную тудушку, которая бы работала на маке, в вебе, на смартфоне, чтобы её можно было шарить коллегам, чтобы описания и комменты к задачам, чтобы теги были, чтобы была красивая и удобная. Todoist оказался идеален, но несколько жаден. И когда я уже был морально готов купить подписку, они сделали аттракцион невиданной щедрости, сделав самые ценные функции доступными бесплатно.
Teams – кривоватый майкрософтовский мессенджер, используется на текущей работе и будет использоваться до конца 2022 года, после чего уступит место скайп фор бизнес.
Вот такие у меня были эволюции десктопа. Во времена, когда винду было нужно периодически переустанавливать и содержимое десктопа при этом терялось, я приобрёл привычку не хранить на нём ничего критичного, кроме ярлыков и документов, с которыми работаю в данный момент и пронёс эту привычку до настоящих времён. К сожалению, не достать больше скринов Windows 95, не сохранились скрины Windows Me, который стоял на моём первом десктопном компьютере, не сохранились скриншоты Windows XP, а мозг услужливо забыл, что я тогда хранил на десктопе.
В этом посте я хотел бы рассказать, какое программное обеспечение использую для управления IT-проектами. Я предпочитаю работать на Mac, хотя и понимаю, что в случае поломки имеющегося макбука, купить новый в ближайшее время будет очень трудно и есть вероятность, что придётся вернуться на Windows. В этом случае, я напишу ещё один пост, уже про виндовой софт.
Несколько слов о конфигурации компьютера:
Конфигурация компаКонфигурация хранилища
После перехода на компьютер с 16 гигабайтами оперативной памяти, работать стало комфортнее, операционка с кучей программ грузится быстрее, появилась возможность играть в современные игры, хоть это на маке и то ещё удовольствие.
SSD в терабайт позволяет не беспокоиться за свободное место. Учитывая, что я отучился хранить локально кучу контента. Много места занимает база Эвернота и папка с музыкой, потому что оставаться без музыки из-за отключения связи или сбоев в Яндекс.Музыке не хочется.
Ещё у меня на диске есть две объёмные игры — Метро Ласт Лайт и Симс 4.
«Флешечкой» называется MicroSD на 64 гига, постоянно вставленная в разъём для SD-карт при помощи специального пенальчика Nifty MiniDrive Retina. Выглядит это так:
В комплекте с пенальчиком идёт специальный крючок, при помощи которого его можно извлечь. Такое вот решение для дешёвого и сердитого расширения объёма дисковой памяти мака. Пользуюсь больше по старой памяти и храню на этой флешке некритичные данные. В последних версиях макоси она всё чаще отваливается, на старых такой проблемы не было. Флешка отформатирована в ExFAT. Раньше была яблочная файловая система, я подумал, что в ExFAT решатся проблемы с отваливанием, но нет.
Айфона, Эппл Вотч и эйрподсов у меня нет.
С железом всё, переходим к софту.
Общение
Изрядная часть рабочего дня менеджера IT-проектов уходит на коммуникации с членами команды и заказчиками.
Раньше самым популярным приложением для общения с командой был Slack. Тяжеловесное приложение, но содержит всё необходимое. Главный недостаток — если хотите доступ к полной истории всех чатов, нужно платить и платить немало. Сейчас Slack ушёл с российского рынка и актуальность несколько утратил.
На моей текущей работе используется домен Exchange и в качестве болталки принят Teams. Плюсы — вполне прилично реализованные групповые звонки с возможностью записи в мелкомягкое облако, удобный календарь, глубокая интеграция с Microsoft Office. Интеграция с доменом позволяет обратиться к любому сотруднику компании, зная его ФИО. Однако я каждый день плююсь с Teams из-за того, что с нами работает внешняя команда, имейлы сотрудников которой приходится, создавая встречи, копипастить. Хранить внешние имейлы, видимо, никак невозможно. Кроме того, я так и не понял, как окончательно стереть учётную запись с предыдущей работы. В общем, из клиента «торчат нитки», но общаться в нём вполне реально.
Для общения с внешними командами применяется Telegram. Его достоинства всем известны, а недостаток в том, что это всё же личный мессенджер, рабочие чаты хотелось бы иметь в отдельном приложении, чтобы, например, при уходе в отпуск, можно было их отключить одним действием. Ну и нового сотрудника приходится добавлять в каждый рабочий чат отдельно, в отличие от более специализированных мессенджеров.
В качестве почтового клиента пробовал использовать AirMail, но в итоге вернулся на стандартный маковский клиент. Он поддерживает практически любые почтовые учётки, весьма минималистичен и удобен в работе. Больше всего мне нравится помечать цепочки писем флажками разного цветов. Недостатки — при попытке добавить собеседника в маковский контакт-лист ничего не происходит. Кроме того, если вам пульнут длинную переписку с длинной историей, разобраться в ней будет сложно. А ещё, я так и не разобрался, как автосортировать почту средствами этого клиента, использую сортировку Google в лично почте и средства Outlook в рабочей.
Руководство рассматривает Skype for Business в качестве альтернативы Teams, но с этой санкционной истерией вполне может прийтись перейти на какой-нибудь Агент.Мейлру
Альтернативы:
«Телемост» от «Яндекса» позволяет записывать разговоры и принимать до 40 человек, еще и с десктопным приложением. Может быть интересен тем, кто пользуется «Трекером» или другими частями экосистемы «Яндекса».
TrueConf — единственный в России провайдер ВКС, чьи разработки отмечены исследованиями Gartner и IDC. В отличие от предыдущих сервисов, позиционирует себя как решение для бизнеса и обладает соответствующей функциональностью. Он может работать в облаке, на выделенном сервере и собственной инфраструктуре, имеет бесплатную и платные корпоративные версии.
Pruffme — петербургская платформа для конференций, обучения и совместной работы (имеет удобную whiteboard, входящую в основные тарифы, которой заодно можно заменить и Miro). Из интересных функций можно отметить элементы виртуальной реальности для вебинаров и курсов.
Задачники можно разделить на условно командные и условно личные. Начнём с командных.
До великого исхода основным групповым задачником была Jira. Но её облачная версия для русских команд больше недоступна. Пользователям, нагородившим собственный огородик с серверной Jira, повезло больше. Имейте в виду, что чтобы сколько-нибудь эффективно использовать Jira, надо знать JQL, благо он несложный. А вообще, задачник хороший, в нём нормально поддерживаются скрам со спринтами или канбан с непрерывным потоком.
В некоторых компаниях встречал Redmine. Он бесплатен. Но заточить его на мало-мальски сложные процессы трудно, надо обвешиваться плагинами. Из коробки довольно прост — есть проекты, в этих проектах есть стопки задач. Можно делать подзадачи для агрегации. Можно настраивать примитивные флоу.
Встречал попытки использовать Trello, но он, будучи хорошим личным задачником, в группе работает плохо, недостаёт функций, плагины могут далеко не всё. А ещё, автозамена всё время норовит заменить «трелло» на «трепло». В реальной практике управления отделом с канбаном я заменил его на Kanbanize, там хотя бы свимлайны есть.
Альтернативы:
«Яндекс.Трекер» — с одной стороны, от команды «Яндекса» ожидаешь продуманного решения, которое заходит с козырей, с другой — страница проекта подозрительно минималистична: видимо, функциональность решения предлагают оценивать «в бою». Неизвестно, какое количество интеграций поддерживается. Из самых больших жалоб пользователей — долгая поддержка.
Megaplan — довольно старая (в хорошем смысле) и известная система, начинавшаяся как CRM и заточенная под российский бизнес (51% компании принадлежит 1С, что о чем-то говорит). По имеющейся у нас информации, неплохо покрывает потребности бизнеса как CRM и трекер, но без фокуса на ИТ. Пользователи критикуют медленную поддержку и долгие/дорогие доработки, которые всегда требуются коробочным версиям.
«Битрикс24» — нативная CRM и система управления проектами от 1С, масштабная и обладающая широкими возможностями для кастомизации. Сложность заключается в том, что для доработок нужны ресурсы — разработчики, которые стоят дорого как при покупке у самого «Битрикса», так и при найме на рынке труда.
В качестве личной тудушки долго не мог определиться. Мне нужно, чтобы можно было вести несколько проектов, создавать подзадачи, писать описания и комментарии, выставлять приоритеты и сроки, создавать задачи на основании имейлов и, самое главное, чтобы была полноценная версия на андроиде. Постепенно пришёл к выводу, что ближе всего к идеалу Todoist, но в нём самые нужные функции были платными и не самыми дешёвыми (сравнимыми с подпиской на Эвернот). Пока колебался, Todoist сделал аттракцион невиданной щедрости, обесплатив большинство нужных фич. Теперь это идеальная тудушка.
Рабочий лист задач я вам не покажу, а вот проект с идеями для постов — пожалуйста:
Ещё одна очень важная функция тудушки — возможность поделиться ей с коллегами (реальный кейс. Я при помощи этой софтины отслеживаю задачи, ушедшие к смежникам, нужно, чтобы моя продуктовнерша имела представление, что это за задачи и в каком они состоянии). Коллеги иногда используют экзотические операционные системы, поэтому желательно, чтобы она имела web-интерфейс. Todoist умеет это делать на сто процентов.
Ещё он умеет автоматически импортировать встречи из гуглокалендаря и превращать их в задачи. К сожалению, календарь Exchange ему импортнуть не под силу. Приложение для андроида полнофункциональное.
Столкнулся с проблемой. Punto Switcher версии 2.1.2 после выхода из ждущего режима macOS Catalina выгружается из памяти. Приходится запускать его заново или страдать от необходимости постоянно стирать и перенабирать текст, набранный не в той раскладке. Проблема лечится.
Открываем системные настройки → Пользователи и группы → Объекты входа
Убираем из объектов входа Punto Switcher.
Открываем текстовый редактор и создаём файл со следующим содержимым:
Я как-то редко скачиваю и ставлю новые приложения, но когда это происходит, в последнее время после установки всё чаще стало отображаться сообщение, что программа повреждена, не может запуститься и должна быть перенесена в корзину.
Всё с этой программой хорошо. Просто ушлые яблочники таким неявным образом борются с установками из неустановленных источников.
Лечится вводом в терминал команды:
sudo spctl --master-disable
После этого опция установки приложений из неизвестных источников станет доступна:
Может оказаться, что всё несколько сложнее и приложение после установки отказывается запускаться. Возможно, его нужно раскарантинить. Делается это вводом в терминал команды:
Вместо LockedApp, понятное дело, вписываем название обрабатываемой программы. Обычно после этого всё становится нормально, приложение запускается.
Иногда и этого недостаточно. Тогда нужно отключить SIP.
Отключение SIP осуществляется только из режима восстановления. Запустить данный режим можно выполнив следующие действия: перегрузить ПК, получить доступ к «Терминалу» и ввести команду отключения. Данные действия осуществляются следующим образом:
Запустите перезагрузку компьютера;
В процессе перезагрузки необходимо удерживать клавиши: Command (⌘)+R, чтобы перейти в режим Восстановления системы;
В верхней панели меню требуется выбрать раздел «Утилиты» и перейти в пункт «Терминал»;
В терминал вводим:
csrutil disable
После перезагружаемся и наслаждаемся.
Если по какой-то причине вам нужно включить SIP обратно, делаем то же самое с перезагрузкой в режиме восстановления, только в терминал вводим: