Блог

Не работает тактильный отклик на трекпад на Macbook Air M1

Столкнулся с этой проблемой. Пишут, что для Intel необходим сброс SMC, но решения для M1 более сложные - с переустановкой конфигуратора.

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

В итоге все решилось принудительным выключением через зажатую кнопку включения. После того как компьютер выключился, нажал на трекпад - и отклик произошел, макбук включился тоже.

Всем удачи!

macos

Бекапы через Duplicity

У меня уже был установлен, если нет, то:

apt install -y duplicity

Запускать его рекомендую под root. А также добавить в cron.

Делаем бекап без шифрования.

В первый раз будет полный бекап, при повторной
команде будет инкрементальный:

duplicity --no-encryption /home/crusat/www/crusat file:///mnt/backup/incremental/

Пример вывода:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1685457148.21 (Tue May 30 17:32:28 2023)
EndTime 1685457321.37 (Tue May 30 17:35:21 2023)
ElapsedTime 173.16 (2 minutes 53.16 seconds)
SourceFiles 2598
SourceFileSize 2430153960 (2.26 GB)
NewFiles 2598
NewFileSize 2430153960 (2.26 GB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 2598
RawDeltaSize 2428822760 (2.26 GB)
TotalDestinationSizeChange 559464350 (534 MB)
Errors 0
-------------------------------------------------

После инкрементального пример вывода:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Tue May 30 17:32:28 2023
--------------[ Backup Statistics ]--------------
StartTime 1685458987.94 (Tue May 30 18:03:07 2023)
EndTime 1685458988.72 (Tue May 30 18:03:08 2023)
ElapsedTime 0.79 (0.79 seconds)
SourceFiles 2598
SourceFileSize 2430165025 (2.26 GB)
NewFiles 1
NewFileSize 4096 (4.00 KB)
DeletedFiles 0
ChangedFiles 5
ChangedFileSize 16991003 (16.2 MB)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 6
RawDeltaSize 72816 (71.1 KB)
TotalDestinationSizeChange 18152 (17.7 KB)
Errors 0
-------------------------------------------------

Делаем полный бекап:

duplicity --no-encryption --full /home/crusat/www/crusat file:///mnt/backup/full/

При необходимости, можно исключить файлы с помощью опции --exclude.

Восстанавливаем бекап:

duplicity --no-encryption restore file:///mnt/backup/incremental/ /home/crusat/www/crusat

Восстанавливаем бекап трехдневной давности:

duplicity -t 3D --no-encryption restore file:///mnt/backup/incremental/ /home/crusat/www/crusat

Восстанавливаем конкретный файл:

duplicity --no-encryption --file-to-restore FILENAME file:///mnt/backup/incremental/ /home/crusat/www/crusat

Все работает через scp, поэтому можно делать так:

duplicity --no-encryption /home/crusat/www/crusat scp:///user@backup.ru/incremental/

Добавляем в cron для ежедневных бекапов:

crontab -e
# добавляем через любимый редактор задачу на час ночи ежедневно
0 1 * * * duplicity --no-encryption /home/crusat/www/crusat file:///mnt/backup/incremental/

Всем спасибо за внимание.

bash copypaste devops

SQL запрос для таблицы с нулевыми значениями - контроль трекинга в Jira

Сам запрос, здесь берем за последние 8 дней:

select u.display_name as username, u.lower_user_name, day, SUM(wl.timeworked / 3600) as timeworked_hours
from cwd_user u
CROSS JOIN 
(select generate_series(
    date_trunc('day', now() - interval '7 day'),
    date_trunc('day', now()),
    '1 day'::interval
  ) as day
) as days
left join worklog wl on wl.author = concat('JIRAUSER', u.id) AND date_trunc('day', wl.startdate) = day
where u.active = 1
group by username, u.lower_user_name, day
order by username, day;

Пример того, что получается:

/media/uploads/2023/05/22/Снимок_экрана_2023-05-22_в_20.37.24.png

Потом это можно собрать в Pivot-таблицу в Superset:

/media/uploads/2023/05/22/Снимок_экрана_2023-05-22_в_20.40.28.png

Настройка в Metrics выглядит так:

CASE
  WHEN SUM(timeworked_hours) is null THEN 0
  ELSE SUM(timeworked_hours)
END
jira sql

Простое нагрузочное тестирование на Siege

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

Пример запроса:

siege  -d1 -r5 -c10 'https://crusat.ru'

где:

-r5 - количество запросов. В данном случае 5 запросов от каждого пользователя.
-c10 - количество одновременных пользователей. В данном случае 10 пользователей.
-d1 - задержка между запросами. Измеряется в секундах. В данном случае 1 секунда.

То есть, суммарно будет 5 * 10 = 50 запросов. Время исполнения будет не более 5 * 1 = 5 секунд (при скорости обработки запроса в 0 секунд).

Пример вывода:

Transactions:                510 hits
Availability:             100.00 %
Elapsed time:              12.75 secs
Data transferred:           5.80 MB
Response time:              0.18 secs
Transaction rate:          40.00 trans/sec
Throughput:             0.46 MB/sec
Concurrency:                7.14
Successful transactions:         510
Failed transactions:               0
Longest transaction:            1.06
Shortest transaction:           0.05
bash devops

Вопросы, которые мы задаем в работе ИТ бизнеса

Мы работаем в трех направлениях:
- аутсорсинг - выполнение проектов с нашим менеджментом, с ответственностью за результат (если есть ошибки, то работа выполнена не до конца и нам ее дополнительно не оплатят). Тут задаем вопрос - “когда?”. Ведь чем быстрее и качественнее мы закроем проект, тем больше заработаем.
- аутстаффинг - оказание услуг путем без менеджмента. То есть один или несколько сотрудников работают над проектом Заказчика с его менеджментом (тимлиды, РП). Здесь мы задаем вопрос “сколько?”. Здесь срок не важен, наоборот, чем дольше проработает сотрудник над одним проектом, тем лучше, ведь оплата идет по часам. Здесь мы тоже несем риски за некачественную работу (если сотрудник сделал ее плохо, нам срежут часы), но главное - это маржа, т.е. сколько мы заработаем за час с учетом зарплаты и накладных расходов на сотрудника.
- продукт - здесь у нас условно-бесконечные проекты, на которых мы зарабатываем и вопрос здесь - “кому?”. Ведь, если мы знаем, кому продаем этот продукт, то можем делать это более качественно и, тем самым, повышать свою прибыль. Здесь всецело зависим от аудитории и наша цель - делать это максимально эффективно.

мысли вслух

Роль CTO (технического директора) в компании

Машинный перевод:

  1. Архитектор

Технический директор является главным архитектором программного обеспечения. Это включает в себя:

  • Выбор технологий, языка и инфраструктуры для создания продукта.
  • Выбор инструментов разработки, таких как IDE, система управления версиями, ведение журнала, тесты и т. д.
  • Проектирование архитектуры программного обеспечения, модулей и компонентов.
  • Составление дорожной карты разработки с согласованием с другими основателями относительно приоритета функций.
  • Принятие решения о стандартах кодирования и протоколах разработки.
  • Написание и управление любой документацией, связанной с программным обеспечением (например, внутренней вики-страницей компании и т. д.).
  • Проектирование базы данных. Это включает в себя выбор решения БД, проектирование его таблиц и отношений данных, его масштабирование и т. д.
  • Постоянно изучаем новые инструменты и технологии для повышения эффективности разработки и качества продукции.
  • Когда кто-то представляет новый инструмент или технологию, которые интегрируются с программным обеспечением или влияют на цикл разработки, технический директор должен изучить и одобрить или отклонить его.
  • Когда другой основатель или сотрудник разрабатывает программный компонент или модуль, технический директор должен просмотреть его и при необходимости предложить изменения.
  • За техническим директором должно быть последнее слово во всех дизайнерских решениях, поскольку он является основателем с самым глубоким пониманием общей архитектуры.

Исключения:

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

  1. Разработчик

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

  • Разработка самого продукта, MVP и других побочных экспериментов, которые решают протестировать основатели.
  • Тестирование продукта и написание автоматических тестов, когда это возможно.
  • Надзор за любой внешней силой разработки (аутсорсинг, временное кодирование другим учредителем и т. д.).
  • Если стартап предоставляет услугу или API, технический директор должен постоянно контролировать и обеспечивать его работоспособность и качество.
  • Разбивка задач разработки и оценка времени разработки и дат выпуска. Технический директор также должен нести ответственность за то, чтобы учиться и совершенствоваться на ошибках планирования.
  • Управление релизами, тегами и историей версий.
  • Разработка или предоставление скриптов и инструментов для других учредителей.
  • По мере того, как стартап становится больше, а команды разработчиков расширяются, технический директор все меньше работает в качестве разработчика, а иногда и вовсе прекращает писать код.
  • Участие CTO в непосредственном написании кода должно быть на его совести, при условии, что у него достаточно времени и ресурсов для кодирования (или для этого есть специальное обоснование).

  • Менеджер группы / вице-президент по проектированию

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

  • Разбивка задач для команды разработчиков.

  • Обучение новых сотрудников и разработка программы обучения, если это возможно.
  • Делаем обзоры кода и дизайна.
  • Убедитесь, что команда разработчиков производит качественный и проверенный код.
  • Убедиться, что команда разработчиков соблюдает стандарты кодирования и протоколы, определенные техническим директором.
  • Следить за прогрессом разработчиков и следить за тем, чтобы они не отставали от дорожной карты.
  • Время от времени проводите переговоры с командой, чтобы убедиться, что они довольны и соответствуют направлению компании.
  • Формирование культуры команд разработчиков.
  • Контроль всего цикла разработки, от первоначального проекта до сдачи.
  • Помощь разработчикам с проблемами кодирования и проблемами, с которыми они не могут справиться. Технический директор должен быть исключительным разработчиком и уметь решать проблемы, на которого команда может положиться.
  • Подбор и оценка новых сотрудников. Новых программистов нельзя нанимать без одобрения технического директора.
  • Быть непосредственным руководителем технического персонала.
  • Передача роли менеджера команды

В случае найма/повышения в должности Менеджера команды:

  • Руководитель группы будет подчиняться непосредственно техническому директору.
  • В технических разногласиях последнее слово всегда будет за техническим директором.
  • Уровень прямого участия технического директора в команде разработчиков будет зависеть от выбора технического директора.
  • Распределение обязанностей и полномочий между техническим директором и руководителем группы будет решаться техническим директором.
  • Выбор руководителя команды должен быть одобрен и принят техническим директором.
  • Передача роли вице-президента по инженерным разработкам

В случае найма/продвижения вице-президента по инжинирингу:

  • Вице-президент по инженерным вопросам будет подчиняться непосредственно техническому директору.
  • В технических разногласиях последнее слово всегда будет за техническим директором.
  • Уровень прямого участия технического директора в команде разработчиков будет зависеть от выбора технического директора.
  • Распределение обязанностей и полномочий между техническим директором и вице-президентом по проектированию будет решаться техническим директором.
  • Выбор вице-президента по проектированию должен быть одобрен и принят техническим директором.

  • ИТ

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

  • Настройка и обслуживание серверов компании, баз данных и всех внешних сервисов и инструментов.
  • Обеспечение безопасности серверов и данных и их защита от обычных атак

Оригинал на английском языке:

1. Architect

The CTO is the main architect of the software. This includes:

Choosing the technologies, language and infrastructure to build the product with.
Choosing the development tools, like IDE, source control, logging, tests, etc.
Designing the software architecture, modules, and components.
Building the dev roadmap, with coordination with the other founders regarding priority of features.
Deciding on coding standards and development protocols.
Writing and managing any software related documentation (for example company internal wiki page etc.).
Designing the Database. This includes choosing DB solution, designing its tables and data relations, design it to scale, etc.
Constantly exploring new tools and technologies to improve development efficiency and product quality.
When someone introduce a new tool or technology that integrates with the software or affect the dev cycle, the CTO must examine and approve or reject it.
When another founder or employee design a software component or a module, the CTO must review it and suggest changes if needed.
The CTO should have the final word on all design decisions, as he is the founder with the deepest understanding of the general architecture.
Exceptions:

Without diminishing the list above, its important to remember that some architectural decisions may have financial or scheduling implications. The CTO should not make decisions that exceed the budget or deadline.

2. Developer
Since it takes some time for a startup to start hiring devs, the CTO must also act as the main (and often only) developer on the team. At least until hires are made. This includes:

Developing the product itself, the MVP and other side experiments that the founders decide to test.
Testing the product and writing automatic tests when possible.
Overseeing any external development force (outsourcing, other founder temporarily coding, etc.).
If the startup provides a service or an API, the CTO should constantly monitor and assure its health and quality.
Breaking down development tasks and evaluating dev times and release dates. The CTO should also be responsible to learn and improve from scheduling mistakes.
Managing releases, tags, and versions history.
Developing or providing scripts and tools for the other founders.
As the startup grows bigger and the dev teams expand, the CTO work less as a developer and sometimes stop coding altogether. 
The involvement of the CTO in directly writing code should be up to him, provided he has enough time and resources to be coding (or there's a special justification for it).

3. Team Manager / VP Engineering
When the startup only starts to grow and hire, its the CTO's job to manage the dev team and act as the team leader as well as the VP engineering (until those roles are fulfilled). This includes:

Breaking down tasks for the dev team.
Training new employees and designing training program if possible.
Doing code & design reviews.
Making sure the dev team produce quality and tested code.
Making sure the dev team comply with the coding standards and protocols defined by the CTO.
Monitoring the devs progress and making sure they keep up with the roadmap.
Doing occasional talks with the team to make sure they are happy and in-sync with the company direction.
Building the culture of the dev teams.
Overseeing the entire dev cycle, from initial designs to delivery.
Helping devs with coding problems and challenges they can't handle. The CTO must be an exceptional developer and a problem solver that the team can relay on.
Recruiting and evaluating new hires. New programmers should not be hired without the CTO approval.
Being the direct supervisor of the technical staff.
Passing the Team Manager Role

On the event of hiring / promoting a Team Manager:

The team manager would report directly to the CTO.
On technical disagreements, the CTO will always have the final word.
The level of direct involvement of the CTO in the dev team would be subjected to the CTO choice.
The distribution of responsibilities and authority between the CTO and the team manager would be decided by the CTO.
The choice of the team manager must be approved and accepted by the CTO.
Passing the VP Engineering Role

On the event of hiring / promoting a VP Engineering:

The VP Engineering would report directly to the CTO.
On technical disagreements, the CTO will always have the final word.
The level of direct involvement of the CTO in the dev team would be subjected to the CTO choice.
The distribution of responsibilities and authority between the CTO and the VP Engineering would be decided by the CTO.
The choice of the VP Engineering must be approved and accepted by the CTO.
4. IT
Just like with devs, most startups start without a proper IT team. Its up for the CTO to take up that role until IT is hired. This includes:

Setting up and maintaining the company servers, databases, and all external services and tools.
Making sure the servers and data are secured and protected against common attacks.
Managing things like domains, SSL certificates, CDN, and other server-related and web components.
Managing the company's site, landing pages, and other misc services.
Helping the non techy founders with their general IT problems.
When the startup grows bigger usually some IT personnel is hired, and report to the CTO.

5. Founder & Executive
With all the roles and responsibilities above its important to remember that the CTO is also a founder and an executive-level personnel, and as such he is entitled to be involved in the strategy planning and big decisions of the company.

Источник: http://ctorole.com

cto

Как почистить кэш на macOS от оригиналов оптимизированных фото

  1. Проверьте в программе “Фото”, что все выгружено в icloud.
  2. Если программа “Фото” открыта, то закрываем ее.
  3. Заходим в директорию “Изображения” (в корне пользовательской).
  4. Правой кнопкой мыши на “Photos Library.photoslibrary” и выбираем “Показать содержимое пакета”.
  5. Заходим в директорию “originals”, выделяем все директории и удаляем их.
  6. Заходим в программу “Фото” и проверяем, что все в порядке.
macos

Отчеты времени по дням в Jira бесплатно

Устанавливаем плагин в Google Chrome (или аналогичный браузер).

https://chrome.google.com/webstore/detail/jira-assistant-worklog-sp/momjbjbjpbcbnepbgkkiaofkgimihbii/related?hl=en

Далее, переходим на сайт, где установлена jira, например, https://myjira.com.

Нажимаем на иконку Jira Assistant справа сверху у браузера и жмем зеленую кнопку Integrate. После этого нажимаем “Разрешить”. Если что-то не сработало, то перезагрузите страницу и нажмите Integrate еще раз.

После этого, через контекстное меню плагина переходим в меню “Worklog Report”.

Нажимаем на фиолетовую иконку “Add users” и вводим имя/email пользователя. Не забудьте нажать зеленую кнопочку с плюсом. После того, как добавили всех необходимых, нажимайте фиолетовую кнопку “Done”.

После того, как добавили всех необходимых, нажимайте на фиолетовую кнопку календаря и выбирайте нужный период.

Теперь вы видите отчет. Если нужно выгрузить его в Excel, то используйте фиолетовую кнопку с гаечным ключом.

jira

SCRUM and RACI

Всем привет!

При командной работе одна из важнейших частей - это понимание ответственности. Для описания ответственности за верхнеуровневые функции очень удобно использовать RACI.

  • R - ответственный - это лица, которые несут ответственность за выполнение работы.
  • A - подотчетный - это лица, ответственные за результат и лица, принимающие решение.
  • C - консультант - это лица, которые способствуют принятию решения (их вклад может быть согласован или не согласован).
  • I - информированный - это лица, которые проинформированы о решении, но не получают информации.
  • F - фасилитатор - это лица, которые помогают облегчить общение и передачу информации в команде.

Прилагаю также матрицу в формате PDF и исходники (Numbers , Excel).

RACI_SCRUM

Источник: https://techblog.constantcontact.com/software-development/scrum-and-raci/.

SCRUM бизнес

Советы начинающим владельцам Mac

Раскладка клавиатуры

Вы можете поменять раскладку клавиатуры на привычную, для этого выберите в настройках: Клавиатура -> Источники ввода -> Русская ПК (вместо просто Русская)

/media/uploads/2022/06/13/klaviatura_rus_pk.mp4

Оболочка по умолчанию

Мне больше нравится bash, но по умолчанию теперь zsh. Чтобы сменить обратно на bash, просто выполните в терминале команду:

chsh -s /bin/bash

Софт

Менеджер пакетов

Первым делом рекомендую поставить brew - с ним установка программного обеспечения становится гораздо проще.

Офис

Не торопитесь ставить офисный пакет Microsoft (Word, Excel), попробуйте Pages и Numbers от Apple. Они бесплатны и хорошо понимают форматы docx, xlsx.

Терминал

Вместо стандартного терминала рекомендую использовать iTerm2 https://iterm2.com, он гораздо удобнее.

Архиватор

Я использую Keka. Платный, но понимает все необходимые форматы, работает шустро и со своей задачей справляется на ура.

macos