Tags: tech

пакман

iTunes vs. GNUpod

Пусть ещё хоть кто-нибудь попробует привести мне в качестве аргумента превосходства iTunes над любым другим проигрывателем музыки то, что вот есть iTunes Store, и там можно покупать музыку: сразу ткну этого человека носом в форму регистрации в iTunes, где среди вариантов выбора страны Billing Address нету России. Там вообще, из вариантов-то, всего стран 15. И приписочка такая, мол, если вашей страны нету, то не судьба вам, продавать вам музыку мы не умеем.

А ещё ваш хвалёный iTunes „испортил” мне новый iPod Shuffle 2: до того как я его запустил, на iPod можно было заливать музыку при помощи GNUpod и он её проигрывал. Теперь же iPod эту музыку просто не видит/игнорирует. А диагностики-то никакой: это же Shuffle :-)

Ну, а про то, что iTunes нету под Linux я уж вообще молчу.
жирафа

[fun] DeepApple отжигает

В описании беспроводной (Bluetooth) мышки Apple:

«

Все данные, передаваемые на компьютер, шифруются по алгоритму с 128-разрядным ключом. Это гарантирует безопасность конфиденциальной информации, ведь для того, чтобы взломать подобный код, потребуется более 149 триллионов лет.

»

Клики и движения мышкой — это да, самые чувствительные данные, который у меня могут украсть. Смеюсь громко :-)

Ещё и дезынформируют про то, сколько лет потребуется взламывать код, как пить дать дезынформируют. А хотя, чего с них, убогих, взять, они ж "маркетологи".

  • Current Mood
    amused amused
  • Tags
    ,
пакман

Длинный день

Пятница была у меня длинным днём, не столько по продолжительности, сколько по насыщенности событиями. Четверг конечно был длиннее, в 7:15 мы выехали на работу и вернулись только в 20:30, но прошёл он как-то легче и незаметнее.  Пятницу мы провели в другом Сановском кампусе в Менло Парк (указатель A немного не точный, кампус прямо над ним), который Сан строил сам (в отличие от купленного и перестроенного в Санта Кларе). По сравнению с кампусом в Санта Кларе, во внутреннем дворе этого ощущается некоторая теснота.

Усталость накопленная за неделю вылилась в то что я первый раз в своей жизни чуть не заснул на совещании: я на самом деле был там совершенно лишним и обсуждавшиеся вопросы даже отдалённо меня не касалиська и не интересовали, поэтому в какой-то момент меня атаковала сонливость, глаза стали закрываться, а голова падать на стол. Помучавшись минут десять, я достал какой-то напечатанный текст и начал читать, чтобы как-то занять засыпающий мозг.

А вечером у меня было собеседование с Грегом Боллеллой, "отцом" Real-Time Java. На последней конференции JavaOne он предоставил разработчикам большую развлекуху: он со своей группой построил трек для машинок, которые управляются программно (управление — напряжение на электродвигателе), и каждый желающий мог написать программу и посмотреть, как она ведёт себя на треке на JavaOne. Сложность управления состоит в следующем: на трассе расположены датчики, которые срабатывают в том случае, если машинка находится прямо над датчиком, но соединены эти датчики так, что есть информация только о том, находится ли машинка над каким-то датчиком, но нет информации над каким. Цель управления: провести машинку по треку за минимальное время. Но если скорость перед поворотом будет слишком большой, то машинка вылетит с трассы, поэтому надо разумно ускоряться и тормозить. Так как нет информации, над каким из датчиков находится машинка, надо постоянно отслеживать информацию о замыканиях датчиков: так как известно изначальное положение машинки (перед первым датчиком), можно в дальнейшем отслеживать положение, в том случае если мы не пропускаем датчики из-за "тормозов Java": время замыкания датчика довольно короткое, меньше 5 миллисекунд, и зависит от скорости. Так как в случае задержки в выполнении (опросе датчика) программа теряет информацию о точном местоположении и управление начинает базироваться на неправильной информации о положении машинки, машинка очень быстро вылетает с трека, тем самым это hard real-time задача.

Для решения подобного типа задач и была разработана Real-Time Specification for Java (RTSJ). В ней добавлены два новых типа потоков: RealtimeThread и NoHeapRealtimeThread. Первый может использовать heap, но для него используется специальный Garbage collector с предсказуемым временем исполнения, этот тип потоков подходит для soft real-time задач. Второй тип, как нетрудно догадаться из названия, не может использовать heap (доступна только immortal и scoped память), зато он очень хорошо подходит для hard real-time задач. В случае slot-car race, для опроса датчиков нужно было использовать NoHeapRealtimeThread, который при правильной настройке разрешения таймера (кажется на JavaOne использовалось разрешение 1ms) не пропустит замыкание датчика. На самом деле в построении управления конкретно для этой задачи есть ещё довольно много хитростей: например, имеет смысл замерять время замыкания датчика (сколько циклов замкнут), чтобы определить текущую скорость, и потом, вместо простого ожидания следующего сигнала датчика для определения позиции пробовать интерполировать текущее положение исходя из скорости, длины отрезка и его "кривизны"; так как на двигатель можно подавать и отрицательное напряжение, можно тогда начинать притормаживать перед поворотами заранее, а не непосредственно после датчика, а после поворота увеличивать скорость. Конечно, такое очень сложно сделать, если нет возможности экспериментировать непосредственно с треком.

