Любителям ретро
Не задавались вопросом?, почему электрокары копируют привычные вид и форму современных автомобилей, ведь отпала необходимость в двигательном отсеке, по сути можно более интереснее и эргономичнее скомпоновать сам автомобиль, и какое не паханное поле для автомобильных дизайнеров. )
Сам себе экосистема: Как я адаптировал старый смартфон под современные реалии и написал клиенты нужных мне сервисов
Время неумолимо бежит вперед: выходят новые гаджеты, постепенно заменяя старые, превращая их в тыкву или в лучшем случае, в «тапочек» для звонков. Сейчас смартфоны стали практически одинаковы во всем: дисплей на всю площадь передней панели, почти полное отсутствие аппаратных кнопок, беспроводная зарядка… Это всё, конечно, здорово, но ведь иногда так хочется взять в руки старый, но такой необычный в наше время QWERTY-смартфон и попытаться его использовать как основной, да и цены на них могут приятно удивить: БУ девайс можно купить за несколько сотен рублей (~5-10$). Одна проблема — клиенты приложений на версии Android 1.6-2.0 безбожно устарели и давно не работают. Но иногда желание воскресить старый девайс превыше потребительского качества и тут я пришёл к мысли… а почему бы не написать с нуля свои клиенты популярных приложений? ВК с музыкой, YouTube, трекинг посылок. Так я и сел писать необходимые в повседневной жизни приложения, с нуля, на голом API Android, без каких либо фреймворков (и даже AppCompat). Получилось ли у меня это? Узнаем в статье!
Мотивация
На самом деле копаться в старых девайсах и пытаться найти им применение — это очень интересное и затягивающее дело. Ведь зачастую попытки оживить девайс заключаются в прочтении большого количества мануалов, документации, копании в терминале, а иногда даже компиляции загрузчиков/ядер! И подобные занятия интересны на всех уровнях: хардварный, системный, прикладной и пользовательский. В предыдущих статьях мы с вами моддили девайсы на всех этих уровнях: ремонтировали «железные» болячки, написали несколько статей о системном моддинге и компиляции загрузчиков под неизвестные китайские устройства, а также узнавали о пользовательском опыте установки готовой кастомной прошивки на 7-летнее устройство.
Но до сегодняшнего дня мы с вами обходили прикладной уровень моддинга устройств: т. е. написание самых обычных, повседневных программ, без которых сложно представить жизнь современного человека. Ещё во времена выхода первого Galaxy S в 2010 году, многие из нас уже сутками красноглазили в Java версии «аськи», кто-то уже сидел в ВКонтакте, хоть и большинство не заглядывали в смартфон каждые пару минут для проверки нотификаций.
К 2012 году смартфонная жизнь уже стала похожа на ту, к которой мы привыкли сейчас — соц. сети, мессенджеры, пуши, потоковое видео — многие из нас успели привязаться к такой жизни и… к конкретно тем самым девайсам!
2012 год давно миновал, тенденции в разработке приложений кардинально поменялись, а учитывая, что многие мои читатели не любят выбрасывать девайсы в мусорку (и правильно делают), наверняка кто-то регулярно заглядывает на полочку к своим пыльным «бывшим» гаджетам и рассматривает их с теплотой… но с сожалением понимает, что их время прошло. Или не прошло? :) Ну, тут как посмотреть. Если есть навыки и огромная мотивация, то программер может многое, в том числе и запилить все самые необходимые приложения сам!
Я давно лелеял эту идею, подумывая, как бы лучше её реализовать. Да и почти всю свою жизнь, я писал на C#, практически не «щупав» API Android и его UI фрейморк. В один день у меня очень сильно зачесались руки написать что-нибудь эдакое под него и причём сразу — весьма серьёзное!
Всем этим устройствам более 10 лет. Самым молодым из них является реплика Lumia 1020, которую мы тоже успели замоддить!
Так и родилась идея написать клиент YouTube. А потом и ВК. Ну и трекинг в придачу. Ну а чего б и нет, на всё про всё я выделил себе неделю: за это время я должен успеть закончить пусть и сыроватые, но вполне юзабельные клиенты для моих любимых сервисов. И я начал думать…
Планирование
Написание приложений под старые мобильные ОС, как и под любые другие платформы, требует планирования того, что и как будет работать с учётом ограничений целевой платформы. У меня было сразу несколько ограничений, что только раззадоривало пыл:
В большинстве своём, на старых версиях Android работают одноядерные чипсеты, а значит, лимитированная многопоточность. Никакой работы в UI-потоке кроме обновления интерфейса, а поскольку в первых версиях этой системы интерфейс менее отзывчив, чем в более свежих — нужно сохранять баланс между функционалом, симпатичностью и скоростью работы. Мои приложения должны оптимально работать в следующих условиях: 256мб ОЗУ, из которых свободно в среднем 30-40мб (Сбер, привет тебе с вылетами на 2гб ОЗУ), 1 ядро ~600мгц, видео-ядро уровня Mali300-Malii400. Негусто? Ну, нам сойдет.
Вторым ограничением стало тотальное устаревание корневых сертификатов, а как многие из нас знают, просто так их на мобильных системах не обновить. Поэтому придётся идти на хаки — делать сервер-реле, который преобразует трафик из https в http там, где нельзя просто отключить проверку верификации SSL (это как раз кейс с API VK). Решено — отдельный сервер-реле, который отправляет запрос на сервер ВК и обратно возвращает нам обычный результат в JSON.
Ну а третьим ограничением стал сам Android. targetSDK = 5 (Android 1.5 Cupcake), никакого AppCompat (кушает драгоценное свободное место), никаких сервисов Google (их тут нет лет 5 уже). Всё на чистом API системы, почти в тех же условиях, в каких 13-14 лет назад писались первые приложения для Android.
Если я его раздобуду когда-нибудь, то в лепешку расшибусь, но портирую на него свои приложения. Тогда я с гордостью скажу, что мои приложения работают на 100% Android устройств %)
Полный энтузиазма я сел писать код. Основную часть статьи я решил поделить на каждое приложение отдельно с конкретными объяснениями: где, что и как я делал. Хочется заранее сказать — я не особо давно пишу под Android, зато много писал под WinForms, поэтому какие-то решения могут показаться странными. А некоторые решения обусловлены версией Android. Например, нотификации в первых версиях Android не было Notification.Builder, а сам Notification был больше похож на структуру. Приложения, конечно же, мы будем писать на Java.
ВКонтакте
Первым делом я начал писать клиент ВК и сразу определился со своими хотелками, которые были весьма скромными: возможность листать диалоги, читать сообщения и отправлять их (с полной поддержкой QWERTY-клавиатур, т. е. отправка на Enter), плюс возможность слушать музыку без ограничений. На ВК бочку ни в коем случае не гоню, просто публичного API совсем нет, даже с ограничениями, хотя было бы здорово…
Мне снова хотелось почувствовать те эмоции, которые я когда-то ощущал от прослушивания музыки будучи школяром со своим первым Android-смартфоном. В 2013 году я прилетал со школы и слушал плейлист на практически таком же девайсе с идентичным железом и версией Android. Я хорошо помню, как пользовался прелестями многозадачности Android на 2G интернете (3G чипсет просто не поддерживал): одну песню слушаешь, поставил вторую качаться, пока песня доиграет — уже и вторая скачалась. :)
Итак, хотелки выбраны, пора начинать писать приложение. Для дебага у меня было 3 устройства: Galaxy S4 (Android 4.2 JB), китайский Galaxy S3 Mini I9300 (Android 2.2, на фото выше) и Samsung Galaxy S I9000 (Android 2.3), ну и конечно же эмулятор с 4.4 KitKat. Android Studio и сейчас умеет без проблем собирать приложения вплоть до версии Android 2.2 даже с последними Build Tools и Target SDK — главное выкинуть appcompat, androidx, и юнит тесты из build.gradle. Без каких-либо проблем он цепляет и сами устройства по adb. Даже отладчик без проблем работает.
Первым делом я начал писать активити (полноэкранная форма в терминологии Android, или «экран» приложения) с диалогами — он должен раз в n секунд подгружать данные и строить «морду» для всего этого. По сути, почти весь код клиента — это получение ответа от API ВК, разбор JSON на датасет и визуализация этого датасета на экран. Для этого я ввёл два объекта: VK, который делает асинхронные запросы на сервер, оборачивает работу с сервером-реле и парсит JSON и VKObjectProcessor (это скорее всего отрефакторится до VKDataSet чуть позже).
Архитектура приложения получилось довольно простой и примитивной. При старте активити авторизации проверяет данные приложения (PersistStorage) на наличие API-токена и при его отсутствии запрашивает авторизацию. Как это уже стало классическим среди различных «самопальных» клиентов, мой клиент «прикидывается» официальным приложением ВК — для этого используется связка app_id и app_secret приложения ВКонтакте для Android.
После авторизации приложение перенаправляет нас на страницу диалогов. Поскольку у нас нет ни пушей, ни лонгполлинга, метод обновления остается один — в заданные интервалы. Для этого у нас есть Handler, который раз в 3.5сек берет список диалогов с сервера, проверяет, обновились ли данные и если да — обновляет датасет, отправляя сигнал обновления интерфейса (который построен на ListView). Кроме того, у нас есть кэш аватарок — точно так же распаралелленый на несколько потоков, а загруженные на данный момент превьюшки хранятся в хэшмапе.
При этом сообщения реализованы схожим образом — на данный момент возможности горячей подгрузки сообщений «сверху» нет, поэтому обновляются последние 50 сообщений скопом и сразу. Шустро ли всё это работает? Вполне неплохо. Конечно, основное процессорное время уходит на разбор тяжелых JSON, но тут отчасти вина ВК — мало того, что кастрировали функционал getHistory в последних версиях API, так ещё и нет возможности возвращать только те поля, которые нужны.
Как же я поступил с аудиозаписями? Музыка через API — настоящая заноза для разработчиков клиентов, с которой пришлось «подолбаться». Правда, недолго — раз у нас для основных запросов уже есть сервер-реле, то почему бы не сделать ещё и для музыки? Суть обхода простая: если сгенерировать специальный API-токен, то можно свободно обращаться к методам, связанным с музыкой без необходимости притворяться официальным клиентом и «подписывать» запросы md5 ключом. Примитивный PHP-скрипт как раз и предоставляет такую возможность, позволяя получить доступ к базе музыки ВК, однако ограничение типичное — у пользователя должны быть открыты аудиозаписи:
Тут был код на пхп, о его скушал пикабу!
По итогу у меня получился рабочий плеер с поиском музыки и добавленными треками. Опять же — производительность остаётся отличной! Ссориться с ребятами из ВК не хочу, поэтому добавлять возможность качать треки пока не стал — но вам стоило бы быть подружелюбнее к разработчикам кастомных клиентов! :)
Что мы получили по итогу? Довольно простенький клиент ВК, который практически не потребляет ОЗУ и шустро работает. Да, здесь не хватает кучи различных фич — как минимум, прсомотра ленты и стены. Но ещё успеется — если проект будет интересен не только мне, то продолжим наращивать фишечки потихоньку! Уже ближе к релизу я слегка причесал клиент, добавив более «вкшный» дизайн и приделал анимированное боковое меню. Про Animation ещё кто-то помнит? :)
YouTube
С разработкой клиента YouTube были свои особенности: во-первых, в отличии от клиента ВК, видео через реле просто так не загрузишь, слишком много трафика, а во-вторых, YouTube уже не «отдаёт» видео в форматах, которые поддерживают старые устройства — в основном, это h263 до 720p. К сожалению, потоковое видео с софтовым декодированием уложит на лопатки большинство «одноядерников» тех лет.
Ситуация осложнялась тем, что ни VideoView, ни стандартные плееры всех смартфонов, на которых я отлаживал приложение, не умели игнорировать ошибки SSL и просто валились с ошибкой. Пришлось что-то придумывать: ведь видосики хочется смотреть на крутейшем AMOLED дисплее Galaxy S!
Посидел я, подумал и придумал. Для поиска по базе YouTube, получения информации и прямых ссылок на видео я решил использовать альтернативный фронтэнд YouTube, который называется Invidous API — крутая штука со своим API, которая сама распределяет пул токенов самого ютуба и отдаёт ответы в виде JSON. Форматы запросов очень простые: <url инстанса Invidous>/api/v1/метод, например «search?q=test®ion=RU&hl=ru» — выдаст нам результат поиска «test» в Российском регионе. Очень удобно, да? А ещё Invidous — не какой-то отдельный сервис, а целая сеть т. н. инстансов — какой хочешь, такой и юзай! Поскольку большинство инстансов «прячется» за свежими сертификатами, пришлось идти на довольно известный костыль с отключением верификации хостнеймов у HttpUrlConnection:
А туть был костыль на Java.
А поскольку у нас нет возможности воспроизводить потоковое видео онлайн, то я решил его просто предварительно загружать через собственный менеджер закачек, с возможностью последующей очистки кэша. Поскольку таким устройствам 2060p качество не нужно, я выбираю 240p-360p mp4 в avc кодеке, в среднем ролики по 30 минут весят около 30-40 мегабайт. При HSDPA+, загрузка подобного видео займет около минуты-двух — не так уж и много, можно и подождать. Закинул тестовую версию в беседу любителей ретро-мобилок — люди были в восторге. ;)
Поскольку Invidous отчасти строится на анонимности — авторизации тут нет. Однако свою задачу посмотреть видосики он выполняет нормально — поэтому весь UI приложения я поделил на 4 вкладки: тренды, популярное, история и поиск. Подписки, как и историю можно реализовать на стороне клиента — для некоторых такой подход покажется плюсом, для кого-то — нет, однако минимальный задел для клиента уже есть — мы можем смотреть видео!
А где скачать?
Приложения и бэкэнд полностью открытые, исходный код доступен по лицензии GPLv3. Следить за статусом проекта можно на моём GitHub!
Последние версии можно скачать в релизах проекта.
Из текущих хотелось:
Портировать на Android 1.6. Несмотря на то, что приложение в целом имеет targetSDK = 5, на 2.1 оно работать отказывается. В Android, после 2.1, слегка поменялся бинарный формат xml разметок, из-за чего приложение на старых системах вылетает с исключением. Но это решаемо: eclipse adt в зубы, импортируем проект и вперед! ;)
Кроме того, я экспериментировал с попытками как можно сильнее уменьшить нагрузку как на сеть, так и на процессор путём облегчения датасетов. Если один JSON от ВК весит в среднем 30-60кб (который 1 ядерный чипсет частотой 600мгц может «долго» жевать, негативно сказываясь на UI), то примитивный KeyValue формат, который содержит только нужные поля умещается в 5-6-7кб в текстовом виде и благодаря своей примитивности (весь парсинг — два substring, один indexof и поиск ключа по хешмапе) совсем не «налегает» на процессор. Благодаря этим наработкам, я запилил и примитивный клиент ВКшечки для j2me.
В целом, можно сделать единый формат датасетов для мессенджеров, а на бэкэнде реализовывать всё что угодно — Telegram, ВК, да хоть личные сообщения на хабре, а для платформ только делать «морды»: так можно завести современные мессенджеры и на Sailfish, и на J2ME, и на Symbian, и на WinMobile, практически без пота и крови :)Полная адаптация под кнопочное управление. Сейчас с клиента можно без проблем писать сообщений с любой клавиатуры, в том числе и QWERTY. Однако основной интерфейс всё ещё не полностью адаптирован под кнопки и требует выполнения некоторых действий пальцем.
Заключение
Как по мне — получилось вполне неплохо. Да, приложения кое-где сыроваты и явно не дотягивают по функционалу до их больших версий. Но кое в чем они всё таки выигрывают: они лёгкие и быстрые, а самое главное — ещё могут продлить жизнь любимого девайса для кого-то. И я считаю — это классно! Среднее потребление ОЗУ обеими клиентами: 5-10мб. Вес APK: 30-50кб на момент выхода статьи. Вот что значит писать под голое API без модных фреймворков! ;)
Что до остального функционала — кое-что в Android продолжает неплохо работать и в наше время. Например, DLNA-стриминг в доме, E-Mail клиент или банкинг через смски. Я уверен, это покрывает 80% потребностей большинства пользователей — так разве после этого можно назвать старые смартфоны бесполезными?
Я писал эту статью с целью показать вам, что старые девайсы отнюдь не тыква, если есть щепотка энтузиазма в глазах и любовь к гаджетам, а заодно и поделиться с вами своими приложениями. Часто в комментариях мне пишут, что хотели бы пользоваться своими смартфонами и дальше, если бы не устаревающие версии Android. А вы как считаете? Жду ваше мнение в комментариях.
Статья подготовлена при поддержке компании TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать новые статьи про девайсы каждую неделю! А ещё не забудьте проставить плюсик на хабре, если статья вам понравилась - это поможет с финансированием и выходом новых статей!
Поиграем в бизнесменов?
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Микропроцессорная лаборатория «Микролаб КР580ИК80 907». Разработка и отладка встроенного ПО полвека назад
Привет, хабр!
Предлагаю вашему вниманию ретроспективу совершенно замечательной микропроцессорной лаборатории “Микролаб КР580ИК80 907”, выполненной в духе ядерного чемоданчика. Именно так выглядели одноплатные компьютеры конца эпохи холодной войны, эдакая Raspberry Pi конца 70-х годов. Всем, кто желает вместе со мной погрузиться в пучину воспоминаний или просто послушать, как старики мучились инженеры старшего поколения осваивали микропроцессорную технику, прошу под кат.
Как я был горд собой, когда слушал на уроках радио из самодельного карманного ФМ-приемника через высокоомный наушник от слухового аппарата. Наушник вставлялся глубоко в ухо, что не выдавало его внешним шумом и не сильно бросался в глаза из-за формы и цвета. А как радовали соседей по панельной хрущевке самодельные усилители низкой частоты, собранные по замысловатым транзисторным схемам. В дополнение к ним обязательно нужно было собрать светомузыку на лампочках, раскрашенных цветным лаком. По вечерам вместе с отцом вникал во все тяготы ремонта стареньких телевизоров и магнитофонов. И в этом прекрасном мире начинающего радиолюбителя совсем не было места для таких далеких и непостижимых электронных вычислительных машин.
Уже в техникуме с помощью калькуляторов нас пытали расчетами спектра сигналов, параметров фильтров и согласующих устройств, построением диаграмм направленности различных антенн. Все эти бублики на миллиметровке до сих пор мерещатся в кошмарных снах. И казалось, что места в моей жизни для вычислительной техники уже не останется. Но все кардинально изменилось благодаря короткому 72-х часовому курсу вычислительной техники, который практически факультативно преподавали нам на старших курсах.
После таких тягучих разборов команд для процессора КР580ВМ80А (аналог Intel 8080А) на микропрограммном уровне, лабораторные работы стали как гром среди ясного неба! Вот тот переломный момент, который надолго изменил мои профессиональные предпочтения. Я полностью утратил интерес к радио и телевидению, и переключился на микроконтроллеры.
Кому интересно, микролаборатория обладала двумя блоками ОЗУ по одному килобайту для размещения кода программ и данных. Дополнительно на панельке могла размещаться микросхема ПЗУ. Именно такая микросхема заставляет чемодан петь на видео в начале статьи, шла она в комплекте с устройством. Сам же процессор КР580ВМ80А имел 16 разрядную шину адреса и 8 разрядную шину данных, и мог работать на частотах до 2,5МГц. Конечно же выполнение команд занимало далеко не по одному такту. Но все же производительность процессора была близка к современным 8-ми битным микроконтроллерам.
Невооруженным глазом было понятно, что наша “микролаб” являлась аналогом американской микролаборатории «Hewlett-Packard 5036A», базировавшейся на процессоре Intel 8085. Более подробно об этом девайсе можно почитать на сайте HP. Но конечно же это стало очевидным для меня значительно позже. Оригинальная лаборатория от HP на десять лет определила нашу, ну или, точнее сказать, наша отстала на десять лет. Hewlett-Packard 5036A вышла в 70-х годах прошлого века. А наша родная “Микролаб КР580ИК80 907” примерно в 1983 году. Хорошо это или плохо? Я лично считаю, что хорошо. Ибо в образовании нет понятия плагиат, все делается на благо обучаемым. И именно благодаря тому, что в моей жизни был этот “чемоданчик”, я совершенно спокойно оперирую со всеми этими флагами и битовыми масками в микроконтроллерах.
Примечательно только то, что устройство, по сути лабораторного стенда, было выполнено максимально наглядно. Своими глазами можно было наблюдать печатную плату и установленные на ней компоненты. А как элегантно с помощью маски и шелкографии на печатной плате была представлена структура ЭВМ. Разработчики явно подошли к задаче со знанием дела, и не только западные, но и наши, т. к. все-таки наша микролаб не была полной копией зарубежного прототипа.
Печатная плата компьютера выглядела ненамного страшнее тех, что я видел в телевизорах. А значит, в этом вполне можно было разобраться. Такая наглядность позволила четко осознать, что это вполне доступная технология.
Предохранители на 2А и огроменные сетевые трансформаторы предавали устройству дополнительной солидности, а кейс “дипломат”, в который оно облачено, наводили особый лоск. Несмотря на солидный вес и размеры, по тем меркам устройство вполне можно было считать мобильным.
Боковой разъем позволял подключать различные платы расширения, в том числе и самодельные.
Никакого компилятора в комплекте к компьютеру не поставлялось, кроме размещенной на внутренней части крышки бумажной таблицы с командами процессора. Поэтому голову приходилось подключать основательно. Программа составлялась на ассемблере карандашом в тетрадке. Затем полученную программу нужно было преобразовать в машинный код с учетом карты памяти учебной микро ЭВМ. К счастью, сейчас все это за нас делают различные линкеры и компиляторы.
Средством управления “компьютером” служит системный монитор: встроенная в ПЗУ программа, позволяющая считывать данные с клавиатуры, выводить их на дисплей, и обрабатывать вводимые команды. Замечу, что клавиатура была шестнадцатеричной. Это немного упрощало процесс работы, ведь сличать с записями в тетрадке двоичные коды было бы просто невыносимо.
Левая половина дисплея предназначалась для отображения адреса ячейки памяти. Правая – отображала содержимое этой ячейки, либо записываемые в нее данные. На светодиодах можно было видеть флаги состояния процессора. А замечательный двухпозиционный переключатель позволял переводить систему в режим автоматического или пошагового тактирования.
В автоматическом режиме можно было наблюдать за работой программы в реальном времени. В пошаговом режиме можно контролировать результат выполнения отдельных команд. На дисплее выводить содержимое регистров процессора и анализировать свою программу. Сейчас все это и даже больше позволяют выполнять различные внутрисхемные эмуляторы.
Никакой возможности записать свою программу в ПЗУ во время лабораторных работ нам не предоставлялось. И это было хорошим стимулом сдать работу прямо во время занятия, чтобы потом повторно не вбивать в память все это многообразие машинных кодов.
На самом деле, я рад, что успел зацепить ту эпоху и у меня имелась возможность посмотреть на работу процессора “изнутри”. И пусть даже процессор был аналогом западного, да и сама учебная ЭВМ тоже, но важно, что это было!
Если вам понравилась эта статья, вы можете посмотреть, во что вылилось моё увлечение ретро электроникой в одной из моих предыдущих записей.
P.S. Отдельно хотелось бы запечатлеть здесь слова благодарности моему камраду R5PM из Богородицка за предоставленные по моей просьбе фотографии и видеозапись с сохранившегося у него экземпляра. Подумать только, его экземпляр микролаборатории сохраняет работоспособность уже четвертый десяток лет.
P.P.S. На некоторых известных интернет-барахолках и сегодня можно встретить Микролаб КР580ИК80, правда в разных состояниях сохранности. И средняя стоимость может составлять до 20 тысяч рублей за рабочий экземпляр.
Подпишись на наш блог, чтобы не пропустить новые интересные посты!
Песню ннада? С вас музыка, с меня текст
Где-то в ночь с 11 сентября 2020 года мне приснился сон, будто я попал на какой-то закрытый концерт Лоры Брэниган. А возможно, это была репетиция. За передними столиками народу было чего-то как-то жидковато, если кто-то вообще там сидел, кроме меня.
С репетиции Hold Me Tour в 1985 году.
Единственная песня, которую я послушал прежде, чем мой моск решил, что достаточно отдохнул, была совершенно незнакомой и нетипичной для Лоры. Обычно её продюсеры тыбзили произведения итало-итальянцев и американских диско-поп-рок-артистов разной степени популярности, а тут такое чувство, будто песню скоммуниздили у Валери Дор (Моника Стукки при морально-вокальной поддержке Симоны Дзанини) из альбома The Legend. Да, это формально всё ещё итало-диско, из которого Лоре выжимали американский синт-поп/евродиско, но таких у неё никогда не было. Мотивы здесь специфические - закос под средневековье и в музыке и в тексте.
King Arthur для примера.
Ешё одна особенность - песня депрессивная. У Лоры было достатрочно баллад, и даже более жосских, типа How Can I Tell You To Say Goodbye, но всё равно как серпом по яйцам.
Собственно, текст песни
If We Had Wings
Looking deep, waiting for somebody
Who will light the fire when it’s cold and dark.
Cliffs are steep, how to get around them?
Where to find the answers? Tell me where to start.
Days and days nothing really changes.
I’m a lonely stranger trapped between the worlds.
On the way to terrifying nowhere,
There’s not a living soul there, not a single bird.
So one day he’ll come back and just stay.
So one day she will meet him again.
Refrain
If we had wings to fly towards each other
Mountains would no longer be a bother.
Dreams come true if you believe.
You’ll find the way to be with him.
There’s no road, this is where the path ends.
Thousands of the dead ends already in my map.
Will he come if I didn’t make it?
If we didn’t make it…
Better not to ask.
So one day he’ll come back and just stay.
So one day she will meet him again.
Refrain
Refrain
Я, как Энтони Хопкинс, который дождался, что написанный им полвека назад вальс сыграл оркестр под руководством Андре Рье, тоже хотел бы увидеть эти слова приведёнными в нормальный вид и положенными на музыку. Жаль, что Лоры с нами больше нет, и ей нельзя послать письмо с текстом. Но в целом послать эту рукопись почтой хотя бы самому себе имеет смысл. ;)
Ответ на пост «Сто лет назад»
Очень залипательно смотреть такие ролики. Как будто сквозь окно в прошлое.
Сразу захотелось куда-нибудь сохранить записи с автомобильного видео-регистратора, чтобы через сто лет люди тоже могли сравнить быт и обстановку со своими.
А вообще ради такого можно и проехаться нарочно по городу неспешно рано-рано утром и в разное время дня, по самым центральным улочкам, по старому городу, по пригородным посёлкам.
У нас как-то локально в городе завирусилось (кстати, теперь вот не нахожу его) видео, снятое кем-то из окна автомобиля на камеру в начале двухтысячных. Та машина проехала через весь город. Увлекательно было наблюдать изменения, случившиеся с тех пор.
Тогда же возникла идея построить трек маршрута из того видеоролика и проехаться по нему же с примерно такой же скоростью так, чтобы можно было смонтировать синхронный с оригинальным ролик.
А теперь, собственно, суть идеи. Нам (людям, любящим залипать на старину) нужен сайт, который предоставлял инструмент для автоматизированного формирования такого вот трека с привязкой к видео-ролику. На этом сайте можно было бы регистрировать видео с ютуба или других видео-хостингов и открывать их во встроенном плеере по соседству с картой. На карте можно для каждого момента указать точку и ракурс съёмки. В результате получится наглядный трек, который позволит посмотреть на места из видео-фрагмента в Google Street View и других панорамах, на фото одних и тех же мест в разных ракурсах.
Да, точно так же можно привязывать и фотографии, фрагменты фильмов, снятые в реальном окружении, даже картины, написанные художниками с натуры. Получится интерактивное окно в прошлое, где в дополненной реальности можно увидеть слои истории, прокрутить время в разные стороны, проникнуться его течением.
А ещё здорово было бы, если бы этот сайт в режиме навигатора помогал бы проехать по уже проложенному маршруту, чтобы отснять современную версию такого проезда в прошлом.
Важно, чтобы такие артефакты можно было сделать не только для Default city, но и для любой деревни, ведь у многих из них есть очень давняя история, а у многих эта история впереди.
Самое подходящее сообщество для этого поста - это "Урбанистика", но я нашел там только один пост. Мало урбанистов на пикабушечке почему-то. Но лиха беда начало.
Если кто-то хочет похитить идею - пожалуйста. Нереализованные идеи яйца выломанного не стоят. Берите кто хотите=).
Может быть кто-то заинтересуется и запустит проект на краудфандинге или в краудсорс, тогда можно будет всем поучаствовать. У меня руки до этой идеи дойдут не скоро.