Pull to refresh
0
0
Кирилл @saintech

Разработчик ПО

Send message

Избавляемся от строковых констант в 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, то ошибка вылезет не на стадии компиляции, а в рантайме, и отловить и исправить ее будет дольше и дороже.
Так что-же можно сделать?
Читать дальше →

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

Reading time4 min
Views83K
На Хабре в свое время было несколько статей «Очень много полезных штук для AS3». Автор попытался собрать ссылки на самые полезные и интересные библиотеки. И т.к. в последнее время я разрабатываю под iOS, решил последовать его примеру и сделать то же самое, но для своей платформы. Описания почти прикладывать не буду, все есть на страничках проектов.
Читать дальше →

Паттерны ООП в примерах для iOS

Reading time48 min
Views150K

От переводчика


Искали тут двух русскоязычных разработчиков — на iOS и на C++ под Windows. Видел десятки выполненных тестов. Разница в знании ООП между представителями двух платформ — огромная. На C++ обычно красивый расширяемый код, как само собой разумеющееся. На Objective C картина удручающая. Почти все iOS-кандидаты не знали ООП дальше своего носа NSString'ов и AppDelegate'ов.

Понятно, что плюсы учат по Страуструпу и «банде четырёх», а Objective C — больше по туториалам и Stack Overflow. Фастфуд-обучение не оставляет места на фундаментальные вопросы… Но такой разницы я не ожидал.

Поэтому я перевёл пост, в котором даны начальные сведения о шаблонах проектирования с примерами на iOS… «начальные»? Ага, значит, будет продолжение? Нет, не будет. Дальнейшие сведения вы получите из опыта, из попыток организовать процесс написания кода с помощью паттернов. Сначала не будет получаться, вероятно, фасад здания будет торчать из дымовой трубы, но потом придёт понимание, где какие приёмы реально помогают.

Качественная разработка ПО — творческий процесс, уникальный для каждой конкретной головы. Поэтому не существует общей инструкции: if (A and (B or C)) then use Pattern_N;
Как это нет инструкции? Что же делать?

Инструменты студии мобильной разработки

Reading time4 min
Views38K


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

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

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

Сравнение адаптивных CSS фреймфорков: Bootstrap, Foundation и Skeleton

Reading time1 min
Views105K


Недавно Brian Haveri в блоге vermilion.com сделал отличное наглядное сравнение популярных CSS-фреймворков (статья), которые можно использовать для разработки адаптивных сайтов.

За последний год мне удалось поработать со всеми этими фреймворками: Bootstrap, Foundation и Skeleton, и могу сказать, что в свое время такая табличка сохранила бы кучу времени. Поэтому я перевел ее на русский язык, добавив немного своих комментариев. Надеюсь будет полезно хабровчанам.
Читать дальше →

Пять преимуществ прокрастинации

Reading time6 min
Views19K
Этот текст — перевод статьи Джеймса Алтачера, посвященной прокрастинации (или отлыниванию от работы), то есть тому, чем многие из нас регулярно занимаются. Автор высказывает свою точку зрения — прокрастинация не является исключительно негативным явлением и может обладать преимуществами.
Джеймс Алтачер (James Altucher) – предприниматель, инвестор, управляющий директор Formula Capital, основатель Stockpickr.com. Известный блоггер. Обладатель именной статьи про себя в Википедии.

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

10 примеров меню для web страниц

Reading time1 min
Views19K
image Эти способы не являются ноу-хау или чем-то в этом духе. Тем не менее, они могут помочь начинающим дизайнерам и web технологам в реализации задуманных ими идей. Каждый из предложенных вариантов можно обыграть по-своему.

Проверял лично и убедился в том, что исправно работает под следующими браузерами:

IE7+, Opera 10.5+, FF 3.6+, Chrome 12+ (linux), Chrome 13+ (windows), Safari 5+(win) исходя из личного опыта, предполагаю о том, что работать исправно будет во всех свежих версиях Safari, FireFox, Opera и Chrome.

С помощью CSS можно построить вот такие вот симпатичные варианты:


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

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

Reading time6 min
Views7.8K
В предыдущей статье я рассказал о возможностях, которые предоставляет закон № 152 владельцу персональных данных. В этой частью статьи представлен сам механизм и формы запросов для реализации своих прав. В статье не рассматриваем вопрос, когда оператор вообще не имеет права обрабатывать персональные данные. Задача — сделать так, чтобы оператору персональных данных незаконная обработка этих данных стоила серьезных финансовых и временных затрат.

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

Список полезных инструментов для CSS разработчика

Reading time8 min
Views71K
Это не попытка создать список всех существующих инструментов для CSS разработки. Только некоторые, наиболее полезные были отобраны и размещены в соответствующих категориях.


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

Инструменты для дизайнеров и разработчиков

Reading time2 min
Views4.8K


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

Смотрим

Как открыть интернет-магазин с голой жопой

Reading time3 min
Views6.5K
Последнее время часто слышу жалобы, что нет юрлица, а значит ничего сделать нельзя, ибо непреодолимый страх, что «придут злые опера и закроют за незаконную предпринимательскую деятельность».

Не буду растекаться по древу насчет «до 5-7 тыс. у.е. в месяц в качестве физлица вы никому в упор не интересны».

Допустим без юрлица ну никак нельзя, да еще и на сайт с рекламой денег нет.  Что делать? 

По шагам:
1. Изучаете товары (Я.Маркет, запросы в Директ, ближайший рынок) на предмет «что бы такого не слишком приевшегося и конкурентного, но при этом простого в доставке, и чтобы геморроя с гарантиями/лицензиями поменьше.
Хинт: сувениры, игрушки, коллекционеры всех мастей. Берете одну/несколько специфических ниш для отработки.
Не надо брать строительство, окна, бытовую технику/электронику. Там, где кокурентов дофига.

2. Идем на ближайший рынок, торговый комплекс, а лучше отраслевую выставку(там народ крупнее и плотнее).

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

Управление задачами в MLO

Reading time5 min
Views52K
Я долгое время выбирал для себя удобный персональный органайзер и систему для управления задачами…

В конце-концов остановился на такой софтинке как MLO, о которой и поведаю далее.
Читать дальше →

Степан Пачиков: «Если у вас есть идея, в которой вы разбираетесь, можете развить ее в стартап»

Reading time7 min
Views4.5K
13 мая лекцию для студентов специализации «Менеджмент в сфере интернет-технологий» Государственного университета управления прочитал Степан Пачиков, легендарный IT-аксакал, один из самых успешных стартапщиков СССР и всея Руси.

image

Главный архитектор Evernote и организатор, по крайней мере, двух успешных софтверных стартапов начал с полушутливого дисклеймера: «Профессиональным лектором я никогда не был, да и уже 25 лет не читал лекций. Поэтому ответственности за ущерб от применения полученных в ходе лекции знаний не несу». Ну а после предупреждения пояснил, о чем конкретно собирается рассказать: «Расскажу я сегодня о том, что важно для удачного стартапа. Свою лекцию я вначале хотел назвать «Что не нужно делать, чтобы не развалить фирму», но решил не вводить негатив в название. Конечно, я также расскажу и про свою нынешную компанию Evernote: грех не воспользоваться предоставленной возможностью бесплатно прорекламировать свое предприятие и свой продукт».
Читать дальше →

Персональный зоопарк или немного о Pygame — Часть 1

Reading time7 min
Views40K
image
Для тех, кто не в курсе: Pygame — это очень и очень неплохой фреймворк для разработки игр на языке Python. Причем поддерживается не только работа с 2D и 3D, но и при желании можно установить биндинги ко многим популярным графическим и физическим движкам. Кстати, Pygame вовсе необязательно использовать именно для игр, можно также создавать и программы с необычным интерфейсом, например, какой-нибудь трехмерный фронтенд к базе данных.
Вот мне, собственно, и захотелось рассказать об основных принципах работы с этим фреймворком, мало ли, может, пригодится кому :)
Ну что, погнали?

Помогите школьным сайтам

Reading time3 min
Views2.4K
Автор данного топика — новый (ну, почти новый :)) хабрапользователь Elm

Я работаю методистом в питерском городском центре информатизации образования. Учу учителей использованию ИТ в своей деятельности (если кратко). Одним из направлений работы являются школьные сайты. Достаточно давно в этой тематике, 2 года назад с коллегой книжку написали, занимаюсь продвижением «Конструктора школьных сайтов» в Питере.

Сейчас мы провели первый городской фестиваль сайтов «Открытая школа». Каждый из 18 питерских районов представил лучшие (на их взгляд) школьные сайты. Отбирали научно-методические центры, а не школы, но всё равно на общем фоне почти все сайты были довольно-таки приличные. Нам, оргкомитету, анализировать сайты было тоже интересно — важно знать, что в этой области в городе происходит.
Читать дальше →

