Pull to refresh
109
0.1
Ахмед Шериев @Atreides07

Пользователь

Send message

Клиент WP7 соц. сети «Вконтакте» с открытым кодом

Reading time3 min
Views5.4K

Сегодня уже есть множество демонстрационных проектов под WP7.

Я тоже решил добавить свою «каплю в море» в виде исходных кодов одного из своих проектов «для фана» — клиент социальной сети «Вконтакте» который писался в свободное от работы время.

Проект далек от идеального, но буду рад если код окажется кому нибудь полезен.
На текущий момент функционал очень скуден: сообщения/переписки, список друзей, просмотр фотографий, возможность закрепления на главной почти каждой страницы.

Под катом небольшое описание следующих на очереди функций и возникших проблемах.

Клиент работает через официальное API, соответственно авторизация реализовано через встроенный браузер.

Исходный код
Исходный код и xap файл можно найти по адресу:
http://vkontaktewp.codeplex.com/releases/view/75456

Ожидаемые функции:
В скором времени будут добавлены следующие функциональности:

ProgressBar — одна из самых мелких и тем не менее самая необходимая функция — индикатор процесса загрузки контента.
Pin to start — сейчас почти все страницы можно закрепить на главной, по возможности планируется добавить разную стилизацию для каждой страницы.
Сохранения контактов — легкореализумая, но порой очень нужная функция (прошу прощения за тафтологию :) сохранения контакта из «вконтакта» в список контактов на телефоне.
Навигация — на данный момент навигация не совсем корректно выстроена. Кнопка Home на каждой странице предназначались для возможности перехода в корневую страницу при открытии приложения из закрепленных иконок. По идее, эта кнопка должна отображаться только если мы перешли из закрепленной иконки. В данный момент реализация этой функции была невозможно из за проблем с AppBar (изложено ниже). Не был уверен насколько правильно оставлять в том виде как сейчас есть. Возможно было бы лучше вообще отключить переход на главную чем всегда показывать эти кнопки.

В дальнейшем предполагается добавление возможности комментирования фотографий, добавления новых, поддержки «стены сообщений» и т.д. и т.п. по мере востребованности.

Проблемы с кодом:
В самом коде тоже есть несчетное множество недоработок и недостатков.
Сразу хочу предупредить, что код далек от идеала, он множество раз рефакторился, местами есть копи-паст, местами не оптимален, местами нарушает принцип MVVM, но тем не менее решил выложить в том виде как есть.

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

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

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

P.S.
Доклад/подробная статья
Мне бы хотелось написать статью или снять доклад на тему разработки приложений под WP7, как всегда, останавливает неизвестность о целевой аудитории. С одной стороны не хочется утомлять банальностями, с другой стороны не хочется упустить важные детали. Буду рад любым пожеланиям/вопросам/замечаниям, которые потом могли бы помочь расставить акценты в статье/докладе.

P.P.S.
Сливающим карму- мне в принципе все равно сколько кармы останется, лишь бы была возможность писать, просто интересно было бы узнать чем вызвано недовольство — может стиль изложения или ошибки в статье, ошибки в коде?

P.P.P.S.
Выложил несколько скриншотов http://vkontaktewp.codeplex.com/. Чуть позже постараюсь оформить домашнюю страницу поприличнее.
Total votes 58: ↑41 and ↓17+24
Comments20

Pliq.me. Горячий стартап ищет своего тестера

Reading time2 min
Views797
Pliq.meЧасто ли получается совмещать приятное с полезным? Например, бесплатно пользоваться новым удобным IT-сервисом и помогать разработчикам сделать его лучше? Pliq.me – тот самый случай.

Команда представленного ранее сервиса преобразования речи в текст для мобильных платформ недавно выпустила версии программы для Symbian и Windows Mobile во внешнее тестирование, целью которого является привлечение и запись всех желающих в закрытую тест-группу.
Читать дальше →
Total votes 17: ↑11 and ↓6+5
Comments10

Pliq.me крошка…поговори со мной!

Reading time2 min
Views690
image

