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

Планшеты рассчитаны только на потребление контента
Во времена первого айпада, когда процессоры были слабенькими, оперативки было мало, и запустить на планшете что-то сложнее змейки было трудно, это было правдой. Сейчас же, когда планшеты поддерживают внешние клавиатуры/мыши/мониторы, имеют на борту двухъядерные процессоры с графическими ускорителями, с планшетом стало так же легко работать, как с персональным компьютером.
Планшеты созданы для развлечений
Опять же, из-за целевой аудитории Apple, принято думать, что планшет создан только для (казуальных, см. следующий пункт) игр, и платформа практически не рассматривается для создания полноценных приложений, таких как офисные пакеты, автокады, фотошопы и другие интересные вещи. Даже браузер, и тот осталяет желать лучшего.
Пользователи хотят платить
В головах разработчиков понятие «воспитанный цивилизованный пользователь, который не будет воровать софт» почему-то равноценно понятию «денежный мешок», из-за чего в маркете (особенно в iOS) присутствует огромное количество приложений, которые не представляют собой ровным счетом ничего, но требуют 0,99.
У всех пользователей огромные пальцы
В эту крайность впадают разработчики, которые раньше писали софт под стилусы, а теперь вынуждены делать интерфейсы для емкостных экранов. Из-за неправильного восприятия механизма работы последних, каждый первый разработчик уверен, что чем больше кнопка (и любой другой элемент управления), тем лучше, совершенно не задумываясь, как пользователь будет с этим работать.
Пользователи любят делать вжик-вжик по экрану
Эта проблема появилась на заре айфоностроения, и некоторые ее отголоски можно увидеть и сейчас. Вместо того чтобы создавать вменяемые интерфейсы и элементы управления (в частности окна), разработчики стараются сделать как можно больше свистелок и перделок, чтоб подчеркнуть функции «слайд», «мультитач» и пр., хотя в 90% это вообще не нужно.
Пользователи планшетов — идиоты
Вобщем-то, зачастую, так оно и есть, но разработчики мобильных приложений совершенно не видят разницу между типичным пользователем продукции Apple, Google, и например Rim. А разница, между тем, колоссальна. И если пользователи некоторых платформ и готовы платить по доллару за каждый чих, то у других людей хватает ума поискать бесплатные аналоги, или даже взломанные .apk.
Приложение должно приносить прибыль
Или как минимум окупаться. Исходя из этого, что бюджет программы, как у плохих фильмов, делится между разработкой и маркетингом, причем, зачастую, соотношение составляет 1 к 10. Очень хочется верить, что еще остались программисты, которые пишут для себя и для друзей, и что их труд мы тоже увидим в магазинах приложений.
Периодически натыкаюсь в разных Интернетах на «гениальные» догадки о том, как освободиться от «бремени» исполнения законодательства о персональных данных путем «выхода» из под национальной юрисдикции. Сами вопросы «бремени», на сколько можно судить по публикациям и их комментариям, довольно плохо понимаются авторами — все свалено в одну кучу: что понимать под персональными данными, какие правила обработки соблюдать, что «защищать»… Из этой кучи не проясненного рождаются самые настоящие фантазии-франкенштейны вызывающие буквально панический страх у новоиспеченных (да и у староиспеченных тоже) операторов персональных данных и приводят к методическому запугиванию друг друга с поиском таких вот гениальных по своей простоте решений в лучших традициях язычества. Вместо того, что бы использовать данные законом правовые инструменты по их назначению, им придается какой-то сакральный смысл. Так в свое время сакрализовали институт согласия, совершенно не обращая внимания на его основной смысл: свобода дать и отозвать свое согласие в любое время без объяснения причин. Бумажку с письменным согласием превратили в самую настоящую индульгенцию (да, пусть вас не смущает, что индульгенция имеет вполне себе католические корни, а не языческие. Языческими были те стереотипы мышления, особенности картины мира, которые и привели к всеобщей вере в индульгенцию как простому решению сложных проблем).

