Category: техника

Category was added automatically. Read all entries about "техника".

Swift, Apple Watch, and dynamic Graphs

Поробовал я попрограммировать под Apple Watch на досуге. На Swift'е. Свифт очень даже ничё так. Похож на OCaml чем-то. Например, константы определяются через let, переменные через var. Но константы дутые: внутри них можно менять всё, что там меняется.

Swift, определённо, шаг в правильную сторону. Программировать было, в основном, приятно. Впрочем, XCode традиционно раздражал своими тормозами и подсказками.

Сделал приложение, которое показывает динамический график, движущийся со плавностью в 30fps в эмуляторе. Заодно разобрался, как сделать так, чтобы анимированные гифки были с нормальными цветами, а не все в дизере. Для этого надо сначала со всех кадров собрать палитру, затем её в дальнейшем и использовать. В итоге workflow выглядит так: обычным QuickTime'ом делается скринкаст, затем обрабатывается скриптом, делающим из .MOV → .GIF.



Исходники приложения здесь: https://github.com/vlm/ExampleWatchGraph (см. в сторону WatchKit Extension — это именно то, то выполняется на часах).

Проблема с часовым API заключается в том, что там всё через ж всё в Apple-стиле. Например, чтобы нарисовать что-то динамическое на экране, надо 30 раз в секунду:
  1. Создать графический контекст заданного заранее размера. Потому что вычислить размер WKInterfaceImage, в который вставлять будешь получившийся битмап, нельзя. Размер интерфейсного элемента можно задать (set), но не опросить (get).
  2. Нарисовать, что нужно, через CoreGraphics (Quartz 2D) — это лёгкая часть.
  3. Превратить контекст в .PNG, и уже этот .PNG разместить на WKInterfaceImage. См. здесь: https://github.com/vlm/ExampleWatchGraph/blob/master/ExampleWatchGraph%20WatchKit%20Extension/GraphPainter.swift#L117


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

Ну или я что-то не понял.

Samsung SGS III micro-review

Сходил посмотреть на Galaxy SGS III, как обещал Кузьме.

