• Что почитать по веб-безопасности в 2016 новичку?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    1. Для того, чтобы понимать, как производится та или иная атака/взлом - нужно очень хорошо понимать, как работает и устроен тот или иной продукт, какие процессы происходят внутри него.
    В первую очередь, конечно же, следует тщательно разобраться с устройством сети(как работает интернет, что такое пакет, протоколы, из чего они состоят, dns и тд). Как работает фаервол, для чего он нужен и т.д. Также крайне советовал бы научиться основам системного администрирования. А также стать более-менее уверенным пользователем unix-like систем. (сложные команды можно подсмотреть в гугле), но перемещение, логи, отслеживание состояния системы, правила для фаервола - помнить, понимать и уметь использовать.

    2. После этого посмотреть в сторону sql или других БД, как они работают, какие можно допустить ошибки. XSS уязвимости.
    Понять, что такое утечка памяти и из-за чего она возникает.

    2.1 Методы шифрования, обмен ключами, длина ключа, шифры. Что такое VPN и т.д.

    3. Чтобы всё это было не скучно, предлагаю Вам участвовать в CTF, которые проходят во всем мире с завидной регулярностью.
    Следить можно здесь, например: https://vk.com/invulnerble

    Также можете попробовать потренироваться самостоятельно, для этого есть тестовые кейсы, например: OWASP
    https://www.owasp.org/index.php/Main_Page

    ОСТОРОЖНО! СПОЙЛЕРЫ!:(а точнее разбор заданий)
    https://habrahabr.ru/post/250551/

    4. Также материалы по безопасности и ресурсы для обучения периодически добавляю здесь: https://github.com/lgg/studying/tree/master/security

    upd:
    Как идет ДДос атака?
    Собственно изучив первый пункт, Вы найдете ответ.

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

    Как пишутся программы для подбора паролей
    Зависит от шифрования. Есть брутфорс, радужные таблицы и много других. Опять таки, когда Вы дойдете до методов шифрования, то тоже ответите на этот вопрос.
    Ответ написан
    3 комментария
  • Как правильно работать с gulp+git если я верстаю, а другой человек натягивает на wordpress?

    Хотелось бы увидеть пример небольшого подобного проекта, как это все реализовано.

    Срань господня! Вот же https://github.com/ - тонны отборного дерьма и куча великолепных проектов.

    Основы гита знаю, но пока не понятно как это все применить так что бы был толк.

    Ну так прочтите книгу. Вы же айтишник, в нашей среде без чтения никуда. "Pro Git", есть перевод на русском.
    Ответ написан
    Комментировать
  • Что все-таки должен уметь делать frond-end-разработчик?

    petermzg
    @petermzg
    Самый лучший программист
    Ajax(xmlHttpRequest), Web Sockets, Web Workers, Drag&Drop API, Shadow DOM, Web Components, Canvas, SVG
    это тоже должен знать/уметь frond-end-разработчик.
    Ответ написан
    Комментировать
  • Как изменить значения process.env на production по умолчанию?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Это значение переменной среды. Для юниксов вот: www.cyberciti.biz/faq/set-environment-variable-unix, для винды через GUI.
    Чтобы при запуске через forever тоже была выставлена переменная, можно добавить скрипт в package.json:
    "forever": "NODE_ENV=production forever app.js".
    Ответ написан
    Комментировать
  • Callback при использовании .trigger() Jquery?

    kalbac
    @kalbac
    Wordpress Developer Full-Stack
    При вызове метод .trigger() может принимать входящие данные в виде масива.
    (function( $ ){
    $('selector').trigger('click', ['Custom']);
    $('selector').on('click', function( event, data ){
    if( data == 'Custom' ) {
    console.log('Incoming data is Custom');
    }
    });
    })(window.jQuery);

    Тем самым вы уже можете понимать какое именно событие сработало и вызывать соответствующую функцию.
    Ответ написан
    Комментировать
  • Callback при использовании .trigger() Jquery?

    allard
    @allard
    Серийный программист
    Тригер просто создает событие, он не в курсе того что дальше делают ваши обработчики.
    Если вы вызываете события для набора элементов, то вы правы про промисы, без них никак не обойтись, т.к. не понятно когда отработают все обработчики для всех элементов набора...
    Если же, у вас четкая последовательность тригеров и элементы единичные и уникальные, то вызывайте следующий тригер в колбеке события сработавшего от предыдущего тригера.

    Думаю ничего нового для вас не сказал.
    Хотя возможно есть супер хаки для таких ситуаций, о которых мы не в курсе =)
    Ответ написан
    Комментировать
  • Как сделать ширину дива по весь экран?

    hronik87
    @hronik87
    Обитаю в 1С-Bitrix
    body{
    max-width: 1300px; //Убери
    }
    Ответ написан
    1 комментарий
  • Можно ли перескочить джуна и как это осуществить?

    @CapeRatel
    Итак категории:
    • "Джун" - это человек, который обладает знаниями мидла, то есть может закрывать все типичные задачи языка/framework'а, не требует обучения, а только наставления как сделать лучше, и не имеет стажа/небольшой стаж разработки над реальным проектом
    • Мидл - человек который уже поварился год/два в коммерческих проектах и может решить любую задачу или найти решение для нее, но не имеющий реального опыта решения разносторонних задач, а также проектирования и прочего блабла
    • Сеньор - полноценный разраб, за ним следить не надо. За плечами более 2-3 лет опыта. Имеет большой опыт в решение различных задач, не возникает вопросов как решить то, с чем не сталкивался. Проектировка, хайлоад не на слуху.
    • Тимлид - гуру мастер. Знает все и вся. более 4/5 лет стажа. Попробывал все что можно. Делал все что можно. Есть работающие хайлоад проекты. Может рулить тимой. Знает все о процессе разработки в команде и может его нормально наладить.


    Имхо же.

    Фриланс думаю ваш вариант.
    Ответ написан
    8 комментариев
  • Как найти количество общих элементов?

    @LeSDav
    Веб-разработчик
    Если в результате вы готовы получить не массив объектов, а объект с объектами, то могу предложить следующий вариант решения вашей задачи:

    var itemsResult = {};
    	items = document.querySelectorAll('.item');
    	
    	for (var i = 0; i < items.length; i++) 
    	{
    		var currUID = items[i].dataset.service_model+items[i].dataset.service_id;
    		
    		if (typeof(itemsResult[currUID]) == 'object')
    		{
    			itemsResult[currUID].count++;
    		}
    		else
    		{
    			itemsResult[currUID] = 
    			{  
    				"service_model": items[i].dataset.service_model, 
    				"service_id": items[i].dataset.service_id, 
    				"count": 1
    			};
    		}
    	}
    Ответ написан
    1 комментарий
  • Как в JS сделать функцию асинхронной?

    @tex0
    Алексей Тен: посоветовал пользовать setTimeout

    в NodeJS есть метод
    process.NextTick(callback(){
    //ваш код
    });

    В Node работает всего два потока (по умолчанию. Вроде бы можно как-то запустить дополнительные event-loop'ы, но это совсем другая история). Первый - main поток, исполняющий ваш код, второй - поток обработки асинхронных операций (EventLoop). Пока вы свой код не поместили в очередь на выполнение, он будет выполняться в синхронном режиме, т.е. в потоке main.
    process.NextTick помещает ваш код в очередь и сразу же возвращает управление main-потоку.
    Вроде как-то так.
    ЗЫ: Поправьте, если я где-то ошибся.
    Ответ написан
    Комментировать
  • Как правильно организовать деплой приложения?

    shebanoff
    @shebanoff
    Я увидел в Вашем вопросе две части.

    Как правильно организовать деплой (выкладку работоспособного кода на сервер)?


    В самом простом случае Вам подойдет связка ssh + git pull на сервере. В этом случае на сервер будут доставлены патчи коммитов, которые есть в репозитории, но еще не появились на сервере, т.е. «только обновления файлов, которые сейчас существуют». Этот метод довольно подробно обсудили в ответах на другой вопрос.

    Если хочется автоматизировать процесс, что похвально, то я вижу три доступных инструмента для этого: Capistrano, Mina (мой персональный фаворит) и Vlad the Deployer. Все три проекта схожи по сути. Принцип их работы таков:
    1. Подключиться к целевому серверу.
    2. Залить обновление кода из репозитория.
    3. Выполнить предписанные Вами инструкции (перезапуск демонов, сброс индексов, обновление структуры БД и прочее).
    4. ...
    5. PROFIT!


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

    Как организовать процесс тестирования?


    Если Вы еще не определились с методикой тестирования (Test Driven Development, Behavior Driven Development, Лень-Driven Development), то Вам следует для начала заняться именно этим.

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

    В какой-то момент речь может зайти о Continious Integration. Это возможность иметь стабильный билд в любой отрезок времени, а так же принимать решение о годности каждого отдельного коммита. Сопряжено с деплоем кода на integration-сервер и запуском на нем тестов. Скорее всего, это Вас не интересует, если Вы не работаете в команде. Но, для полноты картины, Вы можете понаблюдать за билдами на Travis CI известных Open Source проектов: Symfony 2 и Ruby on Rails.

    Таким образом


    Вы не указали, какие конкретно инструменты для разработки Вы используете. Если же с деплоем все гораздо проще, то при выборе инструментов для тестирования я рекомендую Вам ориентироваться на те, которые нативны для Вашего основного фреймворка и языка (PHP, если правильно понимаю) и привычны их пользователям. Это позволит быстро применить устоявшиеся практики к Вашему проекту и понять всё на деле.

    Приведите в порядок Ваш репозиторий с кодом, используйте mina для деплоя и запускайте тесты на Вашей локальной рабочей машине. Как только Вы почувствуете, что этого не достаточно — Вы наверняка уже будете знать, куда шагать дальше.
    Ответ написан
    8 комментариев