• Как сделать, чтобы header во flatlist не уходил вниз при pull-to-refresh?

    @davidnum95
    Запилил пример как это можно реализовать с помощью Animated и парочки костылей:
    https://github.com/davidnum/FlatListExample
    Ответ написан
    1 комментарий
  • Как выполнить команду в новой командной строке?

    @MrBrainop
    Начал изучать html, Python и QT Designer
    Перед командой напиши start
    import os
    os.system("start команда")
    Ответ написан
    1 комментарий
  • Как создать "локальную" сеть между удаленными ПК?

    @Drno
    Поднять vpn сервер на каком то из ПК (наверно проще на VPS)
    Остальными ПК подключиться к нему как клиент.
    Настроить маршруты)
    Ответ написан
    Комментировать
  • На чем лучше писать современный интернет магазин?

    @NinjaNickName
    Web разработчик
    Как правильно уже заметил Владимир Коротенко, нужно отталкиваться от технического задания и писать на том, что лучше всего знаете.

    Сейчас выбор достаточно большой, есть много готовых решений, условно можно разделить все варианты реализации на следующие:
    • Коробочное решение
    • Облачное решение
    • Решение на фреймворке

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

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

    В вашем случае сложно что-то советовать т.к. не хватает данных по ТЗ, но могу однозначно сказать, что из облачных решений ничего лучше Shopify, на текущий момент нет (по крайнем мере, пока не запустится getOpen.Store), но там вопрос соблюдения 152-ФЗ, если вы планируете работать в РФ.

    Bitrix не смотря на большой технический долг и устаревшую архитектуру пользуется весьма большой популярность и на самом деле, в некоторых случаях является не плохим решением, но если рассматривать тяжеловесов, то можно посмотреть и в сторону UMI, я правда с ней не сталкивался, поэтому предлагаю только как вариант для рассмотрения.

    Весьма не плохими решениями так же являются OpenCart и CS-Cart.
    PrestaShop категорически не рекомендую, внешне выглядит симпатично, но под капотом там не лучше WP, по той же причине не рекомендую и WP (WordPress+WooCommerce), даже в самых смелых фантазиях я не могу понять, как можно выбрать это вариант для реализации интернет-магазина, это не поддается логике и абсолютно за гранью моего понимания.
    Ответ написан
    Комментировать
  • Как можно узнать свой уровень в конкретном ЯП?

    @Tiberal
    Считайте всегда, что все очень плохо знаете. Не нужно давать себе расслабиться!
    Ответ написан
    Комментировать
  • Стоит ли использовать aws, и если да, то как?

    inf
    @inf
    DevOps Engineer
    AWS это облако промышленного уровня. Соответственно, чтобы ощутить преимущества, нужны приложения соответствующего класса.
    Для хостинга приложения подойдёт обычный ЕС2. Если совсем заморочиться можно грузить статические файлы на S3 и раздавать через cdn cloudfront.
    Если "я у мамы инженер", то можно настроить Application Load Balancer, автоскейлинг инстансов ес2 и наслаждаться отказоустойчивой архитектурой)) Но стоимость инсталляции возможно несколько раз превысит смысл её существования.
    Ответ написан
    Комментировать
  • Как должна быть устроена аутентификация в SPA-приложении на Laravel+Vue?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Используйте либу Socialite + socialiteproviders. При редиректе они вам отдадут юзера нужной соц. сети. Делаете все что хотите с этими данными, айдишку можете либо записать, либо выкинуть. Дальше все как и обычно, с пасспортом или без.
    Ответ написан
    Комментировать
  • Как правильно организовать разработку на Laravel + Docker?

    hostadmin
    @hostadmin
    Тоже методом тыка изучал аналогичную связку (правда с Yii2). В итоге получилась такая конфигурация:
    1. Контейнер Nginx (дефолтный)
    2. Контейнер с certbot (получать сертификаты)
    3. Контейнер PHP-FPM с запуском очередей (черзе supervisord), composer'ом
    4. Контейнер CRON для запуска всяких задач
    5. Контейнер с postfix+dkim для руления почтой
    6. Контейнер для NAT'а трафика по IPv6

    Пока вся разработка летит в мастер-ветку git. Выгрузка из "разработки" на сервак происходит с помощью Deployer. В принципе, после настройки всё работает как часы.

    Код лежит отдельно от контейнера. Деплоить код в контейнере это уже другой уровень (да и совсем это не стандартная практика), лично у меня пока не было необходимости.

    Задача была, чтобы максимально просто можно было переехать на другой хост, с правкой одного конфига (.env файла).

    ПС. Самый гемор с контейнерами, это чёртовы права на файлы между хостом и контейнером.
    Ответ написан
    3 комментария
  • Как правильно организовать разработку на Laravel + Docker?

    @andrei_pro
    Вот как пример docker-compose.yaml в корень проекта с ларой.

    version: '2'
    services:
    
      app:
        build:
          context: ./docker/services/app
          dockerfile: ./Dockerfile
        working_dir: /var/www
        volumes:
          - ./:/var/www
        env_file: ./.env
        depends_on:
          - mysql
        restart: always
    
      routine:
        build:
          context: ./docker/services/routine
          dockerfile: ./Dockerfile
        working_dir: /var/www
        volumes_from:
          - app
        env_file: ./.env
        depends_on:
        - app
        restart: always
    
      web:
        build:
          context: ./docker/services/web
          dockerfile: ./Dockerfile
        working_dir: /var/www
        ports:
          - 80:80
          - 443:443
        restart: always
        volumes_from:
          - app
    
      mysql:
        image: mysql:5.7
        volumes:
          - mysql-db:/var/lib/mysql
        environment:
          - "MYSQL_ROOT_PASSWORD=rootpass"
          - "MYSQL_DATABASE=db"
          - "MYSQL_USER=user"
          - "MYSQL_PASSWORD=pass"
        restart: always
        ports:
          - 3306:3306
    
    volumes:
      mysql-db:
        driver: local


    Дальше нужно создать папки в docker/services и там папки с Dockerfile и конфигом.

    Как пример app в нем композер и нода для билда (это не тру подход, но можно юзать. Нужно все в отдельные контейнеры):
    FROM php:7.1-fpm
    
    RUN apt-get update \
        && apt-get install -y \
            git gnupg ssh cron nano supervisor \
            libmcrypt-dev libfreetype6-dev libjpeg62-turbo-dev libpq-dev \
            libjpeg-dev libpng-dev zlib1g-dev libmagickwand-dev --no-install-recommends \
        && pecl install imagick \
        && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
        && docker-php-ext-enable imagick \
        && docker-php-ext-install gd mcrypt mbstring pdo pdo_mysql pdo_pgsql zip bcmath
    
    RUN cd ~ \
        && curl -sL https://deb.nodesource.com/setup_10.x | bash - \
        && apt-get install -y nodejs \
        && apt-get install -y build-essential
    
    RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer


    mysql:
    FROM mysql

    И другие контейнеры web там конфиг nginx, routine там имидж от app для выполнения тасков из очереди.
    Ответ написан
    5 комментариев
  • Как правильно организовать разработку на Laravel + Docker?

    У вас маленький проект и полноценный CI/CD к нему применить сложно - мало смысла в контейниризации, если нет необходимости скейлиться, балансировать и обеспечивать выживаемость сервиса. Разработка должна идти с использованием связки контейнеров с nginx, php-fpm, redis, postgresql и т.д. - при локальной разработке всё помещается в docker-compose.

    В проде - в вашем случае можно обойтись просто docker или с использованием того же docker-compose. В больших проектах на проде будет, например, kubernetes, nomad или docker swarm. Все контейнеры деплоятся и конфигурируются единожды. Ваш CI/CD должен собирать контейнер на основе alpine и php-fpm (для PHP) или nodejs (для nodejs, соответственно) с вашим проектом, желательно в пару стейджей для минимизации размеров окончательного образа, т.к. не нужен вам в проде композер, git, yarn, npm и прочие промежуточные штуки. И уже этот минимальный контейнер уезжает на прод.
    Ответ написан
    5 комментариев
  • Как авторизоваться ВК посредством CURl и PHP?

    catanfa
    @catanfa
    есть библиотека для PHP для получения авторизационной куки remixsid https://github.com/biganfa/vk-auth
    Ответ написан
    Комментировать
  • Как лучше реализовать процесс-демон в Laravel?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Правильно это сделать очередью. Задание выполнилось, вернулось назад в очередь с задержкой в n секунд, выполнилось, вернулось... ну вы поняли. Не очень понятно, зачем «процессе, который будет запущен всегда», но слушателя очереди можно запускать в режиме демона.

    Или это можно сделать планировщиком. Степень правильности штука субъективная...
    Ответ написан
    2 комментария
  • Актуально ли изучать nodejs для бекенда или лучше оставаться на php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Изучать надо программирование.
    Все эти вопросы, "Какую машину лучше учиться водить - Рено или Фольксваген?" - это детский сад, честное слово.
    Если для вас потолок - это несколько десятков встроенных функций одного языка, то всё равно что учить - ковыряться помаленьку можно на любом.
    Программист же мыслит не инструкциями, а алгоритмами, паттернами, потоками данных, структурами объектов, шинами сообщений. На каком языке это все реализуется - не принципиально.
    Ответ написан
    2 комментария
  • Правильный подход к тестированию в приложениях на php?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Сначала нужно определять граничные случаи и выбирать тест внутри этих диапазонов.
    Например в вашем случае используется два целых числа:
    1. Даст ли метод верный ответ, если одно или оба числа отрицательные или равны нулю
    2. Даст ли метод верный ответ, если в процессе произойдёт переполнение переменной
    Остальное можно придумать в зависимости от декларации и кода метода.
    Поэтому вполне можно проверить пары:
    5, 19
    -5, -19
    5, -19
    -5, 19
    0, 19
    5, 0
    16874681246, 1254781628

    если все тесты будут пройдены, то с большой вероятностью другие пары так же дадут верный результат.
    Ответ написан
    Комментировать
  • Правильный подход к тестированию в приложениях на php?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    coverage говорит о покрытии тестами конкретных строк. Если во время прогона тестов не были затронуты какие-то строки исходного кода, то coverage будет менее 100%. В среднем считается что хорошее покрытие это > 80%. 100% достичь слишком трудно и дорого (и не нужно).

    > И если я напишу еще 1000 такого типа тестов это лишь будет гарантировать, что всё хорошо на этих 1000 наборах данных, а вдруг ошибка как раз в другом, 1001-м наборе?

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

    Из интересного:

    * property-based testing https://en.wikipedia.org/wiki/QuickCheck
    * bdd behat.org/en/latest/guides.html
    * browser tests https://codeception.com/
    * как писать тесты (концептуальная история) https://ru.hexlet.io/blog/posts/how-to-test-code
    Ответ написан
    2 комментария
  • Свой редактор кода на java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Вас может это удивить, но желательно знать теорию трансляторов. Чтобы редактор работал не с текстом, а именно с кодом, вам нужно будет написать как минимум лексер, парсер и статический анализатор.
    Ответ написан
    Комментировать
  • Какие Android API стоит включать в приложение? Стоит ли включать все?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Не совсем понятно, при чём здесь список API.
    Нужно просто указать minSdkVersion. Принято, что minSdkVersion должна быть хотя бы 17. Та же Android Studio на этапе создания проекта показывает количество поддерживаемых устройств в процентах, либо берите это с официального сайта https://developer.android.com/about/dashboards/
    Далее, вы должны исследовать, какие фичи андроида из более новых версий вам понадобятся (кастомизация уведомлений, например, которые в более ранних версиях не поддерживаются), а также учтите, что некоторые подключаемые библиотеки потребуют определённые версии Android Sdk.
    Взвесив все "за" и "против" выставляете свой minSdkVersion и наслаждаетесь потом отзывами юзеров в духе "А на моём андроиде 4.2 это не работает", "у меня сони, андроид 6.0 и прога вылетает..."
    То, что заводится на одном 4.4 не всегда будет работать на другом точно таком же андроиде, но от другого производителя. Разные производители делают свои глючные оболочки...
    Ответ написан
    Комментировать
  • Как разделять версии API REST?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Зевая...
    Сейчас вас тут научат микросервисам. Ага.


    Ваша проблема в том, что приложение изначально ненадежно. Первое, что в таком случае нужно сделать, это запускать несколько копий приложения, если такое позволяет архитектура.
    Поскольку у вас будет несколько запущенных копий приложения, вам потребуется балансировщик, чтобы управлять трафиком. Самый простой и дешевый - это nginx.
    Например тупо запустить 2 копии приложения на одной машине, но на разных портах, например 8001 и 8002. А при настройке nginx указать два апстрима, первый с портом 8001, а второй 8002. И настроить отвал по таймауту (fail_timeout). Таймаут зависит от того, насколько быстро работает ваше приложение. У меня он 1 секунда, у вас может быть другое значение.

    Для того, чтобы внезапно сдохшее приложение воскрешать, нужно поставить какой-нибудь супервизор, например тот же forever.

    Обычно нода падает из-за катяхов в коде, жора памяти или отвала какой-нибудь фигни. Для того, чтобы за всем этим следить, следует поставить хоть какой-нибудь мониторинг ошибок. Например бесплатный sentry.

    ЗЫ для любителей микросервисов: микросервисы не делают вашу архитектуру более устойчивой. Они делают ее более гибкой за счет замены одной реализации микросервиса другой. Например, у вас есть датацентр А, в котором вы храните файлы, которые сохраняются через микросервис. Внезапно там кишильбе-мишельбе-молния ударила, сервира уронила, файлы потеряло. Мат-перемат. Запиливается на коленке микросервис для датацентра Б, приложение перенастраивается. Полетели. Потом раскапывается из хлама бэкап, пишется скрипт, заливается в новый датацентр. Микросервисы хороши пока они микро. Микро понятие своеобразное, для меня оно означает - могу запилить за день в одиночку. Примеры: хранилка файлов, постановка задач в очередь, укорачивалка ссылок, счетчик переходов и т.п.

    Опиум для народа
    Ответ написан
    Комментировать
  • Хороший фреймворк для разработки бота?

    tomnolane
    @tomnolane
    профессиональный разработчик
    botman на данный момент самый "лучший" (ИМХО), ибо не очень большой выбор. В целом, он не плох (если) хорошо изучить документацию. Я, например, ВК драйвер недавно сделал для него (скоро залью на гитхаб). Проблемы только с Телеграмм - если использовать сервер из РФ, он работать не будет. А так, в целом, очень неплохой. Лучше, я пока не встречал

    п.с. до него я написал трёх ботов "в ручную" (для ВК, Фейсбук и Web). Работают норм, но больше похоже на "костыли", и не очень удобно. А в botman "Hello world" в 39 строк кода, у меня выглядит так:
    <?php
    require_once 'vendor/autoload.php';
    
    use BotMan\BotMan\BotMan;
    use BotMan\BotMan\BotManFactory;
    use BotMan\BotMan\Drivers\DriverManager;
    use BotMan\BotMan\Cache\CodeIgniterCache;
    
    $config = [
        'facebook' => [
          'token' => 'EAAZAT6dcgYDQBAC6x7X******85SLSPF0BRCVeRPPgutgtfvZCkZC9lxnP5pYcRXtF0m7sOAliTEztGPR45cOxx3rZAMZBc9Mb9UhB62gBSG2kXTo7ldyk2fTquadMJQVY8nqKxiOakLXLUZBCSavncCljoe5IAZDZD',
          'app_secret' => 'b52517e****71b6afa76dca657',
          'verification'=>'my_example_veryfy_token',
        ],
        "vkontakte" => [
           "token" => "9af81c610faf0ea319*****d17b0b2b53b164ff3b18cc1b9d4e422fd15db046594139078"
        ],
        'telegram' => [
            'token' => '60176***:****fVCz43IblR72siiyfbebv7wgqCn8tc'
        ]
    ];
    
    DriverManager::loadDriver(\BotMan\Drivers\Vkontakte\VkontakteDriver::class);
    DriverManager::loadDriver(\BotMan\Drivers\Facebook\FacebookDriver::class);
    DriverManager::loadDriver(\BotMan\Drivers\Telegram\TelegramDriver::class); 
    
    $this->load->driver('cache');
    
    $botman = BotManFactory::create($config, new CodeIgniterCache($this->cache->file)); 
    
    $botman->hears('привет', function (BotMan $bot) {
        $bot->reply('Хай.');
    });
    
    $botman->fallback(function($bot) {
        $bot->reply('Чё ??? ...');
    });
    
    $botman->listen();


    UPD
    на этом фреймворке возможны проблемы с русским языком (кодировкой).
    Чтобы её решить, нужно использовать iconv
    iconv('utf-8', 'windows-1251', тут_ваш_ответ_сервера);
    Ответ написан
    1 комментарий