• Пишем клон движка Doom: чтение информации карт
    +4

    При выборе варианта чтения wad файла почему-то пропущен вариант использовать файл отображаемый в память (memory mapped file).

  • Как «Матрица» создала пуленепробиваемое наследие
    +2
    Нет :)
    Max Payne был долгостроем, и хотя сама идея и реализация скорее всего была сделана раньше, широкая общественность увидела её после фильма :(
    Есть же даже статья в википедии ru.wikipedia.org/wiki/Буллет-тайм
    Прикольно что до матрицы это использовали в фильме Блэйд
  • Как «Матрица» создала пуленепробиваемое наследие
    +8
    Как уже писали — сама по себе идея не была фундаментально новой, скорее мало знакомой широкому потребителю. В комбинации с другими приёмами фильм получился чем-то свежим и оригинальным. И хотя сиквелы продолжали инновации спецэффектов, этого нельзя сказать о сюжете.
  • Как «Матрица» создала пуленепробиваемое наследие
    +2
    Да, потом идею активно продвигали и другие, например Брюс Стерлинг.
  • $500 в месяц: на что получатели безусловного базового дохода тратят свои деньги?
    0
    Возможно источник не надёжный, но если верить aspe.hhs.gov/2019-poverty-guidelines, то дальнобойщик, получающий $30К в год не попадает под черту бедности для семьи из двух человек, которая там описана как $16,910.
  • $500 в месяц: на что получатели безусловного базового дохода тратят свои деньги?
    0
    Т.к. в США довольно распространена почасовая оплата, а дальнобойщик был представлен в статье как образец бедности, нуждающийся в этих 500$ — это была существенная прибавка к насчитанным мной 770$ :)

    А теперь оказывается что это лишь одна пятая от его дохода, и чел ну ни разу не бедный
  • Как «Матрица» создала пуленепробиваемое наследие
    +7
    Первый фильм оставил яркие впечатления, остальные уже не так.
    На уровне сценария очень мощной была бы депрессивная концовка «Матрица в Матрице» но, похоже, это лишь фанатские додумки.
  • $500 в месяц: на что получатели безусловного базового дохода тратят свои деньги?
    0

    Спасибо за пояснение. Тогда логично было бы писать что он получает за смену или за рабочий день. В формулировке сутки я исходил из определения что это именно 24 часа работы.

  • $500 в месяц: на что получатели безусловного базового дохода тратят свои деньги?
    –1
    8 часов в день вроде стандартная загруженность, 21 рабочий день.
    110$ это за 24 часа, или 3 рабочих дня. Получается 770$ в месяц
  • $500 в месяц: на что получатели безусловного базового дохода тратят свои деньги?
    0
    Да, накупить закуски на БД и часть продать :)
    На заработанные таким образом деньги купить пива.
  • Связный список на Python: Коты в коробках
    0
    На мой взгляд просто назвать методы по-другому потребует минимальных усилий со стороны автора и в то же время сделает использование удобнее, и учебным целям это скорее способствует.
  • Unix-пароль Кена Томпсона
    +39
    Лучше как-то более явно выделить сам пароль: p/q2-q4!.
    Я лично тупил смотря на хеш :)
  • Связный список на Python: Коты в коробках
    –1
    А какой великий смысл придумывать свои названия функций вместо стандартных?
    contains вместо __contains__
    get вместо __getitem__
    addToEnd вместо append
    removeBox вместо remove
  • Простите, пользователи macOS, но Apple зашла слишком далеко
    +1
    Тем временем я убедился, что Cogmind (и другое моё ПО) идеально работает через Wine и подобные ему пакеты.

    Учитывая специфику игры (это рогалик) она не особо требовательна к ресурсам и нормально будет работать через эмулятор
  • Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++
    0
    Про SBO возможно стоит упомянуть трюк из С, но для этого придётся переставить порядок элементов — последним должен идти массив символов (по-моему flexible array member можно даже нулевого размера). Можно выделить через alloca нужный размер (больше чем сам struct), после чего обращаться к символам вне диапазона задекларированного массива.
    Удобно при работе c POD
  • SAX-парсер python vs DOM-парсер python. Парсим ФИАС-houses
    0
    Считаете, что для этого надо дробить при кормлении? Лишние условия для проверки увеличат время работы.

    Требует проверки, но не думаю что значительно. Можно поэкспериментировать на скрипте для «очистки», обрабатывая блоки в 4Кб, 8Кб, 16Кб… и т.д. вместо одной «строки»

    И как по частям кормить DOM

    В примере вы используете xml.etree.ElementTree.parse
    Как это работает
    Если заглянуть внутрь, там вот это:
    def parse(source, parser=None):
        """Parse XML document into element tree.
    
        *source* is a filename or file object containing XML data,
        *parser* is an optional parser instance defaulting to XMLParser.
    
        Return an ElementTree instance.
    
        """
        tree = ElementTree()
        tree.parse(source, parser)
        return tree

    Что ведёт к методу ElementTree
        def parse(self, source, parser=None):
            """Load external XML document into element tree.
    
            *source* is a file name or file object, *parser* is an optional parser
            instance that defaults to XMLParser.
    
            ParseError is raised if the parser fails to parse the document.
    
            Returns the root element of the given source document.
    
            """
            close_source = False
            if not hasattr(source, "read"):
                source = open(source, "rb")
                close_source = True
            try:
                if parser is None:
                    # If no parser was specified, create a default XMLParser
                    parser = XMLParser()
                    if hasattr(parser, '_parse_whole'):
                        # The default XMLParser, when it comes from an accelerator,
                        # can define an internal _parse_whole API for efficiency.
                        # It can be used to parse the whole source without feeding
                        # it with chunks.
                        self._root = parser._parse_whole(source)
                        return self._root
                while True:
                    data = source.read(65536)
                    if not data:
                        break
                    parser.feed(data)
                self._root = parser.close()
                return self._root
            finally:
                if close_source:
                    source.close()
    

    По сути это XMLParser, которого кормят по-частям кусками по 64Кб :)
    Как еда заканчивается, parser.close() вернёт root

  • SAX-парсер python vs DOM-парсер python. Парсим ФИАС-houses
    0
    Остается сожалеть, что данное достоинство не применимо к БД ФИАС, так как требуется предварительная работа с кодировками.

    Вполне применимо, как я уже писал в комментарии.
    Да, это не так красиво как просто дать имя файла. Придётся кормить парсер по-частям. Читать часть, чинить кодировку и кормить парсер :)

    Для простого фильтра по тегам для SAX 27,5 ГБ ни о чем.
    Тем более что парсер ничего кроме текущей «лексемы» не помнит.

    DOM парсер для этого тоже подходит, его так-же можно кормить по-частям, но следить за объёмом «еды», как только размер достигнут — скормить ему фиктивный «конец», обработать «документ» и начать парсить новый, скормив ему фиктивное «начало». Это практически то-же самое, что было описано с разбиением файлов на маленькие в предыдущей статье, только без самих файлов (их не надо писать на диск и потом читать).
  • SAX-парсер python vs DOM-парсер python. Парсим ФИАС-houses
    0
    Не уверен, что это будет работать быстрее

    DOM парсер тоже можно кормить по-частям, смысл в том, чтобы избавиться от чтения/записи дополнительного «очищенного» файла, особенно если он довольно большой.

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

    На современном железе чтение из архива с распаковкой может работать даже быстрее, чем чтение уже распакованного файла с диска. Судя по примеру — для обработки требуется всего один проход по файлу, так что в идеале программа будет ограничена лишь скоростью работы с диском.
  • SAX-парсер python vs DOM-парсер python. Парсим ФИАС-houses
    0
    Ну значит кормить блоками некоторой длины :)
    Просто ваш «код очистки» вроде написан построчно.

    Про условия — пожалуй нечестно сравнивать
    SAX: дергание coroutine+print на каждое событие
    DOM: csvwriter только тегов HOUSE.
    Тогда уж пусть и SAX просто пишет CSV в startElement, если тэг HOUSE
  • SAX-парсер python vs DOM-парсер python. Парсим ФИАС-houses
    0
    Можно кормить sax парсер через feed построчно непосредственно во время «очистки» файла БД, это будет быстрее, чем писать/читать новый обработанный файл. Более того — можно читать данные непосредственно из архива, распаковывая по мере обработки.

    P.S. Зачем заморачивались с coroutine я не понял :)
  • Киберсемантика без SMS и регистрации
    +2
    Оттуда скачал, благодарю. На выходных ознакомлюсь.
    Раз уж решили использовать git/github, то можно было сделать лучше:

    1. git хранит объекты в запакованном gzip формате, смысла хранить в репозитории zip архивы нет, это двойной deflate.
    2. Лучше сделать нормальную структуру папок, чтобы человек мог отдельно скачать только тот формат/файл, что надо.
    3. Файл cybersemantics.txt лучше переделать в README.md после п. 2
  • Киберсемантика без SMS и регистрации
    +3
    Метод распространения мягко говоря не очень:
    Превышен лимит скачивания, вы можете сохранить файл на Яндекс.Диск

    Почему нельзя было сделать торрентом, например.
  • Бредогенератор: создаем тексты на любом языке с помощью нейронной сети
    0
    Интересно было бы сравнить результат, полученный цепями Маркова и нейросетью, пусть даже на учебном примере.
  • Москва - торт: тест на знание инновационной столицы
    +3
    6/9 угадал, для венчурного инвестора достаточно. o_O
    Однако непонятно, что делает IT-компанию «высокотехнологичной» и как их насчитали так много (какой % от IT-компаний высокотехнологичные, какой % средне- и низкотехнологичных). Может это фирмы-однодневки с раздутыми ожиданиями, чья единственная цель существования — прихватить инвестиционных денег и исчезнуть. Они венчурные, да. Но инновационные — вообще ни разу, так как никакого внедрения в народное хозяйство не происходит.
  • Джинн
    +1
    Да, но это вставки настоящего, а рассказ же из будущего :)
    Человечество пережило ядерную войну и генетические модификации, но по-прежнему использует USB для отладки приложений и формат .exe для приложений (под ОС Windows !?) и флешки.

    Рассказ мне понравился, остальное по сути мелочи.
  • Джинн
    0
    Прикольно, но немного позанудствую:

    • подключение к устройству и копирование состояния скорее всего журналируется;
    • обычно исполнимые файлы только для чтения и выполнения, дописать туда просто не дадут;
    • файл .exe не пройдёт проверку подписи после изменения размера;
  • Дальтоник — друг человека (Минздрав не Прав)
    0
    Да, без чёрно-белой картинки сложно понять, вот для наглядности
  • Дальтоник — друг человека (Минздрав не Прав)
    0
    Думаю что это он:
    Вот ещё интересный круг на фоне мазни, который вижу я, но не видят другие

    Нужно убрать красный канал с шумом (занулить), круг виден в синем и зелёном каналах.
  • Дальтоник — друг человека (Минздрав не Прав)
    0
    Говорит что картинка слишком маленькая, нечёткая и с низким контрастом :)
    По логике шестёрку видно даже в чёрно-белом варианте, чётче, чем единицу
  • Представляем шрифт Cascadia Code
    +1
    Лигатуры это прикольно. Шрифт чем-то напоминает Source Code Pro.
    Только одна гарнитура (regular), и та без кириллицы?
  • Не стесняемся, минусуем
    +2
    У меня нет кармы и не полноправный аккаунт.
    Объективно я не могу влепить вам минус :)
  • Не стесняемся, минусуем
    0

    Нет, не уверен. С плюсами тоже не уверен :)
    В краткосрочной перспективе уйти в минусы не сложно, но со временем результаты будут более объективными. Не думаю, что это фундаментальный недостаток.

  • Не стесняемся, минусуем
    0

    Если автору понятно за что минус — то это нормальный инструмент обратной связи, такой же как и плюс.
    P.S. В некоторых других системах это не обязательно +-1, а зависит от "опыта" пользователя. Голос новичка может "весить" в разы меньше, чем голос старожила, например +-0,01.

  • Не стесняемся, минусуем
    0
    Да, есть ситауции, когда и минус поставить, так сказать «Добавить», если причина недовольства уже чётко донесена до автора другими комментаторами и поведение не адекватно, но лучше конкретно плюсовать с чем согласен, т.е. ответы.

    P.S. Обидно, когда комментарий, критикующий статью набирает больше кармы, чем сама статья. Но это хорошо для автора статьи, для понимания что конкретно от статьи ожидали читатели. Это гораздо лучше просто заминусованной статьи без существенной обратной связи.
  • «Упрости и вырежь необходимое»: интервью с Джоном Ромеро, создателем Doom
    +1

    SyncSketch?

  • Правильная передача цветов ретроконсолей в эмуляторах
    0

    Я не имел ввиду "только ТВ сигнал", эмулятор не ограничен одной графикой и состоит из множества систем, точная симуляция которых довольно сложная. Точность эмуляции зависит от системы, не везде на практике нужно cycle accurate. ТВ сигнал является выходом для приставки и само отображение его на экране не является частью приставки как таковой. Я имел ввиду что ответственность эмулятора приставки за вывод графики на этом заканчивается.

  • «Упрости и вырежь необходимое»: интервью с Джоном Ромеро, создателем Doom
    +4

    Поздравляю! Но трёх дней недостаточно чтобы объективно оценить все особенности. По словам Ромеро люди просто устают от VR, вполне возможно что на это уходит больше трёх дней, так что продолжайте наблюдение :)

  • Правильная передача цветов ретроконсолей в эмуляторах
    0
    Ну я так понял что статья о «точной» эмуляции вывода картинки только.

    По сути эмуляция приставки на ТВ сигнале и заканчивается, дальше уже идёт эмуляция дисплея/телевизора, что вообще отдельная тема.

    Эмуляция всего железа cycle accurate для игрушек с приставки на мой взгляд особо и не нужна, те же эмуляторы PS1 заметно лучше оригинала в плане графики.
  • Правильная передача цветов ретроконсолей в эмуляторах
    0
    Увы, статья не относится к _точной_ эмуляции, поскольку на выходе консолей не было пикселей, а был ТВ сигнал.

    Старые консоли подключались к телевизорам через PAL или NTSC, и частота кадров также телевизионная. Честных 60 кадров там точно не было :).
  • Не стесняемся, минусуем
    +3
    У меня нет кармы :), но даже если будет смысла минусовать я не вижу.
    Если плюсуют, значит согласны, всё хорошо, ничего менять не надо.
    Если минусуют, то значит что-то пошло не так, есть масса различных часто даже противоречивых причин. Мне лично как автору более интересно узнать что конкретно по мнению человека я делаю не так, а анонимный минус без пояснений в этом ничем не помогает.

    Исходя из понимания что этот анонимный минус по сути ничем автору не поможет исправиться, на мой взгляд лучше написать комментарий (ну или если страшно, то хотя-бы прикрепить к анонимному минусу сообщение)

    P.S. В опроснике выбрал «другое»