Мобильный смс маркетинг на службе у бизнеса

Реклама всегда была двигателем торговли и успехом бизнеса, но при этом и достаточно затратным способом обретения клиентуры. Сегодня существует много методов рекламировать товар, однако не всегда результат достигает цели. 

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

СМС-рассылка сегодня является самым дешевым и доступным способом для продвижения любых товаров и услуг. 

Массовые смс сообщения используются во всем мире и являются самым эффективным мобильным маркетингом. Они дают возможность охватить большую аудиторию, с населением различного материального достатка, как внутри страны, так и за ее границей.
Данные статистов утверждают, что 90% рекламной смс рассылки читается в течение 3 минут, после ее получения.

 

SMS-fly

Достоинства информирования клиентов с помощью сервиса SMS-fly

Компания SMS-fly предлагает корпоративным клиентам и дилерам воспользоваться выгодными условиями смс-информирования клиентов. Сервис предлагает для рассылки как свою базу, так и базу операторов. Благодаря демократичным расценкам, массовая смс рассылка для пользователей сервиса SMS-fly станет удобным и выгодным инструментом рекламы вашего бизнеса.
С помощью сервиса SMS-fly, начать диалог с клиентом очень просто. Среди достоинств сервиса, можно выделить такие преимущества:
— возможность легкой регистрации;
— быстрое добавление альфаимени (период активации не займет более 10 дней);
— смс информирование клиента может производится как кириллицей, так и латинницей. 
— импорт контактов производится любым удобным способом с помощью функции вставки из буфера обмена. Загружать контакты возможно из файлов формата xls, txt, csv. Система автоматически очищает из базы дубли.
— пополнять баланс просто благодаря системе автоматических платежей. Оплата может производится как путем банковских переводов, так и через терминалы самостоятельного обслуживания.
— возможность проводить тщательный анализ рассылки благодаря получению детализированных отчетов о статусе отправленных сообщений.

Простой и удобный сервис SMS-fly — эффективный инструмент мобильного маркетинга

 Сервис SMS-fly  предлагает своим клиентам смс рассылку по гибкой системе ценообразования. За пятилетний период существования компании, ее услугами успели воспользоваться более 18 000 клиентов, которые высоко оценили удобный веб-интерфейс портала и его интеграцию через HTTP API.
Привлеките внимание своих клиентов с помощью смс рассылки от компании SMS-fly. Воспользуйтесь услугами сервиса и оцените массу его достоинств.

 

Malwarebytes Anti-Malware Free и HitmanPro — прграммы для удаления вредоносного ПО

Услуги по ремонту техникиОбычные антивирусные программы не справляются с обнаружением и обезвреживанием вредоносных программ. Malware наиболее распространённый вид вредоносного софта, которые проникают в систему пользователя без ведома последнего. Надоедливая мелькающая реклама в браузере, особенно в тех местах, в которых она ранее никогда не возникала и её там не должно быть вовсе или меняющаяся стартовая страница — вот первые признаки того, что в систему вашего ПК несанкционированно проникла вредоносная программа. Вывод прост: пора задуматься об обнаружении и удалении всех вредоносных файлов.

    К примеру, можно попробовать установить на свой ПК достаточно популярную программу Malwarebytes Anti-Malware Free и просканировать систему на предмет обнаружения, с последующим удалением, зараженных файлов. Программа имеет русский язык. Ознакомительной месячной версии вполне хватает, чтобы оценить работу программы и понять захотите ли вы впоследствии приобрести её для защиты своего ПК. Согласно обзорам данная программа имеет высокий уровень обнаружения вредоносного ПО.

    Программа HitmanPro также призвана бороться с вредоносным ПО на компьютерах. Она отличается от аналогичных программ прекрасной скоростью работы и количеством выявленных угроз, в том числе ранее удалённых, однако с оставшимися «хвостами» в системе. Данная программа платная, но имеет месячную демоверсию. Этого периода достаточно, чтобы основательно почистить свой ПК и удалить весь скопившийся мусор. Именно HitmanPro помогла многим решить проблемы с проникшим в систему вредоносным ПО.
    Любая из данных программ после сканирования предоставляет пользователю отчет с сомнительными файлами, подлежащих удалению. Среди них могут находиться нужные файлы с которых необходимо снять птички и только после этого соглашаться с удалением остальных файлов. Если для вас затруднительно определиться что удалять, а что нужно оставить можете просто воспользоваться услугами сведущих людей. К примеру, специалистов можно найти на сайте http://samodelkin.com.ua/ и за вполне приемлемую плату провести программный ремонт своего ПК или ноутбука. Здесь же, кстати, можно также провести и аппаратный ремонт компьютера или лэптопа.

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

