Архив за месяц: Июль 2012

Запуск приложения CookIt

Думаю, уже пора немного показать и рассказать об этом приложении.

В данный момент уже готова версия для iOS, и скриншоты Help сделаны с моего  iPhone. В первую очередь — для чего и кому нужно это приложение?

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

Работа приложения очень проста и описана Help’ом, который Вы видите, как только открываете приложение в первый раз:

1. Нажимаем кнопочку — «Добавить рецепт»

20120718-150742.jpg

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

20120718-150759.jpg

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

20120718-150808.jpg

4. Описываем процесс приготовления по шагам. К каждому шагу для наглядности можно добавить изображение.

20120718-150822.jpg

5. Теперь мы можем посмотреть на наш рецепт и узнать, какие ингредиенты нужны для его приготовления, или перейти на вкладку «Шаги» и ознакомиться с процессом приготовления.

20120718-150829.jpg
6. Очень удобная «фишка» — мы можем добавить ингредиенты любого блюда к списку покупок.

20120718-150835.jpg

7. Так же мы можем просто добавить в список покупок произвольные элементы. Например, мы внезапно выяснили, что у нас нет нужной посуды или кастрюли. Это тоже можно внести в список покупок.

20120718-150841.jpg

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

20120718-150846.jpg

Владельцы iPad и iPhone уже совсем скоро могут искать это приложение в AppStore, владельцам других устройств придется немного подождать. В скором времени расскажу о планах развития данного сервиса; думаю, любителям приготовить что-нибудь вкусное эти новости понравятся.

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

NightFest 2012 ЗАВЕРШЕН

NightFest 2012 проходил в городе Тюмень с 2 по 7 июля 2012 года.

Участники из множества городов: Санкт-Петербург, Самара, Екатеринбург, Пермь, Орел, Тамбов, Сургут, Орск, Ханты-Мансийск, Котовск, Сестрорецк, Мурманск, Омск и, конечно же, Тюмень провели неделю своей жизни в совершенно другом мире.

Что было за эту неделю?
Как всегда на NightFest все начинается «из-за такта» команды начали приезжать за день до официального открытия фестиваля. Некоторые сразу же начали заводить новые знакомства или ждать встречи со старыми друзьями, которых не видели целый год. Некоторые сидели в своих номерах и знакомились, в основном это участники сборных команд, многие из которых видели вдруг друга впервые.

В первый же день после открытия и небольшого импровизированного знакомства с командами началась игра Доминатор. Доминатор это очень динамичный, формат игры, который команды видели впервые, т.к. зародился он в Тюмени и практически нигде больше не проводился. Чтобы победить в этой игре нужны стратегия, тактика и скорость реакции, а не только быстрая машина и глазастые игроки.
Команда Палата 86 сразу же выбрала самый сложный и дорогой доминион и сражалась за него до последнего.
Стоит так же отметить команду The A-Team. Они играли одним экипажем, в то время как многие соперники имели два экипажа по 5 человек. Понравилась фраза игрока Munch, который помогал команде, находясь в другом городе. Он смог захватить виртуальный доминион, и когда дело уже почти было сделано, он сказал хранителю: «Обалденный формат. Жалею, что не поехал к Вам». 😉 В ту ночь он был первым, кто пожалел, что не поехал, но к концу фестиваля таких людей становилось все больше и больше)

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

В среду команды ждала Лесная игра. Не без приключений, на первых 700 метрах команда из города Санкт-Петербург пробила 2 покрышки и вырвала передний подшипник, водитель остался ждать эвакуатора, а все остальная команда смогла пересесть в другую, можно сказать случайную машину и продолжить игру. Главное желание!!! При этом они заняли 3 место по итогам игры, потому что нашли все метки, оставленные организаторами абсолютно верно.
Финишной прямой был заплыв по Андреевскому озеру!

Традиционная составляющая NightFest — Шашлык-Party, в этот раз прошло на одном из озер в районе Липового. Команды ждал полный багажник шашлыка, несколько ящиков Gorilla Energy Drink, отличная музыка в исполнении Тюменских Djеев. А самое главное — море общения и позитива. Это, пожалуй, возможно, ключевой момент фестиваля, когда команды, сохраняя дух соперничества на играх, становятся друг другу родными.
Шашлык-party закончилось уже поздним утром, когда расцвело. Но неофициально продолжалось практически до следующей игры. Многие игроки успели только вздремнуть пару-тройку часов, несмотря на то, что впереди была суточная игра.

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

Призеры в итоговом зачете фестиваля:
1. Урал (Сборная Екатеринбурга и Перми);
2. Палата 86 (Сборная Ханты-Мансийска, Сургута и Орла);
3. ЗЛО (Самара);

Не зря фестиваль был назван «Новая надежда». В 2011 команда организаторов FestTeam официально объявила, что они больше не участвуют в подготовке NightFest и вероятно это последний фестиваль. Но тогда Мы были не согласны с этим решением и сказали, что мы продолжим традиции. В этом году Команда «ЗЛО» из г. Самара готова продолжить традиции фестиваля, и думают над организацией NightFest 2013 в своей городе. Возможно, у них появится конкурент, если кто-нибудь еще решит что он готов нести флаг NightFest в своем городе.

