Как стать автором
Обновить
11
0
Денис Миончинский @m7d7o7

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

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

Быстрый, простой, сложный: как мы выпилили Realm

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

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

Мы тоже использовали Realm — 3 года подряд. Сначала он помогал, потом раздражал, пару раз выстрелил и в конце чуть не вогнал команду в депрессию. В итоге мы удалили Realm из проекта. Это сложный инструмент — простота интеграции обманчива, а за все удобства придётся расплачиваться.

Почему и как мы его удалили
Всего голосов 46: ↑46 и ↓0+46
Комментарии47

Пишем персистентный слой на Realm

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

Пишем простой персистеный слой с использованием популярной 3rd party library Realm на iOS.

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

Как хранить данные в iOS: UserDefaults, Keychain и сэндвичи

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров11K

Хранение данных — одна из самых ведущих тем в разработке. Очень важно уметь выбирать подходящий инструмент для разных ситуаций и знать, как хранить данные безопасно и максимально эффективно, не замедляя приложение. Старший iOS-разработчик red_mad_robot Аня Кочешкова рассказывает о механизмах хранения, способах работы с ними, а также плюсах и минусах каждого подхода.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии3

Keychain API в iOS

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

Не так давно столкнулся с необходимостью использования Keychain-а для обеспечения дополнительной защиты при входе в приложение.

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

Начнем с небольших определений


Keychain — зашифрованная база данных, куда сохраняются небольшие объемы пользовательской информации (см. документацию Apple).

Общая схема работы продемонстрирована на рисунке.

image

Keychain API Services в свои очередь являются часть фреймворка Security, но его рассмотрение требует отдельной статьи.

Добавление элемента


let keychainItemQuery = [
     kSecValueData: pass.data(using: .utf8)!,
     kSecClass: kSecClassGenericPassword
 ] as CFDictionary

 let status = SecItemAdd(keychainItemQuery, nil)
 print("Operation finished with status: \(status)")

Выше приведен пример сохранения пароля в Keychain.
Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Паттерн Observer в Swift

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

Всем доброго времени суток. В этой статье речь пойдет о паттерне Observer. Все кто связан с iOS разработкой наверняка сталкивались с инструментами в основе работы которых лежит этот паттерн. Например NotificationCenter, KVO или великий и могучий RxSwift который настолько сейчас популярен. В этой статье я на простом примере разберу принцип работы данного паттерна.

Читать далее
Всего голосов 6: ↑4 и ↓2+2
Комментарии13

Списки захвата в Swift: в чём разница между ссылками weak, strong и unowned?

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

Джозеф Райт, «Пленный» — иллюстрация «сильного» захвата

Список «захваченных» значений находится перед списком параметров замыкания и может «захватить» значения из области видимости тремя разными способами: используя ссылки «strong», «weak» или «unowned». Мы часто его используем, главным образом для того, чтобы избежать циклов сильных ссылок («strong reference cycles» aka «retain cycles»).
Начинающему разработчику бывает сложно принять решение, какой именно применить способ, так что вы можете потратить много времени, выбирая между «strong» и «weak» или между «weak» и «unowned», но, со временем, вы поймёте, что правильный выбор — только один.
Давайте взглянем на проблему.
Всего голосов 8: ↑8 и ↓0+8
Комментарии18

Введение в Git

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

Оглавление


Предисловие
1. Настройка git
....1.1 Конфигурационные файлы
....1.2 Настройки по умолчанию
....1.3 Псевдонимы (aliases)
2. Основы git
....2.1 Создание репозитория
....2.2 Состояние файлов
....2.3 Работа с индексом
....2.4 Работа с коммитами
....2.5 Просмотр истории
....2.6 Работа с удалённым репозиторием
3. Ветвление в git
....3.1 Базовые операций
....3.2 Слияние веток
....3.3 Rerere
4. Указатели в git
....4.1 Перемещение указателей
5. Рекомендуемая литература

Предисловие


Git — самая популярная распределённая система контроля версиями.[1][2]

Основное предназначение Git – это сохранение снимков последовательно улучшающихся состояний вашего проекта (Pro git, 2019).
Читать дальше →
Всего голосов 40: ↑34 и ↓6+28
Комментарии27

Сложные отображения коллекций в iOS: проблемы и решения на примере ленты ВКонтакте

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

