• Сколько исследователи тратят времени на поиск уязвимости и написание эксплойта подобного рода(в описании)?

    Не знаю, где вы читали эту новость, но по этим двум источникам выходит, что большую часть написанного в вопросе вы сами придумали, и все намного проще:
    gtlaunch.ru/hakeryi-iz-anonsec-ugnali-u-nasa-bespi...
    https://xakep.ru/2016/02/02/anonsec-nasa-leak/

    Итак, смотрим:
    Так как к трояну Gozi группа отношения не имеет, хакеры пишут, что они попросту купили доступ к зараженному серверу у автора Gozi, и сервер стал отправной точкой входа.

    Ну т.е. они даже эксплоит не покупали. Даже если б купили - ну приватный эксплоит, обычное дело.
    Безопасность НАСА действительно оставляла желать лучшего: запустив обычный брутфорс, хакеры нашли первое сочетание логина и пароля root:root через 0,32 секунды.

    Закрепились на одной машине, стали сканить с неё все доступные во внутренней сети - простое и логичное действие. root:root это конечно полный фэйл, и можно сказать удача для AnonSec, но в принципе не так уж удивительно и невероятно.
    Хакеры смогли получить полный доступ к сетевым хранилищам данных (NAS) на которых хранились копии всех планов полетов беспилотников

    Хакеры заметили, что для большинства миссий в беспилотник загружают уже готовый план полёта в виде файлов .gpx

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

    Я не говорю, что со всем этим справился бы школьник, но где вы тут видите что-либо про взлом прошивки? И да, про "закрытые данные":
    взломать внутреннюю сеть НАСА и провести в ней несколько месяцев, а в качестве доказательства они опубликовали архив объёмом 276 ГБ

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

    И под каждый беспилотник никто новую ОС писать не будет. И для серверов НАСА тоже никто новую ОС писать не будет. В беспилотнике будет какой нибудь embedded-дистрибутив, на серверах ну допустим какой-нибудь олдскульный UNIX (AIX/HP-UX/etc), а на новых будет Линух.

    даже софт для управления этим беспилотником

    Ну софт не найдешь, а вот gpx формат известен весьма широко.

    В общем, читайте внимательно, вообще не пойму как сказанное вами относится к содержимому статьи.
    Ответ написан
    Комментировать
  • Какие есть недостатки в этом php-роутере?

    @topot
    Это у Вас не роутер, а целый сайт/приложение. Монолитное. Единое целое.
    Что "не так" с этим приложением?
    Всё. Если говорить о правильности подходов.
    Что так с этим приложением?
    Оно работает. И оно является этапом Вашего роста.
    Роутер не должен ничего инклудить и, тем более, знать о каких-то там темплейт-хедерах, да ещё и запросы в базу делать.
    Он должен только обладать информацией - "с этим - туда, а с этим - сюда". А информацией этой может воспользоваться уже Диспетчер. Он у Вас тоже вмонтирован своего рода в монолит.
    Вам правильные вещи тут говорят. Попробуйте услышать.
    Ответ написан
    1 комментарий
  • Вопрос по подключению системы кэширования?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Почитайте, optimization.guide и вот вам немного теории:

    Кешировать можно:
    • целиком всю страницу (для каждой страницы своя запись в кеше)
    • отдельные части сайта


    Кешировать можно в файлах:
    • генераруя готового html
    • генерируя html+php, так работают smarty и прочие шаблонизаторы собирая множество шаблонов в один
    • в виде бинарного содержимого, сюда и готовый html и готовые значения вычислений и прочее
    • в виде сериализованного массива с чем угодно, от предыдущего пункта отличается только форматом хранения


    Кешировать можно в базе:
    • в mysql/postgresql и прочих SQL - будет храниться на диске и горячие данные в памяти
    • в mysql/postgresql и прочих SQL в in-memory таблицах - будет храниться в оперативке, но без дополнительных усилий кеш пропадёт при рестарте сервера
    • в in-memory базах данных, часто это memcache, redis и прочее - опять таки выключили сервер - данные пропали
    • в in-memory базах данных с сохранением на диск, это Tarantool, memcachedb и прочие если там заявлена такая функциональность


    Так же можно:
    • кешировать всё кроме вставок динамики
    • кешировать куски вставляя их в динамику

    Это два противоположных подхода которые при особом желании можно смешивать в рамках одного проекта.

    Обновлять кеш можно:
    • при каждом запросе проверяя что старый кеш устарел
    • предкеширование - отдельным кроном/демоном/сервисом генерировать кеш раз в N минут
    • по мере изменения данных сбрасывать кеш и следующий запрос сгенерирует новый
    • по мере изменения данных сбрасывать кеш путём генерации сразу нового и замены старого на новый


    Кеш можно хранить:
    • на том же сервере что и сайт - нет задержек в сети, но зато ресурсы теже, CPU, диск, оперативная память
    • на внешнем сервере - задержки в сети, зато ресурсы отдельно


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

    Если используете CMS/CMF - посмотрите готовые плагины для кеширования. Если у вас не sharing-хостинг с мини-сайтом - озаботтесь профилированием (xhproof) и мониторингом, это поможет понять где и что кешировать.

    Так же стоит рассмотреть кэширование байт-кода:
    • OpCache
    • APC
    • XCache

    Стоит прочитать вот эту статью:
    Сравнение скорости исполнения кода Drupal для PHP 5.3-5.6 и 7.0. «Битва оптимизаторов кода» apc vs xcache vs opcache https://habrahabr.ru/post/264775/

    Так же стоит:
    • увеличить буферы в MySQL (если памяти много)
    • потюнить другие системы, например поставить nginx вместо apache, раздавать статику с другого хоста
    • и конечно же - посмотреть как долго работают SQL запросы и по возможности их облегчить


    Кеширование в MySQL с использованием HandlerSocket:
    • данные хранятся в MySQL innodb базе, а значит чтение и запись можно делать как по старинке через SQL так и через HandlerSocket
    • можно сделать любое количество колонок, лишь бы это позволял MySQL
    • быстрая вставка
    • быстрая выборка
    • бинарный протокол передачи данных
    • есть несколько библиотек для PHP, как относительно новых так и старых
    • в Percona Server (форк MySQL) HandlerSocket.so есть в поставке по умолчанию, разве что нужно включить
    • в MySQL необходимо собрать HandlerSocket самостоятельно и включить в MySQL


    Можно почитать вот тут:
    Ответ написан
    3 комментария
  • Установка lumen от laravel?

    Добавь в PATH "~/.composer/vendor/bin"

    Пример в linux
    export PATH=~/.composer/vendor/bin:$PATH

    и выполни "lumen new blog", без всяких "php composer.phar"
    Ответ написан
    4 комментария
  • Где почитать про юнит-тесты?

    @Sing303
    На системах какого масштаба их стоит начинать применять?

    На любых. В идеале TDD (Разработка через тестирование)

    Есть ли толковая литература по ним с примерами для новичков.

    Уже кому-то сегодня скидывал эту ссылку: https://www.ozon.ru/context/detail/id/26230428/
    Примеры на C#, но принципы применимы в любом ЯП
    Лучше книги по тестам ещё не видел. В идеале читать оригинал, перевод ужасен.

    Применимы ли они при разработке в одиночку?

    Конечно применимы, нет никакой разницы
    Ответ написан
    3 комментария
  • Как лучше обновлять php на сервере?

    @kryvel
    Системный администратор
    это конечно радикально немного, но если на сервере ничего нет, то может проще обновиться до Jessie ?
    а так Вы еще долго будете мучаться со сторонними репозиториями, которые в итоге ни к чему хорошему не приведут)
    Ответ написан
    3 комментария
  • Как лучше обновлять php на сервере?

    zooks
    @zooks
    Frontend
    Можно сделать ход конем - попробовать фреймворк на локальном сервере, например Open Server.

    Добавлю к вашей инструкции:
    https://www.dotdeb.org/instructions/
    apt-get update
    apt-get install php5
    service apache2 restart
    Ответ написан
    4 комментария
  • Какая у вас скорость шаблонизаторов php?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Сугубо личное мнение:
    1) Чистый PHP сам по себе отличный шаблонизатор.
    2) Время ответа веб страницы - критично и для восприятия пользователями, и для ранжирования поисковиками.
    В идеале нужно укладываться в 50ms. Больше 150-200ms могут начинаться проблемы.

    В этих реалиях тратить 100-150ms работы скрипта, на шаблонизатор который не вносит по факту никакого принципиально нового функционала - bad practice.
    Ответ написан
  • Хорош ли PHP для математических вычислений?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Зачем мешать "кислое" и "длинное"?
    PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста»; первоначально Personal Home Page Tools — «Инструменты для создания персональных веб-страниц»; произносится пи-эйч-пи) — скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений.
    1. Вычисляет/работает с преобразованием данных - всегда служба/демон/web-сервис или общее название: task/job worker на каком угодно языке и возвращает результат, например, в базу данных (mysql/redis и т.д.).
    2. Формирует страницы - PHP (или любое иное, на чем Вы привыкли писать web-сайты).
    Ответ написан
    Комментировать
  • С точки зрения парадигмы ООП какие объекты следует выделить в программе калькулятор?

    edli007
    @edli007
    full stack, team lead
    Это вопрос больше философский и зависит от виденья структуры вашей программы.
    Можно сделать например только каркас MVC, где будет два M,
    - Где первый будет валидировать данные
    - а второй производить базовые арифметические расчеты.
    C будет осуществлять общую логику приложения а V итак понятно.
    Итого 4 класса.

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

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

    Добавить сюда также абстрактные классы.

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

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Я бы предложил такое:
    * Лексический анализатор - читает текст, по запросу отдаёт следующую лексему(число, операция, скобка и тд), знает, где сейчас находится относительно текста;
    * Синтаксический анализатор - берёт из лексического лексемы, хранит в себе состояние относительно выражения(не текста), строит некое представление (например, полиз);
    * Возможно, собственно это представление, если стандартными контейнерами не обойтись;
    * Интерпретатор - по представлению вычисляет конечное значение (результат выражения);
    * Ну, и возможно, пресловутый калькулятор, чтобы всё это красиво объединить и вычисление выглядело так: подал на вход строку, получил на выходе результат.

    P.S. Это всё нужно, если вы не пользоваться просто eval'ом собираетесь, а хотите реально написать сами.

    P.P.S. почитал остальных отвечающих, и уточню - то, что я описал, это просто "сферический калькулятор в вакууме", не зависящий от UI, ни от чего не зависящий, фактически.
    Ответ написан
    2 комментария
  • Как заменить совпадения в тексте?

    if(preg_match("/1/ism", $you)){
        // запрос к БД
        if($otvet_bd == 'need'){
            preg_replace("/1/ism", "new", $you)
        }
    }

    И так по if на каждый случай...
    Ответ написан
    3 комментария
  • Как импортировать таблицу в БД mysql?

    iam_not_a_robot
    @iam_not_a_robot
    Добавляйте этой же командой, старые таблицы не затрутся
    Ответ написан
    1 комментарий
  • Как сгенерировать прямоугольную матрицу (любой размерности) со значениями от 0 до A?

    @deliro
    Например, так (python):
    from random import randint
    a, n, m = map(int, input().split())
    matrix = [[randint(0, a) for i in range(n)] for j in range(m)]
    Ответ написан
    2 комментария
  • В чем преимущество динамически типизированных языков?

    CJay
    @CJay
    Питонистичен
    Ну то есть, неужели дело только в том, что не надо объявлять тип переменных

    Тип переменных (примитивов) можно и указать, это не сложно. Гораздо сложнее указывать тип объектов. Не всегда известно, с каким объектом придётся работать. В питоне мне достаточно знать, что у объекта имеется некоторый метод или поле (а можно и того не знать). В статическом языке от меня сам компилятор бы не отстал до тех пор, пока я бы не указал тип объекта. Для этого мне пришлось бы следить, чтобы все объекты наследовались от одного базового класса (что не всегда возможно), или мне пришлось бы выделять интерфейс, имплементируя у всех возможных объектов данный интерфейс. Появлялись бы ситуации, где мне пришлось бы выдумывать, как бы сделать так, чтобы явно не указывать тип, но и чтобы компилятор пропустил. Ну и где мои коллеги на С# пишут всякие dependency injection, visitor, перегружают методы, наворачивают какие-то абстракции, вводят интерфейсы, я со своим питоном просто проверяю, есть ли свойство через hasattr(), или узнаю тип через type(). Так что, сила питона в интроспекции и рефлексии.
    Ответ написан
    Комментировать
  • Как настроить сервер, чтобы письма не уходили в спам?

    mobilesfinks
    @mobilesfinks
    сисадмин *nix
    (c DIgitalOcean не знаком так что если что, то прошу не пинать)

    Настроен ли ваш домен как надо?
    SPF запись ?
    Политика DMARC?
    DKIM подпись писем ?

    Я так понимаю вы же прям со своей VPS отправляете, а не через почтовый шлюз.
    Вариантов у вас 2:
    1) Настроить домен и почтовый сервер
    2) настроить пересылку почты через почтовый шлюз к.л. почтового провайдера.

    Думаю в вашем случае проще сделать второй вариант.
    Ответ написан
    3 комментария
  • Как GA и Yandex.Метрика определяют время проведенное на сайте и странице в частности?

    grimich
    @grimich
    Не забудьте отметить лучший ответ как решение
    Метрика знает время хита - открытия страницы, например.
    И знает время, во сколько призошел второй хит.
    Вычел одно из другого - получилось время на странице.

    Если второго хита нету - то отказ)
    Ответ написан
    2 комментария
  • Существуют ли какой нибудь сборник интересных задач и алгоритмов?

    ruddy22
    @ruddy22
    Спасение утопающих — дело рук самих утопающих
    От себя могу добавить, что стоит прочесть книгу Data structures and algorithms with JavaScript. А потом, если интересны алгоритмы, то брать книгу Томаса Кормена, Алгоритмы: анализ и построение.
    Ответ написан
    6 комментариев
  • Как правильно хранить множественные атрибуты в MySQL и их выводить на сайт?

    frost18
    @frost18
    Программист PHP
    Не верно. В одной ячейки один id должен храниться. Вам нужно создать еще одну связующую таблицу соотношением один ко многим.
    Ответ написан
    Комментировать