Pull to refresh
-7
0

iOS Application Developer

Send message

Эффективная работа с SQLite на примере ICQ

Reading time9 min
Views29K
Как и во многих других приложениях, нам в мобильном ICQ приходится хранить достаточно много информации: сообщения, контакты и тому подобное. Когда количество запросов к этим данным достигает какого-то критического значения, приложение начинает тормозить. Долгий запуск, медленное открытие чата, медленная отправка сообщений, постоянные спиннеры — все это жутко напрягает. Чаще всего причиной тормозов является неудачная работа с данными. В статье я хочу поделиться нашим опытом рефакторинга структуры данных, оптимизации запросов и некоторыми удобными приемами для миграции.

Несколько слов об исходной задаче. Основная сущность у нас — профиль ICQ, у которого есть список контактов, а у тех есть сообщения. Наше приложение существует уже много лет, разрабатывалось разными людьми с разными подходами, номер версии основной БД уверенно приближался к 30. Кроме того, количество фич в продукте невозможно предсказать заранее, это тоже повлияло на архитектуру. В общем, модель данных изначально была примерно такой:

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

Как устроен цвет

Reading time1 min
Views58K
Почему формальное определение цвета то ли есть, то ли нет, и связано ли это с тем, что его дал тот самый Шрёдингер? Что имел в виду Вейнберг, когда назвал свою революционную статью «Геометрия цветов»? Почему у цветового треугольника два угла, хотя интуитивно кажется, что должен быть один? Почему обычный детский рисунок показывает, что у автора всё в порядке с цветовосприятием, и зачем художник-академист всю жизнь учится его отключать? Почему в цветовом пространстве находятся кластеры, но они не находятся? Почему любая женщина знает о явлении метамерии окрасок, а ученые всё время забывают? Сколько должно быть цветовых каналов у хорошего фотоаппарата? А у монитора? А почему ответ разный? А красок у принтера?

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



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

Разработка через тестирование в iOS

Reading time11 min
Views26K

Содержание:


  • Разработка через тестирование – что это?
  • Три закона TDD
  • Примеры применения
  • Преимущества и недостатки
  • Литература и ссылки


Разработка через тестирование – что это?


Разработка через тестирование (Test-driven development) — техника разработки программного обеспечения, которая определяет разработку через написание тестов. В сущности вам нужно выполнять три простых повторяющихся шага:
— Написать тест для новой функциональности, которую необходимо добавить;
— Написать код, который пройдет тест;
— Провести рефакторинг нового и старого кода.

Мартин Фаулер



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

Брелок Гейгера — разведчик радиации

Reading time17 min
Views30K
— А правда, что тонер радиоактивный?
— Нет, там есть свинец, а он защищает от радиации.
Из услышанного разговора.

Он черен и таинственен как самолет-разведчик SR-71 «Blackbird».
Он не имеет опознавательных знаков на борту.
Он обладает отличными ТТХ.
Он умеет практически всё.
Он не спит и мало ест.
Он всегда с тобой.
Он наш!

Этот маленький треугольник, похожий на инопланетное существо, является уникальным прибором по совокупности своих характеристик и необходим каждому человеку.
Миниатюрное носимое устройство непрерывного радиационного контроля, автономный персональный дозиметр, самописец, с продолжительностью работы более 500 суток.



В статье: демонстрация работы в условиях нормального и повышенного уровней радиоактивного фона, взаимодействие с компьютером, описание программ, архивные графики, вскрытие изделия и многое другое.
Но самое главное, это задание читателям ТМ = Х + GT + MM о выведении данных всех брелков на экраны своих мониторов, что позволит уменьшить количество горячих пятен на планете, определить одну из возможных причин болезней, продлить или спасти жизнь многим людям.
Поможет в этом открытый протокол обмена с устройством, что упростит подключение интеллектуального датчика к компьютеру и другим устройствам.
Можно жить и без него, но без него можно и не прожить... долго

Как я учил английский и программирование одновременно

Reading time5 min
Views83K
Шесть лет назад мне было 43 года, и я не умел программировать вообще. Ну, может немного на Бэйсике, который преподавали в институте, как вы понимаете, очень давно.

В книжном магазине попалась мне на глаза книга «Программирование для iPhone/iPad» и, будучи человеком любознательным, я решил попробовать. Купил книгу, MacBook Air (iPad у меня тогда уже был), установил XCode и начал с примеров из книги. Когда я получил общее представление о том, как что работает, мне захотелось сделать что-то полезное. Так как для программиста очень полезным, или скорее даже необходимым, является знание английского языка, я решил создать такое приложение.
Читать дальше →

