Search
Write a publication
Pull to refresh
26
0
olegi @olegi

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

Send message

Auto Layout и UIScrollView. Как его готовить?

Reading time2 min
Views55K

В iOS 6 Apple представили замечательную возможность для вёрстки UI для iOS-приложений — Auto Layout. Но вот что удивительно, до сих пор очень немногие проекты используют эту возможность. А ведь это очень сильный инструмент, если с умом подойти к вёрстке UI, можно сэкономить очень много времени на подстраивании элементов для 3,5” и 4” экранов, портретно-ландшафтном расположении экрана и даже на универсальной вёрстке для iPhone и iPad.

И это всё не считая того, что скоро представят iPhone 6 и никто до сих пор точно не знает, какое там будет разрешение и какой экран. Лучше бы заранее подстраховаться.

В основном, тема Auto Layout довольно простая, и изучить её несложно. Но лично я столкнулся с большой проблемой при расположении элементов в UIScrollView. Я потратил немало времени и нервов на изучение того, как же правильно расположить элементы и указать размер контента для того чтобы ScrollView начал пролистываться.

Хоть и решение довольно простое, но на него не так просто выйти. В данной статье я бы хотел рассказать, как же всё-таки правильно готовить UIScrollView в Auto Layout.

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

Интерфейс приложения: наши ошибки и 16 советов как их не повторить

Reading time6 min
Views39K
Как только мы сделали первую версию iOS приложения, я начал упорно приставать к людям на футбольных полях и баскетбольных площадках с просьбой установить Topic и пощелкать его прямо при мне.

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


Изображение №1: поиск игр (Find a game в меню приложения)
Читать дальше →

Долой оковы MongoDB

Reading time6 min
Views30K
Многие из нас в свое время бросились с энтузиазмом осваивать MongoDB, действительно красота — удобный JSON формат, гибкая схема (точнее полное ее отсутствие), от установки системы до первого использования проходят буквально минуты. Но через некоторое время, уже когда Mongo надежно «зашита» в наш проект наступает разочарование. Простейшие запросы требуют постоянного тыкания в документацию, чуть более сложные способны убить почти целый день рабочего времени, а уж если понадобится join разных коллекций — то увы…

И вот уже кто-то возвращается к Постгресу с его частичной поддержкой JSON…

Но, к счастью, уже куется, уже спешит к нам полноценная замена Mongo, полноценная полу-структурированная Big Data СУБД AsterixDB. Этот проект возглавляет профессор UCI Michael Carey, ученик легендарного пионера СУБД Майкла Стоунбрейкера.

Проект стартовал просто как исследовательское начинание в области Big Data и изначально ориентировался на создание общего стэка для MapReduce и SQL. Но, буквально несколько лет назад, было принято решение построить Big Data JSON СУБД. По словам Майкла Кери, «AsterixDB is Mongo done right.» В чем же основные фишки AsterixDB?
Читать дальше →

Кросскомпиляция библиотек под iOS, делаем это правильно

Reading time4 min
Views11K
Во время разработки большого проекта наступает такой момент, когда надо встроить в приложение библиотеку из мира open source с подходящей лицензией. Например, вам захотелось ускорить декодирование картинок, или понадобился sqlite3 с fts4, или нужны какие-то плюшки из libicu, которых нету в системной libicucore.

Для этого библиотеку, которая понадобилась, нужно будет собрать для 5 архитектур: armv7, armv7s, arm64, i386, x86_64. С кросскомпиляцией есть много подводных камней, на которые не хотелось бы наткнуться, когда есть уже проверенные решения. В этом коротком посте я расскажу об автоматизации сборки библиотек на примере protobuf и sqlite3.
Читать дальше →

Стратегия (Перевод с английского главы «Strategy» из книги «Pro Objective-C Design Patterns for iOS» Carlo Chung)

Reading time13 min
Views17K
Помните ли вы, когда вы в последний раз начиняли блок кода множеством разных алгоритмов и использовали спагетти из условий if-else / switch-case, чтобы определить, какой именно из них использовать. Алгоритмы могли представлять собой набор функций/методов похожих классов, которые решают схожие проблемы. К примеру, у вас есть процедура для проверки входных данных. Сами данные могут быть любых типов (например, CGFloat, NSString, NSInteger и прочее). Каждый из типов данных требует различных алгоритмов проверки. Если бы вы могли инкапсулировать каждый алгоритм в виде объекта, то можно было бы не использовать группу операторов if-else / switch-case для проверки данных и определения, какой из алгоритмов нужен.

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

Тайны кнопок в Android. Часть 3: Кнопки в главном меню

Reading time8 min
Views64K
Главное меню — один из основных инструментов для взаимодействия пользователя с приложением. В Android 2.3.x и раньше оно было «спрятано» на аппаратной кнопке Menu, и разработчики рисовали меню кто как умел. Но начиная с Android 3.0 недоработка была исправлена, меню стало стандартным компонентом на Action Bar, и получило ряд новых возможностей. При этом процесс разработки меню практически не претерпел изменений. Меню в Android — это не просто набор кнопок, на которые можно вешать OnClickListener. В Android с меню можно сделать куда больше, чем кажется на первый взгляд.

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

Пример главного меню Пример главного меню
Читать дальше →

Таргетинг пользователей: регион, город, улица

Reading time9 min
Views12K
Иногда в своих проектах мне хотелось прикрутить некоторую географическую базу, с помощью которой я бы разделял пользователей ресурса по их месту пребывания. Но постоянная занятость делами насущными никак не давала реализовать идею с базой регионов и мало-мальски удобным интерфейсом для ее визуализации.
Волею судьбы и заказчика (или судьбы заказчика или заказчика судьбы) такая задача, наконец-то, возникла — необходимо создать базу регионов, городов и улиц для сегментирования пользователей и реализовать удобную web-форму, собственно, для ее использования. Благо заказчик ориентировал свой бизнес на Россию, что резко упростило задачу.

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

Перевод учебника по алгоритмам

Reading time1 min
Views167K


Рад сообщить, что вышел перевод отличнейшего учебника Дасгупты, Пападимитриу, Вазирани «Алгоритмы», над которым я работал последние несколько лет. В книге многие алгоритмы объяснены гораздо короче и проще, чем в других учебниках: с одной стороны, без излишнего формализа, с другой — без потери математической строгости. Откройте книгу на каком-нибудь известном вам алгоритме и убедитесь в этом. =)

В общем, угощайтесь: печатный вариант перевода, электронный вариант перевода (PDF), печатный вариант оригинала, электронный вариант оригинала (PDF).
Читать дальше →

Защита баз данных в iOS

Reading time4 min
Views19K


Уязвимость информации, хранимой в базах данных, является одной из самых распространенных проблем безопасности iOS приложений. Многие программы предлагают пользователю использовать пароль для доступа к данным — но в большинстве случаев это никаким образом не влияет на то, в каком виде хранится сама информация. Таким образом, к данным таких приложений, как менеджеры паролей, блокноты, органайзеры, трекеры финансов, может получить доступ практически любой посторонний, в руках у которого окажется ваше устройство.
Читать дальше →

Детали реализации стека — часть вторая

Reading time5 min
Views25K
image Несколько человек спрашивали меня, в контексте моего предыдущего поста о значимых типах, почему же всё-таки значимые типы располагаются на стеке, а ссылочные нет.

Если коротко, то «потому что могут». И т.к. стек «дёшев» мы располагаем их на стеке, когда только это возможно.

Длинный ответ он … длинный.
Читать дальше →

Борьба за трафик. Как вывести сайт из-под спам-фильтра Google (Первая Часть)

Reading time9 min
Views49K
В марте прошлого года мы неожиданно получили письмо от команды Google по борьбе со спамом.

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

image

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

Cityleeks.org

Reading time3 min
Views8.7K
CityLeeks.org — это эффективный инструмент воздействия жителей города на представителей органов власти, организации и службы, которые отвечают за обеспечение порядка на определенной территории, в городе, в районе.
Мы все сталкиваемся с различными общественно значимыми проблемами вокруг нас (ямы на дорогах и во дворах, мусорная свалка, сосульки на крыше дома, продажа сигарет и алкоголя несовершеннолетним и т.п.), т.е. такими проблемами, которые беспокоят не только лично нас, а досаждают многим людям. Мы хотим, чтобы ответственные за поддержание порядка на соответствующей территории организации реагировали на наши обращения оперативно, а результат их работы нас устраивал.
Сервис CityLeeks.org позволяет любому жителю сообщать о таких проблемах, отслеживать их состояние и оценивать работу соответствующих служб. Открытость, публичность и привлечение внимания к проблеме – вот механизмы, которые заставляют ответственные организации действовать оперативно и действительно более ответственно.



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

Автоматическая очистка фона изображений

Reading time2 min
Views80K


Разработчики из компании Bonanza потратили более двух лет на создание программы для автоматического удаления фона с изображений. Задача оказалась гораздо сложнее, чем думали поначалу. Как оказалось, автоматическое удаление фона — одна из классических проблем компьютерного зрения, известная ещё с 80-х годов.

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

Расследование об информационной безопасности в Яндексе. Rdomn – скрытая угроза

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

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



В наши дни чаще всего заражению подвергается веб-сервер: устанавливаются вредоносные модули, внедряются вредоносные shared objects, либо же исполняемый файл перекомпилируется с вредоносной функциональностью. Для внедрения вредоносного JavaScript активно используется, например, Flash.
Читать дальше →