Привет! Меня зовут Саша, я iOS-разработчик в команде, которая делает ленту ВКонтакте. Сейчас расскажу, как мы оптимизируем отображение интерфейса и обходим связанные с этим проблемы.
Думаю, вы представляете, что такое лента VK. Это экран, где можно просматривать разнообразный контент: тексты, статичные картинки, анимированные гифки, встраиваемые элементы (видео и музыку). Всё это должно отображаться плавно, отсюда высокие требования к производительности решений.


Теперь посмотрим, какие существуют стандартные подходы к работе с отображениями и какие ограничения или преимущества следует учитывать.


Если вы больше любите слушать, чем читать, видеозапись доклада есть вот тут.


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

iOS-разработка со SnapKit: спасаем консоль от простыни ошибок и ускоряем отрисовку UI

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров10K

Привет, я Даша, занимаюсь iOS‑разработкой в Сравни. Мы в мобильной команде пользуемся SnapKit — помогает нам ревьюить изменения в общих компонентах быстрее и проще. Инструмент прекрасный, но я заметила тенденцию: стоит в работе появиться сложным вариантам вёрстки, как сразу в разы растёт вероятность, что UI может выглядеть ок, а в консоли будет отображаться множество ошибок LayoutConstraints, логи засоряются, найти действительно полезную информацию становится сложнее.

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

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

FigmaExport: как автоматизировать экспорт UI-Kit из Figma в Xcode и Android Studio проекты

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


Если вы iOS- или Android-разработчик и дизайн вашего проекта разрабатывается в Figma, то скорее всего вы сталкиваетесь с проблемами при экспорте ресурсов: цвета выгрузить нельзя, а иконки и картинки экспортировать неудобно. В этой статье я расскажу, как можно облегчить себе жизнь и автоматизировать экспорт UI-Kit из Figma напрямую в Xcode и Android Studio.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии13

Персонажи сказок Старой Руси

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


Если вы регулярно читаете наш блог, то наверняка помните пост про создание собаченьки, персонажа мобильной игры «Эволюция». Нарисовал её (и написал пост) ведущий художник проекта Роман Amokrus Папсуев. Однако, как и все талантливые люди, Роман творит не только на работе, но и в свободное время — для души. Однажды ему пришла в голову идея перерисовать всем известных персонажей русских сказок и былин в современном игровом фэнтези-стиле. В результате получилась целая серия замечательных карандашных рисунков, выполненных с большим вниманием к деталям. Роман не руководствовался персонажами какой-то конкретной игры, образы получились собирательными. Впрочем, лучше сто раз увидеть, чем один раз прочитать.

Добро пожаловать под кат, его рассказ ждет вас там (также смотрите вторую часть). Много картинок внутри!
Читать дальше →
Всего голосов 149: ↑134 и ↓15+119
Комментарии126

Визуализация статистики использования компьютера с R

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


Думаю, многим интересно (хотя бы из любопытства), как именно они используют свой компьютер: самые нажимаемые кнопки, пройденное мышью расстояние, среднее время работы и другую информацию. В этой статье я расскажу один из вариантов того, как можно собрать такую информацию и затем представить её в виде интерактивных графиков. Все описанные действия производились на ноутбуке с ОС Debian Wheezy, Python 2.7.3, R 2.15.
image
Подробнее, с картинками и ссылками
Всего голосов 45: ↑42 и ↓3+39
Комментарии13

Небольшое исследование по механике самоорганизации онлайн-сообществ

Время на прочтение4 мин
Количество просмотров6.8K
Один из важнейших принципов нашего сообщества дарителей darudar.org — это принцип самоорганизации. Идея этого принципа в том, чтобы распределить нагрузку по управлению сообществом между максимальным числом его участников, сведя таким образом издержки управления практически к нулю.

Принцип самоорганизации реализуется на практике при помощи «кнопок неодобрения» и кодекса поведения, регламентирующего использование этих кнопок. Одной из таких кнопок является кнопка «это — не дар», нажимать на которую следует каждому участнику сообщества, который видит, что опубликованный дар — это то, что не следует дарить в нашем сообществе. Если 10 разных людей нажмут на такую кнопку в каком-то даре, то он автоматически будет засчитан «недаром».

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

Для проверки нашей гипотезы мы провели числовые статистические измерения за два года жизни сообщества, с октября 2008 года по ноябрь 2010. И пришли к неожиданным для нас выводам.

