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


      Сегодня уже есть множество демонстрационных проектов под 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/. Чуть позже постараюсь оформить домашнюю страницу поприличнее.
    • Порнография с точки зрения эволюционной психологии

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

        Между тем, сколько-нибудь заслуживающих доверия данных о влиянии порнографии на общественное и личное здоровье в этих обсуждениях нет; более того, мои попытки по-быстрому найти какие-то вменяемые данные в интернете не увенчались успехом. В поисках ответов на вопросы мне пришлось погрузиться довольно глубоко в научные исследования, и кое-что я в итоге нашёл. Краткий синопсис современных научных взглядов на порнографию и её влияние на человека будет дан под катом после небольшого FAQ'а.

        Вопрос: картинки будут?
        Ответ: будут.

        Вопрос: какое отношение этот топик имеет к Хабру?
        Ответ: он интересен читателям Хабра.

        Вопрос: нет, всё-таки, какое отношение имеет топик к тематике Хабра?
        Ответ: никакого; просто я считаю, что Хабр — это, прежде всего, определённая аудитория, а не тематика.

        Вопрос: почему в блог «Интернет»?
        Ответ: потому что Internet is for porn.

        Если Вам не исполнилось 18 лет, под кат лучше не ходить
      • Видео всех лекций с «Курсов информационных технологий» от «Яндекса»

          Для тех, кто не смог посетить Курсы информационных технологий, видеоролики всех лекций выложены в свободный доступ. Это лекции по полтора-два часа на базовые темы: операционные системы; архитектура ЭВМ; устройство GNU/Linux; системы хранения данных; файловые системы; сети и протоколы; виртуализация; безопасность.
          Читать дальше →
        • Стенограмма доклада про Фантом-ОС, сделанного Дмитрием Завалишиным на ADD-2010

            Аннотация


            Дмитрий Завалишин рассказал о текущем состоянии в разработке своего любимого детища — оригинальной операционной системы PhantomOS, близкой по концепции Microsoft Singularity, но при этом open-source (опубликована большая часть исходных кодов этой операционной системы).

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

              А как Вы тренируете креативное мышление?



              Дизайнер Robert Butkovic взялся нарисовать 100 логотипов за 100 дней, на разработку логотипа он отвел себе не более 100 минут. Большинство логотипов смахивает на иллюстрации, некоторым явно не хватает профессионализма, но учитывая, что на разработку логотипа отводилось мало времени, дизайнер позволил себе некоторую свободу, на первое место вышла идея, а не ее реализация. Такой способ найти себя внушает уважение.

              BRAINSTORMING
              День 004
              Время работы: 80 мин
              image
              SPAVANJE
              День 021
              Время работы: 3 мин
              image
              Читать дальше →
            • Чем кормить ИИ (end)

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

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

              Немного теории


              Человек получает посредством зрения миллионы бит в секунду, осязание дает человеку сотни тысяч бит в секунду, а с помощью слуха человек получает десятки тысяч бит в секунду.
              Остальные каналы ощущений дают несравнимо меньший объем информации, очень сложны для реализации, медленны и не имеют возможности для общения(вряд ли можно построить ИИ на основе запаха).
              Читать дальше →
            • Интеграция с ВКонтакте на базе Open API

              Социальная сеть ВКонтакте предоставляет широкие возможности для интеграции со сторонними сайтами. В основном эти возможности представлены уже готовыми виджетами. Однако, есть еще и Open API, которое позволяет не только авторизовать пользователя, но и выполнить любой метод, доступный приложениям ВКонтакте (ВКонтакте API).
              Читать дальше →
            • Обрабатываем картинки средствами Photoshop и ExtendScript Toolkit

                Часто нам бывает надо сделать что-то с пачкой картинок. Есть несколько способов добиться этого:
                • используя ImageMagick – очень удобная консольная утилита, много чего умеющая
                • на The GIMP – там есть Scheme (диалект lisp-а) и Python
                • штатными средствами: PHP+gd / Powershell+System.Drawing / Python + PIL
                • в photoshop-е на JScript, VBScript или AppleScript
                Плюсы минусы последнего способа рассмотрим под катом. В качестве бонуса посмотрим на недокументированное API Photoshop-а.
                Читать дальше →
              • AR.Drone долетел до Москвы

                  В офисе AR Door появился долгожданный гаджет – AR.Drone.

                  Девайс был представлен еще в январе 2010 г. на конференции International Consumer Electronics Show (CES). И как только AR.Drone поступил в продажу, а именно в начале сентября, решили приобрести вертушку. Покупали через Ebay в Гонконге, сейчас можно заказать на амазоне вместе с запчастями.

                  Цена вопроса – 350$ с международной доставкой.

                  AR.Drone – это квадро-вертолет на дистанционном управлении, пилотируемый с помощью приложения для iPhone/iPod/iPad.

                  Программа обеспечивает трансляцию видео в режиме реального времени со встроенной камеры вертолета, и, что самое важное для нас, поддерживает дополненную реальность. Пара игрушек уже в разработке, а так же клиенты под android и windows 7 phone.

                  много больших фоток
                • Бесплатный дизайн блога интересным людям разных профессий!

                    Я хочу немного абстрагироваться от заказчиков, которые платят деньги или не платят, за дизайн сайтов, блогов, интернет-магазинов, промо-страниц, виджетов, иконок, картинок и так далее. Хочу, как раньше рисовать и не брать за это деньги. Но есть одно условие: заключается оно в том, что я готова рисовать один раз в месяц, один индивидуальный дизайн блога для человека, чья история о себе, чьи жизненные принципы и увлечения мне понравятся!
                    Для этого, я готова общаться и читать «истории о себе» интересных людей! Также как и у заказчиков, я готова ознакомиться с «брифом», пожеланиями, относительно дизайна, но всегда последнее слово в конечном дизайне останется за мной!

                    Никаких авторских прав за мной не будет оставаться, только если ссылка на мой блог (http://webstandart.info/), или просто «дизайнер Ксюша Блёскина»
                    С 1 августа до 15 августа (и так каждый месяц) я буду ждать письма с рассказами о себе на почту freeblogdesign собака yandex.ru, обязательно оставляйте контакты для связи.
                    Все макеты я буду публиковать у себя в блоге.
                  • Transformice: лемминги с реальной физикой онлайн

                      Transformice — это фактически реинкарнация знаменитых леммингов в онлайн.
                      UPD: Теперь и RU сервер!

                      Кратко об этой замечательной браузерной игре:
                      Все, как и в старых добрых леммингах, только на этот раз в главной роли мыши, одной из которых и предстоит управлять Вам. Одная из мышей особенная — шаман, именно он и отвечает за доставку остальных мышей в целости и сохранности в их норы. Для этого у шамана есть целый набор предметов: от досок и коробок а-ля Crayon Physics Deluxe до взрывающихся мячей и «мотиваторов».
                      Небольшое отличие от леммингов — по пути в нору обязательно необходимо оторвать кусок сыра. Больше очков получит тот, кто сделал это раньше и сумел донести сыр в нору.

                      Читать дальше →
                    • SSH-туннели: безопасно через сервер

                        Доброго времени суток. Попробуем дополнить и расширить статью SSH-туннели — пробрасываем порт. Рассмотренными примерами мы убьем сразу 2 задачи:
                        1. Межсетевая коммуникация через промежуточный сервер, когда между сетями пути нет.
                        2. Создание безопасного соединения через не доверенную сеть.
                        Читать дальше →
                        • +11
                        • 2.2k
                        • 7
                      • Кроссдоменный AJAX на основе CSS

                          Недавно столкнулся с проблемой как передать данные с сервера A в
                          javascript на сервер B, если на сервере B серверный код писать нельзя,
                          а на А можно.
                          И нашел элегантное решение.
                          Суть решения в том, что для использования предлагается объект
                          CSSHttpRequest, предоставляющий выполнять AJAX-запросы на базе CSS. Это
                          работает, поскольку CSS не имеет ограничений безопасности, которые имеет
                          стандартный объект XMLHttpRequest.
                          В отличие от JSONP имеет ограничение только на GET-запросы. Также есть некоторые проблемы совместимости с браузерами
                          Код выглядит следующим образом.
                          CSSHttpRequest.get(<br> "http://www.nb.io/hacks/csshttprequest/hello-world/",<br> function(response) { alert(response); }<br> );

                          Данные кодируются на сервере в виде 2-х килобайтных цепочек. Ответ
                          возвращается в в виде:
                           #c0 { background: url(data:,Hello%20World!); }<br> #c1 { background: url(data:,I’m%20text%20encoded%20in%20CSS!); }<br> #c2 { background: url(data:,I%20like%20arts%20and%20crafts.); }

                          На сервере B с помощью javascript создается невидимый IFRAME, в который
                          и загружается CSS.
                          Это также работает и в XHTML.

                          Данное решение совместимо с IE6+, Firefox 2+, Safari 3+, iPhone.
                          Вид лицензии: Apache License
                        • «Правильное» тестовое задание для соискателя-программиста

                            Занимаясь одбором кандидатов на вакансию программиста, столкнулся с проблемой — подобрать хорошее тестовое задание. Цель — увидеть, программист ли передо мной или человек, хорошо знающий фреймворк\язык\технллогию. Поясню — программист, это человек, которые может решить нетривиальную проблему. Сделать сайт-блог, даже e-commerce сейчас является тривиальной проблемой, на это способен любой junior. Natural-born программистдумает по-другому.

                            под катом образец тестового задания

                            Читать дальше →
                          • Envatо которая «Must Have» для всех и каждого

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


                              Дальнейший текст про логотипы стили и вдохновение я вырезал, поскольку после завершения поста обнаружил что в процессе написания и сбора информации более ценными оказались ресурсы Envatо, которые расширяют источники вдохновения, образования и содружества во многих отраслях графики, фотографии, эффектов, музыки, анимации. web разработке и фриланса и к удивлению не была описана на Хабре.

                              image
                              Читать дальше →
                            • Математический способ определения самых влиятельных юзеров

                                image
                                Ученые предложили новый метод определения самых влиятельных пользователей социальных сетей — оказалось, что количество связей конкретного индивидуума слабо сказывается на его способности распространять информацию. В качестве одного из модельных примеров выступала сеть, образованная дружественными аккаунтами в ЖЖ. Статья ученых пока нигде не опубликована, однако ее препринт доступен на сайте arXiv.org.
                                Читать дальше →
                              • Занимательная наука

                                  Наткнулся недавно на интереснейший канал Стива Спанглера на YouTube про занимательные научные эксперименты. Ролики короткие, зрелищные и местами довольно смешные — вот и решил поделиться с хабрасообществом, на мой взгляд, лучшими из тех нескольких десятков, которые успел просмотреть.




                                  Читать дальше →
                                • Разговор на лесной опушке

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

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

                                    Два человека смотрели друг на друга. Первым нарушил молчание человек с велосипедом. Оставив его наполовину освобожденным из куста орешника, он просто сказал: «Здравствуй, Билл». А человек с ноутбуком сказал: «Здравствуй, Линус».
                                    Читать дальше →
                                  • Линукс: используем 2 звуковые карты

                                      Так случилось, что у меня наушники со встроенной звуковой картой и USB подключением. По установке Gentoo возникла необходимость упорядочить использование нужной мне звуковухи в той или иной программе. Оказалось, что необходим вдумчивый диалог с Гуглем.
                                      Что интересно, имеет место быть полный разнобой конфигурационных настроек для разных программ и неочевидность параметров настройки для ОС.

                                      Далее приведу свой файл "/etc/modprobe.d/alsa.conf" а также способы задания нужной звуковухи в mplayer, mpg321, amarok и skype.
                                      Как говориться, добро пожаловать в наш зверинец.
                                      Читать дальше →