Search
Write a publication
Pull to refresh
4
0
Send message

Забавляемся с хешами

Reading time5 min
Views90K
Привет. Я хочу показать вам небольшой фокус. Для начала вам потребуется скачать архив с двумя файлами. Оба имеют одинаковый размер и одну и ту же md5 сумму. Проверьте никакого обмана нет. Md5 хеш обоих равен ecea96a6fea9a1744adcc9802ab7590d. Теперь запустите программу good.exe и вы увидите на экране следующее.
Попробуйте запустить программу evil.exe.
Что-то пошло не так? Хотите попробовать сами?
Тогда добро пожаловать под кат.

Текст из картинки

Reading time1 min
Views3.2K
Понадобилось для одного проекта сделать текст с цветами букв из нужной картинки. Делать все из картинок было бы неправильно, да и текст поисковиками пусть лучше обрабатывается. Нужного плагина не нашлось и было интересно написать свой.

Вкратце
Текст из картинки, jQuery плагин pictotxt

Демо 1 | Демо 2.
Читать дальше →

Почему некоторые называют область уведомлений «треем»?

Reading time3 min
Views16K
оригинал опубликован в 2003, и относится к интерфейсу Windows XP

Короткий ответ: потому что заблуждаются.

Длинный ответ: официальное название штуковины снизу экрана — «панель задач» (taskbar). Она состоит из нескольких элементов — кнопка «Пуск», кнопки переключения между задачами, часы, и «область уведомлений» (taskbar notification area).

Распространённая ошибка — называть область уведомлений «треем» (или даже «системным лотком»). Она никогда так не называлась. Если вы встретите в документации упоминание «system tray», можете доложить, что обнаружили ошибку.

Откуда взялось это неверное название?

В ранних версиях Chicago — ещё до того, как проект получил название Windows 95 — панель задач была не панелью задач, а папкой, зафиксированной снизу экрана. Она была всегда на виду, и можно было «бросать» в неё документы и ярлыки для быстрого доступа — аналогично лотку для всякой всячины, который ставят в верхний ящик письменного стола.



Оттуда и взялось название «лоток (tray) рабочего стола». Немного сомнительное продолжение метафоры «рабочего стола на экране» — но всё ещё в пределах здравого смысла. (Вот если бы вместо обоев на стол клали скатерть...)

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

Алгоритм поведения привидений в игре Pac-Man

Reading time13 min
Views69K
Попробовал сделать перевод вчерашнего топика-ссылки на хабре. Заранее извиняюсь, если формулировки покажутся вам кривыми, я с удовольствием приму конструктивную критику. Поехали…

Мне кажется правильным начать этот блог с темы, которая вдохновила меня в первую очередь. Не так давно я наткнулся на статью Jamey Pittman «Pac-Man Dossier», в которой приводилось очень детальное описание механики игры Pac-Man. Она показалась мне очень интересной, поэтому этот сайт — попытка собрать такую же детальную информацию об остальных играх. Но в дань уважения я все же начну с Pac-Man, а в частности, с описания алгоритма поведения привидений. Это очень интересная тема и, надеюсь, мое объяснение будет немного более понятным и доступным, чем у Джейми, потому что я сосредоточусь лишь на поведении.

Об игре:
«В то время все доступные игры были очень жестокими — игры о войне и космических захватчиках. Не было ни одной игры для всех сразу, а особенно, которые понравились бы девушкам. Я хотел придумать «комическую» игру, которой могли бы наслаждаться даже девушки»
— Toru Iwatani, создатель Pac-Man


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

Вёрстка c «Ушами»

Reading time2 min
Views9.3K
Очень часто фантазия человека, разрабатывающего макет сайта, не ограничивается шириной 1024px, при этом требуется, чтобы сайт выглядел достойно на всех разрешениях и соответствовал полёту мысли дизайнера.

Проблему можно представить графически так:
image

Задача вёрстки заключается в следующем:
  • — независимо от разрешения (размера она браузера), информативная часть сайта находилась посередине;
  • — справа и слева должны остаться графические блоки (уши), причём эти уши должны быть видны только при увеличенном размере экрана браузера, а при уменьшенном не уместившаяся часть должна прятаться (в идеале, чтобы ещё горизонтальной полосы прокрутки не было);;
  • — страница должна быть резиновой от 680px до 1000px.

