Pull to refresh
22
0
Андрей Щетинин @andrewsch

User

Send message

Наша Service и опасна и трудна или некоторые аспекты выживания служб в Android

Reading time7 min
Views57K

Вместо введения


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

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

Лично мне такое поведение Android логичным не кажется. Пользователь зачастую просто чистит Recent Apps от давно забытого хлама, совсем не обязательно он при этом желает отказаться от тех благ, которые ему предоставляла выполняющаяся служба. Однако разработчики Google мыслили немного по-другому. По-другому, так по-другому, их право, но в конце концов нам с вами тоже надо как-то жить.
Читать дальше →

Робототехника в сельском хозяйстве

Reading time4 min
Views14K
image

Сельское хозяйство является одной из самых важных отраслей промышленности. Оно дает пищу, корм и топливо, необходимые для нашего выживания. И поскольку количество мирового населения, как ожидается, достигнет 9 миллиардов к 2050 году, сельскохозяйственное производство должно удвоиться, чтобы удовлетворить спрос. Урожайность должна вырасти на 25%, чтобы помочь достижению этой цели. 
Читать дальше →

Офис как Платформа, выпуск №3: Power BI. Получаем данные из REST API

Reading time6 min
Views27K
Это наш очередной пост в колонку “Office как Платформа”. На этот раз приветствуем Дмитрия Соловьева ( dmitriysolovev), руководителя центра поддержки Office 365 в компании АстроСофт – автора уже нескольких статей по технологии PowerBI. В этой статье Дмитрий расскажет о том, как использовать REST API для получения данных из внешних источников для визуализации и анализа в PowerBI. – Владимир Юнев

