Задать вопрос
  • Что отличает freelance программиста от корпоративного?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Проблема как раз таки в том, что нужен опыт командной разработки. То есть если вы фрилансер и вы работаете еще с десятком человек - то это не сильно отличается от "корпоративного" разработчика.

    А по поводу стэка... ну как правило фрилансеры одиночки плохо знают git/hg (commit, push что еще надо), не знакомы с такими вещами как CI, CD, не пишут тесты. А что уж говорить о методологиях разработки, их и "корпоративные разработчики" частенько не понимают.
    Ответ написан
    18 комментариев
  • Как именно плейсхолдеры (подготовленные выражения) защищают от sql-инъекций?

    Подготовленные выражения защищают от SQL-инъекций тем, что отделяют синтаксис запроса от значений параметров запроса. Суть любой SQL-инъекции - изменить синтаксис (текст, если угодно) запроса тем или иным образом. Если вы передаете текст запроса и параметры отдельно, не будет никакой возможности повлиять на синтаксис запроса из параметра запроса.

    В случае поддержки со стороны СУБД, подтоговленные выражения PHP должны использовать возможности СУБД и передавать ей сначала текст запроса для компиляции, а уже потом, отдельно - параметры запроса.

    Теоретически, проблемы могут быть только в случае, если prepared statements не поддерживаются самой СУБД и эмулируются PDO (т.е. на стороне скрипта, а не БД). Тогда косяки в реализации сборки конечного запроса могут сказаться на безопасности. В случае поддержки со стороны СУБД "реализовывать" просто напросто нечего - вы защищены от инъекций не за счет экранирования всего и вся, а за счет правильного подхода - никогда не смешивать сам запрос и его параметры.

    Насколько мне известно, mysql уже давным-давно поддерживает prepared statements, поэтому не вижу смысла бояться их использовать. А даже если б это было не так, вероятность в том, что при ручной сборке запроса накосячите ВЫ - гораздо выше.

    UPDATE: полезнейший коммент на странице php.net/manual/ru/pdo.prepare.php:
    With PDO_MYSQL you need to remember about the PDO::ATTR_EMULATE_PREPARES option.

    The default value is TRUE, like
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,true);

    This means that no prepared statement is created with $dbh->prepare() call. With exec() call PDO replaces the placeholders with values itself and sends MySQL a generic query string.

    The first consequence is that the call $dbh->prepare('garbage');
    reports no error. You will get an SQL error during the $dbh->exec() call.
    The second one is the SQL injection risk in special cases, like using a placeholder for the table name.

    The reason for emulation is a poor performance of MySQL with prepared statements. Emulation works significantly faster.

    Так что да, есть доля внезапности в поведении PDO. Я думаю стоит порыть инфы о настройке PDO::ATTR_EMULATE_PREPARES. Я считаю, что включать по-дефолту именно эмуляцию - это в высшей степени недальновидное решение. Проблемы MySQL затыкаются на стороне стандартной библиотеки языка....
    Ответ написан
    2 комментария
  • Как правильно оценивать стоимость верстки страницы?

    @tovogukA
    Любая оценка, любая цена - это только нахождения баланса между спросом и предложением.
    Цена может быть любой. Вообще любой.

    Если у исполнителя куча свободного времени - цена падает.
    Если у исполнителя нет свободного времени - цена растет.

    Никаких других критериев нет.

    Я за такое взял бы в 10 раз дороже (это не преувеличение) даже без учета адаптивности, чем ваша оценка 2 000 рублей с адаптивностью, потому что у меня рабочее время расписано на 2 месяца вперед.

    И, как показывает моя практика, эту сумму действительно с удовольствием платят.
    Ответ написан
    2 комментария
  • Каналы, сайты, блоги по верстке из psd грамотных ребят. Кто поделится?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Смотрите дайджесты на Хабре, по фронту и там куча хороших ссылок всегда.
    https://habrahabr.ru/company/zfort/blog/273557/
    https://habrahabr.ru/company/zfort/blog/278711/
    и т.д.. Их там 200 штук.
    Если конкретные вопросы, то лучше просто ищите конкретный ответ.
    А подкасты и остальное просто так без текущей задачи бессмысленное занятие.
    Это ИМХО. Только на своем опыте хорошо практикуется.
    Ответ написан
    Комментировать
  • Как можно сделать кнопку в виде стрелки, для ie8?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Не нужно стараться для IE8. Общее правило - деградация для старых браузеров. Все фронтендеры придерживаются этого правила. Слишком много усилий требует поддержка красивостей в старых браузерах, ничем не оправданных усилий.

    Реальные пользователи IE8 и ниже живут в прошлом. Они привыкли к квадратному вебу, и не нужно пытаться им подсунуть новомодные фишечки. Они либо их не поймут, либо те костыли, с помощью которых вы их реализовали, вызовут на их древних компах такие тормоза, что вы только хуже сделаете.
    Ответ написан
    2 комментария
  • Можно ли диву со свойством display: table-cell указать height: 100%?

    27cm
    @27cm
    TODO: Написать статус
    Поменяйте display: table-row у родительского элемента на display: table.
    Ответ написан
    1 комментарий
  • Конвертация сайта в psd?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Ой, да! И еще подскажите сайт, чтобы потом полученный PSD сам верстал и подставлял нужные мне данные, вместо исходных. Спасибо.
    Откуда вы такие беретесь?
    Идите на любой сайт фриланса и просите отрисовать макет по сайту. Профит.
    Ответ написан
    4 комментария
  • Минифицируете ли файлы JS для фриланса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    а нужно ли?


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

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

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

    Stalker_RED
    @Stalker_RED
    Когда-то был вот такой:
    biggest-pocket-pc-6.jpg
    Но производители не останавливаются, появляются диагонали побольше:
    13_CRICKET-LARGEST-CEL.jpg
    И еще больше!
    https://www.youtube.com/watch?v=fXCETvEce3w

    А если вы не про физическую диагональ, а про разрешение, то 4к телефоны вроде как уже в продаже.

    Не заморачивайтесь на разделении телефон/не телефон. Смотрите на размер вьюпорта, а лучше на размер окна: www.quirksmode.org/mobile/viewports.html
    Ответ написан
    Комментировать
  • Как увеличить время выполнения скрипта на php?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Запускайте такие скрипты в консоле.
    Для CLI SAPI лимит времени выполнения отключен всегда.
    Ответ написан
    2 комментария
  • Актуальны ли минификация и конкатенация стилей и скриптов в 2016?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега CSS
    HTTP/2 "вышел" на сервера, но до клиентов он ещё не добрался.
    Простой ответ - если у вас нет ssl-сертификата, то до http2 вам пока как до Луны пешком. Если сертификат есть, то нужно анализировать посещения пользователей на предмет используемых браузеров и уже тогда решать.
    Если решите переходить, то да, можно отказаться от конкатенации.
    Ответ написан
    1 комментарий
  • Получится ли избавиться от шума, засунув компьютер в коробку?

    @syrov
    пишу программы до 99 строк
    У меня была аналогичная проблема. В какой-то момент шум от компа начал меня так раздражать, что я объявил ему войну, до победного конца. Она закончилась полной победой: я заменил блок питания на бесшумный (без вентиляторов), я поставил радиатор огромного размера на процессор (тоже без вентилятора), и конечно я раскрутил видео карточку и как-то прикрепил к ней радиатор и тоже без вентилятора. Конечно попутно я заменил корпус, на в 3 раза больше. В корпусе у меня все таки есть пару вентиляторов, относительно большого размера и достаточно тихих. Раньше, когда ко мне приходили гости, я предлагал послушать как теперь нешумит мой комп. Вопрос обычно был: "А он работает?" Удачи. (Да, и SSD)
    Ответ написан
    Комментировать
  • Как сделать заглавный экран лэндинга во всю ширину и высоту?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Достаточно для блока задать:
    block {
    width:100vw;
    height:100vh;
    }
    Ответ написан
    7 комментариев
  • Библиотеки и пространства имен. Нужно ли их переименовывать?

    okwinza
    @okwinza
    PHP Developer
    Нет. Зачем? Если вы не трогаете их код, они должны лежать себе в папке vendor спокойно.
    Ответ написан
    Комментировать
  • Какой планшет выбрать для front-end и учебы?

    @deliro
    быстрая плавная работа

    Потянет большинство нужных разработчику сред (Intelij IDEA, Visual Studio, Adobe PS)

    Забудь о планшете.
    Ответ написан
    Комментировать
  • Как вставить функцию php?

    @Silm
    А вы пробовали сперва изучить язык на котором хотите писать?

    Я вам даже ссылку дам: php.net/manual/ru/language.functions.php

    Через 5 минут чтения наступит просветление, попробуйте в следующей раз начать с этого
    Ответ написан
    2 комментария
  • Почему умножение работает быстрее деления?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    насчет "лучше умножать на 0,5" хз, потому что плавающая точка, но, наверно да

    а так все просто:
    современный комп, и комп 20 лет назад, и комп 30 лет назад - это обычный транзистор
    (когда изобретут фотонный проц - будет не обычный, хотя..)

    а обычный транзистор имеет всего два состояния: 0 (нет напряжения) и 1 (идет ток)

    и умеет транзистор этими двумя состояниями всего два действия:
    первое: сложение (0+1 = 1, 0+0=0, 1+1 = 01 и т.п.)
    второе: смена знака (честно - уже не помню как там куда идет ток в этом случае)

    все. больше ничего комп не умеет.

    потому арифметика реализуется примерно так:
    сложение: первое число СЛОЖ второе число
    вычитание: первое число СМЕНЗНАК второе число СЛОЖ первое число
    умножение: много раз СЛОЖ и занесение в стек, что тоже СЛОЖ
    деление: многораз СЛОЖ и зансение в стек + чуть меньше раз СМЕНЗНАК и снова в стек

    как видишь, при делении больше всего операций, по сути деление - это куча сложений с разным знаком, и величина кучи больше кучи уножений

    отсюда же растут ноги у точности плавающей точки - СЛОЖ и СМЕНЗНАК тоже нужно сделать кучу раз в зависимости от точности
    Ответ написан
    3 комментария
  • Можно ли задать css стили элементу массива?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    В Вашем примере элементы массива - просто числа и никакого отношения к dom и соответственно к css они не имеют, задать css класс можно только для dom элемента через свойство classList
    node.classList.add('class') - добавляет
    node.classList.remove('class') - удаляет
    node.classList.contains('class') - проверка наличия
    Если из массива генерируется html то там вообще просто, дописывайте по условию атрибут class к нужному тегу

    Ну а проверить нечетность n можно таким условием: if(n % 2)
    Ответ написан
    3 комментария