• Как админу не грубить пользователям?

    OrlovEvgeny
    @OrlovEvgeny
    golang developer / DevOps
    Ну ты сам позволил сесть тебе на шею.
    - Потрать неделю времени распечатай простенькие мануалы для юзеров по всяким био-проблемам вроде, отжатого DND, забитой очереди печати, не работающего кондиционера, перегоревшей лампочки, сломанного стула (НУ ОН ЖЕ КОМПЬЮТЕРНЫЙ АГА), и так далее.

    - Выполняй только свои обязанности, с просьбами от бухгалтеров с 10 летнем стажем помочь им сделать табличку в excel, воткнуть флешку с ЭЦП для банковских платежек, вспомнить ее пароль от 1с, сварить кофе, помассировать варикозные ноги. Сразу шлешь куда надо, а если надуваются как рыба-шар говоришь что-бы писала служебное письмо с просьбой выполнить тебе ее должностные обязанности.

    - Если у тебя еще не стоит в компании AD, то самое время.

    - Если ты не хочешь свичнуться в вебдев то зачем ты самостоятельно пишешь хелпдеск?. Ставь готовые решения которые уже с проработанным UX, юзеры меньше будут тупить куда нажимать и где писать.

    Конечно тебя будут скорее всего не очень то и любить, но работая не в ИТ компании сисом сложно вообще добиться такого что-бы твой труд и время одновременно уважался и ты не был объектом чей либо ненависти за спиной. Так что либо на тебе ездят все вокруг, либо ты выставляешь четкие границы и выполняешь свою работу.
    Ответ написан
  • Как интересно рассказать о профессии программиста детям младшей школы?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    - Ну что, щеглы, майнкрафт видели?
    - Ага!
    - Программистами сделан.
    Ответ написан
  • Критерии реляционной бд?

    sarapinit
    @sarapinit
    Точу водой камень
    Это очень странно. Ваш преподаватель руководствуется каким-то своим определением реляционной бд. Классическое определение говорит что реляционная бд - бд использующая реляционную модель. А реляционная модель - модель описания данных которая поддерживает описание отношений (relations) между типами данных.
    Я могу описать, например, биологические виды реляционной моделью, у меня будут таблицы «семейства», «роды», «царства» и т.д. Таким образом я опишу структуру биологических видов, отношения между разными уровнями. Но я не буду описывать никакой процесс.
    Ваш преподаватель на какой-то своей волне. Попросите его дать определение реляционной БД и пример такой БД. И сделайте задание по аналогии. Переубеждать человека бессмысленно.
    Я бы посоветовал искать учителей, которые имеют реальный опыт работы в IT. А тех которые имеют опыт лишь в псевдоинтеллектуальном анонизме, обходить стороной и не давать портить себе мозг.
    Ответ написан
  • Мотивация программистов на удаленке. Что делать?

    Sanes
    @Sanes
    4 часа на задачи и 1 час на менеджмент. Итого 25 часов в неделю.
    Всё, что больше, либо обман, либо скоро этот работник уйдет в запой. Из-за высокой нагрузки.

    ps. Я бы фултайм ограничил 5-6 часами. Толку всё равно не будет от 8 часов и более.

    Попробуйте сократить время рабочего дня и регламентировать перерывы. Наверняка тоже самое будут чекать.
    Сейчас они от усталости балду гоняют и ждут окончания рабочего дня.
    Ответ написан
  • Верно ли я определил ошибку развития и её решение?

    DevMan
    @DevMan Куратор тега IT-образование
    3 вариант. и то при условии более-менее нормальной конторы.

    1 и 2 - топтание на месте. может конечно стрельнуть, но у очень целеустремлённых людей.

    Проблема - мне не хватает 100-200 часов на js, чтобы задачи, которые я сейчас криво выполняю за 5 часов, я выполнял за 20-30 минут. Но мне нужен постоянный заработок, а с учётом того, что я только начинаю - свободного месяца у меня нет.
    это не проблема. на самом деле тут 2 проблемы:
    1. неверная оценка сроков. тут ни что не поможет, кроме опыта (да и он лажает частенько).
    2. неумение распоряжаться временем: простая арифметика - в году примерно 52 недели, выделяя на обучение 2 часа в неделю вы получите свои 100 часов за год, а выделяя 4 часа в неделю, вы получите свои 200 часов за год.
    по факту будет меньше, ибо каждая решенная по работе задача так же качает скил.
    Ответ написан
  • Какое направление в IT может подойти к требованиям?

    Желание принимать желание, ну это тебе в ген.директора, однозначно
    Ответ написан
  • Какую выбрать сферу в IT с нуля когда тебе "под 40"?

    php666
    @php666
    PHP-макака
    никакую

    мне 37, твой ровесник, карьера и менеджмент никогда не интересовали - остался в роли исполнителя.
    был бы я руководителем или просто ответственным за проект - я бы не рассматривал на должность человека 37 лет без опыта. даже на джуниор позицию.
    ибо твой возраст и метание лишь показатель, что ты сам не знаешь что хочешь от жизни и профессионалом так и не стал ни в какой сфере.
    в чем твое преимущество будет перед человеком 29-30 лет с таким же набором знаний? минусы как таковые - в возрасте, плюсов - нет.
    когда ты дорастешь хотя бы в вебе, где, как ты говоришь, "низкий порог входа" (а это совсем не так), тебе будет 40 лет.
    возраст, когда другие люди уже сворачивают горы, ты будешь сидеть веб-макакой с коллективом двадцатилетних юношей и понимать всю свою ущербность, а они будут смотреть на тебя как на престарелого психопата.

    Напомню что хочется через год хотя бы 20-30к дохода в месяц иметь.
    в Москве за 20 000 в месяц даже таджики не работают. Устройся в такси или грузоперевозки и не ломай себе голову этой ерундой, нужны бесконечные годы на обучение в IT и нужно "постоянно бежать, что бы идти". Оно тебе надо?
    Ответ написан
  • Самый простой способ реализовать real time MySQL (без firebase!) базу данных для маленького приложения?

    @xfg
    Базу данных можно выбрать любую. Она не играет роли в realtime приложениях. Позвольте вам немного объяснить. Для передачи данных между клиентом и сервером в браузере существует всего два протокола. HTTP и Websocket. Firebase не магия и также использует их. Если браузером не поддерживается Websocket, то firebase откатывается на HTTP. Используя общераспространенный подход к разработке на PHP у вас не получится использовать websocket протокол поскольку типичные PHP приложения не живут дольше 1 запроса. Соответственно да, в таком варианте остается только ajax. Но точно также работает и firebase если в браузере нет поддержки websocket, так работает facebook, telegram и много всего остального. Они используют long-polling. Клиент отправляет запрос к скрипту на сервер, скрипт в цикле опрашивает хранилище mysql или более продвинутый вариант mysql+redis (чтобы не грузить запросами mysql) и пока данных не будет, цикл так и продолжит крутиться, для клиента это просто выглядит как повисший запрос к серверу. Как только данные появляются, они отправляются на клиент, соединение разрывается, а клиент сразу же отправляет новый запрос.

    Есть развитие этой идеи. Называется HTTP Streaming. Отличие от long-polling в том, что после отправки данных клиенту соединение не разрывается, а сервер продолжает отправлять последующие данные по этому же соединению. Соединение разрывается по таймауту. Минус в том, что прокси-сервера могут кешировать небольшие пакеты данных и данные нужно раздувать например пробелами, чтобы пакет данных достигал минимального размера и был способен пробить кеш прокси-сервера. Плюс в том, что если у вас данные для клиента появляются скажем с переодичностью раз в секунду, то не будет происходить постоянного открытия-закрытия соединения как при long-polling.

    Есть вариант, когда можно реализовать небольшую прослойку на socket.io. Ваше PHP приложение пишет данные для клиента например в redis. Приложение на socket.io подписывается на redis. Когда PHP что-то отправляет в redis, то socket.io мгновенно об этом узнает и рассылает это событие по websocket протоколу всем подключенным клиентам. Минусы. Раздуваете стек. Нет консистентности данных между записью в основное хранилище (mysql/postgre/mongo/etc) и redis. Соответственно может возникнуть ситуация, когда данные записали, но в redis событие не ушло. Поменяете местами, будет наоборот, событие есть, данных в базе нет.

    Вариантов в целом очень много. Всё это называется Comet. Вам проще всего реализовать long-polling.

    А реал-тайм база, которая умела пушить данные клиенту по tcp протоколу (но не в браузер) была и называлась она rethinkdb.com. Ныне не развивается. IP в России заблокирован. На сайт можно сходить по VPN.
    Ответ написан
  • Что делать, когда умеешь программировать, но нет идей?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Открываешь upwork, ищешь подробно описанные заказы, реализуешь их.
    Ответ написан
  • По какой причине array_map и array_filter имеют разный порядок аргументов?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    В array_map можно передавать последующие массивы, в то время как в array_filter нужно так же указать и флаг, а сама функция работает только с одним массивом.

    https://www.php.net/manual/ru/function.array-filter.php
    https://www.php.net/manual/ru/function.array-map.php
    Ответ написан
  • Можно ли заюзать в .env файле Ларавели реальные переменные окружения?

    l3ftoverz
    @l3ftoverz Автор вопроса
    Люблю Финский металкор
    Как оказалось, в .env можно спокойно юзать переменные окружения, парсер Laravel всё сделает:

    DB_DATABASE="${MYSQL_DATABASE}"
    DB_USERNAME="${MYSQL_USER}"
    DB_PASSWORD="${MYSQL_PASSWORD}"
    Ответ написан
  • Можно ли уместить в один if?

    aleksejjjj
    @aleksejjjj
    return $imageRequired ? ($this->hasImage && $this->hasDocument) : $this->hasDocument;
    Ответ написан
  • Что работник должен делать с поставленной задачей, если PM недоступен для нужной информации, но есть дедлайн?

    solotony
    @solotony
    code for food, caviar preferably
    заболей сам. и вопрос отпадет :)

    p.s. я бы направил запрос и ждал бы ответа. у меня одновременно висит таких вопросов с десяток. а делать непонятно что ... по закону "бутерброда" окажется что ты выбрал неверный путь.
    Ответ написан
  • Как к дате прибавить 5 рабочих дней с учетом праздников?

    BojackHorseman
    @BojackHorseman Куратор тега PHP
    ...в творческом отпуске...
    с нашими правительствами задача решается генерацией в декабре таблицы рабочих дней на будущий год.
    Ответ написан
  • Как должен выглядеть процесс работы с Docker?

    @paldraken
    Попробую описать простыми словами без серьезной терминологии (Devops'ы не бейте ногами).

    Следующим шагом я бы рекомендовал вам начать использовать docker-compose.
    Он позволит всю инфраструктуру описать в одном конфигурационном файле, запускать все одной командой и создать алиасы для общения контейнеров между собой.

    Например у нас такая структура. Я использую php но для nodejs может быть похоже.
    project
       - scr/   #Код проета под контролем версий в git
            - Dockerfile
            - phpfile1.php
            - phpfile2.php
            - etc.php
       - db_data/ #папка где будут сохранятся база данных. (иначе каждый запуск контейнера будет ее обнулять)
       - docker-compose.yml
       - site.conf   #конфиг для виртуального хоста nginx
       - nginx.conf #конфиг nginx


    Настраивается взаимодействие в специальном файле.
    docker-compose.yml
    version: '2'
    services:
      nginx:
        image: nginx:latest
        ports:
          - "8080:80"
        volumes:
          - ../src/:/app
          - ./site.conf:/etc/nginx/conf.d/site.conf
          - ./nginx.conf:/etc/nginx/nginx.conf
        links:
          - php
      db:
        image: mysql:5.7
        volumes:
          - ./db_data:/var/lib/mysql
        environment:
          MYSQL_ROOT_PASSWORD: 123
          MYSQL_DATABASE: changeme
          MYSQL_USER: changeme
          MYSQL_PASSWORD: 123
        ports:
          - "33306:3306"
      php:
        build: ../src
        volumes:
          - ../src:/app
        depends_on:
          - db
        environment:
          PHP_DB_HOST: db:3306
          PHP_DB_USER: changeme
          PHP_DB_PASSWORD: 123


    Тут я использую контейнер nginx и mysql из DockerHub и свой контейнер для php описанный в
    src/Dockerfile
    FROM php:fpm
    
    RUN apt-get update && \
      apt-get install -y \
        openssl \
        git \
        curl \
        unzip
    
    RUN docker-php-ext-install pdo pdo_mysql
    
    ADD . /app
    WORKDIR /app


    Теперь использовав docker-compose up мы удобно запустим все контейнеры с нужной конфигурацией.
    Взаимодействие между контейнерами будет происходить по алиасам
    например из php соединение с БД происходит так:

    db.php
    return [
        'class' => 'yii\db\Connection',
        'dsn' => "mysql:host=db:3306;dbname=donor", // db:3306 - это services имя контейнера с mysql в docker-compose.yml 
        'username' => getenv('PHP_DB_USER'), // это переменные окружения для контейнера тоже из docker-compose.yml
        'password' => getenv('PHP_DB_PASSWORD'),
        'charset' => 'utf8',
    ];



    Код прокидываем в 2 контейнера php и nginx (раздел volumes). То есть внутри контейнера создается директория /app которая ссылается на директорию на хост машине. Для разработки очень удобно, вы изменяете код и сразу можно обновлять страницу.

    На продакшен я обновляю код через git из репозитория и перезапускаю контейнеры (если надо).

    ps. Это один из самых простых способов, разумеется существуют более "взрослые" и "правильные" методы. Но надеюсь мое описание позволит вам сдвинутся с мертвой точки в изучении докера.
    Ответ написан
  • Как быть хорошим junior?

    @lappy
    Постарайтесь прежде всего быть самостоятельным, автономным. Инженер, который постоянно дёргает других инженеров, чтобы выяснить у них то, что ему лень изучать самому - ужасный инженер. Если вы получите хорошие знания на начальном этапе, даже не закреплённые в прод опыте - вы долго в джунах не задержитесь.
    И второй совет - не меняйте работу, пока не станете на ноги в профессиональном смысле. Если только условия невыносимы типа штрафов за опоздания или отчётов о походах в сортир.
    Ответ написан
  • Как создать превью страницы сайта?

    AItF4
    @AItF4
    Помог ответ? Отметь решением.
    Геннадий Уваров, чтобы это сделать, вам нужно добавить в head страницы теги:

    <meta property="og:title" content="">
    <meta property="og:site_name" content="">
    <meta property="og:url" content="">
    <meta property="og:description" content="">
    <meta property="og:image" content="">

    Далее нужно каждому мета-тегу заполнить параметр content=""

    За что отвечает каждый тег:
    og:title - заглавие страницы, он же тайтл. Можете скопировать из тега title.
    og:site_name - название сайта.
    og:url - ссылка страницы, где вы добавляете этот код. Если это однастраничник, то это просто ссылка на главную сайта. Если сайт на CMS или самописный и у него много страниц, то вам придется для каждой указать свой тег, со своей ссылкой.
    og:description - описание страницы. Можете скопировать из тега description для страницы, на которую добавляете теги.
    og:image - ссылка на картинку, что характеризует страницу. Можете указать ссылку на лого сайта, или нарисовать конкретную картинку для этих целей.
    Ответ написан
  • Как проектировать приложение с нуля?

    @ddd329
    Я бы посоветовал книгу Крэга Лармана "Применение UML 2.0 и шаблонов проектирования".
    Ну а так можно начинать проектировать простые приложения с Базы Данных, думаю для начинающих это проще и эффективнее. Можно конечно посоветовать почитать Эрика Эванса про его методологию DDD (Domain Driven Design - проектирование на основе предметной области), но думаю мозг сломаешь и на ранних этапах от нее пользы точно не будет.
    Что касается проектирования UI, то здесь могу посоветовать паттерн MVP (Model-View-Presenter).

    А то, что прочитанный вами материал неполный, то интересно как вы это определили? Спросили у экспертов?
    Вообщем в книге Крэга Лармана много чего есть, сначала следует начать с нее.
    Ответ написан