Задать вопрос
  • Гуманитарное образование - это приговор?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Ответ работодателя про выйти замуж - это просто неудачная неэтичная шутка.
    На самом деле человек пытался обозначить, что вы не подходите именно под открытые позиции в этой компании, но выпустил вместо прямолинейного "вы нам не подходите" вот такой юморок. С безысходностью своего развития в отрасли это никак не связано, вообще.

    Никто не выгоняет за наличие психологического образования. Обычно оно, наоборот, поощряется.
    Проблема не в типе образования. Проблема в отсутствии опыта. Компания прогнозирует, что начинает не успевать выполнять определённые вещи. Она открывает вакансию на конкретную позицию с конкретными задачами, ожидая, что пришедший сможет заполнить этот пробел. Если человек не знает, как выполнять эти задачи, он не сможет ничего предложить работодателю, даже если у него есть высшее образование (независимо от области).

    Вот как пройти этот порог вхождения:
    Сначала нужно определиться, к чему именно тянет в ИТ и с чем хотелось бы работать. Веб-разработка (а там - либо разработка и вёрстка фронтэндов, либо разработка серверной части сайта, "бэкенда", работающей с базой данных и приходящими данными от фронтэнда), или сопровождение серверов, проектирование и внедрение инфраструктур, и т.д.
    Затем два возможных пути:
    - Вы самостоятельно пробуете сделать то, что вам интересно, дома на своём ПК. Если всё получается, пробуете ещё и ещё. Потом задумываете сделать небольшой личный проект по теме, просто что-нибудь минимально полезное для себя (хотя бы ради эксперимента).
    - Вы устраиваетесь на вакансию с пометкой "стажирование", где требования к соискателям низкие. Если повезёт, то задачи будут интересными и они оставят вам полезный опыт. Нужно понимать, что на подобное обучение сотрудника компания тратит своё время и средства, поэтому не стоит ожидать больших окладов на этом этапе. Также не ждите, что за вас всё будут объяснять и постоянно выполнять роль учителя. Определённая самостоятельность всё-равно потребуется.

    Это позволит обрести опыт и в дальнейшем уже быть полезной на тех вакансиях, где ждут людей на конкретные технологии и задачи. К тому моменту, с некоторыми из них вы уже наверняка будете иметь практику. =)
    Ответ написан
    2 комментария
  • Гуманитарное образование - это приговор?

    Denormalization
    @Denormalization
    Имхо дело было не в "гуманитарном" образовании, а в поле.
    В IT нужны люди с гуманитарным образованием. IT это не только програмирование, но и куча других смежных областей.

    >Как лучше поступать: говорить, что нет высшего или на свой страх и риск озвучивать своё высшее?
    Говорить как есть. Адекватные люди отреагируют адекватно, а остальные нам и не нужны...
    Ответ написан
  • В чем недостатки сайта на чистом php?

    Pinsky
    @Pinsky
    Кофеиноникотиновая смесь в backend-код
    Есть разница между чистым PHP и спагетти кодом.

    Если Вы сделаете качественную кодовую базу, которая будет написана с грамотным использованием шаблонов проектирования, будет читаема и отвечать максимальному числу PSR - пишите сами, однако, в таком случае Вы напишите процентов 70 от того же фреймворка.

    Возможно, Вам стоит задуматься о использовании компонентов Symphony, если Вам так критично уменьшить число прослоек.

    Если же, тут дело в том, что просто не знаете фреймворк - рекомендую освоить. Очень многое может разложить по полочкам в голове и ускорить в последующем разработку приложений.
    Ответ написан
    3 комментария
  • Добавить месенджер к rest api?

    werevolff
    @werevolff
    Не знаю, поможет или нет, но я бы начинал поиск с готовых решений:

    Для бэкенда
    Для фронтэнда

    В качестве библиотеки, реализующей вэб-сокеты используется Ratchet

    Полагаю, что для PHP надо будет ещё посношаться с настройкой деплоймента, хотя не факт. Получается, что у нас будет два типа сообщений:

    1. Состояние списка пользователей.
    2. Сообщения пользователей.

    Если бы речь шла об ангуляре, то можно было бы отслеживать фокус на input, либо изменения модели, привязанной к input. Либо, можно было бы усложнить процесс и изучать кол-во изменений модели за единицу времени. Есть ещё возможность отлавливать keypress. В общем, когда мы устанавливаем, что current client печатает, мы отправляем на сервер сообщение одного типа. Если пользователь производит submit - сообщение другого типа.

    Так мы можем использовать Redis / RabbitMQ сервер для сохранения статусов пользователей открытых бесед (и удалять instance, если беседа закрыта). Получается следующая схема:

    В ОЗУ хранится {'dialogIDqweqweqwe': {'users': {'vasya': {'state': 'online', 'activity': 'printing'}, 'petya': {'state': 'online', 'activity': null'}} ]}}
    При изменении статуса от Пети, его клиент отправляет {'action': 'userActivity', 'value':'printing'}. Насколько я понял доку по рэтчету, когда приходит сообщение от одного из клиентов, срабатывает хук onMessage. В нём мы проверяем action ответа и, либо сохраняем данные и делаем $client->send (если что-то изменилось в сравнении с предыдущим состоянием), либо игнорируем изменения.

    Механизм web-сокетов вы понимаете правильно. На бэкенде поднимается server - приложение, которое реализует протокол WebSocket. Общее представление о работе даёт его название. Server представляет собой сокет, к которому подключается N клиентов и слушают изменения (ждут событий).
    Ответ написан
    Комментировать
  • Как в Laravel в view вывести пост без XSS, но с остальными тегами?

    Tesla
    @Tesla
    Если обязательно нужен html, то HTMLPurifier в помощь. Не знаю, чем он вам не понравился, делает как раз то, что вам нужно: фильтрует теги.
    Ответ написан
    1 комментарий
  • Как определить реальную рыночную стоимость проекта по разработке веб-приложения?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Без примера тестовых задач, это очень абстрактный разговор )

    AFAIK на фрилансе исчезающе мало заказов с такими костами, соответственно и людей готовых за них браться.
    Среднестатистический разработчик привык или брать мелкие проекты (неделя-две), либо работать по часовому рейту не занимаясь глобальной оценкой.
    Даже просто прочитать и осмыслить тз на объемный проект это 2-3 часа минимум, - далеко не все будут этим заниматься без подтверждения реальной заинтересованности заказчика.

    Соответственно и рыночная стоимость любого проекта - это те деньги которые конкретный заказчик готов заплатить за реализацию в устраивающие его сроки с устраивающим его качеством.

    С другой стороны я имею возможность давать цену в два раза ниже рынка, но когда я выдвигаю предложения заказчики в основном молчат.

    Плохое cover letter
    Плохое портфолио
    Слишком низкая цена

    Причин может быть море

    На UpWork с ценами ситуация не менее интересная по моему профилю. Цены явно ниже раза в 4, чем это вообще реально сделать.
    Вы определитесь, вы даете цену в 2 раза ниже рынка, или на рынке цена в 4 раза ниже чем Вы готовы делать? ;-)

    PS
    Разместил на fl.ru проект, который исходя из моего понимания и по результатам обсуждения с программистами, с которыми я сотрудничаю никак не может стоить меньше 150 000 руб
    Как говорил классик: наш главный ресурс это люди. Умеете находить качественных разработчиков за разумные деньги - будет Вам счастье и успех. Не умеете -не суйтесь в агентский бизнес.
    Ответ написан
    2 комментария
  • Как определить реальную рыночную стоимость проекта по разработке веб-приложения?

    @jaxel
    Очень сложно определить реальную стоимость разработки для крупных задач. В серьёзных конторах может 100-200 тысяч от бюджета уйти на составление подробного ТЗ и оценку стоимости проекта. И даже в этих случаях бывают промахи процентов в 20-30% бюджета.

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

    В большинстве случаев, я оцениваю в часах время разработки понятных моментов задания, добавляю предполагаемую оценку не совсем понятных моментов, умноженную на 2, и оценку совсем не понятных моментов ТЗ, умноженную на 3. Умножаю полученное время на часовую ставку и получаю примерную стоимость проекта.

    Цифра озвучивается заказчику, как ориентир. Так как она весьма приблизительная, стараюсь договориться на почасовую оценку работы. Особенно при плохом или непонятном ТЗ.

    Удаётся не всегда. Бывает, что по этой цифре и работаем. Иногда времени уходит больше, иногда меньше. И ничего с этим не сделать.

    А по конкретным задачам может быть много нюансов.
    • У первого исполнителя могут быть готовые наработки, и он сделает заказ за 3 дня и 22к рублей.
    • У второго наработок нет, но он хороший спец, использует для задачи правильные инструменты, и сделает за 2 недели и 70к.
    • У третьего тоже нет наработок, и в добавок он не умеет выбрать правильный инструмент. Начнёт пилить без фреймворков и прочего, потратит на это пол-года и 300к рублей.
    • Четвёртый просто не поймёт сложность задания. Запросит 30к и начнёт пилить сложный кастомный прокт на вордпрессе. В итоге просто не сможет его закончить:)

    В итоге все честно оценили заказ исходя из своих возможностей, а цифра отличается в 10 раз.
    Ответ написан
    5 комментариев
  • Где можно фрилансить без лишних затрат?

    @givemoneybiatch
    Немного веб, немного гейм
    Кроме апворка есть еще такой неплохой сервис freelancer.com
    У меня примерно 50/50 заказы идут оттуда и с апворка. Доступен бесплатный аккаунт с 8 заявками на месяц, но каждая потраченная заявка восстанавливается через какое-то время (около суток). Для новичков есть бесплатный тестовый период продвинутого аккаунта на один месяц с большим количеством заявок. Я уже не помню точное количество, но я не использовал и половины. Сейчас я использую платный аккаунт стоимостью около 1 доллара в месяц с 25 заявками в месяц, которые по ходу еще и сами восстанавливаются. Для веба проектов очень много. Минус только один - комиссия в 10% и минимум 5уе, поэтому мелкие заказы не очень выгодно брать. Также платные тесты по 5уе каждый, но я их не проходил и без них получалось брать заказы.
    Ответ написан
    5 комментариев
  • Как увеличить скорость разработки и внимательность?

    @itvsem
    Кто владеет информацией, тот владеет миром
    Выяснилось, что есть две загвоздки: скорость работы и внимательность.

    Не думаю, что медленно печатаешь и за окном птиц считаешь).

    Я не разработчик, у меня пара вопросов:
    - каким был результат разговора?
    - выдвинули какие-то условия на новый месяц ?

    Пол года работы в сфере, это наверно еще только начало пути и естественно, что скорость и внимательность к деталям приходят только с опытом(твои коллеги могут меня поправить). А опыт набирается от качества поставленных задач, их разнообразия и руководства(если ты не сам себе ставишь задачи). Если месяц пиликать только однообразные задачи, то у тебя будет ступор с выполнением других.
    Работодатель несёт ответственность за результаты твоей работы и в первую очередь перед заказчиком. И в его интересах, зная что у тебя мало опыта, если не ежедневно, то хотя бы раз в неделю садиться рядом с фразой: Ну показывай Никит, что мы тут "наговонокодили"). А не через два месяца поставить перед фактом, что ты медленно работаешь и внимательность хромает.
    Если диалог состоялся только в таком ключе, то внимательность хромает не только у тебя.

    Совет не от программиста:
    1. Постараться смотреть на задачи более глобально: а что будет если я тут изменю, на что повлияет, где задействовано еще?; а почему мы используем в разработке эти инструменты?; а почему они лучше?; а какие есть альтернативы?; а как оцениваются твои задачи и почему так?
    2. Возможно, если еще не брался, стоит пофрилансить немного в свободное время. Беря сначала знакомые и понятные задачи, чтобы набить руку, потом что-то новое и интересное.
    Ответ написан
    6 комментариев
  • Где можно фрилансить без лишних затрат?

    lunaticman
    @lunaticman
    Дерзкий айтишник
    Я наверно не отвечу на ваш вопрос, потому что все нормальные биржы теперь уже "по приглашению" или с техническим интервью. В фрилансе джуны никому не нужны.

    Я бы вам настоятельно рекомендовал найти работу - лучший способ перестать быть junior'ом.
    Ответ написан
    4 комментария
  • Что нужно для написания чата на php и js?

    gadfi
    @gadfi
    https://gamega.org
    чат на php довольно таки плохая идея, реально конечно, простейший long polling вам в помощь, но все равно серьезную нагрузку не выдержит (не надо про вк и фб, чат там не на php)
    может для реализации чата лучше посмотреть в строну той же centrifugo или чего то подобного
    зы с php нормально дружит
    зыы статья о ней
    Ответ написан
    4 комментария
  • Как поступить с заказчиком который не платит?

    noby2000
    @noby2000
    Founder.
    Доброго Вам дня, Валентин.
    Ситуация - фантастическая. Кто-кого кидает совершенно непонятно.
    Если вы из ЛЮБОЙ страны - подписывайте договор. Хоть на коленке. Через скан. Даже работая на fl.ru или upwork - вы ПОДПИСЫВАЕТЕ договор, при регистрации на тостере - вы ПОДПИСЫВАЕТЕ договор.
    Абсолютно непонятно о чем была договоренность: о работе над проектом "под ключ" или как-то по другому. если Вы сделали только половину работы, возможно и платить-то не за что. Если ни разу не платили, возможно стоит задуматься.
    По моему мнению, лучше честность. Взять и поговорить с вменяемым, лучше старшим менеджером или директором, и просто объяснить ситуацию, без обвинений друг друга. Сказать, что не устроило на этой работе, почему ушел на другую, что из проекта готово, во сколько оценивается эта работа. В крайнем случае - все останутся "при своих" Если доверия нет, то лучше-таки подписать бумажку.
    Ответ написан
    2 комментария
  • Что же мне выбрать?

    @deliro
    0) В ВУЗах не учат программировать. Ни в Москве, ни в Смоленске. Тебе дадут общие знания по алгоритмам, дискретке, матану и, возможно, ты научишься думать.
    1) Корочка играет там, где она нужна. В данный момент единственное её применение - миграция в другую страну и получение рабочей визы (для этого нужен диплом). Устраиваться в пределах РФ - разницы нет. Исключение - госструктуры.
    2) Реально
    3) В Москве можно обзавестись связями и работой трени/джуна, т.к. удалённо вряд ли тебя кто-то захочет брать без опыта. Я б поехал, не ради ВУЗа.

    UPD.
    Вася Пупкин написал, что общага развращает. Это действительно так для развратных и инфантильных людей, которые отбились от ежовых руковиц родителей. Для целенаправленного и отвественного человека это будет лишь сменой места жительства и круга общения. Ну и некоторые неудобства в виде соседей-свиней или полуразбитых душа/туалета.
    Ответ написан
    9 комментариев
  • Какой тут паттерн нужен?

    @MadridianFox
    Web-программист, многостаночник
    А нужен ли тут паттерн? Возможно стоило бы описать недостатки того что есть, хотелки, и спросить как этого добиться.
    Ответ написан
    2 комментария
  • Как узнать кто какие ресурсы кушает?

    @Fixid
    atop + iotop
    В htop можно включить режим сортировки и крайне рекомендую режим показа тредов ( F5 )
    Ответ написан
    Комментировать
  • Какие знания нужны для создания калькулятора?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Начтите с более простых вещей: Как правильно учить Javascript?
    Ответ написан
    Комментировать
  • Перехват обращение к свойству объекта?

    by25
    @by25
    Веб-разработчик
    Обращаться к свойству через геттер/сеттер.

    class Foo {
        private $param;
    
        public function getParam() {
            //... тут своя логика
            return $this->param;
        }
    }
    Ответ написан
    Комментировать
  • Как создать верный docker файл для проекта?

    miraage
    @miraage
    Старый прогер
    Примерно так выглядит мой конфиг для local development with symfony.
    Это не продакшн конфиг.

    docker-compose.yml
    version: '2'
    services:
      nginx:
        build: ./docker/nginx
        ports:
          - "80:80"
        links:
          - php
        volumes:
          - ./docker/nginx/http.conf:/etc/nginx/conf.d/http.conf
          - ./docker/nginx/site.conf:/etc/nginx/sites-enabled/site.conf
        volumes_from:
          - php
        command: 'nginx -g "daemon off;"'
      php:
        build: ./docker/php
        volumes:
          - .:/src
          - ./docker/php/php-cli.ini:/etc/php/7.0/cli/conf.d/php-cli.ini
          - ./docker/php/php-fpm.ini:/etc/php/7.0/fpm/conf.d/php-fpm.ini
          - ./docker/php/pool.conf:/etc/php/7.0/fpm/pool.d/www.conf
        command: 'php-fpm7.0 -F'
        links:
          - db
          - cache
        environment:
          SYMFONY__DB__DRIVER: pdo_pgsql
          SYMFONY__DB__HOST: db
          SYMFONY__DB__PORT: 5432
          SYMFONY__DB__NAME: dbname
          SYMFONY__DB__USER: dbuser
          SYMFONY__DB__PASSWORD: dbpassword
      db:
        image: "postgres:latest"
        environment:
          POSTGRES_DB: dbname
          POSTGRES_USER: dbuser
          POSTGRES_PASSWORD: dbpassword
      cache:
        image: "redis:latest"
        command: redis-server --appendonly yes


    docker/nginx/Dockerfile
    FROM ubuntu:16.04
    
    RUN apt-get update \
        && apt-get install -y nginx


    docker/nginx/http.conf
    access_log /dev/stdout;
    error_log /dev/stderr;


    docker/nginx/site.conf
    server {
        listen 80;
        server_name example.dev;
        root /src/web;
        index index.php index.html;
        
        location / {
            try_files $uri /app_dev.php$is_args$args;
        }
        
        location ~ ^/(app_dev|config)\.php(/|$) {
            include fastcgi.conf;
            
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            fastcgi_pass php:9000;
            
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
        }
        
        location ~ \.php$ {
            return 404;
        }
    }


    docker/php/Dockerfile
    FROM ubuntu:16.04
    
    ENV PHP_PACKAGES \
            php7.0-fpm \
            php7.0-cli \
            php7.0-readline \
            php7.0-pgsql \
            php7.0-mcrypt \
            php7.0-xml
    
    RUN apt-get update \
        && apt-get install -y $PHP_PACKAGES
         
    RUN usermod -u 1000 www-data


    docker/php/php-cli.ini
    error_reporting = -1
    display_errors = On
    log_errors = Off
    html_errors = Off


    docker/php/php-fpm.ini
    error_reporting = -1
    display_errors = On
    log_errors = Off
    html_errors = On
    cgi.fix_pathinfo = 0


    docker/php/pool.conf
    pid = /var/run/php.pid
    
    [www]
    
    user = www-data
    group = www-data
    
    listen = 0.0.0.0:9000
    
    pm = dynamic
    pm.max_children = 20
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 3
    
    clear_env = no
    catch_workers_output = yes


    Как разворачивать базу

    Читайте про docker-entrypoint-initdb.d

    Либо же
    docker cp file.sql.gz containername:/tmp/dump.sql.gz
    docker exec -ti containername bash
    gunzip -c /tmp/dump.sql.gz | psql -U username dbname
    Ответ написан
    3 комментария
  • Что сделать когда ты не можешь выполнить заказ, а работаешь на расстоянии?

    werty1001
    @werty1001
    undefined
    Как поступить в этом моменте?

    Сказать, что не хватает скилла выполнить это задание. Брать заказ, а потом придумывать отмазы - гораздо хуже, лучше сразу сказать.
    Ответ написан
    3 комментария