Так вот, возвращаясь к собеседованию. В Сане действует программа по менторству инженеров более опытными инженерами. Проводится она раз в год для new hires (менее 2 лет в компании) и, кажется, раз в полгода для established staff. Чтобы в неё попасть, надо подготовить рекомендации менеджеров, и, по крайней мере одного директора, заполнить опросник, в котором ты отражаешь что ты хочешь от программы. Так как "количество мест" ограничено, надо получить хорошие рекомендации и очень хорошо сформулировать цели которые ты хочешь достичь в результате участия в этой программе. Тут мне повезло дважды: мой менеджер является директором отделения и вдобавок, так как я работаю напрямую с разработчиком в Техасе и много с ним общаюсь, он помог мне переформулировать мне некоторые мои корявые фразы на английском в опроснике. Ну и третий раз мне повезло, когда меня в эту программу приняли. Следующим шагом в этой программе является составление списка из 15 (!) менторов, которых бы ты хотел для работы с тобой, и причин по которым ты каждого из этих менторов выбрал. Работать будет, конечно, только один, а такой большой список нужен чтобы избежать коллизий с другими участниками и на случай, если ментор не захочет по каким-то причинам работать с тобой в течение целого года. Составление этого списка и формулирование причин оказалось действительно сложной задачей: надо произвести полноценный research, кто есть кто, среди предлагаемых нескольких сот менторов, выбрать 15 и сформулировать почему ты их выбрал. Можно, кстати было выбрать Гослинга или, даже, Уита Диффи (привет, _yashma_ :-) ).

Собеседование с Грегом (который был первым в моём списке) прошло удачно, так что в течение года начиная с сентября он будет у меня ментором. Что это будет из себя представлять я когда-нибудь напишу. Кроме slot-car трэка Грег показал мне ещё несколько демонстрационных агрегатов в Сановском Executive Briefing Center (это то место, куда водят внешних заказчиков, чтобы импресснуть их инновациями в Сане). Один из них — инвертированный маятник (классическая задача в теории управления, мы её кажется на втором курсе с Веремеем даже рассматривали): металлическая трубка-маятник, точка подвеса которой (снизу) находится на площадке которая может двигаться горизонтально в плоскости вращения трубки. Программа, написанная на Real-time Java стабилизирует маятник в верхнем (неустойчивом) положении при помощи управления движением площадки. Трубку можно щёлкнуть пальцем, выводя из верхнего положения, и площадка тут же метнётся в сторону движения маятника, чтобы стабилизировать его. Правда, так как скорость движения площадки и доступное для движения место ограничены, область устойчивости тоже ограничена. Параллельно с процессом управления, на той же виртуальной Java машине запущено проигрывание видеоролика, которое даже не тормозит. В приложении ещё есть специальная кнопка, при нажатии на которую программа начинает генерировать кучу мусора в heap'е и запускает после garbage collector. При этом видео начинает ощутимо тормозить, а вот процесс управления работает как ни бывало с тем же разрешением в 5ms. Вобщем, довольно доходчиво можно на таком примере объяснять, что такое real-time приложения. Есть ощущение, что давно уже пора на нашем факультете про всё это рассказывать в обязательной программе. А то как-то далеки мы от жизни, несмотря на то что математика у нас "прикладная" и процессы у нас "управления".

пакман

Bluetooth headset is finally working with my linux box

Ну вот, полторы ночи сборки/настройки каких-то невнятных (пока, для меня) программ, лёгкого ковыряния исходников ядра с перекомпиливанием модулей, и у меня заработала Bluetooth'ная гарнитура с компьютером, теперь можно нормально звонить с ноутбука.

Осталось только легонько обработать надфилем корпус Bluetooth USB dongle'а (хе-хе), и он влезет в специальный внутренний отсек ноутбука и будет там жить.
пакман

про нестандартные применения планшета

25,83 КБ
Попросили не так давно решить диффур. За неимением сканера, вместо листа бумаги решил писать на планшете (решение надо было как-то передать). С некоторой сноровкой это, оказывается, вполне удобно.
пакман

eAtlas search in Mozilla

Давно собирался сделать search-plugin для Мозиллы/Фаерфокса, позволяющий напрямую из search-box'а искать на карте адрес (СПб, Москвы). И вот только сейчас, волевым решением, заставил себя это сделать.
Collapse )
пакман

[tech] Google+Jabber=...

Good news, everyone! © Futurama

Как и предсказывалось, Гугл запустил у себя jabber-сервер. Правда, как я ни пытался, соединиться мне с ним с gmail'овскими креденшиалами при помощи Миранды не удалось. Что ж, посмотрим. Приятно, что XMPP начнёт быстрее распространяться и вытеснять проприетарные протоколы (at least, I hope so).

update: bad news, everyone!
Общаться можно только с народом на этом же сервере. Хм, а для чего этот сервис тогда нужен? Странный уж очень этот world domination от Google. Типа "мы тут почтовый сервак модный у себя установили... но письма посылать вы можете только клиентам этого сервака".