Как стать автором
Обновить

Комментарии 111

Слишком умные устройства.

Слишком глупая компания («некорректный файл XML был выложен на сервера компании без проверки его содержимого.»)

Слишком хитрая компания, которая допускает вообще удаленную загрузку кода в бут. Хотя кого это подобные бэкдоры удивят…
допускает вообще удаленную загрузку кода в бут


Удалённую загрузку конфига без верификации ни на сервере, ни на клиенте, и без тестирования. Тоже неплохо.
Железо у них неплохое, а вот софт странный.
«хочется бабла» ©
потому и странный
«Маяк-Маяк и в продакшен» (цэ)
Программка для материнки от ASUS, типа интерфейс для кучи утилит. Есть три режима работы — производительный, экономный и режим отсутствия (выключается монитор и понижается по максимуму питание процессора), так вот, при уходе в режим отсутствия можно выбрать функцию выключить звук… и при выключении звука с выключенным звуком вручную — он внезапно включается, потому что выключение реализовано просто изменением состояния на противоположное без проверки выключен ли звук был до этого. Это мелочь, согласен, и у самсунгов такая же, про маяк-маяк) я уже не удивляюсь таким факапам.

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

Тут-то не пользователь идиот, здесь самсунговский сервер идиот. Благородный дон в блестящих доспехах поражен в небронированную задницу.
Да там не код удаленный скорее всего, а говнокод, который от неправильной выдачи парсера XML скорее всего либо формирует jmp на недопустимый адрес, либо бесконечный цикл, из которого его watchdog перезагрузкой выкидывает.

Слишком тупой программист, который не сделал проверку на NULL в строчке вида
item = list[1]; download(item)

В свое время Samsung умудрилась выпустить массово ломающиеся устройства для чтения CD, после чего появилась шутка, что ей нельзя выпускать ничего вращающегося. Затем эпичный фейл с HDD, когда забили на допуски к плотности записи на пластину. Теперь плееры.

А стиральные машины вроде неплохие у них

Они просто в вертикальной плоскости вращаются, а сидюки в горизонтальной, в этом и проблема :-)

Были неплохие. Tо есть когда в своё время Самсунг хотел пролезть на этот рынок, то они продавали хорошие стиральные машины по низкой цене. А сейчас уже всё, лафа закончилась и они продают обычные стиральные машины по обычной цене. И кстати с другой бытовой техникой примерно похожая история была.
Неоднократно приходилось слышать отзывы, что крупная бытовая техника Samsung с небольшим запасом отрабатывает гарантийный срок и всё. Однажды приехал покупать холодильник Samsung, имевшийся в наличии, — менеджер отговорил.
Мы лет десять назад дали себя уговорить и купили самсуновскую стиральную машину. Работала великолепно. В какой-то момент она нам стала мала по размерам, я отдал её родителям и мы купили новую. Тоже самсунговскую. Грубо говоря просто актуальную версию старой с большей вместимостью.

Так вот старая до сих пор стоит у родителей и отлично работает. А новая оказалась таким дерьмом что мы были дико рады что она сломалась до конца гарантийного срока и её не смогли отремонтировать. И заменить нам её не смогли и нам удалось её вернуть магазину.
В прошлом веке сам обменял 15" CRT-монитор, вышедший из строя за полгода до окончания трёхлетней гарантии, на 17". В остальном именно мониторами Samsung (и когда-то Samtron) полностью удовлетворён. «Samtron — возьмите качественный монитор, а имя мы оставим себе»!
Современная бытовая техника это скорее коробка с наклейкой. Мало кто занимается полным циклом производства. В тех же холодильниках компрессора закупают на одних и тех же заводах. Просто для дорогих моделей берут получше, для дешевых похуже. Стиралки так же.
Просто бытовая техника доросла до состояния когда добавить какую то функцию, как конкурентное преимущество уже сложно, а снижать цену за счёт качества уже некуда. Вот и рождаются монстры с выходом в интернет, но кому это надо?
Современная бытовая техника это скорее коробка с наклейкой. Мало кто занимается полным циклом производства. В тех же холодильниках компрессора закупают на одних и тех же заводах. Просто для дорогих моделей берут получше, для дешевых похуже

Всё это так. Но при этом соотношение цена/качество у разных производителей/марок может заметно отличаться. И у самуснговской бытoвoй техники на мой взгляд одно время это соотношение было достаточно хорошее, а сейчас стало ужасное.

Вот и рождаются монстры с выходом в интернет, но кому это надо?

Мне надо. Точнее моей жене. Очень удобная функция когда стиральня машина стоит в подвале :)
Мне надо. Точнее моей жене. Очень удобная функция когда стиральня машина стоит в подвале :)

Вы туда бельё и порошок по SFTP загружаете, что ли?
Существуют таблетки для стирки. Диспенсер для таблеток как дополнительная фича не представляется сложным, но потребует небольшой модификации узла загрузки моющих средств.
Я не очень уверен, что в предыдущем комментарии речь идёт о диспенсере таблеток и белья на базе Ардуино и пластиковой бутылки, управляемом со смартфона ;)
Можно у Dyson заказать.
Я думаю, под заказ в единичном экземпляре это будет дороже, чем сама стиральная машинка. Электроника-то типовая и простейшая, но вот только уникальных пластмассовых деталей десяток наберётся, а они как раз самые дорогие будут.
Ну я например могу утром-вечером всё закинуть, а жена стартует когда ей удобнее. Чтобы например сразу запихать в сушилку/развесить когда готово. Плюс видно прогресс и при желании можно ускорить-замедлить или добавить-убавить функции не спускаясь вниз.

То есть обойтись без этого конечно можно, но с этим удобнее.
Современная бытовая техника это скорее коробка с наклейкой. Мало кто занимается полным циклом производства.
Кроме случаев, когда кому-то не лень пошевелить извилиной и внедрить новшество, как, например LG с инверторными двигателями на стиральных машинах с прямым приводом. Пусть новшество относительное — тип двигателя был известен, но перенос его в новую среду даёт возможность получения улучшенной функциональности (рост оборотов, снижение шума и износа), и следовательно, появления конкурентных преимуществ, которые можно успешно монетизировать пока конкурренты дремлют.
В этом случае также неважно, какой именно завод физически выпускает продукцию, на коробке заслуженно появится новая наклейка про супер-фичу, ну и буст к ценнику.
… пока к интернету не подключены

В оригинале речь про empty list, про " не открытый список" ничего нет. Да и из XML это чётко видно.
Просто кодеры не подумали, что такое бывает.

Такой мощный факап! Микрософту надо срочно наверстывать!

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

Больше похоже на
— с 01.01.20xx — фция _такаято_ больше недоступна
— с 01.03.20xx — фция _такаято_ больше недоступна
— с 01.09.20xx — фция _такаято_ больше недоступна
— с 01.12.20xx — фция _такаято_ больше недоступна

интересно, они умеют наоборот чтото делать?

У Самсунга много хороших продуктов. Их ssd топ, например.

Оптан ещё больший топ =)
Да ну, получи +50% быстродействия за пятикратную цену — это не топ, а выкачка бабла из корпоративных клиентов.
А что у нас с ресурсом записи? Или где у конкурентов схожие ёмкости на SLC(оно ИМХО ближе всех к XPoint по долгожительству)?
А что у нас с ресурсом записи?

Да ничего особенного. По рекламе — в несколько раз выше. По тестам — примерно на одном уровне с Самсунгом.
Или где у конкурентов схожие ёмкости на SLC(оно ИМХО ближе всех к XPoint по долгожительству)?

Гарантия на Optane — те же самые 5 лет. Что касается долгожительства, например, Samsung 850 Pro — десять лет гарантии, и по тестам выдержал более 9 петабайт записи на 256-гигагбайтный накопитель. Достаточно?
Неа, увы, при закупках я только цифрам производителя верить могу.
Я вот тут вспомнил старый фильм «За милых дам», там, где инженер косил под уголовника, и общался с настоящим (цитата не дословная, только общий смысл):
— Ну, у нас на зоне всё строго было, никакой выпивки, никаких развлечений.
— Хех, да что же это за зона такая? :)
Так и вы, это что за закупки такие? В любой конторе от мала до велика ответственные за снабжение выбирают не по бумажкам в первую очередь, а смотрят тесты, отзывы, общаются с коллегами из других компаний по опыту эксплуатации, прикидывают суммы скидок и/или откатов от продажников и так далее.
выбирают не по бумажкам в первую очередь


Выбирать то они могут по любым параметрам, но обоснованием выбора могут быть только цифры на бумажке.
Мне ласково скажут «Гарантия 5 лет и там и там — хорошо, а что с TBW, ты уверен, что по ним не выйдешь за 5 лет(т.к. 99% что мелким шрифтом на сайте выход за это значение — снятие с гарантии), а что со сроком замены по гарантии» и прочие развлечения.
а что со сроком замены по гарантии

