Thursday, February 27, 2014

Winter Coding School. Небольшое интервью

Наш департамент маркетинга опять нашел упоминание обо мне в интернете.
Приятно, когда кто-то следит за твоей жизнью :)
Они попросили меня ответить на несколько вопросов о прошедшем мероприятии Winter Coding School. Я уже писала про это мероприятие здесь. Там же можно найти мою презентацию.

1. Точное название мероприятия и даты проведения?
    Winter Coding School. 3-8 февраля 2014.
    Сайт: http://baltctf.ru/winter-coding-days
    Анонс: http://www.forkconf.ru/2014/02/WinterCodingDays.html

2. Кто, кроме вас из "НЕОЛАНТ" принимал участие в мероприятии?
    Никто

3. В каком статусе вы принимали участие в нем?
    Докладчик

4. Основная тема мероприятия? О чем шла речь? (очень коротко)
    Интенсивное обучение студентов практическим навыкам программирования.
    Формат: 1 час лекция, 4 часа практика (нужно было подготовить практическое задание).
    Тема моего доклада "C# WPF MVVM". Слайды можно посмотреть здесь.

5. Что полезного принесло вам или компании участие в этом мероприятии? (кратко)
    Мне лично: опыт публичных выступлений, подготовка образовательных докладов.
    Для организации: у нас сейчас ввели практику обязательных образовательных докладов   
    для старших сотрудников; так что опыт оказался весьма кстати.
    

Tuesday, February 25, 2014

Прототипирование и app icon template

Хотелось бы поделиться полезными ссылками, которые нашла на прошлой неделе:

App Icon Template


Это удобный шаблон для Photoshop, который позволяет быстро и наглядно создавать иконку для приложения под iOS или Android. Для Android я шаблон не скачивала, а для iOS он еще и умеет на лету создавать иконку во всех нужных бесчисленных расширениях.

Для iOS выглядит он вот так:


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


Прототипирование


Я попробовала из них 2ва: POP и Framer.



Первый, POP, хорош на самых ранних этапах разработки приложения. Когда вы собираетесь командой, генерите первые идеи, накидываете на салфетке интерфейсы. Тут же можно их сфотографировать, загрузить в POP (есть приложения для iOS и Android), добавить ссылки между "страницами" и у вас готовый, самый дешевый прототип. Можно практически моментально пощупать новую идею, а цена изменений будет самая что ни на есть минимальная. 
Еще можно расшаривать получившийся прототип. Вот мой.



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



P.S. сейчас буду разбираться с сервисом для бета тестирования TestFlight, надеюсь напишу попозже о результатах. Кстати ходят слухи, что их купили Apple и они будут закрывать поддержку Android.

Monday, February 17, 2014

Дерево знаний от издательства МИФ

Sunday, February 16, 2014

Продвинутый блоггинг. Возможность голосования под каждым постом

Только что под каждым моим постом появилась вот такая вот голосовалка:


Не знаю почему, но она немного кривовата :(
Надеюсь это не влияет на ее функциональность.

Давайте вместе попробуем, как она работает!
Буду очень признательна, если вы откликнитесь и проголосуете за что-нибудь здесь :)

Как добавить голосовалку в свой блог на blogspot.com:


  • идем в настройки блога 
  • в списке слева выбираем Layout
  • там будет элемент Blog Posts, кликаем в нем на Edit
  • ищем поле Reactions, включаем эту возможность и, по желанию, русифицируем :)
  • жмем на Save
  • идем смотреть на свой блог и радоваться :)

Friday, February 14, 2014

Съешь эту лягушку! Прямо сейчас!

Делай  клевые вещи каждый, блин, день.
Не можешь - умри!
Том Питерс

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

"Выйди из зоны комфорта" Брайан Трейси


Слоган издательства МИФ - "Максимально полезные книги". И это книга действительно из их числа! Сколько раз вы откладывали важные дела из-за лени или из-за того, что дело казалось вам слишком сложным? Не стану утаивать, я действительно ленива. Но каждый программист скажет вам, что это не всегда плохое качество. Если бы не было лени, сколько бы замечательных вещей не придумало человечество?! Так давайте же останемся немножко ленивыми и будем делать только самые важные дела! 
Книжка, конечно, не столь категорична, и в ней нет места такому слову как лень. Но основная мысль заключается в том, что делать надо в первую очередь, а может и вообще, самые важные дела, которые наиболее положительно повлияют на вашу карьеру и личную жизнь.
Почти на каждой странице нас призывают к действию! В конце первой главы было: "Возьми чистый листок бумаги и ручку. Немедленно! Напиши 10 целей на год." (со своих слов) И я написала! Потом потребовали выбрать самую важную из них, разложить на этапы-действия и не откладывая взяться за первый пункт! Так я практически отправила в AppStore свое первое приложение (бесплатное), но пока пожалела потратить 99$, так как у меня нет ближайших планов по выкладыванию туда последующих моих приложений.
Приятно, что в книге нашлось место упоминанию, что достигая продуктивности в делах, мы в первую очередь освобождаем время на общение со своими близкими. В книге говорится, что 85% всех наших радостей заключается именно в этом.
Я начала применять пока только треть советов. Особенно мне понравилось правило ABCDE. Когда привыкну их придерживаться, пожалуй перечитаю книгу еще раз и приступлю к применению следующих методов.
Всем всячески рекомендую эту книгу. Рейтинг полезности 5 из 5. Но это, скорее всего, только в том случае, если вы еще не присытились книжками по личной продуктивности.

