В последнее время я работаю с клиентами над вопросами настроек JVM. Смахивает ситуация на то, что далеко не все из разработчиков и администраторов знают о том, как работает garbage collection и о том, как JVM использует память. Поэтому я решил дать вводную в эту тему с наглядным примером. Пост не претендует на то, чтобы покрыть весь объем знаний о garbage collection или настройке JVM (он огромен), ну и, в конце концов, об этом много чего хорошего написано уже в Сети.
Василий Травин @Postsantum
User
Отправка E-Mail средствами Android
8 min
60KПривет хабр и привет всем!
В данной статье я покажу как реализуется отправка писем средствами самого Android, а также ещё один более интересный способ, но уже с применением внешней библиотеки, которая позволяет нам отсылать письма более приемлимыми для программиста способами.
В данной статье я покажу как реализуется отправка писем средствами самого Android, а также ещё один более интересный способ, но уже с применением внешней библиотеки, которая позволяет нам отсылать письма более приемлимыми для программиста способами.
+33
Обнаружение объектов методом Оцу
6 min
47KЗдравствуйте, уважаемые хабрачитатели и хабракритики. Этот пост я хотел бы посвятить такой актуальной на сегодняшний день теме, как обнаружение объектов на изображениях.
В качестве одного из алгоритмов такого обнаружения рассмотрим выбор порога быстрым и эффективным методом Оцу.
В качестве одного из алгоритмов такого обнаружения рассмотрим выбор порога быстрым и эффективным методом Оцу.
+112
Trie, или нагруженное дерево
4 min
102KЗдравствуй, Хабрахабр. Сегодня я хочу рассказать о такой замечательной структуре данных как словарь на нагруженном дереве, известной также как префиксное дерево, или trie.
Нагруженное дерево — структура данных реализующая интерфейс ассоциативного массива, то есть позволяющая хранить пары «ключ-значение». Сразу следует оговорится, что в большинстве случаев ключами выступают строки, однако в качестве ключей можно использовать любые типы данных, представимые как последовательность байт (то есть вообще любые).
Что это ?
Нагруженное дерево — структура данных реализующая интерфейс ассоциативного массива, то есть позволяющая хранить пары «ключ-значение». Сразу следует оговорится, что в большинстве случаев ключами выступают строки, однако в качестве ключей можно использовать любые типы данных, представимые как последовательность байт (то есть вообще любые).
+68
Как не дать программисту написать плохой код
3 min
6.5KTutorial

Как-то раз в одной неглупой статье один неглупый хабраюзер рассказал одну неглупую идею. Суть её была в том, что в его компании настроена система, контролирующая написанный программистами код в момент попытки добавления его в репозиторий и отклоняющая код, не проходящий по некоторым критериям. Мне идея понравилась. Я (и еще 3 человека) попросили автора развить мысль и написать статью об этом, но она так и не появилась. И я решил разобраться сам.
+123
Бикубическая интерполяция, теория и практическая реализация
7 min
46KВозникла задача визуализировать результаты некоторых замеров на 2-мерной карте, были известны результаты в узловых точках на равномерной сетке, соответственно, задача свелась к интерполяции полученных данных. Основное требование было — качество полученной картинки и минимальное количество артефактов интерполяции, поэтому выбор пал на бикубическую интерполяцию. Статьи в Вики мне показались суховатыми (по крайней мере для человека, который математикой не занимался со школьной скамьи), но там же нашлась ссылка на потрясающую статью, детально описывающую алгоритм. Здесь мы рассмотрим практическое применение данного алгоритма и разберем статью.
+57
Избранное Хабра в PDF
3 min
17KВсех с наступившими!

Так как я люблю все упорядочивать и каталогизировать, давно вертелась мысль завернуть избранные топики с хабра в PDF и отсортировать по датам.
Собственно выделилось немного свободного времени в праздники, решил задуманное осуществить и поделиться с хабром
UPD:
— Исправлена ошибка «too large on page» (подробнее на github) Спасибо Bifidokk и StreetAngel
— Авторы топиков сделаны ссылкой
— Добавлена возможность сохранять избранное только из указанных блогов

