К основному контенту

Сообщения

Сообщения за март, 2012

Monotouch и Monodevelop. Программируем для iOS на C# на примере нашего проекта. Часть I.

Сегодня я начинаю серию публикаций, посвященных разработке нашего первого приложения под iOS на C#. Так как это проект новый для нас, то статьи будут появляться по мере нашего продвижения в этом вопросе. Предыстория . Руководство поставило задачу своими силами сделать приложение Интернет-магазина для iPhon-ов и iPad-ов. А в дальнейшем и под Android. Как разработчики на C# мы стали изучать варианты реализации. И остановились на  Monotouch . Monotouch - это надстройка к Monodevelop, которая позволяет писать приложения под iOS на C#. Код компилируется в нативный objective C и прекрасно работает под iOS. Причем Monotouch позволяет писать не только для iOS, но и для Android. Как раз то, что нужно. Вы спросите, что такое Monodevelop? Это среда разработки на C#, работающая под Mac OS. Так сказать аналог VisualStudio для Mac-ов. И все же почему Monotouch? Ответ прост - низкий порог вхождения. Зная C# можно сразу начинать работу над приложением не тратя время на изучение нового языка про

Хранить значения Web.config appSettings и handlers в отдельных файлах.

Со временем, работая с большим проектом, приходишь к тому, что записей appSettings и handlers становится очень много. Чтобы не путаться в большом файле Web.config есть элегантное решение: вынести значения appSettings и handlers в отдельные файлы. Для того, чтобы вынести значения в отдельный файл используется атрибут configSource. Запись в Web.config меняется на следующую: ..... <appSettings configSource="appSettings.config" /> ...... <handlers configSource="handlers.config" /> ........ Соответственно, файл appSettings.config будет выглядеть так: <appSettings>     <add key="ключ" value="значение" />     <add key="ключ" value="значение" />     .... </appSettings> А файл handlers.config: <handlers>     <add name="Имя" verb="GET,POST" path="путь" type="тип" />     .............. </handlers>

Пример взаимодействия с Odnoklassniki Rest API на C#.

Итак, как и обещал, продолжаю тему взаимодействия с различными API. В прошлый раз писал про  API ВКонтакте , сегодня напишу про API Одноклассников. Первое, что нам нужно сделать - это зарегистрироваться как разработчик на Одноклассниках. Сделать это можно по следующей ссылке  Форма регистрации разработчика приложений Получив права разработчика, необходимо зарегистрировать сайт как приложение. Подробно как это сделать можно прочитать  здесь После того как сайт будет зарегистрирован придет письмо, содержащее: Application ID: xxxxxx. Публичный ключ приложения: xxxxxxxxxxxxxxxxxxxxxxxxx. Секретный ключ приложения:  xxxxxxxxxxxxxxxxxxxxxxxxx. Ссылка на приложение: http://www.odnoklassniki.ru/games/xxxxx Используя эти данные можно начать работу с API. Для выполнения запросов к API пользователь должен авторизоваться в Одноклассниках. Добавляем на нашем сайте ссылку для авторизации пользователя: http://www.odnoklassniki.ru/oauth/authorize?client_id={0}&scope={1}&

Получение MD5Hash строки на C#

Внешние Web API зачастую требуют цифровую подпись запросов в виде MD5Hash-а передаваемых параметров. Ниже приведу метод, который я использую для получения MD5Hash. public static string GetMD5Hash(string input) { var x = new System.Security.Cryptography.MD5CryptoServiceProvider(); var bs = Encoding.UTF8.GetBytes(input); bs = x.ComputeHash(bs); var s = new StringBuilder(); foreach (var b in bs) { s.Append(b.ToString("x2").ToLower()); } return s.ToString(); } В скором времени приведу пример, где я использую этот метод в работе с Rest API Одноклассников.

Пример на Css как оформить ссылку с картинкой.

В своей работе приходится также заниматься html-версткой. Поэтому иногда  буду в блоге размещать примеры на Css. Итак, первый пример. Как оформить ссылку с картинкой на Css для продвинутых. Первое время использовал это вариант: <a href="#" title="Ссылка" ><img src="картинка.png" alt="Картинка" width="100" height="100"/></a> Но, как оказалось, для поисковой оптимизации (СЕО) этот способ не совсем удачный - в ссылке должен быть текст. Поэтому сейчас использую следующий вариант, который, как мне кажется, более красивый и читабельный: <a href="#" title="Ссылка" class="link">Ссылка</a> код для css файла a.link{ display: block; overflow: hidden; background: url('картинка.png ') no-repeat; width: 100px; height: 100px; text-indent: -9000px; }

Отключить запуск ASP.NET Development Server в Visual Studio

Когда у вас несколько сайтов, и вы начинаете отладку в Visual Studio, то на каждый сайт запускается свой ASP.NET Development Server и все они дружно висят в трее. Так как я свои сайты запускаю непосредственно под IIS, то запуск каждого ASP.NET Development Server мне только мешает, создавая легкое раздражение. Как оказалось, отключить запуск ASP.NET Development Server очень легко. Нужно выбрать проект в Solution Explorer, нажать F4 (Свойства проекта) и в закладке Always start when debugging выбрать False Сделать это придется для каждого проекта, но больше ASP.NET Development Server вас беспокоить не будут.

C# десериализация xml.

Недавно я писал о том, как десериализовать json строку в класс . Сегодня я напишу как десериализовать в объект xml файл. Итак, допустим, что мы хотим десериализовать xml файл со следующей структурой: <order id="1234"> <items> <item price="0123"/> <item price="1234"/> <item price="2345"/> </items> </order> Создаем 2 класса: [XmlRoot("order")] public class OrderModel { [XmlArray("items")] [XmlArrayItem("item", typeof(OrderItem))] public List<OrderItem> Items { get; set; } [XmlAttribute("id")] public int Id { get; set; } } public class OrderItem { [XmlAttribute("price")] public int Price { get; set; } } Для класса OrderModel указываем атрибут XmlRoot, который говорит о том, что элемент order является корневым элементом xml файла. Для вложенных элементов указываем атрибуты: XmlAttribute - если речь идет о

C# и Json.NET. Десериализация JSON строки в объект.

В статье  C# и API ВКонтакте. Обращение к адресу API-сервиса путем создания HTTP-запроса (POST)  я писал о том, что возвращаемую от API json строку  я десериализую в класс. Для десериализации я использую библиотеку  Json.NET . Тесты показали, что эта библиотека  позволяет выполнять сериализацию / десериализацию гораздо быстрее чем DataContractJsonSerializer и JavaScriptSerializer. Использование библиотеки очень простое. Например, мы хотим десериализовать json строку в класс Person. Создаем класс: public class Person { [JsonProperty(PropertyName = "firstname")] public string FirstName { get; set;} [JsonProperty(PropertyName = "secondname")] public string SecondName { get; set;} } Для полей указываем аттрибут JsonProperty, где указываем название поля в строке, которую хотим  десериализовать. Для десериализации вызываем следующий метод: var  Person  = JsonConvert.DeserializeObject<Person>(jsonString);  Аналогичным способом можно десериализов