Search
Write a publication
Pull to refresh
39
0
Антон Мельников @antonsnowy

Программист

Send message

WPF layout: Measure и Arrange

Reading time9 min
Views22K


Общее представление о том, что такое WPF Layout System, можно получить из msdn (1, 2). Там написано, что элементы управления образуют Visual-дерево, что каждый из элементов управления имеет свой определенный прямоугольник, в рамках которого он отрисовывается, что определение этих прямоугольников возлагается на Layout System и выполняется в 2 этапа (measure и arrange) и что WPF — это retained mode graphic system, в отличие от обычных Immediate и в чем преимущества такого подхода.

Однако при чтении msdn возникает ряд вопросов, на которые в документации ответов нет, и можно только догадываться о том, что происходит. Например — что произойдет, если какой-либо дочерний контрол в measure-стадии запросит для себя размер, превышающий переданный ему availableSize? Или — как при необходимости реализовать методы MeasureOverride и ArrangeOverride правильно, чтобы написанный код не противоречил принятым соглашениям о том, как должны выполняться этапы Measure и Arrange ? Влияет ли результат, полученный на этапе Measure, на этап Arrange и отрисовку, или же на отрисовку влияет только вызов Arrange, а Measure — чисто информационный этап?

Попробуем разобраться более детально в том, что происходит за кулисами.
Читать дальше →

Что менеджер проектов должен знать о тестировании

Reading time5 min
Views13K
Я 8 лет занимаюсь тестированием. Ручным и автоматизированным, в роли тестировщика и тест-менеджера, как сотрудник компании и как представитель аутсорса. И почти на всех проектах сталкиваюсь с одной и той же проблемой: руководители проектов не понимают, зачем им нужно тестирование.

Если задать среднестатистическому РМ'у простой вопрос: «Зачем на этом проекте тестирование?», то чаще всего ответом будет «Ты же тест-менеджер, ты и должна ответить на этот вопрос».

Но ведь приходя в парикмахерскую вы не говорите мастеру «вы сами знаете, что мне нужно»? И в продуктовом магазине вы не просите продавца накидать вам в корзину то, что вам нужно? Вы можете советоваться, вы можете узнавать «а как можно?», спрашивать варианты, но решение всегда за вами. В чём отличие тестирования? Может, в том, что слишком мало менеджеров проектов понимают, зачем оно им?

В этой статье я постараюсь выступить в роли продавца, который показывает клиенту: «а что вообще бывает?» Многие вещи будут описаны, возможно, слишком подробно, слишком просто… Не серчайте, мне просто очень хочется быть понятой :)
Читать дальше →

Логирование — производительность молчания

Reading time4 min
Views10K
В обсуждениях этой статьи, возникло наконец у меня желание оценить в цифрах скоростные характеристики API логгеров.

Решил провести сравнение задержек при использовании логгеров NLog и Log4Net, а также осветить немного общих вопросов по замерам производительности участков кода в .Net и Mono.

Читать дальше →

Настройка и создание приложения для публикации в Facebook timeline

Reading time10 min
Views21K
В данной статье я хочу описать, как создать минимальное приложение, которое что-то опубликует в timeline, а так же рассказать про трудности, которые могут возникнуть на этом пути.
Прежде всего, стоит сказать, что в данный момент facebook timeline находится в beta и доступна только разработчикам, поэтому первое, что необходимо сделать, это активировать timeline для своего аккаунта. На эту тему написано множество инструкций, вот например www.makeuseof.com/tag/enable-facebooks-timeline-profile.
После выполнения всех действий из инструкции, и подождав несколько минут, кликните по своему имени, вместо стены должен открыться долгожданный timeline.

Шаг 1. Настраиваем facebook приложение


Читать дальше →

Быстрая server side интеграция ASP.NET + Facebook

Reading time4 min
Views4.3K
Так вышло, что мне пришлось столкнуться с интеграцией с Facebook-ом на платформе ASP.NET. Интеграция нужна была server-side, поэтому решено было использовать Facebook C# SDK.
Как оказалось процесс довольно таки не сложный, но важно понять суть и принцип.
Читать дальше →

Защита Win32 и .NET приложений: обзор протектора Themida (X-Protector)

Reading time10 min
Views55K
Этот обзор посвящен Themida (в прошлом X-Protector), одному из самых мощных и надежных протекторов Win32 приложений. Поскольку Themida совсем недавно понадобилась мне для одного из моих приложений, я решил написать по ней небольшой обзор. Заодно попросил автора ответить на некоторые интересующие меня вопросы. Думаю, ответы будут вам тоже интересны. Результаты этого небольшого интервью ищите в конце статьи.

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



Читать дальше →

Защита .NET приложений — всё же, во что заворачивать селёдку?

Reading time9 min
Views28K

Защита .NET приложений — всё же, во что заворачивать селёдку?



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

Итак, что мы имеем:
Читать дальше →

Демоны на PHP

