У меня старые браузеры на win98 работают через mitmproxy на соседней машине. Но им очень тяжело отображать современные сайты из-за большого числа элементов; например, github.com открывается несколько минут.
USB ассиметричен в том смысле, что существуют роли host и device. Причём host устроен сильно сложнее, чем device — это несложно подтвердить например тем, что программная реализация device для 8-битных микроконтроллеров без аппаратной поддержки USB существует (V-USB), а host — нет. У Ethernet такой особенности нет — оба конца равноправны, и программные реализации Ethernet существуют, в том числе даже для более простых PIC (см. выше пример с мышью).
Сделать много портов из одного можно по крайней мере тремя способами — хабом (можно сделать на трансформаторах и резисторах, вообще без транзисторов), свитчом (одна специализированная микросхема и несколько трансформаторов; не слишком честная оценка, но сейчас самый дешёвый пятипортовый USB-хаб стоит в полтора раза дороже Fast Ethernet свитча на те же 5 портов) и просто повторить порт несколько раз (USB-host дороже USB-device, который не дешевле Ethernet).
До 2000 года я не встречал массово USB-устройств, а вот TCP/IP-сети на Ethernet во времена Windows 95 были сильно популярнее, да и в интернет люди через модем выходили, в том числе через один общий на локальную сеть. И с поддержкой TCP/IP в Windows 95 и MacOS 7.5 всё было сильно лучше, чем с поддержкой USB. На момент создания USB и сам USB никакой роли не играл, а вот IP уже был стандартизован и использовался (пусть даже и не в SOHO).
Мы, конечно, обсуждаем альтернативную историю, и с альтернативной технологией на базе Ethernet+IP+чего-то_ещё всё могло бы быть совсем не так, как с её компонентами обстоит сейчас, но сейчас я могу сделать своё устройство и продавать его, открыто заявляя, что оно поддерживает Ethernet и IP. Могу даже бесплатно у IANA зарегистрировать всякие номера (например TCP-портов). В случае с USB я не могу написать, что моё устройство поддерживает USB, рисовать логотип с трезубцем на разъёмах/кабелях без уплаты отчислений. Регистрация VID/PID тоже не бесплатная. Насчёт host я могу заблуждаться, но вроде бы тоже надо что-то платить USB-IF. Так что USB может оказаться дороже ещё и по нетехническим причинам.
Если представить альтернативную историю, где все те усилия, которые разработчики потратили на изобретение USB были бы потрачены на такой вот гибрид Ethernet, IP и прочих протоколов, то можно было бы все эти овраги обойти, и всё сделать по крайней мере не хуже.
В USB питание нужно подключать раньше, чем линии данных из-за отсутствующей развязки по этому питанию. В PoE такой проблемы просто нет — даже при подключении двух раздельных проводов после сплиттера (для устройств, которые PoE не поддерживают) вы можете воткнуть их в любом порядке и ничего не сгорит. PoE-устройства точно так же подключаются одним кабелем (с двумя парами проводников внутри, в случае 802.3af/at, Mode A), как и в USB.
А проблемы с несколькими логическими устройствами решаются ещё проще — просто добавьте ещё несколько IP-адресов.
От копания в пыльных внутренностях PnP вряд ли спасёт, плату же всё равно придётся поставить внутрь.
Я когда-то пытался настроить isapnptools под GNU/Linux, и из всех карт, что у меня были, сконфигурировать удалось только звук (sb16pnp). Под DOS та же карточка конфигурировалась с помощью проприетарной утилиты. Для всего остального оборудования (сетевой адаптер, SCSI-интерфейс для сканнера, встроенные в мат.плату контроллеры дисков и дисковода и ещё пара каких-то контроллеров, точно не вспомню) настройки по крайней мере прерываний мне поменять не удавалось. Для сетевого адаптера проприетарной утилитой под DOS я смог отключить PnP и забить настройки статически в EEPROM, остальное пришлось настроить под Windows 95 и повторять эту процедуру каждый раз при сбросе ESCD (что, к счастью, происходило очень редко). Может быть у вас есть положительный опыт настройки PnP-оборудования не под Windows?
Если говорить именно про USB, то PnP нужен только для настройки хост-контроллера, чтобы выделить ему прерывание и диапозон iomem. На других платформах всё прекрасно делается без PnP — прошивка в момент инициализации делает bus enumeration, пытаясь прочитать хотя бы первый регистр configuration space для каждого устройства, обращаясь к function 0. AGP и PCI карты из PC можно вставить в PowerMac G4, прошивка сможет выделить для них необходимые ресурсы и прописать их в PCI BAR устройства. И USB хост-контроллеры, подключенные к PCI, тоже прекрасно работают, даже загрузиться с флешки можно.
Получается, что реальная польза от PnP была только для ISA-карт на PC, предоставляя стандартный механизм (без проприетарных утилит от производителя железки) для настройки диапозонов ioports, iomem, dma и прерываний без перемычек, который требовал поддержки в BIOS, в самой карте и в ОС. SCSI, USB, IDE (через салазки), Ethernet и другие способы подключить внешнее устройства PnP не требовали (кроме, возможно, самого контроллера, который находится внутри компьютера, и куда неподготовленный пользователь побоится залезать) и имели собственные возможности для автоконфигурации.
Идея не моя, автор рассказывал про мышь, из которой он выпаял микросхему и заменил её на какой-то 8-битный PIC (дешёвый, без встроенных MAC и PHY), у которого даже совпали все нужные ноги с уже разведённой платой. Такое устройство отправляло UDP-датаграммы в компьютер, где программа их обрабатывала и синтезировала соответствующие события для управления курсором.
Весь стек протоколов и управление мощностью действительно придётся разработать, но это нужно было делать и для USB. Выделять прерывания и DMA USB-устройствам не нужно — это нужно делать только для хост-контроллера, и эта задача уже (была тогда) решена для сетевых адаптеров, которые работали и без Plug-n-Play (у меня точно работала NE2000). Аппаратная часть горячего подключения/отключения была у (10BASE-T и 100BASE-TX) Ethernet всегда, да и хабы тоже уже были готовые. Для идентификации можно расширить что-то готовое, например CDP или NetBIOS-over-TCP/IP.
Мелкие компании и без PnP с ACPI могли производить компьютеры и любую периферию. А вот с софтом всё не столь хорошо — вот внутреннее письмо от Билла Гейста
(содержимое письма)
One thing I find myself wondering about is whether we shouldn’t try and make the “ACPI” extensions somehow Windows specific. It seems unfortunate if we do this work and get our partners to do the work and the result is that Linux works great without having to do the work. Maybe there is no way to avoid this problem but it does bother me. Maybe we could define the APIs so that they work well with NT and not the others even if they are open. Or maybe we could patent something related to this.
В сети можно найти довольно много историй про установку GNU/Linux на компьютеры, где что-то не работает, но чудесным образом чинится, если попросить реализацию ACPI в ядре прикидываться какой-то версией Windows.
Для программной реализации USB 1.1 нужно больше ресурсов (как аппаратных, так и времени программиста), чем для UDP, IP и (10Mbit) Ethernet в микроконтроллере.
Где-то на LOR был предложен вариант использования обычного медного Fast Ethernet вместо USB. Если рассматривать USB 1.1 и 2.0, то по тем же четырём проводам можно получить питание и 100Мбит/с, чего хватит большинству устройств.
А PnP (и ACPI) разве не связаны со стратегией EEE?
Но ведь степень давления на рынок зависит ещё и от определения границ этого рынка, то есть от субъективного фактора. В этих примерах можно точно так же поменять определение рынка, например следующим образом:
Гугл или Амазон являются монополистами на рынке программно-аппаратных комплексов, на которых работают их сервисы. Без них никто не сможет зайти на рынок серверов, где их приложения исполняются. А ещё у них есть собственные инфраструктурные программные и аппаратные решения, которые они единолично используют, и делиться которыми с конкурентами совсем не спешат.
Эпл и Гугл/Андроид не является монополистом на рынке смартфонов.
Как антимонопольные службы определяют границы тех рынков, на которых они будут бороться с душителями конкуренции?
Согласен, аналогия плохая. Вопрос был в том, в какой момент переиспользование уже существующей инфраструктуры в одном месте для целей другого продукта с целью оптимизации расходов становится нечестным.
Пусть я владею объектом X, что позволяет мне предоставлять услугу Y на условиях Z. Могу ли я создавать некоторый продукт, работа которого невозможна без получения услуги Y, и получать преимущество за счёт того, что сам себе я могу предоставить услугу Y на условиях лучше, чем Z? Имеет ли значение, существуют ли на рынке альтернативы объекту X и услуге Y?
Для того, чтобы функционировать, tutu.ru нужны сервера. Владельцы сервиса решают, у кого и на каких условиях эти сервера покупать и/или арендовать. Если они захотят, то могут не покупать мои сервера.
Чем это отличается, например, от ситуации с Apple и их магазинов для приложений? Apple сделала операционную систему, и решает, на каких условиях в их магазине можно публиковаться другим разработчикам.
В первой ситуации никому в голову не придёт обвинять tutu.ru в монополизации рынка «серверов для выполнения кода tutu.ru», а во втором Apple считается монополистом, так как только они могут управлять сервисами в iOS.
А где находится граница между монополией при создании нового рынка и развитием собственной инфраструктуры для самого себя?
Википедия, например, считает, что организация является монополией тогда, когда
осуществляет контроль над ценой и объёмом предложения на рынке
. Но ведь и tutu.ru контролирует цену и объём предложения на «рынке» серверов, где исполняется их веб-сервис. Может ли ФАС обязать их устраивать открытый тендер?
Предположим, что ФАС смог заставить Яндекс предоставить API для интеграции произвольных сервисов в поисковую выдачу за деньги, как рекламу. Но ведь в этом случае Яндекс сможет покупать эту рекламу сам у себя, и для пользователя ничего не изменится — на первой странице окажутся его сервисы. Что именно должен потребовать ФАС, чтобы обеспечить честную конкуренцию на открытом рынке? Если просто разделить крупную компанию на две более мелких, то вырастут издержки на их взаимодействие, и тогда пострадает потребитель, на которого эту разницу переложат.
В условиях динамического ценообразования эта задача станет настолько сложно выполнимой вручную, что рациональный покупатель будет пользоваться автоматизированной системой. Заодно и время своей жизни сэкономит.
Пока что эта задача решается не так тяжело, поэтому многие могут позволить себе решать её вручную, расходуя своё личное время вместо машинного.
Тогда можно договориться с кем-нибудь, у кого цена будет ниже, купить тот же товар с небольшой доплатой. Покупатели могут создать распределённую систему для кооперации, отслеживающую ценообразование в магазинах. Примерно так, как сейчас на форумах участники рассказывают друг-другу о скидках и акциях.
А существует ли хоть какой-то способ что-нибудь сделать с общедоступной (например, по http) информацией, чтобы это не попадало под «обработку»? Любой современный браузер вовлечён в обработку данных сильнее, чем типичный «парсер», собирающий информацию в автоматическом режиме.
Если я зайду на страницу компании, где указаны имена, email-адреса и телефоны ключевых сотрудников, то будет ли это массовым извлечением персональных данных?
Загрузчик убрали на отдельный раздел (ESP с FAT32), чтобы прошивка могла его оттуда прочитать. На современных машинах больше не нужен 440-байтный первичный загрузчик (IPL), прошивка способна сразу прочитать загрузчик на несколько сотен килобайт. А FAT32 сжатие (без нестандартных расширений, реализуемых загружаемыми драйверами) не умеет, поэтому такая проблема больше не возникнет.
Круто, что во вторичном загрузчике (PBR) обрабатывают ситуацию сжатого NTLDR, и печатают понятное сообщение об ошибке.
Вполне может оказаться, что этот код тянется ещё с тех времён, когда при командной разработки не использовались системы контроля версий, а каждый программист владел определённым набором файлов, которые переносились с его компьютера на дискетах к коллегам для запуска процесса сборки. При таком подходе каждый в основном смотрит в свои файлы, и только иногда — в файлы коллег, и ревью происходит только для изменений чужих файлов.
Где-то читал, что авторы языка и тулчейна рассматривали такой вариант, но отбросили его по той причине, что пользователи начнут массово отключать проверки, и в какой-то момент будет невозможно притащить в код, написанный по всем правилам ни одну внешнюю зависимость, не снижая уровня строгости.
Если я не ошибаюсь, то GPL требует предоставлять по запросу исходники только того и только тем, кто легально получил бинарники.
Сделать много портов из одного можно по крайней мере тремя способами — хабом (можно сделать на трансформаторах и резисторах, вообще без транзисторов), свитчом (одна специализированная микросхема и несколько трансформаторов; не слишком честная оценка, но сейчас самый дешёвый пятипортовый USB-хаб стоит в полтора раза дороже Fast Ethernet свитча на те же 5 портов) и просто повторить порт несколько раз (USB-host дороже USB-device, который не дешевле Ethernet).
До 2000 года я не встречал массово USB-устройств, а вот TCP/IP-сети на Ethernet во времена Windows 95 были сильно популярнее, да и в интернет люди через модем выходили, в том числе через один общий на локальную сеть. И с поддержкой TCP/IP в Windows 95 и MacOS 7.5 всё было сильно лучше, чем с поддержкой USB. На момент создания USB и сам USB никакой роли не играл, а вот IP уже был стандартизован и использовался (пусть даже и не в SOHO).
Мы, конечно, обсуждаем альтернативную историю, и с альтернативной технологией на базе Ethernet+IP+чего-то_ещё всё могло бы быть совсем не так, как с её компонентами обстоит сейчас, но сейчас я могу сделать своё устройство и продавать его, открыто заявляя, что оно поддерживает Ethernet и IP. Могу даже бесплатно у IANA зарегистрировать всякие номера (например TCP-портов). В случае с USB я не могу написать, что моё устройство поддерживает USB, рисовать логотип с трезубцем на разъёмах/кабелях без уплаты отчислений. Регистрация VID/PID тоже не бесплатная. Насчёт host я могу заблуждаться, но вроде бы тоже надо что-то платить USB-IF. Так что USB может оказаться дороже ещё и по нетехническим причинам.
В USB питание нужно подключать раньше, чем линии данных из-за отсутствующей развязки по этому питанию. В PoE такой проблемы просто нет — даже при подключении двух раздельных проводов после сплиттера (для устройств, которые PoE не поддерживают) вы можете воткнуть их в любом порядке и ничего не сгорит. PoE-устройства точно так же подключаются одним кабелем (с двумя парами проводников внутри, в случае 802.3af/at, Mode A), как и в USB.
А проблемы с несколькими логическими устройствами решаются ещё проще — просто добавьте ещё несколько IP-адресов.
От копания в пыльных внутренностях PnP вряд ли спасёт, плату же всё равно придётся поставить внутрь.
Я когда-то пытался настроить isapnptools под GNU/Linux, и из всех карт, что у меня были, сконфигурировать удалось только звук (sb16pnp). Под DOS та же карточка конфигурировалась с помощью проприетарной утилиты. Для всего остального оборудования (сетевой адаптер, SCSI-интерфейс для сканнера, встроенные в мат.плату контроллеры дисков и дисковода и ещё пара каких-то контроллеров, точно не вспомню) настройки по крайней мере прерываний мне поменять не удавалось. Для сетевого адаптера проприетарной утилитой под DOS я смог отключить PnP и забить настройки статически в EEPROM, остальное пришлось настроить под Windows 95 и повторять эту процедуру каждый раз при сбросе ESCD (что, к счастью, происходило очень редко). Может быть у вас есть положительный опыт настройки PnP-оборудования не под Windows?
Если говорить именно про USB, то PnP нужен только для настройки хост-контроллера, чтобы выделить ему прерывание и диапозон iomem. На других платформах всё прекрасно делается без PnP — прошивка в момент инициализации делает bus enumeration, пытаясь прочитать хотя бы первый регистр configuration space для каждого устройства, обращаясь к function 0. AGP и PCI карты из PC можно вставить в PowerMac G4, прошивка сможет выделить для них необходимые ресурсы и прописать их в PCI BAR устройства. И USB хост-контроллеры, подключенные к PCI, тоже прекрасно работают, даже загрузиться с флешки можно.
Получается, что реальная польза от PnP была только для ISA-карт на PC, предоставляя стандартный механизм (без проприетарных утилит от производителя железки) для настройки диапозонов ioports, iomem, dma и прерываний без перемычек, который требовал поддержки в BIOS, в самой карте и в ОС. SCSI, USB, IDE (через салазки), Ethernet и другие способы подключить внешнее устройства PnP не требовали (кроме, возможно, самого контроллера, который находится внутри компьютера, и куда неподготовленный пользователь побоится залезать) и имели собственные возможности для автоконфигурации.
Весь стек протоколов и управление мощностью действительно придётся разработать, но это нужно было делать и для USB. Выделять прерывания и DMA USB-устройствам не нужно — это нужно делать только для хост-контроллера, и эта задача уже (была тогда) решена для сетевых адаптеров, которые работали и без Plug-n-Play (у меня точно работала NE2000). Аппаратная часть горячего подключения/отключения была у (10BASE-T и 100BASE-TX) Ethernet всегда, да и хабы тоже уже были готовые. Для идентификации можно расширить что-то готовое, например CDP или NetBIOS-over-TCP/IP.
Мелкие компании и без PnP с ACPI могли производить компьютеры и любую периферию. А вот с софтом всё не столь хорошо — вот внутреннее письмо от Билла Гейста
В сети можно найти довольно много историй про установку GNU/Linux на компьютеры, где что-то не работает, но чудесным образом чинится, если попросить реализацию ACPI в ядре прикидываться какой-то версией Windows.
А PnP (и ACPI) разве не связаны со стратегией EEE?
Гугл или Амазон являются монополистами на рынке программно-аппаратных комплексов, на которых работают их сервисы. Без них никто не сможет зайти на рынок серверов, где их приложения исполняются. А ещё у них есть собственные инфраструктурные программные и аппаратные решения, которые они единолично используют, и делиться которыми с конкурентами совсем не спешат.
Эпл и Гугл/Андроид не является монополистом на рынке смартфонов.
Как антимонопольные службы определяют границы тех рынков, на которых они будут бороться с душителями конкуренции?
Пусть я владею объектом X, что позволяет мне предоставлять услугу Y на условиях Z. Могу ли я создавать некоторый продукт, работа которого невозможна без получения услуги Y, и получать преимущество за счёт того, что сам себе я могу предоставить услугу Y на условиях лучше, чем Z? Имеет ли значение, существуют ли на рынке альтернативы объекту X и услуге Y?
Чем это отличается, например, от ситуации с Apple и их магазинов для приложений? Apple сделала операционную систему, и решает, на каких условиях в их магазине можно публиковаться другим разработчикам.
В первой ситуации никому в голову не придёт обвинять tutu.ru в монополизации рынка «серверов для выполнения кода tutu.ru», а во втором Apple считается монополистом, так как только они могут управлять сервисами в iOS.
Википедия, например, считает, что организация является монополией тогда, когда . Но ведь и tutu.ru контролирует цену и объём предложения на «рынке» серверов, где исполняется их веб-сервис. Может ли ФАС обязать их устраивать открытый тендер?
Предположим, что ФАС смог заставить Яндекс предоставить API для интеграции произвольных сервисов в поисковую выдачу за деньги, как рекламу. Но ведь в этом случае Яндекс сможет покупать эту рекламу сам у себя, и для пользователя ничего не изменится — на первой странице окажутся его сервисы. Что именно должен потребовать ФАС, чтобы обеспечить честную конкуренцию на открытом рынке? Если просто разделить крупную компанию на две более мелких, то вырастут издержки на их взаимодействие, и тогда пострадает потребитель, на которого эту разницу переложат.
Пока что эта задача решается не так тяжело, поэтому многие могут позволить себе решать её вручную, расходуя своё личное время вместо машинного.
Если я зайду на страницу компании, где указаны имена, email-адреса и телефоны ключевых сотрудников, то будет ли это массовым извлечением персональных данных?
Круто, что во вторичном загрузчике (PBR) обрабатывают ситуацию сжатого NTLDR, и печатают понятное сообщение об ошибке.
Где-то читал, что авторы языка и тулчейна рассматривали такой вариант, но отбросили его по той причине, что пользователи начнут массово отключать проверки, и в какой-то момент будет невозможно притащить в код, написанный по всем правилам ни одну внешнюю зависимость, не снижая уровня строгости.