Pull to refresh
169
0
Alexander Kouznetsov @unconnected

User

Send message

Windows Azure Mobile Services custom API на примере скрам-доски

Reading time11 min
Views5.4K
В этой статье я хочу поделиться опытом создания велосипеда простой скрам-доски с бекендом в облаке на базе Windows Azure Mobile Services и Azure Cloud Storage.
Читать дальше →
Total votes 14: ↑10 and ↓4+6
Comments1

Быть менеджером среднего звена — не проблема, если вы готовы к этому

Reading time8 min
Views47K
Точнее было бы сказать, если у вас есть способности к этому.

В продолжение темы, затронутой в этом посте.

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

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


Удивительно, как написанное фантастом претворяется в жизнь. Сегодня некоторые ученые (Сергей Савельев) говорят о возможности сделать систему анализа врожденных способностей и талантов человека, другие более аккуратны в оценках (Дробышевский мне ответил на вопрос, что есть предрасположенности врожденные, но они перекрываются средой). В одном все сходятся, что именно мозг определяет способности человека и то, как у него пойдет та или иная деятельность; и что мозги у нас у всех уникальные и постоянно изменяющиеся (связи постоянно перестраиваются).
Читать дальше →
Total votes 46: ↑40 and ↓6+34
Comments25

Старт Песочницы чемпионата Russian AI Cup

Reading time2 min
Views13K


Всем привет!

На прошлой неделе мы завершили открытое бета-тестирование чемпионата по программированию искусственного интеллекта Russian AI Cup. Участникам предстоит выступить в роли командира небольшого отряда бойцов в пошаговой тактической игре — программировать искусственный интеллект и стратегии поведения для отряда бойцов на одном из языков программирования: С++, Java, C#, Python или Pascal. Саму игру в этом году мы назвали CodeTroopers.
Читать дальше →
Total votes 62: ↑51 and ↓11+40
Comments24

Неявные предикаты

Reading time7 min
Views22K
Речь здесь пойдёт о некоторых аспектах компьютерной безопасности, связанных с запутыванием кода программы. Именно это мне было интересно в связи с разработкой обфускатора .NET приложений – программы для защиты .NET кода от взлома. Есть и другая – тёмная сторона: запутыванием кода очень интересуются разработчики вирусов и других нехороших штук, но нам они неинтересны.


Эмуляторы


Итак, Вы придумали супер алгоритм для запутывания кода программы. При декомпиляции код выглядит просто вырвиглазно и никто точно такое анализировать не будет. Казалось: победа! Но нет. Естественно обфусцированный код никто анализировать не будет… руками. Хакер поймёт как вы код запутывали и напишет «распутывалку». Если Ваш алгоритм был достаточно силён, то хакеру придётся писать собственный эмулятор, но и это не такая проблема как может показаться на первый взгляд – в сети есть доступные эмуляторы и даже специально написанные именно для целей взлома.

Из теории компьютерных наук известно, что не существует и никогда не будет существовать алгоритма, определяющего остановится ли программа или будет работать вечно – так называемая «проблема останова». Это гарантирует, что хакерский эмулятор, распутывающий обфусцированную программу, будет делать это как бы «локально»: он не сможет узнать состояние и значение всех переменных, задействованных в каждом участке кода и поэтому в точках условного ветвления часто будет полагать, что возможны все варианты хода программы. Вот тут-то на ум и приходит решение: запутанный код будет наполнен переходами по условиям, которые будут всегда истинны, но проэмулировать и понять это будет трудно. Примерно вот так:

if ((x+x & 1) == 0)
  good_code
else
  мусор


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

Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments31

Разработка Windows 8.1 приложений на XAML/С#. Часть 1. Делаем основной экран приложения на основе Hub

Reading time10 min
Views26K


Этой статьей мы открываем серию материалов, посвященных новым возможностям разработки приложений для Windows 8.1 на XAML/C#. Мы планируем последовательно пройти путь от пустого шаблона до работающего приложения «Каталог товаров».

Первая статья посвящена созданию простой версии приложения на базе стандартного шаблона проекта Hub App в Visual Studio 2013. В ней мы научимся реализовывать удобные и разнообразные стартовые экраны для ваших приложений.

Читать дальше →
Total votes 46: ↑35 and ↓11+24
Comments17

Windows Azure Management Libraries — управление облачной инфраструктурой из .NET-приложений

Reading time12 min
Views3.7K
image

В этой статье дается описание библиотек Windows Azure Management Libraries, выпущенных недавно и предназначенных для управления из .NET-приложений облачной инфраструктурой, сервисами и элементами хранилища размещенными в Windows Azure. Описание возможностей библиотек дается на примерах кода WPF-приложения.

