Pull to refresh
10
0
Send message

Взаимодействие между web-приложениями через Web Intents

Reading time 3 min
Views 3K
Прим.: Обычно не занимаюсь переводами, но новость проскочила интересная.

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

В Android OS эта проблема решается при помощи Intents[1] — архитектуры, позволяющей взаимодействовать компонентам одного или нескольких различных приложений. По этой схеме, клиенсткое приложение создает запрос (к примеру, разослать что-нибудь) и задает параметры, которые будут переданы другому приложению-сервису. После этого пользователю предоставляется список приложений, которые регистрировали свою возможность обрабатывать данный тип intent-запроса. Затем выбранное пользователем приложение запускается в новом контексте, и ему передаются параметры, переданные клиентом в некоем, заранее определенном для конкретного типа intent, формате.

На данный момент мы прилагаем большие усилия для создания аналогичной системы для шеЬ: Web Intents. Эта система предоставит те же удобства, что и Intents для Android, но будет адаптирована для web-приложений.

Читать дальше →
Total votes 31: ↑30 and ↓1 +29
Comments 20

Appcelerator покупает Aptana

Reading time 2 min
Views 1.6K
Компания Appcelerator, известная своим продуктом Appcelerator Titanium, приобрела компанию Aptana, которая разрабатывает Aptana Studio, IDE построенную на базе Eclipse, веб-сервер Jaxer, а также предоставляет услуги облачного хостинга.

На данный момент, известно следующее :

Читать дальше →
Total votes 29: ↑16 and ↓13 +3
Comments 8

Синхронизация асинхронных вызовов. WaitSync

Reading time 3 min
Views 8.6K

Задача


Допустим вы хотите выполнить два или более AJAX запроса на сервер и вызвать функцию после того, как все они будут закончены.

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

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

Собственно, этим и занимается мой небольшой класс WaitSync =)

WaitSync.js


Пользоваться элементарно просто:

1. Создаем объект типа WaitSync, передав в конструктор callback функцию, которая будет вызвана после того, как отработают нужные задачи.
	var vulture = new WaitSync(function () {
		console.debug('Start eating: ', arguments);
	});


2. Вместо простого
	$.getJSON(
		'savannah/get_prey', 
		function (data) {
			console.log('... prey found: ' + data);
		}
	);
	
	$.getJSON(
		'savannah/get_other_predators', 
		function () {
			console.log('... predators are done eating');
		}
	);


«заворачиваем» задачи в метод .wrap
	$.getJSON(
		'savannah/get_prey', 
		vulture.wrap( 
			function (data) {
				console.log('... prey found: ' + data);
			}
		)
	);
	
	$.getJSON(
		'savannah/get_other_predators', 
		vulture.wrap(
			function () {
				console.log('... predators are done eating');
			}
		)
	);


3. Все =) Как только будут выполнены оба AJAX запроса, стервятник начнет есть.

Как это работает?
Total votes 62: ↑46 and ↓16 +30
Comments 63

Темная цветовая палитра Eclipse при помощи Compiz Color Filter

Reading time 2 min
Views 7K


Вот такая цветовая схема получилась у меня в конечном итоге.

Лично я тяготею к белым буквам (ну и зеленым, конечно) на черном фоне. Особенно в темноте читать легче и не так бьет по глазам.

К сожалению данное решение приемлимо лишь для тех, кто пользуется Gnu/Linux или другой ОС, к которой поставляется оконный менеджер Compiz.

Читать дальше →
Total votes 21: ↑12 and ↓9 +3
Comments 16

Женщина, попавшая в аварию, судится с Google

Reading time 1 min
Views 567
Некая Лорен Розенберг (Lauren Rosenberg) судится с Google из-за того, что маршрут расчитанный Google Maps на ее смартфоне Blackberry вывел ее на автомагистраль, где ее сбила машина. Размер иска к интернет-гиганту должен покрыть ее медицинские расходы $100,000. С водителем сбившего ее автомобиля, как понимаете, она тоже судится. (Думаю, она и заявку на премию Дарвина тоже подала).

И хотя Google Maps выводит предупреждение о том, что пешеходные маршруты находятся в стадии бета-тестирования и порой показывают маршруты без пешеходных переходов и тротуаров, оно не отображается на мобильных устройствах. Вряд ли бы это помогло, хотя и сняло бы ответственность с Гугла.

Под катом кликабельная картинка с машрутом
Total votes 65: ↑61 and ↓4 +57
Comments 57

XAMPP on Linux + Xdebug (Linux 64bit)

Reading time 3 min
Views 6.9K
Итак, сегодня мне удалось поставить XDebug на XAMPP for Linux. Если у вас 32-битный Линукс, можете не читать оставшийся текст, для вас есть простое решение, и не одно, которое можно с легкостью найти в Сети.

О безумных благах дебаггера для ПХП даже не нужно рассказывать. На 64-битной висте/виндоус7 хдебаг никак не хотел работать (обваливалась виста; для семерки не было скомпиленной версии библиотеки)