Лучший способ набрать текст на телефоне – это сказать его.


С прошлой недели доступен в закрытом тестировании новый проект Pliq.me, позволяющий с помощью небольшого приложения и большой серверной части создавать голосом короткие текстовые сообщения на вашем телефоне для SMS, E-mail, напоминаний, записей в Twitter, Evernote или просто быстрых заметок.
Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments93

Всё ли сделал? А молоко — купил?

Reading time2 min
Views854
Почему такой странный заголовок? При чём тут молоко? Дело в том, что в сервисе голосового доступа Вселисделал появилась поддержка веб-приложения Remember the Milk. Фанатов сервиса я прошу подождать следующего поста, там мы расскажем подробно обо всех возможностях добавления записей голосом в РТМ. Этот пост посвящается тем, кто ещё не очень хорошо знает, что такое Remember the Milk.


Читать дальше →
Total votes 34: ↑26 and ↓8+18
Comments16

Быстрая манипуляция с System.Drawing.Bitmap

Reading time2 min
Views6.4K
Этот топик меня побудило написать статья о работе с System.Drawing.Bitmap http://habrahabr.ru/blogs/net/60085/. Мне часто приходилось сталкиваться в коде с попиксельной обработкой изображений для типовых операций, в то время как в .NET есть классы ColorMatrix, ColorMap, ImageAttributes для некоторых видов преобразований изображений.
Читать дальше →
Total votes 21: ↑17 and ↓4+13
Comments15

SMS, E-MAIL, Google Календарь, тайм менеджмент — при помощи голоса

Reading time3 min
Views1.5K


Добрый день друзья! Мы хотим представить Вам наш сервис Вселисделал в том виде, над которым мы работали последние полгода. Делая пробный проект за 7 дней, мы и подумать не могли, что это станет ключевым направлением нашей компании. Много всего произошло за последнее время. Но вот итоговая версия запущена, просим судить и жаловать.

Коротко о том, что Вы теперь можете делать голосом, просто позвонив с телефона на бесплатный номер:
...подробнее
Total votes 43: ↑40 and ↓3+37
Comments70

Создаем мероприятия в Google Calendar голосом с мобильного телефона.

Reading time1 min
Views5.5K
Теперь в ситуациях, когда нет интернета под рукой, можно заносить новые мероприятие в Google Календарь простым звонком с телефона.

Как это работает:
Читать дальше →
Total votes 57: ↑52 and ↓5+47
Comments83

Проект за 7 дней. Доводы в пользу быстрого старта.

Reading time1 min
Views894
Как показали прошедшие недели, подход 7 дней на запуск сервиса Вселисделал оправдал наши и не только ожидания, а значит надо двигаться дальше.
Читать дальше →
Total votes 37: ↑27 and ↓10+17
Comments23

Проект за 7 дней

Reading time1 min
Views1.5K
Мы работаем над одним проектом вот уже больше 2-х лет. Он занимает все рабочее и свободное время. И вот мы на финишной прямой и у нас все готово, но… подвел нас один поставщик (очень большая и медленная компания) последнего аппаратного модуля, без которого никуда. Ожидается готовность только в сентябре, октябре. В связи с этим появилось немного свободного времени. Где-то неделя.

И мы решили вытащить с дальней пыльной полки хорошую идею, на которую раньше просто не было времени.
Читать дальше →
Total votes 105: ↑93 and ↓12+81
Comments152

Конвертор цветов для хабры

Reading time2 min
Views582
Вчера опубликовал первую статью на хабре: http://www.habrahabr.ru/.
 
http://atreides07.habrahabr.ru/blog/27693.html 
 

Большое спасибо за отзывы, советы по хабре и рекомендации. В основном возникли проблемы с форматированием исходного кода. К сожалению основная проблема которая возникла – это цветовая схема исходного кода.
По какой то причине администрация сайта не ввела более полную поддержку HTMLи первая же проблема которая возникла – это форматирование HTML.
Причина заключается в том что атрибут styleне поддерживается, но зато поддерживается тег <fontcolor=’...’ />
Возможно многие уже реализовали свои утилиты для преобразования статей для хабры – я тоже решил присоединится и выложил небольшую утилитку для конвертирования HTML.