А уже через пару дней после окончания фестиваля мне написал основатель NightFest из г. Санкт-Петербурга. Думаю, он не обидится, если я передам наш диалог как есть:
Антон
Привет!
Ну как всё прошло?
Я видел, в группе решили, что NightFest 2013 быть?
Расскажи хотя бы в паре слов, чего да как? Смотрел фотки, и так жалко стало, что не смог поехать.. Если следующий будет, обязательно не пропущу!
Дмитрий
Ну, Самара ляпнула что они сделают следующий фестиваль) За это очень зацепились и теперь скорее всего выбора у них особо нет.
Антон
это круто! =)
надеюсь, у них хватит мотивации и сил, как вам
Дмитрий
Надеюсь, если что пусть обращаются. По мере сил поможем.

Ну и что мне очень понравилось:
Антон
ага, круто.. ну, буду ему на мозг тогда капать )) в этом году понял, как же мне не хватает феста! 🙁

Официальная группа ВКонтанте, там же будут доступны фотографии с прошедшего фестиваля.

Из того что осталось сказать и сделать:
1. Огромное спасибо всем кто готовил этот фестиваль, всем кто занимался мелочами и помогал и всем кто выполнял роль локомотива, тянущего за собой всех. Это было сильно! Мы это сделали, теперь у нас есть уникальный опыт!
2. Спасибо всем игрокам, которые приехали и играли в наши игры. Было очень приятно провести с Вами 52 часть года. Некоторыми уже не в первый раз. Наверное, я сам начал понимать настоящую суть фестиваля только в этом году. Это невероятная возможность пожить в другом мире, с другими людьми и другими отношениями между людьми. Это не просто игра, вызов в котором нужно решить кто сильнее, это огромный катализатор дружбы. Было очень жаль отпускать всех домой, расставаться на целый год.
3. Уникальный опыт, который мы получили нужно обязательно описать и передать следующим организаторам. В этом году мы были одни, мы делали все сами и учились на том, что делали, думаю, следующим организаторам очень поможет то, чему мы научились.

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

Работа со строковыми значениями Excel из OpenXML

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

Первая попытка была довольно наивной. Выдернуть нужную ячейку прямо по значению:

Cell cell1 = wsPart.Worksheet.Descendants<Cell>().Where(c => c.CellValue.InnerText == "name").FirstOrDefault();

Но попытка логичным образом провалилась. И это не удивительно. Если глянуть состав xmls-файла, все становится понятно.

<x:row r="5" spans="1:3" x14ac:dyDescent="0.25">
<x:c r="B5" t="s">
<x:v>1</x:v>
</x:c>
<x:c r="C5" t="s">
<x:v>2</x:v>
</x:c>
</x:row>

На самом деле, в этих ячейках не цифры «1» и «2», а строки. Об этом говорит атрибут t=’s’. В структуре xlsx-документа есть файлик под названием «SharedString». Искать эти строки стоит именно там.

Если в xlm нет атрибута t, это числа.

<x:row r="1" spans="1:3" x14ac:dyDescent="0.25" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
<x:c r="A1">
<x:v>1</x:v>
</x:c>
<x:c r="B1">
<x:v>12</x:v>
</x:c>
<x:c r="C1">
<x:v>123</x:v>
</x:c>
</x:row>

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

Сам файл SharedString выглядит таким образом:

<x:sst xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="3" uniqueCount="3">
<x:si>
<x:t>troll</x:t>
</x:si>
<x:si>
<x:t>client.name.1</x:t>
</x:si>
<x:si>
<x:t>name_1</x:t>
</x:si>
</x:sst>

* This source code was highlighted with Source Code Highlighter.

И здесь искать строки можно довольно просто:

List<SharedStringItem> sharedStringItems = sharedStringPart.SharedStringTable.Descendants<SharedStringItem>().Where(s => s.InnerText == "name").ToList();

// Открывает документ с возможностью записи
using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, true))
{
// Проверяем есть ли в документе SharedStringTablePart. Можно работать если есть хотя бы одна.
if (document.WorkbookPart.GetPartsOfType<SharedStringTablePart>().Count() > 0)
{
//Получаем список ShareStringTableParts
List<SharedStringTablePart> shareStringParts
= document.WorkbookPart.GetPartsOfType<SharedStringTablePart>().ToList();
// Перебираем каждый элемент списка
foreach (SharedStringTablePart sharedStringPart in shareStringParts)
{
// Выбираем Items в которых внутренний текст имеет нужное нам значение.
List<SharedStringItem> sharedStringItems = sharedStringPart.SharedStringTable.Descendants<SharedStringItem>().Where(s => s.InnerText == "name").ToList();
...
}
}
// Сохраняем изменения в книге.
document.WorkbookPart.Workbook.Save();
}

* This source code was highlighted with Source Code Highlighter.

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.