Найдено 14 статьи по слову "cto"

Роль 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.

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


Если поломался pip на macOS

Например, ругается на zlib, хотя он установлен:

      File "/usr/local/Cellar/python@3.7/3.7.9_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/distutils/command/build_ext.py", line 340, in run
      File "/private/var/folders/3r/04yr8dd57896ccmx1f86ptnr0000gn/T/pip-install-lmm5ssql/Pillow/setup.py", line 694, in build_extensions
        raise RequiredDependencyException(f)
    __main__.RequiredDependencyException: zlib

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/3r/04yr8dd57896ccmx1f86ptnr0000gn/T/pip-install-lmm5ssql/Pillow/setup.py", line 918, in <module>
        raise RequiredDependencyException(msg)

    The headers or library files could not be found for zlib,
    a required dependency when compiling Pillow from source.

    Please see the install instructions at:

То можно сделать следующее:

python3 -m pip install --user --force-reinstall pip

После этого у меня все установилось. Если не поможет - то можно понизить версию python через brew и не забывайте про brew doctor.


Не получается собрать React Native приложение под Android после обновления до x64

  1. Запускаем Android Studio.
  2. Ждем индексацию.
  3. Ставим выделение на Gradle Scripts.
  4. Выбираем в меню Refactor -> Migrate to AndroidX…
  5. Жмем кнопку Migrate.
  6. Сохраняем бекап-архив где-нибудь.
  7. Ждем выполнение операции миграции.
  8. Жмем Do Refactor.
  9. Ожидаем окончания.
  10. Пробуем собрать привычным способом.
react native

Reverse proxy на Apache 2

Внезапно, да? В 2019 то году. Ну, вдруг пригодится для Django или еще чего на каком-нибудь супер древнем или супер странном сервере:

<VirtualHost *:80>
        ServerAdmin info@example.com
        DocumentRoot /var/www/example/
        ServerName example.ru
        ErrorLog /var/log/apache2/example.error.log
        CustomLog /var/log/apache2/example.access.log common

        Alias /robots.txt /var/www/example/static/robots.txt
        Alias /favicon.ico /var/www/example/static/favicon.ico

        Alias /media/ /var/www/example/media/
        Alias /static/ /var/www/example/static/

        <Directory /var/www/example/static>
                Require all granted

        <Directory /var/www/example/media>
                Require all granted

        ProxyPreserveHost On
        ProxyPass /

devops nginx

Как поднять собственный socks5 сервер на базе Tor

Может пригодиться для работы в заблокированном в РФ telegram.

Файл docker-compose.yml:

version: '3'

    image: connectical/tor
      - '9050:9050'
      - ./tor/cfg:/etc/tor
      - ./tor/data:/var/lib/tor

Файл up.sh (в той же директории):


mkdir -p ./tor/cfg ./tor/data
sudo echo 'SOCKSPort'$'\n''DataDirectory /var/lib/tor' > ./tor/cfg/torrc
sudo chown 100:100 ./tor/data
sudo docker-compose up -d

Добавляем возможность запуска для up.sh и запускаем его:

$ chmod +x up.sh
$ ./up.sh

Как установить сам докер можно почитать здесь https://crusat.ru/blog/21-ustanovka-docker-i-docker-compose-v-odnu-stroku/

bash docker linux

ERROR: could not access file “$libdir/postgis-2.4”: No such file or directory

Встретил такую ошибку. Использовал образ https://hub.docker.com/r/mdillon/postgis

Выяснилось, что образ обновил postgis до версии 2.5 (2.4 был полностью убран).

Чтобы все починить, просто выполните команду внутри контейнера /usr/local/bin/update-postgis.sh - это обновит postgis с версии 2.4 до версии 2.5 внутри вашего контейнера. Возможно, придется перезагрузить его, но у меня все заработало.

devops docker postgresql

Размер содержимого директорий bash

Вывести директории и их размеры в отсортированном виде по убыванию

du -s /my/directory/path/* | sort -nr

Вывести директории и их размеры в человекопонятном стиле

du -sh /my/directory/path/
bash copypaste

Поиск файлов с помощью bash

Найти файлы рекурсивно, начиная с текущей папки, с текстом “my_text”

egrep -ir --include=*.* "(my_text)" .

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

find /my/directory/path -type f -mtime -3

Найти последние измененные файлы в указанной директории рекурсивно (10 шт.)

find /my/directory/path/ -type f -printf '%T@ %p\0' | sort -zk 1nr | sed -z 's/^[^ ]* //' | tr '\0' '\n' | head -n 10

Найти рекурсивно все файлы с размером 0, начиная с текущей директории

find ./ -size 0 -print
bash copypaste

Автоматическое создание виртуального хоста в Apache2 на Linux

В данном случае использовалась Ubuntu.

Чтобы автоматически создать виртуальный хост в Apache2, вы можете использовать bash-скрипт. Для этого создайте файл (например, vhost_creator.sh) и вставьте в него следующее содержимое:

echo "Creating Virtual Host"
cd /etc/apache2/sites-available
cat <<EOF >> "$1.conf"
<VirtualHost *:80>
ServerName $1
ServerAlias www.$1
DocumentRoot "/var/www/$1"
<Directory "/var/www/$1">
allow from all
Options +Indexes
mkdir "/var/www/$1"
cd /etc/apache2/sites-enabled
ln -s "/etc/apache2/sites-available/$1.conf" "$1.conf"
echo "Editing /etc/hosts"
cat <<EOF >> "/etc/hosts" $1
echo "Set permissions"
chown -R "$2:$2" "/var/www/$1"
echo "Restarting Apache2"
/etc/init.d/apache2 restart
echo "Finished!"
echo "Local address: /var/www/$1"
echo "Web address: http://$1"

Сделайте файл исполняемым и запустите его от имени root’а:

$ chmod a+x ./vhost_creator.sh
$ sudo ./vhost_creator.sh your_vhost your_login

your_vhost — название виртуального хоста, например test.local или mysite.ru (заходить на него вы будете по адресу http://test.local или http://mysite.ru).
your_login — ваша основная учетная запись, например crusat. Этот параметр требуется для установки прав владельца на корневую директорию виртуального хоста.

Последнюю версию данного приложения, вы можете найти на https://github.com/crusat/vhostcreator


Настраиваем виртуальные хосты в apache2

<span>1.</span> Переходим в /etc/apache2/sites-available
<span>2.</span> Создаем файл example.local.conf
<span>3.</span> Вставляем свои данные:

<VirtualHost *:80>
    ServerName example.local
    ServerAlias www.example.local
    DocumentRoot "/var/www/example"
    <Directory "/var/www/example">
        allow from all
        Options +Indexes

<span>4.</span> Переходим в каталог /etc/apache2/sites-enabled
<span>5.</span> Создаем ссылку на файл example.local.conf

$ sudo ln -s /etc/apache2/sites-available/example.local.conf example.local.conf

<span>6.</span> Перезапускаем апач:

$ sudo /etc/init.d/apache2 restart

<span>7.</span> Редактируем файл /etc/hosts и добавляем следующую строку: example.local

P.S. Если у вас появляется 500 ошибка, то рекомендую посмотреть логи апача (возможно, у вас не включен mod_rewrite или еще что-либо):

$ tail -f /var/log/apache2/error.log