• Кто такой кодер? и чем он отличается от программиста?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Программист - это тот, кто не бегает к другим с вопросами "как мне сделать ту или иную фичу".
    Кодер - тот к то бегает с такими вопросами к программисту.

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

    Кодер работает над кодом, программист - над проектом.
    Ответ написан
    5 комментариев
  • Разве у админов тостера есть право решать, какой вопрос ведет к спору, а какой нет?

    @386DX
    Ты не поверишь, они и забанить могут.
    Ответ написан
    Комментировать
  • Как сделать редактор страниц?

    Symphony
    @Symphony Куратор тега CSS
    Ответ написан
    Комментировать
  • Почему ID в БД идут не по порядку?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как и многие начинающие, ты путаешь понятия "уникальный" и "красивенький по порядку".
    Ответ написан
    Комментировать
  • Как определить IP localhost?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    Во всех mysql-библиотеках захардкожено, что localhost - это сокет "на диске" (по дефолту в никсах - /var/run/mysql/mysql.sock, что ли).
    А так - это в файле hosts определяется.
    Ответ написан
    Комментировать
  • Как сравнить изображения?

    @GreatRash
    Ответ написан
    Комментировать
  • Ребят я не понимаю. что с игрой?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Знак божий, что нефиг играми бесовскими железо и сознание осквернять, а на каникулах лучше книжку какую-нибудь классическую прочесть.
    Ответ написан
    1 комментарий
  • Как можно сделать, чтобы заказчик не мог скачать твои исходники HTML, CSS и JavaScript и скрыться с ними?

    zooks
    @zooks
    Frontend
    Защищать код не нужно, нужно научиться думать на шаг вперед.

    Высылай скриншоты страницы из нескольких браузеров (Firefox, Chrome, IE11), пускай проверяют. Можно показать фрагмент кода, но не целиком, если заказчик новый. (иногда бывает наоборот, что исполнитель нагородил говнокода, просто порезал картинки и расставил позиционированием элементов).

    И дельный совет на будущее: если за заказчиком висит должок, даже маленький, не начинай новую работу до полного расчета.
    Ответ написан
    Комментировать
  • Какая есть максимально лёгкая актуальная CMS на PHP + MySQL (мультиязычность, управление пользователями) ?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Под определение попадает то, над чем я работаю: https://github.com/nazar-pc/CleverStyle-CMS
    Регистрация, авторизация (в том числе через соц. сети), группы, права доступа пользователей есть.
    БД есть, со специальным трейтом CRUD для упрощения рутинных операций.
    Полноценная многоязычность как интерфейса, так и контента.
    Список пользователей получить легко, вывести на страницу тоже.
    Шаблон - простой html файл с местом куда подставляется контент, при желании можно прикрутить любой шаблонизатор, легко портировать любой существующий html шаблон.
    Структура, конечно же, модульная.
    Есть другие полезные штуки, как то повсеместное кеширование (0 запросов в БД на большинстве страниц со стороны ядра), поддержка Polymer (Web Components), и при этом намного меньше и проще любой другой упомянутой здесь.
    Из минусов - комьюнити пока нет, как компенсация - готов активно помогать и содействовать в том, что не описано в документации в wiki.
    Ответ написан
    7 комментариев
  • Что представляет собой тестирование ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вообще вики можно для начала, а потом уже углубляться в литературу. Вот вам кратенькое описание, цель которого больше предоставить ключевые слова для поиска.

    Модульные, они же юнит тесты, предназначены для тестирования отдельных модулей/классов. Суть их в том, что мы тестируем поведение только одного класса за раз. Если класс ссылается на инстансы других классов - мы их мокаем. То есть подсовываем им фэйковый класс, который имеет тот же интерфейс, но внутри не реализациа методов, а проверка, вызывали ли метод, с каким аргументами, сколько раз вызывали и т.д. Так же методы мока могут возвращать стабы (заглушки), какие-то захардкоженные под какой-то кейс данные. То есть если мы пишем класс по работе с базой данных, сокет-сервер и т.д., нам стоит соединение с базой, сокеты и т.д. оборачивать в классы, что бы можно было потом подменить на моки это добро. Если у вас в юнит тестах идет реальная работа с файловой системой или что-либо в этом духе, то это уже попахивает интеграционными тестами. Подробнее можно почитать в документации к phpunit. Так же есть такая методология разработки как TDD, советую почитать "Экстримальное программирование" Кента Бэка в этом ключе.

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

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

    Функциональное тестирование - это тестирования всего приложения в сборе. Если это REST API, то у нас через curl дергаются реальные методы, отправляются более менее реальные запросы и валидируются ответы. Если web-страничка, то это UI тесты с силениумом/phantom.js/zombi.js или, если нам не нужно еще и js тестить, просто curl + какой виртуальный браузер на том же php. Вообще по хорошему функциональные тесты не допускают никаких моков и т.д. но опять же если очень хочется то можно (опять же обращение к сторонним сервисам, контроля за которыми у нас нету).

    Но реалии таковы, что UI тестами покрывать проект не слишком удобно. Вопервых UI может меняться, а поддерживать их так же нужно. Во вторых это скучно. В третьих тесты могут просто падать... вот взяли и упали. И потом начинается, так, тесты опять упали... что там упало? А, не страшно, можно релизить. Так же на больших проектах UI тесты отрабатывают долго, очень долго, некоторых их просто ночью гоняют. Толку от тестов при таком подходе не слишком много, ибо разработчику стоит знать о том что что-то сломалось как можно быстрее. А так он приходит, видит что тесты опять красные, чинит эти красные тесты, и запускает... ждет... проходит пол часа к примеру, и где-то в другом месте отвалилось... Короче сами понимаете.

    Приемочное тестирование - по сути те же функциональные тесты, но подаются в контексте фича-спеков. Если вы работали когда-нибудь с QA отделом, то возможно слышали про такие штуки как acceptance criteria. То есть это тот чек лист, который должен проверить тестировщик что бы удостовериться что все хорошо. На основе этого чек листа можно написать функциональные тесты. Так же есть инструменты вроде Cucumber/Behat, которые позволяют писать спецификации в виде стэпов. В этом случае спецификации для этих инструментов могут писать QA а вы просто имплементите для них степы. То есть уменьшается прослойка между "acceptance criteria" и готовыми к выполнению тестов. Более того, стэпы можно реюзать, комбинировать, масса стэпов есть готовых, вам же необходимо только предоставить стэпы подготвалливающие систему (загрузка/генерация фикстур и т.д.). Короче лепота и удобно. Но медленнее интеграционных, зато не такие жесткие как функциональные, за счет этого их проще поддерживать. QA пишут спеку, реализуем тесты под эту спеку, пишем код под тесты, тесты зеленые - функционал готов.

    Ну и есть еще всякие термины типа пирамида тестов и т.д. Мол лучше много юнит тестов, чуть поменьше интеграционных и мало функциональных. Тогда тесты выполняются быстрее, а покрывать все и вся функциональными тестами обычно перебор.

    Ну и опять же, есть такая вещь как здравый смысл. Некоторые вещи скажем можно вообще забить и не покрывать тестами, некоторые стоит покрыть. Некоторые не полностью, некоторые с как можно большим покрытием.... Скажем тестить UI (именно как выглядит, где какой элемент) вообще бессмысленно. На это нужно куча ресурсов. Хотя может и есть проекты где это оправдано.

    Короче почитайте про TDD и ATDD (можно и BDD затронуть, но тут не только от программиста зависит, менеджеры, заказчик или продукт-оунер тоже должны быть вовлечены, по сути этот подход хорошо работает в рамках продукта какого-то, на фрилансе и в аутсорсе редко можно встретить) , Continious Integration и Continious Delivery.
    Ответ написан
    Комментировать
  • Как правильно импортировать CSV в SQL?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    dev.mysql.com/doc/refman/5.1/en/load-data.html
    LOAD DATA INFILE can be used to read files obtained from external sources. For example, many programs can export data in comma-separated values (CSV) format, such that lines have fields separated by commas and enclosed within double quotation marks, with an initial line of column names. If the lines in such a file are terminated by carriage return/newline pairs, the statement shown here illustrates the field- and line-handling options you would use to load the file:

    LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
      FIELDS TERMINATED BY ',' ENCLOSED BY '"'
      LINES TERMINATED BY '\r\n'
      IGNORE 1 LINES;


    UPD
    Если очень хочется - можно сделать импорт из экселя:
    dev.mysql.com/doc/refman/5.6/en/mysql-for-excel-in...
    dev.mysql.com/doc/refman/5.6/en/mysql-for-excel-ex...
    Ответ написан
    6 комментариев
  • Как сделать портфолио?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Все просто: jsfiddle.net/b33wT

    <div class="menu">
        Выбираем:
        <button class="btn" data-type="design">Дизайн</button>
        <button class="btn" data-type="html">Верстку</button>
        <button class="btn" data-type="php">Программирование</button>
        <button class="btn" data-type="all">Всё</button>
        <button class="btn" data-type="none">Ничего</button>
    </div>
    
    <div class="portfolio">
        <div class="item type_design">Дизайн 01</div>
        <div class="item type_design">Дизайн 02</div>
        <div class="item type_design">Дизайн 03</div>
        <div class="item type_html">Верстка 01</div>
        <div class="item type_html">Векстка 02</div>
        <div class="item type_html">Верстка 03</div>
        <div class="item type_php">Программирование 01</div>
        <div class="item type_php">Программирование 02</div>
        <div class="item type_design type_html">Дизайн + Верстка 01</div>
        <div class="item type_design type_html">Дизайн + Верстка 02</div>
    </div>


    var $buttons = $(".btn"),
        $items = $(".item"),
        type;
    
    $buttons.on("click", function () {
        type = $(this).data("type");
        selectItems();
    });
    
    var selectItems = function () {
        switch (type) {
            case "all":
                $items.show();
                break;
            case "none":
                $items.hide();
                break;
            default:
                $items.hide();
                $items.filter(".type_" + type).show();
                break;
        }
    };
    Ответ написан
    4 комментария
  • Каков план личностного развития PHP программиста с нуля?

    konst20
    @konst20
    Программист, преподаватель, немного электронщик
    Есть опыт помощи таким начинающим.
    реальный срок до запуска джуниора - полгода, никого не слушайте.

    Важные моменты
    веб-программирование на базе PHP - это стек технологий: PHP/SQL/CSS/HTML/JS + Linux хотя бы азы + знание важных инструментариев (FTP, Git/SVN, работа с БД)
    чистый PHP плюс даже все перечисленное выше - не особо нужно и не интересно. Нужно знание конкретных платформ: фреймворков и/или CMS. (Почитайте вакансии на Хантиме по запросу PHP, обратите на это внимание). Навскидку самые востребованные (спорно конечно): Yii фреймворк, CMS Битрикс и Wordpress.

    Как начать?
    Смело на амбразуру!
    1) Установите у себя рабочую среду LAMP/WAMP - Apache, PHP, MySQL. Для этого возьмите пакет Denwer или OpenServer, что больше понравится. Сделайте Hello World просто как HTML, потом на PHP, потом алертом на JS. Порадуйтесь.
    Установите все редакторы кода. Кто там вам будет рекомендовать блокнот или notepad++ - не слушайте. Варианты: если машина мощная (4+ Гб памяти и пр.), берите редактор phpStorm (для php/html/css/js). Если не очень мощная - берите komodo edit. Для работы с БД инструмент встроен в Denwer/OpenServer, это phpMyAdmin
    2) Идеально, если вы договоритесь сделать кому-нибудь сайт. Бесплатно или за небольшую плату. Если нет - сами себе поставьте задачу: сайт про котиков/про детей etc. Красивый сайт, с галереей, с эффектами, с материалами
    Возьмите CMS Wordpress и попытайтесь сделать сайт у себя на компьтере. Настоящий сайт, во всей красе, как вы хотите. Правьте его, смотрите код, экспериментируйте. Сообщество огромное, вы найдете ответы на все свои вопросы
    Потратьте чуть денег, купите себе домен и хостинг, залейте сайт на хостинг.
    Порадуйтесь. Похвастайтесь.
    3) Ищите в сети тестовые задачи и решайте их, изучайте материалы собеседований, вопросы - их много.
    4) Зарегистрируйтесь на odesk.com под каким-то фейковым email, пройдите тесты по PHP, CSS, HTML, jQuery, Wordpress, а во время прохождения делайте скриншоты вопросов. Потом изучайте эти вопросы, ищите ответы, далеко не обязательно на все. Тесты вы, конечно, не пройдете, но вам нужны только вопросы.
    5) Постоянно следите за вакансиями "PHP-программист", "веб-программист" на Хантиме, на hh.ru и подобных ресурсах.

    И да, как только напишете первую строку кода - начните читать про Git. Как будете готовы - сразу внедрите у себя Git, вы будете очарованы его возможностями.

    Вот как раз на полгода.
    После этого у вас появится масса информации, и дальше вы сами сориентируетесь.
    Ответ написан
    11 комментариев
  • Почему метод обернут анонимной функцией?

    0lorin
    @0lorin
    программист
    var fade = $('div').fadeTo('fast', 1);
    var fade = function(){
        $('div').fadeTo('fast', 1);
    }

    Чуешь разницу?
    В первом случае в fade запишется результат выполнения $('div').fadeTo('fast', 1);
    Во-втором — функция, которая будет это дело выполнять при каждом вызове fade().
    То есть если не оборачивать в анонимную функцию, fadeTo сработает при навешивании события, а не когда оно выстрелит.
    Ответ написан
    4 комментария
  • Нужно ли хорошо знать математику, чтобы стать программистом? (в частности PHP разработчиком)

    Нужна не совсем математика, как математический склад ума, абстрактное мышление и знание простейших операторов.
    Ответ написан
    Комментировать
  • Какой скрипт PHP авторизации выбрать?

    0neS
    @0neS
    Я в свое время тоже писал велосипед для авторизации. Для надежности подглядывал сюда.
    Ответ написан
    Комментировать
  • Как организовать защиту от парсинга сайта?

    opium
    @opium
    Просто люблю качественно работать
    Кому надо тот и ручками спарсит и этим все сказано.
    Ответ написан
    2 комментария
  • Существует ли альтернатива Denwer для windows?

    aumk
    @aumk
    Проблемы с Денвер? Первый раз слышу. Работаю с денвером 3 года и никаких проблем. И на нем работает любая веб технология.
    Ответ написан
    1 комментарий