Microsoft выкатила новые ноутбуки на ARMе
Microsoft анонсировала новый ноутбук Surface, который работает на чипах Snapdragon X Elite и Plus с поддержкой искусственного интеллекта. Устройство имеет обновленный дизайн с более тонкими рамками и тактильной сенсорной панелью. Microsoft утверждает, что устройство более чем на 80 процентов быстрее, чем его предыдущее поколение, и обеспечивает до 22 часов локального воспроизведения видео.
Surface Laptop 6 доступен в вариантах с дисплеем 13,8 и 15 дюймов.
Ну наконец раздуплились с ARMом, говорят, что шустрее MacBook Air на М3, поглядим. Сама Винда 11 для ARM все еще в стадии инсайдер привью.
Суровый моддинг из нулевых: как энтузиасты увеличивали объём ОЗУ в коммуникаторах?
Моддинг девайсов — тема очень широкая и невероятно интересная. При желании, чего только не сделаешь со своим любимым устройством: можно кастомизировать и преобразить интерфейс девайса, портировать свежую версию системы, прошить ядро с разгоном ЦПУ… Однако помимо программного моддинга, существует и аппаратный: умельцы умудряются наращивать объем ОЗУ и постоянной памяти, менять дисплеи на более качественные и даже добавлять поддержку беспроводной зарядки/квикчарджа! Предлагаю вам взглянуть на относительно редкую, дорогую, но такую желаемую в нулевых модификацию: наращивание ОЗУ на КПК аж в два раза! Сегодня мы с вами: узнаем предысторию моддинга телефонов в нулевых, самостоятельно перепаяем чипы ОЗУ на модули большего объёма, а также разберемся в программной стороне этого вопроса. Интересно? Тогда добро пожаловать под кат!
❯ Предыстория
Пожалуй, КПК и коммуникаторы на Windows Mobile можно назвать одними из самых интересных девайсов из середины нулевых годов. Пока подавляющее число пользователей только-только пересело на кнопочные телефоны с цветными дисплеями и поддержкой WAP-интернета, владельцы КПК носили в кармане полноценный компьютер, который мог выполнять многие задачи своего «большого брата». Сёрфинг полноценного Web 2.0 интернета, редактирование и просмотр документов, прослушивание музыки и воспроизведение видео и конечно-же игры — для портативного девайса в середине нулевых это было очень круто!
i-Mate jasjar
Характеристики КПК были практически идентичными на всех устройствах: большинство девайсов работало на базе ARMv5 процессоров Intel PXA 27x с частотой 400-600МГц, Samsung S3C6410 ~400МГц, а также TI OMAP 850 на частоте ~200МГц, оснащались ~64Мб встроенной Flash-памяти и 64-128Мб оперативной памяти SDRAM. Самым ценным ресурсом была оперативная память: большинство устройств на базе PocketPC 2003 так или иначе не могли использовать встроенную Flash-памяти для хранения пользовательских данных. Девайсы с 128Мб ОЗУ ценились гораздо выше более доступных устройств с 64Мб ОЗУ.
Происходило это из-за того, что Flash-память в те годы была слишком медленной, что негативно сказывалось бы на производительности всей системы. Поэтому производители устройств пошли на хитрый шаг: они решили использовать некоторый объём ОЗУ в качестве диска для пользовательских данных, а дабы пользователь не потерял важные ему файлы при, например, замене аккумулятора, они реализовали схему отдельного запитывания модуля обновления DRAM от резервной батарейки.
Динамическая RAM устроена так, что требует процедуру регулярного обновления (термин называется RAM refresh) данных во всей банке памяти в определенные промежутки времени. Упрощенно эта процедура выглядит так: контроллер памяти в чипсете вычитывает информацию из каждой банки, а затем записывает обратно, благодаря чему информация в банке памяти не теряется. Именно для этого контроллеру ОЗУ необходимы настройки таймингов, а также для процесса, именуемый «тренировкой памяти».
Поэтому в Windows Mobile был предусмотрен отдельный «бегунок», отвечающий за объём памяти, выделенный для программ и для пользовательских данных. Хочешь запустить одновременно TouchFlo, Скайп, Аську, PocketIE и гонять в фоне музыку? Готовься переносить фотографии любимого кота на SD-флэшку и тянуть бегунок в сторону программной памяти! По умолчанию, система выделяла около 32Мб памяти под пользовательские данные и остальные 32Мб под программы. Пользователь мог выделить до ~48Мб ОЗУ для программ, чего действительно хватало для параллельной работы нескольких относительно тяжелых программ в фоне!
Однако КПК на «винде» — отнюдь не современные устройства на Android и iOS и сами программы без крайней необходимости из памяти не выгружают. В iOS и Android практикуются «скриншоты» программ, когда в диспетчере задач мы видим сохраненное состояние приложения, но по тапу приложение снова запускается и быстренько восстанавливается из ранее сохраненного состояния. Поэтому, если в устройстве заканчивалась память для программ, уже открытые приложения могли крашиться, а новые не запускаться из-за слишком малого объёма свободной ОЗУ.
Устройства на WinMobile замечательно поддавались моддингу: некоторые энтузиасты портировали более свежие версии системы, другие выпускали собственные сборки системы, подчищенные от ненужных, по их мнению, программ, дабы освободить ещё немного ОЗУ под собственные приложения. Программный моддинг был очень развит: вспомнить только «кухни» — специальные наборы программ для модификации прошивок устройств и целые ветки на форуме 4pda, где обсуждалось добавление нового функционала в девайс. Чего-уж говорить, я сам год назад добавлял поддержку Direct3D Mobile в WM2003 и подкидывал софтварный рендерер от Intel в устройство на OMAP850!
Год назад я за пару дней запилил «тридэ» леталку, использующую D3DM — софтварный рендерер в Windows Mobile.
Однако другое дело — это аппаратный моддинг, связанный с физическим вмешательством в плату устройства. Самым частым модом была замена вечно ломающегося концевого выключателя (маленький рычажок, который прижимает задняя крышка устройства. Без него девайс чаще всего не включался) на обычную перемычку, дабы девайс не подвёл в самые ответственные моменты. Другой мод — перепаковка аккумуляторов для увеличения его ёмкости. Были ещё и другие, специфические модификации — насколько я знаю, на некоторых коммуникаторах Rover радиомодуль частенько «отваливался», а девайс уходил в белый экран. Радиомодуль либо выпаивали, либо грели (а то и перекатывали), дабы он ещё поработал какое-то время. Однако самым редким, дорогим и желанным многими модом было увеличение объёма ОЗУ! Данная процедура довольно простая, однако проводилась чаще всего в мастерских: старые чипы памяти выпаивались, а на их замену припаивались новые, большего объёма. На словах все просто, однако на деле далеко не каждый мог провести такую процедуру дома: необходимо было купить чипы памяти (которые стоили около 500 рублей за один), а сами они были в корпусе BGA и для пайки необходим был паяльный фен (на строительный тоже можно было посадить — но рискованнее) и адекватный флюс для BGA (хотя я слышал истории, как мастера в нулевых сажали чипы «на пузо» чуть ли не на таблетке аспирина).
Как видите, цена на работу в СЦ была не менее 3.000 рублей, время работы — полчаса-час. Теперь вспомните, что в некоторых регионах зарплата была около 6-7 тысяч рублей в месяц… вот так вот :)
Недавно я и сам заинтересовался таким видом моддинга и решил повторить опыт умельцев из нулевых: мне удалось найти НОВЫЕ (не реклама, это единственный магазин где можно купить эти чипы в РФ) чипы памяти в блистере по 100 рублей за штучку. Давайте же проапгрейдим легендарный коммуникатор своих лет — QTek S100 aka O2 Xda Mini II aka MDA Compact!
❯ Апгрейдим
Подобному апгрейду поддаются далеко не все девайсы. К сожалению, фактически проапгрейдить можно устройства только на базе чипсетов Intel PXA, например Asus P525/550, ранние HTC и многие HP iPaq. Устройства на базе Samsung S3C6410 имеют 64Мб ОЗУ прямо на одной подложке с чипом без площадок под дополнительную память на плате, а про устройства на OMAP 850 известно мало: скорее всего, чип не поддерживает возможность использования сразу четырех банок памяти одновременно.
Этого красавца проапгрейдить не выйдет :(
Изначально с завода, на большинстве устройств с чипсетом PXA используется два чипа мобильной SDRAM памяти типа HYB25L256160AC, производства Infineon, в корпусе BGA, по 32Мб каждый. Однако существует 64Мб версия того же чипа с идентичной распиновкой, где в одном чипе расположилось сразу две банки памяти, по 32Мб каждая. По итогу нам остается только сдуть старые чипы с помощью фена, почистить посадочные площадки от остатков старых шаров и установить новые чипы памяти с помощью всё того же фена. Давайте приступим!
Я купил свой QTek S100 два года назад в состоянии «как из помойки», всего за 100 рублей. Без шуток, возможно продавец действительно посещал свалки и потом продавал по дешевке различные интересные девайсы! Лично для меня в этом нет ничего брезгливого: корпус помыть с мылом, плату почистить спиртом и вот — крутейший девайс снова в рабочем состоянии и вполне чистенький :)
Аккумулятора у меня не было вообще и найти донора под перепаковку я даже не надеялся, поэтому запитывал девайс от BL-4C.
Разбираем девайс и видим плату с защитным экраном над процессором и ОЗУ. Сам экран съёмный, выпаивать его не нужно, но дабы аккуратно выпаять чипы памяти и не сдуть обвязку, придётся удалить лезвием «перекладину» на экране.
Выдавливаем под пузо чипов памяти немного флюса для BGA, берём прецизионный пинцет, фен, выставляем небольшой поток воздуха, температуру в 350 попугаев и начинаем выпаивать память по отдельности. Оба чипа сидят на бессвинце, поэтому для того, чтобы чип начал покачиваться, необходимо погреть его некоторое время. Как только чип начал «плавать» при покачиваниях пинцетом, его можно осторожно снимать пинцетом. Если снесли мелочуху, то её можно аккуратно выравнять пинцетом и поставить тем же феном обратно: поверхностное натяжении притянет элемент обратно и он встанет на место ровно, как и должно быть.
Я сначала не думал пилить контент об апгрейде памяти, поэтому фоточка совсем всратая :( Извините
Зачищаем площадку от старых шаров с помощью паяльника на 350гр и оплетки. Впрочем, шары достаточно большие — можно просто покатать шарик припоя и собрать излишки на паяльник, идеально ровно зачищать их не нужно.
Наносим флюс на посадочные площадки, примерно центрируем чип на плате и начинаем греть. Если вы не перелили флюса, благодаря поверхностному натяжению чип сам встанет на место!
Почти по заводу!
Но девайс не увидит всей ОЗУ, если не поставить резистор номиналом ~0.33Ом на линию CS1 - именно она отвечает за выбор второй банки в одном чипе памяти. Можно попробовать и просто перемычку поставить, но я не гарантирую результат.
Но это не весь моддинг на сегодня! Чуть позже я кинул нормальную, красивую перемычку вместо концевого выключателя, а также перепаковал аккумулятор, установив банку от BL-4C. Она, конечно, меньшей емкости, но девайс всё равно с ней держит довольно неплохо. Обратите внимание, что BMS (плату защиты) BL-4C необходимо выпаять: коммуникатор при поиске сети потребляет довольно много, из-за чего BMS BL-4C уходит в защиту.
Включаем девайс и… он работает!
Лучше перепрошить девайс официальной прошивкой: я даунгрейдился еще до замены памяти (до этого стояла прошивка WM6.5 от Cotulla), однако после апгрейда «винда» не всегда загружалась нормально, при том что сама ОЗУ инициализировалась правильно, без каких либо проблем и ребутов. После прошивки всё снова стало нормально. Если хотите накатить кастом — то ставить нужно версию с поддержкой 128Мб ОЗУ.
Обратите внимание, что флэшер вполне честно заявляет о времени обновления в 20 реальных минут времени. В этом вина как USB 1.1, так и медленной флэши.
❯ Программная сторона вопроса
Сейчас мы рассмотрели только физическую часть замены памяти. Но некоторые читатели наверняка спросят, каким же образом коммуникатор определяет всю установленную память, если конфигурация DDR статически слинкована с первичным загрузчиком?
На ПК у нас есть SPD— Serial Presence Detection, специальная небольшая флэш-память, в которой хранится конфигурация чипов и общий объём памяти на планке. В embedded-окружении чаще всего конфигурация контроллера памяти хранится в первичном загрузчике (после BootROM) — известном также как SPL.
Загрузчик HTC на устройствах PXA поддерживает несколько конфигураций ОЗУ — как минимум 64Мб и 128Мб. И судя по всему, на манер BIOS на ранних x86 машинах, загрузчик ещё на этапе тренировки ОЗУ проверяет всё доступное адресное пространство: если доступны «верхние» 64Мб ОЗУ, тогда загрузчик передаёт в Windows CE информацию о том, что установлено 128Мб памяти.
На коммуникаторах Asus, загрузчик патчили для поддержки 128Мб.
Очевидно что без установки второго чипселекта (линии CS1), контроллер DRAM не сможет обратиться ко второй банке памяти в одном чипе, поэтому его установка обязательна. Иначе загрузчик не видит верхние 64Мб ОЗУ и считает, что в устройстве установлено лишь 32Мб.
❯ Каково пользоваться девайсом теперь?
Давайте глянем, как же девайс работает теперь. Пожалуй, сразу стоит упомянуть то, что у девайса изначально были перспективы к увеличению производительности: помимо возможности увеличения ОЗУ, чипсет легко разгоняется до 624МГц с стоковых 412. Очень даже бодрый результат.
Сначала я решил поиграть в классику. AoE замечательно шла и на устройствах с ~32Мб ОЗУ (т.е ранних КПК), очевидно что и на гораздо более шустром девайсе она будет идти очень хорошо. Хороший способ ознакомиться с классикой RTS, кстати!
Переходим сразу к тяжелой артиллерии. Самыми тяжелыми играми для ранних коммуникаторов считались PocketFallout и Heroes Mobile: они кушали довольно большой объём ОЗУ и что-то запустить параллельно с ними было проблематичным. Не менее тяжелой была Quake 1: игра аллокейтит для себя кучу (динамическая память) в 16Мб. Это был уже серьезный удар по свободной ОЗУ на устройствах с 64Мб памяти, QIP и PocketIE уже придется закрыть:
Но будем честны: ради игр можно было закрыть почти все приложения в диспетчере задач. А как насчет повседневных задач? Давайте откроем кучу приложений и узнаем, какое у нас будет потребление ОЗУ и общая производительность системы:
Не хило, да? Коммуникаторы и сейчас подойдут в качестве звонилок с функционалом смартфона, однако приложения под себя придётся допиливать самому. Благо API очень знакомое: в WinMobile и WinCE у нас самый обычный WinAPI, очень схожий с десктопным, а также есть немного урезанный .NET!
❯ Заключение
Вот таким был аппаратный моддинг девайсов в нулевых. Столько всего можно было сделать, имея лишь базовое оборудование! А ведь если включить смекалку, то можно заюзать КПК и в качестве одноплатников: на подавляющем числе девайсов UART без проблем можно получить с разъема для док-станции, а сама шина без проблем доступна из юзерспейса. Постараюсь развить эту тему в одной из будущих статей.
Информации по апгрейду памяти на КПК очень мало (ведь когда-то это был хлеб для СЦ) и сейчас её можно найти исключительно в архивах. Однако чем больше я посещаю паблики посвященные ретро девайсам, профильные каналы в Телеге и форумы по ремонту девайсов, я вижу всё больше упоминаний таких любимых нами наладонников! Поэтому я постарался систематизировать и собрать в кучу всю необходимую информацию для того, чтобы любой читатель мог и сам провести такую операцию в домашних условиях.
Сейчас мы привыкли с вами, что в смартфонах объём ОЗУ зачастую больше, чем в некоторых десктопных машинах. 6, 8, 12Гб — куда дальше!? А ведь когда-то и 128Мб уже было за счастье :)
А какие модификации КПК были у вас и как использовали свой девайс вы? Может вы сами апгрейдили КПК? Пишите в комментариях!
P. S.: Друзья! Время от времени я пишу пост о поиске различных китайских девайсов (подделок, реплик, закосов на айфоны, самсунги, сони, HTC и т. п.) для будущих статей. Однако очень часто читатели пишут «где ж ты был месяц назад, мешок таких выбросил!», поэтому я решил в заключение каждой статьи вставлять объявление о поиске девайсов для контента. Есть желание что-то выкинуть или отправить в чермет? Даже нерабочую «невключайку» или полурабочую? А может, у этих девайсов есть шанс на более интересное существование! Смотрите в соответствующем посте, что я делаю с китайскими подделками на айфоны, самсунги, макбуки и айпады!
Понравился материал? У меня есть канал в Телеге, куда я публикую бэкстейдж со статей, всякие мысли и советы касательно ремонта и программирования под различные девайсы, а также вовремя публикую ссылки на свои новые статьи. 1-2 поста в день, никакого мусора!
Материал подготовлен при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, дабы не пропускать новые статьи каждую неделю!
Поиграем в бизнесменов?
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Куртка собирается бросить вызов intel, Apple и AMD в десктопных процессорах к 2025 году!
Не так давно в сеть утекла информация о том что Nvidia работает над десктопными процессорами ARM. Куртка намеревается сместить intel, Apple и AMD.
Но есть одна загвостка - правами на разработку ARM для винды владеет Qualcomm, а лицензией на x86 процессоры владеет intel и AMD. В следующем году Nvidia потеряет лицензию ARM и таким образом Куртка пытается войти на новый рынок, ибо Мавродию 2.0 всегда мало денег.
У зелёной компании есть процессоры на базе ARM в суперкомпьютерах Grace Hopper, так что будем посмотреть что зелёные Шреки уготовили на будущее.
#Nvidia #ARM #intel
Ответ на пост «Не дадим Windows Phone умереть! Как я написал свои клиенты VK, YouTube для Nokia Lumia? Сам себе экосистема ч.2»
Это все конечно здорово, энтузиазм дело хорошее.
Может с точки зрения разработчика эта система супер-пупер крутая.
Но с точки зрения пользователя - это редкостное говнище. Хуже только, наверное, виста на пк (в целом под нее и подгонялось).
Судя по интерфейсу и дизайну - система делалась как раз для разработчиков, мол как у нас классно, можно вот это написать, это запрограммировать, это сделать». Но для обычных пользователей это все нахер не надо. Человек хочет достать телефон из кармана, позвонить, отправить пару сообщений, посмотреть видосики и всё. И он хочет, что бы его глазам это было приятно. Виндафон этого не давал даже на 1%. В нем было хреново абсолютно всё от интерфейса до реализации структуры.
Это раз.
Второе:
А вы посмотрите на свой Android-смартфон сейчас. Сколько в нём ОЗУ? 4гб? 8гб? 12гб? Смущает ли вас то, что Android умудряется неприятно подтормаживать даже с такими ресурсами? А теперь вспомните Lumia 520: Snapdragon 200, 512 мегабайт оперативной памяти. Вот так она работает из коробки.
С точки зрения разработчика это полнейшая чушь и ложь. И либо ты не понимаешь как работают системы, либо пытаешься обмануть нас. С каждым годом приложения становятся сложнее и им требуется больше ресурсов. Да может где то это не оптимально. Да, может что то можно было бы лучше. Но общая тенденция это увеличение ресурсопотребления приложений из-за улучшения графики, увеличения вычислительных процессов, усложнения логики приложений.
И это все равно что сравнивать первую денди и PS5. На ПСке сколько оперативки? 32? 64? 128? И все равно некоторые игры тормозят. А вот на денди Марио не тормозил! Ну это же полнейшая чушь.
Это же фактический обман.
Плюс сама по себе система wp это максимально сырое тесто. Хочешь хорошо - бери напильник.
А людям надо что бы ты достал из коробки и сразу стало хорошо.
Вот простое объяснение того, что это система говно и к нее нет и никогда не было будущего.
Друг, это мертвая система которая никогда не будет воскрешена. Она убогая и неприятная (имхо).
И яблоки снискали такую популярность всего лишь по одной причине - они дали людям то, что им нужно - красоту и простоту. К счастью они нашли ровно тот ключик который был нужен.
А все вот эти архаизмы типа wp давно уже умерли и никогда не воскреснут.
А ты сейчас занимаешься некрофилией. Без обид, но по фактам.
Не дадим Windows Phone умереть! Как я написал свои клиенты VK, YouTube для Nokia Lumia? Сам себе экосистема ч.2
Windows Phone… услышав название этой мобильной системы, поневоле начинаешь с теплотой вспоминать своего недавнего, такого необычного мобильного друга, как будто прошло всего пару месяцев с момента смены смартфона на iPhone/Android. А ведь с момента фактической смерти Windows Phone прошло уже почти 10 лет! Увы, время вспять уже не повернуть, а мобильное подразделение Nokia не спасти, однако при наличии навыков разработки мобильных приложений, большом энтузиазме и фанатизме, есть шанс вернуть жизнь своему старому другу! Недавно я снова загорелся диким энтузиазмом и смог вернуть жизнь старенькой «люмии», написав собственные клиенты нужных мне сервисов с нуля — и готов поделиться этим с вами во всех подробностях!
Сегодня вы узнаете о моей мотивации привносить жизнь старым смартфонам, о тонкостях разработки мобильных приложений, чем Windiows Phone был на голову выше Android в техническом плане и о том, почему провал Windows Phone — одна из самых больших потерь мобильного рынка. Интересно? Тогда добро пожаловать в статью!
❯ Предыстория
Пожалуй, довольно большой процент моих читателей и подписчиков когда-либо владел и пользовался смартфонами на Windows Phone. Мнение пользователей этой мобильной платформы во многом разнится — кто-то восхваляет по настоящему продуманный и плавный интерфейс, кто-то ругает Microsoft за «кидалово» с обновлениями, но большинство людей сходится во мнении, что Windows Phone — была действительно необычной и имела собственную изюминку.
Конечно же, Windows Phone была далеко не первым опытом Microsoft на мобильном рынке. До этого, Редмондская компания поддерживала очень крутую платформу для коммуникаторов и КПК под названием Windows Mobile. Фактически, это был полноценный компьютер в кармане — большинство кнопочных телефонов могли максимум запускать простенькие J2ME-приложения, в то время как WM позволял запускать множество самых разных программ — как написанных на C++/Pascal, так и написанных на C#/VB.Net. Мобильная платформа во всём пыталась подражать своему старшему брату — API системы было очень похоже на то, что мы видим в обычной Windows — тут и полноценная оконная система, и waveout для вывода звука, и GDI для вывода графики.
Windows Mobile прочно занимал свою нишу на мобильном рынке: HTC постоянно представляла новые модели коммуникаторов, которые довольно хорошо продавались. Но тут пришёл первый iPhone, который перевернул всё с ног на голову. Оказывается смартфоном можно управлять полностью пальцами, нажимая на красивые, анимированные элементы интерфейса! Это перевернуло всю индустрию — даже Nokia с её Symbian было тяжело конкурировать с продуктом от Apple. Microsoft видела, что пользователи хотят не столько свободы и кастомизации в системе, сколько плавности интерфейса, стабильности и простоты использования.
Плеер Zune HD стал дебютом свежего подхода к созданию интерфейсов — Metro UI. И хотя сам девайс не сыскал особой популярности, став в некоторой степени провальным, Microsoft взяла на вооружение концепцию этого интерфейса, дабы реализовать её уже в полноценной мобильной ОС. В октябре 2010 года выходит первая версия новой мобильной платформы Microsoft — Windows Phone 7, заложившая фундамент той самой системы, которую мы с вами до сих пор вспоминаем с теплотой!
На WP7 вышло весьма много устройств: тут и девайсы от HTC, и смартфоны Lumia от Nokia, и даже продолжение линейки Omnia от Samsung! Но были у этой платформы и серьезные минусы: она базировалась на ядре обычной Windows CE (оно же использовалось в Windows Mobile) и из-за желания повысить безопасность системы, Microsoft отключила возможность использовать код на нативных языках в своих приложениях. Кроме того, во многих аспектах WP7 была достаточно сырая — хотя для неё регулярно выходили обновления.
❯ Почему провал WP — трагедия для мобильного рынка?
Конечно же параллельно с доработкой WP7, Microsoft разрабатывала новую версию ОС, которая должна была объединить мобильные и десктопные приложения в одну общую концепцию. Кроме того, разработчики решили отказаться от лёгкого ядра Windows CE в пользу более тяжелого и продвинутого ядра Windows NT, которое используется в полноценных версиях Windows.
К сожалению, апгрейда с WP7 на WP8 предусмотрено не было, что многие пользователи считают «кидаловом» со стороны Microsoft. Отчасти это так, но проблема была в том, что даже флагманские устройства на WP7 имели 512мб ОЗУ, чего было недостаточно для первой версии WP8. Думаю, в какой-то степени Microsoft просто не хотели портить имидж максимально плавных смартфонов тормозами обновленной системы, хотя примеры шустрой работы на 512мб ОЗУ есть — например, Lumia 520.
Но вот где WP8 была передовой, так это «под капотом». Microsoft смогли сделать что-то невообразимое для мира ARM-устройств: они реализовали нормальный слой абстракции от «железа» и ввели концепцию ACPI, знакомую нам из обычных десктопных ПК. Вкратце, ACPI — это что-то типа списка железа в устройстве, под которое ОС должна найти и загрузить драйверы, не забыв под это всё выделить ресурсы (devicetree в Linux реализует похожую концепцию). Кроме того, Microsoft реализовала полноценный UEFI в своих смартфонах, что позволяло, например, сделать дуалбут в будущем. На практике это всё означает то, что даже неподдерживаемые No-Name смартфоны можно было обновить до Windows 10, банально поменяв пару ключей в реестре: на Android-устройствах такое невообразимо. Фактически, это стандартизация ARM-железа.
На этом технические фишки Windows Phone не заканчиваются. Переходя к пользовательской части, стоит упомянуть фреймворк для построения интерфейса (WPF/Silverlight), который из коробки работает очень шустро, отлично масштабируется под разные размер экрана и предлагает мощные возможности по анимации и кастомизации интерфейса под стиль приложения. Да и само SDK навязывало изначально правильную концепцию программирования, заставляя выделять все задачи в отдельные потоки, не только задействуя дополнительные ядра процессора, но и улучшая пользовательский опыт от приложения (неправильно написанные Android-приложения легко могут подвисать при выполнении какой-то работы).
И третья классная фишка, про которую почему-то все забыли — это поддержка DirectX 11. Конечно в WP7 уже была поддержка Xna (именно на его базе написана Terraria), что позволяло писать игры одновременно для Windows, Xbox 360 и собственно мобилок, но он имел некоторые ограничения и был прослойкой между графическим API (как Direct3D или OpenGL) и самой игрой. Windows Phone 8 же давал настоящий, полноценный DirectX 11 — хотя и поддерживал максимум вторые шейдеры, но при этом умел те фишки, которые не умел Android — инстансинг для оптимальной отрисовки геометрии, установка стейтов «пачками» и эффективное «bindless» управление ресурсами шейдеров. Теоретически, это давало возможность портировать полноценные игры с ПК/Xbox на Windows Phone, хотя на практике не так много кто этим пользовался.
Ну и вспоминая аргумент про кидалово Microsoft с обновлениями, нужно помнить, что обратная совместимость с приложениями для более ранних версий системы была: на Windows Phone 8 можно было играть в годноту с Windows Phone 7 (NFS Undercover, NFS Hot Pursuit, Mirrors Edge и ещё некоторые классные мобильные игры), а на Windows 10 Mobile можно было запускать почти любое приложение для Windows Phone 8.
Так в чём же потеря WP — трагедия для мобильного рынка? А вы посмотрите на свой Android-смартфон сейчас. Сколько в нём ОЗУ? 4гб? 8гб? 12гб? Смущает ли вас то, что Android умудряется неприятно подтормаживать даже с такими ресурсами? А теперь вспомните Lumia 520: Snapdragon 200, 512 мегабайт оперативной памяти. Вот так она работает из коробки:
Думаю, это всё красноречиво объясняет то, что без WP случилась дуополия на рынке — Android продолжает жиреть, впустую жрать ресурсы и при этом практически не получать новых фишек из года в год, а iPhone хоть и остаётся всё такой же плавной и шустрой, ребята из Apple явно не чувствуют конкуренции и их смартфоны стагнируют в плане дизайна и в некоторой степени интерфейса…
❯ Мотивация
Мои давние читатели знают мою любовь к смартфонам прошлых лет. Для меня нет понятия запланированного устаревания: если под устройство есть комплект разработки и документация, то при большом желании я могу дописать нужные мне приложения сам.
Мой проект SelfEco (сам себе экосистема) как раз об этом — почти полгода назад я написал клиент YouTube и ВК для Android 2.2+. Фактически это означает, что мои приложения работали на ВСЕХ Android смартфонах от 2010 года и новее.
Исходным кодом своих приложений я свободно делюсь — как в качестве примера читателям, так и для возможности каких-то фиксов в будущем или даже модов. В 2021-2022 году я ходил с Lumia 640XL с Win10 Mobile на борту, как с основным смартфоном. И в целом, меня все устраивало и всё нравилось: там и годный клиент ВК был (LunaVK), и клиент телеги нормальный, и браузер кое-какие страницы всё ещё нормально переваривал. Но больше всего мне нравится Windows Phone 8 — она работает ещё шустрее и несколько более строгая в плане дизайна. Да и «люмии» сейчас стоят сущие копейки — моя 640XL обошлась мне в100 российских рублей(~1.5$ по тому курсу), я не шучу. А на онлайн-барахолках можно найтиживые, целыеаппараты с нормальными аккумуляторами по 200-500 рублей, иногда даже в родных коробочках!
Lumia 1320 и Lumia 640XL — подарки читателя Kotenilla!
Дак почему бы не применить всю эту круть и мощь во благо, учитывая дешевизну смартфонов? Решено: Качаем SDK и пишем собственный клиент ВК и YouTube — это минимально-необходимые для меня приложения!
❯ Подготовка
Для того, чтобы отлаживать и устанавливать сторонние приложения на смартфоны с Windows Phone, их нужно предварительно разблокировать и сделать «Interop Unlock». Процедура несложная и занимает немного времени на большинстве люмий. Дабы сильно не затягивать статью, я не буду описывать процесс разлочки здесь — его можно найти на 4pda для разных поколений устройств.
❯ YouTube
Начинаем с клиента ютуба. Собственно, концепция отнюдь не поменялась с прошлой статьи — мы всё так же используем API Invidous для получения информации о видео. Нативное API YouTube — полная дичь, да ещё и с ограничениями на один токен, в то время как Invidous сам распоряжается токенами и распределяет их как нужно. Нам лишь остаётся написать «морду», которая будет отображать полученные с сервера данные и передавать ссылку на видео в встроенный плеер.
В отличии от Android, никаких проблем с TLS не возникло: смартфон смог без проблем связаться с инстансом Invidous и получить данные о видео в трендах. Сам по себе, формат ответов очень простой и возвращается в виде JSON, который можно описать такой иерархией:
Практически сразу система нам навязывает распараллелленую парадигму написания кода — часть API банально не имеет синхронных аналогов! Например, из WebRequest убрали GetResponse, дабы неопытные разработчики не делали ошибок и не пытались вызывать долгие I/O операции в главном потоке (что вызывает подвисания приложения). .NET сам по себе имеет крутой механизм тасков (многопоточных задач) и реализацию концепции async/await, которая позволяет подождать выполнение операции, не блокируя остальное приложение.
Я решил придержаться более привычной мне концепции на коллбэках, которая позволяет более четко обрабатывать ошибки в подобных кейсах, да и в целом я не очень люблю подобный синтаксический сахар (а async/await и есть «сахар», поскольку разворачивается в стейт-машину). В качестве десериализатора (механизма парсинга JSON напрямую в экземпляры классов, используя рефлексию) я использовал классический Newtonsoft.Json.
После того, как механизм получения и обработки данных с сервера был готов, я начал реализовывать интерфейс приложения. И вот тут WP показал себя во всей красе. ListView? RecycleView? Нафиг эти костыли, винфон умеет нормально рисовать элементы интерфейса, которые вы выделили в ScrollView. И что забавно: в Android даже реализация с ScrollView при активной подгрузке данных вызывала лаги — на WP такого нет вообще! Тут всё просто работает из коробки!
Механизм анимаций здесь тоже декларативный и реализован в концепции т.н «сторибордов» — наборов действий, которые позволяют создавать достаточно сложные анимации вручную.
Буквально через пару часов после создания проекта, у меня уже была готова загрузка и отображение списка трендов:
А затем и логика воспроизведения видео, которая запускает встроенный плеер и передаёт в него ссылку на видео — которая выбирается относительно кодека (только mp4), разрешения устройства и предпочтений пользователя:
Кроме того, в приложение нужно было добавить настройки — для этого WP8 не предоставляет встроенных средств, нужно реализовывать логику самому. Впрочем, ничего сложного в этом нет — глобальный синглтон с полями настроек и логикой сохранения/загрузки (сюда код не поместился, нет нормальной подсветки кода).
WP предоставляет специальное изолированное хранилище для пользовательских программ — IsolatedStorage, в которое нельзя добраться из остальной системы (без разблокированного загрузчика и режима Mass Storage). Там же можно хранить и конфиги — правда с некоторым API для файлов сильно перемудрили — навязывать распараллеливание чтения обычно маленьких файлов — это совсем уже.
Итак, буквально за сутки разработки у меня получилось реализовать приложение, которое может выводить списки ютуба по региону (тренды/популярное), может искать видео и воспроизводить ролики с различными разрешениями. Кроме того, приложение умеет подгружать превьюшки и имеет собственный раздел истории. Неплохо за 24 часа для программиста, который фактически не имел опыта с платформой UWP/WinRT в прошлом, да? :)
❯ ВК
Теперь пришло время реализовать клиент ВК! Фактически, ничего сложного в реализации клиента с базовым функционалом нет — это всё такая же «морда» к данным с сервера, к которым добавляется необходимость получать уведомления и реализовывать логику обновления данных.
На этот раз, я решил выбрать API WP8.1: оно гораздо более богатое на возможности и ближе к современному UWP, чем Silverlight из WP8. Так уж сложилось, что API обычного WP8 ближе к WP7 и совместимо с WP8.1 только с помощью специальной прослойки.
Я не ставил целью написать полноценную замену ныне не рабочему официальному клиенту, но я хотел чтобы моё приложение поддерживало базовый функционал:
Мессенджер: Конечно же, самое важное в нашем клиенте — это мессенджер.
Музыка: Куда ж без удобной ВК музыки? Её реализация в кастомных клиентах отнюдь несложная, но достаточно костыльная из-за политики ВК в отношении лицензирования аудио. Снова будем идти на хаки, дабы получить работающее приложение!
Новости: Помимо общения и прослушивания музыки, бывает потребность полистать ленту — дабы узнать новости, или посмотреть свежие мемчики.
Начал я с реализации окна с диалогами и продумывания навигации приложения. WP8.1 всё ещё не имел концепции боковых менюшек, поэтому реализовывать панель навигации пришлось самому. Вместе с ней была реализована верхняя часть, которая содержит в себе заголовок со статусом и анимацию загрузки:
Класс-менеджер для общения с API ВК я решил реализовать по тому же принципу, что и для клиента YouTube: у нас есть два метода на всё-про всё, один сразу десериализовывает ответ в виде объекта Root (для каждого типа ответа — он свой, все они описаны в Data.Packet.Root):
До async/await я не дозрел и здесь :)
Спустя достаточно короткое время, у меня уже была готова подгрузка диалогов:
Реализация обновления во всех разделах одинаковая: есть метод RequestUpdate, который начинает процедуру обновления и получает данные с сервера, а затем ставит в очередь задачу на обновление UI из основного потока с помощью UpdateUI:
И механизма загрузки/отправки сообщений.
В целом, с этим ничего сложного нет, однако теперь самое время разобраться с нотификациями. Пуши я пока-что поднять не смог, вместо них пока что лонгполлинг — достаточно для нотификаций пока приложение находится в фоне, но система со временем «прибивает» неактивные задачи, а сделать «бесконечный» фоновый таск как в Android не выйдет — система очень строго относится к любой фоновой работе.
Пришло время заняться музыкой — вот это действительно важный функционал! Для работы с аудио, я использовал довольно старый, но известный способ, который ВК пока что не пофиксил. Не то чтобы это из вредности, просто сами ВК особо не идут на контакт для интеграции аудио в своё приложение — исключением стали лишь очень крупные клиенты, как Kate Mobile — а значит можно реализовать действительно важные штуки: например, скачивание треков напрямую в музыкальную библиотеку, дабы их можно было послушать оффлайн! Вся работа с музыкой производится через прокси-сервер, поэтому аудио должно быть открыто.
Реализация фонового прослушивания музыки достаточно похожа на другие платформы, но в то же время заметно отличается. Само приложение может воспроизводить звуки с помощью MediaElement или BackgroundMediaPlayer, однако при сворачивании звук будет приостановлен (в отличии от MediaPlayer на Android). Для фонового прослушивания музыки, Microsoft решили сделать отдельный сервис BackgroundMusicPlayer, который запускается при попытке получить доступ к плееру из программы. Общаться с этим сервисом можно через межпроцессные вызовы — RPC и система предоставляет для него API. Вкратце: нам нужно создать фоновую задачу в виде отдельного модуля WinRT, который будет получать RPC-посылки от Foreground приложения и если нужно — отсылать ответы обратно. Ничего сложного!
Отдельного внимания заслуживает механизм скачивания музыки в библиотеку. В WP, программы не могут просто так «вторгнуться» в личное пространство пользователя — им обязательно нужны разрешения. Но это ладно, запросить разрешение — совсем не проблема. Зато настоящая проблема — ПОЛНОСТЬЮ асинхронный API. Захотел найти дескриптор файла в ФС — асинхронно, захотел его открыть — снова асинхронно. Поскольку у меня вся работа по скачиванию ведется в отдельном воркере и я не боюсь за дедлоки, пришлось лепить костыли с Task.Wait() :)
А ещё ВК возвращает mp3 без ID3-тегов, поэтому мне пришлось вручную их дописывать, дабы музыка в плеере удобно сортировалась:
Кроме того, дабы иметь возможность управлять музыкой из других приложений и экрана блокировки, Microsoft предоставляет т.н интерфейс SMTC — общий оверлей окна регулировки громкости, который позволяет управлять воспроизведением музыки. Его реализация простая до жути — просто включаем нужные кнопки (IsPlayEnabled, IsPauseEnabled и.т.п), добавляем обработчик события нажатия кнопки и обновляем информацию и обложку с помощью DisplayUpdater.
❯ Заключение
Вот таким образом, буквально за несколько дней мы реализовали клиенты нужных нам приложений с базовым функционалом. Разработка клиента YT заняла ровно сутки, разработка клиента ВК — двое суток. Но можно ли всем этим добром по настоящему пользоваться и как оно работает на настоящем устройстве? Смотрите ниже:
Весьма достойно, да? Ещё до публикации статьи, я выложил клиент YT на 4pda и в профильный Telegram-чатик — люди благодарны и действительно довольны. Только в англоязычном чате о WP8.1 (не вклюая WM10 и WP7/WP8) более 2х тысяч человек! Так что да, девайсы прошлых лет действительно нужны достаточно большому числу пользователей.
Ну а разработка клиентов для меня была эдаким челленджом — пилить что-то полезное под новым API всегда интересно, дак ещё и сами девайсы очень крутые с точки зрения UX и скорости работы. А вы как считаете? Жду ваше мнение в комментариях!
Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропустить новые статьи каждую неделю!
Microsoft создаст процессор для Windows 12
Согласно источникам медиа, американская компания начала нанимать специалистов в области полупроводникового оборудования. Также на сайте Microsoft появились вакансии инженеров, которые займутся разработкой ARM-чипов для компьютеров.
По информации инсайдеров, IT-гигант намерен конкурировать с Apple, которая с 2020 года выпускает компьютеры на базе собственных процессоров. Также новые чипы будут адаптированы для работы с операционной системой нового поколения Windows 12.
«Сочетание этих новых чипов с будущей операционной системой Windows 12 может значительно повысить производительность и эффективность устройств Microsoft», — отметили авторы издания. Вероятно, первые процессоры будут представлены в конце 2024 года — тогда же Microsoft должна анонсировать новое поколение операционной системы для компьютеров.
В конце апреля источники сообщили, что американская корпорация Microsoft с 2019 года работает над созданием процессоров для искусственного интеллекта. Выяснилось, что из-за взрывной популярности чат-бота ChatGPT и подобных инструментов в корпорации решили ускорить процесс создания чипов.
Сможете найти на картинке цифру среди букв?
Справились? Тогда попробуйте пройти нашу новую игру на внимательность. Приз — награда в профиль на Пикабу: https://pikabu.ru/link/-oD8sjtmAi
Chrome OS от Google!
Google — Американская транснациональная корпорация в составе холдинга Alphabet, инвестирующая в интернет-поиск, облачные вычисления и рекламные технологии. Сама компания Google имеет при себе несколько продуктов, таких как веб-браузер Google Chrome, веб-движок Chromium, устройства на Chrome OS например как ChromeBook и теперь уже и Chrome OS — целую операционную систему на базе «Собственного», а если быть точнее очень жестко модифицированного ядра Linux.
Операционная система Chrome OS основа на Gentoo linux, а это в свою очередь дистрибутив GNU/Linux с мощной и гибкой технологией Portage, совмещающей в себе возможности конфигурирования и настройки, а также автоматизированную систему управления пакетами. OS от Google вышла в 2011 году, имеет несколько поддерживаемый платформ, собственную графическую оболочку направленную на мобильные устройства, планшеты и их собственные устройства, имя этой оболочки Fuchsia. В отличие от Android и Chrome OS, базой для которых послужила Linux, новая ОС основана на собственном ядре Google Magenta. По наблюдению Ars Technica, экосистема Android не стремится идти в ногу с развитием ядра Linux – даже Google Pixel до сих пор использует версию 3.18, вышедшую в конце 2014 году. Fuchsia – это свободное ПО, она лицензирована по смешанной схеме, в которой присутствуют черты лицензий BSD из трех пунктов, MIT, и Apache 2.0.
Chrome OS на рынке
За главную особенность компания Google inc взяла доминированием веб-приложений и их облачных сервисов за место функций ОС. Ключевую роль в операционной системе была отдана браузеру. Стратегия создания нового продукта подразумевает архитектуру, нетребовательную к аппаратным ресурсам персонального компьютера, используемого для входа в Интернет. Вся тяжесть приложений приходит на Интернет-ресурсы прослеживается и на многих других продуктах Google и соответствует идеологии «облачных вычислений».
Особенности
Из особенностей, сами же разработчики сообщают пользователям, что конечные особенности данной OS будут заключаться в:
в скорости: загрузки, входа в Интернет, получения и отправления электронной почты и так далее.
в тесной интеграции с интернет-сервисами;
в надёжности работы;
в обеспечении безопасности в автоматическом режиме;
в автоматическом обновлении;
в простоте;
в поддержке Google Play и Android Nougat (во всех хромбуках 2017 года);
в «material design» в стиле Android;
в виртуальной машине с Debian GNU/Linux;
Аппаратное обеспечение
Google Chrome OS позиционируется как операционная система для различных устройств — от маленьких нетбуков до полноразмерных настольных компьютеров, систем и поддерживает x86 и ARM-архитектуры процессоров.
Где получить установщик?
Получить актуальную версию Chrome OS можно на их официальном сайте, по данной ссылке!
Заключение
Не буду говорить прям что-то сверх естественного, просто скажу что моё мнение насчет этого нейтрально, та и я думаю сам бы поставил себе Chrome OS за место Android хотя бы даже из любопытства, а может оно и получится все куда лучше и мы получим хорошую OS на выходе, кто знает.