В каких случаях требуется переустановка Windows

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

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

Установить Windows и настроить все ее функции для личного использования может опытный пользователь, понимающий, что и зачем он делает. Разные версии ОС устанавливаются по-разному, и требуют различных навыков пользования ПК и конфигураций оборудования, пригодного для установки.

Если есть необходимость использовать Windows 7, установка которой сложнее, чем для более новых версий ОС, пригодится знание того, что такое раздел жесткого диска, чем логический раздел отличается от физического. Также необходимо знать, сколько места оптимально выделить для установочных файлов и на каком диске лучше хранить пользовательские документы.

В случае переустановки Windows на версию 8, 8.1, 10, неподготовленный пользователь может столкнуться с некоторыми нововведениями. Допустим, в версии 8 интерфейс пользователя претерпел изменения, получив новую панель запуска приложений, в версии 8.1 также появились новые функции и возможности.

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

Появилась новая Opera для Android с поддержкой WebRTC!

opera

Уже как месяц была выпущена демо-версия Opera 20 для Android. Главная новинка, которой заключается в возможности поддержки WebRTC, дающая возможность «Real-Time Communications» — «Связь в реальном времени». Это набор API, позволяющие разным браузерам иметь связь с друг другом и по P2P передавать данные с шифрованием.

Бета-версия Opera 20  — реализует проект  WebRTC поддерживающий самые крупные производители браузеров, а именно: Google, Mozilla и Opera. Это значит, что Opera присоединяется к Google Chrome и Firefox Mobile для поддержки связи без плагинов, а также будет  использовать совместные  технологии.

46ce6dfa7e317a0a15c20ba264f5422aИ вот, наконец, долгожданный день, когда Opera  стала официально поддерживать WebRTC. Теперь у пользователей появилась возможность общаться в режиме текущего, реального времени, без запуска таких приложений как Skype.  Обновив последнюю бету Opera для Андроида, и зайдя на Appear.in , Вы с легкостью сможете общаться со своими друзьями по видео!

В обновленной Opera появились такие функции и возможности: папки на «Экспресс-панели» можно называть своими именами, режимы интерфейса можно переключать для телефона, в классический и планшетный режимы.

i

Появилась новая возможность Vibration API, при которой сайт может вибрировать, а главное WebRTC с удобным чатом appear.in.

Заходите на https://appear.in/ и общайтесь со своими друзьями и родными!

 

автор: Кононова София Геннадьевна

Появилось новое приложение Flipboard для ОС Windows 8.1.

154748447-786x305

Уже сегодня на витринах магазина Windows Store есть новое приложение  Flipboard для ОС Windows8.1. Можно подметить то, что те пользователи, которые уже обращались к сервису  Flipboard на своих устройства под управлением или Android или ОС iOS могут не особо рассчитывать на совершенно новое приложение, благодаря которому взаимодействует  при работе устройство  с клиентом для ОС Windows 8.1. Хотя конечно пользователь сможет оценить модернизацию приложения и ее функциональность.

Это приложение совмещает различные материалы с множества известных новостных ресурсов о всем мире. Выглядит это как очень полный самой интересной информацией глянцевый журнал. Как только приложение устанавливается  на начальном экране Windows 8.1, показывается надлежащая плитка–« live tile». Плитка приложения Flioboard имеет главную функцию отражать информацию в режиме прямой трансляции. Для отдельной отрасли пользователь самостоятельно может создать дополнительные «живые» плитки.

 

table-of-contents2_isolated-520x315

В сервисе элементы можно управлять с помощью жестов. Например, что бы сделать доступные для управления панели дополнений и командам: « Обновить», «Подписаться», «Вынести на главный экран» следует всего лишь пальцем провести от края экрана вверх. Существует также поддержка режима Snap View , которая дает такую возможность как запуск на экране  Flipboard  параллельно  другим приложениям, и высвечиваться будут оба. Также сообщим, что приложение поддерживает портретный режим и планшеты, имеющие диагональ 7 — 8 дюймов .

Twitonomy — полная статистика аккаунтов в Twitter

