All streams
Search
Write a publication
Pull to refresh
1
0
Перикл Фемиди @pfemidi

Домосед

Send message
Продают в страны где «неавторитарный режим».
Имхо товар такого рода продается без идентификации покупателя вообще

У вас только IMHO, а я лично пробовал не купить, а просто получить try'n'buy версию UFED Physical Analyzer когда они у себя на сайте её ещё давали (лет пять назад это было, или семь, уж точно и не помню). Так вот прежде чем выдать ссылку для скачивания они проверят валидность указанного e-mail, валидность фирмы, которую указал (частным лицам даже demo не давали, надо было именно настоящую фирму указывать, причём не «Рога и Копыта», а фирму которая по-настоящему связана с МВД, ФСБ, мобильным форенсиком и т.д., просто «ИП Вася Пупкин» они отказывали сразу же — не форенсик, значит тебе это нафиг не надо, «Давай, дасвиданья!»), валидность адреса этой фирмы… В общем ещё тогда там приходилось делать такие финты ушами и совершать такие пляски с бубном чтобы получить хотя бы try'n'buy версию, что «мама не горюй!» А чтобы купить полноценную версию (которая отличалось от try'n'bye только тем, что работала не месяц, а вечно) проверки осуществлялись ещё более жёсткие. А сейчас если укажешь в «country» Россию вообще сразу же от ворот-поворот дают, проверял.

Так что идентификация покупателя у Cellebrite была и есть.
Ну ёлки! Тут же на хабре была новость о том, что Cellebrite с марта больше не продают свой софт «авторитарным режимам в России и в Беларуси». А тут говорят что «В список их клиентов входят авторитарные режимы в Беларуси, России, Венесуэле и Китае»
«Идентификация Борна» это первая часть относительно современной (с 2000-х годов) пенталогии. А «Оболочка Борна» это приквел, вышедший ещё в 1979 году!
А я всегда (ещё со времён .bat файлов DOS, с далёких 80-х годов) воспринимал это именно как экранирующий символ для всяких спецсимволов, с которых могла начинаться переменная и всегда так экранировал переменные в своих .bat файлах. И мне странно что такое очевидное на мой взгляд предназначение 'x' в начале переменной может быть таким спорным и неоднозначным.
Слава богу хоть кто-то думает так же, как и я. А я уж боялся что программистов больше нет, остались только «измерители времени выполнения».
Согласен, «без должных измерений это никуда не годится». Но в тривиальных случаях подобных данному бенчмаркинг это пустая трата времени. Я так считаю.
Ну если вы действительно смотрите ассамблер и понимаете, как инструкции ассамблера матчатца на производительность

Я начал программировать в 1986, сначала для i8080, после для 6502, после для к1801вм1, после для z80 и в 1989 перешёл на x86. И до 1993 я программировал исключительно на ассемблере потому как считал абсолютно все HLL слишком сложными и запутанными по сравнению с абсолютно понятным и без всяких сложностей языком ассемблера. После как-то постепенно перешёл на C и на Pascal. Но привычка видеть глазами готовый ассемблерный код в том же дебагере осталась. Поэтому естественно я «действительно смотрите ассамблер», раньше в 100% случаев, теперь только особо интересные места — «интересно, а во что компилятор мне перевёл вот это и вот это?» И если вижу уж откровенные ляпы, то либо делаю в этом месте ассемблерную вставку, или вставляю пресловутый
#[inline]
или какой надо по месту
#pragma что-то
.
Естественно что соревноваться с компилятором как он распараллелил обращения к памяти чтобы по тактам меньше выходило я не буду, но откровенные ляпы типа «call функция», а внутри функции лишь «inc eax» и «ret» я исправлю, хоть вручную, но заинлайню.
Тоесть вы глядите на вывод компилятора вместо бенчмарков?

Да, если компилятор сделал вызов функции для подобного вместо того чтобы заинлайнить, то я ему явно укажу что это надо инлайнить или вообще оформлю это в виде ассемблерной вставки. Для продакшена само собой, а для девелоперской версии пусть «умный» компилятор генерит чего ему в его тупую голову взбредёт, моя голова всё равно умнее его во сто крат.
Это не предварительная оптимизация ни в коей мере. В коде типа
#[inline]
fn get_hp(&self) -> f32 {
    self.hp
}
совсем не матрицы перемножаются, и не выборка из массива делается по, к примеру, индексам, кратным исключительно трём, и не полином CRC высчитывается. Надо быть полным идиотом чтобы подобное не заинлайнить и, извините, надо быть полным идиотом чтобы для подобного кода делать бенчмарки или, о боже, оборачивать подобный код тестами.
Вот удивляюсь всегда таким людям которые потратят час времени на написание бенчмарков вместо того чтобы за полминуты глянуть на код, который сгенерировал компилятор, и собственными глазами увидеть есть там bottle neck или нет и лишь в случае сомнений уже сделать бенчмарк. У таких людей видать просто очень дофига свободного времени, которое они запросто могут потратить на подобные вещи.
В тривиальных случаях наподобие как раз
#[inline]
fn get_hp(&self) -> f32 {
    self.hp
}
«куча бенчмарков» вовсе не нужна, достаточно собственной головы. А «куча бенчмарков» в подобном это сравнимо с «обжегшись горячим молоком теперь на воду всегда дуть».
Так думать надо что инлайнить, а что нет, и где инлайнить, а где нет. Безусловно «средний программист» которого вы упомянули выше не особо этим будет заморачиваться, да и не сможет при всём желании, но речь идёт про программистов выше среднего. Которые реально лучше компилятора знают где инлайнить и что инлайнить.
Функции из одной-двух строк вполне можно (и даже нужно) заинлайнить. А функции на полэкрана инлайнить не надо. Вот так и надо не на компилятор надеяться, а самому не плошать.
По мне лучше перебдеть, чем недобдеть. Так что в явном указании
#[inline]
я лично ничего плохого не вижу. Это не указание
register
в языках C/C++, там действительно компилятору лучше знать какие переменные класть на стек, а какие в регистр, а вот инлайнить или нет функцию… IMHO от такого указания во всяком случае хуже уж точно не будет.
Теперь понял, спасибо!
Можно вопрос? Спасибо. А что такое «ДТ языки»? Языки Дизельного Топлива? Языки Дульного Тормоза? Языки Детского Творчества? Я не издеваюсь, так что минусовать сразу же не надо, я правда не в курсе что такое «ДТ» в контексте языка программирования.
К тому же страдающего ожирением бодипозитивного инвалида.
По адресу ds:0000 лежала именно строчка с копирайтом. А всякие «runtime error», «null pointer assignment», «floating point error», "(null)" и прочие строчки ою ошибках лежали по другим адресам. А строчка с копирайтом была как раз ds:0000 и именно по её контрольной сумме CRT определяло что кто-то загадил память по нулевому указателю. Исходники CRT вам в помощь, там всё чётко и ясно откоменнтировано что, где и зачем.
Лежала. В real mode DOS. А сейчас она лежать может где угодно, инструкция sidt покажет где.
«Иди отсюда, мальчик, не мешай!» © :-)

Где жил PSP и что такое PSP я прекрасно знаю. Но к данной теме он никакого отношения не имеет (мы ведь не про модель памяти tiny говорим где и правда по адресу 0 был PSP, а small, medium, compact, large и huge, да? на tiny делалсь столь мало софта, что им можно пренебречь).

Information

Rating
4,868-th
Location
Москва и Московская обл., Россия
Registered
Activity