Что ж. Неплохой телефон. Как-то работать можно, в отличие от более слабых андроидов. Но какое-то невероятное количество мелких странностей немного напрягает. Сравниваю с iPhone 4.

  • Пикселы видны. В отличие от iPhone 4 , пикселы на этом самсунге почему-то заметны.
  • Если нужно отредактировать url в браузере, замучишься на него нажимать. Курсор становится на нужную позицию раза с третьего, или даже с пятого. Если при этом пытаешься убрать курсор из location, ткнув на контент, то контент сразу кликается. В эпле для этого нужно два клика: один клик убирает режим редактирования, второй начинает интеракцию с контентом. После многолетней работы с Mac OS X этот режим кажется логичнее.
  • Система допускает пустые экраны с приложениями. То есть, если иконок слишком много, их можно организовать на нескольких экранах и переключаться между ними. Но возможны и пустые экраны. Нет, не говорите что возможность вставить пустой экран — это фича. Это левота какая-то.
  • При попытке скроллинга, когда контента уже нет, девайс не даёт никакого фидбэка. Ну как же, патент-то у эпл! Можно ругать эпл за это. Но перед этим я посмотрел на Windows phone, и там они эту задачу как-то решили, хотя выглядит чуть иначе, чем у iOS. А тут нет — просто скроллинг жёстко утыкается в лимит и всё. Как будто просто этот кусок кода выдрали с корнем и ничего взамен не придумали.
  • Пинч-ту-зум есть, всё как у людей. На тилт-ту-зум посмотреть подзабыл.
  • Пока сидишь в меню выбора приложения, экран яркий. Переключаешь в браузер или ещё куда — экран тускнеет и становится менее контрастным. Что за фича?
  • Скорость обновления экрана неконсистентна — то она в районе 30fps, когда переключаешь приложения. То она спускается до 15fps, когда листаешь фотки. То есть, заметны дёргания. Причём, не в сервисной хрени, а в что ни на есть мультимедиа-приложении, где именно плавность скроллинга является главным фактором эргономики.
  • Дико неконсистентные UI между приложениями. Это несколько утомляет. На эпл-платформе всё-таки больше единообразия.

    Ну и куча других мелочей и мелких багов. Но сейчас я вам расскажу, как работает ютюб на этом девайсе. Во-первых, он играет, растянувшись по ширине окна, но не сохранив aspect ratio. Во-вторых, распахнутый во весь экран мувик свернуть можно только физической кнопкой, а не тапом по экрану. В-третьих... ну это бомба! Не, спойлить не буду, смотрите видео.



    В целом я скажу, что для кого-то этот девайс может быть плюс-минус лапоть эквивалентом iPhone 4. Работать можно, слишком сильных тормозов нет. Но явно не конкурент iPhone 5. В основном, конечно, из-за недополированности софта.

    Хотите более чёткого разбора, где ещё у андроида интерфейсные проблемы? У нас такого навалом! http://www.androidpolice.com/2012/09/18/ux-things-i-hate-about-android/

    Ретроспектива про Ульяновский центр микроэлектроники УЦМ

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

    Ага, конечно! Вот что говорит бывший директор УЦМ в 87-92 годах, А. Г. Рыжевский:
    <...>
    Партия сказала мне своё «надо» довольно резко. Заявлено было так: либо я еду в Ульяновск, либо меня рекомендуют на должность второго секретаря обкома партии в Бухару. А уж этот вариант меня не вдохновлял совсем.

    Идея Центра микроэлектроники с самого начала тоже меня не вдохновляла. Он был слишком многоплановый. В нём были достаточно перспективные направления, но были и достаточно «дохлые», которые, на мой взгляд, вообще не должны были развиваться. Но поскольку в постановлении ЦК записано было всё в комплексе, я обязан был всё это выполнять.

    Понятно было, что в этом Центре всегда будет развиваться направление, связанное с датчиками. Потому что это своего рода искусство, которое зависит от головы разработчика, от его интуиции и т. д. Вместе с тем там предусматривалось направление, связанное с цифровыми микросхемами. А это направление полностью определяется технологическими возможностями оборудования. (А наше оборудование и близко не могло конкурировать с зарубежным — японским, германским, американским.) Вот это направление явно было обречено на поражение. Но я против этого не мог ничего уже сделать.

    В то время мы жили в одной стране, а на самом деле их было две. Одна страна — это оборонная промышленность и всё, что с ней связано. (И оттуда практически ничего не ушло в гражданские отрасли.) И была гражданская промышленность, которая работала на отбросах того, что оставалось в нашей стране. Всё основное — ресурсы, деньги, люди — уходило в «оборонку» и само себя съедало.

    Ульяновский центр микроэлектроники должен был восполнить этот пробел и поставлять для гражданских министерств то, что они не могли получать в электронной (читай: оборонной) промышленности. Те цифровые микросхемы, которые мы должны были начать производить, по идее, надо было получать из «оборонки». По качеству они уступали тем же американским, но производство их было налажено, и ничего не надо было изобретать. (Соотношение качества было такое: американцы делали, предположим, 100 микросхем, и из них 70 получалось годных, а мы делали тысячу, и из них годных получалось 3.) Такой ценой достигался паритет, он действительно был. А так как ценообразование фактически было волевое, то это никого особенно не волновало.

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

    Зап. 28.1.2002 г. Ист: «Антология жизни 1980–1990 гг.», Демочкин Г. А.

    Предсказания про Apple

    Обещал отслеживать предсказания про Apple — выполняю.

    > Например, в следующей ревизии iPad появится front-facing camera: под неё в железе уже и дырка есть, и по логике должна быть. Скорее всего выйдет к крисмасу, или по крайней мере в районе января.

    Выполнилось: даже две камеры.
    Не выполнилось: вышла весной, а не зимой, и достать почти невозможно. aznakai пришлось пилить до Тахо чтобы один айпад забрать. В Тахо они были в одном месте, ближе к Долине — болт.

    > Ну и iPhone белый должен быть. Скорее всего будет к весне — я видел его уже в соседней кафешке у чела, который с ним ходил и тестировал. Но говорят с его стеклом траблы какие-то, поэтому не успеют к крисмасу.

    Выполнилось: Белый iPhone появился. К весне или весной — это не суть важно, на мой взгляд. Когда я делал предсказание, белый iPhone многие уже заочно похоронили.

    > Дело в том, что тринашка уже и так набита почти под технологическую завязку, а из-за лицензионных граблей они не могут перейти на Core i5/i7 на ограниченном пространстве. Есть очень небольшая вероятность, что придумают что-то с AMD или поставят какой-то совсем странный интеловский чип, но это я не считаю за существенный апгрейд.

    Вау, действительно поставили Core i5/i7, и действительно странный чип — про sandy bridge + Intel HD Graphics 3000 было неизвестно [мне] на момент предсказания. Но не к июню, а раньше. Не ожидал.

    > [к июню] на 13" модели сделают SSD 128g дефолтом.

    Ждём июня. Скорее всего не выполнится.

    Короче, хреновый из меня предсказатель — всё очевидно и так было.

    P.S. gliv в том треде таки купил MacBook Air 11", а aznakai — MacBook Air 13".

    Налоги через iPhone

    В штатах теперь можно заполнить и отослать налоговую декларацию через iPhone. Если у тебя зарплата менее $80 тысяч в год, можно воспользоваться приложением TurboTax SnapTax, и просто сфотографировать твою форму W-2, пришедшую от работодателя. Эта софтина делает распознавание текста и отсылает отчёт в налоговую.



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

    AAPL

    Новый MacBook Air 11.6", представленный сегодня эплом, является первым девайсом, который может конкурировать с PowerBook 12" 2005 года выпуска.

    По размеру и весу PowerBook 12" оставался непревзойдённой машинкой неприлично долгое время. MacBook Pro 13" был гораздо тяжелее (и больше!), а предыдущая MacBook Air была недоделкой, которая постоянно перегревалась, после чего у неё отпадали процессорные ядра. К тому же, она стоила серьёзных денег, особенно с SSD.

    Несмотря на то, что своим PowerBook G4 12" я очень доволен, всё-таки некоторые тормоза при проигрывании H.264 и плохая поддержка рабочего места разработчика для iPhone сделали своё дело — я скрепя сердце вынужден переходить с PowerPC на Intel.

    Теперь забавы ради посмотрим, как соотносится технология 2005 года с технологией 2010:

    PowerBook G4 12"MacBook Air 11.6"
    ПроцессорPowerPC G4 1.5 GHzIntel Core 2 Duo 1.4 .. 1.6 GHz
    Шина166 MHz800 MHz
    Память1.25 GB2..4 GB
    Дисплей1024x768, Anti-glare1336x768, Glossy
    Диски100 GB 2.5" IDE HDD64..128 GB (SATA?) SSD
    ПримочкиМодем, Ethernet, FireWire, Line In, DVD  Камера, поддержка 27"/30" внешнего монитора
    БатарейкаЗаменяемая, 1.5—3 часаНеснимаемая, 5 часов
    Цена$2400 тогда, ~$240 сейчас$999..$1399


    Модем, Ethernet, FireWire, Line In и DVD я за последние несколько лет использовал всё реже и реже, и на настоящий момент практически свёл использование их к нулю. А вот без внешнего монитора жить не могу. Поэтому по примочкам текущий Air уделывает PowerBook.

    Счастье — пришло.

    Если я его таки куплю, это будет первый апгрейд, который принесёт уменьшение номинальной тактовой частоты (1.4 GHz vs 1.5 GHz).

    Feeding Frenzy: Selectively Materializing Users’ Event Feeds

    Adam Silberstein, Jeff Terrace, Brian F. Cooper, Raghu Ramakrishnan

    http://www.google.com/search?q=pdf+selectively+materializing+user%27s+event+feeds

    Feeding Frenzy: Selectively Materializing Users’ Event Feeds


    Народ из Yahoo! Research и Princeton University разбирает проблему глобальной оптимизации расходования машинных ресурсов для поддержки передачи реал-таймовых фидов.

    Существуют поставщики фидов (те, кто пишет твиты, например, или RSS провайдеры) и есть потребители фидов (аггрегаторы, странички на фейсбуке, поисковые интерфейсы). Каждый потребитель может быть подписан на неограниченное количество поставщиков фидов. Поставщики могут поставлять фиды в реал-тайме (чтобы ембедщики не смеялись под влиянием своей профдеформации, сразу пишу, что вебовый реалтайм — это человеческий реал-тайм: секунды и десятки секунд задержек между отправкой и получения сообщения считается «реальным временем» в современном вебеlionet), а потребители — в реал-тайме же хотят его потреблять. А могут и не поставлять, и, соответственно, не хотеть. Наивно полагать, что в каждом случае, когда потребитель хочет посмотреть на свой фид (френдленту, например), мы должны шерстить базу поставщиков и формировать фид: существуют механизмы кеширования, материализации фидов. Это позволяет потребителям получать уже кешированный фид, практически мгновенно (из кэша).

    Теперь проблема: если есть быстрые поставщики фидов и огромное количество не очень часто посещающих свои фиды потребителей, то материализация фидов для такой толпы становится накладной операцией. Например, в твиттере есть такой пользователь «Ashton Kutcher», каждое сообщение которого расходится по «френдлентам» почти пяти миллионов подписчиков. То есть, каждое сообщение от него должно повлиять на миллионы материализованных представлений.

    Статья обсуждает следующее решение: что если мы можем выбирать, использовать ли для фида материализованное представление, или нет (идти в сторадж более низкого уровня), базируясь [только] на свойствах пары поставщик/потребитель? По сравнению с другими статьями на эту тему, данная статья демонстрирует, что принятие решения о материализации не может быть принято только на основании свойств поставщика (частоты обновлений, например). Авторы разрабатывают механизм вычисления необходимости материализовывать фид исходя, одновременно, из отношений скорости генерации событий и и частоты их потребления.

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

    Авторы вводят понятие k,t-diversity. Неформально это можно понимать так: если приходит событие от Боба в последние t квантов времени, тогда мы не показываем более k событий от Алисы, ежели мы не показываем в это же время событие от Боба.

    Рассматриваются две модели когерентности: per-producer и global (эта деталь неважна сейчасlionet). В модели per-producer, стоимость события для конкретного потребителя зависит от частоты актов потребления (рефреша страницы френдленты) и событий поставщика. В глобальной модели когерентности, стоимость события зависит от частоты актов потребления и суммы частоты событий от всех поставщиков событий для данного потребителя.

    Что такое стоимость — это выраженная в CPU или в disk IO операциях сложность обслуживания события для системы.

    Адаптивный алгоритм, который они предлагают ("правильный" knapsack алгоритм — NP-hard) выглядит примерно так:

    We simply sort the pull edges by descending, and shift some number of top-ranked edges to push. Then, if our latency is higher than the SLA, we incrementally shift the top-ranked pull edges to push. If our latency is lower than the SLA, we incrementally shift the lowest-ranked push edges back to pull (note that we never shift edges to pull if they are assigned to push).


    От себя:

    В этой области всё интуитивно понятно было как оптимизировать и без статьи, но хорошо, что кто-то пошёл и чуть более формально отнёсся к проблеме. Опять же, экспериментальная проверка добавляет уровня доверия результатам статьи. Для эховцев будет небезынтересно поверхностно ознакомиться с параграфами начиная с 4.1 Architecture, в которых рассказывается, как конкретно делается система материализованных представлений на яховской PNUTS.

    Конкурс!

    Этот пост вообще-то должен был попасть в ru_ucdesign. Но я не дождался, пока модераторы меня в нём авторизуют. А без авторизации нельзя — сиськоспам всех достал, очевидно.

    Ну так вот. Дохлое комьюнити какое-то, этот ru_ucdesign. Давайте попробуем разнообразить. Ежели кто имеет доступ к ru_ucdesign — сделайте кросспост или форвард сюда (Upd: сделали).

    Конкурс!


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

    Что настройки значат — не суть важно1, предлагаю чуть-чуть фантазию проявить, где это не очевидно.

    Спасибо!

    P.S. Я к этому приложению никакого отношения не имею. Просто хочу катализировать креатив чуть-чуть. Те, кто говорит "я забесплатно работать не буду", могут продолжить бесцельно торчать в ЖЖ. В смысле, пусть отдыхают. Давайте чуть более позитивно на вещи смотреть.



    [1] Конечно, при проектировании интерфейсов исключительно важно знать, что значат настройки. Но в данном случае мы не имеем роскоши знать, что они значат: я не в курсе того, что значат эти настройки. Мопед не мой. Поэтому прошу проявить здравый смысл и самостоятельно придумать наиболее логичную семантику и паттерны использования представленных элементов. И на основании этого спроектировать интерфейс.

    asn1c in iPhone

    Вдогонку к блогпосту про копирайты: http://lionet.livejournal.com/31952.html

    Мой копирайт появился в iPhone.

    Когда я год назад смотрел туда, его ещё там не было. А сегодня sidentdv говорит: «смотрел копирайт на iphone, там вписан asn1c by Lev Walkin». А мы с oleyka вчера как раз ей iPhone купили, вместо сломанного девчачьего Самсунга. Так я полез в Settings → General → About → Legal, и действительно, сидит копирайт мой, с BSD лицензией.

    Приятно.

    P.S. Вот выгонят меня из JS-Kit, пойду на интервью куда-нибудь. Будут просить код написать — а я им в ответ:
    На интервью со зв
    …или нет, не так…
    — Клоуны, лицензию в своём иПхоне почитайте для начала!

    (no subject)

    Привёз домой 22-дюймовый монитор для Ольки, генератор постоянного напряжения и осциллограф, поставил рядом с машиной на дороге и позвал Ольку похвастаться. В этот момент включаются спринклеры для травы и заливают монитор напрочь. Воду из монитора слил (буквально!), поставил сушиться. Остальным приборам вроде не досталось.