twitonomiСтатистика – известное и распространенное направление науки в мире. Она используется во множестве сфер жизни – от экономики до политики. Статистические данные чрезвычайно важны для сферы бизнеса и предпринимательства, так как позволяют оценить эффективность работы и спрогнозировать дальнейшее развитие предприятия. Различные статистические анализы активно используются и в Интернете, где собираются данные о посещаемости сайтов и многое другое. А теперь полная статистическая информация стала доступна и для аккаунтов в популярном сервисе микроблогов Twitter, благодаря проекту Twitonomy.com

Интернет-сайты, социальные сети и сервисы блогов давно стали не только интересным способом делится информацией с обширной аудиторией, но и серьезным бизнес-инструментом для многих компаний. Множество маркетологов и SMM-специалистов ежедневно курируют и обновляют соответствующие аккаунты, группы и блоги, которые используются для раскрутки торговых марок, товаров и услуг. Оценить эффективность их работы помогает статистика посещений соответствующих ресурсов и блогов. Благодаря стартапу «Twitonomy» весь спектр статистических данных теперь доступен для сервиса микроблогов «Twitter».

Такой удобный статистический инструмент как «Twitonomy» пригодится не только упомянутым выше специалистам, ведущим бизнес-блоги, но и простым блоггерам, которым хочется знать, насколько популярными являются их аккаунты среди других пользователей. Для того чтобы увидеть всю статистическую информацию о блоге, пользователям нужно посетить сайт проекта и авторизироваться на нем, используя учетную запись в «Twitter». При этом с помощью кнопки «Add a user» можно добавить в систему для анализа также и аккаунт другого пользователя. «Twitonomy» также предоставляет статистические данные по ключевым словам.

Однако наибольший объем статистическим данных доступен именно для основного аккаунта, подключенного к сервису. Пользователь может просмотреть подробную информацию о собственных подписчиках (фолловерах) и других аккаунтах, на которые подписан он. Расширенные данные о читателях и читаемых блогах отображаются в виде таблицы, где есть краткое описание блога, указывается взаимность фолловера и количество твиттов, количество подписчиков и читаемых микроблогов, информация о вхождении в списки, время внесения последних обновлений Twitter-аккаунта, и язык микроблога.

«Twitonomy» позволяет увидеть и другую важную для блоггера информацию – такую как количество ретвитов, и потенциальный рейтинг аккаунта (количество подписчиков, которые могли бы увидеть определенную запись). Доступной является и полная статистическая информация об аккаунте — количество твиттов по месяцам, количество хэштегов и упоминаний аккаунта, а также список самых популярных записей, исходя из количества ретвиттов. Важным преимуществом сервиса «Twitonomy» является возможность перенесения всех записей из анализируемого аккаунта в Excel-документ.

twitonomi2

Несмотря на то, что стартап «Twitonomy» доступен пока только на английском языке, благодаря достаточно простому подключению и управлению, разобраться в его работе совсем не сложно. И уж точно это стоит сделать тем, для кого статистика их микроблогов откроет новые возможности в различных публикациях.

MyTeamVoice — новый взгляд на голосовое общение в играх

myteamvoise MyTeamVoice — новый сервис, который предлагает взглянуть по-новому на виртуальные игровые миры, используя голосовое общение между игроками.

Для многопользовательских игр существует большое количество решений для голосовой связи между игроками. Все они схожи в одном: создается групповой голосовой чат, в котором все игроки могут говорить со всеми. Зачастую игроки разбиваются и общаются небольшими группами, используя голосовые комнаты, и при необходимости переходят между ними. Иногда голосовая связь уже встроена в игру и позволяет сразу говорить со всеми.

MyTeamVoice предлагает взглянуть на ситуацию шире. Нужно понимать, что далеко не всегда всей команде нужно иметь возможность говорить всем со всеми, т.к. любая попытка подобных переговоров превращает их в сплошной шум.
В реальном мире пользователи профессиональной спец. связи (военные, пожарные, полиция и др.) могут поддерживать разговор с несколькими группами одновременно, и имеют возможность параллельно переговариваться с кем-то лично, не мешая остальным. Именно это и предлагает MyTeamVoice игрокам — использовать голосовую связь так, как это делают профессионалы в реальной жизни.
В зависимости от жанра игры игрокам, помимо общения, нужны инструменты для эффективной коммуникации и управления другими игроками, будь то отряд солдат-пехотинцев, эскадрилья самолетов, танковое соединение или гильдия идущая в рейд на дракона.

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

myteam

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