Так как я люблю все упорядочивать и каталогизировать, давно вертелась мысль завернуть избранные топики с хабра в PDF и отсортировать по датам.
Собственно выделилось немного свободного времени в праздники, решил задуманное осуществить и поделиться с хабром
UPD:
— Исправлена ошибка «too large on page» (подробнее на github) Спасибо Bifidokk и StreetAngel
— Авторы топиков сделаны ссылкой
— Добавлена возможность сохранять избранное только из указанных блогов
+183
Перехват cookie в реальном времени в открытых WiFi-сетях
1 min
65KНа видео показан угон сессии вконтакте.ру, который почему-то до сих пор не использует авторизацию с https и передает пароли открытым текстом.
Дамп трафика собирается программой kismac в формате libpcap и параллельно парсится grep-ом с использованием регулярных выражений, что позволяет в реальном времени выводить на экран все интересующие куки и пароли. При этом не используется никаких анализаторов пакетов.
regexp для перехвата вконтакте.ру:
tail -F pcap.файл | cat | grep -aEo «remixsid=[0-9a-f]+|l=[0-9]{3,12}|p=[0-9a-f]{36}|email=[^&]+&pass=[^ ]+»
для фейсбука:
c_user=[0-9]+|sid=[0-9]{1,5}|xs=[0-9a-f]{32}
Аналогичная конструкция будет работать и с дампом собранным с помощью airdump-ng.
+143
Латентно-семантический анализ
4 min
100KКак находить тексты похожие по смыслу? Какие есть алгоритмы для поиска текстов одной тематики? – Вопросы регулярно возникающие на различных программистских форумах. Сегодня я расскажу об одном из подходов, которым активно пользуются поисковые гиганты и который звучит чем-то вроде мантры для SEO aka поисковых оптимизаторов. Этот подход называет латентно-семантический анализ (LSA), он же латентно-семантическое индексирование (LSI)

+98
Как открыть отдел интернет-магазина в торговом центре или почему мы теперь стоим рядом с отделом PocketBook
8 min
49K
Топик будет полезен тем, кто:
- Имеет свой интернет-магазин и хочет реальный;
- Не знает, как открывать точку в ТЦ;
- Выбирает между точкой самовывоза и разными вариантами магазинов.
Выжимка:
- ТЦ хорош аудиторией, но плох жесткими условиями и высокими стартовыми затратами;
- В ТЦ сложно, но реально встать;
- Как презентоваться;
- Персонал нанимается до открытия;
- Какие бывают подставы;
- Как делали открытие мы и как его нужно было делать.
+76
Алгоритм поведения привидений в игре Pac-Man
13 min
69KTranslation
Попробовал сделать перевод вчерашнего топика-ссылки на хабре. Заранее извиняюсь, если формулировки покажутся вам кривыми, я с удовольствием приму конструктивную критику. Поехали…
Мне кажется правильным начать этот блог с темы, которая вдохновила меня в первую очередь. Не так давно я наткнулся на статью Jamey Pittman «Pac-Man Dossier», в которой приводилось очень детальное описание механики игры Pac-Man. Она показалась мне очень интересной, поэтому этот сайт — попытка собрать такую же детальную информацию об остальных играх. Но в дань уважения я все же начну с Pac-Man, а в частности, с описания алгоритма поведения привидений. Это очень интересная тема и, надеюсь, мое объяснение будет немного более понятным и доступным, чем у Джейми, потому что я сосредоточусь лишь на поведении.
Об игре:
Мне кажется правильным начать этот блог с темы, которая вдохновила меня в первую очередь. Не так давно я наткнулся на статью Jamey Pittman «Pac-Man Dossier», в которой приводилось очень детальное описание механики игры Pac-Man. Она показалась мне очень интересной, поэтому этот сайт — попытка собрать такую же детальную информацию об остальных играх. Но в дань уважения я все же начну с Pac-Man, а в частности, с описания алгоритма поведения привидений. Это очень интересная тема и, надеюсь, мое объяснение будет немного более понятным и доступным, чем у Джейми, потому что я сосредоточусь лишь на поведении.
Об игре:
«В то время все доступные игры были очень жестокими — игры о войне и космических захватчиках. Не было ни одной игры для всех сразу, а особенно, которые понравились бы девушкам. Я хотел придумать «комическую» игру, которой могли бы наслаждаться даже девушки»
— Toru Iwatani, создатель Pac-Man
+200
YesterdayMe: опыт роста стартапа от 1 до 2000 активных пользователей
5 min
871
YesterdayMe — сервис, позволяющий следить за употреблением алкоголя. Выпил — записал. По вводимым данным строятся разные отчеты. Изначально была идея сделать только персональный трекер выпитого, но потом, с учетом пожеланий пользователей, сервис эволюционировал в небольшую социальную сеть. Сейчас можно следить за друзьями и сравнивать показатели друг друга.
Сегодня у сервиса около двух тысяч активных пользователей (пользуются сервисом хотя бы раз в неделю).

