От переводчика: В свете последних событий быть разработчиком на Objective-С стало уже не так модно, некоторые уже бегут сдавать его в утиль, но я считаю, что это делать еще рановато, потому позволю себе поделиться переводом. Начав читать оригинал, не ждал ничего нового в, казалось бы, простой и очевидной теме, но в итоге вынес достаточно полезных моментов.
User
Swift + CoreData + Немного напильника
13 min
29K
Зачесались у меня тут руки узнать, что это за зверь такой Swift и с чем его собственно едят. Как и ожидалось проблем и подводных камней пока оказалось много, ну либо я совсем не умею этот Swift готовить. Самая большая проблема ожидала меня при попытке подружить этот самый Swift с CoreData — штука принципиально отказывалась работать. Обильное гугление не приводило к хоть каким-либо хорошим результатам — информация была либо крайне обрывочной, либо попахивала костылями. Посему в первый вечер терзаний я капитулировал и решил использовать самое тупое решение в работе с CoreData по-старинке — хранить весь код в старом добром Objective-C и уже к нему обращаться из Swift (например в интерфейсах). Однако, перфекционизм в душе не давал покоя и требовалось реализовать чистое одноязычное решение, что я собственно и смог сделать, хотя признаться и не без костылей тоже. Кому интересен процесс прошу под кат. Также попутно предлагаю собирать баги и не самые на мой взгляд удобные вещи, которые пришли вместе с новым языком. Возможно, что-то я сделал криво — буду благодарен комментариям и поправкам, а также обсуждению лучших практик.
+22
Распознавание текста в ABBYY FineReader (1/2)
7 min
57KСодержание
Систему распознавания текста в FineReader можно описать очень просто.
У нас есть страница с текстом, мы разбираем ее на текстовые блоки, затем блоки разбираем на отдельные строчки, строчки на слова, слова на буквы, буквы распознаем, дальше по цепочке собираем все обратно в текст страницы.

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

В этой статье мы начнём рассказ про распознавание текста от уровня строки и ниже.
+105
Принтер для футболок: от домашней поделки до серийной модели текстильного принтера
6 min
261KЛетом 2011 года я опубликовал на хабре пару статей (вот и вот) о том, как из подручных материалов практически «на коленке» собрать текстильный принтер. Как оказалось — тема эта весьма интересная многим людям, и с момента публикации этих статей любителями поиздеваться над принтерами было собрано много самодельных аппаратов, которые успешно печатают и даже приносят прибыль.
А в этой серии статей я хочу поделиться с вами тем, как небольшое хобби самоделкина за эти несколько лет постепенно и незаметно превратилось в небольшое, но довольно серьезное производство принтеров для прямой печати на тканях, футболках и прочих материалах. Постараюсь рассказать с какими нюансами и трудностями столкнулся на этом пути, подскажу как лучше переделывать современные принтеры и каких ошибок лучше избегать.
Так что если вам все это интересно, то добро пожаловать под кат.

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

+160
Простое удалённое управление с компьютера роботом
5 min
52KПредисловие или зачем извращаться?
Здравствуй, Хабрахабр! Я сидел вечером 11 июня, смотрел фильм. Неожиданно для себя я обнаружил, что мне написала незнакомая мне ранее женщина с предложением сделать робота для их нового квеста. Суть заключается в том, что нужно разгадывать головоломки, исследовать тайники, правильно применять подсказки, использовать доступные вещи и в итоге добывать ключи и открывать двери… От меня требовалось сделать робота, управляемого с компьютера с помощью отдельной программы. У мебя были сомнения по поводу некоторых проблем, например: успею ли я и как именно сделать беспроводную передачу данных (беспроводной передачей данных я занимался до этого только на NXT)? Взвесив все за и против я согласился. После этого я стал думать над передачей данных. Поскольку требовалось сделать робота быстро, то вспоминать и доосваивать, например, Delphi не было времени, поэтому возникла идея сделать модуль который будет заниматься отправкой команд. От компьютера требуется просто посылать данные в СОМ-порт. Этот способ странный, но наиболее быстрый. Его я и хочу описать здесь. Так же я приложу 3 программы которые помогут сделать радиоуправляемую машинку.
+24
Multiple Delegate
4 min
10KВ Cocoa очень популярен паттерн делегирование. Стандартный способ реализации этого паттерна — добавление к делегатору weak свойства, которое хранит ссылку на делегат.
У делегирования много различных применений. Например, реализация какого-то поведения в другом классе без наследования. Еще делегирование используется как способ передачи уведомлений. Например, UITextField вызывает у делегата метод textFieldDidEndEditing:, который информирует его о том, что редактирование закончено, и т.д.
А теперь представьте задачу: надо сделать так, чтобы делегатор посылал сообщения не одному делегату, а нескольким, причем делегирование реализовано стандартным методом через свойство.
У делегирования много различных применений. Например, реализация какого-то поведения в другом классе без наследования. Еще делегирование используется как способ передачи уведомлений. Например, UITextField вызывает у делегата метод textFieldDidEndEditing:, который информирует его о том, что редактирование закончено, и т.д.
А теперь представьте задачу: надо сделать так, чтобы делегатор посылал сообщения не одному делегату, а нескольким, причем делегирование реализовано стандартным методом через свойство.
+18
Как бросить кости без OpenGL
3 min
24KTutorial

Необязательное вступление
Разработчики приложений под iOS зарабатывают не на собственных творениях, а на сторонних заказах. Создав себе имя славного парня, который творит чудеса с iPad-ом, рано или поздно Вы будете получать предложения от знакомых своих знакомых.
Позвольте несколько советов.
Если, по Вашему мнению, работы более чем на две недели, отказывайтесь.
Если на неделю — соглашайтесь за $5000.
Если на 2 дня — за $1000.
Еще одно правило — чем ближе круг знакомств с заказчиком — тем выше гонорар. С близкими друзьями — 100% предоплата.
Поверьте, в этом случае число мусорных проектов резко уменьшится, а уважение к Вам резко возрастет.
-Алло! Напиши что-нибудь под iOS.
Позвольте несколько советов.
Если, по Вашему мнению, работы более чем на две недели, отказывайтесь.
Если на неделю — соглашайтесь за $5000.
Если на 2 дня — за $1000.
Еще одно правило — чем ближе круг знакомств с заказчиком — тем выше гонорар. С близкими друзьями — 100% предоплата.
Поверьте, в этом случае число мусорных проектов резко уменьшится, а уважение к Вам резко возрастет.
Один хороший человек захотел сделать электронную книгу под iOS, коллекцию афоризмов. Фразы вылетают случайно, данные предоставлены в формате комма сепарейтед валью. С флешкой и устным ТЗ он пришел к другу-программисту. Программист оценил примерный объем работы
- Конвертируем данные в sqlite;
- Заводим три UIView (левый, правый и центральный);
- В каждый UIView добавляем UITextView и UILabel;
- Обрабатываем нажатие touchesBegin для листания афоризмов вправо-влево;
- Добавляем кнопку — показать случайный афоризм.
- Добавляем закладки.
- Получаем 1000 долларов США
Работы на 2 дня, программист согласился.
Однако в ТЗ было еще одно условие — при случайном выборе афоризма по экрану должен кататься игральный кубик. Самый обыкновенный, из шести граней.
+41
Изучаем PHP изнутри. Zval
10 min
54KЭта статья базируется на главе Zvals книги PHP Internals Book, переводом которой на русский язык я сейчас занимаюсь [1]. Книга ориентирована в первую очередь на C-программистов, желающих писать свои расширения для PHP, но, я уверен, что она окажется полезной и для PHP-разработчиков, так как описывает внутреннюю логику работы интерпретатора. В статье я оставил только базовую теорию, которая должна быть понятна всем разработчикам (даже не знакомым с PHP или C). За более полным изложением материала обратитесь к книге.
Задачка для привлечения внимания. Каким будет результат выполнения следующего кода?
Если вы точно определили ответ и можете объяснить почему он будет именно таким, то, наверное, вы не узнаете из этой статьи ничего нового, иначе — вам определенно стоит прочитать эту статью, чтобы углубить свои знания.
Задачка для привлечения внимания. Каким будет результат выполнения следующего кода?
$obj1 = new StdClass();
$obj2 = new StdClass();
$obj1->value = 1;
$obj2->value = 1;
function f1($o) {
$o = 100;
}
function f2($o) {
$o->value = 100;
}
f1($obj1);
f2($obj2);
var_dump($obj1);
var_dump($obj2);
Ответ
object(stdClass)#1 (1) { [«value»]=> int(1) }
object(stdClass)#2 (1) { [«value»]=> int(100) }
object(stdClass)#2 (1) { [«value»]=> int(100) }
Если вы точно определили ответ и можете объяснить почему он будет именно таким, то, наверное, вы не узнаете из этой статьи ничего нового, иначе — вам определенно стоит прочитать эту статью, чтобы углубить свои знания.
+40
Книги, видео и другие материалы по разработке под iOS
4 min
114K«Хочу программировать под iPhone — говори, что почитать...»
Любимая девушка
Когда решаешься заняться разработкой под iOS, то трудно выбрать литературу и ресурсы, которые действительно были бы полезны. Хорошо еще, что Apple предоставляет множество учебных материалов и программ с открытым исходным кодом в своем центре для разработчиков. В остальных книжках можно если и не утонуть, то порядочно захлебнуться. Сейчас я жалею, что потратил время на пару «мануалов». Не буду делать им антирекламу, а лучше порекомендую хорошие материалы по программированию под iOS.
Под катом книги, видеокурсы и блоги, которые будет полезно прочитать/посмотреть.
Любимая девушка
Когда решаешься заняться разработкой под iOS, то трудно выбрать литературу и ресурсы, которые действительно были бы полезны. Хорошо еще, что Apple предоставляет множество учебных материалов и программ с открытым исходным кодом в своем центре для разработчиков. В остальных книжках можно если и не утонуть, то порядочно захлебнуться. Сейчас я жалею, что потратил время на пару «мануалов». Не буду делать им антирекламу, а лучше порекомендую хорошие материалы по программированию под iOS.
Под катом книги, видеокурсы и блоги, которые будет полезно прочитать/посмотреть.
+93
Облака — ещё дешевле
5 min
116KTutorial

