Как стать автором
Обновить
9
Карма
0
Рейтинг
Никитин Алексей @HighFlyer

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

  • Подписчики 1
  • Подписки 1
  • Публикации
  • Комментарии

Swift 4 — слабые ссылки

Разработка под iOS *Objective C *Swift *
Перевод
Вскоре после публикации исходного кода Swift, я написал статью о том как реализованы слабые ссылки. Время не стоит на месте и всё меняется, реализация слабых ссылок в Swift тоже. Сегодня я расскажу о новой реализации и сравню ее со старой. Спасибо Guillaume Lessard за идею для поста.

Старая реализация


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

В старой версии Swift объекты имели 2 счетчика ссылок: счетчик для сильных ссылок и счетчик для слабых. Когда счетчик сильных ссылок становится равен нулю, а слабых еще нет — объект уничтожается, но память не освобождается. Поэтому в памяти остается так называемый “зомби объект” на который ссылается слабая ссылка.

Когда слабая ссылка загружается, среда времени выполнения (runtime) проверяет является ли объект “зомби”. Если он “зомби” то runtime обнуляет слабую ссылку и уменьшает счетчик слабых ссылок на 1. Когда счетчик слабых ссылок достигает 0 — память освобождается (deallocated). Это означает, что полностью объект удаляется только тогда, когда все слабые ссылки на него обнуляются.

Мне нравилась простота этой реализации, но были у нее и недостатки:
Читать дальше →
Всего голосов 13: ↑10 и ↓3 +7
Просмотры 11K
Комментарии 3

Универсальные ссылки: дворец из подводных камней

Блог компании JUG Ru Group Разработка под iOS *Разработка мобильных приложений *
При том, как много мобильные приложения дали человечеству, они в то же время «сломали» интернет. Вместо понятных ссылок на сайты, которые можно скопировать и поделиться, стало нужно объяснять «поставь такое-то приложение и зайди там туда-то».

К счастью, разработчики мобильных платформ осознали эту проблему и предложили концепцию «универсальных ссылок», которые одним кликом открывают нужное на любой платформе. Но то, что для пользователя «одним кликом», для программиста — «потом и кровью». На пути к успеху стоит целый ворох неожиданных нюансов, и Константин Якушев познакомился с ними на личном опыте при внедрении универсальных ссылок в Badoo. А затем на нашей конференции Mobius рассказал, как сделать всё правильно и обойти проблемы. Зрителям доклад понравился, и мы решили, что негоже полезному материалу оставаться только видеозаписью, поэтому под катом — его текстовая версия.

В докладе ситуация рассмотрена со стороны iOS, но универсальные ссылки на то и универсальные, чтобы объединять разные платформы, так что извлечь пользу могут не только iOS-разработчики.

Читать дальше →
Всего голосов 39: ↑38 и ↓1 +37
Просмотры 17K
Комментарии 11

Вред маленьких функций

Блог компании NIX Программирование *
Перевод

Перевод статьи Синди Шридхаран.

В этой статье автор собирается:

  • Пролить свет на некоторые предполагаемые преимущества маленьких функций.
  • Объяснить, почему некоторые из преимуществ вовсе не такие радужные, как рекламируется.
  • Объяснить, почему маленькие функции иногда контрпродуктивны.
  • Объяснить, в каких случаях маленькие функции действительно полезны.
Читать дальше →
Всего голосов 60: ↑47 и ↓13 +34
Просмотры 37K
Комментарии 195

Динамический анализ iOS-приложений без Jailbreak

Блог компании Digital Security Информационная безопасность *Разработка под iOS *Тестирование мобильных приложений *
В рамках данной статьи мы хотим поделиться своим опытом решения некоторых проблем, связанных с анализом безопасности iOS-приложений. Рассмотрение будет осуществляться при условии, что у нас нет iOS-устройства с JailBreak на борту.


Всего голосов 27: ↑27 и ↓0 +27
Просмотры 11K
Комментарии 3

Android Tips and Tricks

Разработка под Android *
В данном материале можно будет увидеть различные инструменты и подсказки, которые здорово облегчают жизнь Android разработчикам. Большая часть собрана напрямую от знакомых разработчиков и содержит вещи, которые должен знать каждый. Дополнения и расширения приветствуются, и если вы знаете о каком-то крутом механизме, который не был упомянут в статье, не поленитесь перейти в оригинал и открыть pull request.
Читать дальше →
Всего голосов 49: ↑49 и ↓0 +49
Просмотры 45K
Комментарии 18

Загрузка видео «без единого разрыва»

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

В чем проблема? — спросите вы. Ставишь серваки с большими дисками, настраиваешь балансировщик — и понеслась. Однако опытный видео-ниндзя знает, что проблем тут целый ворох:
  • В процессе загрузки у пользователя может пропадать соединение с нашим порталом (закрыл ноут, вошел в планшетом в лифт, сел аккумулятор на телефоне и т.п.)
  • Старые устройства не поддерживают современные технологии загрузки (а у нас миллионы пользователей имеют слабые смартфоны или древние браузеры)
  • При том количестве пользователей, которые есть у нас, задача о стабильной заливке видео превращается в задачу о стабильной загрузке видео в огромных объемах.


