Задать вопрос
  • Дает ли строгая типизация в PHP 7 прирост производительности?

    Начал писать ответ комментарий https://toster.ru/answer?answer_id=937197, но ответ получился большим и поэтому решил поместить его отдельно.

    DevMan , я попробую уточнить ваше утверждение, что немного снижает.
    На самом деле, при использовании скалярных тайпхинтов снижается производительность вызова функций, поскольку возникает некий дополнительный оверхед на валидацию аргументов и приведение значений к нужным типам (если не используется strict_types). Но! Так как внутри функции значения аргументов уже приведены к нужным типам, то при использовании аргументов не происходит неявного приведения типа.
    Поясню на синтетическом примере:
    function foo($x) {
        $result = 0;
        for ($i = 0; $i < 100; $i++) {
            $result += $i + $x;
        }
        return $result;
    }


    Если вызвать эту функцию так: "foo('123')", то в таком случае внутри цикла аргумент будет неявно приводится к целому числу 100 раз. Если вызвать функцию так: "foo(123)", то в таком случае аргумент не будет внутри цикла приводится к целому числу. Очевидно, что второй вариант более производительный:
    ~$ time php70 -r 'function foo($x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo("123");'
    
    real    0m0.860s
    user    0m0.855s
    sys     0m0.005s

    ~$ time php70 -r 'function foo($x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo(123);'
    
    real    0m0.508s
    user    0m0.500s
    sys     0m0.008s


    В то же самое время, если добавить к аргументу скалярный тайпхинт, то тогда значение аргумента один раз будет приведено к тайпхинту и внутри функции уйдёт весь оверхед связанный с неявным приведением типа:
    ~$ time php70 -r 'function foo(int $x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo("123");'
    
    real    0m0.502s
    user    0m0.498s
    sys     0m0.003s

    ~$ time php70 -r 'function foo(int $x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo(123);'
    
    real    0m0.504s
    user    0m0.495s
    sys     0m0.008s


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

    Зато использование строгой типизации не даст запустить функцию в неконтроллируемом состоянии: когда функция ожидает на вход целое число, а по какой-то причине подсунули массив:
    $var = $_GET['foo'];
    bar($var);
    , для get-параметра foo=123 вызов будет корректным, а для foo[]=123 вызов функции приведёт к TypeError; для foo=abc тоже будет TypeError. Разумеется, этот пример сильно надуман и тут нужно использовать "нормальный" валидатор.
    Ответ написан
    1 комментарий
  • Какой CMS движок учить начинающему?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Никакой. Изучайте разработку ПО, языки программирования, построение архитектуры ПО, алгоритмы, математику и т.д и т.п.

    UPD
    Приведу немного аргументации и очевидных вещей для тех, кто не понимает почему ответ именно такой. На самом деле все очень просто: в IT индустрии всё развивается и меняется очень, очень-очень быстро. И как следствие возникает проблема устаревания знаний и умений. Вот например 15-20 лет назад изучение языка программирования под названием "Дельфи" и популярной тогда его среды разработки для десктопных приложений вполне имело смысл и было популярным явлением, т.к. оно тогда довольно широко использовалось, или например Perl для создания сайтов. А где оно сейчас? Почему сегодня сайты пишутся на джаваскрипте? А как на счет десктопных приложений? А ведь те же десять лет назад попробуй скажи такое — как бы область деятельности не пришлось менять. И вот такое происходит просто с языками программирования за довольно короткое время. А основа любого CMS, фреймворка и иже с ними — это как раз таки язык программирования. И вот за время жизни языка программирования в нём случаются новые стандарты, изменения и прочее, а популярное ПО на нём переписываются десятки и сотни раз. Т.е., изменчивость продуктов какого либо языка зависит как от самого языка так и от его популярности. И чем они выше — тем чаще что-то меняется. Из всего этого вытекает очень логичный вывод: в долгосрочной перспективе выгоднее те знания, которые не устареют как можно дольше. И вот тут как раз таки знания разработки ПО и языков программирования, построения архитектура, алгоритмы и прочее имеют наибольший срок устаревания. А уж сколько тысяч лет математике можно и не вспоминать. А она, кстати именно благодаря стремительному развитию IT тоже развивается очень быстрыми темпами. Так вот, при наличии вот таких фундаментальных знаний можно легко и быстро осваивать любые новые фреймворки, CMS, языки программирования и прочее. А уж при наличии подробных мануалов, гугла, форумов и прочего большинство задач сводится тупо к вбиванию "как сделать YYY в ZZZ" в строке поиска (я вот например никак не могу понять ход мыслей людей, которые задают вопросы на форумах и прочих ресусах, ответ на которые выдается в первых же строчках гугла, складывается впечатление, что они вообще первый раз в интернете и про гугл не знают вообще ничего).
    Если есть желание именно в изучении CMS — ставим себе задачу и решаем её используя разные CMS, далее выбираем наиболее понравившуюся и пользуемся пока не надоест или не устареет. А после — повторить.

    Немного перефразирую сам вопрос и соседний популярный ответ:
    — Каким инструментом учиться пользоваться начинающему строителю?
    — Учись использовать молоток и гвозди, леса полно, доски везде используются.
    Вот только строительство — это не одни только доски, в которые забиваются гвозди, а еще архитектура, сопромат и иже с ним, экстерьер, интерьер, отопление, освещение, канализация, вентиляция и ещё куча всего. Аналогично и во всех остальных областях, в том числе и web разработке.
    Ответ написан
    9 комментариев
  • Первая работа для верстальщика, как получить?

    stasigg
    @stasigg
    Junior Frontend
    Устроился верстальщиком за 20к в замкадье.
    Тоже было пара статичных версток.
    Вакансию нашёл на местном форуме, на хх и прочих редко появляются вакансии на верстальщика(в моем регионе). Первое время придётся выживать :(
    Но здесь главное опыт

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

    И конечно учиться каждый день.

    https://m.habrahabr.ru/post/303896/
    Ответ написан
    3 комментария
  • Нюансы оформления удаленки на зарубежную компанию, как правильно?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Финансы:
    • ИП, ОКВЭД - разработка ПО и БД
    • Налогообложение - УСН плюс патент в какой-нибудь области где-нибудь в регионах (есть небольшой шанс, что могут проверить - случаи есть, хоть и мало, поэтому лучше где-нибудь рядом с местом жительства)
    • Квалифицированная электронная подпись - токен и криптопро либо виртуалка с триалом криптопро (втб раздаёт токен бесплатно - тыц, оформить, a на следующий день или через несколько закрыть счёт - с самим банком не связываться)
    • Адекватный интернет-банк с онлайн-бухгалтерией - точка или модуль, в сторону попсы типа т-, а-, сб- и прочих лучше даже не смотреть - сэкономите километры нервов и литры сока и других бодрящих веществ
    • Компания-прокси - Solar Staff, Easy Staff для получения оплаты, договор-оферта с прокси в России (как с фриланс-биржами раньше), работодателю выставляется стандартный инвойс/инвойс-договор из прокси, он его оплачивает, а на ваш счет в банке приходит перевод за вычетом комиссии прокси со счета в Российском банке - никакого валютного контроля

    Для налоговой всё прозрачно и никаких проблем. Любые вопросы и непонятки решаются с онлайн-бухгалтерией.

    Оформление со стороны работодателя - как договоритесь и зависит от местных законов. В большинстве случаев достаточно простого счёта-договора: "оплата счёта подтверждает, что работа сделана и принята".

    Если открывать ООО - это 50-100к в месяц расходов только за одного сотрудника (генерального директора), примерно 50% от ЗП в налоги и другие взносы уйдёт, прибыль с ООО выводится через родственников-ИП или дивиденты. Там вообще очень много всяких нюансов и прочего - гугл в помощь. Бухгалтерия - в интернет банке или что-то типа "Моё дело". Если не хочется самостоятельно заниматься бухгалтерией - в деле есть тариф "Премиум" с личным помощником. Либо нанять знакомого бухгалтера, который будет тыкать кнопочки в этом самом моём деле и у которого есть с ним опыт (нанимать бухгалтера со стороны - всегда риск). В сторону варианта "сэкономить на интернет бухгалтерии" не то что смотреть, даже думать не стоит.

    А вот легально получать оплату в крипте простым и прозрачным способом на текущий момент невозможно (разве что через мутные схемы с соответствующими рисками). На текущий момент только через криптоэквайринг. Росбанк (теперь филиал т-банка) уже умеет, но пока только для крупных клиентов (точно не помню, но вроде от 100 лямов оборота - узнавал у них в 23 году). Работает он через b-crypto (новость). Есть еще несколько посредников, кто тоже занимается криптоэквайрингом: например битбанкер.

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

    2. Да, свой сервер для VPN обязателен - часть международного интернета только через VPN, рунет - без него (наши тоже полмира забанили)

    3. Созвоны работают отлично - там трафик вообще ни о чём.

    4. Только избранные ООО:
    Ответ написан
    4 комментария