Reading time4 min
Views76K
Памятка начинающему экзорцисту.

Прежде, чем начать: я знаю, что такое phpDaemon и System_Daemon. Я читал статьи по этой тематике, и на хабре тоже.

Итак, предположим, что вы уже определились, что вам нужен именно демон. Что он должен уметь?
  • Запускаться из консоли и отвязываться от неё
  • Всю информацию писать в логи, ничего не выводить в консоль
  • Уметь плодить дочерние процессы и контролировать их
  • Выполнять поставленную задачу
  • Корректно завершать работу

Отвязываемся от консоли


// Создаем дочерний процесс
// весь код после pcntl_fork() будет выполняться двумя процессами: родительским и дочерним
$child_pid = pcntl_fork();
if ($child_pid) {
    // Выходим из родительского, привязанного к консоли, процесса
    exit();
}
// Делаем основным процессом дочерний.
posix_setsid();

// Дальнейший код выполнится только дочерним процессом, который уже отвязан от консоли

Читать дальше →

С чего начать изучение Windows Installer?

Reading time7 min
Views56K
Installer pic Технология Windows Installer (MSI) является стандартом де-факто в мире системных администраторов, занимающихся распространением и поддержкой программного обеспечения для десктопных и серверных версий Windows. Формат MSI поддерживается всеми крупнейшими системами управления конфигурациями (Microsoft SCCM, CA Unicenter и многими другими), а для некоторых систем распространения ПО — является единственным поддерживаемым форматом.
Мой опыт работы с этой технологией — как теоретический, так и практический — приобретен за время работы в компании «Инфопульс Украина» и связан с созданием MSI-пакетов и подготовкой готовых MSI-пакетов к автоматической установке в корпоративной среде.
Читать дальше →

REST vs SOAP. Часть 2. Как проще и эффективнее организовать общение платформ?

Reading time6 min
Views104K
После написания первой части статьи аппетит разыгрался и захотелось продолжить изучение, на этот раз больше с уклом в практическую часть. Весь сыр-бор у нас разгорелся из-за необходимости взаимодействии приложений и платформ, поэтому именно этому в основном и будет посвящена статья.
Читать дальше →

Интеграция сервиса шаринга AddThis с Google Analytics

Reading time2 min
Views5.1K
В этом году в Google Analytics появился новый отчет Посетители > Соцфункции. Он, как можно догадаться, должен показывать взаимодействие с сайтом посредством социальных кнопок (like, share и т.п.)
Но для отслеживания каждой социальной кнопки необходимо было создавать функцию обратного вызова, которая бы посредством вызова метода _trackSocial и должна отслеживать нажатие на кнопку.
Об этом можно почитать в справке Google Analytics: http://code.google.com/intl/ru-RU/apis/analytics/docs/tracking/gaTrackingSocial.html
И это было не очень удобное решение, т.к. социальных кнопок на сайте может быть много и для каждой придется писать функцию.

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

интеграции AddThis с Google Analytics...

Фоновое выполнение скрипта на PHP без crontab

Reading time4 min
Views84K
Озадачили меня тут написать демона на PHP. Т.е. скрипт, который будет заданное количество раз в заданное количество часов в случайное время (всегда случайное) выполнять определенные действия, и все это без использования cron'a.

До этого никогда не заморачивался, а тут после постановки задачи, начал было думать что так нельзя, что php скрипт надо вызывать браузером…ну задача то поставлена, надо выполнять.

Первая мысль — отключить ограничение времени выполнения скрипта. Запрещено хостером.

Вторая мысль — яваскриптом повторять аякс-запрос периодически (да хоть раз в секунду). — нельзя (требование заказчика).

Выяснилось, собственно, что и браузер открыт не должен быть, и крон нельзя использовать, и работать скрипт должен независимо от пользователя, бесконечно долго. Естественно, он должен минимум грузить систему.
Читать дальше →

Основы конструирования компиляторов. Лексический анализ на C#

Reading time4 min
Views32K
Задачей лексического анализа является разбить входную последовательность (в моем случае код на языке «Паскаль») на слова и лексемы.

Для начала я создал 5 типизированных листов для хранения данных, а именно: идентификаторов, констант, ключевых слов, разделителей и свертки. Также необходим массив разделителей
static char[] limiters = {',', '.', '(', ')', '[', ']', ':', ';', '+', '-', '*', '/', '<', '>', '@'};

и массив ключевых слов. Я ограничился одиннадцатью ключевыми словами, так как статья написана как начальный пример реализации лексического анализа языка «Паскаль» на языке C#.
Итак, массив ключевых слов:
static string[] reservedWords = { "program", "var", "real", "integer", "begin", "for", "downto", "do", "begin", "end", "writeln" };

Читать дальше →

Elevator Pitch или грамотная презентация проекта за 60 секунд

Reading time2 min
Views6.4K
Я хочу рассказать вам про то, как создать грамотный Elevator Pitch – одноминутную презентацию проекта потенциальному инвестору на базе собственного опыта. Когда у вас есть всего одна минута, чтобы презентовать проект, вы должны четко понимать, на что потратить эти драгоценные секунды.

Краткость — сестра таланта

Для начала попробуйте описать ваш проект и уложиться в 150-200 слов, при этом нужно, чтобы в эти 200 слов уместилось описание основной идеи, её уникальность и польза для потребителя, ваша оценка рынка, состав и опыт команды, текущий статус проекта и объем желаемого финансирования. Так как вы можете не уложиться в минуту, когда будете пересказывать этот текст, постарайтесь всё важное вложить в первый абзац и первые 20 секунд презентации.

Первое впечатление

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

REST vs SOAP. Часть 1. Почувствуйте разницу

Reading time6 min
Views484K
Некоторое время назад я гуглил интернет по поводу “REST vs SOAP”, прочитал пару статей и вроде бы все понял, но не почувствовал от этого никакого удовлетворения. Что-то было не так, то ли я не почувствовал основную идею, то ли просто читал, одновременно слушая новый музон и думая о новой фиче в проекте. Как появилось время, решил восполнить этот пробел, заодно написав полезную статью по этому поводу.
Читать дальше →

Примеры работы с разными map API

Reading time6 min
Views82K

Есть много статей на тему знакомства с Google Map Api и Yandex Map Api, но про остальные картографические сервисы не так много практического материала. В недавнем времени работал с Api:
  1. Google map
  2. Yandex map
  3. Yahoo map
  4. Bing map
  5. OpenStreet map

И хотел обобщить работу с вышеупомянутыми сервисами, а именно инициализация карты и установление маркеров по клику мышки. Материалы в статье представлены в виде Html кода, javascript и результата — скриншота, а так же исходники на vs 2010 MVC3.
Читать дальше →

Интернет-голосование на html

Reading time2 min
Views2.3K
Все уже в курсе, что скоро выборы в эти ваши президенты и думу. Предвыборная компания обещает быть суровой и беспощадной. Нет, это не предвыборная агитация. Это констатация факта.
image
ТВ и интернет уже пестрит официальными рейтингами партий. Меня, как и наверно, многих беспокоит вопрос честности предстоящих выборов. Как узнать каково реальное соотношение сил? В официальные опрос можно верить, а можно и нет. Проверить все-таки не мешало бы.

Для этого нужен по настоящему независимый опрос. Возможности сети интернет дают нам такую возможность.

Так появилась идея сайта.

Основные требования:
  • Возможность голосовать за партии (как же без нее?)
  • Максимальная простота для посетителя (т. е. никакой регистрации в идеале быть не должно)
  • Защита от накруток
  • Продвижение по средствам интеграции в соц. сети
  • Максимальная быстрая и малозатратная разработка (так как время поджимает)

Пожалуй, самое главное требование — это скорость разработки, оно и диктует нам как будет выглядеть наш проект. Решения на PHP, Ruby, Python, а может быть даже ASP.NET безусловно хороши для команд, у которых есть время и деньги. В нашем случаи сайт делается на чистом энтузиазме в свободное от работы время (а времени этого очень немного).
Потому в качестве платформы был выбран html. Да простой html. Без всякого серверного кода.
Читать дальше →

Кастомизация социальных кнопок

Reading time3 min
Views45K
Многие из нас так или иначе сталкивались с проблемой кастомизации кнопок соцсетей, а многие ещё столкнутся. Недавно нам на Sports.ru пришлось решать задачу, как не только настроить внешний вид «лайков», но и разместить на одной странице сразу несколько блоков социальных кнопок, относящихся к разным текстовым блокам.

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

Читать дальше →

Userscripts. Кроссдоменные запросы

Reading time5 min
Views51K
Доброго времени суток.
Сегодня мы рассмотрим варианты организации кроссдоменных запросов в юзерскриптах.
В подробности реализации того или иного механизма я вдаваться не буду, но приведу пример кроссбраузерной оболочки для кроссдоменных запросов.
Приступим

Что кешировать?

Reading time8 min
Views12K
Всё. На этом можно было бы статью закончить, так как эта аксиома повторяется из года в год на форумах и конференциях и кочует из текста в текст на всех технических ресурсах. Однако это ёмкое «Всё» не поясняет деталей. Ведь существует достаточно широкая прослойка программистов, движки и проекты которых справляются с задачей без мемкеша и шардинга. Но момент нагрузки приходит, и приходится разбираться.
Для таких людей я и разобрал на запчасти это универсальный ответ высоконагруженных проектов.
Ограничимся изучением системы для веба. Попросту говоря, на привычном обычном сайте. Используете ли вы готовую CMS, или уже выросли до каркаса, или написали «с нуля» код для нестандартного проекта – основными элементами процесса приёма-отдачи данных всегда будут одни и те же узлы. Я их рассмотрю с точки зрения «Где что можно закешировать».
Этапы выдачи
Читать дальше →

Information

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