• Sudo: add-apt-repository: command not found. Что делать?

    @a_alexeev
    sudo apt-get install software-properties-common python-software-properties
    Ответ написан
    Комментировать
  • Задержка переключения раскладки в Windows

    Ekimmu
    @Ekimmu
    копался с такой же проблемой по всему реестру на предмет дилея, наткнулся на это:

    HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response
    параметр DelayBeforeAcceptance.

    по умолчанию стоит 1000, влепил 200. вроде помогло)
    Ответ написан
    5 комментариев
  • Возможно ли на AngularJS написать полноценную 2D игру под Android?

    Вот сейчас сам пишу клон хексболла с нормальной физикой и на вэбсокетах.
    Да, rtmfp было бы круче, но фтопку.

    Angular.js'a мало для такого.
    Помимо его использую newton и raphael.
    Но можно использовать kinetic.
    box2d и libcanvas успели морально устареть.

    Есть свои сложности с поддержкой различных расширений и хорошей масштабируемости.
    Нужно разобраться с процедурной генерацией тайлов через 9-patch и текстур по приципу цикады. Не все SVG одинаково полезны для телефонов, сложные сцены нужно отдельно пререндерить на стороне сервера в растр.
    Ответ написан
    Комментировать
  • Как настроить mysql в Docker?

    kumaxim
    @kumaxim
    Web-программист
    Начинаешь разрабатывать проект #1, создаешь под него каталог с двумя вложенными подкаталогами src и db
    Ты уже установить docker-compose? Если нет, то сделать этого. Мой docker-compose.yml:
    version: '3.1'
    
    services:
      db:
        image: mariadb:10.2
        restart: on-failure
        ports:
          - "3306:3306"
        volumes:
          - ./db:/var/lib/mysql
        environment:
          MYSQL_ROOT_PASSWORD: your_root_pass_here
          MYSQL_DATABASE: db_name_here
          MYSQL_USER: db_user_here
          MYSQL_PASSWORD: user_pass_here
      nginx:
        image: nginx
        restart: on-failure
        ports:
          - "80:80"
        links:
          - wordpress:php-fpm-server
        depends_on:
          - wordpress
        volumes:
          - $HOME/DDK/nginx-default.conf:/etc/nginx/conf.d/default.conf:ro
          - ./development/src:/var/www/html:ro
      wordpress:
        image: php:5.6-fpm
        restart: on-failure
        links:
          - db:mysql
        depends_on:
          - db
        expose:
          - "9000"
          - "9900"
        volumes:
          - /mnt/bindfs/fire-cacher-dv1:/var/www/html


    Далее у тебя встанет проблема, файлы на твоей хостовой машине будут создаваться от пользователя www-data. Единственный вменяемый способ пофиксить это без сильных танцев с бубном - bindfs. Я использую следующую строку в fstab для монтирования:
    /home/user/Project/fire-cache/development/src	/mnt/bindfs/fire-cacher-dv1	fuse.bindfs	force-user=www-data,force-group=www-data,create-for-user=user,create-for-group=user,perms=0000:u+rwD:g+rD:o+rD	0	0


    Все создал? ОК, запускай docker-compose up -d и останавливай после окончания работы docker-compose stop. Проект закончен? Значит docker-compose down -v

    Вот это ты повторяешь каждый раз при старте нового проекта. Если есть еще какие-то вопросы по существу - пиши в комменты.
    Ответ написан
    5 комментариев
  • Стоит ли использовать Docker на продакшене?

    @de1m
    У нас пять серверов в hetzner и несколько больших во внутреней сети, на них на всех крутяться контейнеры для разных вещей(mysql, mssql, bind, openvpn, etc). Начали со всем этим, где-то года три назад. Проблемы были, но небольшие и они уже исправлены, последние где-то месяцев 10 я ничего не вспомню.
    Если вы хотите CI/CD, то смотрите в сторону kubernetes. Его главный плюс, что можно всем управлять через API. Мы к этой идеи тоже пришли и я буквально неделю назад закончил установку kubernetes'а на трех серверах у hetzner и начал туда переводить наши сервисы.
    У докера я вижу два главных преимушества:
    1. Очень чёткое разделение между данными и системой. Выводишь нужные данные на volumes и делаешь с них бэкапы. Если сервер сгорел, заливаешь образы для docker'а и накатываешь данные и готово.
    2. Повторяемость окружения.
    Ответ написан
    Комментировать
  • Как правильно использовать Docker для веб разработки?

    zvd
    @zvd
    Software developer interesting in DevOps
    Добрый день.
    Все, как вы их назвали, «задачи» должны быть по разным контейнерам.

    1. Что брать за базовый образ?
    Что используете то и берите. Используете в работе Debian? Берите Debian ( https://registry.hub.docker.com/_/debian/ )
    2. Чтобы создать свой базовый образ который будете в дальнейшем использовать для приложения, вот вам пример Dockerfile:
    #
    # MyBaseimage Dockerfile
    #
    
    # Pull base image.
    FROM ubuntu:14.04
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    RUN apt-get update
    RUN apt-get upgrade -y
    
    RUN apt-get install -y language-pack-en
    ENV LANGUAGE en_US.UTF-8
    ENV LANG en_US.UTF-8
    ENV LC_ALL en_US.UTF-8
    
    RUN locale-gen en_US.UTF-8
    RUN dpkg-reconfigure locales
    
    RUN echo "Etc/UTC" > /etc/timezone
    RUN dpkg-reconfigure -f noninteractive tzdata
    
    RUN apt-get install -y build-essential
    RUN apt-get install -y python python-dev python-setuptools python-pip python-virtualenv
    RUN apt-get install -y libxml2-dev wget
    RUN apt-get install -y libpcre3
    RUN apt-get install -y libpcre3-dev
    RUN apt-get install -y libssl-dev
    RUN apt-get install -y libncurses5-dev
    RUN apt-get install -y git git-core
    RUN apt-get install -y libpq-dev
    
    # install nginx
    RUN apt-get install -y software-properties-common python-software-properties
    RUN apt-get update

    Собрать image в директории где у вас лежит Dockerfile
    docker build -t your_docker_account/your_baseimage .

    3. Dockerfile для сборки вашего образа уже с приложением
    #
    # MyApp Dockerfile
    #
    
    # Pull base image.
    FROM your_docker_account/your_baseimage
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    # Set instructions on build.
    RUN virtualenv /env
    ADD ./ /code
    
    RUN cd /code; /env/bin/python setup.py install
    RUN cp /code/config/config.yml.docker_example /etc/code/config.yml
    
    # Expose ports.
    EXPOSE 8484
    WORKDIR /code
    CMD ["/env/bin/python", "app.py"]

    4. Собрать образ с приложением
    docker build -t your_docker_account/your_app_container .

    5. Запустить контейнер с БД, в качестве примера PostgreSQL
    docker run -p :5432:5432 --name my_postgresdb_container -e POSTGRESQL_DB=mydb_name -e POSTGRESQL_USER=mydb_user -e POSTGRESQL_PASS=super_secret_password -d kamui/postgresql

    для mariadb аналонично, контейнеры ищем здесь: https://registry.hub.docker.com/
    6. Запустить контейнер с вашим приложением, пример:
    docker run -d -p :5000:5000 \
      --name my_app_container \
      --link my_postgresdb_container:postgresdb \
      -e DOCKERDB_ENV_POSTGRESQL_DB=mydb_name \
      -e DOCKERDB_ENV_POSTGRESQL_USER=mydb_user \
      -e DOCKERDB_ENV_POSTGRESQL_PASS=super_secret_password \
      your_docker_account/your_app_container

    7. Подключиться к запущенному контейнеру с приложением
    docker exec -it your_app_container /bin/bash
    8. Читать stdout запущенного приложения в контейнере
    docker logs -f your_app_container

    + Чтобы автоматизировать запуск всех необходимых контейнеров берите Docker Compose ( https://docs.docker.com/compose/ )
    Пример файла конфигурации:
    your_app:
      build: .
      links:
        - postgresdb
      ports:
        - "5000:5000"
      environment:
        DOCKERDB_ENV_POSTGRESQL_DB: mydb_name
        DOCKERDB_ENV_POSTGRESQL_USER: mydb_user
        DOCKERDB_ENV_POSTGRESQL_PASS: super_secret_password
    postgresdb:
      image: kamui/postgresql
      ports:
        - "5432:5432"
      environment:
        POSTGRESQL_DB: mydb_name
        POSTGRESQL_USER: mydb_user
        POSTGRESQL_PASS: super_secret_password

    И теперь вместо пунктов 5 + 6 где мы запускали контейнеры мы можем всё стартануть одной командой
    docker-compose up

    + можно смонтировать код в контейнер и разрабатывать непосредственно в docker'контейнере.
    Надеюсь чем-то вам помог.
    Ответ написан
    3 комментария
  • Fillable laravel?

    Alex_Wells
    @Alex_Wells
    PHP/TS/Kotlin developer
    Эти фишки Ларавеля нужны только для очень простых rest проектов. В реальной жизни они не то что не нужны, а даже мешают, так-как create часто вызывается из разных мест и с разными параметрами. Лучше создать BaseModel, поставить $guarded = false и не париться на счет $fillable и $guarded. Так что тут либо использовать validor + $request->only, либо чуть модифицированный Request, и от него уже все остальные наследовать. А в нем метод по типу "$request->neededFields()" который отдает только нужные поля, основываясь на array_keys($validationArray)

    Надеюсь понятно. В двух словах: не используй эту хренотень.
    Ответ написан
    3 комментария
  • Какие http коды ошибок возвращать?

    А почему нельзя все время посылать 200 OK? Ведь запрос успешный, просто в ответ на запрос отправляйте собственные коды ошибок, просто число, а не код ответа http.
    Например 101 авторизация удалась, 102 неправильный пароль. 103 такой логин не зарегистрирован в системе...
    Ответ написан
    5 комментариев
  • Какие http коды ошибок возвращать?

    OnYourLips
    @OnYourLips
    Нет ресурса - 404
    Не авторизован - 401
    Авторизован, но доступа нет - 403

    Получаешь ресурс - 200
    Создал ресурс и отдаешь его - 201
    Создал ресурс и не отдаешь - 204
    Удалил русурс - 204
    Некореектные данные ресурса при создании/обновлении 422

    Ошибка скрипта или его внешних зависимостей - 500
    Ответ написан
    Комментировать
  • Какие http коды ошибок возвращать?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Есть 2 точки зрения.
    Классический REST говорит что надо отдавать ошибки в http кодах сервера.
    На практике занимались разработкой api под мобильные приложения несколько лет и столкнулись с тем, что многие библиотеки используемые для работы с апи на мобильных приложениях:
    а) хреново работают с любым заголовком отличным от 200
    b) хреново работают с любыми методами отличными от GET/POST

    В итоге пришли к следующему решению (кусок из внутренней документации):
    84e91208aadc415ea342aa6f822275ea.png
    где code 400 говорит о том что серверу не нравятся какие то данные в запросе, error_code говорит о том что именно не нравится (почта, пароль итд - список свой в каждом методе api)
    Ответ написан
    Комментировать
  • Зачем использовать Vue вместе с Laravel?

    Tantacula
    @Tantacula
    Ларавельщик, витающий в небесах.
    Добавили, чтобы вы jquery спагетти не использовали. Vue (как и другие js фреймворки) сокращает количество кода на клиенте и уменьшает его запутанность.

    Для примера вы создаете админку для магазина. У вас есть следующие варианты:
    1. Делать статическую страницу. На клиенте никакой логики, все вычисляет сервер. При новой покупке администратор должен будет обновить страницу.
    2. Писать динамический фронтэнд с использованием vue, angular и чего угодно остального. Бэкэнд шлет вам уведомления через вэбсокеты о новых заказах без перезагрузки страницы.
    2.1 Вы берете jquery и сначала все идет хорошо. Первые полчаса. Затем ваш код обрастает огромным количеством обработчиков событий. Если товар заканчивается на складе, его надо убрать из таблицы, затем если заказ отменяется, его надо вернуть в таблицу. Вы его вернули, но почему-то кнопка в строке с ним, вызывающая модальное окно перестала реагировать на события, потом еще что-то случилось и еще. Проблемы с jquery растут как снежный ком и вы проклинаете свое решение создать динамическую админку.
    2.2 Вы используете современный js фреймворк. Vue в этом плане хорош низким порогом изучения. Вы загружаете определенные обхекты и в зависимости от их свойств vue сам строит таблицы (с проданными и непроданными товарами), скрывает лишние элементы (не показывать такую-то кнопку, если товар всего 1), отправляет плагинам команды на обновление при изменении объектов и следит за тем, чтобы события, которые отваливались при jquery подходе работали.

    Я не сказать что спец в javascript, но (именно поэтому) меня vuejs на текущем проекте очень выручает.
    Ответ написан
    Комментировать
  • Как получить первую работу на upwork?

    lunaticman
    @lunaticman
    Дерзкий айтишник
    Привет.

    Я успешно забустил свой профайл на Апворке до 80 баксов в час (сейчас я уже апворком не пользуюсь), порекомендовал свою систему други друзьям которые удачно нашли проекты потом. Поэтому постараюсь коротенько объяснить:

    - Первый проект тяжелее всего найти, я искал около месяца.
    - Нужно искать что-то "безопасное", проект который не займет у вас много времени и которые вы уверены что сделаете.
    - Советую даже не думать о почасовых работах, шанс крайне маленький.
    - Если у вас есть возможность, попросите кого то из существующих клиентов нанять вас (либо просто дайте им сто баксов, чтобы они вам якобы оплатили вашу работу).
    - На апворке есть несколько "прайм таймов" - периоды в которые появляются новая работа, я обычно мониторил работу пару часов в день. Не стоит тратить на "охоту" много времени. :)
    - Отказаться от любых шаблонов письм, я рекомендую как наниматель , шаблонные письма видно сразу - доверия не вызывает.
    - Попробуйте записать видео в качестве cover letter - только это вам поможет выгодно отличится в ряду других кандитатов
    - Выделите самые важные элементы в предложении о работе и объясните как вы их хотите изящно решить. В конце предложите обсудить все требования, задайте какие-то наводящие вопросы, дайте советы (нужно чтобы ваш клиент, узнал что-то новое от вас). То что вы сразу по описанию составляете план работ и архитектуру - без каких-либо уточнений и вопросов - звучит крайне фантастично.
    Ответ написан
    21 комментарий
  • Как запустить PHPUnit в laravel (windows 10, openserver)?

    @theEternalStudent Автор вопроса
    Решение. Нужно выполнить "vendor\bin\phpunit"
    Ответ написан
    2 комментария
  • Как реализуется SPA-приложение, на примере Vue.js?

    @game802 Автор вопроса
    Дали ответ на другом ресурсе, может быть кому пригодится:
    1. Да, на нем пишут как простые штуки таки и полноценные SPA, навигация работает без презагрузки.
    2. Nuxt js это сборка (VueJS + VueRouter и т.д.) которая делает Рендеринг SPA приложения на стороне сервера. Зачем он это делает? - все очень просто. SPA приложения неиндексируются поисковыми ботами из-за своей асинхронности и JS, NuxtJS решает эту проблему, делая рендер на стороне сервера (выполняет все асинхронные действия например запрос к бекенду по REST, и возвращает отрендеренный HTML)
    3. SSR (серверный рендеринг), генерирует ту страницу которую запросил пользователь например: example.ru/item/12, в данном случае SSR спросит у бэкенда Item с id = 12 , и затем сгенерирует и вернет клиенту HTML. В конце HTML документа всегда подключен файл вашего SPA приложения, который исполнится и включит реактивность. Т.е. Получается что первый запрос к сереверу это отрендеренный SSR, а все остальные переходы по приложению это уже SPA
    4. Да, просто ставите NuxtJS и наслаждаетесь разработкой.
    5. Взаимодействует через REST, делая GET|POST запросы на ваш бекенд. Либо через socket. Используйте laravel 5 как бэкенд
    6. Vuex это централизованное хранилище данных. предназначено для того чтобы жёстко отделять данные от view. Все данные хранятся в едином экземпляре, и если происходит set (мутация) для какого-либо значения в хранилище, то во всех местах где был get этого значения, произойдёт обновление.
    Этим обеспечивается реактивность, сайт перестаёт быть просто страницей. Он если хотите "обретает душу"

    Иногда в простых админках я создаю всего один основной action который делает т.н. getAllState, т.е. Берет все состояние относительно пользователя у бекенда. Например берет объекты user, comments, posts. Billing, messages и пишет это в хранилище.
    И когда мне надо обновить данные, я опять вызываю getAllState который обновит хранилище, в это время автоматически вызовется цепочка геттеров/сеттеров и вот тут сработает магия vue. Он сравнит текущий отрендеренный DOM с Новым Virtual DOM. И если где то будут различия он перерендерит этот кусок.

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

    Автор: Евгений Рюмин
    Ответ написан
    4 комментария
  • Как из сайта сделать android приложение?

    blackrid
    @blackrid
    Стараюсь узнать всё понемногу
    Попробуйте плагин https://github.com/apache/cordova-plugin-inappbrowser
    Ну и, если сайт под мобилки не ориентирован, придется поработать со стилями и кодом.
    Или определять USER-AGENT и открывать другую, облегченную копию сайта.

    $useragent = strtolower($_SERVER[ 'HTTP_USER_AGENT' ]);
    if (preg_match('/windows\s*ce|iphone|ipod|ipad|android|palm|symbos|symbianos|mobi|minimo/', $useragent)) {
    // значит, загружено с мобилки
    }
    Ответ написан
    Комментировать
  • Chrome и сброс select через jQuery

    Antelle
    @Antelle
    Я бы так сделал:
    $("#select").val($("#select option:first").val());
    Ответ написан
    Комментировать
  • Какие css сетки используете вы и почему?

    @Diffins
    Smart-grid.
    Отличная поддержка и невероятно удобное использование.
    Минус: нет документации, нужно самому разбираться, но оно того стоит. Автор проводит платные курсы, потому и нет документации.
    Ответ написан
  • Как эффективно использовать GIT одному человеку в разных проектах?

    compilator
    @compilator
    Java developer
    Возьмите за правило, что когда вы пишете новый функционал - всегда отводить новую ветку от основной. В основной у вас будет лежать код, который на данный момент работает на продакшене.

    Тоесть, у вас есть проект. Надо реализовать новую фичу шифрования, например. Вы отводите ветку от основной
    git checkout -b feature/encryption

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

    git clone - выкачать репозиторий
    git pull – получение изменений из удаленного репозитория
    git checkout - переключиться на ветку
    git checkout –b - отведение новой ветки от текущей с переключением на нее
    git add – добавление файлов в индекс
    git commit –m ‘’ – коммит с комментарием
    git push origin - пуш закоммиченных изменений в удаленный репозиторий origin
    git branch –d - локальное удаление ветки
    git stash save –keep-index + git stash drop – локальное удаление изменений в отслеживаемых файлах
    Ответ написан
    3 комментария
  • Какие есть интересные сайты со статьями на тему Frontend?

    @DmitrySkripkin
    Вот то, что читает наша команда:

    frontender.info — краудсорс-перевод полезных западных материалов.
    https://vk.com/webstandards_ru — крупное русско-язычное VK-сообщество с чатом, новостями и конференциями.
    https://radiojs.ru/ — подкаст о веб-разработке.
    frontflip.me — ещё один подкаст о веб-разработке.
    https://css-tricks.com/ — полезный ресурс со статьями и полезными решениями по вёрстке и коду.
    https://codyhouse.co/ — набор сниппетов.
    https://twitter.com/dan_abramov— твиттер русскоязычного разработчика React в команде Facebook.
    https://twitter.com/addyosmani — твиттер разработчика в Evil Martians и автора PostCSS. 18+.
    https://twitter.com/addyosmani — твиттер участника команды Google Chrome, создающего Developers Tools.
    https://twitter.com/paul_irish — твиттер ещё одного участника команды Google Chrome, создающего Developers Tools.
    https://github.com/talgautb/frontenders — небольшой список фронтенд-разработчиков, за которыми стоит следить.
    www.2ality.com — Блог о JS.

    Я вам скопипастил раздел из вот этой публикации в помощь коллегам: https://livetyping.com/ru/blog/front-end-dev-requi...
    Ответ написан
    1 комментарий