• Сколько времени у Вас ушло с момента начала обучения до начала работы?

    mr_T
    @mr_T
    Web-разработчик
    От многого зависит. Если человек гуманитарий, то тяжко придется)
    Если нет багажа знаний по программированию в принципе (какие-то базовые понятия, паттерны, ООП и т.д.), то изучить-то ты изучишь, но толку с этого будет мало.
    Нужно еще понимать, что с созданием сайтов/web-приложений связано еще очень многое помимо знания непосредственно языка программирования: SQL, конфигурация сервера, права на файлы, сессии, HTTP заголовки... Дальше - больше: ORM, CMS/CMF какая-нибудь (а лучше какие-нибудь).
    В общем, PHP сам по себе - всего лишь язык, и нужно знать инфраструктуру этого языка.
    В итоге, отвечая на твои вопросы:
    1) От недели до бесконечности.
    2) Любым доступным. Вышка укажет (но не научит сама по себе), с чего начать. Книги дают основы. Гугл (в частности документация в его выдаче) дает все остальное. Видеоуроками, кстати, ни разу не пользовался, так как по мне быстрее прочитать. А, ну и практикуйся, без практики обучение - бесполезная трата времени.
    Ответ написан
    Комментировать
  • Конфигурация вебсервера?

    mr_T
    @mr_T
    Web-разработчик
    Так просто привязывай смело эти домены к серверу через управление DNS у DigitalOcean. Потом уже в настройках Apache (или Nginx, что у тебя там на фронте) привязываешь домены к соответствующей папке на сервере.
    Вроде тут никаких сложностей возникнуть не должно, да и сломать тут что-то тоже сложно.
    Ответ написан
    Комментировать
  • Как вырезать часть содержимого блока в другой блок?

    mr_T
    @mr_T
    Web-разработчик
    В приведенном коде функция find найдет тебе только непосредственно элемент с классом delimeter, а не те элементы, которые идут после него. Еще непонятно, зачем оборачивать в $ firstColumn, который уже является jquery-объектом. Нужно поправить код как-то так
    firstColumn.find('.delimiter').prev().nextAll().each( ... );

    А внутри each будет достаточно просто делать
    secondColumn.append($(this));
    ...так как здесь ты не копируешь элемент, а перемещаешь его в другой элемент.
    Ответ написан
    1 комментарий
  • Как анимировать только что созданный элемент в Angularjs без сторонних библиотек?

    mr_T
    @mr_T
    Web-разработчик
    Во-первых, нужно подключить в зависимости модуля приложения ngAnimate (не забыв сам скрипт подключить, само собой).
    Во-вторых, задать в css transition'ы для элементов, которые нужно анимировать.
    Дальше ангуляр сам поймет, что с этим делать, и если все правильно прописано в стилях, то, как говорится, все заработает само. Только нужно разобраться с классами, которые ангуляр подставляет для анимации (или настроить свои в config через $animateProvider).
    Подробнее тут и в гугле.
    Ответ написан
    7 комментариев
  • Какой метод лучше использовать для определения пустой и инициализированной переменной?

    mr_T
    @mr_T
    Web-разработчик
    Судя по $arResult ты имеешь дело с битриксом. Если это так, то $arResult за тебя уже инициализирован. В любом случае, проверку в пыхе стоит делать более осмысленно, а именно исходить из того, какой тип значения ты хочешь получить. Если у тебя, скажем, строка, то можно обойтись простейшим методом, которым я чаще всего пользуюсь сам:
    if (isset($arResult['somevar']) && $arResult['somevar']) { ... }

    Здесь ты для начала проверяешь, есть ли вообще такая переменная (или ключ в массиве), а потом смотришь, приводится ли она к false (а, как известно, пустая строка приводится, но, например, 0 тоже приводится, что нужно понимать). Потом уже в коде ты скорее всего где-то неявно приведешь переменную к строке, то есть, например, число 100500 будет приведено к строке '100500'.
    Для более строгой проверки можно использовать функции, подобные is_int, is_array и т.д., а так же instanceof. Еще, если не знаешь, то почитай про операторы == и === (!=, !==) - тоже по этой теме.
    Вообще, сравнение значений в условиях нестрогой типизации - достаточно обширная тема.
    Ответ написан
  • Как проверить переменную $_GET на целое число?

    mr_T
    @mr_T
    Web-разработчик
    Че-то как-то трудно тут все у вас)
    Почему бы не так?
    if (($id = intval($_GET['id'])) > 0) { бла-бла-бла }
    Ответ написан
    2 комментария
  • Как обработать дерево значений?

    mr_T
    @mr_T
    Web-разработчик
    Просто обходишь рекурсивно дерево, типа как в коде ниже. Я описал для объектов, ты можешь легко переделать под свои нужды в зависимости от того, в каком виде данные представлены. Ну и не очень понятно, что имелось в виду под "суммировать автоматом, остальное - инпуты".

    function treeRec($tree, &$acc) {
        foreach ($list as $k => $item) {
            if (<твое условие>) $acc += $item -> value;
            if (count($item -> children) > 0) treeRec($item -> children, $acc);
        }
    }
    
    $result = 0;
    treeRec($tree, $result);
    Ответ написан
    Комментировать
  • Можно ли соваться на Одеск с таким уровнем работы(фронтэнд)?

    mr_T
    @mr_T
    Web-разработчик
    Сам верстаю много, так что попробую дать советы, но это чисто мое мнение, поэтому постарайтесь реагировать на это соответствующе :)

    Сначала по вопросам непосредственно в этом посте:
    1) Заказчик может такое принять, а может и не принять - тут зависит от того, насколько он дотошен, вот и все . В любом случае нужно понимать, что редко бывает так, что заказчик что-то понимает в том, что вы делаете, поэтому его "хотелки" скорее всего будут относится к его субъективному восприятию внешнего вида сайта. Но так же нужно понимать еще и то, что внимание к мелочам дает хороший результат на это восприятие в том числе :)
    2) Лично я делаю так, чтобы в шаблоне просто можно было написать что-то вроде
    <? foreach ($slide in $slides): ?>

    <? endforeach; ?>
    и не париться о том, что произойдет дальше (в разумных пределах, конечно - чаще всего слайды должны быть определенных размеров, но об этом нужно говорить).

    Теперь по вашему коду:
    1) Попробуй использовать sass/less с автопрефиксами, компассами и пр. - очень будет удобно писать стили.
    2) Лично я крайне редко пользуюсь сторонними слайдерами, поскольку они часто используют кучу невнятных классов, дивов, врапперов, иннер-врапперов, аутер-врапперов, контейнеров и т.д., хотя чаще всего достаточно несколько строк в js, задача которых просто давать нужные классы нужным слайдам, и анимации в css - в итоге так даже быстрее, чем настраивать под себя какой-нибудь сторонний jquery слайдер. А если один раз сделать заготовку на будущее, то вообще все за пару минут можно сделать.
    3) Вместо спрайтов во многих случаях лучше использовать шрифтовые иконки (например, с icomoon.io). Например, для значков соц-сетей. Из приятных бонусов - шрифты можно красить в любой цвет и анимировать, а так же они векторные, что позволяет не париться по поводу дисплеев с высокой четкостью. Можно еще svg, но с ними немного сложнее, зато гибко.
    4) Обычно на подобных сайтах лепят фиксированное меню, которое сужается при прокрутке ниже (что, кстати, опять-таки решается css transition'ами и парой строк в js для задания класса типа small).
    5) #link-services feature лучше сделать не section, а article или figure - так будет правильнее семантически. А section'ами лучше сделать #link-services, #link-portfolio и т.п. Почитай на любом ресурсе о семантическом значении html5 тегов, там много интересного можешь найти :)
    6) Я бы как-то выделил элементы формы при фокусе, сделал их поконтрастнее, а то на некоторых экранах текст может сливаться с фоном инпута.
    7) p.section-description лучше сделать без класса вообще, а в css задать общий стиль для всех абзацев, изменяя его в конкретных случаях при необходимости.
    8) Раз уж сайт такой весь из себя анимированный, то что ж вы не сделали анимацию ссылок :) ? Хотя бы на работах в портфолио обязательно нужно это сделать, причем недостаточно просто картинок, нужны как минимум еще заголовки, которые могут, например, всплывать по наведению. Очень красиво получаются в таких моментах анимации transform: scale(...) вместе с opacity.
    9) header и footer не всегда по одному в одном документе, эти элементы могу вкладываться так же и в article или section. Как следствие лучше дать своим body > header и body > footer внятные классы или айдишники, иллюстрирующие их принадлежность ко всей странице, а не к отдельным блокам.
    10) .feature > aside я могу быть не прав, но мне кажется, что это семантически неверно. Aside должен показывать какую-то часть документа, которая помогает ориентироваться в контенте на сайте (например, фильтры, боковое меню). В твоем случае это просто иконка, так что тут лучше обойтись просто div'ом.
    11) По js: у вас какой-то странный блок сверху, где задаются глобальные переменные. Вы там используете jQuery, при этом не помещая код в $(document).ready. Весь код jQuery, связанный с селекторами (как минимум) всегда должен быть внутри ready. Да и какие-то странные конструкции там вроде var buttonAll = $('.works-button')[0], которые потом используются снова как $(buttonAll). Лучше в buttonAll записать строки с селекторами тогда уж, а не использовать jQuery 2 раза для одного и того же. Да и конструкции вроде $('.works-button')[0,1,2,3] довольно опасны. Тут лучше дать каждой кнопке какой-нибудь атрибут типа data-category (или вообще в href писать #category-name), и написать один обработчик для всех этих кнопок, который просто фильтрует работы по значению этого атрибута. Так будет проще в будущем что-то поменять, при этом совершенно не затрагивая код js.

    В общем, как-то так.
    Ответ написан
    4 комментария
  • Какое ваше мнение о Drupal?

    mr_T
    @mr_T Автор вопроса
    Web-разработчик
    По поводу почтовых уведомлений (если этот вопрос еще вообще кто-то смотрит): надо было просто покопаться в модуле Rules, который обеспечивает в частности функционал отправки почты и на мой взгляд даже на более крутом уровне, чем в битриксе. Хотя, наверное, в нем будет сложнее разобраться простым смертным, но давайте будем честны с самими собой - когда пользователи (заказчики) сами такой функционал настраивают? Все равно это всегда делает программист)
    Ответ написан
    Комментировать
  • QML: выделение элемента в ListView кликом мыши. Возможно?

    mr_T
    @mr_T
    Web-разработчик
    Посмотри про State, Transition и MouseArea в документации.
    Ответ написан
    Комментировать
  • Выбор первой IDE для С/С++ в кружке программирования?

    mr_T
    @mr_T
    Web-разработчик
    Пробовал VS, Eclipse и Qt Creator. Больше всего понравился последний. VS после работы в нем на C# при переходе на C++ показался мне каким-то кастрированным, что сразу меня отпугнуло. Это очень субъективно, от многих слышал, что VS отличный вариант. Eclipse — обычная IDE, ничего выдающегося, работает хорошо и ладно. Qt Creator сразу дает возможность быстрого создания гуевых программ, что приятно, но по сути вынуждет пользоваться библиотекой Qt (не знаю, плохо это или нет для вас, но мне она понравилась).
    Ответ написан
    Комментировать
  • Какую книгу по программированию лучше всего подарить будущему программисту?

    mr_T
    @mr_T
    Web-разработчик
    Думаю, для начала все же надо определиться с языком, так как чистая теория нткому не интересна (хочется же, чтобы работало!).
    А лучшего мотиватора к дальнейшему обучению, чем собственный рабочий код, и быть не может!
    По мне — хороший вариант C#. Точнее даже не столько он, сколько среда разработки VS. Кнопочек накидал, два раза кликнул, написал, что кнопка делает — программа уже работает! Хоть это и не даст сразу глубокого понимания ООП и не сделает гуру, но ведь первая задача — увлечь, а дальше уже дело техники.
    Боюсь схлопотать минусов, но можно попробовать PHP. Он очень простой, но слишком много прощает, так что с него в дальнейшем надо будет переключиться на что-то строго типизированное, но это после появления блеска в глазах. Еще PHP заставит хотя бы немного понять HTML, а это еще никому не вредило. А если потом еще и иметь дело с XML, то знание HTML точно не окажется лишним.
    Если ученик прилежный, то лучше всего C++, так он заставит понять такие базовые понятия как стек, куча, указатель и т.п. Я, например, уже зная C# действительно понял, что такое сборка мусора только после того, как поработал с указателями в C++. Это трудный язык, но зато другие после него пойдут достаточно легко.

    Ну а книжку выбрать не проблема — их огромный выбор по каждому языку. А какую конкретно выбрать — гугл всегда сможет подсказать.
    Ответ написан
    Комментировать