На данном этапе сервис MyTeamVoice в стадии бета-тестирования и любая команда может ощутить все преимущества уже сейчас и абсолютно бесплатно.
Команде достаточно зарегистрироваться на сайте сервиса www.MyTeamVoice.com, в два клика создать свой голосовой сервер, скачать клиентскую программу для Windows и начать игру.

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

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

До встречи в MyTeamVoice!

Android. Особенности работы с SQLite

В настоящее время все большую популярность набирает OS Android. С ростом популярности платформы расширяется и круг задач, которые пользователь хочет решить здесь и сейчас. Среди задач встречаются такие, которые требуют обработки большого объема данных за приемлемое время, так, например, полнотекстовый поиск по базе. В качестве базы данных на OS Android используется SQLite. Для работы с SQLite существует пакет android.database.sqlite. Однако данный пакет содержит только набор инструментов для работы с базой. Он не является фреймворком, регламентирующим подход к реализации доступа к данным.

На данный момент Google не предоставляет подробных рекомендаций по работе с базой данных. В официальной документации приводится лишь 2 простых примера, использующих SQLite (“NotePad” и “SearchableDictionary”). Поэтому программисты сами вырабатывают собственные подходы к реализации работы с базой данных, и, как результат, возникает множество различных способов – зачастую неверных.

Выработать правильный подход к реализации достаточно сложно. Основными проблемами являются слабо документированные и неочевидные особенности в классах пакета android.database.sqlite.

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

database is locked – возникает при многопоточной записи в базу.

database is closed – может возникнуть при работе с базой из разных частей программы, например, Activity и Service.

corrupted database – возникает, если файл базы данных был испорчен либо пользователем, либо при неожиданном прерывании записи в базу (выключение телефона, ошибка OS, нехватка пространства, битые сектора на SD карте и т.д.)

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

Рассмотрим подробно как причины возникновения и возможные «неявные» проявления данных проблем, так и методы их решения.

Проблема “database is locked” (она же многопоточность)

У программистов часто возникают вопросы “Как лучше работать с SQLiteOpenHelper“. Действительно – поскольку к слою доступа к данным может обращаться практически любая часть программы (сервис, presenter, widget … ), то SQLiteOpenHelper должен быть доступен везде, где есть Context. Также встает вопрос, стоит ли для каждой части программы создавать свое соединение с базой, увеличится ли от этого скорость выполнения запросов. Возникают вопросы о многопоточном доступе к базе, и, конечно, о блокировках при записи.

Прежде всего, нужно отметить, что блокировки в SQLite выполнены на уровне файла. Это гарантирует блокировку для изменений из разных потоков и соединений. Причем читать базу может много потоков, а писать только один. Более подробно о блокировках в SQLite можно узнать из документации SQLite. Нас же интересует именно API, предоставляемое OS Android.

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

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

Если вы пишете из двух потоков разных соединений, то произойдет ошибка – ваши данные не запишутся в базу, а приложение вылетит с SQLiteDatabaseLockedException.

Становится очевидным, что приложение всегда должно иметь только один экземпляр SQLiteOpenHelper (именно открытого соединения), иначе в любой момент может возникнуть SQLiteDatabaseLockedException.

Разные соединения в одном SQLiteOpenHelper

Всем известно, что SQLiteOpenHelper имеет 2 метода предоставляющих доступ к базе getReadableDatabase() и getWritableDatabase(), соответственно для чтения и записи данных. Однако в большинстве случаев реальный сonnection один. Более того, это один и тот же объект:

SQLiteOpenHelper.getReadableDatabase()==SQLiteOpenHelper.getWritableDatabase()

Это означает, что нет никакой разницы, с помощью какого из этих методов читать данные. Но гораздо важнее другая недокументированная особенность – внутри класса SQLiteDatabase есть собственные блокировки – переменная mLock. Блокировки для записи на уровне объекта SQLiteDatabase, а поскольку на чтение и запись экземпляр SQLiteDatabase один, то чтение данных тоже блокируется. Особенно хорошо это видно при записи большого объема данных в транзакции.