Сакрализация трансграничной передачи конечно не была такой масштабной, как всеобщая вера во всемогущество согласия. Модель, по которой предлагалось решить все свои «проблемы с законом» владельцам интернет-сервисов, была невероятно проста:
1) Переносим сайт с базой на хостинг в Евросоюзе.
2) PROFIT!!!
Основным преимуществом при этом называлось то, что в Евросоюзе не установлены «драконовские» требования по обеспечению безопасности персональных данных при их обработке. Хотя от части это действительной так, «вывоз» базы за кордон, без смены российского владельца — не выводит ее из под юрисдикции РФ. Иными словами, обязанность исполнять российский закон сохраняется, так как сам оператор никуда от него не делся.
Кроме того, такой простой «вывоз» по закону и не является трансграничной передачей персональных данных.

Как говорит нам собственно закон: трансграничная передача персональных данных — передача персональных данных на территорию иностранного государства органу власти иностранного государства, иностранному физическому лицу или иностранному юридическому лицу.
То есть, трансграничной передачей является только передача оператору персональных данных (controller of the file), не попадающему под юрисдикцию Российской федерации.
Иностранное юридическое лицо (действующее официально) или российское юридическое лицо, собирающие персональные данные на территории России — попадают под действие закона о персональных данных не зависимо от того, где данные в конечном счете обрабатываются. Передача за границу российскому юридическому лицу — также не является трансграничной передачей ПДн.

Трансграничная передача персональных данных накладывает на оператора дополнительные условия, связанные с законностью и целесообразностью такой передачи, так что попытка таким способом «обойти» закон рискует закончится весьма печально. Когда же будет принята новая нормативка касающаяся обеспечения безопасности ПДн при их обработке в ИСПДн, наверняка мы и в ней найдем кучу дополнительных ограничений и условий на перемещение данных через госграницу.
Решил испытать сервис preyproject.com, позволяющий найти украденные устройства. Результаты впечатлили.

Возможности сервиса

Операционные системы

MacOS
Windows
Linux
Android


Поиск

определение географического местоположения
определение MAC-адреса устройства, внешнего/внутреннего ip-адреса
снимок с вебкамеры
скриншот экрана
запущенные процессы
wifi точки
др.


Защита

сирена — включение дикого ора на 30 секунд для поиска устройства, если вы находитесь рядом (не испытывал:)
тревога — уведомление злоумышленника о том, что вы за ним наблюдаете
блокировка — блокирование устройства до ввода пароля
очистка устройства — скрытие почтовых адресов и удаление кукисов и сохраненных паролей из всех аккаунтов (не рискнул испытать:)



Установка

Опыт проводился на Ubuntu 11.04.

Регистрируемся на сайте preyproject.com и добавляем новое устройство.
Далее переходим в консоль (Ctrl+Alt+T).

Скачиваем и распаковываем архив:
$ cd /usr/src/
$ wget preyproject.com/releases/0.5.3/prey-0.5.3-linux.zip
$ 7z x prey-0.5.3-linux.zip
$ mv prey /usr/share/

Правим конфигурационный файл:
$ mcedit /usr/share/prey/config

# Ключи для идентификации вашего устройства в веб-сервисе
api_key='8jscfvdfgvdd' # API key - Account information
device_key='erndfg' # Key - выбираем наше устройство и смотрим Device information

# почтовый ящик, на который будут приходить сообщения
mail_to='mailbox@domain.com'

# SMTP-сервер, с которого будут отправляться отчеты
smtp_server='smtp.gmail.com:587'
smtp_username='username@gmail.com'
smtp_password='password'

Для получения снимков с вебкамеры установим streamer:
$ apt-get install streamer

Добавляем в cron запуск задания:
$ (sudo crontab -l | grep -v prey; echo "*/20 * * * * /usr/share/prey/prey.sh > /var/log/prey.log") | sudo crontab -

В результате после изменения в веб-сервисе статуса устройства на Missing:ON получаем отчет, содержащий полную информацию.

P.S. Хочу сказать, что я сильно удивился тому объему инфы, которую получил в отчете (из этих соображений не стал выкладывать итоговый скриншот, т.к. пришлось бы все данные просто замазать).
13.08.2011

BORSCHT

Рассмотрим одну из основных частей большинства цифровых АТС, а также всех FXS-шлюзов — комплект аналоговых абонентских линий или, упрощенно, абонентский комплект (АК).
Как известно, любое техническое нечто должно выполнять одну или набор каких-либо возложенных на него функций. В случае абонентского комплекта, он включает в себя элементы, обеспечивающие семь основных функций: батарейное питание (Battery feed), защита от перенапряжений (Overvoltage protection), посылка вызова (Ringing current), контроль шлейфа абонентской линии (Supervision), кодирование аналоговых сигналов (Coding), функции дифсистемы (Hybrid) и тестирование (Testing). Отсюда возникла аббревиатура BORSCHT, очень приятно звучащая для большинства русскоязычного населения. Иногда BORSCHT рассматривают, особенно в технической документации, как синоним аналоговому абонентскому комплекту.

Можно приглядеться поподробней (но при этом очень кратко) к ингредиентам этого BORSCHT'a:

B (Battery feed) — дистанционное питание микрофона телефонного аппарата постоянным напряжением 60, 48 или 32 В, во многих случаях с возможностью регулирования величина тока. В случае с АТС, станционное питание — это средство увеличение надежности связи, т.к. она сохраняется при отказе местной электросети. Этим, кстати, вызвано моё неприятие к телефонным аппаратам с DECT-трубками.

O (Over voltage) — обеспечение защиты станционного оборудования от высоких напряжений в абонентской линии. Замечу, что эта защита должна быть вторичной, первичная же должна осуществляться на КРОССе. Последний факт часто игнорирует, особенно в корпоративном секторе, что влечёт выход из строя оборудования в случае, например, грозы или скачков напряжения в электросети.

R (Ringing current) — подключение к абонентской линии источника вызывного сигнала, «заставляющего» звонить наши телефонные аппараты.

S (Supervision) — контроль состояния шлейфа абонентского линии. Другими словами, это — реализация абонентской сигнализации, языка взаимодействия между телефонным аппаратом и АТС или шлюзом. Благодаря этой функции управляющие устройства АТС «понимают» волеизъявления абонента: поднял ли он трубку («шлейф замкнут») и надо подготовиться к приему номера или обслуживанию выстроенного разговорного тракта; или положил трубку («шлейф разомкнут») и АТС можно спокойно вздохнуть.
Также Supervision обеспечивает передачу набора номера шлейфным способом. В нескольких голливудских фильмах («Сотовый», «Молчание ягнят») это иллюстрируется мифической возможностью набрать номер замыканием-размыканием проводов абонентской линии.

C (Coding) — кодирование и декодирование речевых сигналов, т.е. функции АЦП и ЦАП в соответствии с определенным голосовым кодеком. Также эта функция включает в себя фильтрацию и усиление сигналов.

H (Hybrid) — набор функций дифсистемы, обеспечивающий переход от двухпроводной схемы передачи речевых сигналов по абонентской линии к четырехпроводного внутристанционному тракту. Иными словами, комплекс мер по разделению направлений передачи при двухсторонней связи.

T (Testing) — тестирование абонентской линии и телефонного аппарата. Можно догадаться, что делается это для определение причины и места локализации неисправности. Производится это с помощью сравнения с нормативными следующих параметров: сопротивления изоляции проводов a и b относительно земли, сопротивления изоляции между проводами a и b, рабочей емкости между проводами линии, сопротивления шлейфа и т.д.

В завершение хочу упомянуть о так называемом Z-стыке или Z-интерфейсе. Это интерфейс взаимодействия между абонентским комплектом (набором BORSCHT) и физической двухпроводной абонентской линией. В некоторых источниках понятие Z-интерфейса отождествляют понятию FXS-порта.

P.S. Хотите досадить абонентскому отделу какого-нибудь оператора городской телефонной связи? Позвоните туда и дотошно долго выясняйте у оператора подключают ли они абонентов по Z-интерфейсу. Если внятного ответа не будет, заставьте вызвать начальника их отдела и уже над ним проведите опыт на проверку знания матчасти. Действует великолепно…
Операторы сотовой связи борются за выживание всеми доступными (да и не доступными тоже, чего греза таить) способами. Одним из них является выпуск собственных мобильных телефонов. В основном это телефоны малого и среднего бюджетного класса, но в последнее время наметилась тенденция выпуска более качественных моделей и даже смартфонов.


Оператор мобильной связи «МТС Украина», сообщила о выпуске первого мобильного телефона, выпущенного под собственным брендом МТС. Такая новинка получила название МТС 236. Производителем телефона является корпорация ZTE.

«ВымпелКом» продает сегодня под брендом «Билайн» две модели бюджетных телефонов «Билайн А100» и «Билайн С100», смартфон «Билайн Е300» и планшетный компьютер «Билайн М2». Премьера этой линейки брендированных устройств состоялась в декабре прошлого года.

«МегаФон» предлагает своим абонентам телефоны и смартфоны, модемы с разными скоростными возможностями, в том числе до 21 Мбит/с, нетбуки, Wi-Fi-3G-роутеры, MMS- и видеокамеры, MMS-фоторамки и т.д. Большинство этих устройств производит одна из крупнейших китайских компаний в сфере телекоммуникаций Huawei Technologies, нетбуки – компания «Lenovo» (бывший IBM). Наиболее доступным из брендированных телефонов «МегаФон» является модель Huawei G2200 – простой и удобный телефон, предназначенный для звонков и отправки SMS.

МТС вывела на рынок 11 телефонов под собственным брендом, а также ко-брендированные аппараты МТС-Nokia 2710 и Nokia X3 Touch and Type. В линейке брендированных телефонов есть бюджетные модели (МТС 236), устройства для бизнес-пользователей (МТС Business 840), 3G-телефоны (МТС 733, 736, 835, МТС Business 840), модели с сенсорным экраном (МТС Trendy Touch 547, МТС Touch 540). В ноябре 2010 года в линейке телефонов МТС появился первый смартфон МТС 916 Android, а в декабре – первый планшетный компьютер МТС. Для выпуска брендированного оборудования МТС сотрудничает с различными производителями: Nokia, Alcatel, ZTE, Huawei.

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

В Китае пошли еще дальше и готовят к выпуску новую ОС WoPhone на основе ядра Linux. ОС найдёт применение прежде всего в смартфонах и планшетных компьютерах. Устройства на базе WoPhone уже готовят такие известные производители, как Samsung, Motorola Mobility и HTC, а также китайские ZTE и Huawei Technologies.

Я намеренно не упоминаю о корпорациях Vodafone Group и Orange, крупнейших европейских операторах мобильной связи, давно выпускающих под своим брендом мобилки. Думаю их все и так знают )
Плохо это или хорошо, не мне судит, но в выпуске операторами собственных телефонов, смартфонов, операционных систем и так далее есть множество положительных факторов, основным их которых является конкуренция. Которая так или иначе приведет к улучшению качества предоставляемых услуг. Я надеюсь :)
Приветствую вас.
Когда я заканчивал последний год обучения в школе, точнее отрабатывал решение тестов по ЕГЭ, я уже выбрал сферу в которой хотел получить профессию. Да, это IT. Выбрал как-то само собой, вообще не мучился. Конечно же подал документы в технический университет. И вот, заполняя анкету, нужно было выставить приоритеты по направлениям. Первой в списке я и поставил программную инженерию. Осознанно. Хотя мои представления об этой специальности не были до конца полны на тот момент. Ну собственно как выбрал, так туда и попал…

Первый семестр


Естественно учеба в университете была в новинку, много впечатлений и т.д. Направление «Программная инженерия» появилась в университете впервые. По нему готовят бакалавров, т.е 4 года обучения, затем можно пойти в магистратуру. Группа собралась из 14 человек (кстати, по завершению курса осталось всего 10)

В первом семестре были достаточно стандартные дисциплины.
А именно:
– Иностранный язык (ну, тут очень стандартно)
– Математический анализ (классический предмет)
– Алгебра и геометрия (матрицы и векторы)
– Отечественная история (от начала и до новейшей за один семестр, ага)
– Информатика (консоль windows и OpenOffice)
– Физкультура (опять стандартно)
– Введение в специальность
– Алгоритмизация математических задач .

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

По завершении семестра сдавали экзамены по Алгебра и геометрии, Информатике и Отечественной истории.

Второй семестр


О, а вот тут уже интересно.
Итак, перечислю дисциплины:
– Безопасность жизнедеятельности (куда без нее)
– Математический анализ (опять он)
– Иностранный язык (продолжаем изучение)
– Физкультура (аналогично)
– Дискретная математика (множества, графы и Булевы функции)
– Теория решения изобретательских задач
– Программирование на языке высокого уровня
– Основы программной инженерии

Три последних предмета представляют наибольший интерес.
Теория решения изобретательских задач – очень интересная дисциплина. Она меняет стиль мышления. Занятная концепция.
Программирование на языке высокого уровня, тут мы приступили к изучению великого и ужасного С++. Курс лекций параллельно с практическими занятиями. Ну, занятия – как занятия, за семестр 26 лабораторных работ. Некоторые темы лабораторных: Циклические вычислительные процессы, Обработка числовых последовательностей с использованием вектора, Матрицы, Массивы, Строки, Функции библиотеки для работы со строками и символами, Реализация стека и очереди, Указатели на функции, Рекурсивные функции, и другие. В общем за семестр изучили азы, достаточно так хорошо изучили.
Основы программной инженерии – вводный такой курс. Начиная от истории программирования, да разбора стандартов. Плюс еще касательно самого программирования – параллельное изучение среды BlackBox. Ну и реализация некоторых тех же лабораторных работ по Программированию на языке высокого уровня.

Экзамены сдавали следующие: Математический анализ, Дискретная математика, Основы программной инженерии и Программирование на языке высокого уровня.

Впечатления


Курс выдался интересным и главное – познавательным. Так как направление новое, может оказаться, что учебный план будет сырым, но очень радует энтузиазм преподавателей. Хотя, это конечно первый курс. Основное обучение по данному направлению будет на третьем и четвертом. Как говорится дальше — больше.

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

Ну, вот я и поведал вам об организации учебного процесса в моем университете
Говорят первый мобильный телефон появился в 1983 г и это была Motorola DynaTAC 8000X весом 1,5 кг. Я этого не помню, но пусть так и будет ) Стандарты менялись и так привычный нам GSM появился лишь в 1992г в Германии. Этого я тоже не помню, конечно. Нам было очень далеко до продвинутых Западных стран. А вот помню были в моде рации году так 1996. Так называемые «славные 90-е». Каждый уважающий себя «мафиози» имел рацию, хотя в России еще с 1994 года уже был запущен первый оператор «Северо-Западный GSM».

Году так в 1999 у нас уже вовсю начали продавать мобилки. Подключение стоило нереально дорого, минута разговора и того дороже. Поэтому практиковалась покупка мобильника без подключения. Просто ходили с трубой в руках, дабы показать свое крутое положение в обществе. Да и девушкам нравились парни с мобилой, это же круто. Чтобы поговорить (это тем, у кого хватало денег на разговоры) приходилось еще и найти место, где есть прием. Даже посреди дороги останавливались.