В этом плане Интел Оптейн ничем особым похвастаться не может. Вездесущий Самсунг имеет куда бОльшую сеть сервисных центров, равно как и горячий запас комплектующих на замену, и вопрос замены по гарантии решается часами в любом мало-мальски крупном населённом пункте, а не «в рамках SLA», когда вам инженер вендора лично привезёт и установит… на следующие сутки.
Мне ласково скажут

Во-первых, кто скажет? Если вы — начальник ИТ-подразделения, который закупает оборудование, ваш босс вряд ли вообще в курсе, что такое TBW.
Во-вторых, паспортный TBW в 1.2 петабайта для Самсунговского терабайтника — это нечто, для чего крайне сложно придумать сценарий в любом корпоративном сценарии применения. Конечно, воображение у нас бурное, представить себе «какой-то процесс, который генерирует циклично в сутки полтерабайта измерений или там логов, и каждые два дня это надо перетирать и записывать заново на тот же накопитель». Но могу поставить левое яичко на то, что вы никогда ранее не видели подобных сценариев в реальной практике, и никогда в жизни и не увидите.
Кеш крупной БД вас устроит? С его требованиями и прочим? Ну и с самым паршивым паттерном записи.
Кеш крупной БД вас устроит?

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

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


Это не такая редкая задача, так то. Не только у нас с таким сталкивались.


https://medium.com/@D11Engg/elasticsearch-dream11-30328d913cd5

Согласен, недавно сравнивал optane memory 16gb с 970 pro 512. Оптейны конечно на голову выше кроме линейных скоростей. Это не серьезно иметь 1gb/сек когда даже дешевые nvme уже могут спокойно в 3gb/сек, не говоря уже про pci4-решения.

даже дешевые nvme уже могут спокойно в 3gb/сек, не говоря уже про pci4-решения
Так ведь разъём M.2 в NVMe дисках — это тот же PCIe x4)
Не путайте pcie 4.0 и pcie x4. Первое — версия, второе — количество линий.
Я не путаю, с чего вы взяли, что я что-то путаю.
С того, что на комментарий про новую версию PCI-E вы ответили зачем-то про M.2 и x4. Если что, 3gb/сек — это скорость PCI-E 3.0 x4.
Я не говорю что они плохие, меня пугает их приведение купленных устройств в соответствии с политиками компании, путем отключения ф-ций которые были при покупке… через пару лет
НЛО прилетело и опубликовало эту надпись здесь
Интереснее всего, где взять старую прошивку и как её воткнуть в устройство. Провести такую операцию с телеком давно руки чешутся. Достало уже.
НЛО прилетело и опубликовало эту надпись здесь
У меня много лет телевизоры самсунг разных поколений.
Могу лишь подтвердить, что не умеют.
Вначале исчез ютюб, потом перестали проигрываться некоторые форматы, потом — большинство. Есть несколько видео в 3D, раньше их смотрел с флэшек, теперь не запускается ни один.
Затем запретили ставить внешнее ПО (приложения) с флэшки, но не перестали сами удалять в автоматическом режиме старые приложения.

Запретить обновляться тоже запретили. Я это обнаружил уже после удаления ютьюба. И было уже поздно. Галочка потерялась.
А от сетки отключать было бессмыссленно.

Поэтому в определенный момент было принято решение вынуть из телика Ethernet кабели, пока там хоть что-то осталось, купить Ugoos, и забить на тот Smart, который в TV.
Два сока товарищу, который у корейцев писал парсер XML. Два сока тому, кто у них его включил в boot процесс.
И поощрительный приз тому, кто сделал генератор этого самого XML (не руками же они теги правят).
А какой приз тому, кто это не стал проверять на железе?
XXXL с острой перцовой смазкой.

В iOS недавно нашли уязвимость с эскаляцией прав потому что у них 3 разных парсера (один в ядре и два в библиотеках), которые по разному XML парсят :-)

