Pull to refresh
56
0
Стас @ef_end_y

User

Send message

Уже давно так никто не пишет. Пишут просто e4. Это стандарт, если что

Не зря статью писали. Благодаря ей от комментаторов узнали сколько у вас проблем с вашей капчей)

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

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

Я осилил (надеюсь) только манипуляции с виртуальными регистрами. У меня 2 вопроса:
1) зачем введено такое понятие, почему нельзя иметь сквозную нумерацию регистров, а компилятор сам распределит где виртуальные, а где нет?
2) вы уверены, что итоговый код, когда значения виртуальных регистров будут летать туда-сюда в память (у нас ситуация что физических регистров меньше виртуальных, значит мы должны их хранить в кеше) будет оптимальней скомпилированного сишного кода, где компилятор оптимизирован под реальное количество регистров. Я когда-то смотрел скомпилированный код под MSP процессор и реально офигел, что он был довольно нетривиальным, т.е. не такой линейный как я ожидал

А что на асме прогаете? Я думал, что единственная для него ниша на данный момент - это компиляторы

С одной стороны автор критикует одну из характеристик Пайтона, с другой стороны рекламирует свои проекты на нем.

Язык - это совокупность множества характеристик и идеологий. Автор смотрит на легковую машину и говорит "а у трактора-то проходимость лучше, там гусеницы. Колеса отстой, гусеницы рулят". Типизация это далеко не единственная фича, которая влияет на качество кода. Если код написан так, что из контекста, аннотации типов и docstring непонятно что принимает и возвращает метод - этот метод тебе не нужен, зачеркнуто, ты гомнокодер

Поискал я, максимум что нашел, так это название: Virus.DOS.Small.59.a или Viking.59, что говорит о том, что он 59 байт, значит мой был меньше, наверное 58. Мой валяется где-то в бекапах, искать не буду, потому что и выкладывать не буду - хоть абсолютно понятно, что никакой опасности он не представляет, но часто люди не думают, забанят и все. Могу просто на словах описать основные моменты, почему удалось написать таким маленьким:

  1. долгое время все эти микрики дописывали себя в конец СОМ-файла, а в начало ставили только JMP - так было легко восстанавливать файл уже загруженный в память. До того пока кто-то не додумался "конвейер"! После чего стали писать в начало файла и восстанавливать код в памяти по-живому, т.е записывать прямо поверх выполняющегося кода - это не вредило, потому что он был в конвеере. Хотя прерывания никто не запрещал, так что мог быть сбой, но экономия байтов)

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

  3. резидентный кол писался прямо в таблицу векторов прерываний, во 2-ю половину, которая обычно не использовалась, но я помню я далекие 90-е у меня EGA использовал какой-то вектор. Так что в моем случае был бы крах

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

  5. точно помню что было обсуждение, что ХХХ из всемирно известных разрабов антивирусов "ввязался" в эту гонку и сделал ради спортивного интереса еще на байт меньше. Код никто не видел, а менеджер ХХХ, когда я об этом спросил его через несколько лет, отвечал: нет! нет! нет! такого не могло быть ни в коем случае

  6. как уменьшить на один байт у меня была идея, но я не реализовал ее, поскольку пришла в голову на следующий день как я забил на это и не стал возвращаться. Суть была в том, что первый запуск подготавливает резидента, потом выходит в ДОС, второй запуск запускает все и код-носитель выполняется. Выглядело б это формально как глюк первого запуска. Хз, может ХХХ так и сделал

Свой вариант сохранил. Мне были интересны других. В частности, по-моему название было viking. Я не думал, что интернет можно "потереть". Остались только упоминания без исходных кодов

В 200х в определенных кругах было что-то типа соревнования на написание самого маленького резидентного вируса под dos. Там реально годами уменьшали по несколько байт. В начале соревнования было что-то типа 113 байт (точные цифры не помню), под конец 64. Я потратил несколько дней (!) для того чтобы добиться этих самых 64. Это была тяжелейшая головоломка. На всякий случай скажу, что эти вирусы никакой опасности не представляют ибо время доса ушло, это чисто спорт, вирус был фактически на бумаге. К сожалению все исходники этих микро вирусов Гугл потер(

Все знают ответ на эту загадку с детства. Уверен практически никто своей головой до этого не додумается. Можно ради интереса задать кому-то англоязычному

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

Автор напоминает чем-то dz - тот долго разрабатывал и толкал свою "вечную ос", не знаю чем все закончилось, но ничего о ней уже давно не слышал.

Офтоповый вопрос: вы стрелочки с Клавы набираете или откуда-то копируете? Когда мне в тексте (программы) нужна стрелочка, я всегда гуглю utf8 arrow. А каменте на хабре написал бы просто ->

Я в 2014м небольшую статейку написал на этот счёт. Будет как дополнение к этой: https://habr.com/ru/post/227021/

Вы забыли добавить, что с "Руссиновичем над одним проектом работали"

Приведу на perl, поскольку (внезапно) на нем лаконичнее. Самое простое, когда необходимо найти фрагмент, перед и/или после которого стоит определенный фрагмент:

$s = "This is a <b>test</b>!";
$s =~ m|<b>(.*?)</b>|;
print $1; # печатает test


Здесь, как я говорил, лучше не использовать сущность "найденный фрагмент" и заглядывания вперед/назад, а проще применить группировку ($1). Пример простой, а вот с заменой немногие, не имея опыта, догадатся сделать так:

# заменим "test" или "bug" на "code" только если впереди стоит фраза
# "this is a " или "that is a "
$s =~ s/(this|that) is a (test|bug)/$1 is a code/;
# или так
$s =~ s/(this is a|that is a) (test|bug)/$1 code/;
# добавим пробелы вокруг text в <любой tag>text</любой tag>
$s =~ s|(<[^>]+>)(.*?)(</[^>]+>)|$1 $2 $3|;

Если человек понимает больше чем час изучения регулярных выражений, во втором примере я ему еще и предложу использовать \1. За "более боевыми" примерами надо лезть в код проектов и находить такие пограниченые варианты, но мне кажется этого итак достаточно, чтобы понять о чем речь. Если кому-то мой вариант менее понятный чем заглядывания - ради бога, я не расстроюсь, что кому-то он не подходит.

Хорошо, сегодня буду за компом, напишу. С мобилы не очень удобно регулярки писать

Information

Rating
5,092-nd
Location
Днепр, Днепропетровская обл., Украина
Date of birth
Registered
Activity