• Почему на сайтах используют игровую валюту вместо реальной?

    @nirvimel
    Если на моем счету в игре числятся N рублей, то компания окажется должна мне N реальных рублей в случае, я если пожелаю забрать свои средства.
    Если на моем счету в игре числятся N фантиков, то компания легко нарисует для меня N фантиков прямо на экране, я если пожелаю забрать свои средства.

    Фантики - это ничто, кроме того, что нарисовано на экране.
    Рубли - это реальные денежные знаки, и их значение на моем счету представляет собой сумму долга передо мной.
    Ответ написан
    1 комментарий
  • На сколько ресурса затратно операция получения даты - микросекунд с 1970 в современных языках?

    @nirvimel
    На большинстве (всех?) современных ОС получение времени - это функция ядра. Следовательно для пользовательского процесса в userspace это требует ровно один вызов в ядро, который представляет собой syscall, то есть программное прерывание. На стороне ядра код обычно тривиальный и заключается в получении значения переменной, в которой хранится время (эта переменная инкрементируется из обработчика прерывания таймера), и возврате этого значения через sysret, то есть возврат из прерывания. Поэтому основные временные затраты сводятся к исполнению syscall/sysret и сохранению/восстановлению контекста пользовательского процесса при входе/выходе в/из ядра.
    От единиц измерения (нано/мирко/милли) скорость вызова практически не зависит. Конвертация одних единиц в другие происходит на стороне пользовательского процесса, за это отвечают библиотеки и окружение конкретного языка, но эти вычисления составляют всего несколько машинных инструкций и не вносят значительный вклад общее время вызова.

    В Linux существуют несколько таймеров в ядре: высокого/обычного разрешения и переводимые/непереводимые назад, но получение времени происходит через одну функцию clock_gettime как бы по-разному это не выглядело в разных ЯВУ.

    В Windows стандартные механизмы GetSystemTime и GetTickCount выдают время только с миллисекундной точностью. А таймер высокого разрешения QueryPerformanceCounter предназначен только для измерения временных интервалов, его абсолютное значение не имеет смысла.

    Историческая справка: В реальном режиме работы x86 до тех пор, пока BIOS владеет аппаратным прерыванием таймера и таймер настроен по умолчанию (его еще можно перенастраивать), то есть с интервалом в 55ms и частотой в 18.2 герц, на каждый тик таймера инкрементируется четырехбайтное значение по абсолютному адресу 0:046C. Так что пользовательская программа (термин процесс тут не совсем применим) может получить значение времени мгновенно простым считыванием этого значения из памяти без каких-либо вызовов.
    Стоит отметить, что данный функционал не имеет никакого отношения к DOS или какой-либо ОС вообще, а прошит в BIOS любого x86-совместимого (даже современного) компьютера и действителен каждый раз при загрузке машины вплоть до момента перевода процессора в защищенный режим в момент загрузки ядра современной ОС.
    Ответ написан
    Комментировать
  • Как заставить ВСЮ винду работать через прокси сервер?

    @nirvimel
    На Ubuntu (как на любом Linux) это делается элементарно через iptables.
    Например, Redsocks (github, пакет в Ubuntu) - почти готовое решение, скрипт, который несет в себе все необходимые команды iptables для решения конкретной задачи. Позволяет прокидывать весь TCP (!) трафик с машины через SOCKS4/5 (а значит и через TOR или SSH) и даже через HTTP-proxy с доступным методом CONNECT (правда, сегодня такие уже большая редкость). Устроен он очень просто, советую заглянуть в исходник (на главной странице сайта также приведен), чтобы убедится в том, что те же действия с iptables несложно проделать и руками при необходимости.
    Примечательно: При покупке собственного VPS, в этом варианте нет необходимости поднимать на нем VPN, достаточно голого шелла, который вы получаете из коробки сразу при покупке. На клиенте при этом работает связка ssh (лучше autossh) + redsocks (или аналогичный скрипт).
    Что касается Windows, то на машине, напрямую подключенной к Сети, единственный безопасный метод ее запуска - это внутри виртуальной машины. А трафик с виртуальной машины можно легко фильтровать и/или запихнуть в туннель при помощи того же iptables.
    Как правильно заметил xmoonlight , владельцам роутеров с полноценным Linux на борту повезло в том, что Windows-машины (даже без виртуалок) могут быть безопасно подключены к Сети через роутер при помощи настройки iptables на нем.
    Ответ написан
    1 комментарий
  • Куда загружать файлы в cloudflare.com?

    @nirvimel
    Вам нужен хостинг.
    CloudFlare - не хостинг.
    Ответ написан
    5 комментариев
  • Вписать в квадрат окружность и закрасить цветом все, что вне окружности - есть простой способ?

    @nirvimel
    1. Нарисовать сплошной черный квадрат.
    2. Нарисовать сплошной белый круг поверх него.
    3. (по уточненным условиям задачи) Использовать полученное однобитное изображение в качестве маски для исходного изображения. Есть много вариантов реализации этого.

    Оказалось, что задача состоит в наложении на имеющееся изображение маски в виде прозрачного круга в центре и непрозрачной по краям. D' Normalization дал верный ответ в комментах.
    Ответ написан
    7 комментариев
  • Что лучше поставить в качестве веб-сервера на Debian 8?

    @nirvimel
    Если речь не идет об огромном количестве, одновременно обрабатываемых, запросов, то выбор тут сводится в основном к тому, что привычнее/удобнее конфигурировать: Apache или Nginx.
    Nginx + php-fpm - экономнее в плане потребления памяти и потоков ОС, держит больше одновременных соединений в условиях ограниченных ресурсов, за счет этого многие называют этот вариант более быстрым (на одиночных запросах без нагрузки разница, конечно, неощутима).
    Apache + mod_php5 (или Apache + mod_proxy_fcgi + php-fpm) - многие предпочитают его потому, что привыкли к синтаксису его конфига и .htaccess (который в таком виде отсутствует в Nginx).
    Ответ написан
    Комментировать
  • Как влияет качество SSL сертификата на ранжирование сайта в поисковиках?

    @nirvimel
    Как я понял из описания, ssllabs проверяет безопасность сертификата. А поисковики, кроме этого, учитывают саму его стоимость. Вряд ли они состоят в сговоре с эмитентами сертификатов, по видимому их логика сводится к тому, что создатели говносайтов просто не могут себе позволить очень дорогие сертификаты.
    Ответ написан
    3 комментария
  • Можете подсказать хороший онлайн тест на знание английского языка?

    @nirvimel
    огромное количество тестов предлагают пройти их бесплатно, но вот результат после 20-30 минут мучения только за деньги

    Очень странно. Почему мне такие никогда не подались?
    Вот на вскидку: то, что нашел у себя в закладках:
    1. esl.about.com/qz/Intermediate-Level-English-Review-Quiz - тест на intermediate уровень. Стилизован под бланк письменного теста, только интерактивный, сразу показывает правильный ответ и соответствующее правило.
    2. esl.about.com - целый каталог таких тестов.
    3. www.englishtag.com/tests/level_test_intermediate_B1.asp - интересен тем, что кроме стандартных заданий с выбором одного ответа из трех/четырех, есть задания на расстановку (drag&drop) множества слов во множество возможных позиции (суть в том, что гораздо сложнее угадать правильный ответ чисто случайно).

    Не ручаюсь за то, насколько данные тесты можно считать эталонными, но, по крайней мере, они полностью бесплатные.
    Ответ написан
    2 комментария
  • В чем различие == и IS в Python?

    @nirvimel
    Экземпляр класса - это и есть объект, а переменная это просто имя, которому сопоставлено некоторое значение. А так как в Python любое значение - это объект (экземпляр) какого-то класса, то операторы is и == всегда применяются к значениям переменных, то есть к объектам (экземплярам) класса.

    А чтобы понять различия между операторами is и == запустите этот код и посмотрите на вывод:
    class AlwaysEqual(object):
        def __eq__(self, other):
            return True
    
    instance = AlwaysEqual()
    print (instance == 42)  # True
    print (instance is 42)  # False
    print (instance is AlwaysEqual())  # False
    print (instance is instance)  # True

    Это пример класса, любой экземпляр которого всегда равен (==) всему, чему угодно.
    В то же время, экземпляр этого класса не является (is) другим экземпляром этого же класса и ничем другим кроме самого себя.
    Ответ написан
    Комментировать
  • Как использовать 2 ип адреса сразу для vps?

    @nirvimel
    И Nginx, и Apache по умолчанию слушают сокет с адресом 0.0.0.0 , который, с точки зрения ОС, соответствуют любому IP. Если только специально не задать конкретный IP, который будет слушаться, например для Nginx:
    server {
        listen 192.168.1.1:80;
    }
    Документация по listen в Nginx
    Пример для Apache:
    Listen 192.168.1.1:80
    Документация по Listen в Apache.
    Так что, если ничего специально не менять, то сайт будет доступен по всем IP, которые делегированы серверу.
    Ответ написан
    Комментировать
  • Что делать с тем, что я постоянно переписываю почти весь код?

    @nirvimel
    8113161e0442443c97c663931c502d11.jpg
    Ответ написан
    Комментировать
  • Какую книгу посоветуете родителям для обучения компьютеру?

    @nirvimel
    хотят научиться работать за компьютером

    Книгу эту они читать не будут

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

    @nirvimel
    XPath решает:
    //*[preceding-sibling::div[@class="start"] or self::div[@class="start"]][following-sibling::div[@class="end"] or self::div[@class="end"]]

    Но если начальный/конечный div-ы захватывать необязательно, то задача сильно упрощается:
    //*[preceding-sibling::div[@class="start"] and following-sibling::div[@class="end"]]
    Ответ написан
    Комментировать
  • Push уведомление о новой новости?

    @nirvimel
    WebSocket был разработан для решения как раз этой проблемы. То есть исторически это - его основное назначение. А всякие чаты на нем (которые теперь как HellowWorld в каждом примере), это уже как следствие его возможностей.

    А до появления WebSocket для этой цели использовались разные костыли:
    1. Server Push.
    2. Long Polling (почти тоже самое по сути).
    3. Comet.
    Ответ написан
    Комментировать
  • Как подготовиться к закону Яровой?

    @nirvimel
    1. Купите недорогой VPS (от $15/год, можно даже дешевле) и поднимите на нем личный VPN. В Сети есть куча подробных руководств как это делается. Только не надо говорить, что у вас нет на это денег, интернетом вы же не бесплатно пользуетесь. Просто примите это как небольшую дополнительную плату за интернет за ваш спокойный сон.
    2. Работая через VPN (обязательно), заведите себе новый почтовый ящик на зарубежном сервере у компании, у которой нет никакого бизнеса и любых коммерческих интересов в РФ. Пусть это будет не мажорный гигант индустрии, а скромная компания, малоизвестная в РФ. Главное - это наличие SSL в веб-интерфейсе и в IMAP, в остальном почта есть почта, она просто работает, и этого достаточно.
    3. Работая через VPN, заведите себе новый аккаунт в vk facebook и/или google (если вы неспособны полностью отказаться от использования социалок). При регистрации указывайте место проживания подальше от РФ. Учитывайте, что все гиганты индустрии, имеющие большой бизнес в РФ, полностью сотрудничает с ГБ, но аккаунты нерезидентов, зарегистрированные и посещаемые с зарубежных IP, они не станут сливать по умолчанию (но по первому запросу сольют мгновенно). Так что забудьте про любые приваты в социалках, ведите все общение так, как будто все это читает весь ваш квартал и все те, кому бы вам меньше всего хотелось это показывать. Для приватного общения пользуйтесь только безопасной почтой (пункт 2) и защищенными чатами, на telegram jabber на зарубежных серверах. Все это касается только тех, кто не может окончательно завязать с пагубной зависимостью от соц.сетей. Очевидно, наиболее безопасным (и полезным для здоровья) вариантом является полный отказ от социалок.
    4. Не вбрасывайте в старые ящики и соц.аккаунты адреса и ссылки на новые чистые, не указывайте новые адреса в любых исходящих и старайтесь, чтобы они не попали во входящие. Помните, что в любой социалке и любом веб-интерфейсе почты (сотрудничающей) кнопка "удалить" скрывает удаляемое только от вас самих и не более того.
    5. (Самый неприятный пункт) Забудьте про vk, mail.ru и российские gmail и facebook. - КАК? - Так! Я понимаю, что это не легко, что они давно стали частью вашей жизни. Но это придется сделать! Поговорите сами с собой, спросите себя что для вас важнее: ваша личная безопасность, спокойствие и крепкий сон или старые привычки, которыми вы опутаны, и которые не хотят отпускать вас? Учтите, что продолжая пользоваться местными социалками (и сотрудничающими иностранными), вы продолжаете каждый день генерировать на себя тонны компромата, который может обернуться против вас в самый неожиданный момент самым неприятным образом. Проявляя активность в своих старых аккаунтах, вы не даете им "протухнуть" и не даете даже формального повода добрым компаниям снести их через пол года, после истечения отведенного законом срока хранения (как известно, vk не ограничивается минимальным сроком хранения, а хранит все метаданные и текст практически вечно за исключением видео/аудио).
    Ответ написан
    26 комментариев
  • Есть ли книга «High Performance Python» на русском?

    @nirvimel
    Приветствую своих будущих конкурентов (и, возможно, заказчиков). Судя по описанию, сабж (почти каждый пункт в их списке) полностью соответствует моей специализации в последние несколько лет ("Solve large problems while using less RAM" - а на этой теме я вообще "собаку съел").
    Но даже по краткому описанию я могу заметить, что книга 2014 уже несколько устарела на сегодняшний день. Например, они упоминают мало кому известный Grasp, но нет совершенно ни слова о такой крутейшей технологии, как Numba, если только она не скрывается под этой фразой: "Use tools to compile Python down to machine code".
    И уж как скоро речь идет о performance, то нельзя было проходить мимо темы создания C/C++ расширений. Тем, кто профессионально занимается темой производительности, в любом случае придется столкнуться с этим рано или поздно.

    А пока вы ждете перевода, я постараюсь ответить на ваши вопросы по теме.
    Ответ написан
  • Какой addon использовать для мультиаккаунтов?

    @nirvimel
    Random Agent Spoofer - комплексное решение вопроса защиты от идентификации браузера (название аддона чисто историческое, в настоящее время слабо отражает всю широту его возможностей). Если целевой сайт (например, социалка) в принципе допускает работу с различных аккаунтов из под NAT через один IP, то этот аддон обеспечит (в крайнем случае - на максимальных настройках) полную имитацию работы с различных машин. Если целевой сайт требует отдельного IP на каждый аккаут (тем самым терят половину потенциальной аудитории), то потребуются прокси и ручное переключение между ними (аддон занимается только имитацией, но не реальным переключением).
    Ответ написан
    1 комментарий