• Как подключиться к registry?

    Singaporian
    @Singaporian
    Пожалуйста поправьте ошибку в заголовке. Я минуты три тупил, пока догадался, что ударение не на букву "ю". Это жутко злит.

    По теме:
    У Kubernetes нет никакого registry. Может вы имели ввиду какой-нибудь GKE, EKS или OpenShift?
    Ответ написан
  • Где искать инвестора на проект, что бы у меня не украли идею?

    Singaporian
    @Singaporian
    Слово "идея" - маркетинговый буллшит в мире стартапов. Нет у вас никакой идеи и ни у кого ее не было. Давайте разберемся с тем, что такое стартап и вы поймете, как и где защищать идею.
    Стартап - это проект (не обязательно новая компания, есть и стартапы в рамках крупных корпораций), который прокладывает новую бизнес-модель, которая раньше не существовала.
    Например, вы можете построить ресторан. И до вас стопицот других людей это сделали. То есть, основываясь на их опыте, вы можете просчитать риски и примерные доходы, рост. В стартапе вы первые (или параллельно с вами есть еще те, кто не закончил решение проблемы или не донес его до всех). Статистики для вас нет. Взлетит? Не взлетит? Никто не знает. Просчитывается очень мало, даже при соблюдении всех технологий и этапов роста.

    Теперь к идее: нет такого понятия. Вы можете сделать восхитительную штуку. Никто ее не купит, потому что ничего не заставит его сделать несколько лишних телодвижений, чтобы это получить. Потому что у клиента ничего не болит. Потому что это будет игрушка на день, как программа Google Earth или типа того.

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

    Поэтому, прежде, чем начинать тратить деньги, стартапер сначала проверяет есть ли такая проблема и нужно ли такое решение (этап Customer Development).

    А теперь скажите, что у вас там воровать, если добрая сотня человек сегодня бьется над решением этой проблемы?

    Вот давайте посмотрим. Не говорите свою идею. Скажите только какую проблему нужно решить. И мы вместе посмотрим, не решена ли она уже. Потому что именно это и будут смотреть инвесторы.
    Ответ написан
  • Как построить конвейер сайтов на Ruby On Rails? Подходит ли RoR вообще?

    Singaporian
    @Singaporian
    Так, давайте отделим мух от котлет.

    Задач я тут вижу две:
    1. Какую платформу использовать
    2. Как деплоить

    Причем вторая зависит от первой, поэтому решать надо в той же последовательности.

    Итак,
    1: Выборов три:
    1. a. Server lease (когда вы просто арендуете конкретный выделенный или виртуальный сервер у провайдера)
    2. b. IaaS (например, AWS EC2) - то же самое, что "1.a", но можно мгновенно создавать и удалять
    3. c. PaaS (например, AWS BeansTalk, OpenShift, CloudFoundry) - когда вы вообще абстрагированы от понятия "сервер" и оперируете понятиями "ресурс".

    Выбор тут основывается на вашем кошельке (чем ниже - тем дороже) и знаниях (чем ниже - тем проще).

    2: Пришло время деплоить.
    Если у вас PaaS, то вопрос деплоя хорошо покрыт в их инструкциях - и у каждого по своему.
    Если у вас сервер, то лучше деплоить докером (а точнее docker compose). Делается это следующим образом. Сначала разбиваете свой сервис на максимально атомарные микро-сервисы.
    Например, у вас получились: само приложение (RoR + sidekiq), PostgreSQL, Redis.
    Соответственно, вы делаете три контейнера. Все три контейнера вы описываете в в файле docker-compose.yml
    Но тут есть одно но. В то время, как PostgreSQL и Redis вы можете взять стандартные - и эти контейнеры уже готовы, то свой RoR вам нужно каждый раз доделывать. Ведь в нем могли измениться зависимости или что-то еще. Поэтому в docker-compose.yml вы один из контейнеров описываете со словом "build ." - это значит, что docker compose не будет пытаться его стягивать из интернета, а найдет файл Dockerfile и, согласно ему, построит имедж самостоятельно. А уже в этом имедже будет что-то типа:

    # Please keep same version as in Gemfile (https://hub.docker.com/r/library/ruby/)
    FROM ruby:2.3.4
    
    ENV RACK_ENV development
    
    COPY . /usr/share/website
    
    WORKDIR /usr/share/website
    RUN bundle install
    
    CMD ["/usr/share/website/run_rails.sh", "/usr/share/website"]


    В файле run_rails.sh будет что-то типа:
    #!/bin/bash
    
    cd $( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
    export RACK_ENV=development
    export SECRET_KEY_BASE=266a11dc19acc67107064dfddcecb4187545a08b35bd9a847c7b53545be22dbd8d115036024fcfc659f5936ba4a5df9a7d2a937797fv9d7v9fv7v97e9f430ff
    
    bundle install
    
    bundle exec rake db:migrate db:seed
    bundle exec rake assets:precompile
    
    find /usr/local/bundle -name guard
    bundle exec foreman start --procfile Procfile.dev --port 8080


    А сам docker-compose.yml будет похож на:
    version: '3'
    
    services:
        pg:
            image: postgres:9.6
            environment:
                - PGDATA=/var/lib/postgresql/data
                - POSTGRES_DB=project_db_dev
                - POSTGRES_USER=project_user
                - POSTGRES_PASSWORD=project_password
            volumes:
                - ${PG_DATA_DIR}:/var/lib/postgresql
            ports:
                - 5432:5432
    
        rd:
            image: redis:4.0
            ports:
                - 6379:6379
    
        ws:
            build: .
            volumes:
                - .:/usr/share/website
            ports:
                - 8080:8080
            depends_on:
                - pg
                - rd

    Обратите внимание, что данные PostgreSQL находятся не на самом имедже - иначе их можно потерять при обновлении или удалении сервера.

    Вот и вся ваша проблема.
    Ответ написан
  • Направление для развития в DevOps администрировании?

    Singaporian
    @Singaporian
    Администрирование - это Ops. DevOps не администрирует.
    Более того, DevOps не привязан к типу операционной системы никак. Часть кода может быть на Линукс, часть на Винде, разработчики на Маках - зоопарк всегда будет роскошный.
    Учитесь понимать принципы работы ОС, а не учите ее. Начать проще с Линукса. Виндоус очень сложен в плане ДевОпса.
    Ответ написан
  • Использование нелицензированного ПО в организации, кто несёт ответственность?

    Singaporian
    @Singaporian
    Вы ответственны только за установку. То, что поставили до вас - не ваша ответственность. Вам хватит достаточно скромных денег на адвоката, который докажет, что не вы это ставили (это можно увидеть в любой ОС, когда ее поставили: wmic os get installdate)

    Но для вас это шанс перевести все на Линукс и получить хороший опыт. Лучше думайте об этом.
    Ответ написан
  • Как правильно настроить пути для Golang в Windows?

    Singaporian
    @Singaporian
    Представьте на секунду, что у вас есть 5 проектов и три из них используют одну и ту же библиотеку, но разных версий. Как вы поставите три библиотеки разных версий в один GOPATH?
    Вот именно поэтому изобрели dependency managment. Самый лучший на сегодня (и это не IMHO!) - gb. Он поставит зависимости в директорию vendor конкретного проекта.
    Ответ написан
  • Своя панель управления веб-сервером как реализовать связь с файлами системы?

    Singaporian
    @Singaporian
    Есть три варианта, как это сделать:
    1. Создать данные нового виртхоста в нейтральном месте (SQL, MQ, key-val storage или временный файл).
    По крону или через судо-скрипт запустить импорт этих данных в файл + последующее удаление, если импорт был успешен.

    2. При установке панели сделать postinstall скрипт, который создает директорию, принадлежающую www-data в /etc/nginx/virtualhosts/ - тогда рут не понадобится.

    3. Не держать виртхоты в этом месте вообще. А держать их в SQL или LDAP.
    Последнее вообще является, пожалуй, самым элегантным путем, потому что позволит дальше перейти на Zero-configuration подход (будет у вас масштабирование красивое, по уму).
    Ответ написан
  • Перезагружется хост Proxmox, как найти причину?

    Singaporian
    @Singaporian
    При выключенном Cron проблема повторяется? В других логах еще есть что-то?
    Я бы посоветовал вам отсылать dmesg по сети, чтобы увидеть. что было "при жизни" за секунду до падения.
    Ответ написан
  • Книги по программированию в Linux?

    Singaporian
    @Singaporian
    Из вопроса не понятен ваш бэкграунд. От него надо отткаливаться.
    Но в общем и целом я бы посоветовал вам разбить задачу на два шага. Сначала научиться админить Линукс на уверенном уровне (если плотно заниматься, то уйдет не более месяца). А потом уже начать программировать.
    Ответ написан
  • Как собрать установочный пакет на Linux для Linux?

    Singaporian
    @Singaporian
    Смотрите, если нужна прям полная автоматизация, что PIP не самый удобный вариант. Вам придется перейти на пакеты, стандартные для операционной системы (.deb, .rpm, ...).
    В таком случае даже сами пакеты Python лучше всего переделать в стандартные пакеты. Сделать это очень легко:
    pip install stdeb
    (пример для пакета django-haystack)
    /usr/local/bin/pypi-install django-haystack --release=2.6.1 --verbose=5 --keep

    А дальше уже просто зависимости ставите в debian/control (или какой там файл у других ОС).

    Но я бы начал на вашем месте с внимательного прочтения этой статьи о dh-virtualenv
    Ответ написан
  • Как увеличить лимиты открытых файлов(сокетов) для go программы?

    Singaporian
    @Singaporian
    Но это же костыльное решение. Сколько можно увеличивать лимиты? Не правильнее ли разобраться, откуда столько открытых дескрипторов одновременно?
    Ответ написан
  • Почему многиие ИТ компании в основном из США?

    Singaporian
    @Singaporian
    Давайте все аргументы разберем по полочкам:

    1. В штатах люди талантливее.
    Неправда. В страну въезжает десяток чернорабочих азиатов на одного талантливого европейца. Соотношения гениев к дуракам не меняется. Прибывает лишь абсолютное число. Но об этом второй пункт.

    2. В штатах больше толковых.
    Это всего лишь следствие. Люди туда поехали потому, что Штаты выиграли борьбу за трудовые ресурсы. Но как выиграли? Вот как выиграли - это есть первопричина, о ней позже. А сами таланты - лишь следствие.

    3. Там лучше экономические условия.
    Тоже следствие чего-то, что было заложено ранее.

    4. В штатах лучше инфраструктура.
    Опять же - следствие.

    А вот первопричины:
    1. Штаты - государство искуственного отбора. Оно целиком и полностью сформировано из людей, которые способны поднять задницу и что-то изменить. Или их детей/внуков/правнуков, впитавщих этот подход.
    Еще раз: не талант, не интеллект. Воля! Мотивация!

    2. За исключением того, что породил первый пункт, Штаты участвовали в гонке вооружений дважды: во времена Второй Мировой и во времена Холодной войны с СССР. А военка всегда двигает вперед коммерческую ИТ часть (еще примеры: Израиль и Германия). Почти все достижения в ИТ приходят из ВПК по началу и уж потом ИТ начинает функционировать самостоятельно. В СССР могло быть тоже самое, но был неподходящий для этого экономический строй.

    3. У США неплохое географическое положение, дающее возможность не быть измотанными войнами. Конечно им тоже досталось от Мексики и Японии, но в целом все могло быть и хуже - как у Европейцев, которые вообще не успевают поднять голову и живут от войны до войны (хотя отсутствие этнических военных формирований внутри самих Штатов - тоже следствие психологии американцев).

    4. Язык каждого предпренимателя и рядового сотрудника в США - лингва франка. Это дает огромные перимущества в психологической готовности покорять чужие рынки.

    5. Победив однажды, потом побеждаешь всегда. США уже самые сильные. И все, что создано в других странах, становится американским через merge&acquisition, чем еще сильнее финансово усиляет победителя. Переломить ситуацию можно только собравшись всеми странами и изолировав самого сильного игрока. Но, в таком случае, появится новый самый сильный игрок и ситуация повторится.
    Ответ написан
  • Почему phpstorm при подключение по SFTP выдает ошибку?

    Singaporian
    @Singaporian
    Вас сервер отпиннул по какой-то причине. Точная ошибка должна быть на стороне сервера. Ищите в районе файла /var/log/auth.log
    Ответ написан
  • Мне 30 лет, кем в IT можно стать за месяц (не троллинг, просьба отнестись серьезно)?

    Singaporian
    @Singaporian
    Мужик, просто забудь, что тебе 30 лет. Тупо возьми и забудь. Эта цифра не значит ничего. Особенно в мире ИТ, где любой опыт старше 5-ти лет обнуляется - программиста с 5-ти летним опытом Python vs. программист с 5-ти летним опытом на Python и 20 лет на Fortran - одно и тоже.
    Ответ написан
  • Просветите по современным сервисам сбора и мониторинга логов, что выбрать с пользой и без ущерба карману?

    Singaporian
    @Singaporian
    Половину из списка можно сразу выкинуть. Например Kibana занимается визуализацией логов, а не сбором. В ELK стэке для этого служит Logstash. А Blackfire - инструмент для перфоманс-тестирования + метрики.

    Дальше нужно определиться, где вы хотите разместить сервис. Если в облаке, то New Relic, Loggly и Logentries остаются в списке (если ваш сервис на AWS, то добавляется CloudWatch), но из него уходят LogStash и GrayLog2. Но если хотите держать сервис у себя, ваш дальнейший выбор только между LogStash и GrayLog2.
    В первом случае у вас продолжение поисков -- на следующем этапе уже встает вопрос цены продукта.

    =====
    "Так же интересно чтобы можно было собирать логи ошибок nginx/mysql/postgres, не требовало особых плясок с бубном"

    Все три сервиса написаны на C-lang. Это значит, что, в отличии от Java, они не будут выкидывать ужасные стэктрейсы на 100500 строк, а всегда будут укладываться в 1024 символа. Именно этот предел есть у стандартного syslog. Поэтому пусть они и дальше пишут в syslog, а уже в нем вы настроете куда редиректить логи дальше. Таким образом вам не надо будет при смене сервиса сбора логов бегать по всем нджинкасам и постгрессам и менять настройки - достаточно будет поменять в одном месте, в syslog.
    Но! Если будет Java приложение, то такое не пройдет и вам потребуется что-то типа GELF, чтобы успешно доставить полный размер exception.
    Ответ написан
  • Правильный подход к установке программ в Linux?

    Singaporian
    @Singaporian
    Всему свой уровень. Если ваше приложение требует очень качественного и сложного апгрейда, даунгрейда, удаления и хэндлинга непредвиденных ситуаций - тут без вариантов пакеты .rpm, .deb и так далее.
    Но в данном случае речь идет о рабочем окружении для себя, где OS-specific пакеты будут оверинженирингом. В домашних условиях самое удобное будет так:
    Vagrant разворачивает новую машину
    Vagrant запускает Ansible
    Ansible все настраивает. Что он делает - сами по месту поймете. Он может и Docker развернуть и Git-репо стянуть и как угодно вообще приложение установить.
    Ответ написан