All streams
Search
Write a publication
Pull to refresh
10
0
Send message

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

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

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

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

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

Читать дальше →

Appcelerator покупает Aptana

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

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

Читать дальше →

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

Reading time3 min
Views8.7K

Задача


Допустим вы хотите выполнить два или более 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 запроса, стервятник начнет есть.

Как это работает?

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

Reading time2 min
Views7.2K


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

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

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

Читать дальше →

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

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

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

Под катом кликабельная картинка с машрутом

XAMPP on Linux + Xdebug (Linux 64bit)

Reading time3 min
Views7K
Итак, сегодня мне удалось поставить 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битного ХАМРР.

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

Читать дальше →

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

Reading time1 min
Views1.3K

Обычно


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

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");

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

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

Как-то раз увидел в 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 месяцев в году. А вот у алжирских сисадминов такая проблема никогда, наверное, не возникала =)

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

Reading time4 min
Views510
С 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.

Information

Rating
Does not participate
Registered
Activity