Как стать автором
Обновить
17
0
Кирилл Ашихмин @BOOMik

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

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

SwiftLint — чистота и порядок в iOS проекте

Время на прочтение6 мин
Количество просмотров55K
image

Думаю, все знают, как бывает непросто поддерживать соблюдение code style и соглашений в iOS-проекте. Сегодня поговорим о том, как автоматизировать этот процесс с помощью утилиты SwiftLint.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии17

Новый LampTest.ru

Время на прочтение4 мин
Количество просмотров17K
Светодиодные лампочки появились уже во многих домах, а скоро они будут у всех, но не все лампочки хорошие и не всегда реальные параметры лампы соответствует тому, что заявляет производитель. Чуть больше года назад у меня родилась идея сделать сайт с результатами инструментальных тестов светодиодных ламп. На мой клич о помощи откликнулся замечательный программист из Нижнего Новгорода Сергей Андреев, который создал быстрый, красивый и удобный сайт. LampTest.ru работает уже полгода, а сегодня я рад представить его обновлённую версию.



За это время я протестировал 278 ламп, включая 226 светодиодных.

Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии60

Еще одна статья про изготовление домашнего медиа-сервера

Время на прочтение15 мин
Количество просмотров54K
На Гиктаймс уже не раз и не два размещались статьи про сборку своего домашнего NAS/медиа-сервера/ТВ-приставки и тому подобных произведений чешущихся и относительно прямых рук. Для тех, кто любит подобное рукоблудие, или планирует сам заняться таковым, ниже представлена еще одна вариация на эту тему.


Ну давай уже, что там у тебя?
Всего голосов 31: ↑29 и ↓2+27
Комментарии119

Let's Encrypt выходит в публичную бету: HTTPS всюду, каждому, отныне и навсегда бесплатно

Время на прочтение3 мин
Количество просмотров67K
Let's Encrypt

Let's Encrypt — это некоммерческая инициатива, предоставляющая бесплатный, автоматизированный и открытый CA (certificate authority — центр сертификации), созданный ISRG на благо общества:

  • бесплатно: владелец всякого доменного имени может воспользоваться Let's Encrypt и получить доверенный (читать как «признаётся любым современным браузером») TLS-сертификат (TLS — наследник SSL) совершенно бесплатно;
  • автоматизированно: Let's Encrypt предоставляет бесплатное и свободное программное обеспечение (клиент), которое, будучи настроенным на веб-сервере, может полностью автоматически запрашивать безвозмездно предоставляемые сертификаты Let’s Encrypt, автоматически конфигурировать и обновлять их;
  • безопасно: Let’s Encrypt строится как платформа для продвижения наилучших практик безопасности TLS как на стороне центра сертификации (CA), так и на стороне веб-сайтов, помогая администраторам должным образом настраивать веб-серверы;
  • прозрачно: информация о выпуске и отзыве каждого сертификата Let's Encrypt доступна вполне и публично так, что любой желающий изучить её сможет это сделать;
  • свободно: протоколы взаимодействия со CA, позволяющие автоматизировать процессы выпуска и обновления сертификатов, будут опубликованы как открытый стандарт для максимального внедрения;
  • кооперативно: как и любой протокол, лежащий в основе Интернета и Всемирной паутины, Let’s Encrypt является совместным, неподконтрольным какой-либо конкретной организации некоммерческим проектом созданным исключительно для того, чтобы принести пользу обществу.

Читать дальше →
Всего голосов 72: ↑71 и ↓1+70
Комментарии138

Xamarin.UITest

Время на прочтение5 мин
Количество просмотров16K
В этой статье я расскажу вам о Xamarin.UITest — фреймворке для приемочного UI тестирования от Xamarin.

Что это такое и как его готовить


Xamarin.UITest сделан на основе Calabash и имеет сходный с ним принцип работы. Однако, тесты на данном фреймворке пишутся на С# и NUnit (в отличие от Calabash, в котором используется Gherkin+Ruby). Фреймворк кроссплатформенный и, следовательно, он позволяет писать тесты как для платформы iOS, так и для Android. Windows Phone не поддерживается, что я лично считаю недостатком данного инструмента. Зато в нем вполне поддерживается тестирование нативных приложений на Java и Objective-C.

image

Как это работает
Всего голосов 15: ↑15 и ↓0+15
Комментарии2

