В блоге:

2008-10-31

GoogleMaps Location

Просто резюмирую доступную информацию относительно определения положения в мобильной версии GoogleMaps без GPS.

Определение заключается в получении координат по значениям MCC, MNC, LAC и CellID через сервер http://www.google.com/glm/mmap.

MCC - код страны (для России - 250).
MNC - код сети (МТС - 01, Мегафон - 02, Билайн - 99 и т.п.)
LAC - код локальной зоны (т.е. совокупности базовых станций, обслуживаемым одним контроллером)
CellID (CID) - идентификатор, состоит из номеров базовой станции и сектора.

База на сервере динамическая, реально строится и модифицируется по данным, которые предоставляют пользователи мобильной версии GoogleMaps с GPS.

Протокол взаимодействия с сервером Google не разглашает, но его вскрыли. Примеры работы с сервером через этот протокол:
На Python: http://forum.netmonitor.ru/about4470-0-asc-15.html#37336
На Python для S60: http://blog.jebu.net/2008/07/google-cell-tower-mapping-with-python-on-s60/
На C#: http://maps.alphadex.de/datafiles/fct0e1b11782832f02.cs
На Java для Android OS: http://davanum.wordpress.com/2007/12/01/android-much-better-geo-location-from-just-cellidlac/

Этого достаточно для написания собственного кода работы с сервером.

Да, стоит отметить, что ключевыми являются значения LAC и CellID. MCC/MNC важны только при наличии в базе на сервере нескольких значений пар LAC, CellID.

Для проверки я накидал программку, посмотрел на реальных значениях и сравнил с показаниями мобильной версии GoogleMaps. Все совпало.

Для получения реальных значений поставил на Nokia S60 FieldTest (хакерски довольно). Хотя можно и без этого. Если мобильная версия GoogleMaps умеет на телефоне определять положение без GPS, то можно пойти в "Справку", там вызвать "Общие сведения" и в самом конце информации будет строка вида myl:MCC:MNC:LAC:CellID

2008-10-29

Мерсрв

Народная японская забава:





А это Honda CR-V в мегатюнинге "хочу быть мерседесом".


Изображения из альбомов:

Корчевательный журнал машет ручкой

Все таки вынесли из списка ВАК тот корчевательный журнал
===
Решение президиума об исключении журнала из Перечня изданий
Решением президиума ВАК от 17 октября 2008 года журнал "Журнал научных публикаций аспирантов и докторантов" исключен из Перечня ведущих рецензируемых научных журналов и изданий, в которых должны быть опубликованы основные научные результаты диссертаций на соискание ученых степеней доктора и кандидата наук.
===
http://vak.ed.gov.ru/ru/news/allnews/index.php?id4=1163

2008-10-27

O-roo-guuu!

Эзотерических языков программирования существует весьма много. Некоторые из них известны, а некоторые - совсем нет. Один из достаточно полных списков эзотерических языков программирования расположен здесь: http://esolangs.org/wiki/Language_list, там же есть краткие описания.

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

Среди всех языков мне показались интересными языки, построенные на концепции очереди. Основных их нашлось два: Q-BAL и Oroogu. Q-BAL более сложный, а вот Oroogu имеет весьма простой синтаксис. Но Oroogu настолько малоизвестный, что описание пришлось добывать через http://web.archive.org. Там же были добыты примеры и даже исходные тексты (на Си) компилятора. Идея, заложенная в Oroogu мне понравилась, поэтому я решил вкратце рассказать об основных особенностях этого языка.

Итак, язык программирования Oroogu. Автором языка является Georg Kraml, цель создания языка неизвестна. Основными типом данных в Oroogu является очередь. Работа с очередью происходит в обычной манере: можно добавлять элементы в конец очереди, можно извлекать из начала. При этом механизма доступа по индексу к произвольному элементу очереди нет.

Очереди могут включать в себя только целые числа. Точнее говоря, специально для реализации Ninety-Nine Bottles of Beer была добавлена поддержка строк, но в ограниченном виде (нельзя манипулировать содержимым строк).