Эта книжка мне досталась бесплатно в качестве новогоднего подарка в приложении МИФ для iOS.
А недавно я заказала в печатном издании другую книжку этого же издательства. Когда я ее открыла, то увидела большой шрифт и огромные поля. Весь текст книги займет вряд ли больше 50-ти обычных листов A4. И за это я заплатила почти 600 рублей??
Такого первое впечатление. Но если книга оказалась мне действительно полезна, то возможно она окупила себя. И не важно сколько в ней страниц. 
Недавно я достала с полки толстую книжку. Она стоила больше 800 рублей. Но она эту цену никак не оправдала, потому что я ее так и не прочитала..

P.S. на английском книжка называется "Eat that frog!"

Monday, February 10, 2014

Обзор C# WPF MVVM для студентов

В этот четверг была в университете и читала доклад студентам в рамках Winter Coding School.
Анонс этого мероприятия можно прочитать здесь.

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

Доклад был на тему "C# WPF MVVM". Пыталась сделать его как можно проще, т.к. предполагала, что не все будут знакомы с языком программирования C#. Но и старалась пропустить элементарные вещи, которые схожи для многих языков, дабы не скатываться в элементарщину и успеть охватить тему в рамках данного мне одного часа.

Вот какая презентация у меня вышла:

Tuesday, February 4, 2014

iOS share panel. Просто песня!




Знаете, как использовать в своем приложении вот такую панель и всю ее функциональность?

4 строчки кода!!

NSString *text = @"Hello!";

NSArray *dataToShare = @[text];

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:dataToShare applicationActivities:nil];

[self presentViewController:activityVC animated:YES completion:nil];


И еще одна, если хотите что-то оттуда удалить:

activityVC.excludedActivityTypes = @[UIActivityTypeCopyToPasteboard, UIActivityTypePrint, UIActivityTypeAssignToContact];


Так же можно добавлять туда свой элемент.
Об этом можно прочитать в документации или вот ссылка с подробным описанием на русском.

Monday, February 3, 2014

Встреча виртуального коворкинга и хакерспейса. Добавление картинок в симулятор iOS

Вчера была на онлайн встрече калининградского виртуального коворкинга и хакерспейса: http://vk.com/vcow39
Хотя встреча была достаточно камерной, мы очень приятно пообщались на it темы, показали друг другу свои проекты, поделились мнениями и высказали предложения по доработке, покидали друг другу полезные ссылки.

Встреча проходила на площадке Google Hangouts. Она поддерживает конференции, чат, показ рабочего стола и многое другое. А главное совершенно бесплатно)
Правда, на сколько я знаю, надо иметь аккаунт в Google+.

Онлайн встреча получилась на столько живой, что можно в Foursquare создать где-нибудь точку "Виртуальный коворкинг и хакерспейс" и чекиниться там :)

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

Картинки в симуляторе iOS

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

Последовательность действий:
  • открываем в симуляторе iOS программу Safari
  • идем в google картинки
  • открываем понравившуюся нам картинку
  • кликаем на иконку с действиями и там будет "Сохранить изображение" (или аналог на английском)
Картинка сохранится в приложении Фото



Saturday, February 1, 2014

Objective C. iOS. Сохранение объектов произвольных классов между запусками приложения

Чтобы не забыть, как я это сделала, и может кому будет тоже интересно и полезно.
Для этого нужен протокол NSCoding и класс NSUserDefaults.

Класс, объекты которого хочу сохранять между запусками моего приложения, должен реализовывать протокол NSCoding:

@interface Card : NSObject <NSCoding>
@property (nonatomic) int color;
@property (nonatomic) int shading;
@property (strong, nonatomic) NSString *symbol;
@property (nonatomic) int number;
@end
@implementation Card
#define COLOR_KEY @"color"
#define SHADING_KEY @"shading"
#define SYMBOL_KEY @"symbol"
#define NUMBER_KEY @"number"
- (id)initWithCoder:(NSCoder *)decoder {
    self = [super init];
    if(self) {
        self.color = [decoder decodeIntForKey:COLOR_KEY];
        self.shading = [decoder decodeIntForKey:SHADING_KEY];
        self.symbol = [decoder decodeObjectForKey:SYMBOL_KEY];
        self.number = [decoder decodeIntForKey:NUMBER_KEY];
    }
    return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder {
    [encoder encodeInt:self.color forKey:COLOR_KEY];
    [encoder encodeInt:self.shading forKey:SHADING_KEY];
    [encoder encodeInt:self.number forKey:NUMBER_KEY];
    [encoder encodeObject:self.symbol forKey:SYMBOL_KEY];
}
@end
Считывание и запись данных:
#define SAVED_CARD @"saved card"
-(Card *)read
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *archivedObject = [defaults objectForKey: SAVED_CARD];
    Card *card = (Card *)[NSKeyedUnarchiver unarchiveObjectWithData:archivedObject];
    return card;
}
-(void)write:(Card *)card
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *archivedObject = [NSKeyedArchiver archivedDataWithRootObject:card];
    [defaults setValue:archivedObject forKey:ACTIVE_CARDS];
}