• Какие книги стоит прочить перед тем, как начинать торговать на (крипто)валюте?

    @nirvimel
    Что мне может помочь для наработок стратегий?

    Machine Learning. Only.

    А в ручную?

    Увы, никак. Это все равно, что с палками и камнями переть против танков. Машины рвали людей (чемпионов) в шахматы еще двадцать лет назад. За это время технологии очень сильно развились, а вычислительные мощности выросли на много порядков. Кроме того, призовые фонды в шахматах не идут в сравнение с теми суммами, которые можно выкачивать из биржи инвесторов и наивных ручных трейдеров.
    Суть любой биржи - цифры. А в мире цифр человек против бота - просто мясо.
    Ответ написан
    Комментировать
  • Майнинг и какая вероятность успеха?

    @nirvimel
    Разве что перебор (поиск proof-of-work) идет не последовательный, а рандомный

    Перебор может быть последовательный, но индекс, с которого начинается эта последовательность должен выбираться случайно. Если искомое число X с равной вероятностью может находиться в любой позиции в диапазоне N, то вероятность того, что X окажется включенным в последовательность A прямо пропорциональна длине этой последовательности и не зависит ни от каких других факторов. Если все последовательности имели нулевую длину в начальный момент времени T0, то длина последовательно A на момент времени T прямо пропорциональна средней скорости, с которой эта последователь растет. А скорость прямо пропорциональна вычислительной мощности оборудования майнинга.

    Итого: Вероятность обнаружить X первым среди других прямо пропорциональна вычислительной мощности.
    Ответ написан
  • Что использовать для распознавания смысла вопроса?

    @nirvimel
    Семантический анализ естественных языков - одна из самых тяжелых задач в computer science. Намного тяжелее, чем ИИ для шахмат (который научился обыгрывать человека еще двадцать лет назад). В этом направлении мировая наука пока еще продвинулась совсем недалеко. Браться за это в одиночку не стоит без трех высших образований (одного из них по лингвистике).
    Ответ написан
    1 комментарий
  • Как избежать пожара и проблем при работе электрооборудования в домашних условиях без надзора?

    @nirvimel
    Перед самым ПК (если это единственный постоянно включенный электроприбор) неплохо бы поставить еще один автомат на очень малый ток (т.е. чувствительный). Номинал пусть будет минимальный, который не выбивает, помноженный на полтора. Если меньше 5A в хозмаге не найдете, то и 5A лучше, чем 16А в щитке. А так G3220 без дискретного видео и 1A * 220V никогда не выбьет, i7 - х.з., но 2A не выбьет точно.

    Страховка, ИМХО - пустая трата денег. Все страховщики - змеи. Они кинут вас, если только ваш скилл юриспруденции не превышает их скилл. Подводные камни там на каждом шагу. Например, в заключении экспертизы будет сказано, что одна из **возможных** причин пожара является несоответствие электрооборудования стандарту ГОСТ-100500 (у вас, конечно же, не найдется документа, подтверждающего соответствие ГОСТу какого-то китайского сетевого фильтра), а в страховом договоре мелким шрифтом как раз указано соответствие ГОСТу в числе необходимых условий страхового случая, например.
    Ответ написан
    2 комментария
  • Как происходит разработка в компаниях и зачем многим компаниям программисты?

    @nirvimel
    Почитайте "Экстремальное программирование. Разработка через тестирование" - Кент Бек.
    Там между строк можно уловить довольно интересный способ разводить крупные конторы при бабках на практически бесконечную разработку.
    • Продукт как бы уже есть - команда доказала свою полезность (типа, не просто съели бюджет) и незаменимость (теперь без них уже никуда, ибо коней на переправе не меняют).
    • Но этот продукт как бы еще надо разрабатывать - потому что то, что есть на данный момент, ужасно далеко от того, что написано в проектной документации. А под этой документацией уже поставили свои росписи куча представителей стороны заказчика.

    Вообще, довольно занимательная книжка. Подается как чисто техническая. Но с технической стороны там мало чего нового, а в основном компиляция разных ранее известных методик (автор не отрицает этого). Зато тема взаимоотношений команды (подрядчика) с крупной конторой (заказчиком) раскрыта полностью. Пока читаешь, так и представляешь себе какой-нибудь Фейсбук изнутри.
    Ответ написан
  • Как настроить шрифт в phpstorm на windows как в Mac OS X?

    @nirvimel
    Это Menlo. У него, кажется, проблемы с лицензией (придется пиратить).
    Но есть форк, который распространяется, вроде, свободно.
    Ответ написан
    Комментировать
  • Как заставить несколько потоков подождать?

    @nirvimel
    Это можно реализовать через ReentrantReadWriteLock. Управляющий поток захватывает writeLock, а рабочие потоки в точке остановки захватывают readLock (на время какого-то действия, наверное). Они могут захватить readLock все одновременно, но только, если writeLock не захвачен.

    Вообще не знаю зачем вам просто останавливать потоки. Обычно возникает потребность останавливать потоки перед выполнением какого-то действия, которое должно быть защищено. Если у вас просто остановка без защиты следующего за ней действия, то представьте такой вариант:
    1. Блокировка свободна.
    2. Рабочий поток перепрыгивает точку остановки.
    3. Сразу после этого ОС переключает управление на управляющий поток.
    4. Управляющий поток захватывает блокировку.
    5. ОС переключает управление обратно на рабочий поток.
    6. Рабочий поток выполняет код за точкой остановки (блокировка при этом захвачена в управляющем потоке).
    Теперь скажите чем этот результат отличается от того, как если бы рабочий поток просто перепрыгнул бы точку остановки при захваченной блокировке?
    Ответ написан
    Комментировать
  • Как вы подготовили свои сайты к закону о персональных данных?

    @nirvimel
    Кто следует 9,5 правилам, тот готов ко всему.
    Ответ написан
    Комментировать
  • Что такое org, и вопросы по нему?

    @nirvimel
    По первым пунктам уже ответили.

    сколько и чего между org 500 org 600,org 700?

    Если это сегмент кода .TEXT или инициализированных данных .DATA, то транслятор генерирует нули или 0x90 (т.е. NOP) в соответствующем месте бинарника, который ляжет в память по этим адресам.
    Если это сегмент .BSS (неинициализированные данные), то это просто некое место в памяти, куда не загружается ничего при загрузке программы.
    Если это обычный исполнимый файл под ОС (например *.EXE), то за содержимое этой области отвечает ОС. Linux, например, выдает всегда очищенные страницы (заполненные нулем). Windows тоже.
    Если это сам загрузчик ОС, то перед его загрузкой никто почистить память не может, поэтому он должен делать это сам.

    При загрузке с диска, винчестера, дискеты в реальном времени вся доступная ОЗУ память чистая можно использовать?

    В реальном режиме x86 адресное пространство в пределах (единственно доступного) первого мегабайта строго разграничено и используется для множества различных структур данных BIOS, для проброса доступа к видеопамяти, к ROM самого BIOS и других железяк.

    Сейчас сходу не найду ссылку на подробную карту адресного пространства в реальном режиме.
    Для начала можно глянуть сюда.
    Тут поподробнее.
    Как видно, доступное для ОС пространство лежит от 0070:0000 до A000:0000.
    Ответ написан
    Комментировать
  • Какова реализация или советы по реализации чтения и поиск информации с сайта на c++ (Парсер)?

    @nirvimel
    1. Закачка страниц из сети при помощи libcurl.
    2. Разбор страниц в DOM при помощи libxml2 (или libxml++).
    3. Выборка интересующих элементов (ссылки, картинки, и.т.д.) при помощи XPath запросов к DOM.
    4. Многопоточность: заброс новых ссылок в общую очередь + пул потоков, выбирающих себе задания из этой очереди и отрабатывающих по пунктам 1, 2, 3.

    так как некоторые ссылки могут быть скриптами или css

    С этим нет никакой проблемы. XPath //a выбирет только реальные ссылки на страницы, по которым возможно перейти.
    Ответ написан
    1 комментарий
  • Как "прорядить" данные с мониторинга?

    @nirvimel
    Это называется агрегация (или агрегирование) данных.
    Для этого типично используется OHLC, или среднеарифметическое, или средневзвешенное (если одни элементы данных "важнее" других, и каждого элемента есть свой "вес").

    Реализация всех приведенных функции очень простая. Разница только в том, выполняется ли агрегация в реальном времени и постфактум. Агрегация в реальном времени позволяет сильно экономить дисковое пространство, но исходные данные теряются безвозвратно, и если в будущем понадобиться выполнить другую агрегацию, то это будет уже невозможно.
    Ответ написан
    Комментировать
  • Как пропустить часть кода после выброса исключения в Java?

    @nirvimel
    При размере массива 10 первый цикл for (int i=0; i!=7; i++) проходит без выброса исключений, так как переполнение не достигнуто. А второй for (int i=0; i!=8; i++) выбирает на один элемент больше, в результате происходит underflow (в русском языке, кажется, нет точного аналога этому слову) и вылетает исключение.

    Также вместо if (count > arr.length) должно стоять нестрогое условие if (count >= arr.length). Иначе при count == arr.length в строке arr[count++] будет выход за границы массива.
    Ответ написан
  • Стоит ли использовать панель управления для VPS?

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

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

    По поводу конкретных рекомендаций: Это субъективно, но я раньше ставил WebMin на сервера с PHP, и Ajenti на сервера с Python (очень дешевые VPSки с 128Mb, просто не остается памяти под два, одновременно работающих разных интерпретатора).
    Ответ написан
    Комментировать
  • Как запоминать код, который писал две недели назад?

    @nirvimel
    1. Как писать много кода, оставляя его простым, как в начале?
    2. Также советую прочесть "Совершенный код" С.Макконнелла.
    3. Качественный код не требует того, чтобы его запоминали. Качественный код может быть забыт сразу после того, как он начнет проходить все тесты. Держать в голове нужно только программные интерфейсы, но даже не все, а только, используемые на текущем уровне абстракции.
    Ответ написан
    Комментировать
  • Вирус в uTorrent?

    @nirvimel
    Последний Ъ-uTorrent это версия 1.8.2. Она до сих пор работает как швейцарские часы. Дальше у разработчиков включилась жадность и отключилось вдохновение, на котором были созданы прекрасные предыдущие релизы.

    Житейское наблюдение без претензии на объективность: Относительная доля пиров uT > 3 на раздаче обратно пропорциональна уровню контента раздачи. Например:
    Качаю "The Limits of Control", 2009 - трешники составляют 30%-40%, остальные 1.8.2 и разные опенсоурсные.
    Качаю "The Martian", 2015 - трешники > 90%.
    Ответ написан
    Комментировать
  • Как округлить произвольное десятичное число без встроенных функций round и модуля math?

    @nirvimel
    Дело в том, что в математике не существует десятичных чисел.
    Существуют: натуральные, целые, рациональные, вещественные, комплексные, и.т.д. Но десятичных чисел НЕТ!
    Десятичная система счисления - это лишь форма записи для восприятия чисел человеком.
    Но сами числа не волнуют разные формы записи, в которой человек их может (или не может) воспринимать.
    В вычислительной технике все числа физически хранятся и обрабатываются в двоичной форме. Но это опять же только форма записи, это не делает сами числа "двоичными" (будто какими-то особенными). Десятичная система счисления в вычислительной технике используется кране редко. К вашему случаю это 100% не имеет никакого отношения, как и ко всем языкам высокого уровня (это число ассемблерные заморочки, которые были актуальны (минимум) лет тридцать пять назад).

    Теперь поговорим об округлении вещественных чисел:
    Дробная часть вещественного числа равна остатку от его деления на единицу. Целая часть соответственно равна разности самого числа и его дробной части.
    Чтобы сохранить определенное количество разрядов после запятой число следует сначала сдвинуть влево на соответствующее число разрядов, взять его целую часть и сдвинуть обратно в право на столько же разрядов. Сдвиг влево/вправо реализуется умножением/делением на основание системы счисления, возведенное в степень равную количеству сдвигаемых разрядов.
    Ответ написан
    Комментировать
  • Что делает этот кусок кода?

    @nirvimel
    Код побайтово записывает 64-битное число в bytearray размером в 8 байт.
    Автор этого (трехколесного) велосипеда, видимо, не дочитал справочник по Python до главы 7, в которой описывается модуль struct, решающий именно эту задачу.
    Из-за таких велосипедов (с циклами для записи одного числа) и рождаются легенды о том, что Python тормозной язык.
    Ответ написан
    Комментировать
  • На что нужно заменить string.digits в этой строке для того что бы получить число от 2 до 7?

    @nirvimel
    base32_characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'
    a = ''.join(random.choice(base32_characters) for x in range(32))
    Ответ написан
    Комментировать
  • Как обратиться по индексу к списку C++?

    @nirvimel
    bubble sort on linked list
    На то он и Пузырек, что не нужен там доступ по индексу.
    Ответ написан
    Комментировать
  • Python sqlite, почему возникает ошибка?

    @nirvimel
    telebotиспользует threading, функции с декоратором message_handler вызываются из потока на его тредпуле. Курсор sqlite3, созданный в конструкторе db из главного потока, не может быть использован в вызове send_welcome -> user_register -> db.query из другого потока.

    Перенесите создание курсора cur = self.con.cursor() в метод query и сделайте его локальной переменной.
    Или кешируйте создаваемые курсоры в threading.local, если производительность в этой точке критична (не думаю, что это так, исходя из задач бота).
    Ответ написан
    Комментировать