• Можно ли хранить mysql-базу на двух разных дисках?

    @metajiji
    Как вариант собрать диски в рейд. Есть ещё чит с шардированием, но это пентакилл.
    Но если сам мускль может работать с разным спейсами почему бы и нет это самое оно
  • Почему не устанавливается *buntu на старый Intel Atom нетбук?

    @metajiji
    Модель процессора в студию. У меня Eeepc 1000 на борту которого N270 и он 32 битный, а как известно убунтоиды прекратили выпуск таких сборок, остался единственный, но кривой lxde. Бро, мой совет, используй Федору :)
  • Съем трафика, возможно ли реализовать?

    @metajiji
    А зачем трафик на eth2? Ведь он ч тается прекрасно на eth1 или eth2, если он форвардится, просто интерфейсы в promisc и погнали читать все, что там бегает - tcpdump, ngrep и т.д.
    Если нужно трафик снимать и отправлять куда-то, то это уже что-то из разряда iptables tee(может потребовать кастомное ядро) на фрчзе в ipfw, если не ошибаюсь делается через fwd.

    Если с iptables не срослось, а траффик хочется у себя на десктопные почитать в wireshark, то можно через tcpdump + netcat и магию пайпов присесть вот так:
    on target hostname:
    root# tcpdump -i wlan0 -w -|nc -l 1234
    on your host:
    wireshark -k -i <(nc hostname 1234)
  • Какой Линукс лучше установить для веб-разработки?

    @metajiji
    sim3x, Это конечно круто, но слово нестабильный не вяжется с советами типа "рекомендую debian за его стабильность" ну и конечно же киллер фича всех дебиянов и всех его производных это `systemctl restart network` приводит к потере доступа к серверу. Да и персистентные настройки iptables через баш в файле interfaces вызывают негодование.
    Кстати когда советуют Ubuntu, почему-то все умалчивают, что нужно использовать LTS.
  • Использовать mysql в контейнере docker в продакшене или нет?

    @metajiji
    ⚡ Kotobotov ⚡, давай я тебе расскажу как это работает и ты поймешь :)
    Итак по порядку,
    1. Images - Образы. Они состоят из слоев - layers. Слои создаются при сборке образа, это когда ты пишешь docker build. Образ собирается из Dockerfile, 1 строка из этого файла = 1 слой, найти их можно в /var/lib/docker/images/
    2. Containers - Контейнеры. Они тоже состоят из слоев, но есть 1 нюанс, они состоят из image + 1 слой, который сейчас исполняется (runtime), /var/lib/docker/containers/, создаются контейнеры командой docker run или docker create. После создания контейнера файловая система собирается из слоев используя технологию overlay, даже если под капотом lvm, aufs или другие. Суть в том, что каждый последующий слой перекрывает файлы нижних слоев, runtime слой самый верхний.
    3. Мы уже поняли, что все Containers это почти image, но только находящиеся в runtime, так вот можно из контейнера создать image командой docker commit. А для этого нужно остановить контейнер выполнив docker stop, при вашем концепте работы все удалилось бы! И да, вопрос как ребутнуть сервер, не останавливая контейнеры? Ы?! Конечно же все это не так, команда docker stop никогда ничего не удаляет, удаляет только docker rm. Если после того, как у вас контейнер остановился и вы его не видите в docker ps это вовсе не значит, то контейнер был удален! docker ps - показывает только Running контейнеры, а ваш stopped контейнер можно найти так: docker ps -a, а потом запустить docker start, уверяю вас, файлы будут внутри целые - они живут в runtime слое, который кстати можно конвертировать в image, если это будет необходимо :)

    Выводы,
    Создаем контейнер с базой docker run -d --name db mysql
    Работаем с ним, а потом вдруг понимаем, что файлы-то от базы внутри контейнера, что делать? Все просто:
    docker stop db
    docker cp db:/var/lib/mysql /volumes/mysql-data
    docker stop db  # Файлы базы по прежнему живы.
    docker commit db mysql-bkp  # Это делать не обязательно, но вдруг что-то забыли еще скопировать
    docker rm db  # теперь файлы базы удалены, но у нас есть image с этими файлами.
    docker run -d --name db -v /volumes/mysql-data:/var/lib/mysql mysql

    И о чудо, в новом контейнере файлы базы на месте, просто магия какая-то :)

    Если все устраивает, то можно удалить образ со старым контейнером, который мы сделали на предыдущем шаге:
    docker rmi mysql-bkp

    Если вдруг выяснилось, что забыли скопировать, например /etc/my.cnf из контейнера, то делаем так:
    docker create --name mysql-old mysql-bkp  # создали контейнер, но не запустили
    docker cp mysql-old:/etc/my.cnf ~/my.cnf_old  # скопировали файл из контейнера на хост
    docker rm mysql-old  # Удалили контейнер

    Теперь у нас есть файл ~/my.cnf_old :)
  • Как сделать правильный выбор между C# и Java?

    @metajiji
    Скорее наоборот, на java можно сделать то, чего нельзя на C#. Например кроссплатформенное десктопное приложение или Android приложение =)

    Если рассматривать windows как платформу под которую разрабатывать, то лучше брать нативные решения - .Net, C#, C++ конечно же с применением winapi, все другие языки будут аутсайдерами.

    С другой стороны, если взглянуть на таких гигантов как IDEA и его производных, то можно сделать вывод, что GUI на java это не так уж и плохо.

    Кстати, если хочется какой-то язык с перспективой на Web разработку, то можно выбрать js, тем более хайповая штука, пиример гуёвого приложения - Atom, там кажись фреймворк Electron, но честно не уверен, что там чистый js.

    Есть еще golang кстати :)
  • Как внедрить html в php?

    @metajiji
    Используй конструкцию here doc
    Давно не писал рнр, но кажется оно делается так:

    $html <<< _EOF
    Тут твой html
    _EOF

    В поиске найдешь точнее:)
  • Какой Линукс лучше установить для веб-разработки?

    @metajiji
    roswell, у всех к них iptables, ufw/firewalld это чисто опционпльная вещь, типа как nano и vim, один из них может быть по умолчанию, но не обязательно пользоваться именно им, оно отключаемо/настраиваемо
  • Какой Линукс лучше установить для веб-разработки?

    @metajiji
    Рекомендую fedora, свежий софт, дада убунтоиды :) ну и конечно же в современном мире веба никуда без vpn, в fedora с этим все на высоте, из коробки рабочие плагины и для L2TP, на убунтах такого в принципе нет и не было, pptp, Openvpn. Всякие там докеры, свежие гиьв и похапэ тоже имеются без проблем, если что-то специыичное, то на fedora copr по-любому это уже есть.

    Из DE посоветовал бы kde, 3 гном уж слишком ограниченный какой-то, но вообще вопрос de на любителя, мне вот Unity нравится:)

    Debian и Centos не рекомендую для десктопа, мы же в 2018 году живём и софт нужен свежий, а разбираться со сборкой или не дай бог зависимостями пакетов и установкой нестабильных сторонних репозиториев в стабильный дистрибутив... Да зачем это все? За компом разработчик должен работать, а не чинить ос или собирать себе окружение из сорцов, мы же не в генту всё-таки:)
  • Использовать mysql в контейнере docker в продакшене или нет?

    @metajiji
    ⚡ Kotobotov ⚡, каждый день работаю с postges, mariadb и другими подобными демонами и проблем не имею ;)
  • Использовать mysql в контейнере docker в продакшене или нет?

    @metajiji
    ⚡ Kotobotov ⚡, ничего не пропадает при перезапусках. С чего вы взяли? У вас же при рестарте ос файлы не исчезают с дисков. :)
    А вот если удалить ос, то и файлы удалятся.
    Не вводите в заблуждение людей.
    Внутренности контейнера будут удалены, если их удалить, а удалить их можно удалив контейнер. Другими словами start/stop ничего не удаляет, а вот rm да ещё как удаляет. Для тех кто забыл про вольюмы есть несколько варианто, например docker stop, docker cp, docker run -v. Ну или не дай бог docker commit
  • Использовать mysql в контейнере docker в продакшене или нет?

    @metajiji
    Если решили все в докер, то почему бы и нет? В кубиках же деплоят и все тру.
    Оборачиваете каждый сайт в docker-conpose, 1 программа = 1 контейнер, а 1 сайт это ещё и 1 вольюм и 1 юзер сеть(docker link все никак не выпилят, но он уже deprecate) в общем все как в kubetnetes pods.
    Помните о вольюмах и ресурсах, больше серверов баз данных - больше потребление памяти.

    И важно, с докером вы получите крутой Профит в виде крайне быстрого старта окружения с фиксированными версиями. Но самое важное сможете все это тестировать локально или где вам удобно.
    Для автоматизации деплоя не обязательно docker-compose, можно и ansible/etc.

    Кстати nginx тоже не нужно ставить на хост, запускайте его в контейнере с опцией --net host, а конфигурации в фольюм, но думаю итак очевидно, что все генерируемые контейнером данные нужно складывать в вольюмы.
  • Возможно ли на клиенте прочитать текстовый файл?

    @metajiji
    iconv с багами, используйте mbstring.
    А вместо перекодировщика Лебедева рекомендую https://2cyr.com/decode/
    Ну и конечно же работать со строками как с байтами, еще стоит обратить внимание на настройки кодоровки веб сервера, чтобы он там не поломал ничего, если передаёте кюданные как строку. Как костыль можно упаковать, например в base64 а на сервере распаковать:) либо передавать как ascii js умеет такое.
  • Как настроить редирект с www на без www + HTTPS в Nginx?

    @metajiji
    Как правило у меня 1 vhost = 1 файл, и я всегда описываю в файле все server{} для этого vhost, указывая явно домен, так правда удобнее в будущем, хоть и приходится копировать одно и то же, но скопировать намного легче, чем разбираться, как это все унифицировать под все случаи жизни.

    Про именованные регулярки я имел ввиду нечто такое, т.к. с $1 могут быть проблемы:
    server {
        listen 80;
        server_name ~^www.(?<instance_server_name>.+)$;
        return 301 http://$instance_server_name$request_uri;
    }
    
    server {
        listen 443 ssl;
    
        include _ssl_pfs.conf;  # там все настройки для ssl, кроме сертификатов, когда много доменов это очень удобно.
        ssl_certificate /path/to/server.cert;
        ssl_certificate_key /path/to/server.key;
    
        server_name ~^www.(?<instance_server_name>.+)$;
        return 301 https://$instance_server_name$request_uri ;
    }


    Есть еще вариант с if и rewrite, если не хочется или нет возможности заморачиваться с сертификатами и server {} блоками.

    if ($host ~* ^www\.(.+)) {
                set $raw_domain $1;
                rewrite ^/(.*)$ $raw_domain/$1 permanent;
            }


    Но if is evil, как мы помним, но к сожалению бывает, что такие конструкции приходится использовать, например случай из практики, в kubernetes ingress доводилось такое делать, но для реврайта, который добавляет слеш в конце.

    Больше полезной инфы тут: https://www.nginx.com/resources/wiki/start/topics/...
  • Как настроить редирект с www на без www + HTTPS в Nginx?

    @metajiji
    Если сертификат подойдёт для всех доменов, то можно.
  • Почему копятся established connections?

    @metajiji
    Алексей: Я никогда не писал на Go, но подозреваю, что ответ где-то тут stackoverflow.com/questions/12741386/how-to-know-t...
  • Nginx redirect from http to https?

    @metajiji
    При условии, что на поддоменах не будет использоваться http протокол. Если вдруг на одном из них понадобится, то в таком случае будут проблемы и придется на все виртхосты делать по http серверу с редиректом.
  • Как сделать правильный редирект https Nginx/BitrixVM?

    @metajiji
    Возможно редирект срабатывает на стороне bitrix, где и указывается неверный протокол?
  • Как сделать правильный редирект https Nginx/BitrixVM?

    @metajiji
    Конфиги я бы привел в 1 файл к такому виду:
    server {
    listen 80;
    server_name test.com www.test.com;
    return 301 https://test.com$request_uri; # enforce https
    }
    server {
    listen 443 ssl;
    server_name www.test.com;
    return 301 https://test.com$request_uri;
    include bx/conf/ssl.conf; # Enable SSL connection
    }

    server {
    listen 443 ssl;
    server_name test.com;

    include bx/conf/ssl.conf; # Enable SSL connection
    server_name_in_redirect off;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host:443;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header HTTPS YES;

    set $proxyserver "127.0.0.1:8888";
    set $docroot "/home/bitrix/www";

    index index.php;
    root /home/bitrix/www;

    # Include parameters common to all websites
    include bx/conf/bitrix.conf;

    # Include server monitoring API's
    include bx/server_monitor.conf;
    }