Случайно пробежавший мимо обзор сервиса DigitalOcean по-началу оставил меня равнодушным. Ну, облачный сервис, ну виртуалки. Ну да, чуть-чуть дешевле (но не так чтобы уж очень), чего-то аналогичного Glacier вроде бы нет да и вообще оно того не стоит.
Я сильно ошибался. Ниже будет рассказано как на базе DigitalOcean сделать себе VPN-сервер в пару десятков раз дешевле такого же на Амазоне и сервис хранения архивов, в бесконечность раз дешевле Glacier.
+84
Одно успешное внедрение iBeacon: 200 маячков для РИФ+КИБ 2014
6 min
25K
+30
Как собрать WhatsApp за сутки. Часть 1
12 min
112KTutorial

Здравствуйте, дорогие читатели Хабрахабра!
В этой серии статей я расскажу, как быстро и почти безболезненно поднять свой собственный WhatsApp под iOS. Статью делю на две части для вашего удобства:
- Создание проекта, простой UI, привязка к сервису мгновенных сообщений
- Делаем красивый UI, добавляем видео и аудио звонки, передачу фото и документов
К сожалению, пособие о том, как набрать 400 000 000 пользователей и продать сервис за 19 Инстаграмов, затерялось где-то на книжной полке. Постараюсь его найти, если кому интересно.
Заинтересовавшихся прошу под кат.
+114
iOS 8 — Widgets
8 min
29KTutorial

С выходом iOS 8 у разработчиков появилась возможность создавать свои виджеты для экрана Today. Пока еще API окончательно не утряслось, есть Known Issue и много неописанных в документации моментов. Но если вы все же хотите сделать свой виджет, то прошу под кат (внимание, в примерах используется Swift).
+33
Устройство блоков в Objective-C
6 min
19KTutorial