К примеру, если запостить следующий код в хабре:
 

    <p style=«color: red»>
        Красный
    </p>
    <p style=«color: blue»>
        Синий
        <span style=«color: green»>
            И зеленый в придачу )
        </span>
    </p>
 
То в результате мы получим:
Красный
Синий
И зеленый в придачу )

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

Специально для преобразования такого кода выложил небольшую утилитку по адресу:

http://htmlchangeonhabra.akhmed.ru/
– пока очень простенькая – по мере поступления рекомендаций – буду его совершенствовать.

Если ввести приведенный выше HTMLкод, мы получим код следующего содержания:


<FONT color=red>Красный <BR></FONT><FONT color=blue>Синий <FONT color=green>И зеленый в придачу ) </FONT><BR></FONT>


Теперь если этот полученный код запостим – получим желаемый результат:
Красный
Синий И зеленый в придачу )     

Кстати с помощью этой нехитрой утилитки удалось привести пост на хабре:
http://atreides07.habrahabr.ru/blog/27693.html
к виду, к которому изначально закладывал в своем блоге:
http://akhmed.ru/post/2007/10/LinqAndNTier.aspx.

Буду рад любым рекомендациям и найденным ошибкам :)
 
Адрес утилитки:

http://htmlchangeonhabra.akhmed.ru


 
Total votes 11: ↑4 and ↓7-3
Comments10

Основы Linq. Linq и n-уровневая архитектура

Reading time3 min
Views3.6K
Майкрософот предоставило новое легкое в освоении и очень мощное и гибко расширение языков .NET для обработки данных под названием Linq.

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

К примеру , есть таблица tbCustomers ((Int64)CustID, (String)Name, (int32)Age) и есть класс Customers:

publicclass Customers
{
    private Int64 _CustID;
    public Int64 CustID
    {
        get { return _CustID; }
        set { _CustID = value; }
    }

    private string _Name;
    public string Name
    {
        get { return _Name; }
        set { _Name = value; }
    }

    //Тип Int32 допускающее значение null
    private Int32? _Age;
    public Int32?Age
    {
        get { return _Age; }
        set { _Age = value; }
    }

    //Инициализаторы
    public Customers()
    {
    }
   
    public Customers(Int64 CustID, string Name, Int32? Age)
    {
        _CustID = CustID;
        _Name = Name;
        _Age = Age;
    }

    //Получение набора объектов из поставщика данных
    publicstatic List<Customers> GetCustomers()
    {
        return CustomersData.GetAllCustomers();
    }
}

и необходимо получить из поставщика набор объектов Customers.

Стандартное решение этого вопроса в .NET2.0 является использование пространства имен System.Data.SqlClient:

publicstatic class CustomersData
{
    //ИспользованиеSqlClient
    public static List<Customers> GetAllCustomers()
    {
        List<Customers> lst = new List<Customers>();
        using (SqlConnection conn = new SqlConnection(«Data Source=…»))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(«SELECT CustID, Name, Age FROM tbCustomers», conn);
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                lst.Add(new Customers((Int64)reader[«CustID»], (String)reader[«Name»], (Int32)?reader[«Age»]));
            }
        }
        return lst;
    }
}

При использовании Linqмы можем получить набор данных из анонимных типов используя инициализатор объекта, т.е.

publicstatic class CustomersData
{
    //ИспользованиеLinq
    public static List<Customers> GetAllCustomers()
    {
        LinqDcDataContext db=new LinqDcDataContext();
        IEnumerable<Customers> result = db.tbCustomers.Select(c => new Customers(c.CustID, c.Name, c.Age));
        //ПриводимнаборIEnumerable<Customers> кList<Customers>
        return new List<Customers>(result);
    }
}




Оригинал статьи Linq в n-уровневой архитектуре
Total votes 5: ↑5 and ↓0+5
Comments29
2

Information

Rating
2,999-th
Location
Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity