Обновить
-6
Алексей@java3000

Администратор windows умеющий в программирование

Отправить сообщение

Как анализировать платящих пользователей. Часть 3, Повторные платежи и конвертация

Время на прочтение4 мин
Охват и читатели5.8K
Этой статьёй мы заканчиваем цикл «Как анализировать платящих».
Предыдущие статьи:
Часть 1. RFM-анализ, киты и дельфины.
Часть 2. Структура дохода по времени.
Сегодня же мы поговорим о повторных платежах и времени конвертации в платёж. Какие вопросы вы должны задавать себе?

На какой день пользователь совершает первый платёж? Второй? Третий?
Читать дальше →

Анимация переходов между двумя фрагментами

Время на прочтение4 мин
Охват и читатели27K
image Одним из краеугольных камней в Material design являются осмысленные движения между экранами. Lollipop предоставляет поддержку этих анимаций в форме фреймворка переходов между Activity и Fragment. Поскольку статей по данной теме не так много, я решил написать свою собственную!

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

Если вы желаете увидеть, что получилось — готовое приложение находится на GitHub.
Читать дальше →

Универсальная функция toCamelCase() для Java

Время на прочтение3 мин
Охват и читатели11K
Сегодня мне понадобилось перевести строку произвольного содержания в camelCase.
В интернете в основном встретились узкоспециализированные методы, которые либо переводят только имена констант (по соглашениям Java, SOME_JAVA_NAMING_CONVENTION_CONST), либо только фразы, разделенные пробелами.
Мне этого категорически не хватало, нужна была бОльшая универсальность.

Как и подобает любому уважающему себя велосипедисту, я начал писать свой алгоритм, и немного увлёкся. Очнувшись от кода, я обнаружил, что функция переводит любые мною скормленные строки в нормальный camelCase или CamelCase.
Единственное, что она не делает — не запрещает цифры в начале получившейся строки (для соглашений JNC), но мне это и не нужно было (при необходимости дописывается одной строкой кода — пополнением ко второму, вложенному, условию).

Что получилось можете увидеть под катом.
Читать дальше →

Веб-два-нольные ярлыки для Java

Время на прочтение5 мин
Охват и читатели7.8K
Когда мне понадобилось реализовать ярлыки для Java «как в веб-два-ноль», гугление не помогло найти ни одной библиотеки, содержащей в себе подобный тип коллекции.

Решил сделать сам.

Итак, нам надо хранить объекты в коллекции данного типа (назовем его, скажем, LabelsMultiMap). Как объекты, так и ярлыки могут быть произвольного типа. Количество ярлыков сверху не ограничено, равно как и количество объектов. Одним и тем же набором ярлыков могут быть описаны более 1 объекта. У одного объекта один ярлык может встретиться только 1 раз.

Пример валидных ярлыков:
Ярлыки Объекты
green, wooden, alive tree
green, wooden, lifeless bench
green, alive, croak frog

Коллекция должна позволять:

  1. put() — помещать в неё объекты со списком прикрепленных меток
  2. getValues() — возвращать объекты, содержащиеся в коллекции
  3. findValues() — осуществлять поиск объектов, ярлыки которых содержат запрашиваемый набор ярлыков
  4. findValuesOnlyIn() — осуществлять поиск только тех объектов, все ярлыки которых входят в запрашиваемый набор ярлыков

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

Система подсчёта посетителей магазина: как Гугл.Аналитика, только на инфракрасных датчиках — и хитрая статистика, которую вы не видите

Время на прочтение6 мин
Охват и читатели35K
В 1940-е вам нужна была специальная бабка, которая считает людей на входе в магазин. В 1950-е верхом прогресса была камера, плёнку с которой потом можно было анализировать. В конце 80-х в США и Европе (в т.ч. Германии) начали распространяться инфракрасные датчики или просто счётчики открывания-закрывания дверей на герконах. Сейчас технологии медленно дрейфуют к тому, чтобы засекать ваши широковещательные пакеты Wi-Fi и Bluetooth (рассылку поиска сетей), чтобы отслеживать перемещения телефона с точностью до 3 сантиметров. Плюс растёт значение распознавания потоков людей с видеосистем.

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

Just a random pretty girl
Самая простая реализация после геркона — пересечение ИК-луча

Может показаться, что кроме подсчёта посетителей в магазине, такие штуки ни для чего не нужны. Однако, если утыкать ими весь торговый центр, даже простая линейная аналитика даёт кучу полезного. Например, грамотный торговый центр по отслеживанию потоков знает, что магазин перестал нравиться его аудитории — и точно численно понимает, на место кого сажать нового арендатора.

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

Dagaz: На полпути

Время на прочтение18 мин
Охват и читатели5.3K
imageЧуть правее наклон — упадет, пропадет!
Чуть левее наклон — все равно не спасти!
Но спокойно, ему остается пройти
Всего две четверти пути!

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

Очень простые шашки
(board
   (name chess-board-10x10)
   (dim "a-j")
   (dim "10-1")
   (dir (name nw) -1 -1)
   (dir (name ne)  1 -1)
   (dir (name se)  1  1)
   (dir (name sw) -1  1)
)

(piece
   (name Man)
   (pre
      (check is-friend?)
      (take)
      (log position)
      (let captured 0)
   )
   (post
      (check (<= max-captured captured))
      (set! max-captured captured)
      (log " - " position)
      (drop)
   )
   (move
      (check (any nw ne))
      (check is-empty?)
   )
   (move
      (while true
         (let dir (any nw ne sw se))
         (check dir)
         (check is-enemy?)
         (capture)
         (inc! captured)
         (check dir)
         (check is-empty?)
         (end-move)
      )
   )
)

(game
   (name "Simple Checkers")
   (board chess-board-10x10)
   (players 
      (White (Man a1 c1 e1 g1 i1 b2 d2 f2 h2 j2 a3 c3 e3 g3 i3)) 
      (Black (Man b8 d8 f8 h8 j8 a7 c7 e7 g7 i7 b6 d6 f6 h6 j6))
   )
)


Даже без дамок! Фигуры двигаются вперёд и могут «бить» противника, по привычным нам правилам "Шашек" (перепрыгивая через фигуру). Дойдя до последней линии доски, они ни во что не превращаются, но могут брать фигуры противника, поскольку взятия «назад» разрешены. В этом отношении, разрабатываемая игра похожа на «Осетинские шашки», описанные в одной из предыдущих статей. Взятие обязательно и, из всех возможных ходов, игрок должен выбрать ход, берущий максимальное количество фигур. Игра завершается, когда один из игроков не может выполнить очередной ход (заперт или потерял все фигуры).

Разумеется, речь идёт не о том, чтобы «закодить очередные шашки» (это можно было бы сделать и с меньшими усилиями). Я хочу разработать «метаигровую» систему, позволяющую описывать достаточно сложные логические игры, используя простой DSL и, в идеале, не обладая продвинутыми навыками программирования (то есть, ровно то, что делает Zillions of Games, но в полностью открытом и кроссплатформенном проекте).
Читать дальше →

Android 6.0: Doze Mode, App Standby, Runtime Permissions. Всё, что необходимо знать каждому разработчику

Время на прочтение5 мин
Охват и читатели67K

В этой статье мы рассмотрим три самых важных изменения в новом Android, которые не могут быть проигнорированы ни одним разработчиком, который поставил у себя в проекте targetSdk = 23 и выше.
Doze Mode — режим «отключки», в который переходят все устройства на Marshmallow после некоторого времени обездвижения без зарядки.

App Standby — автоматическое лишение приложений доступа к ресурсам устройства, всех которые давно не открывал пользователь.

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

Прогнозирование в игровой индустрии. Часть 2: Насколько хорошо вы знаете своих игроков

Время на прочтение4 мин
Охват и читатели6.7K
После того как вы немного разобрались в основах, рассмотрим более подробно, в чем заключается польза прогнозирования для разработчиков игр. Прогнозирование может стать для вас своего рода хрустальным шаром, но только в том случае, если вы располагаете правильной информацией. Поэтому первое, что вам нужно сделать, – это начать собирать данные, очень много данных. Если у вас нет возможности выгружать данные из игры, дела не будет.


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

Сортировка массива без использования условных операторов

Время на прочтение2 мин
Охват и читатели9.1K
Сразу предупреждаю, что данная статья будет альтернативной версией вот этой. Да, я уж прям чую как все сразу ринуться меня критиковать, но, ребята, алгоритм представлений в решении не оптимален. В комментариях предлагали еще более простые алгоритмы, на питоне. На питоне достаточно написать:

array.sort()

И все. Кому нужен вообще какой-то алгоритм. В задании было установлено ограничение от 0 до 100, мы же не лентяи, сделаем в общем виде, для любых значений и с повторениями чисел. Немного подумав, пришел вот к такому решению:
Читать дальше →

О проектах на открытых данных, поиске финансирования общественных проектов и об открытых данных о госфинансах

Время на прочтение5 мин
Охват и читатели5.7K
Когда мы говорим про открытые данные, то всегда важно помнить что они невозможны без принципиального наличия данных вообще. Я как человек, занимающийся анализом данных госданных в области госфинансов, и вся команда нашего проекта Госзатраты, занимаемся тем, что регулярно пытаемся убедить ведомства, ответственные за госполитику в этой области, в том, чтобы открытые данные были доступны и чтобы с ними было максимально удобно работать.



Во многом именно в этом и является залог успеха общественных проектов. Найти «топливо» в виде данных на которых проект может быть построен и найти «топливо» в виде финансирования которое позволило бы проекту появится и поддерживаться. Например, проект Госзатраты где мы анализируем данные госконтрактов поддерживается Комитетом Гражданских инициатив (http://komitetgi.ru). И Госзатраты это один из немногих технологических некоммерческих проектов КГИ и технологических некоммерческих проектов в России в принципе.

Я хочу затронуть сразу несколько важных тем. И прошу каждую из этих тем рассматривать как вопрос.

Негосударственные проекты создающие открытые данные
Читать дальше →

10 главных ошибок масштабирования систем

Время на прочтение7 мин
Охват и читатели53K
Мартин Л. Эббот и Майкл Т. Фишер, авторы книги «Искусство масштабируемости», перечисляют наиболее распространенные архитектурные, организационные и технологические проблемы масштабировании в product-группах. Список был сформирован на основе их опыта, а также в ходе коммуникаций с клиентами и лег в основу первой книги.

Архитектурные ошибки



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

О профессиональных наказаниях подчиненных в интеллектуальной IT-среде

Время на прочтение8 мин
Охват и читатели41K


Текст написан по мотивам выступления руководителя студии «Сибирикс» Владимира Завертайлова на летней партнерской конференции «1С-Битрикс» BitrixSummerFest и представляет личное мнение выступавшего.

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

Тема это болезненная, и говорить о ней открыто не любят. Конечно, каждому хотелось бы работать в коллективе, где никто и никого не наказывает. Увы, но теория управления пока не дает нам рецептов построения совершенно бесконфликтных коллективов, в которых все работают ответственно и с полной самоотдачей, не проявляя никаких пороков в рабочее время, где начальники сплошь тактичны и мудры. Впервые о проблематике наказаний я задумался несколько лет назад, сидя в офисе часов в 12 ночи. В тот момент я, будучи директором компании, выполнял обязанности программиста. Я отлаживал код, написанный сотрудником, который всё бросил, не дописал и ушел домой. В скайп стучится заказчик, пишет грозные слова, «срочно, всё пропало», давит и торопит меня. А в таких ситуациях у меня начинает болеть спина. И я сидел и думал, а что для программиста означает «нести ответственность за проект»?

Скажем, я, как директор, за срыв проекта огребаю по полной, в первую очередь — финансово. Ведь вся ответственность за работу компании лежит на директоре. А как быть с программистом или дизайнером?
Читать дальше →

Эволюция Java на примере чтения строк из файла

Время на прочтение2 мин
Охват и читатели128K
Приведу небольшой и интересный, на мой взгляд, пример, как изменилась жизнь простого крестьянина Java разработчика, на примере задачи чтения и печати строк из файла.



Многие из нас помнят

'до Java 7' мучения:


        BufferedReader reader = null;
        try {
            reader = new BufferedReader(
                        new InputStreamReader(
                            new FileInputStream(FILE_NAME), Charset.forName("UTF-8")));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            // log error
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    // log warning
                }
            }
        }

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

Дюк, вынеси мусор! — 1. Введение

Время на прочтение13 мин
Охват и читатели261K


Наверняка вы уже читали не один обзор механизмов сборки мусора в Java и настройка таких опций, как Xmx и Xms, превратилась для вас в обычную рутину. Но действительно ли вы в деталях понимаете, что происходит под капотом вашей виртуальной машины в тот момент, когда приходит время избавиться от ненужных объектов в памяти и ваш идеально оптимизированный метод начинает выполняться в несколько раз дольше положенного? И знаете ли вы, какие возможности предоставляют вам последние версии Java для оптимизации ответственной работы по сборке мусора, зачастую сильно влияющей на производительность вашего приложения?

Попробуем в нескольких статьях пройти путь от описания базовых идей, лежащих в основе всех сборщиков мусора, до разбора алгоритмов работы и возможностей тонкой настройки различных сборщиков Java HotSpot VM (вы ведь знаете, что таких сборщиков четыре?). И самое главное, рассмотрим, каким образом эти знания можно использовать на практике.
Узнать

Работодатель против работника и конкурента – кто победит в споре за интеллектуальные права?

Время на прочтение5 мин
Охват и читатели14K


Основано на реальных событиях, происходящих повсеместно и в рамках полемики вот здесь


Эта история началась довольно банально. Сотрудники во время работы на некую компанию создали программу, которая успешно продавалась. Затем основали собственную фирму и стали заниматься тем, что умеют лучше всего – продолжили продавать тот же самый софт. Бывший работодатель возмутился такому подходу к конкуренции и попытался запретить использование «своего» продукта в «чужих» интересах. Авторы придерживались ровно противоположного мнения. Заметив, что вопрос мирно не решается, работодатель подает в суд. Вот вам и довольно типичное дело из судебной практики.

Кто прав? Суд привлечет авторов к ответственности или встанет на их сторону?

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

Создан первый материал с показателем преломления 0

Время на прочтение2 мин
Охват и читатели25K


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

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

Движением отдельных электронов в молекуле можно управлять

Время на прочтение2 мин
Охват и читатели11K


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

Результаты исследования, проведённого в швейцарской Высшей технической школы в Цюрихе при участии доктора физико-математических наук Московского физико-технического института Олега Толстихина, а также теоретиков из Дании, Бельгии и Канады, опубликованы 22 октября 2015 г в журнале Science.
Читать дальше →

Unreal против Unity: на чем лучше разрабатывать мобильные игры?

Время на прочтение15 мин
Охват и читатели102K
Здравствуйте, уважаемые читатели!

У нас переведена и готовится к выходу книга Джона Хокинга о программировании в Unity, о которой мы уже писали.

А не так давно нам попалась на глаза интересная статья о разработке мобильных игр с применением Unity (от 12 августа 2015 года); правда, ключевое достоинство статьи заключается в том, что в ней этот инструмент сравнивается с основным конкурентом: Unreal Engine.

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

Статья переведена с небольшими сокращениями

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

Эффект Зенона подтверждён: атомы не двигаются, если на них смотреть

Время на прочтение3 мин
Охват и читатели89K

Аспиранты Корнелльского университета Йогеш Патил и Шриватсан Чакрам и профессор физики Мукунд Венгелатторе в лаборатории Ultracold Lab

Одно из самых странных предсказаний квантовой теории — что система не может измениться, пока вы наблюдаете за ней — подтверждён экспериментом в Корнелльском университете (США). Работа открывает двери к фундаментально новым способам контроля и управления квантовым состоянием атомов и может привести к созданию новых сенсоров.
Читать дальше →

Создан самый чёрный материал

Время на прочтение2 мин
Охват и читатели20K


Группа исследователей из университета науки и технологий короля Абдуллы (Саудовская Аравия) объявила о создании материала с рекордно низкой отражательной способностью в видимом и инфракрасном свете. То есть это самое чёрное вещество на Земле. Как сказано в научной работе, которая опубликована в журнале Nature Nanotechnology, идея создания такого материала родилась после изучения белого бриллиантового жука (Cyphochilus), самого белого существа в природе.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Десктоп разработчик, Администратор серверов
Младший
От 110 000 ₽
Java
Java Spring Framework
RESTful WebServices.
PostgreSQL
SQL
Hibernate
Linux
Базы данных
Microsoft SQL Server
Разработка программного обеспечения