Что такое Windows Azure Management Libraries?


С выпуском библиотек Windows Azure Management Libraries широкая часть облачной инфраструктуры Windows Azure может быть доступна и автоматизирована из приложений на .NET. Эти библиотеки работают поверх функций открытого REST API платформы и их выпуск предназначен для облегчения работы разработчика с облачной инфраструктурой.

Превью библиотек доступное сегодня, включает в себя поддержку облачных сервисов (Cloud Services), виртуальных машин и сетей, веб-сайтов (Web Sites), учетных записей хранилищ и таких инфраструктурных элементов как группы доступности (Affinity Groups).

Мы потратили много времени на проектирование естественного .NET Framework API, который прозрачно представляет собой лежащий ниже открытый REST API. Для нас было очень важным представить эти сервисы с помощью современных знакомых разработчикам подходов используемых на платформе .NET:

  • поддержка Portable Class Library (PCL) для .NET Framework 4.5, Windows Phone 8, Windows Store и Silverlight;
  • распространение в виде пакетов NuGet с минимумом зависимостей для облегчения версионности;
  • поддержка асинхронности и асинхронных операций на основе элементов платформы async/await (с легкой возможностью реализовать синхронные перегруженные методы);
  • наличие общей инфраструктуры для единой обработки ошибок, трассировки, конфигурации и управления пайплайном HTTP;
  • спроектировано для легкости тестирования и использования мокинга (mocking);
  • построено на базе популярных библиотек, таких как HttpClient и Json.NET.

Эти пакеты открывают перед вами богатые возможности и простоту управления, автоматизации, развертывания и тестирования облачной инфраструктуры WIndows Azure. С помощью них вы сможете управлять виртуальными машинами, облачными сервисами, виртуальными сетями, веб-сайтами и ключевыми инфраструктурными компонентами платформы.
Читать дальше →
Total votes 23: ↑15 and ↓8+7
Comments0

Работа с SQL Server в сценариях гибридного Облака

Reading time5 min
Views4.4K
Гибридное Облако является достаточно привлекательной моделью при внедрении облачных вычислений в информационные системы предприятий, поскольку этот подход сочетает преимущества публичного и частного облака. С одной стороны, достигаются возможности гибкого привлечения внешних ресурсов по мере надобности и сокращения инфраструктурных издержек, с другой — сохраняется полный контроль за данными и приложениями, которые предприятие не хочет отдавать наружу. Однако в подобном сценарии мы неизбежно сталкиваемся с задачей интеграции данных из различных источников. Предположим, имеется таблица клиентов, которую мы вертикально разбили на две части. Обезличенная часть была отнесена в публичное облако, а персонифицирующая клиентов информация осталась в локальной базе. Для целостной обработки внутри приложения необходимо снова соединить обе части по CustomerID. Возможны различные способы это сделать. Условно их можно разбить на две большие категории: объединение данных на уровне on-premise сервера БД, который в этом случае будет выступать единой точкой входа для доступа к локальным и удаленным данным, и внутри бизнес-логики. В этой статье будет рассмотрен первый подход.
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments2

Приложения для Firefox OS запустятся на Android, Windows, Mac OS X и Linux

Reading time1 min
Views9.8K
Инженеры Firefox OS в своём блоге сообщили о том, что приложения для их операционной системы, выполненные по технологии Open Web Apps (другими словами, просто на HTML+JS+CSS) станут, условно говоря, «кросс-платформенными» и будут работать на целом ряде сторонних ОС без изменений исходного кода («like a native apps»). Правда, приложение всё-таки должно уметь приспосабливаться к размерам экрана и аппаратной части устройства.

На демо-видео показан процесс запуска некоторого приложения Short Clock, которое, как можно понять, не требует никаких пользовательских привилегий. Видно, что на Android, Windows, Mac OS и Linux происходит примерно следующее: приложение устанавливается из Firefox Marketplace из браузера в соответствующей операционной системе (при этом оно автоматически адаптируется к ней — происходит «repackage») и запускается «как нативное приложение». При этом подчёркивается, что «изменений исходного кода — ноль».



Примечательно то, что JavaScript в OWA-приложении может работать не только в пределах своего HTML, а и обращаться к существующим hardware API на каждой из перечисленных платформ. На видео видно, как в Android устанавливается приложение, требующее ряда привилегий — доступа к GPS и Vibration API, к примеру.
Источник
Total votes 25: ↑23 and ↓2+21
Comments13

Unit тесты на практике

