Search
Write a publication
Pull to refresh
1
0
Send message

Core Data для iOS. Глава №4. Теоретическая часть

Reading time19 min
Views33K
Хабралюди, добрый день!
Сегодня хочу начать написание ряда лекций с практическими заданиями по книге Михаеля Привата и Роберта Варнера «Pro Core Data for iOS», которую можете купить по этой ссылке. Каждая глава будет содержать теоретическую и практическую часть.



Содержание:

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

DIY-диммер для современных умелых рук

Reading time4 min
Views132K


Хотите собрать DIY-диммер, но нет желания/возможности возиться с самостоятельным травлением печатных плат? Пожаловав под кат вы научитесь «делать» такие же красивые платы. Готовый ZIP-архив для заказа на Китайских производствах ждет вас внутри.
Читать дальше →

Московский номер в коде 495 бесплатно

Reading time2 min
Views69K
image
Телефонный символ Москвы – код 495 перестал быть роскошью. Подключить и использовать московский номер в престижном коде теперь можно бесплатно.
Технически бесплатный номер полностью функционален и ничем не ограничен.
Возникает естественный вопрос: если не платятся деньги, то, что требуется от клиента? Требование только одно – номером нужно пользоваться.
Читать дальше →

Умный дом, как я до такого докатился. Часть 3-я

Reading time6 min
Views218K

В первой части разобрались с тем, зачем все это нужно и как я до этого докатился, во второй поговорили о софте. Настала пора остановиться на самом любимом хабравчанами разделе DIY — на железе. Итак, берем текстолит, хлорное железо, паяльник… Хотя нет, стоп, открываем редактор плат. Про паяльник, куда его засовывать, а куда лучше не надо другие лучше меня расскажут. А я расскажу какие платы и датчики трудятся на благо моего умного дома.

Поехали!

Умный дом, как я до такого докатился. Часть 2-я

Reading time5 min
Views289K

В первой части я рассказал о причинах, побудивших меня заняться построением своего “умного дома”, и об используемом “железе”.
Но “железо”, само по себе, умным быть не может, главное это “софт”. Вот об этой стороне своего проекта я и хочу рассказать в этой части. Банальное управление освещением с пульта, конечно, выглядит круто в глазах непосвященной публики, но “ума” тут никакого.
Так что же такого умного можно сделать? И, главное, как?
Читать дальше →

Умный дом, как я до такого докатился. Часть 1-я

Reading time4 min
Views467K

Пару лет назад, когда стоял вопрос отделки новой квартиры, возникла тривиальная, казалось бы, задача.
Дано:
  • Кухня-студия (кухня совмещенная с холлом/коридором), три точки освещения.
  • Необходимо управлять освещением из двух точек. У входа в квартиру и на кухне.

Варианты решения:
  • Покупаем, так называемые, проходные выключатели, ставим три штуки на кухню, три в коридоре — вот оно счастье. Вот только получилось, что от коридора на кухню нужно вести 9 жил кабеля, некрасиво, спрятать некуда.
  • Покупаем готовые решения по управлению одним источником с нескольких точек.
    Точных чисел не помню, но получалось что-то около 10000р за точку освещения + 1000р за каждый выключатель, итого 36000р. Жаба.
  • Как это ни странно, но эту идею высказала жена, в общем-то далекая от IT: “ А помнишь, ты светофор в Яндексе делал? Может тут тоже что-то сам сообразишь?”
    В самом деле, а почему бы и нет, подумал я?

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

Часть 1. Подробная инструкция по созданию своего CocoaPod

Reading time5 min
Views21K
Нельзя не упомянуть опубликованные ранее статьи по этой теме — введение в Cocoapods и краткое резюме по созданию своего «pod»'а.
Последняя указанная статья дала толчок в нужном направлении, но не хватало знаний для полного понимания поданной информации. Цель данной статьи — максимально подробно описать процесс создания и использования своего собственного CocoaPod'а, далее для краткости — «pod». Ну и упорядочить свои познания в данной области.
Читать дальше →

Использование Sandbox на Mac OS X Server для изоляции пользовательских веб-приложений

Reading time8 min
Views12K

Небольшое лирическое введение


Появился как-то у меня заказчик, который захотел странного, а именно простой в управлении хостинг, который позволил бы пользователям загружать и изолированно запускать веб-приложения на базе микрофреймворка Camping. И я ему сделал его на предложенном виртуальном сервере под управлением FreeBSD 9.0 с помощью nginx, thin server, и ezjail как средства управления jail'ами (все довольно тривиально, но если будет кому-нибудь интересно — опишу). А через неделю заказчик признался мне, что он вообще-то поклонник решений от Apple и хотел бы видеть ту же систему работающей на его основном сервере под управлением Mac OS X. И я с радостью согласился адаптировать решение, так как раньше не имел удовольствия соприкоснуться с этой системой и хотел ее хоть немного изучить. Было только одно «но» — на MacOS X Server нет jail(8). Так вот, в поисках решения для максимально безопасного запуска загружаемого пользователем приложения (я не мог и не хотел использовать chroot по ряду причин) я нашел чрезвычайно гибкий и прекрасно интегрированный в систему инструмент — Sandbox.

Построение основы для хостинга

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

Настраиваем в IIS авторизацию по клиентским сертификатам при помощи OpenSSL

Reading time5 min
Views55K

Доброго времени суток, %username%!
Ранее я рассказывал о генерации сертификатов с эллиптическими кривыми.
Сегодня я расскажу о том как можно без особых усилий настроить в IIS авторизацию по обычным RSAшным клиентским сертификатам, сгенерировать сертификаты для сервера и клиента. И поможет мне в этом как всегда OpenSSL.
Для того чтобы все работало нам понадобятся минимум 3 сертификата:
  1. Корневой сертификат (Certificate Authority или CA). Им будем подписывать все остальные.
  2. Сертификат домена (сервера). Им IIS будет проверять клиентов. И наоборот, клиенты смогут проверить подлинность сервера.
  3. Сертификат(ы) клиента(ов)

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

Core Data для iOS. Глава №2. Теоретическая часть

Reading time24 min
Views34K
Хабралюди, добрый день!
Сегодня хочу начать написание ряда лекций с практическими заданиями по книге Михаеля Привата и Роберта Варнера «Pro Core Data for iOS», которую можете купить по этой ссылке. Каждая глава будет содержать теоретическую и практическую часть.



Содержание:
  • Глава №1. Приступаем (Практическая часть)
  • Глава №2. Усваиваем Core Data
  • Глава №3. Хранение данных: SQLite и другие варианты
  • Глава №4. Создание модели данных
  • Глава №5. Работаем с объектами данных
  • Глава №6. Обработка результатирующих множеств
  • Глава №7. Настройка производительности и используемой памяти
  • Глава №8. Управление версиями и миграции
  • Глава №9. Управление таблицами с использованием NSFetchedResultsController
  • Глава №10. Использование Core Data в продвинутых приложениях


Очень-очень много букв. Осторожно.

Подборка полезного для любителей Twitter Bootstrap

Reading time1 min
Views83K
В подборке инструменты, плагины и другие полезности, облегчающие работу с Twitter Bootstrap. Предыдущая подборка.

Инструменты




Bootstraptor — подборка большого количества бесплатных и премиум тем, в том числе Starter Kit, на основе Bootstrap.
Читать дальше →

Видео для стартапа своими руками. Без опыта и бюджета

Reading time10 min
Views18K
В итоге ролик мы сняли сами, без опыта и с минимальным бюджетом. Получилось лучше, чем думали: в первые сутки 1500+ просмотров и рекордно много лайков на нашей fb странице. Позитива в комментариях добавило то, что делали всё сами. Для молодого банковского сервиса с особым походом к обслуживанию этот позитив получился как нельзя кстати.



Как основной исполнитель во всей затее по съемке видео я расскажу о процессе и наших ошибках. Сразу оговорюсь, что не являюсь профессионалом ни в видеосъемке, ни в обработке видео. Моя профессиональная деятельность связана с руководством проектами и маркетингом, из релевантного опыта — только любительское увлечение фотографией. Поэтому наш опыт будет скорее интересен стартапам и энтузиастам, которые, как и мы, без опыта захотят сделать что-то круче, чем получилось у нас.
Я не боюсь длинных текстов

Об особенностях видеосъёмки лекций

Reading time4 min
Views53K


За последний год я имел отношения к записи более 1000 лекций разного уровня сложности и хотел бы поделиться своим опытом в этой части. Это обещанное продолжение статьи Тренды в образовательной среде (памятка для вуза).

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

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

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

Итак, можно выделить следующие типы видеосъёмки лекций:
Читать дальше →

Еще об эволюции гоночных автомобилей

Reading time4 min
Views55K
image
Недавно на хабре проскочил пост, который напомнил мне о такой забавной и довольно интересной вещи, как BoxCar2D (Оригинал, Версия из поста), которую в первый раз я увидел пару лет назад, и которая меня порядком впечатлила. И уже тогда я подметил в ней один фатальный недостаток (вкратце — ее сделал не я), но в тот раз руки так и не дошли до его исправления. И вот теперь я решил это исправить.

Итак, я расчехлил Visual Studio и принялся за дело.
Первым делом я просто повторил функционал BoxCar2D, а именно: фиксированный размер популяции, которая проживает свою жизнь и порождает следующее поколение. Можно было поиграться с тем, как усложняется трасса со временем, что содержит в себе геном и как машинки скрещиваются и мутируют.
Читать дальше →

mogenerator для Core Data, о котором нужно знать

Reading time5 min
Views11K


Относительно недавно я узнал о mogenerator — замечательном приложении командной строки для генерации классов на основании объектного графа Core Data. И вот что, если вы о нем ещё не знаете, то обязательно стоит с ним познакомиться, использование этого приложения значительно упрощает изменение объектного графа Core Data. mogenerator генерирует по два класса на сущность, один для машинного использования, другой для обеспечения возможности добавления дополнительного функционала. Корректно настроив проект в XCode возможно производить эту генерацию автоматически перед сборкой.
В этой статье я опишу как можно использовать mogenerator с XCode 4 и некоторые полезные мелочи.
Читать дальше →

Избавляемся от строковых констант в Objective-C

Reading time5 min
Views14K
Магические константы в коде — зло. Строковые константы в коде — еще большее зло.
И вроде бы от них никуда не денешься, они повсюду:

1) При загрузке объектов из xib-ов:
MyView* view = [[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] lastObject];

MyViewController* controller = [MyViewController initWithNibName:@"MyViewController" bundle:nil];

2) При работе с CoreData:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"MyCoreDataClass" inManagedObjectContext:moc]];
[request setSortDescriptors:@[ [[NSSortDescriptor alloc] initWithKey:@"someProperty" ascending:NO] ]];

3) Если вы используете KVO, то строки появляются и тут:
[self addObserver:someObservedObject 
       forKeyPath:@"someProperty"
          options:(NSKeyValueObservingOptionNew |  NSKeyValueObservingOptionOld) 
          context:nil];

4) Ну и KVC:
NSInteger maxValue = [[arrayOfMyClassObjects valueForKeyPath:@"@max.someProperty"] intValue];

5) Но даже если CoreData вы предпочитаете работу с SQLite напраямую, xib-ами вы брезгуете, то вот такой код вам должен быть знаком:
[self.tableView dequeueReusableCellWithIdentifier:@"MyTableViewCell"];

6) Ну и когда Apple представила миру Storyboard — это было замечательно, если-бы не одно но:
[self performSegueWithIdentifier:@"MySegue" sender:nil]

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:( id )sender {
   if ( [segue.identifier isEqual:@"MySegue"] );
}

Вы видите проблему? Она состоит в том, что компилятор никак не проверяет содержимое строк, поскольку не знает (да и не может в принципе знать), что в них содержится. И если вы опечатаетесь или измените значение соответствующих полей в xcdatamodel / xib / storyboard / переименуете property, то ошибка вылезет не на стадии компиляции, а в рантайме, и отловить и исправить ее будет дольше и дороже.
Так что-же можно сделать?
Читать дальше →

Инди-игра для Android в цифрах

Reading time4 min
Views32K

Всем привет,

Сегодня, я хочу рассказать о запуске своего последнего проекта — «Shooting club 3», поделиться множеством самой разнообразной статистки о доходах, бюджетах, загрузках, в общем все то, что мне самому было бы интересно послушать о других играх. Конечно, мне хотелось чтобы этот топик был «success story», но, будем откровенны, пока это не так. Возможно, это из-за того, что игра еще совсем новая и со временем она «разгонится». По крайней мере, мы на это надеемся!
Читать дальше →

Создаём сетевую звуковую карту с преферансом и поэтессами

Reading time6 min
Views114K
Вдохновленный топиками раз и два, решил соорудить нечто похожее.

В наличии:
— Один усилитель с колонками
— Один стационарный компьютер
— Один ноутбук
— Желание слушать интернет радио независимо от двух предыдущих пунктов и перетыканию проводов

В результате родился план собрать «audio card over ethernet». Исследовав вопрос совместимости оборудования, я выбрал роутер TP-link MR3020 и USB аудио-карточку Creative SB Play.

Что из этого получилось:


О том, как это получить, добро пожаловать под кат.
Читать дальше →

Сетевое кеширование в iOS. NSURLCache

Reading time5 min
Views21K
Данная тема важна при разработке любого приложения, взаимодействующего с сетью. Здесь грамотное использование возможностей системы может значительно улучшить взаимодействие пользователя с программой.

NSURLCache — это комплексное решение для кеширования сетевых запросов в оперативной памяти или на диске. В соответствии с документацией Apple, любой запрос с использованием NSURLConnection будет «пропущен» через NSURLCache.

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

Information

Rating
Does not participate
Registered
Activity