В Objective-C есть такая штука, как блоки, которая является реализацией концепции замыканий.
Есть много статей о том, как правильно использовать блоки (когда вызывать copy, как избавиться от retain циклов и т. д.), но при этом устройства блоков обычно не затрагивают. Собственно, давайте восполним этот пробел.
+28
Никогда не проверяйте e-mail адреса по стандартам RFC
7 min
185KTranslation
Множество сайтов требуют от пользователя ввода адреса электронной почты, и мы, как крутые и щепетильные разработчики, всегда стремимся проверять формат введенных адресов строго по стандартам RFC. Благодаря этому наши приложения и сайты проверяют формат e-mail корректно и не имеют проблем с юзабилити, а мы сладко спим, потому что уверены, что все работает как надо.
+97
Установка ST-LINK V2 в MAC OS X для разработки под STM32
5 min
29KTutorial
Недавно наткнулся на замечательную статью, о том, как собрать все инструменты для разработки в среде linux под контроллеры stm32 и я решил вновь вернуться к задаче, которую уже пытался решить, а именно заставить работать все тоже самое по Mac OS X (В моем случае версии 10.9.1 Mavericks), так как работать в CooCox (а он основан именно на Eclipse) в виртуальной машине уже изрядно надоело. В данной статье я опишу пошаговый алгоритм как все тоже самое заставить работать в OS X.

Итак, вы хотите разрабатывать на STM32 в среде Mac OS X, у вас есть ST-LINK V2 отдельно или на макетной плате, тогда добро пожаловать под кат.

Итак, вы хотите разрабатывать на STM32 в среде Mac OS X, у вас есть ST-LINK V2 отдельно или на макетной плате, тогда добро пожаловать под кат.
+9
Indoor навигация с iBeacon в iOS7
4 min
50KВ iOS7 появилась поддержка iBeacon. Интернет пестрит заголовками:
— Почему iBeacon может быть самой важной функцией iOS7.
— iBeacon откроет новую эру локационных приложений.
— Как iBeacon может убить NFC.
— iBeacon и будущее мобильных платежей.
По словам журналистов это супер технологиях, которая изменит рынок мобильных платежей, indoor навигации, привычки покупателей и заодно убьет NFC.
Под катом я расскажу что такое iBeacon на самом деле, как его можно использовать и покажу пример приложения для навигации по нашему офису.

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

+46
Полезные материалы для мобильного разработчика #53 (12-18 мая)
3 min
14KНа этой неделе нам наконец-то рассказали о правомерности работы физического лица с App Store, описали как лучше использовать Auto Layout и строить интерфейсы мобильных приложений, любимый PapaBubaDiop поделился очередной порцией статистики о своих доходах с casual игр, Apple выложила iOS Human Interface Guidelines и начала тестировать промо-коды для IAP. В целом, интересная неделя выдалась на мобильной сцене!


+14
Ultimaker 2
3 min
120KЖурнал Make назвал в ноябре 2012 года принтер Ultimaker Original «самым точным и самым быстрым 3D принтером».
А я ждал-дожидался возможности потрогать хотя бы первую модель, а тут — сразу вторая!
Спешу поделиться с хабрсообществом тем, что я увидел.
Что же представляет из себя Ultimaker 2?

Очень красивое видео:
А я ждал-дожидался возможности потрогать хотя бы первую модель, а тут — сразу вторая!
Спешу поделиться с хабрсообществом тем, что я увидел.
Что же представляет из себя Ultimaker 2?

Очень красивое видео:
+78
О правомерности работы физического лица с магазином App Store в РФ
3 min
69KЭта статья предназначена в первую очередь для программистов-одиночек, желающих попробовать свои силы на рынке платных мобильных приложений. Статья не претендует на истину первой инстанции, поэтому любые ваши замечания крайне приветствуются.
Итак, суть статьи заключается в том, чтобы понять: можно ли в РФ физическому лицу законно получать прибыль от продаж программ в App Store? Просмотр тематических форумов с подобными вопросами привел к выводу: мнения людей на этот счет расходятся. Одни считают, что можно, другие — что такая деятельность будет квалифицироваться как незаконная предпринимательская деятельность, т.к. договор от Apple — это агентский договор и в нем нет ни слова про авторские вознаграждения, и, как следствие, нужно регистрироваться в качестве индивидуального предпринимателя (ИП).
Итак, суть статьи заключается в том, чтобы понять: можно ли в РФ физическому лицу законно получать прибыль от продаж программ в App Store? Просмотр тематических форумов с подобными вопросами привел к выводу: мнения людей на этот счет расходятся. Одни считают, что можно, другие — что такая деятельность будет квалифицироваться как незаконная предпринимательская деятельность, т.к. договор от Apple — это агентский договор и в нем нет ни слова про авторские вознаграждения, и, как следствие, нужно регистрироваться в качестве индивидуального предпринимателя (ИП).
+105
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity