Pull to refresh
7
0
Андрей Абакумов @ScratchBoom

User

Send message

Осторожнее с SQLiteDatabase.insert-ами

Reading time2 min
Views8.2K
Ковыряясь с базами данных в андроиде наткнулся на весьма неприятную вещь: методы SQLiteDatabase для вставки данных работают не совсем так, как написано в документации. Задача была простая: вставить запись и получить ее ключ для использования в другой таблице. В случае, если нужная запись уже имеется, хочется узнать ключ этой старой записи. Оказалось, что получить можно что угодно, кроме этого самого старого ключа.

Чтобы разобраться в этом пришлось поставить несколько опытов на кошках, зато теперь кое-что прояснилось.

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

Обзор онлайн редакторов звука и секвенсеров

Reading time4 min
Views36K
title


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

Пять бесплатных инструментов для выбора цветовой схемы сайта

Reading time2 min
Views234K
Один из самых важных факторов при создании уникального и узнаваемого дизайна — цвет. Грамотный выбор цветовой схемы может определить успех или провал сайта. Когда посетитель бросает первый взгляд на веб-страницу, то выбранные вами цвета посылают ему мгновенное сообщение об этой странице. К счастью, существует много инструментов, которые помогут выбрать правильную цветовую схему. Вот пять лучших из них.
Читать дальше →

Как вернуть иконки в трей в 11.04

Reading time1 min
Views5.4K
Наверное, многие уже знают что в 11.04 сильно переделали оформление рабочего стола. Также многие заметили, что пропал системный трей в верхней панели. Вот только не все знают как его вернуть. А делается это легко.

  1. В консоли набираем:
    gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"

  2. Релогинимся
  3. Продолжаем жить как раньше


И зачем они подёргали весь трей и апплеты, если у приложений на замену трею ничего и нет сейчас.

Логирование в Android приложениях

Reading time3 min
Views60K
Уверен, что всем разработчикам приложений на платформе Android знаком класс Log, позволяющий логировать различные события. По различным причинам, формат записи логов для каждого проекта может отличаться достаточно сильно — начиная от «AAA», «111111» и «I was here» до более-менее внятных — «Opening HTTP connection to habrahabr.ru». Под катом вы найдете пример функции, которая поможет навести порядок в логах.
Данный топик не претендует на оригинальность и универсальность. И поэтому, если в вашем проекте уже существует некий стандарт логирования событий, то смело проходите мимо — топик скорее ориентирован на начинающих разработчиков.
Читать дальше →

Пишем приложение под Android с поддержкой Cloud to Device Messaging (C2DM)

Reading time15 min
Views36K


Здравствуйте, читатели Хабрахабр!

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

Хотя C2DM является одной из фундаментальных возможностей платформы Android, информации о нем в рунете мало. Попытка изменить данную ситуацию и является одной из задач этого поста.

Под катом я расскажу, как написать простые клиентское и серверное приложения, покажу некоторые «подводные камни», а также дам ссылки на примеры кода.

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

Навыки проведения эффективной презентации

Reading time1 min
Views16K
4 февраля, в рамках серии внутренних образовательных семинаров, у нас выступил Евгений Марченков — эксперт по стратегическим технологиям компании Microsoft, обладающий многолетним опытом работы и выступления на ключевых мероприятиях компании.

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



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

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

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

Пример техзадания на сайт. Сэкономит время и нервы

Reading time2 min
Views41K
Сайт – всегда компромисс между разработчиком и владельцем, каждый из которых – профессионал в своей области.

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

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

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

под катом - выдержки из концепции сайта

Задача RMQ — 1. Static RMQ

Reading time4 min
Views67K

Введение



Задача RMQ весьма часто встречается в спортивном и прикладном программировании. Удивительно, что на Хабре ещё никто не упомянул эту интересную тему. Попробую восполнить пробел.

Аббревиатура RMQ расшифровывается как Range Minimum (Maximum) Query – запрос минимума (максимума) на отрезке в массиве. Для определённости мы будем рассматривать операцию взятия минимума.

Пусть дан массив A[1..n]. Нам необходимо уметь отвечать на запрос вида «найти минимум на отрезке с i-ого элемента по j-ый».



Рассмотрим в качестве примера массив A = {3, 8, 6, 4, 2, 5, 9, 0, 7, 1}.
Например, минимум на отрезке со второго элемента по седьмой равен двум, то есть RMQ(2, 7) = 2.

В голову приходит очевидное решение: ответ на каждый запрос будем находить, просто пробегаясь по всем элементам массива, лежащим на нужном нам отрезке. Такое решение, однако, не является самым эффективным. Ведь в худшем случае нам придётся пробежаться по O(n) элементам, т.е. временная сложность этого алгоритма – O(n) на один запрос. Однако, задачу можно решить эффективнее.

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

Фонетические алгоритмы

Reading time9 min
Views46K
Фонетические алгоритмы сопоставляют двум словам со схожим произношением одинаковые коды, что позволяет осуществлять сравнение и индексацию множества таких слов на основе их фонетического сходства.

Часто довольно трудно найти в базе нетипичную фамилию, например:
— Леха, поищи в нашей базе Адольфа Швардсенеггера,
Шворцинегира? Нет такого!
В этом случае использование фонетических алгоритмов (особенно в сочетании с алгоритмами нечеткого сопоставления) может значительно упростить задачу.

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

В этой статье я рассмотрю наиболее известные алгоритмы, такие как Soundex, Daitch-Mokotoff Soundex, NYSIIS, Metaphone, Double Metaphone, русский Metaphone, Caverphone.
Читать дальше →

Делаем игру Pinball на Игровом Движке Blender

Reading time1 min
Views3.7K
imageЗакончил перевод 5 главы книги Blender GameKit2

В главе рассказываются контруктивные особенности создания игры Pinball в BGE.

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

b3d.mezon.ru/index.php/Blender_GameKit_2/Pinball

В этой главе рассказывается об использовании новых логических блоков (Контроллер NAND, Сенсор Delay (задержка), система State (состояний), и Сенсор Actuator) созданных в рамках Apricot Project и появившихся в Blender 2.48.

P.s.
В следующей главе описывающей создание симулятора подводной лодки в BGE все эти элементы уже используются в полной мере.

SeekBar в настройках приложения

Reading time5 min
Views22K


Для создания экранов настроек Android предоставляет очень удобный набор виджетов, таких как CheckBoxPreference, EditTextPreference, ListPreference. В случае, если существующие виджеты по каким-либо причинам не соответствуют требованиям, можно создать свой собственный на базе существующих.

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

Копируем исходный код без нумерации строк

Reading time6 min
Views26K

Бывает при выводе информации требуется ее декорировать для лучшего восприятия, нередко оформление сопровождается в том числе и текстом. При выделении и копировании этой информации, оформление копировать не нужно, т.к. нужна только сама информация, и желательно в исходном виде. То есть при копировании часть выделенного текста не должна попадать в буфер обмена.
В моем случае это исходный код, который сопровождается нумерацией строк, так нагляднее и есть возможность сослаться на строку кода. Однако, если мы хотим скопировать часть кода, то он должен копироваться без номера строки.
Многие highlighter'ы этим грешат, при копировании кода копируют в том числе и номера строк. Выходят из ситуации по разному: либо используют хитрую верстку, при которой возможно несовпадении нумерации со строками (можно заметить на github например), или используют специальную кнопку, которая показывает в отдельном окне код без форматирования. Мне показались эти подходы неудовлетворительными, потому решил найти другое решение.
В данной заметке я опишу решение, к которому в итоге пришел. Решение, конечно, частное, но может кому то оказаться полезным в решении собственных задач.
Читать дальше →

Подсвечиваемый виджет в Android

Reading time5 min
Views19K

Здравствуйте, уважаемые хабражители. В данной статье описывается процесс создания «подсвечиваемого» виджета, то есть виджета, который можно выделить с помощью пятипозиционного манипулятора D-Pad, присутствующего во многих Android-устройствах в виде трекболов или кнопок. Эта статья ориентирована на подготовленного читателя, уже написавшего свой первый «Android hello, world». Думаю, не стоит рассказывать о преимуществах управления аппаратными клавишами на устройствах с ёмкостным экраном в холодное время года, так что сразу приступим к делу.
Читать дальше →

B-tree

Reading time6 min
Views215K

Введение


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

Основные операции в деревьях выполняются за время пропорциональное его высоте. Сбалансированные деревья минимизируют свою высоту (к примеру, высота бинарного сбалансированного дерева с n узлами равна log n). Большинство знакомо с такими сбалансированными деревьями, как «красно-черное дерево», «AVL-дерево», «Декартово дерево», поэтому не будем углубляться.

В чем же проблема этих стандартных деревьев поиска? Рассмотрим огромную базу данных, представленную в виде одного из упомянутых деревьев. Очевидно, что мы не можем хранить всё это дерево в оперативной памяти => в ней храним лишь часть информации, остальное же хранится на стороннем носителе (допустим, на жестком диске, скорость доступа к которому гораздо медленнее). Такие деревья как красно-черное или Декартово будут требовать от нас log n обращений к стороннему носителю. При больших n это очень много. Как раз эту проблему и призваны решить B-деревья!

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

Рецепт нагрузочного тестирования на JMeter

Reading time4 min
Views37K

Стоит ли вообще браться за JMeter


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

Составление сценария


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

MindDecider. Сколько стоит ваше решение?

Reading time3 min
Views2K

Ситуация


Принятие решений

Ежедневно каждый из нас принимает решения. Принятие решений — это один из важнейших видов деятельности человеческого мозга и большая проблема на пути создания искусственного интеллекта.
Решение – это процесс и результат выбора цели и способа действий. У решения можно выделить:
  • Стоимость (затраты) решения — негативные факторы, связанные с решением.
  • Выгода (выгодность, прибыль) решения — соответственно, позитивные факторы, связанные с решением.
  • Цена решения — соотношение стоимости и выгоды, при которых решение принимается.
Большинство решений принимаются человеком спонтанно, то есть без анализа ситуации. Причиной этого является сильное преобладание выгодности решения над стоимостью. В этом случае «анализ ситуации» несет в себе дополнительные затраты. Однако, при повышении стоимости или уменьшении выгодности решения внимание человека к ситуации увеличивается.
Читать дальше →

Proдвинутый папа — территория для IT пап

Reading time2 min
Views1.2K
Уважаемые Хабра-папы (а так же те, кто собирается стать папой в ближайшее время). Я папа, со стажем 2 года и в данном посте я хочу рассказать Вам о том, как родилась идея портала для пап Proдвинутый папа.



Давайте заглянем внутрь проекта

Строим мультикоптер, часть первая

Reading time5 min
Views42K
Часть 1 | Часть 2 | Часть 3 | Часть 4

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

Гексакоптер

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

Набор инструментов для построения графиков, блок-схем и диаграмм

Reading time3 min
Views179K


Есть много разных сервисов, облегчающих жизнь веб-разработчику или дизайнеру, в том числе создающих разные графики, диаграммы, блок-схемы и т.д. Ниже представлена небольшая подборка.
(Осторожно, много изображений)
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity