sab123: (Default)
Меня чрезвычайно бесит, когда делаешь в Хроме прокрутку окна влево, а этот %$^%$^% нехороший браузер берет и идет на предыдущую страницу. Повбывав бы гадов. Нашел, как это выключить:

Пойти на chrome://flags/#overscroll-history-navigation и там выключить Overscroll history navigation.

Почему, ну вот почему нельзя это сделать в нормальных настройках? Или вообще просто не включать никогда. И вот так у них всё :-(
sab123: (Default)
Пока оно все новое и интересно, скачал Samsung Magician. Почему-то его энтерпрайзная версия (то есть, для энтерпрайзных моделей устройств) есть и для Линукса, а домашняя - только для Виндовса.

Диск(ну, SSD), который пришел с лаптопом, оказался Samsung PM981. Судя по описанию и характеристикам, он нечто типа ОЕМной версии 970 Evo (без Plus).

Samsung Magician намерял:

PM981:
seq read 3500 MB/s
seq write 2350 MB/s
rand read 288K IOPS
rand write 200K IOPS

980 Pro:
seq read 3550 MB/s
seq write 3370 MB/s
rand read 727K IOPS
rand write 559K IOPS

Ну, почему максимальная скорость чтения одинаковая - понятно, у меня только PCIe 3, он умеет только 32 Gbit/s, поэтому максимальые умения 980 Pro не используются. Не очень понятно, почему скорость линейной записи отстает, но близко. Зато в случайном доступе он показывает свои умения даже на более медленной шине. Можно, наверное, считать, что 10 лишние долларов потрачены не зря.

Вот, кстати, не исключено, что разница между 970 Evo и 970 Evo Plus (у них разные контроллеры внутри, и как ни странно, номинально более медленный 970 Evo сейчас продают гораздо дороже) - это источник паники в https://sab123.dreamwidth.org/692621.html?thread=2730381#cmt2730381 .

Линукс почему-то не умеет читать S.M.A.R.T. на NVME устройствах, а самсунговский волшебник - умеет. При попытке просто чтения с диска, dd на Линуксе дает 1.8G/s на PM981 и 10 G/s на 980Pro, если читать ОЧЕНЬ большими блоками (2.3G/s если мегабайтными блоками). Как у него смогло получиться 10 G/s - загадка природы, и мне приходит в голову только что у него есть какой-то способ ответить "этот блок пустой" без собственно перекачивания нулей.
sab123: (Default)
Я тут как-то писал, что нынче SSD позволяют обычно больше тысячи перезаписей на каждый средний блок, а оказалось нет. Это оказалось типично для встраиваемых SSD в устройствах типа телефонов. А в компьютерных M.2 NVMe ситуация хуже.

Устройства с больше тысячи перезаписей там есть, но только у одного производителя - Сигейт Firecuda. Около $210 за 2 терабайта или $130 за один. Это, кстати, совершенно потрясающе: в наши дни уже до 4 терабайт запихивают в такую тонкую и маленькую планку.

Следующий идет Самсунг, с 600 перезаписями (хотя есть и одна более старая и мелкая модель с 1200). Раза в полтора дешевле Сигейта при аналогичной скорости, и раза в почти два при меньшей скорости. То есть, с одной стороны дороже, с другой дешевле. Тут, кстати, вышло занимательное ценообразование: еще вчера смотрел на сайте Самсунга, показывали более медленную 970-ю модель по $130 за 2 ТБ, и что ее можно взять и в местном Бест Бае за те же деньги. Прихожу сегодня в Бест Бай - там оно уже по $140, причем и на их сайте и на сайте Самсунга - уже тоже. За день поменялось (да, на всякий случай хитрых геолокационных различий я потом и еще раз дома посмотрел - там тоже поменялось). Зато более быстрая 980-я модель оказалась по $150, а у Самсунга в интернетах она по $160.

Потом идет Вестерн Диджитал, но там зависит от моделей - у более дорогих чуть меньше 500, у более дешевых - около 200. Дорогие дороже Самсунга, так что в них смысла нет.

И потом всякий Интел и Кингстон - 200 перезаписей. По деньгам при этом вообще никакой выгоды. Ну и не знаю где всякие прочие китайцы.

В ATA SSD ситуация хуже, там тот же Самсунг дает только 400 перезаписей вместо 200 (но SATA и дешевле, чем NVMe).

Ну и всегда есть лайфхак для повышения долговечности: купить диск в 2-4 раза большего размера, там будет кратность относительно этого большего размера, и заодно если потребуется, то можно сложить больше данных. Но, конечно, и денег вдвое больше.
sab123: (Default)
И мы вам о них сейчас расскажем. В наши дни, оказывается, уже есть такая вещь как УСБшный кабель, который показывает, какой ток по нему протекает (дисплей встроен в разъем). В условиях путаницы о том, какое устройство когда желает или не желает от чего заряжаться - очень полезная штука, выводит все глюки на чистую воду. И стоит всего около десятки на ебее (и заодно поддерживает мощность в 100 Ватт).

vnc

Feb. 10th, 2023 11:42 pm
sab123: (Default)
Иксовый терминал теоретически может работать через туннель ssh -X. Но практически - он это делает в лучше случае очень-очень медленно. Непонятно зачем, но там делается много синхронных запросов, и на большом RTT оно ползет как улитка по склону Фудзи. Хрень, которая позволяет его таки использовать на больших расстояниях, называется VNC. Документация, к которому на удивление убога и невнятна, и записи презентаций с конференций тоже убоги и унылы, но я наконец-то собрался в нем более-менее разобраться.

В-общем, все это VNC растет из одного источника, который когда-то был опенсорсным, но от коммерческой фирмы. Фирма эта в какой-то момент перестала его опенсорсить, но предыдущий опенсорсный вриант отпочковался и зажил своей жизнью. Нынче он существует в вариантах TightVNC и TigerVNC, из котороых второй отпочковался от первого, но вроде как они все еще совместимы.

Пользоваться так:

На удаленной машине запускаем:

vncserver -geometry 1800x1100 -alwaysshared :1

Геометрию поменять по вкусу. Номер экрана тоже поставить по вкусу вместо :1, или можно совсем не ставить - оно скажет, какой номер выбрало. "Alwaysshared" означает, что к нему можно делать даже несколько параллельных подключений. Почему-то оно не дает установить dpi, но можно сделать копию скрипта и в нем добавить опцию -dpi при запуске Х-сервера. Оно работает, строго говоря, не через туннель ssh, а открывает свой собственный сокет и делает на нем свое собственное шифрование. При первом запуске спрашивает пароль для шифрования, который запоминает в конфигурации.

Запускать можно из ssh, и запущенный сервер остается живым после отключения ssh.

На клиентской машине запускаем:

xvncviewer -via user@gateway host:1

Здесь host - имя хоста с сервером, :1 - номер экрана, user@gateway - адрес для ssh-туннеля на пути к хосту. Если хост торчит прямо в интернет (наверное зря), или виден в VPN, то можно без -via. Оно спросит пароль и подключится. Экран остается живым между подключениями (ура, прям как rdp).

Как оно работает: как и можно предположить на первый взгляд, оно запускает два прокси-Х-сервера, сделанных из Xnest. Один с дальней стороны, один с ближней, и таким образом большинство синхронных запросов обрабатываются локально с той или другой стороны. Но на самом деле не совсем, протокол между этими серверами не обычный иксовый, а модифицированный внцшный. Этих протоколов в-принципе существует несколько версий, но клиент и сервер умеют о них умно договариваться. Дальний сервер остается живым все время (ну, если его не убить), и таким образом сохраняет все состояние сеанса.

Убить удаленный сервер можно с помощью

vncserver -kill :1

Из обнаруженных неудобств - местная машина сама обрабатывает Alt-Tab для переключения окон, и вдаль он не доходит. Но если с дальней стороны стоит приличная среда, то можно там переопределить другую кнопку.
sab123: (Default)
Я когда-то увидел замечательное прочтение для C# - "сисярп". А вот тут мне пришло в голову, что сермяжное прочтение "сисеточка" на самом деле ничуть не хуже.
sab123: (Default)
Интересная идея для тьюринг-теста, навеянная https://dennisgorelik.dreamwidth.org/240088.html : дать подозреваемому прочитать некий текст, который описывает изменения с некоторого известного состояния, и потом спрашивать про новое состояние целиком. Но, конечно, не подходит, если подозреваемый косплеит ребенка-дебила, как уже делал один искусственный интеллект.
sab123: (Default)
В связи с предыдущим постом, догадался, каков современный ответ на вопрос старого советского анекдота:

- Что такое, пыхтит, пердит, а в жопу не толкает?
- Советская нейронная сеть!
sab123: (Default)
Вот тут https://sab123.dreamwidth.org/672411.html оказалось, что АРМовый Мак умеет эмулировать x86й процессор. А теперь о скорости: как выяснилось, при этом на самом супер-пупер новом маковом ноутбуке выходит скорость на процессор примерно такая же, как и на около-15-летнем интеловском ноутбуке. Но в маке больше процессоров. Но масштабирование эмуляции по ним идет как-то плохо - вроде как теоретически там 8 настоящих процессоров и 16 виртуальных вместо 2, а работает легко параллелизуемая задача всего раза в два быстрее (если выключить параллельность, выходит примерно одинаково). Вообще если пытаться запустить более 8 тредов он делается только медленнее.
sab123: (Default)
https://fabiensanglard.net/postcard_pathtracer/

Разбор трейсера лучей, котрый помещается на визитку (обфускированный и очень мелким шрифтом).
sab123: (Default)
Тут вот выяснилось, что на Андроид можно любым образом закачать apk - пакет приложения и установить его (а на айфоне, кстати, нельзя). И можно давать разрешения приложениям устанавливать приложения. В связи с чем вопрос, почему нет альтернативных магазинов приложений? Ну то есть есть, но типа скажем самсунговский. А почему производители приложений не соберутся вместе сделать свой магазин, чтобы урезать процент денег, отдаваемых гуглю? Это не говоря уже о том, чтобы к херам посылать иx цензуру приложений?
sab123: (Default)
Изобразил тут для удобства юниксный таймстамп в неделях, поделив его на (3600*24*7). Получаются цифры типа 2744. Чтобы проверить, правильно ли вышло, поделил на 52 - и опаньки, получил опять около 52. Но нет, все верно, 1970 + 52 = 2022.
sab123: (Default)
У PDP-10 обнаружилась интересная особенность: когда делается косвенная адресация, то значение интерпретируется не просто как адрес, а как адресный кусок команды включая поля косвенности и (!) индексного регистра. И если следующее значение опять указывает на косвенность, то повторить опять, так хоть до бесконечности. Видимо они так сделали потому, что машина была с пословной аресацией, адрес был вдвое короче слова, ну и почему бы не использовать свободное место, особенно если можно повторно использовать ту же самую последовательность микрокоманд? Но какие возможности оно открывает для глюков и атак - это нечто. Начиная с тупо зацикливания на уровне микрокоманд, если косвенный адрес указывает на самого себя.

Кому интересны подробности, смотреть сюда: http://pdp10.nocrew.org/docs/instruction-set/Addr-Comp.html

Из других интересных особенностей, первая версия PDP-10 была сделана асинхронной.
sab123: (Default)
Случайно узнал, что АРМовый Макинтош умеет выполнять программы для АМДшного Макинтоша. То есть вот например Матлаб для него скомпилирован под АМД x86_64. Когда для него компилируешь нативный код ихней тулзой mex, она выставляет нужную архитектуру. А если скомпилировать объектные файлы отдельно, то они по умолчанию скомпилируются под АРМ, и потом при попытке включить их в mex скажут, что у них не та архитектура.

Интересно, как он делает эмуляцию? В самом процессоре, как-то софтверно, или какая-то смесь?

1000

Jul. 11th, 2022 09:53 pm
sab123: (Default)
Увидел спефицикацию долговечности на SSD чипы, которые ставят в телефоны. Она меряется в "сумммарном объеме записи". И у современных устройств он примерно в 1000 раз выше, чем заявленный объем устройства, то есть можно переписать каждый блок в среднем около 1000 раз. У некоторых проивзодителей чуть меньше, у некоторых - чуть больше.

Это по сравнению с SSD-карточками, где нынче хорошо если получится записать в среднем три раза.
sab123: (Default)
http://www.madore.org/~david/programs/unlambda/

Unlambda is a programming language. Nothing remarkable there. The originality of Unlambda is that it stands as the unexpected intersection of two marginal families of languages:

Obfuscated programming languages, of which the canonical representative is Intercal. This means that the language was deliberately built to make programming painful and difficult (i.e. fun and challenging).
Functional programming languages, of which the canonical representative is Scheme (a Lisp dialect). This means that the basic object manipulated by the language (and indeed the only one as far as Unlambda is concerned) is the function.

Obfuscated programming languages (see below for links) are typically made nasty by either strongly restricting the set of allowed operations in the language, or making them very different from what programmers are used to, or both. (Of course, the goal is to do that while still being Turing-complete.) Unlambda does this (note, however, that the operations permitted were not chosen at random: they have their theoretical importance). But whereas most obfuscated programming languages try to somehow model the Turing Machine paradigm, Unlambda does not use a tape, array or stack. Nor is it binary-oriented; as a matter of fact, it does not manipulate integers in any way. Other remarkable (un)features of Unlambda are the fact that it does not have any variables, data structures or code constructs (such as loops, conditionals and such like).

Rather, Unlambda uses a functional approach to programming: the only form of objects it manipulates are functions. Each function takes a function as argument and returns a function. Apart from a binary “apply” operation, Unlambda provides several builtin functions (the most important ones being the K and S combinators). User-defined functions can be created, but not saved or named, because Unlambda does not have any variables.

Despite all these apparently unsurmountable limitations, Unlambda is fully Turing-equivalent.

Mathematically, the core of the language can be described as an implementation of the lambda-calculus without the lambda operation, relying entirely on the K and S combinators. Hence the name “Unlambda”. It uses head (“eager”, “by value”, “strict”) evaluation. I cannot claim originality there. However, as far as I know, I am the first to have taken this theoretical concept and made it into an actual (deliberately obfuscated) programming language. I added a couple of functions (chosen for their obscurity) to the language so as to make output (and, in version 2, input) possible, or just to make things even more obscure (delay and call/cc are such).

A note on terminology: The phrase “purely functional programming language” is usually applied to languages, like Haskell or Clean, which are lazy and demand explicit sequencing of side effects. I dislike this terminology: for one thing, a “functional” programming language is one in which functions have first-class citizenship, so a “purely functional” one should be one where, as in Unlambda, only functions have first-class citizenship. And what are usually called “purely functional programming languages” should be called, exactly as I just did, lazily evaluating programming languages with explicitly sequenced side effects. All these points are orthogonal: it is quite possible to conceive a lazy programming language which is not functional, or an eager (i.e. non-lazy) functional programming language which still demands explicit sequencing of side effects. In any case, this is to say that I might, on occasion, speak of Unlambda as a “purely functional” programming language, although, with the usual terminology, it is not.
sab123: (Default)
Когда СКО подало свое судебное дело против ИБМ, ИБМ решило действовать как в поговорке “я ему отомщу, на балкон надрищу” и открыло судебные дела о нарушении СКО их патентов. Соответственно, потребовалось оценить, насколько эти претензии спреведливы. Мне достался вопрос о патенте на сжатие данных командой compress – это был такой классический юниксный архиватор, который существовал еще до gzip’а. Но на самом деле не только, та же компрессия используется и во все еще популярном формате графических файлов GIF. Компрессией я до того не занимался, так что интересно было в этом разобраться.

Нет, ну кодирование Хаффмана, где повторяющиеся строки бит кодируются битовыми строками переменной длины согласно частоте их встречания в тексте (чем чаще, чем короче назначается кодированная битовая строка), и совсем примитивные варианты типа run length encoding (замены многократных повторов одного символа счетчиком повторов), мы в институте проходили, но это не то, как типично делается сжатие в современной реальности.
Хотя вообще архиваторы на основе кодов Хаффмана существовали – так был устроен совсем древний юниксный архиватор pack. Но они уже давно не используются. Кстати, интересной особенностью сжатия по Хаффману является то, что если попытаться сжать его результат другим архиватором, он не очень-то и сожмется. Другие алгоритмы обычно предполагают, что данные состоят из целых байтов, а Хаффман производит битовые строки произвольной длины, которые не выровнены по границам байтов, и соответственно когда эти битовые строки оказываются сдвинуты внутри байтов на 1, 2, и так далее бит, то они выглядят разными байтами. И заодно другое отступление, почему программы сжатия по-русски традиционно называются “архиватор”. Так сложилось, что первой массово распространившейся такой программой стал pkarc на МС-ДОСе. “pk” - это инициалы автора (который позднее создал pkzip, который до сих пор является популярным форматом), а “arc” - сокращение от “archive”, архив. Соответственно, архиватор. Потом были и другие программы, называвшиеся аналогично. Скажем, одно время очень популярным был lha, где опять же “lh” - инициалы автора, а “a” означает “архив”.

Ключом ко всей современной архивации стал алгоритм Лемпеля и Зива (Lempel and Ziv), патентом на который владеет (точнее, владела, поскольку сейчас его срок уже истек) фирма Юнисис. Я начал с чтения этого патента. В самом патенте оно излагается несколько запутанно, но суть на самом деле там довольно простая. Алгоритм находит повторяющиеся строки байт и кодирует их числами фиксированной длины. То есть, например, если взять фиксированную длину в 16 бит, можно закодировать 65536 строк. Что делать, если мы исчерпали все возможное число строк, а текст не кончился, и мы в нем обнаружили новую строку, которую до того не видели, и нужно ей назначить новый код? Тут есть варианты. Один вариант – начиная с этого момента увеличить длину кода, и теперь кодировать каждую строку не двумя байтами, а тремя. Другой вариант – сбросить всю память о назначенных строках и начать их кодировать сначала. Это выглядит на первый взгляд странно, но часто большие файлы состоят из разных частей, и строки, которые часто встречаются в одной части, оказываются редкими в другой, так что избавление от знаний о предыдущих давних частях – не такая уж и большая потеря.

Вторая часть проблемы заключается в том, как находить эти повторяющиеся строки, и когда они найдены, то как записать “словарь” соответствия строк кодам в сжатый файл, не тратя на это чересчур много байт. Это главная проблема, которую решает алгоритм Лемпеля и Зива. Он начинает с того, что первые 256 значений в коде отводятся под просто байты – то есть, если надо передать просто байт, то он раширяется слева нулями до фиксированной длины кодового значения. Потом мы начинаем читать входной файл и пытаться найти в словаре самую длинную строку, которая будет соответствовать началу файла. Если мы ее нашли, то записываем на выход код этой строки, плюс один следующий байт (его можно не расширять, а так и записать одним байтом). И добавляем в словарь новую строку, состоящую из найденной строки плюс следующего байта, со следующим доступным кодом. Если же мы не нашли в словаре ничего соответствующего, то записываем один следующий байт из файла, расширенный до длины кода, плюс второй байт, который следует за первым. И потом точно так же добавляем эту новонайденную двухбайтовую строку в словарь. В-принципе, можно на это посмотреть и с другой стороны, и сказать, что мы сначала инициализируем словарь всеми возможными однобайтовыми строками, и тогда вторая ситуация сводится к первой – мы всегда сможем найти в словаре какую-то строку, которая просоответствует началу оставшегося файла, хотя бы из одного байта.

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

Следующим усовершенстованием, сделанным Велчем (Welch) владел тоже Юнисис, и вся эта комбинация из двух идей известна как LZW (Lempel-Ziv-Welch). Тут фокус в том, что классический алгоритм ЛЗ строит словарь в виде больших префиксных деревьев, хранение которых в виде собственно деревьев довольно неэффективно и требует много памяти, а в 1980-х годах, когда этот алгоритм был придуман, памяти в компьютерах было мало. Поэтому вместо деревьев, словарь хранится в памяти в виде хэш-таблицы. Первые 256 ячеек в ней все еще отведены под строки из одного байта, а вот добавление новых строк делается по-другому. Вместо того чтобы взять следующий свободный номер, новый номер получается комбинированием номера префиксной строки и нового байта через хэш-функцию. И тогда в ячейку таблицы по этому номеру записывается номер префиксной строки и новый байт. Это дает компкатное представление, по которому можно восстановить строки, а так же удобно отыскивать префиксы. Но, конечно, когда таблица оказывается прилично заполненной, то сильно увеличивается вероятность конфликтов, когда мы посчитали номер новой ячейки, а опаньки, там уже оказываются другие значение. Тогда это трактуется как переполнение словаря, вся хэш-таблица очищается, и заполнение начинается сначала.

Внимательный читатель на этом месте спросит: погодите, а где же тут ИБМ? Именно так, ИБМа тут нет. ИБМу принадлежит другой патент, который ни в команде compress ни в ГИФах не используется. Суть того патента в том, чтобы строить новые строки в словаре не как “строка + байт”, а как “строка + строка”. Это позволяет быстро выращивать длинные повторяющиеся последовательности – скажем, если у вас есть подряд сто букв “а”, то классический ЛЗ и ЛЗВ будут удлинять строки линейно - “а”, “аа”, “ааа”, “аааа”, и так далее, а ИБМовский вариант – по экспоненте - “а”, “аа”, “aaaa”, “aaaaaaaa”. Но оно нигде в Юниксе не используется.

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

Следующим их вопросом было, а вот до того ИБМ судился с Информиксом и выиграл, и в доказательство ссылался вот на эту книжку. Почитал я еще и ту книжку. И обнаружил, что книжка описывает ИБМовский алгоритм, но называет его ЛЗВ. Но это совсем не то, что говорится в патентах, книжка эта оказалась ошибочной и ссылаться на нее как на доказательство напрочь нельзя.

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

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

Занятие экспертной оценки патентов мне понравилось, но как-то вот больше заняться им не довелось. Зато этот опыт отразился на моем восприятии кампании Electronic Frontier Foundation (EFF) о патентном праве. ЭФФ – бесприбыльная организация, существующая на пожертвования, и согласно своему уставу занимающаяся защитой свобод в электронном мире. Примерно в 2010 году ЭФФ начало возмущаться ситуацией, когда мелкие изобретатели или сами требуют денег с компаний, использующих их патент, или продают свои права компаниям, специализирующимся на таких делах (ЭФФ называет их “патентными троллями”). Ну, в некоторых случаях, когда патентуемое тривиально, то можно повозмущаться тому, какие тривиальные патенты выдают, но не самой практикой. Ведь это – единственный способ, каким мелкие изобретатели могут получить доход со своих патентов. Суть патента – именно в том, чтобы он лиценизировался кому угодно за деньги. А настоящие патентные тролли – большие компании типа ИБМ или Гугла, которые сидят на своих патентах и не лицензируют их, зато используют их как средство внерыночного давления на конкурентов, как ИБМ давило на СКО. Надо, конечно, не забывать, что те же ИБМы и Гугли дают ЭФФу пожертвования, так что направление их возмущения не случайно. С этого началось мое разочарование ЭФФом. А потом они и вовсе проявили себя коммуняками, выступающими за Вселенское Зло, так что своих денег я им уже очень давно не жертвую, и другим не советую.

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

Американские патенты состоят из двух основных частей. В первой части свободным слогом описывается изобретение, приводятся картинки и прочее. Во второй части идет формулировка патента (patent claims). Это формулировка довольно краткая, и пишется в специфическом формате: каждая формула – одно предложение, но с массой сложноподчиненных частей. И когда дело доходит до суда, то играет роль только то, что написано в формулировке, первая часть если и участвует, то только в качестве контекста, если во второй части обнаруживаются какие-то спорные моменты. Поэтому важно ее сформулировать правильно. Ну, базовые вещи типа использовать слово “включает” (comprises), а не “состоит из” (consists of), я уловил – если писать “состоит из”, то добавление любого нового элемента к рецепту сделает его не попадающим под действие патента, а если “включает”, то вариант с дополнительным элементом может быть самостоятельно патентуемым, но все равно попадающим под изначальный патент. Но, видимо, тонкости я не прочухал, поскольку мне сказали, что мои формулы написаны неграмотно.

Можно было, конечно, пойти к профессиональному юристу, но это дорого, я поинтересовался – они брали по $400 в час, встало бы в несколько тысяч. Ну и поскольку продать свое изобретение мне к тому времени так и не удалось, то я решил, что бессмыссленно делать лишние траты. С продажей мелких изобретений большим производителям все непросто. До некоторых производителей вообще не достучаться. У них, видимо, политика подобная тому, что я когда-то читал в мемуарах Азимова: “когда люди присылают мне свои рукописи на оценку, я их не читаю, чтобы они потом не обвинили меня в том, что я использовал их идеи”. Так и тут, чтобы в присылаемых идеях не оказалось таких же идей, до каких они дошли самостоятельно. До некоторых производителей я достучался, но толку не вышло: как они сказали, это устройство слишком опасное, и им такое выпускать не позволят федеральные требования по защите прав потребителей. Ну да, немножко опасное, зато удобное. В моей личной шкале оценок рисков против удобств, тут удобства напрочь побеждают риски, и я с радостью пользуюсь своим устройством. А федеральные законы с примерно 1970-х годов направлены на защиту идиотов в ущерб разумным людям, спасибо проклятому Ральфу Нейдеру.
sab123: (Default)
Я тут взялся мемуары писать (кстати, некоторые из возможных читателей здесь в них присутствуют). Пока что более-менее закончены главы, заканчивающиеся институтом (причастным могу дать почитать), а остальное пока набирается кусками из разных времен. И вот из них:

В году примерно 2003-м, (хотя обсуждения может начали и в 2002-м) группа менее популярных производителей дистрибуций Линукса (включая SuSE - Сюзе, Caldera- Калдера, Connectiva – Коннектива, и еще кто-то мелкий, которого я забыл) решила объединиться и сделать общую дистрибуцию, которую назвали United Linux. Не то что бы совсем одинаковую, но в-основном, с небольшими вариациями. Ну, казалось бы красиво, да? На самом деле внутри там шел тот еще срач. По сути это был план Сюзе обмануть других производителей и украсть у них пользователей.

При обсуждении общей работы Сюзе выставило ультиматум, что они будут участвовать только если они будут делать всю разработку, а все остальные им коллективно за нее заплатят. Почему Калдера на это согласилась, я знаю — потому что ей хотелось сократить расходы и закрыть свой офис по Линуксу в Германии. Я как раз там был в командировке, перенимая опыт эскалаций, то есть починки срочных багов, приходящих от клиентов через поддержку, когда им объявили, что офис скоро закывается, но их всех оптом берет на работу Сюзе. В Германии закрыть офис и всех уволить не так просто — там все очень опрофсоюжено, и нужно предупреждать работников за как минимум 3 месяца, с кучей бюрократии. Если кто-то при прочтении этого возрадуется за Права Трудящихся, то знайте, что то же самое действует и в обратную сторону — чтобы поменять работу, надо предупредить старую об уходе за 3 месяца. Это, конечно, честно и логично, но в результате с передвижением рабочей силы в Германии полная задница. А тут очень удобно вышло, сотрудников перенимает другая компания, радикально уменьшенные расходы на бюрократию. А почему другие производители согласились — не знаю. Может тоже что-то где-то сокращали.

Сюзе тогда получило от ИБМ 50 миллионов в виде инвестиций на портирование их Линукса на ИБМовские мэйнфреймы, так что у них деньги на новых людей были. Кстати, оцените, какой изящный финт ушами сделала ИБМ: они не заплатили Сюзе за портирование 50 миллионов, вместо того они дали 50 миллионов в виде инвестиций. И получили не только Линукс для мэйнфреймов, но и за те же деньги контрольный пакет Сюзе в собственность. Двойная выгода.

Ну, а почему Калдера решила сократить линуксный офис — тоже понятно. Калдера как раз переживала тяжелые финансовые времена. Доходы от купленного ею СКО каждый квартал падали, и выходили убытки. Но и доходы от Линукса не росли. Как нам показывали на общих собраниях, доходы от Линукса были «меньше одного миллиона», не уточняя, насколько именно меньше. Но эта подробность мне позже попалась на глаза, наверное даже в годовом отчете для инвесторов — весь годовой доход от Линукса был 18 тысяч долларов. То есть, примерно говоря, около 20% зарплаты одного инженера, не считая всяких накладных расходов. Как мне говорил человек в немецком офисе, «пусть доходов пока еще мало, но зато Линукс показывает перспективу развития». Это на самом деле тоже неправда. Когда Калдера говорила клиентам купленного ей СКО, что сияющая перспектива — Линукс, она этим говорила, что продукт, который они покупают, находится одной ногой в могиле, а вместо того им надо так или иначе переходить на Линукс. Ну и раз переходить, то практически все из них выбирали другой вариант Линукса, более популярный, и предпочитали получать его бесплатно. Так что эта «перспектива развития» не только не служила развитием другого бизнеса, а наоборот, активно его убивала. Несколько смешная часть заключается в том, что Ред Хат (самая популярная на тот момент коммерческая дистрибуция), да и тот же Сюзе, хотели за поддержку своего Линукса заметно больше денег, чем СКО за коммерческую лицензию и поддержку своего Юникса. Но поскольку юридически лицензии на каждую копию не требовалось, то пользователи (как например потом виденный мной Комсток) хитрили: покупали, скажем, одну копию с поддержкой, и устанавливали сто. Если потом вылезали какие-то проблемы, то шли с ними как за поддержкой той одной купленной копии.

Возвращаясь к Единому Линуксу, в результате соглашений о разработке оно выглядело как дистрибуция, сделанная Сюзе, которая даже поставлялась в виде дистрибуции, «черного ящика», набора образов сидюков, которые потом каждый из других участников разбирал, добавлял свои дополнительные пакеты и брендинг, и собирал назад. Сюзе при этом пыталось еще и замылить исходники нескольких пакетов, производимых ими. Которые простым пользователям в исходниках не дают, но партнерам давать должны были.

У нас, то есть в Калдере, которая посередине этого проекта была переименована опять в СКО, Единым Линуксом занимались два с половиной человека: я делал распаковку-добавление-запаковку, Рон Рекорд делал дополнительные пакеты, и Шон, тестер, половину своего рабочего времени отводил на тестирование Линукса. В результате когда процесс был завершен и все участники его постили в мэйл-лист фотки своих офисных празднований, нам постить было нечего: я был в Нью-Джерси, Рон в Калифорнии, так что обошлись без празднований.

Я сделал весь процесс распаковки-добавления-запаковки в виде скриптов. Ну да, потратил пару недель, но зато потом он делался быстро и автоматически одной командой make. Как только мы выкачали финальный вариант сидюков от Сюзе, через 15 минут наша версия была готова.

Но на этом срач между партнерами не закончился. Следующим шагом был выпуск продукта в продажу. Все участники делали свое ценообразование независимо, и боялись, что другие участники их обманут. Поэтому они сформулировали лицензионный сбор в пользу ассоциации как процент от средней цены, посчитанной из цен всех участников. Чтоб никто не мог раздавать свою версию совсем по демпинговым ценам, подкапывая остальных участников. Когда цены опубликовали, выяснилось, что самую высокую цену из всех заломило Сюзе. Но специфически: параллельно Едином Линуксу они выставили на продажу Сюзе Сервер, который был на самом деле таким же (хе-хе, не случайно они хотели себе всю разработку), но не считался частью Единого Линукса, поэтому на него они поставили цену вдвое ниже. Но Энди Нэгл, который у нас в (теперь уже опять) СКО был менеджером этого проекта от маркетинга, тоже был не лыком шит: он выставил цену на СКО Линукс еще чуть ниже, чем на Сюзе Сервер. Ну да, пусть с небольшой прибылью, но перебить. Сюзе очень обижалось, их хитрость обломилась, но сделать ничего не могло - все было согласно договору. Но на этом все партнеры жестоко разосрались, все их опасения против друг друга подтвердились, второй версии Единого Линукса больше никогда не было.
sab123: (Default)
Открываю нынче Ворд (причем на рабочем компьютере, то есть там должна быть какая-то групповая лицензия), а он говорит, хотите включить наш новый вид? Ну ладно. Тогда, говорит, залогиньтесь в микрософтный аккаунт. А не залогинившись, редактировать нельзя, только читать.

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

Ну все, на Ворде можно окончательно ставить крест вообще для любых применений.

May 2025

S M T W T F S
     123
45678910
1112 13 14 15 1617
18192021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 20th, 2025 06:38 pm
Powered by Dreamwidth Studios