Да, это



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

Видеосервис Одноклассников в деталях
Всего голосов 48: ↑37 и ↓11 +26
Просмотры 32K
Комментарии 12

Овладение Coordinator Layout

Разработка мобильных приложений *Разработка под Android *
Перевод
На презентации Google I/O 15, компания Google представила новую версию библиотеки поддержки которая реализует несколько компонентов, сильно связанных со спецификациями Material Design, среди этих компонентов вы можете найти новые типы ViewGroup такие как AppbarLayout, CollapsingToolbarLayout и CoordinatorLayout.

При правильном комбинировании и настройке данные Viewgroup могут быть очень мощным инструментом, по этому я решил написать статью с некоторыми настройками и советами.
Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 177K
Комментарии 0

Леденец из мороженого, или как привнести в ваше приложение немного Material

Usability *Дизайн мобильных приложений *
Из песочницы
Пятая версия Android была выпущена почти полгода назад. Несмотря на это, большинство приложений в маркете до сих пор упорствуют в стиле Holo. То ли новый Material-стиль пока не по зубам среднему разработчику, то ли Android L еще не успел прочно войти в обыденность.

Как бы там ни было, новая парадигма дизайна активно пропагандируется «корпорацией добра», да и выглядит достаточно неплохо, несмотря на некоторую непоследовательность. И все больше появляется добрых волшебников, помогающих нам, простым разработчикам, оставаться «в струе» изменчивого мира мобильного UI.

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

Осторожно, мало картинок!
Всего голосов 26: ↑23 и ↓3 +20
Просмотры 20K
Комментарии 19

Защита от тёмных искусств, Эпизод I

Блог компании JUG Ru Group Разработка под iOS *Разработка под Android *
Привет, Хабр!

Четыре из 13 докладов в программе конференции Mobius, так или иначе, связаны с проблемами безопасности мобильных приложений.

Тема горячая и поэтому мы решили еще более усилить эту тему на конференции!
Мы вынесли некоторые вопросы безопасности, не затрагиваемые в докладах, на обсуждение на круглый стол по защите мобильных приложений



Читать дальше →
Всего голосов 21: ↑13 и ↓8 +5
Просмотры 7.9K
Комментарии 7

Разработка ПО: факты против мифов

Программирование *
Мифы – это попытки осмысления картины окружающего мира, присущие первобытной культуре.

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

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

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

Вот наиболее распространенные мифы и факты, которые их опровергают.
Читать дальше →
Всего голосов 150: ↑135 и ↓15 +120
Просмотры 68K
Комментарии 124

Подготовка к экзамену Oracle Java SE 7 Programmer II (1Z0-804)

Java *
Из песочницы

Приветствую уважаемых хабражителей и Java-программистов!
Cтатья посвящена подготовке к сдаче экзамена Oracle Java SE7 Professional с кодовым номером 1Z0-804. Про это на Хабре уже было написано множество постов (например здесь, здесь, тут, здесь, здесь, тут, тут, и вот тут), поэтому постараюсь не повторяться и дополнить заметками о том что наиболее часто встречалось, важными нюансами, которые на мой взгляд были пропущены или недостаточно хорошо освещены в указанных статьях, и вообще в общедоступной литературе (сразу отмечу, что материал не претендует на полноту, здесь я лишь старался обозначить каверзные вопросы с экзамена и лаконично изложить некоторые сложные вещи). Так же поделюсь своими соображениями насчет того, по каким материалам лучше готовиться. С первого раза экзамен сдать не получилось, поэтому начал сохранять для себя различные заметки, где записывал всё что мне казалось сложным или трудно-запоминаемым. Которыми теперь и решил с вами поделится. Заранее прошу проявить понимание, если вы вдруг заметите ошибку, недочёт или очепятку — пишите в комментарии.

Читать дальше →
Всего голосов 24: ↑21 и ↓3 +18
Просмотры 78K
Комментарии 23

Ресурсы, о которых должен знать каждый Android-разработчик

Разработка под Android *
Перевод
Сегодня я хочу поделиться с вами моим вольным переводом статьи, написанной Сергеем Повзнером (Sergey Povzner). Сергей ведёт блог bongizmo.com и занимается разработкой туристических гидов под общим названием Citybot.

В то время как Android продолжает свой невероятный рост, всё больше и больше программистов начинают разрабатывать приложения на этой платформе. Если ты начинаешь свой путь сегодня, то ты определенно — счастливчик. За последние годы Android значительно повзрослел и избавился от множества детских болезней. Информации по платформе более чем достаточно. Я же расскажу о самых важных ресурсах.

Статья будет полезна как новичкам, так и опытным разработчикам. Это гид по миру Android-разработки.
Читать дальше →
Всего голосов 133: ↑128 и ↓5 +123
Просмотры 187K
Комментарии 36

Хитрости разработчика под iOS. Splash Screen

Разработка под iOS *
Из песочницы
Tutorial

Вступление


Приветствую, хабравчане!

В ходе разработки приложений под iOS у меня накопились некоторые хитрости, которыми я хотел бы поделиться с Вами.

Сразу предупрежу, что я стараюсь шагать в ногу со временем, поэтому примеры будут под iOS >=5.0 и использовать Storyboard и ARC, но ничего не мешает их портировать на 4.*.

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

Заинтересовавшимся — прошу под кат (Пост содержит скриншоты областей Interface Builder-а, поэтому предупреждаю о траффике).

Читать дальше →
Всего голосов 33: ↑27 и ↓6 +21
Просмотры 41K
Комментарии 13

Полезные штуки для iOS-разработчика #2

Разработка под iOS *
Некоторое время назад я прочитал интересный пост, посвященный полезным фрэймворкам и библиотекам для разработки под iOS. С вашего позволения и согласия Coder89 представляю «Полезные штуки для iOS-разработчика часть вторая».
Читать дальше →
Всего голосов 63: ↑57 и ↓6 +51
Просмотры 37K
Комментарии 19

Книги, которые должен прочитать Java программист: от новичка до профессионала

Программирование *Java *
Перевод

Книги, которые должен прочитать Java программист: от новичка до профессионала


[Примечание переводчика: термины градации «профессионализма» оставлены англоязычные в связи с трудностью их адекватного перевода на русский и несовпадением с привычными Junior-Middle-Senior-Lead. Перевод достаточно вольный — если знаний языка хватает, то лучше читать оригинал, как и советует автор. Оба языка для меня не родные, так что про ошибки сообщайте в личку — исправим. Здесь и далее в квадратных скобках примечания переводчика]

Я заметил, что в последние месяцы я рекомендую одни и те же книги как новичкам, так и опытным разработчикам. Поэтому я решил составить список этих книг. Они составили мне неплохую компанию в процессе моего роста от новичка до сегодняшнего уровня (какой-бы он не был :) )
Читать дальше →
Всего голосов 90: ↑77 и ↓13 +64
Просмотры 642K
Комментарии 76

Оптимизация запросов в SQLite. Используем rowid

SQL *SQLite *
Во время недавней оптимизации запросов в базу данных наткнулся на описание работы SQLite с rowid. Если вкратце: в каждой таблице есть int64 столбец rowid, значение которого является уникальным для каждой записи в таблице. Посмотреть значение можно по имени «rowid» и в запросе * оно не показывается.

Записи хранятся как B-дерево по rowid. И это делает очень быстрым поиск и выборку по rowid. В два раза быстрее чем по primary key или по индексированному полю. Как я понял, поиск по индексированному столбцу — это поиск по B-дереву, в результате которого мы находим rowid. И уже имея rowid — ищем нужную запись.

Напрашивается очевидный вопрос: как сделать чтобы rowid и наш PRIMARY KEY совпадали?
Читать дальше →
Всего голосов 28: ↑25 и ↓3 +22
Просмотры 25K
Комментарии 6

Как распространять iOS приложения минуя AppStore

Разработка под iOS *
Из песочницы
При создании мобильного приложения под iPad для одной крупной компании перед нами встал вопрос — как распространять данное приложение. Самый распространённый вариант — конечно, через AppStore.

Но данный вариант нам не подошел, так как приложение создавалось для работников компании, а не для общего пользования. Остался только второй вариант — Enterprise Program (подробнее о Developer Program и Enterprise Program).

Клиент купил лицензию, мы занимались разработкой, и вот настало время выкладывать приложение. До этого мы выкладывали приложения в AppStore, а вот опыта работы с in-house приложениями (они предполагают внутреннее использование в компании и не предназначены для выкладывания в общий доступ) не было. К нашему удивлению, мы не нашли полноценных статей, описывающих данный процесс, поэтому решили составить некую инструкцию, которая поможет сэкономить кому-то время.

Читать дальше →
Всего голосов 82: ↑74 и ↓8 +66
Просмотры 114K
Комментарии 21

Улучшаем производительность труда. Макросы и литералы objective-c

Разработка под iOS *Objective C *

Всем привет!
Не секрет, что мы, программисты, минимум половину времени тратим на написание кода. Логично было бы это время как можно лучше сократить.
Однажды, когда я в очередной раз написал конструкцию NSString *, я подумал, что пора что-то менять.
Как же можно упростить себе жизнь, разрабатывая под iOS?
Статья является расширением другой статьи

Продолжить просмотр извращений Objective-c
Всего голосов 20: ↑14 и ↓6 +8
Просмотры 18K
Комментарии 30

Типичные случаи утечки памяти в Java

Java *
Из песочницы
Большинству разработчиков известно, что сборщик мусора в Java не является универсальным механизмом, позволяющим программисту полностью забыть о правилах использования памяти и о том, в каких случаях осуществляется его работа. Ниже описаны типичные случаи утечки памяти в java-приложениях, встречающиеся повсеместно.
Итак, о чём должен помнить каждый java-программист.
Читать дальше →
Всего голосов 113: ↑104 и ↓9 +95
Просмотры 68K
Комментарии 80

Информация

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