Помимо внутренних блокировок класс SQLiteDatabase имеет еще одну интересную особенность: данный класс (до API 11) позволяет создавать транзакции только в режиме exclusive transaction. Из-за этого при активной работе с БД могут возникать задержки. Рассмотрим пример приложения, которое при первом старте должно в фоне скачать большой объем данных(~7000 строк содержащих BLOB) и сохранить их в базу. Если данные сохранять в транзакции, то сохранение занимает ~45сек, но при этом пользователь не может пользоваться приложением, поскольку все запросы на чтение заблокированы. Если же данные сохранять маленькими порциями, то процесс обновления данных затягивается на достаточно долгий срок (~10-15 минут), зато пользователь может все это время без каких-либо неудобств безболезненно пользоваться приложением. “Палка о двух концах” – или быстро, или удобно. Причины данной проблемы и некоторые выводы более подробно освещены в статье Kevin Galligan “Android Sqlite Locking”.

Как же бороться с данным “стандартным” поведением? В новых версиях Android, начиная с API 11, Google уже начали исправлять часть проблем связанных с работой SQLiteDatabase – были добавлены такие методы как:

beginTransactionNonExclusive() – создает транзакцию в “IMMEDIATE mode”.

yieldIfContendedSafely() – временно завершает транзакцию, для того, чтобы другие потоки могли выполнить свои задачи.

isDatabaseIntegrityOk() – проводит проверку целостности базы данных.

Более подробно описано в документации.

Однако для старых версий Android тоже необходим данный функционал.

Решение

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

SQLiteDatabase.setLockingEnabled(false); Отменяет использование внутренней блокировки запросов – на логическом уровне java класса (не связано с блокировками в терминах SQLite).

SQLiteDatabase.execSQL(“PRAGMA read_uncommitted = true;”); Позволяет читать данные из кеша. По сути, изменяет уровень изоляции. Данный параметр должен устанавливаться для каждого соединения заново. Если соединений несколько, то оказывает действие только на то соединение, которое вызвало данную команду.

SQLiteDatabase.execSQL(“PRAGMA synchronous=OFF”); Изменить способ записи в базу – без “синхронизации”. При выключении данной опции, база данных может быть повреждена при неожиданном сбое системы, либо отключении питания. Однако согласно документации SQLite некоторые операции при выключении данной опции выполняются более чем в 50 раз быстрее.

К сожалению не все PRAGMA поддерживаются в Android, например “PRAGMA locking_mode = NORMAL” и “PRAGMA journal_mode = OFF” и некоторые другие не поддерживаются. При попытке вызвать данные PRAGMA приложение вылетит с ошибкой.

В документации для метода setLockingEnabled сказано, что данный метод рекомендовано использовать лишь в том случае, если вы уверены, что вся работа с базой ведется из одного потока. Нам придется самим гарантировать, что в единицу времени будет выполняться только одна транзакция. Также вместо транзакций по умолчанию (exclusive transaction) нужно использовать immediate transaction. В старых версиях Android (ниже API 11) нет возможности создать immediate transaction через java обертку, однако сам SQLite данный функционал поддерживает. Для инициализации транзакции в immediate mode нужно выполнить следующий SQL запрос напрямую к базе данных,- например через метод execSQL.

SQLiteDatabase.execSQL(“begin immediate transaction”);

Поскольку инициализируем транзакцию мы прямым запросом, то и завершать её нужно аналогично: SQLiteDatabase.execSQL(“commit transaction”);

Осталось только реализовать свой TransactionManager, который будет инициировать и завершать транзакции нужного типа. Задача TransactionManager – гарантировать, что все запросы на изменение (insert, update, delete, DDL запросы) происходят из одного потока.

Проблема “database is closed”

При работе с базой из одной Activity через SQLiteOpenHelper, очевидно, что открывать базу нужно с открытием Activity, а закрывать при закрытии Activity. Но если с базой работает одновременно несколько Activity, несколько Service и часть данных расшаривает ContentProvider, то возникает вопрос: “когда следует открывать и закрывать соединение с базой?”. Если открывать и закрывать соединение после каждого запроса,- то скорость обращения к базе упадет в разы, а если открывать при старте приложения и закрывать при выходе,- то непонятно, когда мы выходим из приложения (а если сервис еще работает, или провайдер еще используется – остается только метод Application.onTerminate()). Но не один из этих методов не является верным. Соединение с базой может закрыться автоматически при следующих условиях:

Если несколько Activity независимо друг от друга будут открывать новые соединения, то может возникнуть ошибка, описанная в предыдущем пункте “database is locked”.

Если открывать соединение с базой при старте приложения и закрывать при Application.onTerminate(), то соединение с базой может закрыться само при очередном вызове Cursor.getCount() или Cursor.onMove(). Если детально просмотреть исходный код соответствующих классов, то видно, что при определенной комбинации условий в конечном итоге будет вызван метод SQLiteDatabase.onAllReferencesReleased(), который вызывает нативный метод dbclose(). Более детально данная проблема освещена здесь, последовательность вызовов и необходимые условия описаны тут.