Работает для FF3, FF4, IE8 и почти для Opera.
Читать дальше →

Ликвидатор велосипедов: часть 1

Reading time3 min
Views15K
imageЭтим постом я начинаю серию статей, которые должны помочь каждому разработчику избавиться от велосипедов в своих последующих и текущих проектах. Усилить код и увеличить функционал. Каждый из нас хочет внести в свою программу нечто, что сделает ее богаче, но зачастую решение либо не находится, либо лень тратить время на поиски… Либо внутри сидит глупая уверенность что это можно реализовать быстро и не менее функционально. В любом случае я хочу чтобы каждый пробежался глазами по спискам библиотек, которые я вам предоставлю на суд, и чтобы у каждого эти библиотеки отложились в памяти. И когда их функционал пригодится в будущем, я очень надеюсь что вы вспомните этот пост и поищите эти библиотеки вместо того чтобы писать все новые и новые велосипеды, полные палок в колесах.
Начну я с оконных менеджеров.
Читать дальше →

Silverlight + nginx = возобновляемая загрузка файлов в браузере

Reading time7 min
Views16K
В данной статье рассматривается опыт внедрения Silverlight-клиента для организации возобновляемой загрузки файлов на проекте Файлы@Mail.Ru.

Зачем это нужно? Думаю, не нужно рассказывать, что загрузку файлов на сервер и их хранение сейчас предоставляет очень большое количество веб-проектов, от небольших до очень крупных. Причем загрузка обычно реализована в виде обычного <input type=file/>, реже — с помощью Flash, еще реже — иными средствами (загрузку по FTP в данной статье мы не рассматриваем).

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

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

«Оживление» пользовательского интерфейса

Reading time12 min
Views33K
image

Приложение не отвечает?!


Многие из тех, кто программирует WPF-приложения, наверное тысячи раз писали конструкцию вида:
{Binding Items}

Если получение элементов коллекции Items выполняется в основном потоке приложения и занимает некоторое время — мы получаем «мертвый» пользовательский интерфейс. Приложение некоторое время не будет отрисовывать изменения состояния и реагировать на пользовательский ввод.
Читать дальше →

VS 2010: Нововведения в отладке

Reading time5 min
Views3.1K
Это двадцать первая статья из серии, посвященной выходу VS 2010 и .NET 4. Сегодняшний пост поведает вам о некоторых приятных улучшениях в юзабилити, которые пришли с отладчиком в VS 2010.

Отладчик VS 2010 содержит тонны отличных возможностей таких, как Intellitrace (он же исторический отладчик), новая возможность параллельной/многопоточной отладки и поддержка дампа отладки, которые заслуженно привлекают внимание, если мы говорим о новой версии.

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

Работа с Visual Studio Team Foundation Server 2010

Reading time7 min
Views97K

Данная статья будет полезна тем, кто не устанавливал и не использовал Visual Studio Team Foundation Server раньше. TFS может быть частью очень сложной инфраструктуры, которая включает отчеты, интеграцию с SharePoint, множественные домены, распределенные базы данных и т.д., но я не собираюсь затрагивать эти области. Моя основная задача – это помочь разобраться с базовыми элементами TFS (система контроля версий, система отслеживания ошибок и заданий и система автоматических сборок) и начать использовать данную систему.

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

Вызов метода Javascript без его вызова фактически

Reading time2 min
Views3.4K
imageИногда мы бываем просто ленивыми. Особенно, когда доходит дело до написания кода. И хоть круглые скобки в вызове функции не приводят к избыточности, иногда все же они могут утомлять, особенно когда javascript-метод не нуждается в передаваемых ему аргументах. Иногда это просто надоедает.
Читать дальше →

Как применять IDisposable и финализаторы: 3 простых правила

Reading time7 min
Views64K

От переводчика


После рассказа об утечке памяти и правильной реализации событий размещаю еще один перевод понравившейся мне статьи на тему управления памятью. Я видел несколько разных реализаций Dispose паттерна, иногда они даже противоречили друг другу. В этой статье автор представил хорошее и четкое разъяснение, когда следует реализовывать интерфейс IDisposable, когда финализаторы, а когда — все вместе.
И когда же?

Расширение возможностей IntelliSense для XAML-редактора Visual Studio 2010

Reading time3 min
Views1.8K
image
Оценив новые возможности IntelliSense в редакторе кода VS 2010, по принципу PascalCase, когда по ходу печати вы получаете список предполагаемых команд. К сожалению, новые вкусные возможности не доступны в XAML редакторе. Но нет повода для печали…
image
Читать дальше →

Различия между Silverlight на Windows и Windows Phone

Reading time14 min
Views2K
imageДанный топик описывает различия реализации между Silverlight 3 на Windows и Silverlight на Windows Phone.
Советую ознакомиться, что поддерживает Silverlight на Windows Phone, а также более детально ознакомиться с информацией о не поддерживаемых типах и членах.
Читать дальше →

Простое применение DataTemplate

Reading time4 min
Views24K
Добрый день.
Для меня, моя жизнь как программиста, делится на два этапа. До того как я познакомился с WPF, и после. Мне пришлось очень плотно работать с этой технологией в рамках одного проекта, в результате чего я приобрёл некоторые знания, которыми хочу с вами поделиться. То что написано ниже, не откровения, и для тех кто знаком с WPF может показаться банальностью. Всё это описано в сети, в том или ином виде, проще или сложнее, но есть у всех этих описаний одна особенность — английский язык. Поэтому я приведу ниже очень короткий, но как мне кажется ёмкий пример того, что можно сделать при помощи Data Templates. Особенно этот пример будет интересен тем, кто только посматривает в сторону WPF.
Читать дальше →

Перегрузка функций в JS

Reading time4 min
Views57K
Как известно, в JavaScript нельзя создать несколько функций, различающихся только списком параметров: последняя созданная перезапишет предыдущие. Про различие на уровне типов параметров говорить не приходится вообще. Обычно, если программист хочет создать функцию с множественным интерфейсом, он пишет что-то вроде такого:
  1. // getRectangleArea(x1, y1, x2, y2) или
  2. // getRectangleArea(width, height)
  3. function getRectangleArea(x1, y1, x2, y2) {
  4.   if(arguments.length==2) return x1*y1;
  5.   return (x2-x1)*(y2-y1);
  6. }
* This source code was highlighted with Source Code Highlighter.

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

Программа из одного exe

Reading time4 min
Views43K
Как правило, при написании .NET программ используются не только классы из .NET BCL, но и сторонние библиотеки. Во время выполнения программы все используемые библиотеки должны быть найдены. Для этого зависимые dll кладут в одну папку с exe файлом.

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

В статье рассказывается, как создавать такие автономные программы из одного файла. Разобран пример как со сжатием зашить библиотеку AutoMapper в программу и как ее потом достать и использовать.

Программа из одного EXE

WPF Markup Extensions

Reading time4 min
Views8.4K
С выходом .Net 3.0 у нас появилась возможность дополнять базовые классы без их переопределения собственными методами. Данная технология получила название Code Extensions Methods
Но как оказалось, что таким же простым и очень гибким методом можно расширить возможности и XAML разметки окон и компонентов.
Поехали

Маленький тест на знание JS

Reading time2 min
Views32K
Пост про (вполне логичные) особенности javascript ( habrahabr.ru/blogs/javascript/84311 ) вызвал бурное обсуждение. Я вслед за автором WTFJS.com сильно облажался, считая эти странности действительно чем-то мистическим ) Большое спасибо всем тем, кто объяснил, почему так происходит на самом деле или для чего так сделано. Понимание таких тонкостей позволяет перейти в общении с языком на «ты». Кто-то скажет, что это должен знать любой программист, хоть как-то владеющий JS? Возможно. Но, как оказалось, многие не знали, и я в их числе.

Простите, но кат здесь стоит только потому, что пост чуть больше, чем нужно

Information

Rating
Does not participate
Location
Тула, Тульская обл., Россия
Date of birth
Registered
Activity