• Как правильно работать с ветками?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Для пет проекта достаточно 2 веток - master и dev:
    - master - работающий код, красивый, причесаный
    - dev - в нем ведется вся работа

    Нет смысла упарываться во всякие git flow, github flow и еже с ними. Над проектом работаешь ТОЛЬКО ТЫ, а значит делать надо как тебе удобнее.
    Думать об этом надо только если над одним проектом работает больше 1 человека.

    P.S. можно и одной веткой обойтись, но так удобнее откатываться и точно знаешь, что рабочий код не затронется
    Ответ написан
    Комментировать
  • Как перенести базу данных из СУБД Postgresql в MySQL?

    mikes
    @mikes
    может таки начать с https://developers.trueconf.com/api/server/ и перестать дергать таблицы с бд?
    Ответ написан
    Комментировать
  • Как правильно масштабировать Django с Kubernetes?

    @deliro
    Хочу такой вариант пропустить и сразу перейти к kubernetis

    "You think you do, but you don't"

    Знаю, что могу вынести DB и pgbouncer на отдельные сервера

    Чтобы увеличить RTT?

    Для поддержки кубика нужна целая выделенная команда, которая, помимо кубика, ещё настроит и будет поддерживать ёлку (ELK), какой-нибудь vault, графану, прометей, консул, докер реджистри, s3 (типа minio или seaweedfs, ведь контейнеры теперь stateless и хранить на них ничего нельзя) и кучу других сложных штук. Если у тебя нет сотни разработчиков в компании, то не нужно играть в гугл.

    Во-первых, какая у тебя нагрузка? Сколько тысяч запросов в секунду приходит и отмасштабировал ли ты вертикально и упёрся уже в потолок? gunicorn оптимально настроен? сколько процессов/потоков, какой тип воркеров? json парсишь и сериализуешь orjson'ом? Приложение профилировал?
    Во-вторых, 12 factor
    В-третьих, у базы есть реплики? read запросы раскидал на реплики? а редис? Действительно ли нужен zero downtime (это исходит из вопроса про нагрузку)

    Если тебе хочется просто поиграть, то поставь локально кубик, поиграй, погрусти и удали. Не нужно это тащить в прод, если нет на это необходимости. А если ты даже название kubernetes не можешь правильно написать, то он тебе не нужен.

    P.S. DRF — медленное нетипизированное говно, выкинь его
    Ответ написан
    5 комментариев
  • Можно ли как либо защитить php-проект от "угона" другим наёмным программистом (фрилансером)?

    @Shavadrius
    Как по мне не имеет большого смысла. Если ключевое "ноу-хау" в самой идее, то ее можно понять просто имея доступ к интерфейсу приложения. Если вся суть в каких-то хитрых алгоритмах, пайплайнах или расчетах - то их можно скрыть за микросервисом, как тут отмечали ранее.
    Больше влияет рейтинг, клиентура, реклама, продвижение, собственно, бренд. Аналогов всего и вся сотни, но знакомы многие только с единицами.
    Ответ написан
    1 комментарий
  • Почему Dockerfile видит одну переменную, но не видит вторую?

    Lynn
    @Lynn
    nginx, js, css
    https://docs.docker.com/engine/reference/builder/#...

    ARG объявленные до FROM попадают в global scope. И на практике их можно использовать напрямую только в FROM.
    Что бы их было видно внутри сборки их нужно заново объявить внутри сборки.

    # Arguments.
    ARG NGINX_VERSION
    ARG APP_CODE_PATH_CONTAINER
    
    # Install nginx.
    FROM nginx:${NGINX_VERSION}-alpine
    
    # Load scripts.
    COPY scripts/* /tmp/scripts/
    RUN chmod -R 777 /tmp/scripts/
    
    # объявляем ещё раз. Как можно ближе к реальному месту использования что бы не испортить кеширование директив выше.
    ARG APP_CODE_PATH_CONTAINER
    
    # Modify configuration.
    RUN /tmp/scripts/modify_config.sh /etc/nginx/conf.d/default.conf "__NGINX_ROOT" ${APP_CODE_PATH_CONTAINER};
    
    ...
    Ответ написан
    Комментировать
  • Как выбрать монитор для программиста?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Любой монитор.
    Не выкручивать яркость, а наоборот снизить.
    Вокруг монитора должно быть нормальное мягкое немерцающее освещение.
    Выбрать удобное для глаз масштабирование и размер шрифта. Не слишком маленький.
    Ответ написан
    Комментировать
  • Как обойти запрет на ip из России при docker build elasticsearch?

    akelsey
    @akelsey
    Забрать с https://hub.docker.com который не банит пока:
    docker pull elasticsearch:8.7.1
    Ответ написан
    Комментировать
  • Что приоритетнее в Linux (ubuntu): /etc/sysctl.conf или /proc/sys/net/ipv4/ip_forward?

    @pfg21
    ex-турист
    не равнозначны :)
    /proc/sys/net/ipv4/ip_forward - псевдофайл, напрямую меняющий параметр внутри ядра линукса.
    т.е. запись в файл сразу меняет поведение драйвера.

    /etc/sysctl.conf - это файл настроек для специальной утилиты sysctl, который используется для установления параметров ядра системы при загрузке.
    параметры из /etc/sysctl.conf в ядро попадают только при запуске sysctl.
    обычно при загрузке система разок запускается sysctl для установки параметров ядра.
    Ответ написан
    Комментировать
  • Как с помощью php можно работать с числами научной нотации типа 4.607e-12?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для PHP 8
    $value =  4.607e-12;
    printf('%.*f', max(8, 1 - (int)log10($value)), $value);
    // 0.000000000005

    Для старых версий
    printf('%.' . max(8, 1 - (int)log10($value)) . 'f', $value);
    Ответ написан
  • Зачем нужны объявления типов php?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Постараюсь объяснить на анти-примере.
    Ну вот допустим пришли вы на новое место работы, в котором какое-то время делают какой-то проект.
    Вам дают задачу вывести на фронт ранг пользователя.
    Вася Пупкин говорит, что уже написал метод для получения ранга пользователя - getUserRank и вам нужно просто использовать его. Вроде все хорошо, но вы открываете исходники и видите вот такую картину:
    (примеры абстрактные, написанные на коленке)
    class UserUtils {
       public function getUserRank($user) {
          // 20-30 строк кода
       }
    }

    Смотрите вы на этот метод и думаете:
    Что такое $user? Это строка с логином? Это id-шник? Это объект ORM?

    А что возвращает метод? Число? Объект ORM?

    И вместо-того, чтобы приступить непосредственно к реализации задачи, вы сидите и читаете Васин код, чтобы понять, что надо передавать.
    А если бы метод выглядел примерно так:
    class UserUtilsWithTypes {
       public function getUserRank(UserModel $user) : int {
          // code
    
       }
    }

    То вы бы сразу поняли, что $user это объект ORM, а метод возвращает метод число.
    Да, стоит добавить, что помимо объявления типа следует и имя аргумента указывать соответствующее его типу (например для bool часто вижу имена вроде $is_[что-то]), но речь сейчас не об этом.
    Ответ написан
    5 комментариев
  • Как увеличить лимиты открытых файлов для Mariadb?

    karabanov
    @karabanov Куратор тега Linux
    Системный администратор
    mkdir -p /etc/systemd/system/mariadb.service.d
    
    cat > /etc/systemd/system/mariadb.service.d/override.conf <<EOF
    LimitNOFILE=65535
    LimitMEMLOCK=65535
    EOF
    
    systemctl daemon-reload
    
    systemctl restart mariadb
    Ответ написан
    2 комментария
  • Что такое мидлвар простыми словами?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Применительно к симфони . хук повещенный на кернел.
    Применяется для выполнения дополнительных действий над реквестом до передачи его в контролер
    или над респонсом перед окончательным его выводом .
    https://symfony.com/doc/current/event_dispatcher/b...

    Но термина милдваре в явном виде Вы на сайте симфони не найдете. Это из лаверала
    https://laravel.com/docs/8.x/middleware
    Ответ написан
    1 комментарий
  • Можно ли восстановить данные с SSD?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    Можно ли восстановить данные с SSD?

    Да, но не самостоятельно.
    Как SATAFIRM 11 отображаются SSD построенные на основе контроллера Phison PS311. Это происходит из-за того, что у диска повреждена микропрограмма.

    Также возможен ремонт таких дисков посредством запуска Preformat (часто с уменьшением объёма), но это как достаточно неразумное занятие в целом (накопитель снова подведёт), так и противопоказанное вам - при ремонте содержимое теряется безвозвратно.

    Восстановить данные с такого ССД возможно, для этого надо загрузить лоадер, который загрузит диск в технологическом режиме. В нём можно создать "сырой" образ памяти, представляющий собой кашу из данных без трансляции. Транслятор в таком случае строится виртуально и используется при чтении.

    За всем этим нужно обращаться к специалисту с оборудованием и опытом. Если вы в Москве, будем рады помочь, контакты есть у меня в профиле.
    Если нет и пересылка не подходит, то выбирайте специализирующуюся на восстановлении данных компанию поблизости.

    GoodRam CX400

    Отдельно добавлю, что сильно откладывать не стоит. В подобных SSD используется память далеко не самого высокого качества. Через полтора-два месяца без нормального использования диска заряд в её ячейках может начать утекать, после чего все файлы начнут сильнее и сильнее покрываться "дырками". Так что оптимальным вариантом будет заняться этим вопросом в ближайшие недели, максимум - месяц.

    - P.S. -
    Не сообразил добавить это сразу, но ваш ССД - уже третий на Тостере с такой проблемой за последние 10 дней :-/
    Ответ написан
    5 комментариев
  • Почему скорость разных языков разная?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Допустим нам нужно сложить два числа - 2 и 3

    На ассемблере:
    Кладем 2 в регистр ax, 3 - в регистр bx, выполняем команду сложения регистров - в результате у нас в ax ответ.
    Грубо говоря - у нас выполнились всего 3 команды на уровне процессора.

    На С:
    Сохранили значения регистров, сделали инициализации, выполнили 3 предыдущих команды сложения - восстановили значения регистров. Потратили уже как минимум на несколько команд больше на регистры/инициализацию.

    Некий высокоуровневый язык с динамической типизацией:
    Взяли переменную, преобразовали в число. Взяли вторую переменную - преобразовали в число. Вызвали некий класс, который умеет складывать целые числа, числа с плавающей точкой, конкатенировать строки и т.п. Передали эти две наши переменные. Помимо собственно складывания чисел выполняются явные и неявные преобразования, выполняются проверки на исключения, вызываются методы классов, которые умеют делать много операций, и прочее, выполняются первоначальные инициализации, оптимизации на лету, сохранение регистров и т.п...
    То есть для задачи складывания чисел используется уже на порядок больше команд процессора.
    Ответ написан
    Комментировать
  • Что Microsoft TMG умеет такого, что не может MikroTik?

    Mikrotik - это в первую очередь роутер, функционал прокси-сервера там тоже есть, но достаточно скудный. А TMG - это именно прокси+файрвол, серверное решение, c интеграцией в AD, отчетами, и т.д., ориентированный именно на разграничение доступа и безопасность.
    Только вот поздновато вы про TMG вспомнили.
    "9 сентября 2012 Microsoft объявила о прекращении дальнейшего развития Forefront TMG. Основная поддержка будет прекращена после 14 апреля 2015 года, а расширенная поддержка закончится 14 апреля 2020 года. Продукт не будет доступен для приобретения после 1 декабря 2012 года[2]. На сегодняшний день доступен только в составе аппаратных решений OEM партнёров Microsoft. "
    Ответ написан
    Комментировать
  • Как получить json без индекса?

    olegbarabanov
    @olegbarabanov
    Программист, фрилансер (ИП)
    Согласно документации с php.net:
    При кодировании массива в случае, если его индексы не являются последовательными числами от нуля, то все индексы кодируются в строковые ключи для каждой пары индекс-значение.


    Поэтому просто добавьте перед json_encode строчку например с
    $arr = array_values($arr);
    Ответ написан
    Комментировать
  • Как правильно парсить сайты, чтобы не словить капчу?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Надо обратиться к владельцам сайта за нормальным доступом к данным, через API.
    Если такой доступ не дают, то не пытаться мелочь по карманам тырить, а найти себе более достойное занятие.
    Ответ написан
    6 комментариев
  • Пример развертывания проектов (CI/CD)?

    @vitaly_il1
    DevOps Consulting
    А вручную вы приложение умеете деплоить? Если да, то запишите по шагам как. Например:
    1) получить код из repository
    2) запустить static code analize
    3) security scanner
    4) unit tests

    И т.д.
    Если все прошло удачно - деплоим
    1) копируем
    2) конфигируем
    3) перегружаем
    4) проверяем

    Когда с этим разберетесь, читаете описания и примеры любой CI/CD и подгоняете под ваш сценарий.
    Ответ написан
    2 комментария
  • Как заблокировать доступ к сайтам в NGINX?

    @dodo512
    location / {
        proxy_pass http://backend;
    }
    
    location ~ ^/(smokeping|pgadmin4) {
        allow 192.168.11.0/25;
        deny all;
        
        proxy_pass http://backend;
    }
    Ответ написан
    1 комментарий