Pull to refresh
15
0
Константин @silentnuke

Пользователь

Send message

Перспективы развития отрасли видеонаблюдения: возможности современных систем видеоаналитики

Reading time 11 min
Views 11K
По мнению агентства Transparency Market Research, уже к 2022 году общий оборот рынка видеонаблюдения достигнет 71 миллиарда долларов США и будет увеличиваться как минимум на 16,5% ежегодно. Хотя в настоящее время спрос подогревается такими факторами, как возросшая опасность террористических атак и продолжающееся ужесточение законодательных требований к инфраструктуре безопасности и контроля доступа, в ближайшем будущем акценты сместятся в такие отрасли, как ретейл, промышленность, здравоохранение и другие. Причиной подобных изменений становится стремительное развитие интеллектуальных систем видеоаналитики, способных существенно расширить функционал привычных IP-камер.
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Comments 1

Кастомные функции SQLite Android или своя LOWER_FNC()

Reading time 5 min
Views 8.9K
SELECT * WHERE LOWER_FNC(name) like '%" + filterText + "%'"

При разработке Android приложения столкнулся с проблемой в запросе SQLite фильтра с русскими буквами. Для английской локализации проблем нет. Для других интернациональных раскладок некорректно обрабатывались заглавные буквы в запросе.
Немного разобравшись я наткнулся на следующее описание:

(18) Case-insensitive matching of Unicode characters does not work.

The default configuration of SQLite only supports case-insensitive comparisons of ASCII characters. The reason for this is that doing full Unicode case-insensitive comparisons and case conversions requires tables and logic that would nearly double the size of the SQLite library. The SQLite developers reason that any application that needs full Unicode case support probably already has the necessary tables and functions and so SQLite should not take up space to duplicate this ability.

Instead of providing full Unicode case support by default, SQLite provides the ability to link against external Unicode comparison and conversion routines.

Вероятно текущая реализация SQLite Android и есть
only supports case-insensitive comparisons of ASCII characters


Видел решение через CursorWrapper но решил все таки собрать свою версию SQLite и использовать addCustomFunction

Что из этого получилось читайте под катом
Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Comments 1

Новая Windows 10 и другие фантастические новинки от Microsoft

Reading time 4 min
Views 46K


Несколько часов назад, закончилась трансляция мероприятия Windows 10: The Next Chapter, где Microsoft представила множество разных новинок, часть из которых, мы, еще недавно, могли представить только в кино и на страницах фантастических романов.

Все, что вы прочтете ниже не какое-то далекое будущее, а совсем-совсем даже ближайшее.
Читать дальше →
Total votes 79: ↑70 and ↓9 +61
Comments 200

Как писать отличные пулл-реквесты

Reading time 3 min
Views 22K
С ростом компании, люди и проекты меняются. Для продолжения развития культуры, которую мы хотим иметь в GitHub, мы сочли полезным напомнить самим себе цели, которые преследуем в коммуникациях. Мы недавно представили эти гайдлайны, чтобы помочь самим себе быть лучше, когда мы взаимодействуем через пулл-реквесты.
Читать дальше →
Total votes 55: ↑46 and ↓9 +37
Comments 10

Разработчики передают привет!

Reading time 5 min
Views 23K
Привет, Гиктаймс! Скажите честно, знакомы ли вы с «пасхальными яйцами» в IT, и, если да, то находили ли что-нибудь сами, случайно или намеренно, зацепившись взглядом за подозрительную штуку?



Вне зависимости от ответа, сегодня мы подготовили для вас подборку шуток и закладок от разработчиков в наших продуктах.
Хватайте корзинку, сейчас начнём собирать яйца.
Total votes 33: ↑27 and ↓6 +21
Comments 20

«Дуров, верни стену» или «Хабрахабр + Geektimes + Мегамозг» в одной ленте

Reading time 4 min
Views 21K


Когда разбушевался Роскомнадзор и Хабр по вынужденным причинам разделился, появился «младший брат», которого не жалко — Geektimes. Мне такое разделение пришлось не по душе и Я сделал для локального пользования небольшое расширение для браузера, которое выводит посты Geektimes на Хабре в одной ленте.

Вчера же, случилось еще одно разделение, у Хабра появляется «кузен гуманитарий» — Мегамозг. Добавить его ленту в общую ленту на Хабре Мне не составило труда. Увидев настроение пользователей от всех этих разделений, Я решил выложить это расширение в общий доступ, возможно Вам тоже будет удобней так читать Хабр (по старинке).

Читать дальше →
Total votes 128: ↑125 and ↓3 +122
Comments 116

Легковесная библиотека для Warning сообщений от javac через аннотацию

Reading time 1 min
Views 5.5K
Java разработчикам привет.

Делюсь легковесной (3kb) библиотекой, единственная и основная задача которой — кидать ворнинги от Java компилятора.

Использование очень простое: пишите аннотацию Warning(«Reason text here») и при компиляции будет выдан ворнинг (сборка при этом не останавливается).

// some code...

@Warning("Refactor as soon as possible please")
public void someCodeWhichYouNeedAtTheMomentButYouWantToRefactorItLater() {
    // bad stuff going on here...
}

Использован Annotation Processor API.

Гитхаб: https://github.com/pushtorefresh/javac-warning-annotation (опубликовано в mavenCentral)

Надеюсь, будет полезно.

P.S. В большинстве случаев лучше заводить задачу в тасктрекере вместо использования данной аннотации, но для некоторых вещей такой вариант вполне уместен.
Total votes 17: ↑16 and ↓1 +15
Comments 3

Internet Archive выложил 2400 DOS игр

Reading time 1 min
Views 27K


Разработчики, стоящие за Internet Archive, явно души не чают в старых игрушках (и это хорошо). Ранее Internet Archive представил эмуляторы для игры в игры для Atari и некоторых других платформ. Играть можно абсолютно бесплатно, за что большое спасибо сервису Internet Archive.

Теперь благодарность игроков увеличится во сто крат, поскольку на Internet Archive выложили огромных архив из 2400 игрушек для MS-DOS. Понятно, что большую часть архива можно достать где-то еще, но теперь все это собрано в одном месте.

Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Comments 29

Гибкая методология разработки “Scrum”

Reading time 6 min
Views 539K
Я продолжаю работу над диссертацией по проектному менеджменту. Сегодня мы кратко рассмотрим Scrum, рассмотрим типичные ошибки, приводящие к проблемам. Данный пост не претендует на полноту, он является обзорным и адресуется тем, кто еще не знаком со Scrum, или знаком лишь частично (к примеру, работает в модифицированном Scrum).

В настоящее время, Scrum является одной из наиболее популярных «методологий» разработки ПО. Согласно определению, Scrum — это каркас разработки, с использованием которого люди могут решать появляющиеся проблемы, при этом продуктивно и производя продукты высочайшей значимости (с точки зрения клиента — прим. Автора) [1].

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

Когда говорят о методологии Scrum, чаще всего имеют ввиду гибкую методологию разработки ПО, построенную на основе правил и практик Scrum, так что вполне может оказаться что ваш Scrum круче моего Scrum, а также быть от него так же далеким, как ВАЗ 7-ка от BMW 7-й серии :)

Авторами Scrum заявлены следующие особенности:
-Легкий (англ. Lightweight)
-Понятный, доступный
-Сложный в освоении
(практически взаимоисключающие параграфы)

image
Total votes 21: ↑11 and ↓10 +1
Comments 71

Как производят лучшие ракетные двигатели в мире

Reading time 7 min
Views 33K
IMG_1042_1100

Продолжаем экскурсию по химкинскому НПО "Энергомаш". В предыдущей серии, мы посетили их демонстрационный зал, а теперь пройдемся по самому предприятию.
Читать дальше →
Total votes 82: ↑73 and ↓9 +64
Comments 74

3 января — день рождения Джона Рональда Руэла Толкина

Reading time 5 min
Views 12K


3 января 2015 исполняется 123 года со дня рождения знаменитого писателя, поэта, филолога, профессора Оксфордского университета, Джона Рональда Руэла Толкина. Именно он подарил миру замечательные книги «Хоббит, или Туда и обратно», «Властелин колец» и «Сильмариллион», которые сформировали современный взгляд на произведения в жанре фэнтези.
Читать дальше →
Total votes 44: ↑36 and ↓8 +28
Comments 29

Настолки, в которые играют айтишники

Reading time 11 min
Views 58K


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

В преддверии праздников мы решили узнать у наших коллег, в какие оффлайновые игрища они предпочитают сражаться с друзьями и близкими. Конечно, у всех свои критерии хорошей настольной игры. Одним важен кураж, другим — интересная механика, третьим подавай необходимость пораздумывать над каждым ходом. Но раскладывать игры по полочкам формальных критериев мы не будем, ведь самая лучшая оценка — сделанная самостоятельно, на основе своего опыта. Дерзайте и пробуйте сами!
Читать дальше →
Total votes 45: ↑36 and ↓9 +27
Comments 41

Пишите компараторы правильно

Reading time 5 min
Views 149K
В Java для введения порядка среди определённых объектов можно написать компаратор — класс, содержащий функцию compare, которая сравнивает два объекта. Альтернативой компаратору является естественный порядок объектов: объект реализует интерфейс Comparable, который содержит метод compareTo, позволяющий сравнить этот объект с другим. Сравнивающая функция должна вернуть 0, если объекты равны, отрицательное число (обычно -1), если первый объект меньше второго, и положительное число (обычно 1), если первый больше. Обычно реализация такой функции не представляет сложностей, но имеется один случай, о котором многие забывают.

Сравнение используется различными алгоритмами от сортировки и двоичного поиска до поддержания порядка в сортированных коллекциях вроде TreeMap. Эти алгоритмы завязаны на три важных свойства сравнивающей функции: рефлексивность (сравнение элемента с самим собой всегда даёт 0), антисимметричность (сравнение A с B и B с A должны дать разный знак) и транзитивность (если сравнение A с B и B с C выдаёт одинаковый знак, то и сравнение A с C должно выдать такой же). Если сравнивающая функция не удовлетворяет этим свойствам, алгоритм может выдать совершенно непредсказуемый результат. Причём скорее всего вы не получите никакого исключения, просто результат будет неверный.

Как обнаружилось, несоблюдение этих свойств — не такая уж редкая ситуация. Проблема возникает при сравнении вещественных чисел — float или double.
Читать дальше →
Total votes 82: ↑76 and ↓6 +70
Comments 36

В системе защиты от подделки запросов PayPal обнаружена уязвимость

Reading time 3 min
Views 25K
PayPal authorization

Инженер из Египта Ясер Али во время исследования работы PayPal обнаружил уязвимость, которая позволила ему полностью обойти используемую сервисом систему защиты от CSRF-атак (межсайтовая подделка запросов). Эту уязвимость он подробно описал в своем блоге, мы перевели и адаптировали пост с описанием уязвимости.

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

Пост подготовлен специально для корпоративного блога сайта о платежных системах c мониторингом обменников Web-payment.ru.
Читать дальше →
Total votes 47: ↑43 and ↓4 +39
Comments 4

6 способов: как добавить security для Rest сервиса в Java

Reading time 10 min
Views 127K

В данной статье я попытаюсь описать несколько способов, а точнее 6, как добавить security для rest сервиса на Java.



Перед нашей командой была поставлена задача найти все возможные способы добавить security к rest сервису. Проанализировать все за и против и выбрать наиболее подходящий для нашего проекта. Когда я начал искать такую статью в Гугле ничего подходящего не нашел, а были лишь фрагменты и мне пришлось собирать эту информацию по крупицам. Так что думаю, данная статья будет полезна и другим Java разработчикам, пишущим back-end. Я не буду утверждать, что какой-то из этих способов лучше или хуже, все зависит от поставленной задачи и конкретного проекта. Поэтому какой из шести способов подходит больше всего вашему проекту решать только Вам. Я постараюсь описать принцип каждого из подходов и дать небольшой пример с использованием Java и Spring Security.

6 способов
Total votes 26: ↑21 and ↓5 +16
Comments 16

Забавные баги

Reading time 5 min
Views 72K
Баги — сленговое обозначение ошибки в системе или программе. Конечно, баг — это плохо. Искать баг — еще хуже. Они могут быть как безобидными (но назойливыми), так и весьма катастрофическими, последствия которых могут привести к финансовым потерям, очернению репутации и даже к трагическим случаям.

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

Читать дальше →
Total votes 130: ↑90 and ↓40 +50
Comments 35

Чистый код с Google Guava

Reading time 9 min
Views 111K
Наверное, любому программисту доводилось видеть код, пестрящий большим количеством повторов и реализации «низкоуровневых» действий прямо посреди бизнес-логики. Например, посреди метода, печатающего отчёт, может оказаться такой фрагмент кода, конкатерирующий строки:

StringBuilder sb = new StringBuilder();
for (Iterator<String> i = debtors.iterator(); i.hasNext();) {
  if (sb.length() != 0) {
    sb.append(", ");
  }
  sb.append(i.next());
}
out.println("Debtors: " + sb.toString());

Понятно, что этот код мог бы быть более прямолинейным, например, в Java 8 можно написать так:

out.println("Debtors: " + String.join(", ", debtors));

Вот так сразу гораздо понятнее, что происходит. Google Guava – это набор open-source библиотек для Java, помогающий избавиться от подобных часто встречающихся шаблонов кода. Поскольку Guava появилась задолго до Java 8, в Guava тоже есть способ конкатенации строк: Joiner.on(", ").join(debtors).
Рассмотрим часто встречаемые шаблоны кода
Total votes 41: ↑36 and ↓5 +31
Comments 20

Фриланс на Кипре

Reading time 6 min
Views 125K
В дополнение к статье хабраюзера dudeonthehorse «Фриланс в Турции» опишу особенности этого вида труда для Кипра, точнее его южной части. Я не буду рассказывать про местные достопримечательности, а постараюсь дать сведения, полезные для людей, ставших на нелегкий путь свободных наемников.


Читать дальше →
Total votes 89: ↑85 and ↓4 +81
Comments 127

Подготовительная работа, которая поможет вам покорить Кикстартер [несколько прописных истин, о которых забывают]

Reading time 7 min
Views 32K
Вы придумали крутую идею, записали потрясающее промо-видео, потратили несколько месяцев на подготовку, неделю оформляли страницу, запустили кампанию в ожидании головокружительного успеха и…

image

ничего не произошло…

В этом посте я постараюсь поделиться с вами некоторыми общеизвестными (и не очень) моментами, которыми часто пренебрегают отечественные разработчики, хотя они могут оказать существенное влияние на судьбу вашего проекта.
Читать дальше →
Total votes 44: ↑40 and ↓4 +36
Comments 16

6 ссылок о том, что Google знает о вас

Reading time 2 min
Views 446K
Не желаете ли узнать о том, что Google знает о вас? Вот 6 ссылок, которые покажут вам некоторые данные, собранные гуглом.

1. Ваш профиль в Google

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

www.google.com/ads/preferences

(прим.перев. – в моём случае гугл не блещет информацией. Я не состою в Google+, а по посещённым мною сайтам гугл не смог определить мой пол, а возраст определил в 65+ лет).
Читать дальше →
Total votes 109: ↑102 and ↓7 +95
Comments 56

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Registered
Activity