Задать вопрос
  • Можно ли в python подключать модули runtime?

    @nirvimel
    Еще так можно:
    (_file, pathname, description) = imp.find_module('my_module', ['./path/to/my_module'])
    my_module = imp.load_module('my_module', _file, pathname, description)
    Ответ написан
    Комментировать
  • Какую выбрать тему дипломной работы в сфере "информационная безопасность, мобильная разработка (ios)"?

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

    @nirvimel
    Во всех языках, в которых существуют функция eval, возможна инъекция чего угодно через нее. И если в SQL еще можно как-то решить эту проблему при помощи правильного экранирования символов, то в Тьюринг-полных языках отличить зловредный код то безопасного теоретически возможно только одним способом: исполнив его в том же окружении и с теми же входными данными, что и в реальных условиях.
    Поэтому большинством сoding conventions (кстати, как это будет по-русски?) использование eval запрещено полностью. Code review в большинстве крупных компаний и крупных open-source проектах завернет любой pull-request, в котором будет обнаружен eval, и после этого, скорее всего, даже не станет рассматривать последующие реквесты от того же автора.
    Еще у многих антивирусов эвристический анализатор заточен на поиск eval в скриптах (включается после того как определен язык).
    Ответ написан
    Комментировать
  • Что значит купить или продать траффик?

    @nirvimel
    Трафик - это человечки (или боты).
    Покупают входящий трафик, то есть N человечков перейдет на этот сайт откуда-то, и за это придется заплатить.
    Продают - исходящий, то есть N человечков перейдут с этого сайта по ссылке куда-то, и за это будет заплачено.

    Еще трафик различается по качеству платежеспособный/неплатежеспособный, целевой/нецелевой, и.т.д ... но тут начинается очень длинная сказка.
    Ответ написан
    Комментировать
  • Try-catch-throw. Как понять эту схему?

    @nirvimel
    Вы называете одним словом "ошибка" несколько совершенно различных вещей, не связанных между собой:
    1. Синтаксическая ошибка в исходном коде. "где в тип string вводится int и сообщается об ошибке" - это невозможно в принципе, так как ваш исходный код, в котором нарушено соответствие типов, не является валидной программой (все равно что оставить незакрытую скобку), компилятор не сможет скомпилировать из него никакой бинарный исполнимый файл просто потому, что видит бессмыслицу в таком исходнике.
    2. Исключительная ситуация (exception) во время выполнения. Она всегда предусмотрена кодером (этим она и отличается). Например я пишу функцию, которая должна делить одно число на другое, я предполагаю, что кто-то (типа меня же) может использовать эту функцию неправильно и передать ноль в качестве делителя. Я хочу, чтобы такому пользователю прилетел (по голове) exception, красноречиво сообщающий о том, что так делать не стоит. Для этого я пишу
      if (denominator == 0) { throw std::invalid_argument( "НЕ НАДО ТАК!" ); }
      . Теперь, если мне нужно выполнить какой-то кусок кода, в котором есть вызовы функций, из которых могут вылетать исключения, и я хочу как-то локализовать эту проблему и обезопасить от этого остальную программу, то я пишу
      try { divide(x, 0); } catch (const std::invalid_argument& e) { /* Я все понял, я так больше не буду. */ }
      .
    3. Undefined behavior - это результат не предусмотренной никем ситуации во время выполнения. Например, я заб(ы/и)л на то, что кто-то может передать ноль в мою функцию в качестве делителя и пишу int divide(int a, int b) { return a / b; }. И однажды это происходит, кто-то (да я же сам) передает туда ноль и... Что должно произойти в этой ситуации? Я не знаю, CPU не знает, компилятор об этом не позаботился, ОС тоже не знает, но на всякий случай она прихлопнет весь процесс целиком и (возможно) напишет в консоль что-то типа segmentation fault.
      А что, если я буду вызывать такую подозрительную функцию из блока try-catch? - Да ничего это не меняет. try-catch ловит только преднамеренно брошенные исключения в ситуации, когда возможность возникновения ошибки была предусмотрена кодером. try-catch ничем не может помочь против undefined behavior потому, что предусматривать возможные ошибки во время выполнения - это задача кодера, а не компилятора, который занимается только контролем соответствия типов и формальной корректности программы.


    Если вам не по душе концепция undefined behavior, то переходите на Java или .NET, там компиляторы сами добавляют все необходимые (и обходимые) проверки ценой снижения быстродействия вашей программы.
    Ответ написан
    3 комментария
  • Как жонглировать IP-шниками?

    @nirvimel
    FoxyProxy - жонглер 79 уровня. С ним можно жонглировать не между браузерами, между сайтами.
    Ответ написан
    1 комментарий
  • Выбор низкоуровневого языка?

    @nirvimel
    C. Only.

    И нет тут никакого выбора:
    На ассемблере пишут только студенты в порядке изучения архитектуры ПК. И те, кто в качестве хобби (бесконечно) разрабатывают собственную ОС (по какому-то религиозному убеждению истиннаяЪ ОС должна быть написана полностью на ассемблере). Профессиональные разработчики на ассемблере только читают потому, что могут заставить компилятор ЯВУ выдавать совершенно определенный ассемблерный код.

    C++, если использовать его идиоматично, а не как C с классами, то это уже совсем не низкий уровень, там нужно мыслить абстракциями, а не гонять байты. К тому же учится он совсем не быстро, а это как бы противоречит, поставленному в вопросе, условию.

    Поэтому остается только один язык. Он используется для этих задач уже более сорока лет (в то время как в других отраслях успело смениться много поколений языков) и за следующие сорок лет его вряд ли кто-то сможет подвинуть с этих позиций.
    Ответ написан
    6 комментариев
  • Можно ли отправлять запрос на сервер когда приложение не запущено на телефоне?

    @nirvimel
    Как бы еще отправлять запросы на сервер, когда приложение даже не установлено в телефоне?
    Ответ написан
    2 комментария
  • Как экранировать кавычки в sqlite3 запросе на языке с++?

    @nirvimel
    Лучше всего это делать НИКАК.
    А параметры передавать через связываемые переменные.

    Тут по-русски общая теория вопроса без относительно SQLite.
    Ответ написан
    2 комментария
  • Может ли падать фпс в онлайн играх из-за сети?

    @nirvimel
    Фризы из-за сетевых задержек - это абсолютно реально. По-другому клиент-серверную игру просто невозможно реализовать, она не может отдельно от сервера продолжать играть сама по себе.
    А вот падение FPS - это признак плохой архитектуры. При хорошей архитектуре отрисовкой кадров занимается отдельный поток, который ни в какой момент не совершает синхронных вызовов сетевого ввода/вывода и продолжат рисовать кадры так быстро, как это возможно (но не быстрее vsync по уму) даже в моменты, когда геймплей замер в ожидании взаимодействия с сервером.
    Ответ написан
    2 комментария
  • Разные курсы биткоина, где реальный?

    @nirvimel
    Во-первых, что такое реальный курс? Для фиатных валют (только СКВ) это сумма в резервной валюте, по которой сам эмитент готов выкупать обратно свои же денежные единицы. Например, Центробанк обязуется выкупить каждый свой выпущенный рубль за 1/30 USD (в 2013 году, например), эта гарантия выкупа и обеспечивает валюту реальной стоимостью, без этой гарантии любая валюта - просто фантики. Для не-СКВ не существует аналога понятия "реальный курс", так как формально заявленный курс в отсутствии реальной возможности что-то по нему реализовать - просто бессмысленная цифра.

    Теперь перейдем к децентрализованным валютам. У них не существует определенного эмитента и никто не дает гарантий их обратного выкупа. Что же наполняет их стоимостью? Только мгновенный (на данную секунду) спрос на них. В чем физически выражается спрос на биткоин, например? Это просто объем ликвидности, который стоит на бирже в ордерах на покупку ниже по курсу, то есть то "мясо", в которое зароется и упрется курс если начнет валиться вниз. Но суммарный объем этой ликвидности на порядок ниже объема открытых позиций в биткоинах, так что реальная обеспеченность биткоина (даже мгновенная) составляет единицы-десятки процентов.

    Что касается реального курса. Курс это возможность вернуть назад купленные фантики за определенное количество реальных денег. Очевидно, эта возможность полностью завит от биржи. Но я удивлю вас еще больше: эта возможность зависит еще и от объема вашей позиции, которую вы закрываете. Та цифра, которую вы видите на биржевом табло - это возможность продать один сатоши (или какой там минимальный объем лота на вашей бирже) в эту секунду. Как только вы попытаетесь продать больше, курс мгновенно дернется вниз еще до того, как исполнится ваш ордер. Так что вам никогда не удастся продать 1000 BTC по цене с табло (и даже близко к этому), рынок рухнет раньше, он не примет такой объем по такой цене. Так что держатель позиции с трехзначным числом BTC должен рассчитывать у себя в голове совсем другой курс продажи.
    Ответ написан
    Комментировать
  • Где отслеживать новые криптоваюты?

    @nirvimel
    Говнофорки пиарятся в основном тут.
    Что касается годных валют, то все они появись не вчера (этим они и отличаются, да).
    Ответ написан
    Комментировать
  • Запрет точек в имени файлов, реально ли?

    @nirvimel
    Вот именно запретить, чтобы прямо в реальном времени при попытке открытия на запись файла с определенным именем получить отказ от ОС - это довольно сложно. Придется писать драйвер файловой системы или копать в сторону FUSE/Dokan.
    Но можно написать простой скрипт, который будет мониторить свежие записи на диск, смотреть имена соответствующих файлов и сразу переименовывать их в нормальный вид. С точки зрения пользователей это будет менее удобно, но технически реализуется гораздо проще.
    Ответ написан
    3 комментария
  • Может ли две программы работать с одним портом, но на разных IP?

    @nirvimel
    В конфиге Nginx пишем:
    listen 127.0.0.42:80;
    Документация

    В конфиге Apache пишем:
    Listen 127.0.0.43:80
    Документация

    В браузере заходим на 127.0.0.42 и на 127.0.0.43. Наблюдаем разницу.
    Ответ написан
    5 комментариев
  • Как спрятать секретное слово в код картинки?

    @nirvimel
    Rarjpeg же.
    Ответ написан
    Комментировать
  • Как ботов для соц.сетей учат распознавать лица?

    @nirvimel
    искать лицо на фото

    а так же анализировать поведение пользователя

    Machine Learning.

    редактировать фото

    накладывать эффекты

    Фотошоп дошел до онлайна.
    Ответ написан
    Комментировать
  • Откуда баг шрифта в Firefox?

    @nirvimel
    Предлагаю закомментить по одному погрузку шрифтов в разных форматах и на каждом шаге смотреть результат на обоих ОС, чтобы выяснить какая ОС реально использует какой формат. Предполагаю, что дело в том, что по-разному выглядят разные форматы (знаю, что не должно так быть, но все же), а не в том, что разные ОС по-разному отображают один формат.
    Ответ написан
    Комментировать
  • Можно ли что-то сделать с быстродейсвтием Firefox на macOS?

    @nirvimel
    Попробуйте создать чистый профиль, не устанавливать туда никаких расширений и зайти на тестовую страницу (которая тормозила под старым профилем). Если тормоза исчезли, то дело не в самом FF, а вашем старом профиле (возможно, тормозит какое-то расширение, например).
    Ответ написан
    Комментировать
  • Denwer. Как опубликовать несколько сайтов в локальной сети?

    @nirvimel
    Можно поднять свой DNS-сервер и прописать имена туда. Но на остальных машинах все равно придется трогать конфигурацию сети, чтобы прописать свой DNS вместо дефолтного. Без этого никак. Если бы все было иначе, то каждый малолетний хацкер поднимал бы в свой локалке свой собственный google.com и yandex.ru с домашкой и одноклассницами.
    Ответ написан
    6 комментариев