Конструктор очереди выглядит просто: (1, 3, 5) создает очередь с элементами 1, 3 и 5. Возможно использование оператора .. для заполнения промежуточных значений. Так, например, (1, 3, 5 .. 7) будет содержать целые числа: 1, 3, 5, 6, 7. Этот оператор работает и в сторону уменьшения: (10 .. 1) будет содержать числа в убывающем порядке от 10 до 1 включительно.

В Oroogu есть переменные, но они могут содержать только очереди. Имена переменных не могут начинаться с цифры, длина их не может быть больше 8 символов. Переменные, начинающиеся с букв d и e, имеют особенность: после окончания работы программы их значения будут выданы в stdout и в stderr, соответственно. Переменные не нуждаются в определении.

Выражений в Oroogu не очень много.

Выражение присваивания d = c полностью копирует очередь c и присваивает d. Справа могут быть как переменные, так и конструкторы очереди. Слева допускается указание нескольких переменных через запятую:

var = (1, 2, 3)
i = var
k, m = i


После выполнения все упомянутые переменные (а именно var, i, k, m) будут содержать очереди (1, 2, 3).

Выражение объединения d / c объединяет очереди d и c и результат присваивается d.

var1 = (1, 2, 3)
var2 = (4 .. 6)
var1 / var2


В результате var1 будет содержать (1, 2, 3, 4, 5, 6)

Аналогично оператору присваиванию слева допускается указание нескольких переменных.

Выражение пересечения d \ c удаляет из d элементы c, если они есть.

v \ (2) удаляет 2 из очереди v, если 2 там есть
v \ v полностью очищает очередь v

Доступ к данным очереди и арифметика могут осуществляться только в конструкторе очереди. Доступ к значению из начала очереди осуществляется по имени переменной, в которой эта очередь находится. Запись var извлекает значение из начала очереди var и подставляет его в конструкторе. Запись <var просто подставляет значение из var, не извлекая его из очереди. Из арифметических операций поддерживаются традиционные +, -, /, * и оператор возведения в степень ** и оператор остатка от деления (либо %, либо mod - в разных документацих Oroogu указаны разные варианты).

(1, 2, 1 + 2) определяет очередь со значениям 1, 2, 3.

var = (1, 2, 3)
i = (var - 1, <var, var)


В результате var будет (3), а i - (0, 2, 2).

Стоит отметить, что выражения var = f и var = (f) имеют разный смысл. Первое выражение создает полную копию f, а второе выражение - извлекает из f первый элемент, который будет единственным значением очереди i.

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

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

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

Пример: i = (1..100) (dump / (<i * i)) собирает в переменной dump квадраты чисел от 1 до 100 включительно, после завершения программы dump (поскольку начинается с буквы d) будет выведен в stdout.

Заголовок цикла i = (1..100) присваивает переменной i очередь, содержащую значения от 1 до 100 включительно. Эта же очередь и будет очередью заголовка цикла. Поскольку первоначально она содержит элементы, то выполняется тело цикла: (dump / (<i * i)). В теле цикла (<i * i) берется значение из начала i, но без извлечения его из очереди, затем берется опять это же значение, но с извлечением. Эти значения (а они равны) перемножаются. Затем dump объединяется с получившейся очередью из одного элемента. Поскольку в теле цикла есть извлечение из очереди i, то цикл конечный. Он пройдет по всем значениям i от 1 до 100, после чего завершится.

Таковы вкратце основные конструкции. Еще стоит отметить, что в Oroogu нет функций, но есть возможность включать куски кода на стадии компиляции из файла.

Важным является то, что язык Oroogu является полным по Тьюрингу. Автор языка доказывает это неформально через сравнение с Т-полным языкомFloop.

Еще примеры.

Вывод Hello, world!:
d / ("Hello, world!")

К очереди d добавляется строка "Hello, world!", после завершения работы значение очереди d выводится в stdout, поскольку имя начинается с буквы d.

Вывод первых 10 чисел Фибоначчи:
buf = (0, 1)
i = (1 .. 10) (d, buf / (buf + <buf) null = (i))


Первоначально buf содержит очередь (0, 1). Затем организуется цикл. В заголовке цикла определяется очередь i, которая первоначально будет содержать значения от 1 до 10 включительно.
В теле цикла конструкция (buf + <buf) извлекает из buf значение и прибавляет к нему следующее значение из buf (но уже не извлекая его). Получившаяся очередь из одного элемента добавляется к очередям d и buf. Выражение null = (i) служит для простого извлечения значения из очереди i (тем самым исключая зацикливание и организуя 10-кратное выполнение тела цикла).
Таким образом, в d накапливается результат (все подсчитанные числа Фибоначчи), а в buf всегда держатся два значения, второе из которых - это последнее подсчитанное на данной итерации число Фибоначчи, а первое - предыдущее значение, точнее значение, которое будет использовано для вычисления следующего числа Фибоначчи.

Не совсем корректный вариант "Ninety-nine Bottles of Beer":
b = (99 .. 1)
(
d / (<b, "bottles of beer on the wall, ")
d / (<b, "bottles of beer.\n")
d / ("Take one down and pass it around, ")
d / (b - 1, "bottles of beer.\n\n")
)


Простой пример, в котором организуется цикл по перебору значений от 99 до 1 включительно. В теле цикла несколько раз используется первое значение из b без извлечения (конструкция <b), а затем под завершение тела цикла первое значение извлекается для организации последовательного прохождения по всем значениям b. Особенностью этого примера является разве что использование строк.

Таков, в общем, язык программирования Oroogu. Не стоит относится к нему как к языку, который может быть большим, чем простая игрушка или демонстрация идеи. Но мне он показался забавным.

PHPHPHPHP

===
Thx to the initiative of Scott and Steph we had an IRC discussion with
several code developers. The result is that we have decided to go with
backslash as new separator for namespaces. The IRC log that
illustrates why we in the end decided to go with changing the
separator and the final decision on backslash can be found on the wiki
[1].
...

As the patch is still under development it is yet unclear how this
will affect the scheduling PHP 5.3.
===
http://news.php.net/php.internals/41374

Я о PHP всегда был плохого мнения, но не подозревал что у них настолько все ужасно. Задумайтесь: авторы популярного (ха-ха!) языка в 2008 году обсуждают символ для отделения пространства имен. С добрым утром, господа!

2008-10-26

Про кризис

Предлагаю "кризис" писать как кризис™.

Народное творчество

Сегодня видел, как ушлая молодежь из дорожного знака "Бульвар Гагарина" путем замазывания букв сделала надпись "Бу Гага".

2008-10-25

Забавные вещи века

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

Смахнул со стола CDMA-модем, от чего тот улетел на пол. Удивительно, но модем, который выдержал удар молотка, полет со стола перенес похуже: перестал заряжаться аккумулятор. Пришлось отверткой ковырять контакты. Заработало.

2008-10-23

google maps

А вот интересная тема по хакерскому доступу к данным гугла (координаты по net, lac, rnc): http://forum.netmonitor.ru/about4470-0-asc-0.html

GeolocationAPI

Google GeolocationAPI: http://code.google.com/p/gears/wiki/GeolocationAPI
Хмммммммммм...

Путепровод на M55

Хорошая новость: на федеральной дороге М55 открыли путепровод через Ж/д пути в районе станции "Глубокая" взамен старого переезда. Во-первых, старый переезд располагался в низине, и к нему вел довольно резкий спуск, а потом подъем, которые даже летом опасны, не говоря уж о гололеде. Во-вторых, движение поездов там весьма активное, потому приходилось довольно часто стоять на переезде. Да и вообще, не раз там происходили аварии.

Теперь дорога стала быстрее и безопаснее, чем я рад.

2008-10-22

Флешка сказала привет

Флэшка Transcend V10 на 16ГБ сказал привет и отказалась работать.
Попытки реанимировать при помощи AlcorMP приводили к ошибке 30700. Пришлось задать в настройках AlcorMP руками одноканальный режим. Низкоуровневый формат прошел, но, естественно, осталось только 8ГБ. Но хоть это, ибо гарантийный талон валяется неизвестно где.

2008-10-21

онтошмар

Появилась идея создания эзотерического языка запросов к онтологиям. Название будет соответствующее: ontomare.

2008-10-19

Гугл замахивается на форумы?

Заметил, что в результатах поиска google стал для ссылок, ведущих на форумы, показывать дополнительную информацию. Например: "Сообщений: <количество>", "Авторов: <количество>", "Последнее сообщение: <дата>". Возможно такое уже давно, но заметил только сейчас. Т.е. явно идет обработка информации с форумов с учетом структуры сообщений. Увидим, чем это грозит в дальнейшем. Как для ищущих, так и для владельцев форумов.