Сказ про то, как я свой интернет-магазин открывал: старт

Reading time3 min
Views2.3K
Предыдущая часть.


Первый капитал мы сколотили продавая «таможенный конфискат». Было у нас где-то по 1000 у.е. на брата.

Мы купили лицензию на avalonshop (ныне shopcms) за 30 у.е. Я нашел дизайнера, который нарисовал страшненькую шапку и перерисовал элементы стандартного дизайна за 50 у.е. И попросил своего старого товарища-программиста поработать “напильничком” — немного изменить шаблон, чтобы нам нравился вид магазина. Обошлось в 50 баксов. По нашим меркам получилось вполне сносно.

Парни мы умные были, поэтому прекрасно понимали, что работать с ограниченным ассортиментом конфиската будет невозможно. И стали искать поставщиков.
Читать дальше →

Сказ про то, как я свой интернет-магазин открывал: день рождениZ

Reading time2 min
Views1.3K
Было это три года назад. День рождения бизнеса 12 апреля 2006 года.

Два юных студента киевского политехнического института решили открыть интернет-магазин парфюмерии. Не ИНТЕРНЕТ-МАГАЗИН, а интернет-магазин ПАРФЮМЕРИИ. Чувствуете разницу?)

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

Взяли еще одну партейку. Круг клиентов расширялся: мы стали пробивать по своим знакомым, куда бы ее еще сплавить и нашли человечка, который предлагал нам тот же товар, но по более низким ценам. Становилось интереснее)

Мы тогда еще не думали об интернет-магазине и вообще о таких вещах, как интернет-коммерция, практически не подозревали.

Прошло еще несколько партий. Теперь мы товар брали меньшим количеством и продавали дороже, на чем собственно заработали деньжат. Кутить мы не стали, т.к. были студентами и запросы были небольшие — это и стало первым капиталом.

Откуда мне пришла в голову мысль открыть интернет-магазин я не помню. Я уже давно был активным серфером, и знал что таковые существуют, но они часто кидают клиентов (факт, было такое время).

“Друг мой, а давай-ка откроем интернет-магазин?”,- сказал я как-то своему нынешнему партнеру за бокалом пива. И 12 апреля был зарегистрирован домен elitparfum.com.ua.

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

И здесь нас поджидала первая ошибка… продолжение следует;)

З.Ы. «день рождениZ» — ошибки нет)

Личный тайм-менеджмент

Reading time9 min
Views93K
Почитав недавний топик про лягушек я понял, что Хабрасообщество не очень хорошо ориентируется в вопросах тайм-менеджмента и многие никогда не занимались построением своей тайм-системы.

Поэтому я попробую исправить этот недочёт.

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

Welcome!

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

Рецепты хорошей типографики

Reading time7 min
Views57K
Судя по результатам голосования, которое я проводил в своём блоге, большинство пользователей никак не типографируют тексты перед публикациями (НЛО не считается). Те, кто работают над текстами, в большинстве своём делают это вручную, поэтому я решил попробовать собрать воедино рецепты экранной типографики, дабы не забывать самому и напомнить другим. Не думаю, что статья будет чем‐то новым для опытных верстальщиков. Новички узнают, профи исправят :)

Содержание

  1. Дефисы, тире, минусы и другие палочки
  2. Кавычки и чёрточки
  3. Скобки
  4. Многоточие
  5. Заголовки, списки

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

Ускорение верстки — да поможет Notepad++

Reading time2 min
Views103K
Я уже довольно-таки давно верстаю в Notepad++, пробовал и другие редакторы — не срослось. Основная причина, по которой мне нравился раньше этот редактор — подсветка кода. Видел. что есть много каких-то настроек, но небыло необходимости в них разбираться — ведь и так всё работает прекрасно.

Ситуация изменилась, когда объем работы вырос, и я физически не успевал верстать то, что вроде как должен успевать. Конечно, есть свои html и css заготовки, но копипастить их — сомнительный выигрыш во времени. Работа по FTP через Total Commander тоже не очень то удобна — много лишних телодвижений.

И вот я решил потратить время на настройку своего любимого Notepad++, слышал где-то что гибко он настраивается :)

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

Information

Rating
Does not participate
Location
Ярославская обл., Россия
Date of birth
Registered
Activity