В 2000 и я приобрел себе первый свой мобильник. И понеслось. Первый быстро надоел, да и в новых моделях были функции, ранее не доступные. Например WAP. Благодаря которому я потерял за буквально пару минут около 15 долларов, так как телефон был настроен на немецкого провайдера ) 4х тональная полифония, цветной (если можно так выразится) дисплей, раскладушки. Мобильники стали развиваться не по годам, а прямо по месяцам. Первый смарт оставался недостижимой мечтой. Великолепный сименс SX1, как же я мечтал о нем…

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

Но что же происходит сейчас? Качество связи постепенно возвращается в далекие 90е, иногда удается дозвонится не с первого раза. Смартфоны и телефоны штампуют пачками, предлагая всё новые технологии, забывая о качестве. Постоянные зависания, глюки, пропадание данных из-за этих самых глюков. Тач, мультитач, современные дисплеи, «необходимые приложения» типа фэйсбука или чата. Сейчас вот готовят к выпуску ViviTouch, с возможностью тактильной отдачи. Всё это продолжает поражать воображения, но не приносит удовлетворения из-за отвратительного качества. Гонка за технологиями превращает наши любимые игрушки лишь в средства наживы их производителями, забывая о нас, рядовых потребителях. Люди приобретают Ифоны не для пользования их возможностями, а потому что «в бане на столе стыдно с сирокко» (цитата моего шефа). То есть это просто модный и дорогой аксессуар, а не нашпигованный технологиями аппарат.

Собственно что нас ждет дальше? Вопрос без ответа.

Продал смарт, купил звонилку, ушел с некогда любимого сайта и пока забил на все эти технологии, пытаясь дозвониться до абонента хотя бы с третьего раза… Хотя иногда подмывает взять какой-нибудь Galaxy и вновь начать его прошивать, взламывать (что будет трудно в связи со сложившейся ситуации с сертификатами), апгрейдить, модернизировать и так далее. Что скажете, стоит ли?
Хочу представить вашему вниманию новый замечательный мини-сервис. В данной статье я затрону не только описание идеи сервиса, но и некоторые технические моменты.

Задача: получить возможность быстро опубликовывать тексты и картинки в Twitter и Facebook из веб-браузера за максимально короткое время и самым простым способом (без установок, скачиваний и перезапусков веб-браузеров и ПК)!

Используемые технологии для решения задачи: Nginx, FastCGI, Django, PHP, MySQL, Memcached, jQuery (это мой первый проект на Django).

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

Быстрая публикация текста

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



Как видно на скриншоте, я еще умудрился прикрутить собственный сервис коротких ссылок. Это не изобретение велосипеда, просто захотелось в будущем иметь возможность предоставлять авторам коротких ссылок расширенную статистику жизни ссылок в личном кабинете на migla.com.

Быстрая публикация картинок с сайтов

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



Тут у вас, наверно, возникнет вопрос, а как в Twitter мы публикуем картинки. К сожалению, пока что Twitter не предоставил нам возможности делать это с их помощью. Поэтому пришлось реализовать собственный сервис закачки картинок и генерирование для картинок коротких ссылок, которые автоматически прикрепляются к Twitter и по которым тоже собирается статистика для автора поста.
Во время разработки нам больше понравилось работать с API Facebook, чем c API Twitter. Наверно, из-за того что там предусмотрена работа с закачкой картинок на стену пользователя.
С точки зрения технологии Highload я постарался разделить наиболее часто используемый функционал по разным FastCGI-серверам (закачка и обработка картинок, переход по коротким ссылкам, отправка сообщений в сервисы) — чтобы в случае экстренной необходимости их можно было быстро вынести на другие облачные сервера. В качестве хостера использую облако Оверсан-Скалакси. Кстати, по умолчанию у них можно купить сразу только четыре внешних IP-адреса. Но в случае, если нужно еще больше, их техподдержка очень быстро отвечает и увеличивает квоту.

Что у нас в планах:

Реализовать удобный раздел вывода статистики по коротким ссылкам.
Добавить “Вконтакте”.
Добавить Evernote.
Объединить текстовые плашки и плашки с поддержкой картинок в одну общую.
Авторизация через Twitter, Facebook, “Вконтакте”.
Для Америки и Европы открытие WWW-серверов у западных хостеров — чтобы быстрее приходил ответ от сервера. Всё же в этом плане, мне кажется, они более капризны.



P. S. Во время работы над проектом возникла мысль, как бы мог измениться наш мир, если бы у всех браузеров появился единый API разработки приложений и они распространялись, устанавливались и запускались как приложения в AppStore или Аndroid Market. Ну и соответственно, если бы сами приложения были не шуточные! Например, полноценный редактор текста на основе Google Docs (а то у меня при редактировании больших документов всё подвисает, ибо тяжело обходить в браузере большие DOM-узлы).
Эта небольшая статья рассказывает, как я на базе проекта создал тестилку джойстика, которая просто и наглядно визуализирует качество его работы.

Предистория

Возникла мысль приделать на подвижную платформу какую-нибудь плату с ОС для управления, Wi-Fi для связи с основным терминалом, web cam для передачи на терминал видео ну и с прочими полезными штуками, которые можно подключить в зависимости от пожелания. Среди прочих проблем, встал вопрос собственно управления ходовой. Клавиатура мне показалась не самым красивым решением, и я захотел использовать игровой джойстик.

Реализация

Задача-считывать код АЦП джойтика, и передавать его на удаленное ПО, которое потом уже будет разбираться что с ним делать далее. В считывании кода помог проект, обозначенный выше. Однако захотелось большей наглядности. Тогда я решил координаты джойстика привязать к курсору мыши. Для этого в проекте файл frmMain.cs был переделан до следующего:



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace JoystickSample
{
public partial class frmMain : Form
{
private JoystickInterface.Joystick jst;

public frmMain()
{
InitializeComponent();
}

private void frmMain_Load(object sender, EventArgs e)
{
// grab the joystick
jst = new JoystickInterface.Joystick(this.Handle);
string[] sticks = jst.FindJoysticks();
jst.AcquireJoystick(sticks[0]);

// add the axis controls to the axis container
for (int i = 0; i < jst.AxisCount; i++)
{
Axis ax = new Axis();
ax.AxisId = i + 1;
flpAxes.Controls.Add(ax);
}

// add the button controls to the button container
for (int i = 0; i < jst.Buttons.Length; i++)
{
JoystickSample.Button btn = new Button();
btn.ButtonId = i + 1;
btn.ButtonStatus = jst.Buttons[i];
flpButtons.Controls.Add(btn);
}

// start updating positions
tmrUpdateStick.Enabled = true;

ScrY = SystemInformation.PrimaryMonitorSize.Height;//разрешение по Y
ScrX = SystemInformation.PrimaryMonitorSize.Width;//разрешение по X
}

Point CursorPosition = new Point(Cursor.Position.X, Cursor.Position.Y);
int ScrX, ScrY;

private void tmrUpdateStick_Tick(object sender, EventArgs e)
{
// get status
jst.UpdateStatus();

// update the axes positions
foreach (Control ax in flpAxes.Controls)
{
if (ax is Axis)
{
switch (((Axis)ax).AxisId)
{
case 1:
((Axis)ax).AxisPos = jst.AxisA;
CursorPosition.X = (jst.AxisA * ScrX) / 65535;
break;
case 2:
((Axis)ax).AxisPos = jst.AxisB;
CursorPosition.Y = (jst.AxisB * ScrY) / 65535;
break;
case 3:
((Axis)ax).AxisPos = jst.AxisC;
break;
case 4:
((Axis)ax).AxisPos = jst.AxisD;
break;
case 5:
((Axis)ax).AxisPos = jst.AxisE;
break;
case 6:
((Axis)ax).AxisPos = jst.AxisF;
break;
}
}

}

// update each button status
foreach (Control btn in flpButtons.Controls)
{
if (btn is JoystickSample.Button)
{
((JoystickSample.Button)btn).ButtonStatus =
jst.Buttons[((JoystickSample.Button)btn).ButtonId - 1];
}
}
Cursor.Position = CursorPosition;
}
}
}


После запуска программы, мы видим численное значение АЦП джойстика, а также наблюдаем реакцию через движение курсора. Т.о. эта программа может помочь Вам оценить качество джойстика прямо в магазине, подключив его к ноутбуку.
Разбирал на днях старый хлам и наткнулся на gamepad внешне в идеальном состоянии только провод немного повреждён. Возникло желание использовать его по назначению но он оказался под gameport и подключать его просто некуда.


Зачем

Сам девайс имеет на борту крестовину и 8 кнопок:

Исходя из их расположения он хорошо подходит для эмуляторов старых консолей Sega, Nintendo, GameBoy.
Поискав на просторах глобального пришёл к выводу, что не хочу заниматься починкой его кабеля, что-бы затем выкинуть ~500 деревянных за адаптер USB-MIDI.

Как

И тут мне пришла идея взять контроллер из старой клавиатуры. В обще тут не принципиально какой PC/2 или USB, но PC/2 может оказаться занят, а на ноут/нетбуках его может не быть вовсе, USB в этом смысле универсален. Пару месяцев назад как раз развалилась noname клавиатура под USB, её и буду потрошить.

Этап 1

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

Этап 2

Играем в игру «Проведи ёжика через лабиринт к яблоку» изучаем схему контактных дорожек клавиатуры, gamepadа. В моём случае клавиатуре имеется три слоя плёнки верхний общие дорожки(8 штук), средний изолятор с перфорацией напротив контактов, нижний дорожки пересечения(18 штук). Из них нужны только 8, по 4 из каждого контактного слоя. С gamepadом проще но у него есть несовместимости, посторонние элементы в схеме, резисторы, конденсатор, транзисторы. Все их просто выпаеваем. Максимум клавиш NUMPAD-а на одном общем контакте 4 штуки а на gamepadе оказалось 5(левый шифт привязан к крестовине) но так как шифты вынесены на отдельные платки перенесём его на другую общую линию. Остальные общие линии не перегружены.
Выбираем раскладку для gamepadа:

крестовина — NUM: 7, 8, 9, +
кнопки 1, 2, 3, 4 — NUM: 1, 2, 3, Enter
кнопки 5, 6, 7(левый шифт) — NUM: 4, 5, 6
кнопка 8(правый шифт) — NUM: * (на этой же линии NumLock и "/" но слэш в запасе)


В запасе есть еще две основных линии на одной "-" а на другой «Ноль» и «Del»

Этап 3

Подготовим тонкие, многожильные, мягкие, желательно разноцветные провода, паяльник, припой, канифоль, кнопку кликер (для NumLock), изоленту, терпение.
Нужно залудить соответствующие контакты на контролере клавиатуры, задача усложнена нанесённой на них токопроводящей краской. Лудим 10 проводов длинной более 10см(для удобства) и несколько по 3-5см(на перемычки). 8 длинных проводов припаиваем к контролеру в соответственно, к общему на котором NumLock паяем кнопку и провод к другому контакту кнопки провод на на дополнительную линию NumLock на контролере. На платке gamepadа распаиваем крестовину и делаем перемычки для кнопок соответственно, для дополнительных линий, прямо, на дополнительные линии крестовины
основные линии не замыкаются между собой.
Подключаем к компьютеру, открываем блокнот и проверяем что получилось (диод NumLock должен светится и на контроллере и не клавиатуре компьютера) у меня:
798+123
546*
Если получилось нечто подобное(и все 12 нажатий происходят) изолируем контроллер и скручиваем gamepad.

Итого

Старый игровой манипулятор обрёл новое универсальное воплощение.
Таким способом можно оживить сразу несколько контроллеров для совместной игры.
Заняло по времени примерно день неторопливой работы включая изучение вопроса экспериментально.
Надеюсь кому-нибудь пригодится мой опыт.