+87
QIP 2008 concept
2 min
3.2KХочу сразу предупредить, что я не программер и не знаю насколько возможно реализовать нижележащие фишки, но тем не менее таковые есть.

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

Изначально я захотел попробовать сделать новый скин для квипа, но в итоге получился новый концепт, которым хочется поделиться с разработчиками и внести свой вклад в развитие популярного меседжера.
+302
Hg Init: Часть 4. Исправляем ошибки
4 min
73KTranslation

Одно из главных преимуществ Mercurial состоит в том, что вы можете использовать личные клоны репозитория для экспериментов и разработки новых возможностей. Если что-то пошло не так, можно все исправить за мгновение.
Часть 4. Исправляем ошибки

Mercurial позволяет свободно экспериментировать. Представьте, что во время работы вы что-то не то сделали в редакторе, и случилось нечто ужасное:
+50
Мотивация удаленных сотрудников
4 min
12KВ IT индустрии все чаще встречаются проекты с распределенными командами. Это удобно — спецификация, код, баги, мануалы легко перемещаются из одного конца планеты в другой за доли секунд. Это выгодно — аутсорсинг проектных процессов, будь то разработка, тестирование или саппорт, в Индии или Китае обойдется в 3–5 раз дешевле аналогичных сервисов в странах Европы или США.
Никого не удивишь проектом, в котором сейлз, маркетинг и бизнес анализ находятся в Англии, разработка в России, тестирование и саппорт — в Индии. Компания, в которой я работал, специализировалась именно на таких проектах. Наиболее слабыми местами в них, я бы назвал коммуникации внутри проекта и мотивацию его участников. Эта статья описывает эффективный подход к решению этих проблем в проектах с распределенной командой.
Никого не удивишь проектом, в котором сейлз, маркетинг и бизнес анализ находятся в Англии, разработка в России, тестирование и саппорт — в Индии. Компания, в которой я работал, специализировалась именно на таких проектах. Наиболее слабыми местами в них, я бы назвал коммуникации внутри проекта и мотивацию его участников. Эта статья описывает эффективный подход к решению этих проблем в проектах с распределенной командой.
+125
Android Calendar API
5 min
44K
В этой статье речь пойдет об использовании недокументированного API для работы со стандартным календарем Android. Статей на русском по данной теме не нашел, да и на английском лишь несколько постов с устаревшими данными. Кто заинтересовался – под кат.
+50
«Живые графы» — выращивание графов на клеточных автоматах с примерами на Silverlight
Easy
15 min
15KUPD. 2025. The demo of Graph Unfolding Cellular Automata (GUCA) has been re-implemented in TypeScript: https://github.com/roma-goodok/guca
Пожалуй, ничто так долго, на протяжении многих веков, не интересовало учёных, как вопросы о происхождении жизни и разума. Как природа догадалась сотворить человеческий мозг? Чем определяется структура нейронной сети в нашей голове и как работает автосборка многоклеточного организма из единственной клетки? Почему при развитии зародыша человека на определённой стадии можно наблюдать нечто похожее на рыбьи жабры?
Да и простого любопытствующего обывателя, не отягощённого подробностями органической химии, подобные вопросы не обходят стороной.
Вот была бы игрушка-конструктор, с помощью которой можно собрать простенькие растущие организмы. Тогда построив предельно упрощённую модель, демонстрирующую многие из явлений живого, можно было бы приблизиться к ответам на вопросы устройства жизни, или хотя бы к пониманию, где эти ответы искать.