Читать дальше →
Всего голосов 38: ↑31 и ↓7+24
Комментарии6

Роль связей в сообществах (Connecting the Community)

Время на прочтение4 мин
Количество просмотров3.2K
Мы живём в разных онлайн сообществах. Как выглядят эти сообщества? Каково наше место в каждом из них и какую роль мы в них играем?

Диаграмма внизу изображает реальное онлайн сообщество (on-line community, OLC). Каждый узел на диаграмме обозначает человека. А линия между двумя узлами означает, что между двумя людьми в сообществе существует определенная связь. Такая структура в социологии называется социальной сетью.

Большинство онлайн сообществ представляет из себя три социальных кольца: плотно связанное ядро в центре, слабо связанные фрагменты второго кольца, и несвязанные узлы внешнего кольца, называемые также луркерами. В сообществах можно присутствовать на разных уровнях: каждый такой уровень представлен одним из колец. Вы можете входить в ядро одного сообщества и в то же самое время быть луркером в другом.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии9

Азы социально-сетевого анализа (Social Network Analysis 101)

Время на прочтение4 мин
Количество просмотров18K
От переводчика. Автор этой публикации — Майкл Ву (Michael Wu), ведущий аналитик компании Lithium, специализирующийся в изучении социальных взаимодействий и онлайн-сообществ.


Чтобы понять, что такое «социально-сетевой анализ» (Social Network Analysis, SNA), нужно понимать, что такое «социальная сеть» и что такое «социальный граф». Говоря просто, социально-сетевой анализ — это способ изучения социальных сетей, а социальная сеть — это набор сущностей, между которыми есть определенные отношения. Социальные сети существуют с тех пор, как люди начали бродить по земле. По правде говоря, подобные структуры есть не только у людей, но и у социальных животных (например, у волков, львов, дельфинов, мышей и даже муравьев).

Безусловно, прежде всего нас интересуют такие сущности как люди, и такие отношения между ними как дружба (как на Facebook), совместная работа (как на LinkedIn), родство, общение и некоторые другие социальные взаимодействия. А в контексте SNA мы можем под социальным графом понимать просто визуализацию всего этого (я не собираюсь нагонять скуку формальным определением графа). В таком социальном графе каждая точка (или узел, или вершина) изображает человека, а ребро между двумя точками (людьми) изображает отношения между ними. А так как между людьми существует множество самых разных отношений, точно также существует множество разных социальных графов, изображающих эти отношения. Я покажу это на конкретном примере.
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии2

Построение графа социальной сети с помощью Drupal и Feeds

Время на прочтение3 мин
Количество просмотров15K
В одном крупном университете на Юге России я разрабатываю программную платформу автоматизированного построения графа социальной сети при помощи обработки интернет страниц социальных сетей. В данной статье я расскажу, как мы обрабатывали данные, собранные из Живого журнала (Livejournal.com).
Прошел почти год, я думаю, будет интересно узнать, как система применялась для автоматизированного сбора данных в период избирательной кампании в Государственную думу в 2011 году.
Читать дальше →
Всего голосов 17: ↑10 и ↓7+3
Комментарии13

Визуализация графа социальной сети: анализ событий блогосферы перед декабрём 2011 года

Время на прочтение6 мин
Количество просмотров35K
Это логическое продолжение статьи "Построение графа социальной сети с помощью Drupal и Feeds"

Я в составе группы занимался собором информации из блогосферы. Задачей было оценить напряженность, активность политических дискуссий в период избирательной кампании выборов в Государственную Думу. Забегая вперед скажу, что исследование позволило выдвинуть гипотезы, которые позже подтвердились. В частности, по результатам, о которых вы прочтете ниже можно понять, кто же будет выходить на площади и выводить за собой людей. И главное, за кем они пойдут.
Читать дальше →
Всего голосов 46: ↑38 и ↓8+30
Комментарии16

Одно предложение, которое делает нас сильнее

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

Это шаблон описания сути вашей компании или проекта в одном предложении. Я открыл его для себя во время стажировки в США. Составив его, мы реально становимся сильнее. В последствии мне это помогло выбрать правильный курс, сфокусироваться и расставить приоритеты.
Читать дальше →
Всего голосов 198: ↑168 и ↓30+138
Комментарии51

Информация

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