Интеграция нативной рекламы Admob в ListView

Время на прочтение21 мин
Количество просмотров15K
Весной 2015 года в рамках Google Admob был анонсирован новый для них способ отображения рекламных блоков, а именно Native ads (далее нативная реклама), который на текущий момент действует в режиме бета-релиза. Плюс нативной рекламы – это высокая адаптивность к дизайну приложения, которая позволяет показать рекламу таким образом, чтобы она не бросалась в глаза и не мешала работе с приложением. В статье будут отмечены определенные моменты, которые возникли в процессе интеграции Admob Native Ads в собственное приложение (пример того, что получилось показан на картинке, названия удалены), а также приведен практический пример с фрагментами кода (полный вариант при желании можно загрузить и посмотреть тут.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии12

3 способа задать разметку для различных устройств в C#/XAML приложениях Windows UWP

Время на прочтение3 мин
Количество просмотров15K

Для начала, хотелось бы напомнить, каким образом можно было создавать универсальные приложения в Windows 8.1. Создавалось решение с тремя проектами: для телефона, для Windows 8.1 и проект с общим кодом. А как теперь в Windows 10? Сейчас расскажу.
Почитать больше об этом
Всего голосов 15: ↑14 и ↓1+13
Комментарии5

Публикация Android библиотеки в jCenter

Время на прочтение8 мин
Количество просмотров19K


В жизни каждого андроид разработчика настаёт момент, когда количество самописных утилит и хелперов, качующих из проекта в проект, переваливает за десяток. В этом случае хорошей практикой будет оформление подобных хелперов в виде самостоятельных «модулей» в терминах Android Studio. Еще лучше, если Вы собираетесь поделиться Вашими наработками с комьюнити, снабдив исходный код подходящей лицензией. Но просто залить исходники на GitHub в этом случае будет недостаточно – хочется, чтобы любой желающий мог подключить библиотеку с помощью однострочной Gradle зависимости, например такой:

dependencies {
   compile 'com.github.romangromov:simpleprefs:0.0.8'
}

О том, как этого добиться и пойдет речь в данной статье.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии5

Первый месяц раскрутки бесплатного неигрового приложения: грабли, шишки, удачи, выводы

Время на прочтение9 мин
Количество просмотров23K
Итак, позади первый месяц (ну, чуть больше), как на Гуглоплее появилось наше первое приложение. Мало того, что неигровое, так еще и в одной из самых грустных категорий – книги и справочники. Продвигать такое в наше смутное и нечитающее время – та еще задачка, хотя приложение и бесплатное. Ниже я постаралась собрать все, что может оказаться полезным другим таким же негеймдевам – статистика, выхлопы с разных площадок, мысли вслух.

Сразу – вводная, которую я сама себе нарисовала, еще планируя выход на рынок. Во-первых, на раскрутку приложения я не буду тратить ни копейки денег. Не потому что их нет (хотя…), а пока из принципа – чтобы собрать максимальный урожай с бесплатных вариантов. Во-вторых, ограничиться только установками через Гуглоплей. И сразу же спойлер – первое пока удается (потрачено 0 р. 00 коп.), второе – уже нет.

И еще один спойлер — под катом анализ конверсии до и после привлечения аудитории торрентофилов…

Первый месяц раскрутки бесплатного неигрового приложения: грабли, шишки, удачи, выводы (Хабрахабр)
Читать дальше →
Всего голосов 26: ↑21 и ↓5+16
Комментарии33

Программное создание NinePatchDrawable

Время на прочтение9 мин
Количество просмотров9.1K
В новом Android Lollipop появился такой интересный компонент как VectorDrawable. Если использовать его с умом, можно значительно снизить объем приложения, сэкономив на графических ресурсах, плюс, использование векторной графики освобождает нас от муторного процесса создания изображений под разные плотности экрана. Первая мысль, которая меня посетила, когда я увидел VectorDrawable, была: “Ух ты! А его можно тянуть как NinePatch?”. Оказалось нельзя. Тут можно было бы немного огорчиться и довольствоваться тем, что хотя бы иконки можно в векторе держать. Однако, я на этом решил не останавливаться. В итоге получилась универсальная утилита, которая из любого Drawable способна сделать NinePatchDrawable.



В изображении, которое вы видите, используется вектор, но он растянут по центру. И это удивительно! Возможность растягивать вектор только в определенных областях предоставляет, по истине, колоссальные возможности. А если учесть, что есть проекты позволяющий использовать вектор на более ранних версиях андроида, векторные изображения начинают показывать себя во всем своем великолепии.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии2

Android Process: Я тебя породил, я тебя и …

Время на прочтение12 мин
Количество просмотров39K


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

В этой статье я расскажу о некоторых ошибках, которые могут возникнуть в результате нарушения шестой заповеди (не убей) по отношению к процессу приложения, и о том как проверить на сколько качественно он возвращается с того света.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии18

Введение в новый CoordinatorLayout

Время на прочтение5 мин
Количество просмотров54K
В этом году на конференции Google IO компания Google представила новую библиотеку Android Design Support Library, которая создана для того, чтобы помочь разработчикам внедрять материальный дизайн в их приложения. Билиотека содержит много компонентов, нужных для этого нового стиля, и работает со всеми уровнями API, начиная с седьмого. Если по какой-то причине вы пропустили её анонс, можете ознакомиться с постом Ian Lake, выложенным на Android Developers Blog.

Встречайте Android CoordinatorLayout


Из всех компонентов, включенных в Android Design Support Library, наиболее интересным выглядит новый «прокачанный FrameLayout», он же герой нашей статьи — CoordinatorLayout. По названию можно догадаться, что CoordinatorLayout позволяет координировать некие зависимости между включенными в него виджетами.

Всё, что нужно сделать — обернуть необходимые нам виджеты в CoordinatorLayout. Давайте посмотрим, как это будет выглядеть в коде. Наш демонстрационный код очень прост — Floating Action Button, по нажатию на которую на экране появляется Snackbar.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии5

Альтернативы Google Play и App Store или как живет Китай без Google Play

Время на прочтение3 мин
Количество просмотров230K

Альтернативные сторы не столь популярны в России, но являются неотъемлемой частью китайского мобильного рынка, где Google Play заблокирован. Глядя на Андроид, некоторые китайские компании запустили собственные iOS сторы. При этом устанавливать игры и приложения с таких сторов можно и на обычные iPhone (не Jailbreak). Это одна из особенностей, которую было бы неплохо распространить по всему миру, ведь монополия официальных сторов это не есть хорошо. На российском рынке альтернативный стор запустил пока только Яндекс. Но его доля очень маленькая, поэтому его пока сложно назвать конкурентом Google Play. Возможно в будующем ситуация изменится, в первую очередь за счет выхода китайских сторов на другие рынки, так например уже многие слышали про приложение – Mobogenie. Но мы решили разместить более полный список альтернативных приложений, которые существую на сегодняшний день.
Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии17

Автоматическое увеличение номера сборки в Xcode

Время на прочтение2 мин
Количество просмотров3.3K
Пользователи и тестировщики могут найти ошибки, которые вы наверняка уже исправили. Иногда пользователи используют старую версию приложения, иногда ваши исправления не так хороши, как вы думали. В обоих случаях небольшой уникальный номер версии, отображаемый в приложении, может сэкономить часы вашей работы.

Это можно сделать
Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии15

Генерируем номер версии и билда на иконке iOS приложения

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


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

Зачастую эту информацию прячут где-нибудь, например, в приложении Яндекс.Маркет, нужно ткнуть в раздел Кабинет и выбрать пункт «О приложении»:

Пример

Для удобства (или потому, что этот экран ещё не готов), можно вынести эту полезную информацию прямо на иконку приложения.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии9

Malevich

Время на прочтение3 мин
Количество просмотров16K
Так сложилось, что я люблю маленькие верткие библиотеки, которые с одной стороны — легко расширять, а с другой — удобны в использовании.

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

Так как человек я по натуре ленивый — решил пойти проторенным путем — открыл пример от гугла Loading Large Bitmaps Efficiently и решил вырезав из него все ненужное — получить с одной стороны легко расширяемую, а с другой стороны максимально эффективную библиотеку.

Так как кто как не эти чуваки лучше знают как грузить битмапы?

Так и получился Малевич:

image

Спойлер:

malevich.load(mImageUrl).into(mImageView);

Подробности
Всего голосов 29: ↑27 и ↓2+25
Комментарии27

Дизайн мобильных приложений: почему мы работаем в @1x

Время на прочтение4 мин
Количество просмотров62K
image

В одной из предыдущих статей наши коллеги описали требования по передаче проекта от дизайнеров разработчикам мобильных приложений. Эти требования мы, как отдел дизайна в Rambler Digital Solutions, должны соблюдать.

В этот раз хотелось бы рассказать о некотором нюансе разработки дизайна приложений, который облегчает нам жизнь — о разрешении дизайн-макетов и о плюсах и минусах выбора того или иного исходного разрешения.
Читать далее
Всего голосов 18: ↑17 и ↓1+16
Комментарии15

Google Cloud Messaging: «Сова, открывай! Пуш пришел!»

Время на прочтение6 мин
Количество просмотров63K
Всем известный сервис Google Cloud Messaging (GCM) нужен для того, чтобы ваше приложение всегда показывало актуальные данные пользователю. Схема работы сервиса включает в себя три компоненты.



Непосредственно сервер GCM, ваш пуш-сервер и устройство с установленным приложением. Алгоритм работы простой: устройство регистрируется в GCM, получает registrationId – некий токен, который используется в дальнейшем, – сохраняет его у себя локально и передает серверу. Далее пуш-сервер использует этот registrationId для отправки сообщений вашему приложению на устройстве.

В этом материале будут рассмотрены проблемы на двух участках, который обозначены на схеме: пуш-сервер – GCM и GCM – устройство.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии30

StorIO — человеческий API для работы с SQLiteDatabase и ContentResolver

Время на прочтение3 мин
Количество просмотров14K
Не секрет, что API SQLiteDatabase и ContentResolver — отстой, поэтому многие стараются от них абстрагироваться. Кто-то выбирает ORM, кто-то DAO, кто-то пишет своё.

За долгие годы Android разработки мы прошли через все эти этапы: ORM часто становится узким местом в критический для проекта момент, своё DAO требует тестирования и разработки, что отнимает много времени, которое можно было тратить на другие детали реализации приложения, готовые DAO в принципе решают вопрос, но различные библиотеки имеют свои плюсы и минусы (15стандартов.jpg), посмотрите, что предлагаем мы:

1. API для людей: удобные билдеры (помните 5-7 nullов в запросах?), читаемые и очевидные конструкции, Immutability и Thread-safety.
2. Упрощенный набор операций: вместо стандартного CRUD (Create-Read-Update-Delete или Insert-Select-Update-Delete) мы предлагаем три операции — Put, Get, Delete, при этом вы имеете полный контроль над их реализацией, можете, например, упороться и хранить один объект в нескольких таблицах и так далее.
3. Опциональный Type-Safe Object Mapping без Reflection, но если вы хотите работать с Cursor или ContentValues — пожалуйста.
4. Некая схожесть с Retrofit: вы можете выполнить любую операцию как блокирующий вызов либо как rx.Observable, мы можем добавить callback модель выполнения операций в будущем.
5. Reactive — Observable из Get операции будет получать уведомления об изменении таблиц в случае SQLite или Uri в случае ContentResolver, это позволяет полностью заменить лоадеры, API которых просто отвратителен.

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии9

Как вырастить айтишника

Время на прочтение4 мин
Количество просмотров27K


Как недавно признался Цукерберг, «я никогда не стал бы программистом, если бы не играл ребёнком в компьютерные игры». Не станем утверждать, что путь к успеху в IT лежит через геймерство. Но всё же без тесного знакомства с самыми разными программами и гаджетами программисту не обойтись. И в наши дни знакомство это начинается с достаточно раннего детства. Информационные технологии уже давно проникли в нашу жизнь. Современные программисты, в детстве игравшие на приставках и компьютерах, зачастую сталкивались с непониманием родителей, в чьей молодости не было подобных вещей. Зато теперь эти самые программеры сами обзавелись детьми и гораздо лучше понимают их увлечения. Зачастую даже становятся этакими наставниками по хайтек-развлечениями, обучая детей премудростям комбо-ударов, постройки юнитов и частой отправки врагов на респаун. Как волки обучают волчат азам охоты. И нам стало любопытно, во что же программисты сегодня могут поиграть со своими детьми? И не просто поиграть, а с пользой для молодого ума.
Читать дальше →
Всего голосов 46: ↑39 и ↓7+32
Комментарии18
1
23 ...

Информация

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

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

Mobile Application Developer
Lead