Такой предельно упрощённой и наглядной моделью могут оказаться «Живые графы» — конечные автоматы на графе, каждый узел которого содержит некое исполняющее устройство (автомат) с конечным числом состояний и с набором примитивных правил, управляющих созданием или изменением новых связей между узлами.
Введение
Пожалуй, ничто так долго, на протяжении многих веков, не интересовало учёных, как вопросы о происхождении жизни и разума. Как природа догадалась сотворить человеческий мозг? Чем определяется структура нейронной сети в нашей голове и как работает автосборка многоклеточного организма из единственной клетки? Почему при развитии зародыша человека на определённой стадии можно наблюдать нечто похожее на рыбьи жабры?
Да и простого любопытствующего обывателя, не отягощённого подробностями органической химии, подобные вопросы не обходят стороной.
Вот была бы игрушка-конструктор, с помощью которой можно собрать простенькие растущие организмы. Тогда построив предельно упрощённую модель, демонстрирующую многие из явлений живого, можно было бы приблизиться к ответам на вопросы устройства жизни, или хотя бы к пониманию, где эти ответы искать.

Такой предельно упрощённой и наглядной моделью могут оказаться «Живые графы» — конечные автоматы на графе, каждый узел которого содержит некое исполняющее устройство (автомат) с конечным числом состояний и с набором примитивных правил, управляющих созданием или изменением новых связей между узлами.
+76
Как начать работу над стартапом?
6 min
14KТопик навеян впечатлениями от докладов на swpiter и постом о том, как не продать машину :)

Суть в чём, есть некая порция работы, которую нужно сделать перед тем, как начинать тратить свои деньги. Я попытался описать последовательность этих действий.
Картинка слева кликабельна, а ниже — текстовое описание в 12 шагах как инициировать стартап и при этом всегда оставаться в выигрыше.
И так, всё начинается с идеи, которая каким-то образом пришла к вам в голову. Идея выглядит интересной и соблазнительной. Она мотивирует вас.
Самое важное в идее — это не терять мотивацию вплоть до 10 шага и тогда вы в любом случае получите для себя выгоду.
Необходимо хотя бы примерно ответить на эти вопросы:

Как работать над стартапом и всегда оставаться в выигрыше?
Суть в чём, есть некая порция работы, которую нужно сделать перед тем, как начинать тратить свои деньги. Я попытался описать последовательность этих действий.
Картинка слева кликабельна, а ниже — текстовое описание в 12 шагах как инициировать стартап и при этом всегда оставаться в выигрыше.
1. Идея!
И так, всё начинается с идеи, которая каким-то образом пришла к вам в голову. Идея выглядит интересной и соблазнительной. Она мотивирует вас.
Самое важное в идее — это не терять мотивацию вплоть до 10 шага и тогда вы в любом случае получите для себя выгоду.
2. Детализация идеи
Необходимо хотя бы примерно ответить на эти вопросы:
- область применения
- какие задачи поможет решить
- какие инструменты применяются для решения задач
- что вы хотите получить в процессе и в результате реализации
- какие-то существенные моменты, которые вам просто необходимо изложить, чтобы не потерять в будущем
- сколько времени вы можете уделить (если идея вас реально интересует, вы перейдёте к следующим этапам)
- сколько на это нужно денег
- кто вам ещё нужен для реализации идеи
+113
Ужаснейший способ тарификации. Который работает
5 min
5.9KTranslation
Представляю вам способ формирования цены, который выглядит как самая тупая ошибка нуба.
Назовем его «заполните пустой счёт». Или «заплатите, сколько считаете нужным».
Идея в том, что вначале вы выполняете заказ, а потом позволяете заказчику решить, сколько за него заплатить.
Понимаю, кажется, что в итоге придется работать за копейки и еду. Я тоже так думала.
Но на самом деле, это довольно оригинальная тактика, которой должен уметь пользоваться любой фрилансер, когда ветер дует в нужную сторону. (Заметьте, я сказала «когда ветер дует в нужную сторону». Мы вернемся к этому позже.)
Назовем его «заполните пустой счёт». Или «заплатите, сколько считаете нужным».
Идея в том, что вначале вы выполняете заказ, а потом позволяете заказчику решить, сколько за него заплатить.
Понимаю, кажется, что в итоге придется работать за копейки и еду. Я тоже так думала.
Но на самом деле, это довольно оригинальная тактика, которой должен уметь пользоваться любой фрилансер, когда ветер дует в нужную сторону. (Заметьте, я сказала «когда ветер дует в нужную сторону». Мы вернемся к этому позже.)
+124
Непостмортем игры «Roads of Rome» («Дороги Рима»)
10 min
4.9K
Возможно это будет интересно тем, кто только собирается заняться разработкой игр. Собственно о программировании будет мало, больше о том, что использовалось в процессе разработки.
+83
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Registered
- Activity