Для тех, кто не знает:
XAMPP — пакет программ из apache+mysql+php+perl+proftpd+…
XDebug — библиотека для РНР. Позволяет отчищать от лажи скрипты на РНР. (В основном используют вкупе с IDE, например Eclipse+PDT. Позволяет расставлять брейкпоинты, отлаживать пошагово и смотреть содержимое переменных)

Если вы попали сюда из поиска, то вас мало интересуют мои приключения и поиски, поэтому сразу к делу.

Update: Дорогие будущие читатели, эта статья для вас, если:
* Вам часто нужно переключаться между разными конфигурациями веб-сервера (напирмер PHP4/5.2/5.3) или вы по другим причинам пользуетесь XAMPP под Линукс.
* Вам нужен XDebug
* У вас 64-битный Линух
* К моменту когда вы начнете читать этот пост не существует 64битного ХАМРР.

Остальные, можете не читать. Я не сравниваю ХАМРР с другими существующими решениями, просто он у меня есть, я с удовольствием пользуюсь. Я покопался в сети и не нашел решения для моей проблемы, поэтому решил поделиться с вами тут.

Читать дальше →
Total votes 15: ↑5 and ↓10 -5
Comments 10

Идет AJAX загрузка. Подождите…

Reading time 1 min
Views 1.2K

Обычно


… для того, чтобы показать пользователю, что на фоне веб-приложения идет загрузка используется анимированная гифка вроде этой:

image

Типичный подход при этом:
1. показать крутящуюся гифку в углу или где-нибудь на видном месте
2. начать загрузку (XHttpRequest и Ко)
3. когда загрузка заканчивается, убираем картинку.

Идея


Использовать анимацию курсора для отображения занятости приложения.

Скажем, в jQuery для этого достаточно выполнить:
$("*").css("cursor", "wait");

Вернуть курсоры:
$("*").css("cursor", "");

Данный сниппет поменяет состояние курсора над всеми элементами. Однако, почему бы и не ограничиться каким-нибудь конкретным объектом?

$(".элементы_которые_грузятся").css("cursor", "wait");



Плюсы


* Никаких изменений в структуре разметки
* Не задействовано никаких внешних элементов (можно, правда, использовать собственные *.cur файлы. Достоверный источник сообщает, что эта фича поддерживается всеми современными браузерами)
* Весьма интуитивно само по себе

Минусы


* Выглядит, как будто завис браузер (но если использовать нестандартный курсор, вполне отличимо)
* В разных ОСях выглядит по-разному (кстати, это и минус и плюс)

P.S.: пока искал прелоадер, случайно нашел сайт: www.loadinfo.net. Там можно сгенерить себе красивый прелоадер =)

Edit:
Вот, например, на подобной штуке, это выглядело бы очень уместно:
www.extjs.com/deploy/dev/examples/desktop/desktop.html

Edit2:
Вот этот курсор, собственно, даже лучше подходит, чем «wait»:
$("*").css("cursor", "progress");
Total votes 30: ↑15 and ↓15 0
Comments 20

PHP vs MySQL. У кого время быстрее?

Reading time 2 min
Views 940
Не-не, тут речь не о производительности, а о самых обыкновенных часах =)

Как-то раз увидел в PHP что-то вроде
$date = mysql_result(mysql_query("SELECT CURRENT_TIMESTAMP"), 0, 0);


Кажется, на говнокоде дело было…

Посмеялся и забыл. Потом перелез с винды на убунту и вот вчера произошло нечто интересное =) MySQL и PHP в XAMPP (LAMPP) вернули разное текущее время!

print(date('Y-m-d H:i:s'));
// 2009-06-20 8:00:00

print("\n", mysql_result(mysql_query("SELECT CURRENT_TIMESTAMP"), 0, 0));
// 2009-06-20 15:00:00


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

Выход 1. Подогнать системное время линукса под локальное


1. Установить время на текущее.

user@server:~$ sudo date -s 12:00

2. Сделать системное время локальным:

user@server:~$ sudo /sbin/hwclock --systohc --localtime

3. Синхронизировать локальное и системное время:

user@server:~$ sudo /sbin/hwclock --hctosys --localtime

4. Перезагрузить компьютер при необходимости. Ну в моем случае, нужно было просто перезагрузить XAMPP/LAMPP

user@server:~$ sudo /opt/lampp/lampp restart

Выход 2. Подогнать часовой пояс для MySQL


Предположительно (т.к. меня удовлетворило первое решение) здесь:
dev.mysql.com/doc/refman/5.1/en/time-zone-support.html

Выход 3. Переехать в Лондон


Но поскольку там есть летнее время, то данное решение работает лишь 6 месяцев в году. А вот у алжирских сисадминов такая проблема никогда, наверное, не возникала =)
Total votes 20: ↑10 and ↓10 0
Comments 11

JavaOne 2009, конференция

Reading time 4 min
Views 476
С 1 по 5 июня в Сан Франциско проходила конференция JavaOne.

Удивительно, что на Хабре об этом ни слова! Возможно это потому, что за Джавой с точки зрения веб-разработчиков закрепились сервлеты и JSP (а может просто потому, что на хабре Java не очень популярна).

А ведь там было на что посмотреть, было что послушать, было с кем поговорить и было что потыкать! Ну и разумеется, памятные сумки, майки и кепки =)

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

Если вам это было бы интересно, вы все еще можете зацепить небольшой кусочек:
java.sun.com/javaone
и посмотреть видеозаписи с основных заседаний (http://java.sun.com/javaone/2009/general_sessions.jsp)

На конференции много говорили о
Cloud platforms (облаках и всем что с ними связано)
Free & open (опенсорсе)
Mobile development (мобильниках)
Operating systems and platforms (операционках)
RIA and scripting ( небедных интернет приложениях и скриптинге)
и о будущем джавы и ее последователях

О модности cloud платформ можно узнать именно на таких конференциях. «Облака», символизирующие что-то большое белое и пушистое, но не гигантскую крысу-альбиноса, на слуху почти везде. Концепция замены датацентров на гибкие cloud-решения обсуждаются как минимум в двух аудиториях. В этом секторе в основном доминируют
  • Amazon EC2 (их представителей не видел, хотя были другие ребята с Амазона)
  • Google Apps
  • Microsoft Azure
  • Sun Cloud Platform

Мне удалось побывать на одной лабе по Sun Cloud Storage, где можно было самолично написать небольшую прогу, которая оперирует с файлами на Sun Cloud Storage (к слову, с точки зрения API, совместимому с Amazon S3).

Что касается «облачных» преимуществ для разработки веб-сервисов и приложений, основной упор ставится на
  • гибкость (хочешь плюшку — возьми с полки),
  • масштабируемость (плюшки уменьшаются и увеличиваются в размерах по требованию)
  • и экономность (платите только за откушенную часть плюшки)


Как выяснилось, Джава идет на встречу и другим языкам программирования. Проект Da Vinci Machine позволил портировать другия языки программирования на платформу Java. Примечательно, что jRuby уступает по производительности лишь последней версии Ruby 1.9.

Кстати, если, как и я, считаете, что на Java нужно писать слишком много кода для выполения простых задач, попробуйте Groovy!

Ну а теперь самое интересное!

Если вы думаете, что под RIA платформами всегда будут подразумеваться Flash, Flex и Silverlight, а Java будет представлена лишь старыми «добрыми» апплетами, обломитесь! На этой конференции анонсировали релиз JavaFX 1.2.

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

Что такое JavaFX в двух словах без лишних терминов? Это платформа (язык + то, на чем она работает) с возможностью создания красивых графических приложений =) И поскольку он работает на той же JVM, можно использовать все доступные библиотеки Java. В итоге получается универсальная платформа для дестопов, веба, соток, блю-рей проигрывателей, двд-выигрывателей и всего, где есть JVM (надеюсь, в недалеком будущем)

По синтаксису JavaFX напоминает Java, ActionScript… и почему-то JSON (уж больно похож на него декларативный формат описания объектов)

На JavaFX можно создавать не только красочные цветастые интерактивные апплеты, но и совершенно безобразные и уродливые вещи, кои получились у меня в ходе лабы :D Ну, просто неудобно делать графические вещи без визуального редактора… зато межплатформенно…

Павильон
Ну и на последок, в огромном зале были размещены точки с представительствами самых разных именитых и не очень контор, названия которых я не помню, и возможно даже и не выговорю. Там тоже проводились небольшие семинарчики, демонстрации, розыгрыши и раздача халявы. У стенда JavaFX можно было поиграть в забавные игры на самых различных устройствах (перчатках-манипуляторах, сотках, блю-рейном проигрывателе).

Адоб демонстрировали PixelBender и взаимодествия Flex и BlazeDS с остальными. В другом отделе можно было попробовать установить openSolaris и получить фирменную майку и значок (пионерский подход). А в перерывах можно было поиграться в Quake и постучать на Rockband =D

У стойки Amazon можно было решить небольшую задачку и получить фигурку нинзя-кодера.

//Что делает эта функция?
int ninja_loop (int num ) {
if (num & num-1 == 0) return 0;

for (int arc = 1; (num &= num-1); arc++) {
// ninjas loop differently
}

return arc;
}

// Достоверность не гарантирую, так что можете сильно не париться =))


Среди всех прочих был и стенд некой фирмы, которая занималась защитой ПО и прочего от копирования (DRM и прочие). Возле стенда дежурил пожилой мужичок, который явно скучал от одиночества.

Некоторые пророчат, что эта конференция была последней в связи с недавним приобретением компании Sun конторой Oracle, с чем многие выступавшие там не согласны. Но как бы то ни было, я надеюсь, что в следующем году будет JavaOne 2010 и у меня будет повод написать еще один пост.

P.S.: Удивительно, но больше половины людей на лабах сидели с маками о_О
Еще там были общедоступные терминалы, которые работали по карточкам. Из Sun Virtual Box'a на выбор можно было загружать openSolaris, Ubuntu 9.04 или Windows-7.
Total votes 24: ↑15 and ↓9 +6
Comments 6

Information

Rating
Does not participate
Registered
Activity