В зоопарке мобильных платформ пополнение. Samsung анончировал новую мобильную платформу Bada.
Bada в переводе с корейского значит «океан» и будет построен на linux-платформе с открытым SDK. Первые телефоны на этой платформе появятся уже в начале следующего года.
В отличии от нормальных людей Google и вслед за менее нормальными Nokia и Palm, Samsung собираются развивать новую платформу исключительно для собственных устройств.
Ранее компания объявила о планах использовать платформу Android для своих мобильных устройств и собиралась постепенно довести долю Android-устройсв до 30%. Теперь, видимо, нашим надеждам не суждено сбыться и для разработчиков, которые хотят позиционировать свои приложения для использования на аппаратах Samsung, прийдется изучать новый инструментарий.
На сколько можно судить из описания на официальном сайте платформы Bada, API будет сервис-ориентированным (наверное по аналогии с WebOS), что по словам Samsung позволит разработчику сконцентрировать усилия на своем приложении, не вдумываясь о внутренней реализации предоставляемых системой сервисов. Ну что же, посмотрим. Пока SDK не качал т.к. на данный момент он доступен только для партнеров, более подробно можно будет сказать после установки и более детального рассмотрения.
Вобще, создание новой платформы – очень очень странное решение. Вместо того чтобы унифицировать программные и пользовательские интерфейсы, компании придумывают все новые и новые велосипеды. Да, возможно использование новой платформы позволит создать ситуацию, когда пользователь не сможет отказаться от сервисов, которые идут в поставке для устройства на этой платформе и недоступны на других, но я более чем уверен, что, используя тот же Android, можно было бы достичь того же результата. так например поступает компания HTC, выпуская устройства с Windows Mobile – смотрят что GUI у WM немного ммм… неудобный и делают свою оболочку с намного более приятным user experience. За это пользователи и любят их устройства. На сколько я помню, для Android они делают то же самое.
В общем, ждем новостей по поводу Bada. Хотя бы публичных инструментов разработки и эмуляторов. Дальше будет видно.
18 декабря 2009 в Киеве состоится первая конференция , которая посвященная актуальным правовым вопросам в Интернет индустрии.
Разрабатываете ПО «вагонными нормами» и хотите официально оформить свой бизнес? А может уже оформили, но есть «подводные камни», бороться с которыми самостоятельно не очень просто, и нужен дельный совет в решении проблемы? Тогда, скорее всего, темы, которые предложены для обсуждения на конференции, будут для Вас очень интересными. Для меня – точно интересны (как раз дожил до «вагонных норм» ).
Тематика LegalCamp 2009 включает в себя три блока:
Законодательное регулирование Интернет;
Защита интеллектуальной собственности;
Правовые аспекты интернет-бизнеса.
Организаторами LegalCamp представленные следующие темы докладов:
Какую юридическую форму предприятия выбрать для ведения интернет-бизнеса?
Правовая защита контента.
Законодательное регулирование электронных денег.
Законно ли получение прибыли с рекламы на сайте без регистрации СПД?
Основные юридические проблемы, с которыми сталкиваются стартапы
Как защитить свой бизнес от недобросовестных сотрудников
Законодательное регулирование Интернет
Иностранная компания, как инструмент минимизации налогообложения
ИТ-стартапы в России. Юридические аспекты. Авторское право в России и за рубежом
Ответственность онлайн СМИ за неправдивую информацию.
Как защитить свой ИТ-продукт от пиратов.
Доменные имена. Как защитить доменное имя?
Перспективы правового регулирования электронной коммерции.
Ответственность за незаконную предпринимательскую деятельность.
Как защитить себя в технологическом бизнесе от недобросовестных партнеров и инвесторов.
Правовые перспективы развития электронного документооборота.
Закон 404, что нас ждет?
Интернет-пиратство, мировые тенденции.
Государственная регистрация интернет-сайтов в качестве электронных СМИ (сетевые СМИ).
Про СМИ – это для меня пока сильно жестоко, а вот по поводу ведения бизнеса, проблем стартапов и защиты ПО от пиратов я бы с удовольствием узнал что-то новое.
Конференция длится всего один день и доклады планируются в два потока, так что даже не знаю, получится ли узнать все то интересное, что обещают организаторы. Запасаюсь всякими видеозаписывающими устройствами, если получится записать доклады на видео – обязательно выложу здесь.
Если кто-то из читателей этого блога тоже планирует посетить сие действо, отпишите plz в комментариях или в почту, может там встретимся вживую и обсудим «насущные проблемы» за кружкой.. чаю или еще чего покрепче. На самом деле, я очень надеюсь что кто-то, все же, прийдет.
Более детально с условиями участия в конференции можно ознакомиться на официальном сайте .
Хабрапользователь любезно предоставил нам статью о создании приложений для S60 на Python, использующих API.
После того, как мы к Python for s60 и писать приложения, хочу предложить продолжить постигать программирование для symbain на замечательном языке программирования python.
На этот раз сделаем что нибудь полезное, а именно напишем приложение, которое будет показывать карму. Не просто показывать, а выводить поверх всех «окон» табличку, на которой будет значение кармы и разница с предыдущем значением. Помимо этого, программу будет издавать победный гонг при повышении кармы и крик отчаяния при ее понижении. Ко всему прочему, мы запустим ее, как сервер, то есть она не будет отображаться в списке запущенных программ.
Тем, кому больше важен результат, нежели процесс, милости просим в конец статьи, где вас ожидает готовое приложения HabraKarma 1.0 !!!
На этот раз, я не буду комментировать каждую строчку в программе. Я подразумеваю, что вы хоть немного знакомы с python, умеете читать , и хоть что нибудь поняли из .
Общие принципы работы
Сама программа будет состоять из 2-х частей: сам сервер, который выполняет всю работу, и GUI, в котором мы будем настраивать работу сервера, запускать его и останавливать.
Сам сервер, запускается функцией start_server из модуля e32. Параметр у функции всего один — полный путь к питоновскому скрипту, который следует запустить в роли сервера. Да да, все так просто, но с некоторыми ограничениями.
Так как сервер работает в фоне, он не может использовать модуль appuifw, отвечающий за UI. Но нам это и не нужно, так как демонстрировать результат работы мы будет, используя модуль topwindow, который позволяет выводить изображения поверх всех «окон». Кроме этого, нам доступен еще один модуль, под названием globalui, который позволяет так же поверх всех «окон», выводить такие вещи, как разные запросы, предупреждения, уведомления и пр. Этим мы тоже воспользуемся, демонстрируя факт запуска и остановки сервера.
Еще одно ограничение, это невозможность доступа к файлам, размещенных в папке с приложением (x:/private/UID). Поэтому, если мы хотим использовать различные мультимедийные файлы, файлы настроек, мы должны положить это в какое нибудь нейтральное место, например в папку x:/system/data/AppName. Эта папка имеет атрибут «скрытый», поэтому помещенные туда картинки не будут видны в галереи, а аудио файлы в медиатеке.
Еще одна проблема, это «оторванность» сервера от основной программы. То есть запустить мы ее может, а вот узнать, запущена ли она, или остановить, при использовании стандартных модулей нельзя. В нашей программе мы поступим следующим образом:
Сервер, при запуске создает файл c названием habra_flag в корне диска D. При завершении работы сервера, этот файл удалим. Теперь, при запуске оболочки, проверим, существует ли искомый файл. Если да, значит сервер считаем запущенным. Кроме этого, нужна возможность остановки сервера. Для этого, в этот самый файл запишем, что нибудь, а на сервере, в цикле, будем проверять. Если длинна файла больше нуля, останавливаем работу.
У некоторых возможно появится вопрос, что за диск D, на который м собираемся писать файл habra_flag. Это ram диск, небольшого объема, который очищается при перезагрузки. Используя его, мы убиваем двух зайцев: при перезагрузки телефона, ручного завершения нашего сервера, файл с флагом исчезнет, и файловая система на ram диске имеет большую производительность. Для более сложного взаимодействия с сервером, можно использовать сокеты.
Пишем UI
Мордой приложения, которое будет запускаться по «клику» на иконку программы, будет класс Form, который практически от и до описан в . Выглядит это вот так:
#coding:utf-8
from appuifw import *
import e32
import os
# папка, в которой лежат файлы настроек, медиа файлы и пр.
data_path=os.getcwd()[]+u':\\System\\data\\HabraKarma\\'
class Main:
def __init__(self):
app.screen='normal'
# читаем файл настроек, который является словарем,
# тупо сохраненным через repr
self.settings=eval(open(data_path+'set.dat').read())
# Список полей для нашей формы, вставляем сохраненные значения в ее поля.
self.fields=[
(u'Хабраюзер','text',self.settings['user']),
(u"Автообновление (мин.)",'number', self.settings['time']),
(u"Включить звук?", 'combo', ([u'Да',u'Нет'], int(self.settings['sound']))),
(u"Считать разницу", 'combo', ([u'С начала работы',u'С последнего обновления'], int(self.settings['diff']))),
(u"Положение X",'number', self.settings['X']),
(u"Положение Y",'number', self.settings['Y']),
]
# создаем форму с флагами
self.form=Form(self.fields,flags=FFormDoubleSpaced|FFormEditModeOnly)
# задаем функцию, которая будет сохранять значения из формы
self.form.save_hook=self.save
# если сервер уже запущен, то в меню должно быть "остановить" и наоборот
if os.path.exists(u'd:\\habra_flag'):
self.form.menu=[(u'Остановить',self.stop)]
else:
self.form.menu=[(u'Запустить',self.start_server)]
# "выполняем" форму, то есть она будет показана на экране, до тех пор пока
# из нее не выйдем.
self.form.execute()
# после выхода из формы, проверяем запущен ли сервер и предлагаем его запустить
if not os.path.exists(u'd:\\habra_flag'):
if query(u'Запустить?','query'):
self.start_server()
def start_server(self):
# собственно функция запуска сервера
self.form.menu=[(u'Остановить',self.stop)]
e32.start_server(data_path+'server.py')
def stop(self):
# функция остановки сервера.
self.form.menu=[(u'Запустить',self.start_server)]
open(u'd:\\habra_flag','w').write('stop')
def save(self,arg=None):
# берем значения из формы и сохраняем их в файл настроек.
self.settings['user']=arg[][2]
self.settings['time']=arg[1][2]
self.settings['sound']=arg[2][2][1]
self.settings['diff']=arg[3][2][1]
self.settings['X']=arg[4][2]
self.settings['Y']=arg[5][2]
open(data_path+'set.dat','w').write(repr(self.settings))
return True
a=Main()
Осталось написать сервер
#-*-coding:utf-8-*-
import os
import e32
import sys
# перенаправляем ошибки в файл.
sys.stderr=open('d:\\err.txt','w')
import globalui as ui
import topwindow
from graphics import *
import urllib
import audio
open(u'd:\\habra_flag','w').write('')
data_path=os.getcwd()[]+u':\\System\\data\\HabraKarma\\'
# показывам, что мы запустились.
ui.global_note(u'Хабрастарт!')
def karma_screen(self):
# функция, вызываемая для обновления
self.update_screen()
e32.ao_sleep(0.2)
# тянем инфу с харба api
data=urllib.urlopen(''+self.settings['user']).read()
# меня наверное запинают, но я не хочу тянуть в этом
# случае библиотеку для парсинга xml
karma=float(data.split('')[1].split('')[])
# сравниваем новую карму со старой и
# в зависимости от ситуации собираем текст, указываем цвет
# и играем звук, если это задано в настройках
if self.last_karma karma_diff=u'(+'+str(abs(self.last_karma-karma))+u')'
karma_color=0x009f31
if not self.settings['sound']:
self.good_sound.play()
elif self.last_karma >karma:
karma_diff=u'(-'+str(abs(self.last_karma-karma))+u')'
karma_color=0xc30202
if not self.settings['sound']:
self.bad_sound.play()
else:
karma_diff=u''
karma_color=0xffffff
if self.settings['diff']:
self.last_karma=karma
open(data_path+'karma.dat','w').write(repr(karma))
# здесь мы узнаем, сколько пикселей по ширине бужет занимать текст
karma_width=self.img.measure_text(unicode(karma))[][2]
diff_width=self.img.measure_text(karma_diff)[][2]
# а дальше дело техники
self.img=Image.new((45+karma_width+diff_width,35))
self.top.size=(self.img.size[],35)
self.img.text((35,25),unicode(karma))
def update_screen(self):
# это будет выводится во время обновления
self.img=Image.new((165,35))
self.top.size=(self.img.size[],35)
self.img.blit(self.update_img)
self.img.text((35,25),u'Обновляется')
self.top.add_image(self.img,(,))
def mainloop(self):
# и пускаем главный цикл сервера
interval=self.settings['time']*60
count=
while self.loop:
# если нам так приказали, останавливаем сервер
if open(u'd:\\habra_flag').read():
os.remove(u'd:\\habra_flag')
ui.global_note(u'Хабрастоп!')
self.loop=False
count+=1
# если пришло время, обнавляем карму.
if count >interval:
count=
self.karma_screen()
e32.ao_sleep(1)
habr=Habra()
Осталось собрать все это дело в sis и наблюдать за кармой
Исходники, вместе с картинками, звуками, иконкой можно взять . В ensymble в опциях сборки прописывать: –extrasdir=data –lang=RU –icon=путь_к_иконке
И забираем результат…
Итак, представляю вашему вниманию приложение HabraKarma для symbain 9.x Установите приложение, введите ваш username, настройте время обновления, положение окна. Теперь можно запустить сервер, который будет отображать поверх всех окон вашу карму. После этого, программу можно закрыть, окно останется до тех пор, пока вы его не выключите, зайдя опять в программу.
Скачиваем (sis, 56 кб, подписи не требует)
Не забывайте, что для работы необходим Python Runtime не ниже версии 1.9.7 (). Python и программу ставить на один и тот же диск!
Вслед за Microsoft, Apple и Palm, Intel тоже решили создать площадку для продажи приложений. На сей раз это приложения для устройств с процессором Intel Atom. Желание, само по себе, понятно – всем хочется больше денег, но от этой пестроты возможностей уже начинает рябить в глазах.
Для привлечения разработчиков к новому своему детищу, Intel предлагают инициативу и в рамках этой инициативы инструментарий для разработчиков приложений, создающих программы для нетбуков на базе процессоров Atom – .
На данный момент SDK работает под Windows и Moblin, но обещают поддержку Adobe AIR и Microsoft Silverligh.
Открытие онлайн-магазина приложений запланировано на следующий год. Условия те же, что и у всех – Intel отбирает у разработчика 30% прибыли, ну и еще и ко всему «абонплата» за участие $99 в год. Кстати, на данный момент там есть временная бесплатная регистрация. Кому интересно – поспешите , я уже зарегистрировался.
Intel в среду заявил, что более чем 50 миллионов нетбуков будут проданы к концу 2009 года. Так что потенциальный рынок сбыта «нетбучных» приложений не так уж и мал.
для разработчиков приложений, создающих программы для нетбуков на базе процессоров Atom
На GotoAndLearn.com , описывающий процесс создания Flash-приложения для iPhone с использованием Flash CS5. Видео также доступно для загрузки и оффлайн-просмотра.
В видео показазан процесс создания Flash-приложения с простейшей анимацией, написание обработчиков событий от акселерометра на Action Script, а также описан процесс настройки компиляции приложения в CS5 и загрузка на устройство.
Разработчиков мобильных приложений для платформы Google Android не устраивает работа онлайнового магазина приложений , говорится в исследовании аналитиков , которые в октябре опросили 30 разрабочиков приложений под Android.
57% не устраивает получаемый доход.
90% сообщили, что число загрузок их приложений не превышает 10000.
43% считают, что «Google Checkout» тормозит продажи приложений и требуют упрощения системы платежей.
82% не устраивает дизайн , так как он усложняет поиск старых и заметность новых приложений.
46% уверены, что разнообразие версий Android на выпускаемых устройствах существенно усложнит разработку, по причине проблем совместимости.
Ну и самое печальное для Android Market: 68% разработчиков сомневаются в целесообразности развития и поддержке своих Android-приложений.
Как известно, запущенный ранее был направлен на работу с Windows Mobile 6.5, но теперь пользователи Windows Mobile 6.0 и 6.1 также смогут пользоваться этим сервисом.
Если у вас смартфон на базе Windows Mobile 6 и выше, то зайдя с него на адрес вы можете установить небольшой клиент, который позволит вам производить навигацию по магазину.
На данный момент доступно около 800 приложений. Пользователям с русскими аккаунтами доступны только бесплатные приложения.
Для разработчиков, создающих программы для Windows Mobile, подобный шаг Microsoft поможет знач.ительно расширить целевую аудиторию для своих приложений. Надеюсь, в скором времени появится возможность позиционировать платные продукты и для российского рынка.
Вышла новая версия средств разработки iPhone приложений на платформе .NET – MonoTouch 1.2. Наконец-то добавили нормальный отладчик с интеграцией в MonoDevelop и отлаживать теперь можно и в симуляторе и на устройстве.
Появился новый Binding API, который позволяет связывать библиотеки на Objective-C с приложением на .NET/MonoTouch.
Добавлены пространства имен System.Timers.Timer, System.Threading.Semaphore, System.Threading.
Исправлены ошибки, OpenTK обновлен до r2350
Добавлено пространство имен System.Data и теперь можно использовать SQLite в своих приложениях.
Появился набор бесплатных иконок, доступных для коммерческого и некоммерческого использования в Android-приложениях. В комплетке 30 иконок + исходники в EPS-формате.
Интереснейшую штуку обнаружил сегодня (хотя и немного с опозданием). Оказывается уже появился эксплоит для мобильной платформы Palm WebOS, которой от роду всего несколько месяцев:
Опасная уязвимость обнаружена в WebOS до версии 1.1 для коммуникатора Palm Pre. Обнаруженная уязвимость позволяет злоумышленнику произвести атаку «отказ от обслуживания» (DoS) путем открытия специально сформированного HTML файла. Использование уязвимости приводит к зависанию процесса графического интерфейса – LunaSysMgr, что вызывает необходимость перезагрузки коммуникатора.
Уязвимость не проявляется в режиме альбомного (landscape) просмотра, однако для устранения уязвимости рекомендуется обновить версию WebOS до 1.2 и старше, доступной на сайте технической поддержки коммуникатора Palm Pre.
И вот, долгожданная новость. Google fнонсировала поддержку Android 2.0 в средствах разработки Android SDK. Добавлены новые API – программный интерфейс для синхронизации, работа с Bluetooth 2.0 и еще куча всякого. Теперь Android-приложения позволяют пользователям более простым способом общаться. Для этого в Android 2.0 есть Quick Contact API. Приложения могут поддерживать peer-2-peer соединения по Bluetooth, что может быть очень полезно в играх.
Работа в полноэкранном режиме на мобильном устройстве – полезная штука, особенно если вы пишете что-нибудь эдакое, например игру. Размер экрана и так небольшой, а панель состояния отбирает у приложения таоке драгоценное пространство.
WebOS позволяет приложениям работать в полноэкранном режиме. Вот об этой возможности мы и узнаем подробнее в этот раз.Итак, у нас задача – сделать приложение, работающее в полноэкранном режиме.
Создаем новый проект и в нем две сцены – main и fullscreen.
На нашей сцене – заголовок и две кнопки. Первая – открывает сцену fullscreen, а вторая – закрывает приложение.
app/views/fullscreen/fullscreen-scene.html
Sample Fullscreen Scene
Для перехода в полноэкранный режим у контроллера сцены есть метод enableFullScreenMode(), который принимает булевый параметр и благодаря которому тот же метод служит и для включения и для выключения полноэкранного режима.
Активацию полноэкранного режима нужно делать при активации сцены, а выход из полноэкранного режима – при деактивации сцены. Не надо переходить в полноэкранный режим внутри метода setup(). Из-за этого можно получить артефакты отрисовки. По этому поводу можно найти достаточно информации на официальном форуме WebOS-разработчиков. В общем, activate() и deactivate() – это как раз подходящие методы для этого.
После всего получаем такой вот результат (скрин из эмулятора):
Доступна новая версия средств разработки приложений для платформы Maemo – Maemo 5 Final SDK.
В этой версии доступна возможность разрабатывать и отлаживать приложения в Linux (сборка приложений доступна для платформ X86 и ARMEL). Для установки инструментария и SDK есть готовые shell-скрипты. Из дистрибутива убраны старые пакеты и добавлены исходные коды некоторых приложений, которые могут понадобиться в качестве примеров. Дистрибутив также содержить приложения от Nokia и API для взаимодействия с ними. Из нововведений также хотелось бы отметить новый программный интерфейс – .
В WebOS пользователь может вручную указать интервал, по истечению которого, если устройство не используется, оно переходит в спящий режим. Этот интервал может варьироваться вдиапазоне от 30 секунд до 3х минут.
В некоторых приложениях может возникнуть необходимость держать устройство включенным по истечению интервала, заданного пользователем (это может быть актуально, например, для приложений, воспроизводящих видео или аудио). Для поддержания устройства в активном состоянии в WebOS существует специальный API. О нем и пойдет речь в этот раз.
Итак, нам понадобится тестовое приложение. Создаем проект и в нем сцену main.
app/views/main/main-scene.html
Power Management Test
Сцена содержит виджет для выбора таймаута, в течении которого устройство не должно засыпать, а также кнопки:
id – уникальный идентификатор вызова активного режима (можно использовать формат ID-приложения + ID-операции + счетчик).
duration_ms – длительность активного режима в миллисекундах. Максимальное значение єтого параметра 900000, что соответствует 15ти минутам.
Возможные проблемы:
На эмуляторе вызов activityStart не дает видимого эффекта. Виртуальная машина остается активной всегда.
На официальном форуме разработчиков WebOS-приложений неоднократно появлялась информация о том, что активный режим работает только для системных приложений (с идентификатором, начинающимся на com.palm.app). Также была информация что эту проблему исправили и активный режим доступен для разработчиков сторонних приложений, но без устройства это подтвердить нет никакой возможности.
По окончанию активного режима приложение не получает никаких уведомлений, и в случае, когда активный режим завершился, а приложение все еще должно держать устройство включенным, надо перезапускать активный режим заново, указывая новый идентификатор вызова. В таком случае очень удобно пользоваться счетсиком. Для того, чтобы вовремя продлить активный режми, можно использовать таймер.
В примере, вместе с переходом в активный режим, у нас создается таймер, длительность задержки которого равна половине длительности активного режима. При вызове обработчика собфтия таймера, мы выходим из активного режима.
При выходе из приложения, автоматического останова активного режима не происходит, поэтому в методе cleanup() главной формы все вызовы активного режима должны быть завершены.
Появился пресс-релиз Adobe, в котором заявлено появление Flash Player 10.1 для мобильніх устройств. Версия для WebOS и Windows Mobile (Browser-based runtime), судя по пресс-релизу, должна быть доступна к концу года. Версия для Google Android и Symbian – в начале следующего года.
Flash Player 10.1 позволяет создавать сложные приложения со сложным контентом и высококачественным видео вне зависимости от платформы. Кроме этого, плеер активнее использует вычислительные мощности графических систем, одновременно сокращая потребление энергии и сокращая потребление ресурсов.
Для мобильных устройств обещают поддержку акселерометра, мультитач, жестов (gestures), изменений поворота экрана.
Устройства с поддержкой Flash Player 10.1 ожидаются в начале следующего года.
Сегодня ComputerWorld такую штуку, от которой лично у меня до сих пор волосы дыбом!
Они пишут что компания Google сохраняет за собой право дистанционно удалять программы со смартфонов пользователей , если в этих программах нарушается договор разработчика на распространение приложений. На языке оригинала это звучит так:
Google may discover a product that violates the developer distribution agreement … in such an instance, Google retains the right to remotely remove those applications from your device at its sole discretion
Ну ничего себе они мне такое рассказывают! Как пользователь я бы очень не хотел чтобы “Большой Брат” сидел в моем телефоне и следил за тем как, когда и зачем я использую установленное ПО. И к тому же все это на “открытой платформе Android“. Ну надо же было так испоганить идею.
Напомню что подобная возможность, называемая “Remote Kill Switch”, ранее была обнаружена в телефонах Apple iPhone, что вызвало недовольство со стороны пользователей, обеспокоенных ущемлением их прав.
Вместе с тем, Google обещает что будет стараться вернуть деньги пользователю за удаленное ПО:
In addition, Google says that if it does remotely remove an application, it will try to get users their money back
Классно! Всю жизнь мечтал. Google именно “будет стараться”, никаких гарантий. Описание подобных “стараний” найти не удалось.
Как разработчика меня, возможно, устроил бы вариант с удалением пиратских копий моего ПО, но возврат денежек за пиратскую копию как-то… не радует.
Вот так из хорошего получается странное… А в том, как же это работает, нужно будет еще разобраться.