Возможно, это одна из причин, по которой “ManagedCursor” объявили “Deprecated”.

Данная проблема широко известна и для ее решения предложено множество способов.

Вариант 1

При каждом обращении к базе проверять,- закрыта база или нет, и если закрыта, то переоткрывать её заново.

public synchronized SQLiteDatabase getReadableDatabase() {

SQLiteDatabase db;

try {

db = super.getReadableDatabase();

}

catch (SQLiteException e) {

Log.d(Constants.DEBUG_TAG, e.getMessage());

db = reopenDatabase(dbFile.getAbsolutePath(), null);

}

return db;

}

У данного метода есть очевидный недостаток – если мы обратились к базе, а затем сохранили ссылку на уже открытый экземпляр, и используем полученный экземпляр, не вызывая SQLiteDatabase.getReadableDatabase(), то данный метод не сработает.

Вариант 2

Принудительно добавить фиктивную ссылку на базу и держать её пока база используется SQLiteClosable.acquireReference();

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

Вариант 3

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

Вариант 4

Использовать ContentProvider для доступа к базе. Причем желательно использовать именно один провайдер – это легко реализовать, поскольку ему можно добавить неограниченное количество Uri. Суть заключается в том, что ContentProvider сам следит за состоянием базы данных. А вопрос о том, когда базу пара закрывать ложится на OS – она сама удалит старые провайдеры из памяти и вернет их при первой необходимости.

Про работу с ContentProvider подробное описание есть на официальном сайте.

Проблема “corrupted database”

На Android телефонах очень мало места отводится под приложения и это место нужно беречь, иначе пользователь пожертвует вашим приложением в пользу очередной игрушки. Почти все приложения используют базу для хранения данных, и если база слишком большая, то её очень желательно хранить на SD карте. Старые версии Android (2.2 и ниже) не позволяют создавать базу на SD карте через стандартные средства SQLiteOpenHelper, но это можно обойти, если использовать AndroidConnectionSource от ORMLite.

Нужно помнить – все, что видно пользователю может быть удалено. Пользователь может удалить или иным образом испортить файл базы данных, может вынуть SD карту из телефона, и многое другое. Но база может быть испорчена не только пользователем. Телефон – устройство с ненадежным питанием – часть данных может не записаться (особенно актуально – если отключено журналирование), база может быть повреждена при скачивании или при использовании предустановленной базы и т.д. Более подробно, о причинах порчи базы можно узнать из статьи “How To Corrupt An SQLite Database File”.

Если разработчик никак не реализовал алгоритм восстановления базы, то Android сам создаст базу заново. Но бывают случаи, когда базу можно восстановить. Самый простой способ – запросить данные из всех доступных таблиц и вставить в новую базу. Но чаще достаточно выполнить команду “VACUUM” – данный метод пересоздает базу и восстанавливает максимум данных.

Очень часто есть необходимость создать приложение с предустановленными данными. Для этого можно собрать готовую базу и положить в папку raw, а в момент установки приложения база будет скопирована на устройство. Файл с базой лучше расположить именно в папке raw. Папка assets кажется более удобной, поскольку подвергается сжатию, но из данной папки невозможно получить данные объемом более 1 мб ([см. здесь), и поэтому приходится разбивать базу на отдельные файлы по 1мб – что весьма неудобно. Важно, что базу всегда нужно собирать именно на эмуляторе самой младшей из поддерживаемых версий. Поскольку если собрать предустановленную базу на Android 2.3, то на Android 2.2 возникнет ошибка “corrupted database”, хотя на устройствах 2.3 и выше база будет работать корректно.

Оптимизация запросов

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

Не нужно писать запросы, которые возвращают более 1000 строк или данные объемом более 1мб. Всегда используйте оператор limit. Если запрос возвращает более 1000 строк, то будет выдано предупреждение в лог, либо произойдет падение приложения – это зависит от количества свободной памяти и самого устройства. Если нужно отображать длинный список есть два решения:

a) нужно запрашивать список частями, а затем соединять при помощи android.database.CursorJoiner.

b) Реализовывать авто дополняемый список на интерфейсе (список с догрузкой).

Один запрос выполняется значительно быстрее, чем 2 отдельных. Лучше использовать join, но выполнить 1 запрос. Очень важен порядок ограничений на join – чтобы не получилось декартово произведение, из которого потом выбираются строки по оператору where.

Если нужно что-то изменить в базе – делайте это в транзакции. Это не только гарантирует целостность данных, но и значительно ускорит выполнение задачи. Дело в том, что при любом изменении в базе данных рядом с файлом базы создается файл изменений. Если вы делает 100 insert, то 100 раз создастся и удалится файл изменений, а если 100 insert находятся в транзакции, то файл создастся всего 1 раз.

Если нужно создать таблицу из уже существующих данных, то используйте INSERT AS SELECT (не выполняйте отдельные INSERT) – это значительно ускорит время выполнения.

Если вы получили из базы много данных за раз, и этот “большой” запрос повторяется не часто, то очищайте ненужную память SQLiteDatabase.releaseMemory().

В операторе where нужно сначала писать более простые условия.

SELECT * FROM tablename WHERE col1 LIKE ‘%string%’ AND col2 = 123456

работает в 3-4 раза медленнее чем

SELECT * FROM tablename WHERE col2 = 123456 AND col1 LIKE ‘%string%’

Правильное индексирование таблиц ускоряет выполнение запросов в 5-7 раз. Индексировать нужно в первую очередь те поля, по которым идет join, затем те по которым идет поиск. Причем лучше указывать направление работы индекса – например:

CREATE INDEX index_name ON table_name (column_name ASC).

Для больших таблиц с поиском используйте FTS3 это значительно ускоряет текстовый поиск по таблице. Вместо LIKE используйте MATCH, но помните что по умолчанию MATCH работает как поиск слова целиком, а не подстроки. Описание FTS3.

Заключение

В данной статье перечислены основные проблемы при работе с SQLite в Android. К сожалению, в API еще существует очень много пробелов, для решения ряда вопросов отсутствует необходимая документация, а также в процессе работы периодически выявляются ошибки в самой системе. Но радует тот факт, что с каждой новой версией Android API становится все гибче и полнее, ошибки исправляются, а документация расширяется.

Разработка мобильных приложений для бизнеса. Взгляд компании-разработчика


11 июля 2008 года компания Apple объявила о запуске магазина приложений App Store – обновления для iTunes Store. У пользователей iPhone и iPod появилась возможность устанавливать через магазин проверенные приложения сторонних разработчиков. Читать далее Разработка мобильных приложений для бизнеса. Взгляд компании-разработчика

Українські розробники роблять ставку на Windows 8


Більшість розробників бачать хороші перспективи в розробці застосунків під нову операційну систему.

Київ, Україна – 28 березня 2012 — Розробка застосунків під Windows 8 створює новий ринок і відкриває великі перспективи для українських розробників. Таку думку висловили розробники в ході опитування, що пройшло на найбільшій в Україну технічній конференції Microsoft SWIT у Києві. 49% опитаних вважають ринок дуже перспективним, більше 33% бачать хорошу можливість показати свої застосунки на міжнародному ринку. При цьому близько 7% вже планують зробити розробку під Windows 8 своєю основною спеціалізацією. Майже половина опитаних планує почати розробку застосунків під Windows 8 протягом півроку, ще 15% — відразу після виходу комерційної версії ОС.

«Розробники сприймають Windows 8 дуже позитивно. Ми сподіваємося, що вже найближчим часом в Windows Store з’являться перші програми, розроблені в Україні. Варто відзначити, що кілька застосунків українських авторів вже готові до публікації, і були успішно продемонстровано на конференції», — зазначив Андрій Терехов, директор департаменту стратегічних технологій «Майкрософт Україна».

Понад 22% опитаних розробників вважають, що нова версія операційної системи Windows буде стрімко набирати популярність після виходу комерційної версії, більше 25% відзначили, що вона в підсумку зможе потіснити конкурентів на ринку планшетів.

«Вихід Windows 8 — це нова епоха, нова величезна ніша для компаній. Вже більше десятка років ринок не відкривав таких великих перспектив для розробників. Наша компанія покладає на цю платформу дуже великі надії — ми отримуємо новий популярний сегмент мобільних планшетних рішень. Також відкривається ринок індивідуальних продажів — Windows Store, що дає можливість кожній компанії, що створює програмне рішення, робити масові продажі у всіх країнах світу. Ми вже підготували ряд експертів в області розробки рішень у стилі Metro і плануємо вийти на ринок із низкою своїх продуктів», — зазначив Володимир Ліщинський, генеральний директор компанії Digital Cloud Technologies.

