Home

воскресенье, 19 сентября 2010 г.

От какао к кофе

Так получилось, что мои познания JavaScript остановились на уровне "весьма посредственно". Написать нечто вроде

document.getElementById('xxx').style.display = 'none' ;

или даже

$('td:eq(2)', nRow).addClass('even') ;

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

А когда я увидал творение ребят из 280North - я вообще впал в благоговейный экстаз.

cappuccino-icon-256.png

Если кратко, то Cappuccino - это фреймворк, позволяющий создавать приложения класса "Десктоп", но для веба.

Cappuccino не первый фреймворк такого класса, достаточно вспомнить, например, Sproutcore, на котором построен сервис MobileMe.

Но вся прелесть Cappuuccino не в том. Авторы пошли дальше - они создали свой язык программирования - Objective-J. Ничего не напоминает? Смотрим пример:

- (int)numberOfRowsInTableView:(CPTableView)tableView {
return [[info contacts] count] ;
}

Ага, ага. Objective-C и Cocoa в своей реализации. Написано нечто вроде транслятора с Objective-J (на выходе получается набор objj_msgSend(..), причем все это на JavaScript. На Objective-J портирована куча Cocoa классов, теперь они не NS.. а CP..

Более того, написана утилита nib2cib Ага, ага. Графический интерфейс можно рисовать в Interface Builder, затем в процессе сборки проекта при помощи jake (опять аналог make на javascript) это все транслируется и потом используется и работает.

Выпущены даже набор шаблонов для XCode, в котором можно создавать и собирать проекты на Cappuuccino.

В первый момент в браузер клиента загружается достаточно большой объем скриптов, но зато потом в делов вступает AJAX и JSON, с которыми в Cappuccino все очень неплохо, и страницы больше не пергружаются. Все происходит в браузере. Поддержки скриптов на стороне сервера не требуется.

Проект постоянно развивается, добавляется поддержка новых CP классов, исправляются ошибки. Единственно что настораживает факт покупки проекта компанией Моторолла в августе этого года.

Что из этого получится - непонятно, но пока у вас есть шанс попробовать.

Недавно я создал страничку контактной информации на mobile.me, фреймворк превращает "базу данных"

{
	"fullname":"Павел Цыбулин",
	"nickname":"Программист со знанием компьютера",
	"contacts":[
		{
			"contactType":"phone",
			"label":"телефон",
			"title":"+380 (91) 946-29-45",
			"href":"tel:+380919462945"
		},
..
		{
			"contactType":"im",
			"label":"skype",
			"title":"tsybulin",
			"href":"skype:tsybulin?call"
		},
..
	]
}

Вот в такой вид.
Ой

воскресенье, 5 сентября 2010 г.

Две раскладки в одном флаконе

Началась сия история с одноименной статьи на Хабре, в которой описывалось решение по слиянию двух похожих раскладок клавиатуры в одну для Windows. В комментариях приводилась и ссылка на похожее решение для Mac OS X, когда в украинскую раскладку добавлялись русские символы, вводимые по комбинации с Option.

-Ага, подумал я, отложил закладку куда-то далеко в мозг и благополучно забыл.

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

Раскладку я добавил, но в процессе осознал, что переключаться сквозь три раскладки - Английская, Русская, Украинская чертовски неудобно, особенно с учетом того, что дополнительных символов нужно всего ничего: і, ї, ґ, є, вот только они сидят на аналогичных русских клавишах и, ы, э, ё

Можно было взять упоминаемую на Хабре Ukranian unicode, но у нас ситуация диаметрально противоположная - нужно внедрить украинские символы в русскую раскладку, ибо русская используется гораздо чаще украинской.

Принято было волевое решение: скрестить бульдога с носорогом самостоятельно. Так родилась на свет Russian uni

russian_uni.gif