2008-10-18

Немного историческое

Нашел "прайс-лист" сотовых телефонов одной иркутской фирмы. Год примерно 2000-2001. Забавно.







Изображения из альбомов:

2008-10-17

Автомагнитолы

Вообще, конечно, автомагнитол (т.е. умеющих работать с аудиокассетами) сейчас конечно осталось не так много, а среди новых - совсем мало. Но по привычке все равно хочется называть эти агрегаты автомагнитолами. Можно называть их более правильно или общим термином "головное устройство". Или уточненным "CD/DVD/MP3-ресивер", но, как говорится, "привычка - не рукавичка..."

2008-10-16

Sanyo

Просто памятка: на некоторых двухдиновых "автомагнитолах" Sanyo время настраивается через DISP+"громкость вверх" и DISP+"громкость вниз". Кое-как нашел комбинацию без документации.

2008-10-15

Effective Java, Second Edition

Книга "Effective Java, Second Edition" от Joshua Bloch. Оформлена в виде набора советов, объединенных по темам. Отражает современное состояние Java, т.е. используются enum, аннотации, generics. Ни в кое мере не является заменителем документации: бОльший упор на концепцию использования тех или иных конструкций.

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

В целом книга хорошая.

2008-10-14

Конструкторам

==
Постановление от 10 октября 2008 г. N 745 О временной ставке ввозной таможенной пошлины в отношении кузовов отдельных видов транспортных средств

Правительство Российской Федерации постановляет:
1. Утвердить сроком на 9 месяцев ставку ввозной таможенной пошлины на кузова для транспортных средств товарной позиции 8703, прочие (код ТН ВЭД России 8707 10 900 0), содержащиеся в Товарной номенклатуре внешнеэкономической деятельности Российской Федерации, утвержденной постановлением Правительства Российской Федерации от 27 ноября 2006 г. # 718 "О Таможенном тарифе Российской Федерации и товарной номенклатуре, применяемой при осуществлении внешнеэкономической деятельности", в размере, равном 15 процентам таможенной стоимости, но не менее 5000 евро за 1 штуку.
Для целей применения ставки ввозной таможенной пошлины товары определяются исключительно кодом ТН ВЭД России, наименование товаров приведено только для удобства пользования.
2. Установить, что действие пункта 2 постановления Правительства Российской Федерации от 22 октября 1997 г. # 1347 "Вопросы таможенно-тарифной политики" не распространяется на ставку ввозной таможенной пошлины, утвержденную настоящим постановлением.
3. Настоящее постановление вступает в силу по истечении одного месяца со дня его официального опубликования.
http://www.government.ru/content/governmentactivity/rfgovernmentdecisions/archive/2008/10/10/6345332.htm
===

"Конструкторам" привет!

2008-10-09

LPD

Обзавелся наконец-то LPD-радиостанциями (LPD - это маломощные станции на 433МГц). Модель: Midland GTX500. Интересно, что продавцы активно взамен впаривают G7, вроде как продолжение GTX400, но с поддержкой еще PMR.

С родными аккумуляторами решил не связываться, практичнее использовать AA-аккумуляторы. Но вылез интересный момент. Как оказалось, комплект Ansmann Photo 2400 очень заметно проигрывает по времени работы какому-то дешевому Samsung 2100, хотя покупались они пару лет назад одновременно. Что-то сильно стали AA-аккумуляторы Sanyo и Ansmann разочаровывать.


Еще по этой теме:

Про смекалку

Ха-ха. Человек выехал на Suzuki Jimny в бревно, сломал продольный рычаг (фиксирующий передний мост от продольных перемещений). Вместо рычага приколхозили рейку от домкрата ХайДжек и поехали дальше. Отлично, я считаю.
http://www.suzuki-club.ru/forum/showpost.php?p=396396&postcount=1 (с фото)

2008-10-08

Подсветка домена в адресной строке

Если нравится способ показа адреса в адресной строке Google Chrome с выделением домена черным цветом, а остальных частей URL - серым, то для Firefox есть соответствующий адд-он: https://addons.mozilla.org/en-US/firefox/addon/4014

