• Что делает этот код?

    devg
    @devg
    I am Yenior software developer
    Подобные куски кода обычно появляются в коде взломанных или завирусованных сайтов.
    Его суть в том, что он позволяет выполнить произвольный код на сервере. Это искуственно созданная уязвимость
    Ответ написан
    Комментировать
  • Стоит ли учить программировать по старинке?

    но не выработую ли я вредные привычки, связанные с постоянным слежением за памятью

    Мда. "Если ваша программа потребляет всего лишь на 50% больше памяти, чем ей нужно, это не так уж и плохо".

    "Мне противно, как часто программа обучения строится на посылке, что Java представляет собой хороший язык для того, чтобы начинать программировать, потому что это так "просто" и не нужно отвлекаться на эти скучные детали про строки и выделение памяти, и сразу можно изучить кульные ООП-штучки которые помогут сделать ваши большие программы так восхитительно модульными. Это педагогический провал. Поколения выпускников снисходят на нас, раскидывая алгоритмы маляра Шлемиэля налево и направо, даже не понимая этого, поскольку у них нет представления о том, что строки на нижнем уровне сложны, даже если из их перлового скрипта этого не видно. Если хочешь научить кого-то хорошо, надо начинать с основ." (с) Джоель Спольски
    Ответ написан
    Комментировать
  • В чем смысл библиотеки ReactPHP? Какие задачи решает?

    Caravus
    @Caravus
    DevOps
    1) Берём событийную библиотеку
    2) Пишем в коде sleep(10);
    3) ???
    4) Пишем на тостер вопрос "а чёж оно блокирует то?!".
    Ответ написан
    4 комментария
  • Что означает символ @ в конце имени файла?

    Saenara
    @Saenara
    Это значит, что файл является символьной ссылкой.

    vi /etc/php5/apache2/conf.d/20-intl.ini
    И вписываете туда все, что написано по вашей ссылке.
    Ответ написан
    4 комментария
  • Стоит ли и зачем использовать PHP на фронте, где есть Angular?

    azrail_dev
    @azrail_dev
    А ты уверен, что тебе стоит работать над этим проектом? Если у вас нормальный rest api и при этом ведутся странные попытки "прячем участок HTML посредством PHP", вполне реально, что ты не сможешь реализовать то, что даёт тебе ангуляр и себя, как программиста этого проекта.
    Ответ написан
    1 комментарий
  • Что учить Angular или React новичку?

    streetflush
    @streetflush
    Изучите JS на уровне джуна. Без него браться за библиотеки тупиковый путь.
    Ответ написан
    6 комментариев
  • Где поискать поэтапное руководство по архитектуре и настройке сервера?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    В идеальном мире этим должно заниматься как минимум 2-3 человека, каждый по своей специализации: админ серверный, админ/спец по базам которые вы используете и т.д.

    В реальном мире это как правило делает 1 или 1.5 человека.
    И нет, таких гайдов нет.
    Потому что это все настраивается отдельно, не говоря про то что настроить конкретную базу на нормальную работу или сам сервер вещи вообще разные и требуют разных знаний.
    Все гуглится и настраивается отдельно по мере необходимости.
    А так же еще выбрать как правило всегда надо между несколькими решениями для одной задачи, т.к. вариантов настройки/софта вагон и маленькая тележка.
    Ответ написан
    6 комментариев
  • Как подключать классы?

    @Wexter
    третий вариант, потому что первые 2 уже были в проекте на ранних этапах разработки и плохо себя зарекомендовали.
    Ответ написан
    Комментировать
  • PhantomJS, как дождаться полной загрузки страницы?

    @vshvydky
    Выкинуть фантом куда подальше и пользоваться nightmare
    Ответ написан
    Комментировать
  • Почему до сих пор вакансии называются "Программист C#" или "Java Junior Developer", хотя знание фреймворков гораздо важнее знания языков?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    А пацаны годами один язык изучают до тонкостей, вот дураки то!
    Ответ написан
    Комментировать
  • Как отучить php сжирать память?

    @zano3adev
    Web Dev
    Фича PHP:
    php.net/manual/ru/features.gc.refcounting-basics.p...

    Решения:
    1. Вместо объекта использовать массив.
    2. Сериализация/Десериализация объекта.
    class TestMemory
    {
        protected $memory_start;
        protected $memory_filled_array;
        protected $memory_empty_array;
        protected $memory_deleted_array;
    
        protected $array;
    
        public function __construct()
        {
            $this->memory_start = 0;
            $this->memory_filled_array = 0;
            $this->memory_empty_array = 0;
            $this->memory_deleted_array = 0;
        }
    
        public function runTest()
        {
            $this->memory_start = memory_get_usage();
            $this->array = [];
            for($i = 0; $i < 10000; $i++)
            {
                $object = new stdClass();
                $object->property1 = $i;
                $object->property2 = 123;
                $object->property3 = str_repeat('Str', 100);
    
                $this->array[] = serialize($object);
                unset($object);
            }
            $this->memory_filled_array = memory_get_usage();
            for($i = 0; $i < 10000; $i++)
            {
                $object = unserialize($this->array[$i]);
                //$object; //do some
                unset($this->array[$i], $object);
            }
            $this->memory_empty_array = memory_get_usage();
            unset($this->array, $i);
            $this->memory_deleted_array = memory_get_usage();
        }
    
        public function printResult()
        {
            $result = '---Result---' . '<br>';
            foreach($this as $name => $value)
            {
                if($name !== 'array')   $result .= $name . ': ' . number_format($value / 1024 / 1024, 2) . 'MB.' . '<br>';
            }
            $result .= 'Memory leak: ' . ($this->memory_deleted_array - $this->memory_start) . 'Byte' . '<br>';
            echo $result;
        }
    }
    
    $test = new TestMemory();
    for($i = 0; $i < 5; $i++)
    {
        $test->runTest();
        $test->printResult();
    }
    Ответ написан
  • Минимальные настройки безопасности Linux на VPS?

    Tyranron
    @Tyranron
    Ряд моментов Вы уже сделали, но я все равно их опишу для полноты списка.

    1. Создать отдельного пользователя и хороший пароль на sudo. Не использовать больше root напрямую. Совсем.

    2. SSH. Отключаем метод аутентификации по паролю. Если Вам не нужны другие методы, то их тоже можно отключить, оставив только publickey. Отключаем возможность аутентификации root'ом. Включаем использование только 2й версии SSH протокола.

    3. Устанавливаем Fail2Ban и настраиваем чтобы после нескольких неуспешных попыток подключения по SSH банило по IP на длительное время. Кол-во попыток и время бана можно тюнить в меру своей паранойи. У меня, например, банит на час после 2х неуспешных попыток.

    4. Iptables. Действуем по принципу "запрещено все, что не разрешено". Запрещаем по умолчанию весь INPUT и FORWARD трафик снаружи. Открываем на INPUT'е 22 порт. В дальнейшем открываем порты/forwarding по мере необходимости. Если у нас предполагаются сервисы на соседних серверах нужные только для внутренней коммуникации (Memcached, Redis, и т.д.), то открываем для них порты только для определенных IP. Просто так торчать наружу для всех они не должны.

    5. Настраиваем автоматические обновления apt-пакетов. Уровень security. То есть так, чтобы обновления безопасности накатывались автоматически, но при этом не выполнялись обновления со сменой мажорной версии (дабы обезопасить себя от "само сломалось").

    6. Устанавливаем ntpd. Серверное время должно быть точным. Также временную зону сервера лучше всего установить в UTC.

    7. TLS (не SSL) используем везде где можем. Через Let's Encrypt получаем бесплатные валидные сертификаты. В конфигах веб-серверов, mail-серверов, и других приложений торчащих наружу (в том числе и OpenVPN), запрещаем/убираем использование слабых шифров. Все ключи/параметры генерируем не менее 2048 бит. Самоподписные сертификаты подписываем с помощью SHA-256 (не SHA-1). Diffie-Hellman параметры (dh.pem) под каждый сервис лучше сгенерить отдельно. Проверяем TLS сервисов через Nmap. Минимальный grade должен быть A, не должно быть warning'ов.

    8. Правильный менеджмент пользователей/групп. Приложения/сервисы не должны запускаться под root'ом (разве что они действительно этого требуют и иначе никак). Для каждого сервиса создается свой пользователь.

    9. Если предполагается upload файлов через PHP (либо другие скриптовые языки), в директории, куда эти файлы загружаются (и которая доступна снаружи), должно быть жестко отключено любое выполнение скриптов/бинарников, что на уровне ОС (x права), что на уровне веб-сервера.

    Это была база.
    Дальше, в меру своей паранойи можно за'harden'ить сервер ещё следующими моментами:
    - SELinux, chroot
    - доступ к SSH только с определенных IP (нужно иметь 3-4 VPN-сервера под рукой)

    UPD И да, все это помнить/настраивать руками каждый раз может быть запарно. Используйте Ansible и автоматизируйте процесс (там родные и YAML, Jinja2 и Python).
    Ответ написан
    10 комментариев
  • Какой инструмент можно использовать для логирования вызовов небезопасных/подозрительных функций PHP?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Такого функционала нет из коробки.
    Разве что делать php.net/manual/en/function.debug-backtrace.php
    Либо дампить через xdebug.
    Лайтовых инструментов для такого не встречал.

    На шаредах не логируют "небезопасных/подозрительных функций PHP".
    На шаредах их просто отключают.
    Ответ написан
    Комментировать
  • Какие есть интересные сайты со статьями на тему Frontend?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    русскоязычные ресурсы по теме веба? Желательно те, которые обновляются достаточно часто

    Проблема русскоязычных ресурсов в том, что 80-90% контента на них - это переводы. А переводы - это дело такое - их всегда меньше, чем оригинальных статей, и появляются они в большинстве своем с заметным опозданием. Так что не брезгуйте ходить на зарубежные сайты - например на smashingmagazine, css-tricks или uxplanet.
    Ответ написан
    Комментировать
  • Насколько этично ходить на собеседования, если нет цели найти работу?

    riky
    @riky
    Laravel
    ходите почаще и побольше.
    если таких как вы будет много, то рынок в ответ должен эволюционировать. т.к. работодатели должны будут оптимизировать этот процесс:
    = тратить меньше времени
    = если отказов много - то возможно поднимать зп

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

    Rou1997
    @Rou1997
    человек впустую тратит время (что суть деньги) компании, которая реально ищет себе сотрудника

    Во-первых, вы бы видели, как они, все до единого, сами прое... (извините) в сто раз больше времени, чем вы отнимете его у них.
    Во-вторых, а, собственно, почему у вас "нет цели найти работу"? Что вы "тянете"? Если идете в компанию, будьте готовы к варианту - действительно туда устроиться если вы устроите друг друга, заодно и получаться будет гораздо лучше, у мошенников тоже лучше всего обманывает тот, кто способен поступить и честно, он как бы подсознательно играет роль честного, как в театре.

    занесут в некий blacklist неблагонадежных соискателей

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

    @malbaron
    через 2+ месяца я понял что кроме лучших знаний по гит и как работать с cron я не приобрел, ни одного класса не написано, только мелкие баги и всё, а от php вообще уже отворачивает. Это так везде или проблема во мне?


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

    Я бы не стал изучать другой язык, если дело только в карьере.


    Почему IOS, перспективно и сложно, меньше конкуренции со школой(как в пхп), больше шансов работы на фрилансе/перезда за границу


    Ерунда.

    Это как с ноутбуками Apple.
    Они не делают дешевых моделей, поэтому кажется, что их ноутбуки дорогие.
    Стоить внимательнее сравнить ВСЕ характеристики, то прекрасно видно, что ноутбуки конкурентов с такими же характеристиками тоже дорогие.
    Это не Эппла дорогой, а просто у него дешевых моделей нету.

    Так и PHP.
    Там полно очень высокооплачиваемой работы (Facebook, VK - на PHP), но на фоне массового шума-спама дешевой работы и кажется что все в PHP плохо. Но это всего лишь кажется.
    Ответ написан
    Комментировать
  • "Большой Брат" в офисе, за интернет-трафиком следят. Как можно обойти эту систему?

    @kgbplus
    Если вы смогли принести свой ноутбук из дома, воткнуть его в произвольную розетку и получить доступ к ресурсам сети и выйти в интернет, то можете не бояться такого "админа" - это не админ.
    Ответ написан
    4 комментария
  • Как стать таким крутым как Гилфойл?

    @dpvpro
    Комментировать
  • Почему большинство фрилансеров не принимают Вебмани?

    Serj-One
    @Serj-One
    i'm sexy and i know it
    С развитием онлайн платежей по банковским картам кошельки WM стали неактуальны. Почти никто уже не пользуется, и заводить только ради вас не будет.
    Ответ написан
    Комментировать