Будущее влияет на прошлое? Учёные подтвердили мысленный квантовый эксперимент Уилера на примере отдельных атомов

Reading time5 min
Views124K
image
Профессор Эндрю Траскот и студент Роман Хакимов отважно заглядывают в квантовый мир

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

Этот принцип — один из фундаментальных законов, который мало кто оспаривает. Хотя многие физические величины и явления не меняются, если мы обратим время вспять (являются Т-чётными), существует фундаментальный эмпирически установленный принцип: событие А может влиять на событие Б, только если событие Б произошло позже. С точки зрения классической физики — просто позже, с точки зрения СТО — позже в любой системе отсчёта, т.е., находится в световом конусе с вершиной в А.

Пока что только фантасты сражаются с «парадоксом убитого дедушки» (вспоминается рассказ, в котором оказалось, что дедушка вообще был ни при чём, а надо было заниматься бабушкой). В физике путешествие в прошлое обычно связано с путешествием быстрее скорости света, а с этим пока было всё спокойно.

Кроме одного момента — квантовой физики. Там вообще много странного. Вот, например, классический эксперимент с двумя щелями. Если мы поместим препятствие со щелью на пути источника частиц (например, фотонов), а за ним поставим экран, то на экране мы увидим полоску. Логично. Но если мы сделаем в препятствии две щели, то на экране мы увидим не две полоски, а картину интерференции. Частицы, проходя сквозь щели, начинают вести себя, как волны, и интерферируют друг с другом.
Читать дальше →

App Store style кастомизируемая кнопка загрузки

Reading time1 min
Views8.6K
github.com/PavelKatunin/DownloadButton

Недавно появилась потребность сделать кнопку загрузки для видео, сам этап загрузки был очень похож на стандартную кнопку загрузки приложений в Appstore, но только линия, отображающая уже загруженные данные, должна была быть снаружи. Я подумал, что такой контрол может быть удобен для отображения загрузки разных вещей и что он может пригодиться где-то еще — и вынес его в отдельный фреймворк и оформил в виде cocoapods. Опубликован под Apache 2.0.

Очень приветствуется использование, редактирование кода, заведение issue на github, предложения по новым фичам и отправка пул реквестов.
Читать дальше →

Must-know для iOS-разработчиков

Reading time3 min
Views16K
10 недель назад мы запустили проект для iOS-разработчиков под названием Digest MBLTdev. После первого выпуска количество подписчиков превысило 1 000 человек. Как это работает? Наши топовые разработчики Руслан Гуменный и Саша Черный изучают материалы в сети, тщательно отбирают ссылки, которые не должны остаться без внимания, и формируют из них пятничный выпуск. Далее выпуск отправляется всем подписчикам на указанный имейл или по Safari Push Notifications.

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


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

Тест для проверки цветового разрешения монитора или телевизора при подключении к компьютеру по цифровому видеоинтерфейсу

Reading time7 min
Views167K
«Кто нам мешает, тот нам поможет»
к/ф «Кавказская пленница»


Телевизор в качестве монитора?


В последние годы все более популярным становится использование телевизора в качестве домашнего компьютерного монитора.
И действительно — если еще несколько лет назад типичным для компьютерных мониторов Full HD разрешением (1920x1080) могли похвастаться лишь телевизоры с диагональю 40" и более, слишком большие для настольного монитора, то сейчас нетрудно найти телевизор с Full HD разрешением и с вполне «мониторной» диагональю 32" и меньше. Соответственно и размер пикселя при этом получается близким к «типовому» для настольных мониторов 0,28 мм ± 10% (ну, может быть чуть больше). А если кому-то такой пиксель покажется великоват, то с появлением доступных по цене бытовых телевизоров с разрешением 4k Ultra HD (3840x2160) размер пикселя вполне может конкурировать и с Retina.
К тому же широко распространенные в бытовых телевизорах IPS матрицы по компьютерным меркам считаются весьма «продвинутыми», и ими обычно оснащаются весьма дорогие «профессиональные» мониторы.
Казалось бы вот оно, идеальное решение для экономного домашнего пользователя — купить на грош пятаков небольшой (по телевизионным меркам) относительно недорогой 26"-37" бытовой телевизор с Full HD или Ultra HD разрешением, и в результате получить «компьютерный монитор» с большим (по компьютерным меркам) «профессиональным» IPS дисплеем, который к тому же без дополнительных вложений может быть использован и по прямому «телевизионному» назначению (что для дома тоже немаловажно!).
Однако иной раз результатом такого приобретения становится полное разочарование: компьютерная картинка на экране телевизора оказывается намного хуже, чем на простеньком старом мониторе, вместо которого этот телевизор собственно и приобретался.
Причин этого может быть множество, начиная от несоответствия разрешения соединяющего компьютер с телевизором видеоинтерфейса разрешению телевизионной матрицы, способности телевизора выводить картинку «пиксель-в-пиксель», настроек видеокарты (в частности, Overscan), настроек самого телевизора (например, резкости), проблем с кабелем, и так далее.
В данной статье мы рассмотрим только одну из возможных причин, а именно способность видеоинтерфейса, которым подключен телевизор или монитор к компьютеру, передать полное цветовое разрешение 4:4:4.

