• Как писать тесты?

    nonlux
    @nonlux
    Ну тесты бываю разными: и зелеными и красными. ))

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

    Я как ярый сторонник BDD использую два типа тестов feature (читай интеграционные тесты) и spec (читай юнит тесты)

    Итак, features. Берем Behat и херачем кучу тестов по типу:
    Зашел на главную,
    Потыкал чего-то в форме регистрации
    Зашел в профиль и увидел свое имя и фотку на странице
    Profit!

    Вот в целом и получили: "Непосредственно регистрация с занесением в БД", только в этой ситуации нам абсолютно не важно что там в БД. Нам важно чтобы пользователь зарегистрировался и попал в закрытый раздел сайта.

    Для таких тестов хорошо иметь поддержку окружения (prodaction, development, test) в коде, чтобы например можно было капчу отключить или еще какую сложную лабуду не делать.
    Если система замудрена до ужаса придется здесь для тестов все окружение поднимать. А лучще вообще отдать CI такое делать пусть друг трудится.
    Плюс таких тестов например когда пишем сложный фронт - сложный бек и еще более сложнейший бек-бек, то можно одним чохом протестировать работу всего сервиса.

    Следующий уровень абстракции spec:

    Если нам в интеграционных тестах было немного пофиг на БД. Она как бы пишет, но что так за структура абсолютно пофиг. То в случае со спекими нам ВАЩЕ ПОФИГ.
    Мы берем наш класс (функцию) и проверяем что за результаты она отдает. Вместо объектов, с которыми подопытный (объект тестируемого класса), даем ему резиновую бабу (моки и т.п), и смотрим на результаты нашего труда.

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

    Вот как то так!

    P.S тесты надо бы писать до кода.
    Ответ написан
    2 комментария
  • Какой максимально эффективный способ защиты от скачивания изображений с сайта вы знаете?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Самое простое - Watermark.
    2. Сложнее - частичная доставка с сервера выбранной области изображения с шифрованием и расшифровкой на клиенте, и никогда не отображать изображение целиком. (т.е. типа контейнера со скроллом внутри канваса по аналогии с гугл-мапс).
    3. Хардкорный стиль - Adobe Flash Application!
    4. "Puzzle" - "хаотичная" (только с виду!) динамическая нарезка в режиме спрайт-карты и сборка через js. Формула - тоже разная каждый раз.
    5. "Калька" - многослойное изображение из нескольких с альфа-каналом (с прозрачностью)
    6. Класть изображение в JS-контейнер на серверной стороне, помещая в него метод отображения с привязкой к IP и браузеру клиента, и ровно на 15 секунд (чтобы загрузил и всё) и бинарные шифрованные данные, после загрузки скрипта у клиента - запрашивать токен с сервера на расшифровку данных.
    (методы можно комбинировать)
    Ответ написан
    4 комментария
  • Каковы Возрастные ограничения в программировании?

    hronik87
    @hronik87
    Обитаю в 1С-Bitrix
    Раз в день стабильно появляется похожий вопрос. Мне 28, год назад ничего не знал ни о HTML, ни о CSS, ни о JavaScript, ни о PHP. Сегодня работаю в хорошей компании, верстка у меня на твердую 4, JavaScript на 3+(библиотека JQuery в основном, но могу и на чистом написать что-нибудь полезное), PHP начал осваивать месяц назад, но уже есть довольно неплохие результаты. Было ли мне сложно в самом начале? Да! Я не знал ничего об этой сфере. Спал по 4 часа в сутки прямо возле компьютера, шаблон разрывало и я начал уже вслух разговаривать с собой. У меня не стояло выбора поучить сегодня или нет. У меня стоял выбор пойти поссать и дальше учить или все же потерпеть, а потом уже сходить когда невмоготу будет. И я сейчас в той сфере которая мне нравится, я постоянно учусь и я не остановлюсь. Так что если ты уверен, что это твое, то любыми правдами и неправдами учи, старайся, вникай. И все получится)
    Ответ написан
    14 комментариев
  • Как изменить текст у дочернего элемента после клика по родительскому?

    У вас получается при преобразовании объекта, вот такой селектор:
    $("[object Object] #resp")

    Вот так должно сработать:
    $($(this).attr('id') + " #resp").text(response);
    // Или
    $(this.id + " #resp").text(response);

    Так можно сразу по ID обращаться.
    Ну или так:
    $("#resp", $(this)).text(response);
    Ответ написан
    2 комментария
  • Обвиняют в неправомерном доступе к серверу, как быть?

    По такой мелочи не будут судится, можете позвонить сами руководителю А, спросить как дела, рассказать про ситуацию с руководителем Б, выразить сожаление что сервер упал и попытаться по-доброму объяснить что не вы его роняли т.к. зла не держите, объяснить что не хотите сейчас соваться в это потому что когда двое занимаются одним сервером ничего хорошего не выйдет. В конце попросить не поддаваться на провокации и если какие-то сомнения у него пусть всё же сначала вам наберёт по телефону.
    Ответ написан
    1 комментарий
  • Как лучше всего реализовать несколько регистраций на 1 email ?

    kompi
    @kompi
    nullstack devoops
    У меня для мультисайтовости с одной бд используются префиксы, которые автоматически добавляются к email, в зависимости от сайта.
    Единственный момент, нужно убирать префиксы перед выводом email на экран.
    Ответ написан
    1 комментарий
  • Что делает этот код?

    @buzzi888
    Это реализация механизма подписок pub/sub.
    Используется примерно так:

    подписка на события
    obj.on('fire',function(data){
        //здесь обработка события
    });


    вызов
    obj.trigger('fire',data);
    Ответ написан
    Комментировать
  • Связка HTML/CSS + Python?

    Rrooom
    @Rrooom
    Какая, к чертям, для начинающего разница фронтэнд-бэкэнд?

    Мне сейчас главное получить работу,


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

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

    Если нет - смотрите вакансии - даже в самом захолустье есть вакансии без опыта или прямо с поиском джунов. Плевать какая технология. Программит - это программист, а не java- или js- или шарпо- скриптер Читаете все слова. Учите, проходите туториалы, гоняете себя по вопросам "собеседование *имя основной технологии*". Максимум - неделя-две. С этими знаниями и головой на плечах вас берут. Затем идете работать-учиться. За полгода-год станете достаточно уверенным специалистом.
    Ответ написан
    3 комментария
  • Как организовать хорошую и удобную файловую структуру для легкого масштабирования проекта на PHP?

    deadbyelpy
    @deadbyelpy
    веб-шмеб
    гляньте на фреймворки, люди уже собаку на этом съели.
    Symfony2, Phalcon, Zend2, Yii и т.д.
    Ответ написан
    3 комментария
  • Как сделать последовательное выполнение функций javascript?

    @vdem
    function1();
    function2();
    function3();

    Куда уж изящнее?

    UPD:
    Допустим, каждая функция нам может сказать, когда там у нее внутри всякие процессы позавершаются, и говорить она будет через callback:
    function func1(callback) {
        ...
    }

    Предположим, что у нас есть N подобных функций, сделаем последовательность из них:
    var funcQueue = [func1, func2, ..., funcN];
    Теперь:
    function callSequently(funcQueue) {
        if(funcQueue.length) {
            (funcQueue.shift())(function() {
                callSequently(funcQueue);
            });
        }
    }
    callSequently(funcQueue);

    Что-то я намудрил здесь... Но пусть будет.
    Ответ написан
    9 комментариев
  • Как правильно писать php вставки в tpl файлах?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Код выше вполне нормальный. Последние две строчки можно объединить, на работе скрипта это не скажется. Но тут есть один момент. Шаблон - это обычно html-текст, и php-инструкции в нём чужеродные (с точки зрения html), и даже расширения таких файлов обычно делают не .php, а .phtml - чтобы подчеркнуть, что это не php-скрипт с кодом. Поэтому в таких случаях используют специальный формат записи php-инструкций, причём обычно пытаются одну команду расположить в одну строчку, и не смешивать php и html в одной строчке. С этой точки зрения лучше не объединять эти две строчки в одну инструкцию php.
    Я обычно не пишу скобки, как в коде выше, я использую второй вариант открытия и закрытия блоков, без фигурных скобок:
    <div id="container">
    <?php if ($count>0): ?>
        <?php foreach($items as $item): ?>
            <div class="item"><?=$item?></div>
        <?php endforeach ?>
    <?php endif ?>
    </div>

    Но лучше поиграйтесь с этим вариантом и переходите на внешний шаблонизатор, например Twig. (вот есть урок по его встраиванию в сайт без фреймворка)
    Ответ написан
    1 комментарий
  • Как провести регистрацию максимально классно?

    morozovdenis
    @morozovdenis
    фейсбук, твиттер, для русских vk

    и оставить обычную для консервативных

    ни каких подтверждающих ссылок на почту(только в случае острой необходимости). лучше пусть функционал будет недоступен пока пользователь не перейдёт по ссылке из почты что-бы подтвердить(так же должна быть возможность повторно выслать). в общем брать минимальную инфу от пользователя для минимального функционала сайта, всё остальное просить по мере необходимости
    Ответ написан
    1 комментарий
  • Как обращаться к определенному объекту по классу?

    pavel_salauyou
    @pavel_salauyou
    Symfony2 & Angular разработчик
    $(".class1").each(function() {
        total += parseInt($(this).text());
    });
    Ответ написан
    Комментировать
  • Как обращаться к определенному объекту по классу?

    var sum = 0;
    $('.class').each(function(){sum +=parseInt($(this).text())});
    Ответ написан
    Комментировать
  • Как передать переменные между функциями одного класса?

    akubintsev
    @akubintsev
    Опытный backend разработчик
    Если я правильно понял, то речь идёт о многоступенчатом заполнении формы. Тогда в самом простейшем случае можно использовать сессию.
    Ответ написан
    Комментировать
  • Как имитировать клик на jQuery/JS?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    setTimeout(function(){
      $('button').trigger('click');
    }, 1000);
    Ответ написан
    7 комментариев
  • Как сделать, чтобы option передавал число?

    @portfelio
    <select class="form-control" name="cpu">
    	<option value="1">1CPU</option>
    	<option value="2">2CPU</option>
    	<option value="3">3CPU</option>
    	<option value="4">4CPU</option>
    </select>
    Ответ написан
    6 комментариев
  • Как создать автоматически генерируемое число ПИ?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    Сначала подумал - что, б..ть, за бред.
    Потом посмотрел на автора вопроса - все ок, ребята, для него вопрос вполне нормальный.
    Ответ написан
    Комментировать