По умолчанию он, правда, поддомены показывает серым, но это в настройках отключается. Есть и пара дополнительных вещей (переход по части адреса).

E-ee-ee

Все таки корпус Eee PC 900 явно менее практичный, чем 701 из-за своей блестючести. Всего-то ничего использовал, а уже заметные потертости на крышке и аккумуляторе. На 701 был более матовый и устойчивый к потертостям корпус.

Посмотрел живьем Eee PC 901. Настораживает еще большие, чем у 900 размеры. Особенно заметно, если сравнить с 701. 901 какой-то весь пухлый. А так нормально. Очень уж хочется продолжительного времени работы, 701 и 900 в этом плане совсем уж слабые.

Еще посмотрел Acer Aspire One 8.9". Вообще не понравился. Здоровый, с бликующим (в соответствии с современным тенденциями) экраном, да еще и Acer. Вычеркиваем.


Еще по этой теме:

2008-10-06

GoogleDocs

Обновился редактор электронных таблиц в GoogleDocs. Интерфейс стал теперь ближе к текстовому редактору GoogleDocs (главное меню, тулбар и т.п.).

2008-10-05

GlobalSat

Пользуюсь bluetooth gps-приемником BT-359, но его работа в последнее время не очень нравится. В основном претензии к холодному старту. Очень медленный и ненадёжный старт. Если делать холодный старт при движении, то задержка определения координат может достигать многих десятков минут, а в отдельных случая вообще не получается определить координаты даже через очень долгое время ожидания. Такое чувство, что прибор сходит с ума и замыкается в себе. Иногда помогает вытаскивание аккумулятора на время. И вообще, ощущение, что сильно упала чувствительность. Иногда в весьма тепличных условиях видит от силы 3 спутника. Не очень нравится такое поведение.


Полез я на сайт globalsat в поиска полезной информации по этому вопросу. Ничего полезного не нашел, но наткнулся на их сервис GPSHome. Фактически, это сервис поддержки их GPRS/GPS трекеров TR-серии, но дается возможность потестировать в связке мобильный телефон с GPRS + bluetooth GPS-приемник при помощи Java ME программки.

Вообще, подобных сервисов довольно много, но посмотреть этот сервис было тоже интересно.

Java ME программа довольно простая и дубовая. Ничего не умеет кроме показа основных данных и передачи их на сервер. Увы, оказалось, что наименьший период передачи данных - 30 секунд. Многовато для отдельных задач. Зато данных передается довольно мало, экономится трафик. В автоматическим режиме, конечно, оставлять эту Java ME программу работать ненадежно, даже если решить проблему с питанием телефона и GPS-приемника.

Веб-интерфейс просмотра данных тоже простой. Фактически используются google maps карты и спутниковые снимки с наложением поверх данных: либо последнего положения, либо записанных треков (с выбором временного промежутка). Для треков выводятся точки с возможность просмотра кратких данных по ним (время, скорость).

Для трекеров есть поддержка управления через SMS, через некий "конструктор SMS", но проверить не удалось.

Какие-то выводы делать не буду, в основном GPRS/GPS трекеры мне интересны в применении к автоохранным системам, а здесь довольно простая обычная система. Да и проверять надо с их TR-трекерами, а не на суррогате в виде мобильного телефона.

2008-10-01

Корчеватель

Вот в гуглокеше та статья про "Корчеватель", которую без зазрения совести напечатали в коммерческом, но из "списка ВАК" журнале: http://64.233.183.104/search?q=cache%3Ahttp%3A%2F%2Fjurnal.org%2Farticles%2F2008%2Fart.php%3Fart%3Dradio14.htm

Asus Eee PC

Что на 701, что на 900 Asus Eee PC зверский разряд аккумулятора в выключенном состоянии. Примерно за одну-две недели садится в ноль, и Eee PC не может даже включится.

Это первое.

А второе, замечаешь после долгого неиспользования Eee PC 701/900, что корпус довольно ощутимо греется во время работы. Все таки мобильный целерон та еще гадость.

И вообще, хочется трекпоинт на такой мелком ноутбуке, а не точпад.


Еще по этой теме:

Архив блога