Ну вот у Windows свой бинарный формат, у macOS натурально XML, у разных загрузчиков Linux/*BSD свои текстовые форматы.
В общем, всем сока в этом чате, но в реальности это все никаких эмоций уже не вызывает, настолько типичная картина. О, и этот загрузчик от неправильного конфига падает? Неожиданно то как…
Только в случае PC/Mac убитый загрузчик чинится чуть-ли не штатными средствами, а тут походу надо uboot-у штатную загрузку прерывать, для чего надо как-то это непотребство разобрать и к usart-у припаиваться(если статье верить), ну или того хуже, jtag =).

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

НЛО прилетело и опубликовало эту надпись здесь
Это говнокод и говнотестирование говнокода. Результат разработки по методике «аааа, сроки горят, надо новые фишки, безопасность не нужна!!!!!11111адинадинадин». Ну и ещё одна зарубка для тех, кто пока что тотально не зафаерволил свой телевизор/плеер/камеру/затычку от интернета.
Нужно два биоса делать, как на некоторых материнских платах. В случае чего всегда можно будет вернуться к заводским настройках. На стоимость устройств сильно не повлияет, а рекламщики преподнесут это как инновацию и киллер фичу.
НЛО прилетело и опубликовало эту надпись здесь
Плюс 50 центов к BoM cost, плюс три месяца на написание и тестирование софта, плюс поддержка этого механизма до EoL, минус тысяча возвратов по RMA за всю историю продуктовой линейки. В итоге ставить дополнительную микросхему с прошивкой в потребительскую (про промышленную другой разговор) электронику практически не окупается, и потому все давно на это забили.
Тут такая киллер-фича не помогла бы, второй биос просто подхватил бы битый XML и продолжил играть в бутлуп.
Смотря как реализовать. Если второй биос сделать только под чтение и там будет просто загрузчик с окошком «укажите файл прошивки», то все будет норм. Запускать второй биос можно спичкой в зад устройства.
это вы только что изобрели рекавери. не обязательно его в другой микросхеме держать, достаточно иметь способ прерывания загрузки при необходимости и выходе в «режим восстановления»
Странно что это корейцы не изобрели.

Корейцы это выпилили, чтобы через этот рекавери злобные юзеры не взламывали их идеальные устройства. Очевидно же.

Штаб квартира Samsung. Трое сидят в небольшом, но чрезвычайно роскошном кабинете. Из окна открывается шикарный вид на ночной Сеул.
Ки Нам Ким: Друзья, как вам известно, после того как дошли слухи о том, что президент Мун Чжэ Ин спятил и планирует национализацию мы ввели в действие план «последний аргумент». К сожалению, вынужден признать: никакие ультиматумы с нашей стороны не помогли.
Хён Сок Ким: Вот сын ш…
Донг Джин Ко: Согласен с тобой — до последнего не верил, однако ты Ки Нам собрал нас здесь так как время разговоров прошло – есть информация о том, когда всё планируется?
Ки Нам Ким: Да, штурм сегодня до рассвета… Информация проверенная.
Донг Джин Ко: *делает глубокий выдох*
Хён Сок Ким: Что США, Евросоюз, Китай?
Ки Нам Ким: От них ничего не слышно, голословные заявления в нашу поддержку и только. Правильно ли я понимаю, что мы готовы на это?
Хён Сок Ким: Ну раз миру плевать, то пусть получают. И они и сумашедший Мун Чжэ Ин. И у нас остаётся не так много времени, чтобы покинуть Корею.
Донг Джин Ко: Как я не хотел, чтобы однажды это для чего-нибудь пригодилось. Аж сердце сжимается от того что предстоит, но иначе просто нельзя. По большому счёту что у нас есть кроме нашей чести? Готовы?
Трое мужчин коротко кивнув друг другу поочерёдно ввели свои части пароля в своих лэптопах. Отсчёт начался.
Утро следующего дня, твиттер:
«Сегодня утром произошел рейдерский захват штаб квартиры Samsung, в рамках новой программы президента Мун Чжэ Ина по всеобщей национализации»
«Пользователи сообщают о сбое в работе смартфонов Samsung – они заблокировались и при попытке включения высвечивается логотип»
«Происходит массовый отказ техники Samsung с доступом в интернет: любая бытовая техника в опасности. Как отключить бытовую технику от интернета: ссылка»
«Твиттер побил рекорд по трафику в связи с истерией, связанной с отказом техники Samsung»
Хорошо ещё, что «обновление» не стало пытаться физически уничтожать носители, установленные в приводах.
Вспоминается сцена со Шварценеггером из фильма «Стиратель», 1996 г., где главный герой судорожно пытается вынуть магнитооптический диск с вещдоками, который плохиши стирают в заблокированном магнитооптическом приводе.
Хотелось бы увидеть в треде фанатов свежих обновлений всего что обновляется…

В тексте же написано, что это от желания пользователя не зависит даже.


А фанаты осознанно риск на себя берут, ничего в этом плохого нет

нужно развернуть компанию BLM = blu-ray lives matter

Почему нельзя оставлять на флеш-памяти резервную копию старой прошивки? Сделать простейшее самотестирование с восстановлением? Добавить маленькую физическую кнопку, при нажатии на которую прошивка сбрасывается на старую (заведомо рабочую)?

Но это же надо пару байт в энергонезависимой памяти, потом еще и проверять, сложно.

надо пару байт в энергонезависимой памяти


В слове "1 гигабайт" ошибка ;)

ЗЫ: если хранить копию прошивки — прийдут злые хакеры с программатором и украдут ключи ДРМ. Этого нельзя допустить.
Почему нельзя по «хард ресету» сбрасывать к изначальной заводской прошивке?

Потому что есть большая вероятность что она в какой-то момент сама уже станет "неработоспособной" по той или иной причине.


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

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

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


А возможность самому ставить фирмвару "руками" там не была предусмотрена. Во избежании так сказать. Хотя у меня есть подозрение что так сделали чтобы люди себе там что-нибудь бесплатно не "разблокировали".

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

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

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

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

Ну кнопки для ресета обычно прячут так чтобы до них случайно никто не добрался. И их всё равно регулярно нажимают.

Если бы. С настройками это вообще весело: на новой версии сменился формат настроек и привет (для примера можно посмотреть на микротики — с переходом на какую-то версию прошивки, если у вас были пароли в старом формате, вы просто не смогли бы войти на устройство), в худшем случае при таком устройство может попросту сгореть (например в настройках с какого-то перепоя хранится назначение пинов микропроцессора — откатили прошивку без настроек и волшебный дым вышел).
Потому что найдутся умельцы, которые будут откатывать всё на «неправильные» версии.
Вот в такой ситуации, что будет делать прогрессивная часть владельцев?:
— С версии 1440 заблокирована возможность установки приложений с флэшки!
— С версии 1441 возможность отката прошивки заблокирована!
Конечно, все, кто могут, начнут искать способы вернуть всё взад.
Как вариант — изъятие платы электроники целиком и подключение вместо неё материнской платы с интерфейсом LVDS.
При таком раскладе возникает вопрос, зачем вообще было покупать этот телевизор. Ради добычи матрицы и корпуса под самодельный телевизор можно подыскать и что-либо намного более дешёвое, нежели Samsung SmartTV.
И к слову, там скорее всего не LVDS, а eDP.
Да, с eDP материнки не так широко распространены, пожалуй. Тогда ещё преобразователь понадобится.
Дешёвых крупных качественных матриц выбор пока небогат (совсем). Ну и корпус телевизору приличествует.
Зачем — чтобы после очередного обновления и матрица не превратилась бы в тыкву, логично же — если не останется ни одного одобренного компанией источника сигнала матрица подлежит уничтожению, как недавно BD-плееры.
Тупой идеей было сокращать QA

Кто-нибудь знает, что за политики такие они там скачивают и парсят аж при загрузке незаметно для пользователя?

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

А как ещё бэкдоры встраивать? В нужное время подсовываете новую политику и вот у вас что надо запускается.

Такое впечатление складывается, что комментаторы никогда не делали глупых ошибок, от которого падает production. В любой компании есть свои байки про супер-мега фейлы, вот их бы было интересно почитать.

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

единственный способ восстановить устройство отправить его в СЦ.

… которые радостно отказываются от бесплатного восстановления любых «неподходящих» устройств. Скажем, купленных в другой стране.
которые радостно отказываются от бесплатного восстановления любых «неподходящих» устройств. Скажем, купленных в другой стране.


Про это в статье не было, но категорически хочется узнать продолжение истории.
Хорошо наэкономили на цикле тестирования.
НЛО прилетело и опубликовало эту надпись здесь

Хех, читаю комментарии… Вообще это косяк не прошивки, а системы ее выкатки. С точки зрения надёжности, логично исходить из того, что любая новая версия любого конфига или прошивки может быть сломана, способов гарантировать обратное не существует. Стало быть, выкатываем на 1% устройств, смотрим, выкатываем на 5%, смотрим, ну и т.д. SRE по книжке, грубо говоря.


А тут выкатили сразу всем, а откат оказался невозможен. Ну и вот.

Вообще это косяк не прошивки, а системы ее выкатки.


И в прошивке тоже косяк. Входные данные необходимо валидировать.

Это разумеется, но ошибки есть ошибки — они есть и всегда будут. Но система выкатки должна быть до определенной степени к ним устойчива. Defense in depth, так сказать.

Проблема в том, что никто не думал, что это «прошивка». Там просто XML файл на сервере. Он даже XSLT верификацию проходил. Но устройства не ожилали увидеть там пустой куст.

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

А мне кажется, файл вполне себе корректный. А вот прошивка, которая об пустой массив спотыкается — кривая…
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Другие новости

Истории