TYPO3 CMS кластер в облаке Jelastic

Reading time5 min
Views6.5K
TYPO3 — отличное решение для веб-сайтов любых размеров, от небольших до корпоративных. Эта CMS позволяет с легкостью создавать и управлять многоязычными корпоративными сайтами для больших организаций. Такие веб-сайты могут масштабироваться и адаптироваться к любым возникающим потребностям.

Jelastic дает возможность сделать ваш сайт на TYPO3 не только очень гибким и доступным, но также стабильным и высокопроизводительным. Для достижения такого результата необходимо настроить высокодоступный кластера с двумя серверами приложений Apache, балансером NGINX, нодой Memcached и двумя реплицированными базами данных MySQL.

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

Ускоряем Nginx за 5 минут

Reading time5 min
Views298K
image
Попытайтесь повторить это сами

Как правило, настроенный должным образом сервер Nginx на Linux, может обрабатывать 500,000 — 600,000 запросов в секунду. Но этот показатель можно весьма ощутимо увеличить. Хотел бы обратить внимание на тот факт, что настройки описанные ниже, применялись в тестовой среде и, возможно, для ваших боевых серверов они не подойдут.

Минутка банальности.

yum -y install nginx

На всякий пожарный, создадим бэкап исходного конфига.

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
vim /etc/nginx/nginx.conf

А теперь можно и похимичить!
Бдыжь-бдыжь

Пишем эффективный blur на Android

Reading time8 min
Views55K
image
Сегодня мы попытаемся разобраться с методами размытия (blur) доступными для Android разработчиков. Прочитав определенное число статей и постов на StackOverflow, можно сказать, что мнений и способов выполнить эту задачу достаточно много. Я попытаюсь собрать все это в кучу.

И так, зачем?


Все чаще и чаще можно заметить эффект размытия в приложениях появляющихся на просторах Google Play Store. Взять хотя бы замечательное приложение Muzei от +RomanNurik или тот же Yahoo Weather. Глядя на эти приложения можно заметить, что при умелом обращении размытием можно добиться очень впечатляющих результатов.

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

Кандидатская диссертация. Инструкция по корчеванию научных пней.Часть 2

Reading time8 min
Views39K


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

А будет перечень проблем и опасностей, возникающих на пути соискателя (будем их называть пнями, чтобы было не так печально читать). К перечню прилагаются практические советы о том, как избежать этих опасностей и решить возникающие проблемы. Хочу поделиться с Вами своим успешным опытом и опытом своих друзей.

Этот пост является продолжением предыдущего поста о разнообразных научных пнях: habrahabr.ru/post/213367

Представлен коллектив пней, обитающий на этапе подготовки к защите диссертации. Еще свежи воспоминания о приключениях на этом этапе! Спешу же поделиться с вами соответствующими проблемами, секретами и советами.

Сегодня познакомимся со следующими пеньками:
1. Еще месяц-другой подождать до защиты диссертации? Без проблем, ведь это ничего не изменит.
2. Подготовить документы для диссертации? Легко и быстро!
3. Нужно помочь с пакетом документов? Всегда рады, милости просим!
4. Сайт ВАК? Открыт круглосуточно!
5. Новые постановления ВАК? Жизнь упрощается!

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

monit — наблюдатель за системными процессами

Reading time7 min
Views95K
Теория

Monit — самостоятельный демон, работающий от пользователя root. Демон работает на Linux, Free/Net/OpenBSD, SUN Solaris и некоторых других UNIX-системах. Это OpenSource проект, у которого есть «старший брат» — коммерческий проект MMonit. Последний обладает более широким функционалом в вопросе массового мониторинга, межсетевого взаимодействия и составления отчетов. Идея авторов проста — для одиночного сервера используем Monit, для большой сетевой фермы — MMonit.

Узнать больше

Прокачка debian/ubuntu сервера для маленьких

Reading time9 min
Views185K
Всем привет. Недавно появилась необходимость поднятие VPS на debian 7 за скромные деньги.
О плясках с бубенчиком я бы хотел описать тут в подробностях.
Всё в этом посте было собрано на просторах интернета, доработано, разжевано и скинуто в одну статью.


Выбор пал на https://account.nt-vps.ru/register/ из-за низких цен и неплохой стабильности за эти деньги(правда 2 дня были серьезные проблемы с сетью). Был взят VPS за 5 рублей в сутки(или за 150р в месяц) с небольшими конфигурациями ОЗУ 128mb и 10Гб на диске.

В автоматическом режиме был установлен Debian 7.0 x86-64 Wheezy и VPS была готова к работе.
64 битная сиcтема была выбрана лишь для моих личных нужд, а вам же советую, на этом VPS, ставить x86.

Далее

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity