• Вместо конца света. Приложения победили браузер

      Может это и есть конец света? :) Но победитель долгих дискуссий о том, что удобно пользователям — браузер или отдельные приложения, кажется стал очевидным.

      Я попытался собрать в одном месте результаты исследований ведущих компаний, чтобы каждый из нас мог ответить на вопрос — нужно ли делать отдельное приложение для платформ, если уже есть сайт. Давайте посмотрим.

      image 
      Читать дальше →
    • 013.jpg или Принцессы не какают

        Вот уже совсем скоро конец света, дорогие мои айтишнички. Чтобы вы не боялись закрывать сегодня глазки, я расскажу вам добрую сказочку. О том, что даже после самого тёмного кончика светика, после самого дремучего апокалипсика, когда даже электрончики откажутся строем ходить по проводкам, для вас, дорогие айтишнички найдётся работёнка… Принцессы? Принцессы будут. И драконы тоже. Какая ж сказка без принцесс и драконов? Так что не боимся, закрываем глазоньки и слушаем волшебную сказочку...
        image
        — Именем Князя Питерского, давайте сюда декларацию. Что везем? Откуда?
        — Из Новосибирска. 256 мегабайт сертифицированных данных для Интернета Его Высокопревосходительства. Научные, метеорологические, новости, деловая и частная корреспонденция, — доложила я, зная, что таможня шутить не любит.
        — Открывайте, посмотрим.
        — Что, все 256 мегабайт смотреть будете?
        Открывайте, разберемся...
      • Качественно, быстро, недорого — разделяй и властвуй

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

          Все ниже написанное касается проектов, которые изначально не ищут инвесторов и их путь начинается не с презентаций и бизнес-планов, а с покупки домена и двух разработчиков. В свою очередь это не означает полного отсутствия планирования и бизнес-анализа.
          Читать дальше →
        • Использование async и await в C# — лучшие практики

          • Перевод
          • Tutorial

          Ключевые слова async и await, введённые в C# 5.0, значительно упрощают асинхронное программирование. Они также скрывают за собой некоторые сложности, которые, если вы потеряете бдительность, могут добавить проблем в ваш код. Описанные ниже практики пригодятся вам, если вы создаёте асинхронный код для .NET приложений.
          Читать дальше →
        • Вебсокеты: боевое применение

            imageВебсокеты — это прогрессивный стандарт полнодуплексной (двусторонней) связи с сервером по TCP-соединению, совместимый с HTTP. Он позволяет организовывать живой обмен сообщениями между браузером и веб-сервером в реальном времени, причем совершенно иным способом, нежели привычная схема «запрос URL — ответ». Когда два года назад я присматривался к этому стандарту, он был еще в зачаточном состоянии. Существовал лишь неутвержденный набросок черновика и экспериментальная поддержка некоторыми браузерами и веб-серверами, причем в Файрфоксе он был по умолчанию отключен из-за проблем с безопасностью. Однако теперь ситуация изменилась. Стандарт приобрел несколько ревизий (в том числе без обратной совместимости), получил статус RFC (6455) и избавился от детских болезней. Во всех современных браузерах, включая IE10, заявлена поддержка одной из версий протокола, и есть вполне готовые к промышленному использованию веб-серверы.

            Я решил, что настало время попробовать это на живом проекте. И теперь делюсь, что из этого вышло.
            Что вышло
          • Практика разработки мобильных сайтов

              Ранней осенью этого года мы с коллегами из CMS Magazine провели опрос, в котором приняли участие и поделились своим опытом и мнением всего более 500 веб-студий и агентств, за что им огромное спасибо.
              Часть результатов мы публикуем здесь, надеясь на то, что многие из вас заинтересуются этими данными и оставят свои комментарии или будут использовать их по необходимости в докладах/на встречах и так далее.
              И да, внимание: под катом много картинок!
              Читать дальше →
            • Загрузка файлов на сервер в 2012 году

                В один прекрасный момент передо мной встала задача создать API для работы с файлами на клиенте и их загрузки на сервер.

                Я работаю в Почте Mail.Ru, и моей прямой обязанностью является работа с JavaScript во всех его проявлениях. Прикрепление файлов к письму — одна из основных функций любой почты. Мы тут не исключение: у нас уже был Flash-загрузчик, который вполне исправно работал и долгое время нас устраивал. Однако у него был ряд недостатков. Вся верстка, графика, бизнес-логика, и даже локализация были зашиты в нем, в результате чего решение было громоздким, а внести правки мог только Flash-разработчик. В какой-то момент мы поняли, что нам необходим новый механизм. О том, как его создать, пойдет речь в этой статье.

                Читать дальше →
              • Подводные камни JavaScript

                  Мне очень нравится JavaScript и я считаю его мощным и удобным. Но для большинства начинающих JS-программистов, много проблем создаёт недопонимание аспектов языка. Часто конструкции языка ведут себя «нелогично». В данной статье я хочу привести примеры «граблей», на которые я наступил; объяснить поведение языка и дать пару советов.

                  Читать дальше →
                • Применение Data mining в продажах

                    Существует множество компаний, которые продают товары клиентам или оказывают какие-то услуги. Часто продавцы интуитивно принимают решения, какой именно товар из всей существующей линейки лучше подходит клиенту. Также интуитивно определяется, какой массив клиентов более интересен для компании, а для каких клиентов продажа и дальнейшее обслуживание будут слишком затратные и невыгодные.
                    Для технологичного понимания всех этих вопросов хорошо подходит анализ информации с помощью технологии Data mining. Автоматизируя процесс сегментации клиентов с помощью кластеризации Data mining, компания может найти ответы на множество вопросов.
                    Рассмотрим вариант, когда компания занимается продажей товаров или услуг и дальнейшим послепродажным обслуживанием. Соответственно у компании есть потенциальные клиенты, которым осуществляются продажи. Также есть клиенты, которые обслуживаются или были ранее на обслуживании, т.е. которым ранее уже продавали. Для простоты будем их называть обслуживаемыми клиентами.
                    Кратко опишу цель и идею. Для анализа необходимо взять несколько показателей (15-20), которые есть у потенциальных и обслуживаемых клиентов одновременно. Также надо выбрать 2-3 показателя, которые есть только у обслуживаемых клиентов – это целевые показатели. Провести анализ кластеризации Data mining на массиве обслуживаемых клиентов. На выходе получим несколько кластеров со своими характеристиками. Далее кластеры группируем в сегменты по целевым показателям и даем какие-то понятные для маркетологов определения. Полученную модель анализируем, и полученные кластеры проецируем на потенциальных клиентов. На выходе получаем просегментированных потенциальных клиентов. На основании полученных сегментов можно выстроить стратегию и методологию продаж для каждого сегмента клиентов.
                    Рассмотрим подробнее данную методику и последовательность шагов для достижения результата.
                    Читать дальше →
                    • +23
                    • 16k
                    • 6
                  • Облачная защита для .NET приложений

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

                      Да, C++ был почти идеальным языком в этом плане. Но времена меняются, старые технологии уходят и на их место приходят новые более продуктивные и удобные. Так наша команда перешла на .NET. Но в обмен на простоту разработки и удобство отладки, мы в придачу получили в довесок и простоту декомпиляции нашего ПО. Теперь хакер мог не просто обойти лицензионные ограничения, но и получить почти полный исходник нашей программы просто скормив ее рефлектору.
                      Разумеется, в качестве решения этой проблемы на рынке было представлено множество различных обфускаторов. Но, как ни странно, большинство из них разочаровывали меня сразу с двух сторон: и ценовой политикой (даже минимальная лицензия некоторых превосходила стоимость нашего ПО в несколько раз), и «интеллектуальностью» алгоритма. Так, после некоторых обфускаторов, умудрялись падать даже простые WinForms приложения. Что же касалось WPF, то без долгого-долгого черного шаманства над эксклудами, запустить среднего размера программу не представлялось возможным в принципе.

                      Так сформировалось понимание проблемы и четкое желание создать свой продукт, сводящий озвученные выше проблемы к минимуму. И появился SaaS обфускатор и протектор .NET кода AppFuscator.com

                      Обфускатор и протектор .NET кода appfuscator


                      Читать дальше →
                    • Что такое информационное ожирение и как с ним бороться

                      • Перевод
                      imageОт переводчика. Занимаясь созданием и внедрением системы электронного архива, мы не раз сталкивались с ситуациями, когда организации вводят документы в систему без разбора, не уделяя должного внимания экспертизе их ценности. Об этом уже писали. В обсуждениях наших предыдущих публикаций по данному вопросу большинство участников отстаивали следующий взгляд: сохранять можно всю поступающую информацию, она в любой момент может пригодиться. Насколько обоснован такой подход в масштабах крупной организации. Что дешевле и эффективнее: сохранять все, что возможно сохранить — или же грамотно управлять информацией, своевременно удаляя все ненужное? Любопытную статью на эту тему мы нашли в блоге Джорджа Парападакиса, ECM-специалиста из компании IBM. Ее перевод мы и предлагаем вниманию наших читателей.

                      Читать дальше →
                    • Когда надо говорить правду конкуренту: показания под присягой в США

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

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

                        Итак, откуда всплывают подобные показания?
                      • Миллион одновременных соединений на Node.js



                          TL;DR:


                          • Node.js v0.8 позволяет обрабатывать 1 млн одновременных HTTP Comet соединений на Intel Core i7 Quad/16 Gb RAM практически без дополнительных настроек.
                          • На 1 соединение тратится чуть больше 10 Kb памяти (4.1 Kb Javascript Heap + 2.2 Kb Node.js Native + 3.8 Kb Kernel)..
                          • V8 Garbage Collector не рассчитан на управление > ~500Mb памяти. При превышении нужно переходить на альтернативный режим сборки мусора, иначе «отзывчивость» сервера сильно уменьшается.
                          • Подобный опыт можно (и нужно!) без особых затрат повторить самому (см. под катом).

                          Читать дальше →
                        • XAML: Вложенные конвертеры

                            Интро

                            В XAML (SilverLight /Wpf /Metro) конвертеры используются для самых различных целей: приведение типов, форматирование строк, калькуляция скалярного значения сложного объекта. В рамках проекта мы можем создать очень много классов-конвертеров, решающих смежные задачи (вычисление состояния заказа и конвертация его в Visibility, конвертация состояния заказа в Cursor, конвертация булевого значения в Visibility/Invisibility и т.д.). Нетривиальная ситуация: мы написали конвертер для необычно сложного форматирования TimeSpan, и теперь требуется форматировать Duration таким же образом – необходимо писать аналогичный конвертер, но уже с предварительной распаковкой TimeSpan из Duration. Вариантов преобразования строк может быть множество, и для всех преобразований потребуется такое же множество конвертеров.
                            Естественно, стараясь обобщить код, мы разбиваем конвертацию на более мелкие процедуры, и, как следствие, у нас встречаются классы-конвертеры, состоящие из двух строчек кода, используемые только один раз.
                            Многие не знают, что для упрощения ситуации и уменьшения количества строчек кода, возможно комбинирование преобразований не в классах конвертеров, но в XAML разметке, путем создания цепочек конвертеров. Для этого необходимо написать свой абстрактный конвертер, от которого мы будем наследовать все наши преобразования.
                            Читать дальше →
                            • +11
                            • 3,6k
                            • 6
                          • Мессенджер ВКонтакте для Windows Phone, призовой фонд 2 000 000 рублей!

                              ВКонтакте проводит конкурс на создание мессенджера для Windows Phone на базе существующего API.
                              Дата начала конкурса – 1 августа 2012 года, дата окончания приема работ – 15 сентября 2012 года (21:00).
                              Призовой фонд – 2 000 000 рублей.

                              Группа конкурса: http://vk.com/wp_contest

                              Условия конкурса (http://vk.com/page-41437534_43978998):
                              Задание
                              Мы нарисовали все основные экраны и элементы интерфейса для создания мессенджера для смартфонов на базе Windows Phone с использованием платформы ВКонтакте. Полное описание функциональности доступно на отдельной странице.

                              Ваша задача
                              Читать дальше →
                            • Торговля знает, когда вы ждете ребенка

                                Однажды в магазин Target зашел мужчина и потребовал вызвать менеджера. В своих руках он сжимал огромную кипу купонов магазина, полученных его дочерью.

                                «Моя дочь получила это по почте! – прокричал он. – Она еще в школу ходит, а вы посылаете ей купоны на детскую одежду и памперсы? Да как вы смеете! Вы хотите таким способом побудить школьниц рожать?»

                                Менеджер посмотрел на пачку купонов на материнскую одежду, детскую мебель – действительно, они были адресованы дочери рассерженного мужчины. Менеджер принес свои извинения.

                                Через несколько дней он позвонил мужчине, чтобы еще раз извиниться. По телефону голос отца звучал растерянно. «Знаете, я серьезно поговорил с дочерью, и выяснилось, что в моем доме происходило то, о чем я совершенно не догадывался. Она рожает в августе. Примите мои извинения».

                                Как Target узнал, что дочь беременна до того, как об этом стало известно ее отцу? Ответ прост – благодаря системе прогнозирования беременности (pregnancy prediction system), разработанной аналитиком компании Эндрю Полом. Под катом – обо всем по порядку.
                                Читать дальше →
                              • Быстрый старт первого проекта в Windows Azure. Веб-сайты

                                  В этой статье из пяти частей показано, как: создать веб-сайт для Windows Azure из галереи образов, создать веб-сайт и развернуть собственный ASP.NET MVC 4 проект, масштабировать веб-сайт. Веб-сайты являются новой функциональностью платформы и находятся в стадии Preview — соответственно, требуется регистрация для доступа к этой функциональности.
                                  Читать дальше →
                                  • +17
                                  • 9,8k
                                  • 8
                                • Алгоритм проведения IT собеседования

                                    В сегодняшнем посте я хочу обсудить тему — эффективного IT собеседования.
                                    Она родилась из комментария к одному из моих прошлых постов: «Было бы здорово почитать развернутый рассказ про то, как собеседовать людей.» Собственно, сказано — сделано!

                                    Проведение себеседования также тривиально, как этот кубик рубик, если конечно вам не важен результат.

                                    image

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

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

                                    Если вам эта тема интересна и есть чем поделится с хабрачитателями — прошу под кат.
                                    + Бонус в конце статьи.
                                    Читать дальше →
                                  • Оповещение о новых письмах в Gmail по SMS средствами Google Calendar + Google Apps Script

                                    • Tutorial
                                    Увы, но этот способ перестанет работать с 27-го июня 2015, т.к. Google отключает функцию sms-оповещений для календаря.
                                    support.google.com/calendar/answer/45351?hl=ru

                                    Важно! SMS-оповещения будут отключены 27 июня
                                    С 27 июня 2015 года вы больше не будете получать SMS-оповещения от Google Календаря. Функция SMS-оповещений была внедрена ещё до широкого распространения смартфонов. Однако современные мобильные устройства позволяют получать оповещения в более удобном формате и даже в офлайн-режиме.
                                    Для просмотра оповещений вы можете использовать приложение календаря, которое было установлено на смартфоне по умолчанию, либо скачать Google Календарь для Android или iPhone. Подробнее об оповещениях…
                                    Примечание. Это изменение не коснется пользователей Google Apps for Work, Education и Government.




                                    Хочу поделиться с Харбра-обществом полезным, с моей точки зрения, лайвхаком: уведомления по SMS о новой почте в ящике Gmail. Реализуется это небольшим скриптом, который живет и работает в Google Drive (бывшие Google Docs).

                                    Принцип работы следующий: скрипт по таймеру проверяет папку «Входящие» в почтовом ящике и если обнаруживает новые письма, то создает в google calendar событие с именем, как тема письма, и включает для него SMS уведомление. В результате вам приходит SMS сообщение следующего содержания:

                                    Напоминание: Тема письма @ дата и время

                                    Подробности реализации, как всегда, под «катом».
                                    Подробности
                                  • Windows Azure: In-Memory Distributed Cache

                                    Совсем недавно Microsoft презентовал большой пакет обновлений для платформы Windows Azure. В список нововведений входило долгожданное обновление Windows Azure Caching. Раньше разработчик сталкивался с некоторыми трудностями при работе с системой распределенного кэширования — кэш работал очень медленно. Так как Windows Azure хранил данные кэша на отдельных серверах, то на запрос выборки данных уходило порядка 30-100 мс, что является непозволительным для системы, ускоряющей доступ к данным.
                                    Итак, что же изменилось в системе кэширования?
                                    Читать дальше →