Reading time12 min
Views146K
В последнее время появилось и продолжает появляться достаточно много публикаций на тему разработки через тестирование. Тема достаточно интересная и стоит того, чтобы посвятить её исследованию какую-то часть своего времени. В нашей команде мы используем модульное тестирование уже на протяжении года. В этой статье я хочу рассказать о том, что получилось и какой опыт в итоге мы приобрели.

Сразу оговорюсь, что примеры приводятся применительно к языку C# и платформе .NET. Соответственно, в других языках/платформах подходы и реализации могут отличаться.

Итак…
Читать дальше →
Total votes 34: ↑31 and ↓3+28
Comments56

Создавайте продукты, которые не масштабируются

Reading time16 min
Views70K
Один из наиболее универсальных советов, которые мы даем в Y Combinator, это браться за сложную работу. Многие начинающие основатели верят, что стартапы или «взлетают» или нет. Вы создаете что-то, делаете это доступным, и, если вы придумали самую лучшую мышеловку, люди, как и было обещано, сами придут к вам. Или не придут, в таком случае у вас нет рынка. [1]

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

Привлечение клиентов


Самая распространенная сложная работа, за которую основатели должны браться на старте, это самостоятельное привлечение пользователей. Этим должны заниматься почти все стартапы. Нельзя ждать, когда пользователи к вам придут. Вы должны сами пойти и привести их.
Читать дальше →
Total votes 95: ↑86 and ↓9+77
Comments12

Build 2013 для XAML/C# разработчиков. Обновления в Windows 8.1 и обзор полезных докладов для XAML/C# разработчиков

Reading time5 min
Views13K


В этом коротком обзоре я предполагаю рассмотреть ключевые нововведения и улучшения в Windows 8.1 для XAML/C# разработчика. В завершение я приведу подборку докладов с конференции Build 2013, полезных для XAML/C# разработчиков.
Читать дальше →
Total votes 40: ↑30 and ↓10+20
Comments15

Оптимизация сайта для планшетов

Reading time3 min
Views61K
Интернет меняется, появляется все больше устройств с отличными от десктопа размерами экранов. Продажи планшетов постоянно растут, а это значит, что сегодня нельзя пренебрегать пользователями, использующих эти девайсы, необходимо оптимизировать сайты для удобного просмотра на планшетах.

Ускорение набора текста с помощью добавления спецсимволов


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

Читать дальше →
Total votes 105: ↑97 and ↓8+89
Comments24

5 правил верстки email-писем от Печкина

Reading time2 min
Views75K

Сегодня мы хотели бы рассказать о базовых правилах верстки HTML в email-письмах. Как известно, на свете существует множество почтовых клиентов:
  • веб-версии у почтовых провайдеров (Gmail, Yandex, Mail, Yahoo итд.)
  • десктопные почтовые клиенты (Outlook, Bat, Thunderbird, Mac Mail)
  • мобильные почтовые клиенты (Blackberry, Android, Iphone, Ipad итд)


К сожалению, не существует обязательного стандарта верстки писем, который бы универсально поддерживался бы всеми клиентами. Часть поддерживает CSS3, часть нет, какие-то теги и аттрибуты поддерживаются, какие-то нет, не говоря уже о том, что поддержка HTML и CSS меняется даже в пределах одного почтового клиента от версии к версии. Последнее особенно заметно на примере Outlook (от Express и 2003 к Outlook 2011).

Что же необходимо знать тем, кто собирается самостоятельно верстать HTML-код для email-писем?
Посмотреть 5 правил верстки email
Total votes 56: ↑46 and ↓10+36
Comments24

Three.js — 3d движок на Javascript

Reading time1 min
Views89K

Есть javascript-гурру, mr.doob, даже на Хабре уже всплывали его работы.
В общем, у него есть очень мощный Javascript 3d-фреймворк с названием

Three.js


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

Меня особо затянул полет между шариков и порадовал панорамный движок.
А у кого работает WebGL — так вообще не нарадуется — там вам и Minecraft и всё, что хотите)

Читать дальше →
Total votes 82: ↑79 and ↓3+76
Comments34

Изображения: форматы и сжатие (1/3)

Reading time9 min
Views54K
Схематичное изображение PCX, GIF и PNG

На что при загрузке сайта расходуется больше трафика? Чаще всего это картинки, и их суммарный «вес» частенько в несколько раз больше, чем у разметки, скриптов и стилей. В файлах изображений распространенных форматов растровые данные хранятся в сжатом виде, и это значительно лучше, чем несжатый BMP. А если хочется ещё лучше? Ведь в достаточно крупных проектах каждый байт на счету (например, в TradingView, чего уж там скромничать).

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

