Задать вопрос
  • Как удалить мусор из header?

    @vovaent
    В данном случае эти теги hreflang добавляет Polylang.
    Чтобы их удалить / изменить, нужно воспользоваться фильтром pll_rel_hreflang_attributes.
    Здесь примеры использования фильтра.
    Здесь все фильтры Polylang.

    Мне тоже нужно было удалить эти теги. Реализовал таким образом:
    /*
    * Remove hreflangs from Polylang *
    */
    add_filter('pll_rel_hreflang_attributes', 'remove_polylang_hreflang_attributes', 10, 1);
    
    function remove_polylang_hreflang_attributes ($hreflangs) {
        $hreflangs = [];
    
        return $hreflangs;
    }

    И после этого добавил своим способом нужные теги hreflang.
    Ответ написан
    1 комментарий
  • Как организовать адаптивное SPA приложение?

    в настольной версии это вообще один экран с единственным урлом
    В этом ваша ошибка - если это SPA, то у каждой "страницы" всё равно должен быть свой URL. Тогда и проблема ваша разрешится.
    Ответ написан
    2 комментария
  • Стоит ли изучать symfony 1.4 для трудоустройства?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Сказал, что они делают сайты на symfony 1.4.
    После этого дальше можно не читать...
    Он сам себя дурит: вместо того, чтобы перевести проект на актуальную версию, он ищет тех, кто готов учить старьё ради того, чтобы не потерять клиента.

    От подобных предложений - сразу БЕГИТЕ.
    Ответ написан
    Комментировать
  • Как добавить валидацию на уникальное поле в doctrine?

    @jaxel
    У вас валидатор UniqueEntity сразу на два поля указан. Он проверяет уникальность комбинации "username" и "phone". Вам нужно разделить их на два отдельных валидатора, а не указывать оба поля в одном.
    Ответ написан
    Комментировать
  • Как к калькулятору подключить курс валют?

    @McBernar
    При клике в форму обращаетесь через AJAX с php-скрипту, который вернет актуальное значение.
    Откуда в php эти данные — это уже другой вопрос.
    Ответ написан
    6 комментариев
  • Какой стиль программирования на php лучше?

    @pudovMaxim
    web-developer
    Стиль пьяного девелопера Вам идеально подойдет! :)

    Лучше иметь модульность. Лучше иметь правильный маршрутизатор. Лучше иметь какую-то структуру, например MVC. Лучше придерживаться каких-то принципов, например ООП. Лучше не писать спаггети-код.

    Еще лучше - заглянуть в простенький фреймворк или популярную качественную CMS и изучить как устроено там и подумать как это можно применить у себя.

    И вопрос очень туманный с множеством неизвестных. Скорей всего советы, которые будут даны, не дадут ответ на Ваш вопрос "как лучше".
    Ответ написан
    Комментировать
  • Где смотреть лучшие практики по верстке элементов?

    bugo_aneo
    @bugo_aneo
    Верстальщик по жизни, буддист, кофеман
    Еще полезно может быть посмотреть сниппеты для тех или иных блоков. Вот тут их - КУЧА!
    https://css-tricks.com/snippets/html/
    Ответ написан
    Комментировать
  • Где смотреть лучшие практики по верстке элементов?

    @GreatRash
    Вообще такого ресурса нет, но есть несколько полезных ресурсов на которых стоит пастись постоянно. Это:

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

    tympanus.net/codrops/category/blueprints - это сборник концептов, далеко не все решения кроссбраузерны, но зато там можно найти неисчерпаемый источник вдохновения не только верстальщикам, но и дизайнерам.

    alistapart.com - это наверное старейший ресурс в мире, посвящённый веб-технологиям, ведёт свою историю с 1997 года, из простой рассылки превратился в серьёзный журнал. Даже своя страничка на Википедии имеется.

    https://css-tricks.com/ - тоже ресурс, не нуждающийся в особом представлении, сборник туториалов, небольших статей, справочников, тематических блогов, сниппетов, в общем всего.
    Ответ написан
    Комментировать
  • Правильный ли, подход к проектированию приложения в symfony 3?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Не правильный. Читайте Эрика Эванса. Читайте про unit of work. Читайте про "save your repositories from save".
    Ответ написан
    Комментировать
  • Какие есть хорошие туториалы для symfony?

    @smash_wp
    По-моему мнению, KnpUniversity - лучшее (из видеоуроков), что может быть по Symfony. Плюс там есть курсы по PHP, в частности. А также про ООП.

    knpuniversity.com
    Ответ написан
    1 комментарий
  • Как уйти с распутья технологий?

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

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

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

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

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

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

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

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

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

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

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

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

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

    С третьим - придешь, когда поймешь, что тебе это нужно. Из-под палки не учатся.

    Со вторым все понятно: надо либо создать условия, либо отказаться от этой деятельности, и перейти к другой.
    Кто-то отказывается, уходит на другие работы, в основном физические, неквалифицированные, просто чтобы не думать. И как правило остается там до конца, уже не в силах выбраться из болота рутины.
    Кто-то приспосабливается - отгораживает себе уголок, меняет работу на ту, что дает больше свободного времени, начинает работать по ночам, забивает шум наушниками, и т.п. костыли.
    Кто-то кардинально меняет свою жизнь - переезжает в сьемные квартиры, выделяет себе комнату, изолирует ее или устанавливает в доме режим тишины, в общем создает себе полноценные комфортные условия для творчества. Это если удаленка - многие именно из-за невозможности работать дома, предпочитают офисы, или специальные кафе или клубы для работы.

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

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

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

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

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Адрес страницы в студию. За бота, который умеет обходить рекапчу я бы дорого заплатил.
    Ответ написан
    6 комментариев
  • В чем смысл PostCSS сегодня?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В последнее время началась мода на PostCSS - много постов, статей о нем.

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

    Есть даже версия (не без оснований), что это - прародитель всех современных препроцессоров и веяний.

    Где ж это вы такое прочитали? postcss был попыткой решить проблемы, которые нельзя решить препроцессорами (или можно но долго).

    Окей, будем считать так, тем паче, что история коммитов на Гите это скорее подтверждает.

    Что именно подтверждает? сначала был Sass написанный рубистами что бы CSS можно было бы готовить так же нежно как они готовят HTML на HAML (кофескрипт туда же, рубистам хотелось сделать js похожим на ruby). И это заметте было в 2006-ом году! тогда и js был медленный, и V8 может только в планах был...

    Ведь все, что умеет PostCSS, умеют и препроцессоры

    postcss из коробки не умеет ровным счетом ничего. Он может только загрузить AST CSS файла и слепить из него обратно тот же CSS.

    И именно в этом сила postcss - модульность. Все существующие препроцессоры монолитны. То есть вы не можете просто так взять и добавить что-то свое туда. Да, в последних версиях less (и вроде как sass туда же подтягивается) у вас есть примитивный набор средств что бы вклиниться в процесс обработки AST документа и добавить какие-то примитивные вещи. Но это не удобно. Если вы хотите динамически менять проперти (например пересчитывать rem в em) или добавлять еще (опять же для того что бы руками не плодить в css кастыли для разных браузеров и делать это автоматом, на завязываясь ни на миксины и оставляя CSS чистым) свойств, но сделать это на less/sass сложно.

    Намного проще взять postcss и натравить это дело на результат работы препроцессоров.

    Давайте придумаем пример того, что можно легко и просто сделать при помощи пост процессоров и что сложно сделать с препроцессорами. Самое первое что приходит в голову - инлайнинг ресурсов. Например мелкие png-ки. Или работа с относительными путями, ресолвинг оных точнее. В этом случае мы с postcss напишем маленькую функцию, которая пробежится по всему абстрактному синтаксическому дереву и найдет использование url(). далее мы можем проверить размеры картинки и заинлайнить их (если у них размер достаточно маленький). Или собрать список всех задействованных картинок и использовать их потом (например что бы скопировать только то, что мы реально используем).

    Вот как-то так. А за счет того что мы имеем доступ целиком и полностью к формированию и обработке AST мы можем и синтаксис CSS развивать. Примерами могут служить многочисленные плагины аля cssnext и т.п. Можно даже большую часть фич sass в виде плагинов подключить.

    А самое забавное, что работает это все быстрее того же libsass на плюсах. За счет архитектуры (имею в виду не голый postcss а с набором плагинов добавляющих функциональность sass).
    Ответ написан
    Комментировать
  • Что лучше 1С или C#(ASP.NET)?

    @Oblomingo
    Конечно C#!
    1). Серьезный языкс с ООП и другими плюшками.
    2). Майкрософт его активно развивает и добавляет новый функционал.
    3). Востребован во всем мире.
    4). Можно делать все что угодно от десктопных программ до веба и мобильных приложений.
    5). Потихоньку становится мультиплатформенным (уже можно запускать простенькие приложения в Мак ОС и Линуксе).
    6). Очень хорошая и удобная среда программирования (IDE) aka Visual Studio.
    Ответ написан
    Комментировать
  • Что лучше 1С или C#(ASP.NET)?

    @Nokia7650
    web developer
    Странно сравнивать 1С и ASP.NET MVC. Если исходить из дохода - денежку можно рубить и там и там. Тут скорее что вам больше по душе. Если нравится 1С и устраивает быть в ее рамках - вперед. Не устраивает - .NET ждет вас. Зная ASP.NET MVC (а по сути C#) - не особо трудно будет переключиться на десктоп или мобильную разработку. Я к тому, что если вам захочется творить что-то свое, то в рамках .NET у вас практически не будет ограничений.
    Ответ написан
    4 комментария
  • Как реализовать скрытие номера телефона?

    keslo
    @keslo
    Думаю, что это стоит реализовать на JavaScript, а не на CSS.
    Ответ написан
    Комментировать
  • Чем куки отличаются от сессии в PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нууу давайте разбираться.

    Для начала почитайте про HTTP на той же вики. Досканально знать не нужно, но стоит минимально понимать структуру запросов/ответов, понимать что у запроса и ответа есть заголовки и тело (тела может и не быть, зависит от типа запроса/ответа).

    Так вот. Куки. Куки живут на стороне браузера. Они передаются HTTP заголовком на каждый запрос на сервер (даже если вы за картинками полезли). Есть просто куки, есть http-only куки. Куки могут быть разграничены по хосту и пути. Все это дает нам гибкость и помогает с секьюрностью. В PHP содержимое $_COOKIE предоставляет нам SAPI. Когда PHP получает на обработку запрос, SAPI используемое (php-fpm, cgi, mod_php имеют свои реализации SAPI) в данный момент берет заголовки и тело запроса, парсит их и заполняет все эти суперглобальные массивы типа $_SERVER, $_GET и в том числе и $_COOKIE. Все что прислал нам клиент (что-то что делает запросы это клиент, что-то что их обрабатывает - сервер), а куки шлет нам браузер только те что можно исходя из того куда шлется запрос. Устанавливаются куки заголовком Set-Cookie в ответе, то есть тут больше нужно читать в принципе про HTTP а не про PHP. PHP просто позволяет вам работать с этим добром. Вы можете сэтить куки напрямую работая с заголовками ответа при помощи функции header. Более того, если выставить время жизни куки в 0, то как раз таки они а не сессия будет сбрасываться при закрытии браузера так как тот будет забывать все такие куки.

    Вот... сессии... В PHP сессия обычно это файл. Просто какой-то файл с рандомным именем. Если скажем в php.ini указано session.autostart или делается вызов session_start то создается файл под сессию пользователя (можно переместить в рэдис или мемкэш, свое хранилище и т.д в зависимости от нужд. Так же данные можно шифровать, что по умолчанию и происходит). Этот файл имеет ID, просто какая-то рандомная строка. И если при обработке запроса не нашлась сессия с предыдущего запроса - создается новая.

    И вот мы подошли к самому интересному - как PHP связывает сессию с предыдущего запроса с текущей. И тут все довольно просто - куки. Когда пользователю присваивается сессия, автоматически сэтится http-only (что бы нехорошие люди не могли из js увести нашу сессию) кука, в которую записан идентификатор сессии. В дебагере браузера можете посмотреть есть ли у вас кука PHPSESSID (название можно менять в настройках, да и вообще сессии можно не только через куки связывать, но это уже загоны по секьюрности) когда будете эксперементировать с сессиями.

    Когда запрос обрабатывается SAPI, при наличии session.autostart, перед тем как начинать создавать новую сессию, пых все же смотрит а есть ли у нас кука с идентификатором сессии, проверяет есть ли у него такая, и если есть успокаивается и не создает новую. Поскольку сессия привязывается через куки, то можно выставить время жизни этой самой куки (в php.ini) и таким образом регулировать время жизни сессии.

    Вот... когда использовать куки а когда сессии? Желательно понимать, что чем больше данных в куках (а у них есть лимит к слову) - тем больше данных мы передаем на каждый запрос. То есть это не круто когда что бы получить 1 килобайт данных мы должны в заголовках передать пару килобайт кук. Люди, повернутые на оптимизации, даже картинки хранят на отдельных cookie-less доменах что бы уменьшить количество трафика и пакетов (обычно простенький HTTP запрос влазит в размеры одного TCP пакета). Если вам нужно работать с этими данными из JS на любой странице, например локаль выбранноую пользователем для того что бы применять переводы еще и в JS, то стоит использовать куки. Для всео остального лучше конечно же использовать сессии. Во всяком случае на начальных этапах когда что-то сильно сложное вам делать не придется.
    Ответ написан
    2 комментария
  • Какая разница между jquery 1.11.1 и 2.1.1?

    VEG
    @VEG
    В версии 1.11 поддерживают совместимость с IE6-8. В версиях 2.* от поддержки старых IE отказались. По функциям они одинаковые, просто версия 2.* немного легче из-за вырезанного кода.
    Ответ написан
    3 комментария
  • Хранение номеров телефонов?

    Noospheratu
    @Noospheratu
    ИБ-аудитор, консультант
    Можно использовать следующую схему:
    1) хранить в открытом виде до подтверждения через SMS.
    2) После подтверждения задача борьбы с фейковыми аккаунтами выполнена и открытый номер телефона уже не нужен. Теперь вычисляете хэш стойкой на текущий момент функцией и храните только её.
    3) А если нужно будет восстановить пароль от аккаунта, прислав его на SMS, то для это предлагаете ввести номер телефона, вычисляете его хэш, сравниваете с хранимым и, если совпадает — отсылаете информацию для восстановления пароля в SMS на введённый номер.
    4) По завершении восстановления пароля — введённый открытый номер уже не нужен и его можно удалить (хэш продолжаем хранить).
    Ответ написан
    Комментировать