• Есть ли что-то в PhpStorm такого, чего нет в VSC, что-то такое принципиально нужное, чтобы стоило рассмотреть как альтернативу?

    delphinpro
    @delphinpro Куратор тега PhpStorm
    frontend developer
    VS Code неплохой редактор. А если обвесить плагинами, то возможности приблизятся к полноценной IDE.
    PhpStorm – полноценная IDE что называется "из коробки". Установил и у тебя все есть сразу и работает.

    Поэтому вопрос знатокам - стоит ли плотно тестить шило, если уже есть нормальное мыло?))


    На мой взгляд – стоит. Но пары дней будет мало. Нужно неделю-две посидеть, освоиться. И потом не слезешь.
    Ответ написан
    9 комментариев
  • Как убеждать клиентов оплачивать ТЗ (или оценку проекта) и нужно ли это делать?

    MANAB
    @MANAB
    Разрабатываю на C#: Web, Desktop, Gamedev
    Делай ресерч бесплатно, но перед тем как сказать оценку и стоимость добавь к оценке стоимость ресерча, размазанную по тбудущим таскам. + умножь на коэффициент, т.к. не каждый проект получаешь. Тогда и убеждать не надо и бесплатно не работаешь.
    Ответ написан
    Комментировать
  • Насколько актуален чистый PHP?

    php666
    @php666
    PHP-макака
    Отвечу как автор того самого обширного ответа.

    Первое. В голове у тебя тотальное непонимание. Вопрос твой звучит примерно так же, как "можно ли быть хирургом не зная анатомию человека и не закончив 5 лет мед института?". Естественно нет.

    Есть ли сейчас смысл в оттачивании чистого PHP
    Язык всегда первичен. Да.

    Далее. Вот эта фраза
    если мне +- хватает понимания, как работает та же Ларавел?
    Ты серьезно думаешь, что у тебя "хватает понимания", как работает фреймворк? Больше не повторяй вслух эти слова. Никогда. Особенно на собеседовании. Иначе собеседующие тебя похоронят за плинтусом.

    Может, при возможности стоит обратить внимание на другой язык(Го, шарп, нода)?
    Сегодня разговаривал с HR-ом, дословно: php-шников и фронтов много. Больше остальных. Спрос на другие языки - go и питон - там низкая конкуренция. Не могу ей не поверить, т.к. php существует более 20 лет и за это время в отрасль вкатилась куча людей. Откровенно говоря, очень скоро значительный % пхп-макак пойдет в такси, включая меня. Конкуренция, судя по собеседованиям - адовая. Спрашивают сам язык и ещё 250 сопутствующих технологий.

    не рискую пока идти на собеседования потому что хочу закрыть чеклист: несколько проектов в портфолио на чистом PHP, laravel; подучить JS с Аяксом; Добить тестирование, а также чуть разобраться с докером, линуксом и теоретической частью этих ваших интернетов.
    мертвому припарка. Ты никогда в "домашних условиях" не получишь боевой опыт. Лучше иди работай за "ничего", больше пользы будет.
    Ответ написан
    1 комментарий
  • Как обойти пустую ноду в SymfonyDomCrawler?

    VlastV
    @VlastV
    Ведущий разработчик – практик
    $node->filter возвращает Crawler, у него есть метод count() который возвращает количество node.
    Соответственно, вам после $node->filter(...), надо проверить количество

    $recommends = $node->filter('button[data-action="show-recommends"]');
    $rate = $recommends->count() ? $recomments->text() : 0;
    Ответ написан
  • Как правильно использовать 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 комментария
  • Под какие разрешения экрана готовить дизайн сайтов в 2021 году?

    Kadzi
    @Kadzi
    Ом
    1. Усложнять простое проще, чем упрощать сложное.
    2. Сначала мобильные. P.S это не подразумевает обделить десктоп.
    3. Перестать мыслить сетками и точными размерами: делать в первую очередь полезные блоки. Почему у дизайнеров проблема с адаптивами? Да потому что они обвешивают блоки немощными кусками "дизайнерских" говнорешений. Когда всей этой поганой мишуры нет, то и вопрос с сетками отпадает. Хороший сайт может быть хоть в 500px шириной на десктопе, при условии что есть полезное действие.

    Я начинаю от 290px, но даже сверстав, смотрю что происходит если блок сжимать дальше. Всё больше прихожу к осознанию, что нужно научиться мыслить относительными единицами. На десктопе использую ширину от 700 до 1200px для контента, но плавно ухожу от точных единиц в сторону относительных.

    Есть отдельная категория дизайнеров-даунов, которые выставляют в редакторе ширину холста 1920 и думают что типа теперь это дизайн под широкие экраны. (хотя контентная область осталась такой же). https://css-live.ru/ вот пример сайта с отзывчивым дизайном.

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

    4. Больше отзывчивости, больше относительных единиц, больше grid css.
    5. Украшайки — в последнюю очередь.
    6. Дизайн сразу в браузере. Да, дизайнить сайт сразу в браузере, использовать условные элементы, которые потом можно отрисовать уже в граф. редакторе. Чтобы дизайнить в браузере, соответственно изучить вёрстку + технологии анимаций в вебе. +доступность +производительность.
    7. Фильтровать тренды.

    На мой взгляд, проблема сеток это вопрос дебильного дизайна и не понимания того, как это будет отображаться в браузере. Не вижу ни 1 плюса чтобы начинать с этого.
    Ответ написан
    2 комментария
  • Какое состояние у современного фриланса на конец 2020?

    opium
    @opium
    Просто люблю качественно работать
    Все так же
    Говнокодеры в жопе, профи в шоколаде
    Ответ написан
    4 комментария
  • Где научиться/почитать про общие темы backend?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Купи книжку Котерова РНР7.
    Зумеры от нее воют потому что (там нету видео, а объем текста больше полутора строчек они воспринимать не в состоянии) про собственно РНР там начинается примерно с середины. Как раз потому что сначала там даются именно базовые понятия, без которых нельзя освоить веб-программирование. В том числе что такое НТТР и как оно работает.
    Ответ написан
    1 комментарий
  • Как можно защитить верстку?

    DevMan
    @DevMan
    единственный надёжный вариант - слать скриншоты низкого качества.
    всё остальное не спасет от ушлых.

    а вообще, есть золотое правило: "не работать с мудаками". правда вырабатывается оно не сразу.
    Ответ написан
    12 комментариев
  • Попинайте. Работодатель сказал, что у меня код PHP устаревший. В чем именно проблемы?

    Stalker_RED
    @Stalker_RED
    @mysql_query() уже одного этого кусочка хватает для того, чтобы сильно усомниться в скиллах.

    Функция mysql_query устарела более семи лет назад, и в современных версиях языка ее вообще нет.
    Подавление ошибок через @ - вообще шедевр. У вас, значит, запрос с ошибкой, или база упала - но ваш код это просто игнорирует и делает вид, что так и надо. Зашибись :)

    Читайте https://phptherightway.com/
    Ответ написан
    Комментировать
  • Как вы справляетесь с тупняком в программировании?

    @0x131315
    По опыту, подобные тупики возникают в основном из-за недостатка знаний.
    Поэтому и решать их нужно через знания: нужно читать книги и статьи по теме, зависать на спец.форумах и чатиках.
    Только так можно получить те кусочки информации, которых не хватает для решения задачи.

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

    Опыт нужен, но от неопытных его не почерпнуть. Авантюры с новичками мало что дают, т.к. перенимается только худшее, костыли. Нужно ориентироваться на более опытных товарищей.
    Хороший вариант - открытые проекты в github, как минимум можно посмотреть как люди решают те или иные задачи, почерпнуть некоторые фишки, пообщаться в комментах с теми, кто в теме, как максимум - можно влиться в разработку, отхватить кучу гневных комментов в стиле "что за говнокод?", но заодно и получить пинок в правильную сторону быстрее, где бы то ни было.

    И помни: топтаться на месте и ходить кругами можно долго. Шансы на то, что это приведет к успеху - минимальны.
    Так что обязательно нужно что-то делать для развития.
    Можно пройти онлайн-курсы за год. Это даст хороший уровень.
    Или, если ты ленивая жопа, податься стажером на галеру - там за полгода тебя заставят прокачаться до хорошего уровня.

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

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

    Уменьшить карточку можно примерно вот так:

    Ответ написан
    Комментировать
  • Как защитить JS код?

    @Froggyweb
    сохранить в файл
    shame.js
    Ответ написан
    Комментировать
  • Как защитить JS код?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Защитить JS нельзя, т.к. он выполняется на клиенте, а не на сервере.
    Можно усложнить чтение с помощью обфускации. Это отсеет 90% любителей, но особо упорных это не остановит и они прочтут твой код. Тем более, что есть инструменты, помогающие в деобфускации: деобфускаторы, бьютифайеры и пр.
    Хочешь скрыть код - уходи из фронтенда и добро пожаловать в бэкенд, на сервер.
    Ответ написан
    Комментировать
  • Как защитить JS код?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Спрятать не выйдет, а вот затруднить немного чтение вполне. Например с помощью обфускации. Но будьте готовы к увеличению объёма кода.
    Например console.log('Лол, кек, чебурек'); превратиться в
    var _0xac52=["\u041B\u043E\u043B\x2C\x20\u043A\u0435\u043A\x2C\x20\u0447\u0435\u0431\u0443\u0440\u0435\u043A","\x6C\x6F\x67"];console[_0xac52[1]](_0xac52[0])
    . Оно вам надо? ИМХО всё это детский сад.
    Ответ написан
    5 комментариев
  • Как привлечь провайдера к ответственности?

    @egn_onegin
    Всем участвующим в беседе доброго времени суток!
    Зарегистрировался исключительно из-за данного поста.
    Небольшое лирическое отступление: работаю в support регионального isp, в связи с чем приходится постоянно общаться с подобными всезнающими геймерами.
    Поскольку предварительно я почитал ответы автора сабжа на некоторые комментарии аудитории, то отвечать постараюсь максимально доступным языком.

    morfianes
    Согласно предоставленной тобой лично трассировке winmtr (по хопам):
    1. твой роутер;
    2. какой-то неизвестный провайдерский хост, предположительно, закрытый по icmp;
    3. очередной хост на сети твоего провайдера (возможно, промежуточный коммутатор или иное, предположительно, активное сетевое оборудование);
    4. gateway твоего провайдера, с которого тебе непосредственно предоставляется доступ во-вне (в интернет) - на этом ЗО (зона ответственности) твоего провайдера ВСЕ!!!
    Вот, лять, прямо вообще ВСЕ, от слова СОВСЕМ!!!
    5. ЗО вышестоящего оператора!!!
    и т.д.

    Ты молодец!! Красава!! Ресспектую!!
    Нагуглил, а может и в Яндексе поискал и нашел, 2ip.ru на котором "пробил" принадлежность проблемного, по твоему мнению, ipшника, а именно 94.25.8.129, и, казалось бы, вот ОНО!!!
    Ipшник находится в адресном пространстве, принадлежащем твоему провайдеру, но...
    Правильно - ничего!!!
    Вот, лять, прямо вообще НИЧЕГО!!! От слова СОВСЕМ!!!

    Тот, факт, что, согласно нарытым тобой данным, ipшник принадлежит Ростелекому, ну, т.е. твоему провайдеру, вообще ни о чем не свидетельствует.
    Как правильно заметил support Ростелекома, о чем и тебе сообщил, ты даже скриншот с перепиской скинул, но головой подумать дальше видимо чего-то не хватило.

    Согласно данным whois, ресурс с этим ipшником находится в сети Prestig_Internet.
    Ничего не смущает, не?!

    А теперь так же банально, как ты 2ip.ru разыскивал, берем и гуглим, ну Яндексом пользуемся, (тебе что удобнее??) Prestig_Internet и первой ссылкой, по каким-то причинам, enforta.ru.
    Немного странно, конечно, но и к этому вскоре подойдем.

    Чуть ниже в результатах поиска, хотя... не утруждайся - прикладываю ссылку: https://www.list-org.com/company/704092
    Сам же ты все равно не найдешь.
    Переходим по ссылке, читаем и, о Боже!!, выясняем для себя следующее:
    - Организация ООО "ПРЕСТИЖ-ИНТЕРНЕТ"... наверное имеет прямое отношение к сети Prestig_Internet, по крайней мере это вполне логично предположить.

    По всей видимости у ООО "ПРЕСТИЖ-ИНТЕРНЕТ" в свое время не хватило адресной емкости, в связи с чем у Ростелеком, да-да, именно у твоего провайдера, просто напросто был куплен ipшник.
    Вот так просто!!! Взяли и купили у Ростелеком ipшник, прикинь, ля!!!
    Однако, полагаю, что данный ipшник Ростелеком просто взял и "зажал", т.е. данный адрес не является PI, т.е. провайдеро-независимым, но это ты потом загуглишь, ну или в Яндексе найдешь.
    По факту расторжения договорных отношений между ООО "ПРЕСТИЖ-ИНТЕРНЕТ" и Ростелеком его (ipшник), скорее всего, придется вернуть.

    Читаем далее:
    - Статус: ПРЕКРАЩЕНИЕ ДЕЯТЕЛЬНОСТИ ЮРИДИЧЕСКОГО ЛИЦА ПУТЕМ РЕОРГАНИЗАЦИИ В ФОРМЕ ПРИСОЕДИНЕНИЯ с 01 ноября 2017 года.

    И тут, казалось бы, все мои доводы рухнули, разлетелись в пух и прах, но... х... ты угадал!!
    Листаем ниже!!
    - Правопреемники: АО "ЭР-Телеком Холдинг" (брэнды Дом.ру и Энфорта, если, вдруг, ты не в курсе).
    Теперь более понятно, при чем тут Энфорта. Если все еще не понятно - читай далее.

    Таким образом получаем следующее:
    - ipшник принадлежит Ростелеком, ибо он не является PI (предположительно);
    - железо, которое работает на этом ipшнике, принадлежит АО "ЭР-Телеком Холдинг" - на основании данных list-org.com;
    - какие отношения в разрезе данного ip адреса между Ростелеком и АО "ЭР-Телеком Холдинг" мне вот прям до звезды фиолетово.

    Могу осмелиться предположить, что маршрутизация от тебя, а по факту от твоего роутера 192.168.0.1 (D-Link, наверное), до конечного ресурса, а именно 162.249.73.10, который, как бы, тоже нихрена не у тебя под боком находится, строится по принципу OSPF... а может BGP... а может... (да, простят и поправят, в случае ошибки, коллеги по цеху).
    Что такое OSPF/BGP потом загуглишь, ну или в Яндексе найдешь.
    Если не найдешь, привлекай Rambler к содействию.
    Конечно, мои предположения к фактически используемой маршрутизации на сети твоего провайдера, а так же точкам обмена трафика с другими операторами связи, остаются только предположениями, но... если... вдруг...

    Итого:
    - 212.48.195.0 - граница ЗО твоего провайдера (Вот, лять, прямо вообще КОНЕЦ!!! От слова СОВСЕМ!!!), с этого момента Ростелеком тебе должен/обязан (читай, как больше нравится) чуть меньше, чем ни...чего;
    - ресурс 94.25.8.129 фактически принадлежит АО "ЭР-Телеком Холдинг", несмотря на то, что ipшник находится в адресном пространстве Ростелеком, контакты ЭР-Телеком найдешь, тут уже совсем все изи;
    - менять маршрут ради тебя одного такого пи...дельного никто не станет - хлопотно;
    - почитай/ознакомься: https://habr.com/ru/post/134892/ - доступным для понимания языком написано;

    P.S. уж слишком дохрена вас таких... "интересных", платят 500рэ за 100М, а голову выделывают...
    Ответ написан
    6 комментариев
  • Что нужно знать для backend разработки?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Выучите PHP.
    99% открытого бэка - написано на нём.
    Ответ написан
    Комментировать