Но как работают такие программы, что можно улучшить и как сделать свою? Приглашаю на обзорную экскурсию по форматам изображений и алгоритмам сжатия растровых данных.
Читать дальше →
Total votes 142: ↑141 and ↓1+140
Comments29

DevCon 2013: анонс программы конференции

Reading time4 min
Views3.5K
image

Уважаемые разработчики и тестировщики ПО, участники конференции DevCon 2013. От лица организаторов, с удовольствием представляю вам программу двух дней конференции, в которую вошли доклады в шести параллельных треках, шесть эксклюзивных мастер-классов и вечерняя программа с круглыми столами и хакатоном “Ночь кодирования”.

По адресу http://www.msdevcon.ru/schedule вы можете найти актуальное расписание конференции.

Ниже я расскажу о некоторых деталях программы DevCon 2013.

Основная программа


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

Обратите внимание! Вся основная программа конференции будет записываться и транслироваться онлайн в реальном времени! Если вам не повезло и вы не сможете принять участие в DevCon 2013 лично, то посетите официальный сайт http://msdevcon.ru 29 и 30 мая для просмотра сессий онлайн.

В этом году мы приняли решение сделать программу конференции и доклады более глубокими. Поэтому более трети (ближе к половине) докладов DevCon 2013 будут уровня 300 или выше.
Читать дальше →
Total votes 14: ↑10 and ↓4+6
Comments8

Серьезное проектирование серьезных сайтов. Часть 2. Визуализация

Reading time8 min
Views86K

7. Карта ума.



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



Для создания карты ума (её чаще называют английским термином «Mind map»), мы можем использовать специальное ПО, я рекомендую Xmind.


Читать дальше →
Total votes 55: ↑48 and ↓7+41
Comments58

Серьезное проектирование серьезных сайтов. Часть 1. Аналитика

Reading time13 min
Views122K

Сразу скажу, что статья получилась очень большая. В моем духе. Поэтому я решил разбить её на две части: аналитика и визуализация. А после еще будет несколько статей с логическим продолжением. Первая может показаться сухой из-за большого количества текста, но без неё не сможет существовать вторая. Поэтому, если вы действительно интересуетесь проектированием сайтов, читать нужно обе и внимательно, я постарался избавиться от «воды» и рассказать только о полезном.

Читать дальше →
Total votes 50: ↑43 and ↓7+36
Comments36

Тестирование приложений на Canvas: рецепты на примере тестирования API Яндекс.Карт

Reading time6 min
Views21K
Несмотря на то, что HTML5 всё ещё находится в процессе разработки, он уже появляется в веб-интерфейсах. Одним из основных нововведений этой версии HTML стал элемент Canvas, который используется для отрисовки двухмерной графики. Например, всё, что вы видите и с чем взаимодействуете в игре MMORPG от компании Mozilla или старом-добром Command and Conquer, отрисовывается и обрабатывается с помощью Canvas. Самые изощрённые умы даже реализуют полноценные формы на Canvas. Или интерактивную модель солнечной системы.

Фреймворки для работы с этим элементом растут как грибы после дождя; про то, как начать программировать, используя Canvas, написано огромное количество статей. Но есть один пункт, о котором, по-видимому, из-за узкой специфики говорят редко и мало. Речь идёт о тестировании приложений на Canvas. В каком-то смысле оно становится проблемой для инженера по тестированию, который привык обращаться к элементам на странице по их css или xpath селекторам, а затем выполнять с объектом какие-то действия. С Canvas такой подход не работает, ведь DOM элемент один, а объектов в нём — много.



Под катом на примере автоматизации тестирования API Яндекс.Карт я расскажу вам о том, как мы решили эту проблему в Яндексе.
Читать дальше →
Total votes 54: ↑49 and ↓5+44
Comments16

Два простых правила для предотвращения взаимных блокировок на мьютексах

Reading time6 min
Views57K
Здравствуйте, уважаемые Хабраюзеры!

Так сложилось, что это третий пост в блоге нашей компании, и, как и первые два, он посвящен вопросам многопоточного программирования и проблемам, которые при этом возникают. Получилось так неслучайно, ведь мы на собственной «шкуре» испытали, что ситуации, возникающие при написании многопоточных программ, невероятно сложны для отладки, так как во многом определяются динамикой работы программы на конкретной аппаратной платформе. Уверен, что большинство программистов сталкивались с ситуацией, когда программа, которая прекрасно работает на одном компьютере, на другом совершенно неожиданно начинает дедлочиться практически «на ровном месте».
Читать дальше →
Total votes 82: ↑73 and ↓9+64
Comments50

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Date of birth
Registered
Activity