Всем привет! На хабре было уже несколько постов на тему Power BI. Если судить по комментариям, то как минимум нескольким читателям актуальна тема получения данных из REST веб-сервисов. Сегодня ее и рассмотрим на примере получения и обработки данных с портала открытых данных г. Санкт-Петербурга (http://data.gov.spb.ru/). Экзекуции будут подвергнуты данные технико-экономических паспортов многоквартирных домов (http://data.gov.spb.ru/datasets/69/). В роли «пыточного инструмента» выступит Excel 2016, в состав которого теперь по умолчанию встроен Power Query.

Введение


В целом Power Query позволяет получать данные из открытых и не очень источников различными способами (рис.1):

  1. Получение данных «Из интернета». В этом случае достаточно указать URL страницы, на которой находятся интересующие нас данные и загрузить их. Из недостатков – стабильно работает только на страницах, использующих табличную вёрстку; приходится писать функции в случае, если данные разбиты на страницы; администраторы сайта могут Вас забанить, если будет слишком много запросов (а они будут, если страниц много);
  2. Получение данных из канала OData. Этот вариант подходит для различных LOB-приложений, которые поддерживают OData;
  3. Написать запрос с нуля, используя возможности языка «M». Как раз этот вариант я и буду использовать в данном случае.
Читать дальше →

Как мы запилили Hotline

Reading time3 min
Views3.3K
Всем привет.
Сегодня я хочу рассказать, как у нас в «Интеллин» рождаются продукты. На примере мобильного приложения Hotline.



1. Идея!

В начале был номер. И номер этот начинался на 8-800.
Такой есть у каждой средне-большой конторы, нужен для прямого общения и подчеркивает клиентоориентированность вашей компании — это вам любой маркетолог скажет. За все звонки, приходящие на такой номер платит компания. И иногда семизначные суммы.
Сами продаем такие номера – нам ли не знать?
Звонки приходят на 8-800 с ТФОП, междугородки или с мобильных – поэтому совсем дешевыми быть никак не могут.
Ты-дынь! Идея! А что если попробовать звонки в компанию приводить через SIP? Получится куда дешевле. Да вообще почти бесплатно!
Но как? Через софтфоны? Через веб-интерфейс с расширением для браузера?
Нет, не то. Быстро пришли к выводу, что нужно:
Читать дальше →

Пример работы с технологией iBeacon с помощью Swift

Reading time4 min
Views14K
Учитывая возрастающий интерес к использованию Bluetooth маячков в различных областях начиная от чипирования животных, навигации в музейной экспозиции и заканчивая наиболее востребованной функцией уведомлений по акциям в магазинах, мы в Techmas подготовили введение для их внедрения на практике. Возможно, кому-нибудь из разработчиков, кто только планирует создавать свои приложения и еще не знает с чего начать, инструкция ниже поможет разобраться с основными понятиями и возможностями технологии. Несмотря на то, что уже существует набор SDK для работы с маячками, мы используем только Swift и библиотеки CoreLocation и CoreBluetooth.



Читать далее

В каком штате зарегистрировать ООО в США для IT стартапа?

Reading time2 min
Views15K
image

Большинство IT компаний, заинтересованных выйти на американский рынок с целью аутсорсинга, задают одни и те же самые вопросы: «В каком штате мне следует зарегистрировать компанию? Какой штат в Америке предоставит для моей компании наиболее оптимальные налоговые условия для ведения бизнеса? Где я смогу заплатить меньше налогов в конце года?» Некоторые из них придерживаются общепринятого шаблона ведения внешней торговли и выбирают рекламируемый Делавэр для регистрации компании. Но является ли Делавэр наилучшим штатом для IT компаний?

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

Двухфакторная аутентификация. Новые вызовы

Reading time4 min
Views29K
Вместо пролога: в данной статье речь пойдет о краже денег с аккаунтов пользователей платежных систем, различных клиент-банков и т.п.

image

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

Правовые риски в договорах SaaS

Reading time5 min
Views22K
image

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

Исходя из определения SaaS (software as a service), пользование программным обеспечением осуществляется в рамках услуг. Однако на практике платный доступ к облачным сервисам оформляется тремя различными договорами:

Ниже вы можете ознакомиться с правовыми рисками применения в рассматриваемых отношениях указанных договоров.
Читать дальше →

Простой план-фактный анализ в Power BI Desktop. Часть вторая – визуализация

Reading time4 min
Views32K
Всем привет!

Перед вами продолжение рассказа про план-фактный анализ в Power BI Desktop. Первую часть можно почитать здесь. Если хотите прочитать в целом про платформу Power BI, то добро пожаловать сюда.
Сегодня расскажу про построение интерактивных отчётов и совсем немного про создание вычисляемых полей в Power BI Desktop. Под катом будет много гифок, так что аккуратнее с трафиком.

Внешний вид Power BI Desktop
Рисунок 1. Внешний вид Power BI Desktop
Читать дальше →

10 правил хорошего тона при описании багов

Reading time6 min
Views209K
Здравствуйте, меня зовут Наталья, я инженер по тестированию компании Docsvision.
Иногда, когда я просматриваю ошибки, записанные новенькими (а иногда и старенькими) тестировщиками, рука машинально тянется к лицу. В голове возникает только одна мысль:



«Что? Что я сейчас прочитала?»

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

Интерполяция данных: соединяем точки так, чтобы было красиво

Reading time7 min
Views167K
Как построить график по n точкам? Самое простое — отметить их маркерами на координатной сетке. Однако для наглядности их хочется соединить, чтобы получить легко читаемую линию. Соединять точки проще всего отрезками прямых. Но график-ломаная читается довольно тяжело: взгляд цепляется за углы, а не скользит вдоль линии. Да и выглядят изломы не очень красиво. Получается, что кроме ломаных нужно уметь строить и кривые. Однако тут нужно быть осторожным, чтобы не получилось вот такого:

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

Office как Платформа, выпуск №2: Power BI – новый подход к созданию бизнес-аналитики

Reading time6 min
Views49K


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

Сегодня, на примере ряда задач, мы с вами рассмотрим мощный облачный инструмент, который позволяет создавать различные яркие и красочные отчеты на основе огромного числа источников данных. А именно, спешу поделиться с вами новым инструментом, который поможет вам визуализировать ваши данные – Power BI.
Читать дальше →

PostgreSQL: Приемы на продакшене

Reading time9 min
Views91K
Можно прочитать много книг по базам данных, написать кучу приложений на аутсорс или для себя. Но при этом невозможно не наступить на грабли, при работе с действительно большими базами/таблицами особенно, когда downtime на большом проекте хочется свести к минимуму, а еще лучше совсем избежать. Вот здесь самые простые операции, как например изменение структуры таблицы может стать более сложной задачей. Наиболее интересные случаи, проблемы, грабли и их решения из личного опыта с которыми нам на проекте Pushwoosh пришлось столкнуться описаны под катом. В статье нет красивых картинок, зато есть много сухого текста.

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

Щупаем Kotlin (и чуть-чуть Gradle) на примере Отправлялки-длинных-твитов (открытые исходники)

Reading time5 min
Views13K
Я никогда не был любителем HelloWorld и туториалов. В них как правило решаются проблемы, которые данным инструментом решаются хорошо, а вот острые углы и недостатки деликатно обходятся. По-настоящему пощупать язык или библиотеку можно только на реальном приложении, написании «бизнес-кода», а не «сервиса фабрики сервисов фабрик моделей сервисов». Пример такого простого приложения — на видео. Ну что, поехали?


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

Хранение иерархических структур. Симбиоз «Closure Table» и «Adjacency List»

Reading time6 min
Views48K
Когда перед нами встаёт задача хранения и управления иерархическими структурами данных всегда приходится выбирать из довольно ограниченного набора паттернов. Для того чтобы найти наиболее подходящий шаблон необходимо проанализировать особенности каждого способа хранения и обработки данных и оценить их с учётом задачи и специфики используемой СУБД.

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

Наша цель – разработать свою реализацию, учитывающую требования нашего приложения.
Читать дальше →

Ретроспектива: как и зачем ее проводить?

Reading time6 min
Views254K


Проведение ретроспектив – это активность, которую каждая agile-команда проводит для того, чтобы решать свои проблемы. Что такое ретроспектива? Это регулярная встреча, на которой команда обсуждает свой рабочий процесс и что-то в нем меняет.

Зачем нужна ретроспектива?


Это не праздный вопрос, его часто задают начальники, когда им предлагают провести ретроспективу. Они спрашивают: «Зачем? Мы можем сами все решить». Почему же нельзя сделать так, чтобы какой-то начальник или эксперт пришел, посмотрел и сказал, что команде надо делать, а что в рабочем процессе стоит изменить?
Читать дальше →

Palantir, мафия PayPal, спецслужбы, мировое правительство

Reading time8 min
Views72K
«Лучший способ избавиться от дракона — это иметь своего собственного»



На Хабре нет ни одного упоминания о Palantir`е, в русской Википедии об этом проекте нет статьи, Mithgol молчит — что-то идет не так. Или так.

А между тем Palantir стала второй крупнейшей частной компанией Кремниевой Долины с оценкой в 20 000 000 000$ (уступив Uber). Среди прочих заслуг Palantir`а — раскрытие крупных китайских разведывательных операций Ghostnet и Shadow Network.
Журналист: — В «Википедии» говорится, что вы входите в управляющий комитет Бильдербергского клуба. Правда ли это, и если да, чем вы там занимаетесь? Организуете тайное мировое господство?

Питер Тиль: — Это правда, хотя все не до такой степени тайно или секретно, чтобы я не мог вам рассказать. Суть в том, что ведется хороший диалог между разными политическими, финансовыми, медиа- и бизнес-лидерами Америки и Западной Европы. Никакого заговора нет. И это проблема нашего общества. Нет секретного плана. У наших лидеров нет секретного плана, как решить все наши проблемы. Возможно, секретные планы – это и плохо, но гораздо возмутительнее, по-моему, отсутствие плана в принципе.

Приходится собирать информацию о Palantir`е по крохам. И такая жирная кроха прячется в книге Питера Тиля «От нуля к единице» (хотя в этой книге множество намеков и информации между строк, так же как в легендарном курсе и его переводе на Хабре, спасибо zag2art).

Питер Тиль: Цель, которую я ставил перед собой, читая стэнфордский курс о стартапах и предпринимательстве, заключалась в том, чтобы донести все те знания о бизнесе, которые я приобрел за последние 15 лет в Кремниевой долине как инвестор и предприниматель, собрать их воедино. С книгой то же самое.

Надеюсь, благодаря этой статье и комментам хабрачитателей, положение дел относительно Palantir`а станет чуточку яснее.
(Есть многомиллиардный рынок, связанный с аналитикой и ИБ, а мы ничего про него не знаем.)
Читать дальше →

Тестирование парольных политик крупнейших веб-сервисов

Reading time9 min
Views18K
image

Passwords, passwords never change...
Почти каждый пользователь сети Интернет имеет хотя бы один аккаунт или хотя бы однажды оставлял свои данные в различных службах. Почтовые сервисы, социальные сети, облачные хранилища, онлайн-игры и многое другое, – в одном Facebook уже более 1 млрд учетных данных. Естественно, что, имея большую аудиторию, компании стараются обеспечивать хорошую защищенность своих серверов и сервисов. Однако, если пользователи не прилагают усилий к защите своих аккаунтов и вообще не соблюдают минимальных мер информационной безопасности, все усилия извне могут оказаться напрасны.
Читать дальше →

«Й» вам не «и» краткое! О важности нормализации Unicode

Reading time3 min
Views55K
й

За последние полгода интернет просто наводнила «буква» «й». Я встречал ее на новостных сайтах, в мессенджерах, на хабрахабре и geektimes. «О чем вообще речь?» — спросите вы — «Я вижу обычную букву й!». Вам повезло. Я вижу ее так:
image
image
image
image
image
Если вы из тех счастливчиков, у кого буква «й» выглядит так же, как и «настоящая» «й», вот вам фокус: скопируйте ее (букву «й») в блокнот, поставьте курсор в конец буквы и нажмите backspace. Магия, отвал башки просто!
Как же так получается?

Графемы, глифы, code points, компоновка и байты

Очень краткое введение:
Графема — то, что мы привыкли называть буквой в смысле единицы текста. Глиф является единицей графики, и может графически представлять саму графему или же ее часть (например, различные диакритические знаки: ударения, умляуты, надстрочное двоеточие у буквы ё и т.д.).
Code Point — то, как записывается текст в представлении Unicode. Одна графема может записываться разными code points.
Code Points кодируются различным байтовым представлением в зависимости от стандарта: UTF-8, UTF-16, UTF-32, BE, LE…
Языки программирования, как правило, работают с code points; для нас, людей, привычно мыслить глифами.

Давайте же наконец разберемся с нашей буквой й. Что же в ней такого особенного?
Эта буква представляет из себя одну графему («и» краткое), но записана она двумя code points:
U+000438 CYRILLIC SMALL LETTER I
U+000306 COMBINING BREVE

Если вы проделали фокус с нажатием backspace, вы как раз и стерли COMBINING BREVE, или, говоря полиграфическим языком, значок краткости над гласной.

Обычная буква «и» краткое, которую мы все с вами привыкли набирать клавиатурой, представляет из себя композитный символ, который записывается одним code point:
U+000439 CYRILLIC SMALL LETTER SHORT I
Читать дальше →

Быстрая и удобная генерация IL

Reading time14 min
Views22K
Я много раз сталкивался с задачей динамической генерации кода (например, при написании эффективного сериализатора или компилятора DSL). Это можно делать разными способами, какой из них лучший – дискуссия для отдельной статьи. По ряду причин я предпочитаю Reflection.Emit и CIL (Common Intermediate Language) и расскажу, с какими проблемами пришлось столкнуться на этом пути, а также об их решении: умной обертке над ILGeneratorGroboIL из библиотеки Graceful Emit.

Хочу отметить при этом, что иногда встречаются ситуации, когда у нас нет большого выбора: например, при написании сериализатора необходимо иметь доступ к приватным полям, и приходится использовать IL. Кстати, известный сериализатор protobuf-net содержит несколько сотен IL-инструкций.

Если вы ни разу не сталкивались с использованием IL-кода, то статья может показаться сложной для понимания, поскольку содержит много примеров кода с использованием IL. Для получения базовых знаний рекомендую прочитать статью Introduction to IL Assembly Language.
Читать дальше →

Information

Rating
Does not participate
Location
Реховот, Мерказ, Израиль
Date of birth
Registered
Activity