В інтерактивному опитуванні, яке на замовлення «Майкрософт України» проводила компанія TouchPoll, взяло участь більше 220 розробників.

Перша книга для розробників на платформі Windows 8

Зорієнтуватися розробникам в новій сфері допоможе книга «Windows 8 для C# розробників», написана в співавторстві співробітником «Майкрософт України» Сергієм Байдачним, а також автором одного з перших українських застосунків для Windows 8 Сергієм Лутаєм. Це перший в світі довідник для розробників на платформі Windows 8.

Про конференцію Microsoft SWIT

Це найбільша в Україні технічна конференція, яка вже другий раз збирає розробників та ІТ-професіоналів. Минулого року темою конференції стали хмарні технології. У 2012 році ключові теми події — розробка для Windows 8 і Windows Phone. Конференція, що пройшла в Києві 22-23 березня, зібрала близько 800 розробників та ІТ-спеціалістів з усієї України, а також із-за кордону.

Microviewer — Скачать просмотрщик

Достойная замена надоевшему просмотрщику от Windows. Идеальный дизайн, удобное и интуитивное управление, быстрая работа, автоматически масштабирует и переворачивает ваши изображения.
Скачать просмотрщик

  • удобный просмотрщик
  • быстрая работа
  • стильный дизайн
  • масштабируемость изображений

Bancut — Скачать Блокиратор Рекламы

Удобный в использовании блокиратор рекламы. Распознает большинство видов рекламы, блокирует загрузку и её вывод на Ваш компьютер.

Скачать Блокиратор Рекламы 

блокировка баннеров
поддержка 99% браузеров
легкая настраиваемость
статистика

Фотоальбом — Скачать Tикно Фото

 Те, кто любит фотографировать, а затем просматривать свои фото при помощи компьютера, сталкиваются с такой задачей, как сортировка фото по датам.

Скачать Tикно Фото

Времени на данный процесс уходит много, но и после окончания этой рутинной работы удовлетворение может не наступить – просматривать фотографии стандартными Windows средствами не очень удобно. Данную проблему можно устранить в минимально быстрые сроки, для этого достаточно просто установить на компьютер уникальную программу Фотоальбом, которая позволяет работать с фотографиями, создавая интересные альбомы для просмотра.

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

Скачать Tикно Фото

Плеер — Скачать Tикно Проигрыватель

Удобный интерфейс и отличный дизайн – это минимум, что можно сказать о проигрывателе.

Скачать Tикно Проигрыватель

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

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

Скачать Tикно Проигрыватель

Планировщик — Скачать Tикно Планировщик

Занятые люди зачастую забывают о важных делах, которые запланированы на неделе или в выходные.

Скачать Tикно Планировщик

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

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

Скачать Tикно Планировщик

 

Закачки проще и быстрее с Ticno Downloader

Поиск и загрузка файлов всегда занимает уйму времени.

Скачать Ticno Downloader

Для более удобного и быстрого скачивания мы создали торрент-загрузчик Ticno Downloader, в котором есть все необходимые функции для работы с торрент-файлами. Ticno Downloader имеет удобный и понятный интерфейс, разобраться с которым сможет даже ребенок!

Наш торрент-загрузчик поможет вам быстро найти нужный файл в интернете и так же быстро скачать его на свой компьютер. Вы всегда будете знать, сколько времени осталось до полной закачки нужного файла — об этом вас проинформирует индикатор закачки.

  Кроме того, Ticno Downloader автоматически распределит все торрент-файлы по соответствующим категориям, что сэкономит ваше личное время!

Скачать Ticno Downloader

Multibar — скачать Мультибар. Он наведет идеальный порядок.

Multibar - скачать МультибарКогда вы активно пользуетесь компьютером, возникают серьезные проблемы с накопившимися файлами, ярлычками и папками на рабочем столе и в других директориях.

Скачать Мультибар

«Захламленность», безусловно, влияет на скорость обнаружения того или иного файла или документа. Мультибар наведет идеальный порядок на вашем компьютере, систематизировав имеющиеся данные. Быстрый доступ к файлам и папкам, запуск приложений в 1 клик, прогноз погоды — это лишь малая часть возможностей программы. Кроме того, возможности мультибара могут быть расширены за счет дополнений! Интерфейс Мультибара удобен и красив, а управиться с программой сможет даже ребенок.

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

Скачать Мультибар