Для начала собственно тест:



Если на экране Вам отчетливо видна появляющаяся надпись 4:4:4, и лишь слегка угадывается 4:2:2, то значит видеоинтерфейс компьютер-монитор передает полное цветовое разрешение, и на этом собственно можно закончить тест и чтение статьи.
Тем же, кому интересно, как действует этот тест, а также тем, кто видит 4:2:2 и не видит 4:4:4 (или видит примерно одинаково и 4:4:4, и 4:2:2), и при этом хочет попробовать исправить ситуацию добро пожаловать под кат
Читать дальше →

Интервальные повторения «в кармане»

Reading time5 min
Views38K

Статья о программе (iOS) для запоминания английских слов методом интервальных повторений, которая учитывает ваш распорядок дня.

На хабрахабре уже несколько раз освещался вопрос о методе интервальных повторений для запоминания информации: habrahabr.ru/post/246459, habrahabr.ru/post/196448, habrahabr.ru/post/240451. Если вкратце, то интервальные повторения — это подход к запоминанию информации, заключающийся в повторении изучаемого материала через определенные, постоянно возрастающие интервалы времени (например, через 5 минут, потом через 25 минут, потом через 2 часа и т.д.).
Читать дальше →

Читаем электронные книги на английском без словарей и переводчиков

Reading time3 min
Views98K
1. Интро. Личное



Я готовлюсь к языковому экзамену IELTS (International English Language Testing System) — пожалуй, самому популярному
тесту на знание английского. Если хочется эмигрировать, найти работу в международной компании — диплом IELTS очень пригодится. Шкала оценок — от 0 (от испытуемого не удалось получить даже внятного мычания) до 9 (экcперт — испытуемый чертовски хорош и может устроиться даже редактором лондонской газеты).

Для учебы, например, в США, нужно не менее 6.5 баллов (бывает и 6, но не часто), для работы — 7 и выше. А для эмиграции, допустим, в Канаду — чем выше оценка, тем лучше. Мой прогнозируемый балл перед сдачей теста — 5.5. Значит, что я могу читать газеты, смотреть кино, вести беседы в знакомых ситуациях, писать ответы на письма. Но для работы в центральном офисе Гугла явно недостаточно.

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

Objective-C Runtime для Си-шников. Часть 1

Reading time6 min
Views31K


При первом знакомстве с Objective C он произвёл на меня впечатление уродливого и нелогичного языка. На тот момент я уже имел достаточно сильную базу в C/C++ и ассемблере x86, а так же был знаком с другими высокоуровневыми языками. В документации писалось, что Objective C это расширение языка C. Но, как бы я ни старался, мне всё же не удавалось применить свой опыт в разработке приложений для iOS.

Сегодня он всё так же кажется мне уродливым. Но однажды окунувшись в глубины Objective-C Runtime я влюбился в него. Изучение Objective-C Runtime позволило мне найти те тонкие ниточки, которые связывают Objective C с его «отцом» — великолепным и непревзойдённым языком C. Это тот самый случай, когда любовь превращает недостатки в достоинства.

Если вам интересно взглянуть на Objective C не просто как на набор операторов и базовых фреймворков, а понять его низкоуровневое устройство, прошу под кат.
Читать дальше →

Математическая задача о 100 коробках и спасении заключенных

Reading time7 min
Views148K
Предлагаю читателям «Хабрахабра» перевод публикации «100 Prisoners Escape Puzzle», которую я нашел на сайте компании DataGenetics. Все ошибки по данной статье присылайте, пожалуйста, в личные сообщения.

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


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

Подведены итоги Олимпиады по программированию среди школьников

Reading time5 min
Views16K
С 16 по 22 января в Московском университете стали и сплавов прошла III Международная олимпиада по программированию среди школьников. Мероприятие было организовано НИТУ «МИСиС» и Cognitive Technologies. Признаться, понадобилось практически три недели, чтобы уговорить организаторов открыть хотя бы пару условий предложенных на мероприятии задач и получить разрешение опубликовать их разбор.

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

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


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

Интервальное повторение на LinguaLeo

Reading time3 min
Views42K
image

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

Хорошая новость: для того, чтобы поддерживать словарный запас уровня Upper-intermediate (4000 слов) на протяжении 73 лет, достаточно уделить повторению всего лишь 29 часов. Если разделить это время на количество дней за 73 года, то получится 3 секунды в день. Цифры могут показаться нереалистичными, но в модели интервального повторения такое возможно.

В этой статье мы расскажем:
  1. О методе интервального повторения, который позволяет помнить слова при сокращении общего количества повторений до минимума;
  2. О специальной тренировке для интервального повторения, с которой можно повторить до 100 слов за три минуты.

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

Изучение иностранного языка: коллекция заблуждений

Reading time10 min
Views57K
Как выучить иностранный язык? Почти все сталкивались с изучением иностранного языка в своей жизни: в школе, в вузе, кто-то ходил на курсы, занимался с репетитором или пытался изучать самостоятельно. Пытались все, но получилось далеко не у всех. Почему?

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

Давайте рассмотрим наиболее заметные заблуждения и разберёмся, почему они ошибочны и как они мешают нам учить язык.
Читать дальше →

Введение в Size Classes в Xcode 6

Reading time6 min
Views62K
Привет всем! Сегодня хотелось бы сделать небольшое введение в такую штуку, как Size Classes. Она появилась недавно вместе с Xcode 6, документации по ней от самой Apple совсем немного.

Итак, для чего же предназначена Size Classes? Все мы знаем, что на подходе уже iPhone 6 двумя (как минимум) разными размерами дисплея (4,7 и 5,5), после чего разработчикам еще больше придется заморачиваться с версткой UI для них + само собой расширения iPad«ов. В итоге количество всех поддерживаемых экранов будет около 7 (маленький привет Android). Герой сегодняшнего дня — Size Classes — как раз и предназначен для того, что бы помочь решить данную проблему.
Читать дальше →

Тренды iOS–разработки 2014 года

Reading time3 min
Views27K

Подходит к концу 2014 год, и сейчас самое время подвести итоги и выделить ключевые тренды в iOS разработке.

Functional Reactive Programming


Благодаря фреймворку ReactiveCocoa, новая парадигма программирования все чаще используется среди iOS разработчиков.

Отказоустойчивость, отзывчивость, ориентированность на события и масштабируемость — вот четыре принципа реактивного программирования. Подробности можете узнать в реактивном манифесте (перевод на Хабре).

Для себя я выделил следующие преимущества реактивного подхода:
  • loose coupling — потоки события позволяют уменьшить связанность между различными частями кода;
  • explicit state — состояние программы определяется набором событий, и поэтому им становится легко управлять.

В качестве альтернативы реактивному подходу рекомендую посмотреть на Futures. Есть как минимум два интересных фреймворка: PromiseKit и CollapsingFutures
Читать дальше →

Правила типографики — как составить красивое резюме

Reading time3 min
Views38K


Перевод статьи из книги Practical Typography, автор которой — дизайнер из Лос Анджелеса Matthew Butterick. Оригинал статьи на practicaltypography.com.

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

«Вы серьезно?» — спросил я.
Читать дальше →

Облака — ещё дешевле

Reading time5 min
Views116K
Наверняка вы слышали о сервисах Amazon EC2, Rackspace и им подобным. Может быть даже пользовались. Лично мне бывает нужен иногда личный VPN-сервер. Для этих целей я уже давно держал микро-инстанс на Амазоне, предоставляемый им в течении первого года бесплатно. Плюс использовал для архивов Amazon Glacier, который с его ценой «1 цент за гигабайт в месяц» можно считать тоже почти бесплатным. Но вот год закончился и за EC2 стало нужно платить. Архивы мои тоже разрослись прилично и затраты на Glacier аналогично перестали радовать.

Случайно пробежавший мимо обзор сервиса DigitalOcean по-началу оставил меня равнодушным. Ну, облачный сервис, ну виртуалки. Ну да, чуть-чуть дешевле (но не так чтобы уж очень), чего-то аналогичного Glacier вроде бы нет да и вообще оно того не стоит.

Я сильно ошибался. Ниже будет рассказано как на базе DigitalOcean сделать себе VPN-сервер в пару десятков раз дешевле такого же на Амазоне и сервис хранения архивов, в бесконечность раз дешевле Glacier.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity