Как стать автором
Обновить
4
0
Dark Daskin @darkdaskin

Разработчик C#

Отправить сообщение

Портрет Нуба

Время на прочтение17 мин
Количество просмотров6.5K
Чем старше я становлюсь, тем менее важной становится запятая. Пусть читатель сам решает, где ему ставить паузы. — Elizabeth Clarkson Zwart


Примерно так я комментировал свой код двадцать лет назад (внимание, чуток драмы):

/*
 * Когда мы дойдем сюда, наша структура уже будет готова. 
 * К тому же, мы создали достаточно большой буфер, в который 
 * можно засунуть все входные данные, плюс есть немного места
 * про запас. Я не уверен, понадобится ли оно, но хуже не будет. 
 * Теперь нам надо обновить счетчик, предполагая, что клиент 
 * уже прочитал значение, но еще не использовал его. Сначала 
 * я хотел переложить обязанность инкремента на плечи вызывающего
 * кода. С другой стороны, это означает, что инкремент нужно делать всем, 
 * поэтому я решил, что будет лучше перенести его сюда. Но мы можем 
 * пересмотреть это решение позже, если вдруг кому-то из внешних функций 
 * захочется делать инкремент самому.
*/
counter++; // инкрементировать счетчик для потребляемого значения

/*
 * Теперь нужно просмотреть весь буфер с данными. Для этой 
 * операции нам понадобится еще один индекс, иначе перед 
 * выходом из функции мы потеряем начальное значение. 
 * Я хотел назвать эту переменную ‘ref’, потому что в некотором
 * смысле мы будем обращаться с ней как со ссылкой на данные. 
 * В конце концов я пришел к выводу, что самым лучшим  
 * названием для нее будет ‘pos’. Если что, я не против обсудить
 * это решение.
*/
char* pos = buffer; // начинаем наш обход данных

/*
Теперь, мы...
*/


Ну что, узнаете? А должны! Если быть предельно невежливым, весь код выше написал нуб. (Между прочим, если вы не знаете, кто такой нуб, значит вы — нуб).

Читать далее
Всего голосов 235: ↑163 и ↓72+91
Комментарии171

Mari0

Время на прочтение1 мин
Количество просмотров2K


Две игры из совершенно разных эпох: Super Mario Bros. от Nintendo и Portal от Valve вместе!
Теперь у Марио в руках есть портальный пистолет и в игре уже появляются элементы головоломки. Хотите больше эпичности? Подключайте к компу геймпады и играйте вместе с друзьями — у каждого будет свой Portal gun!

От себя скажу, что идея очень классная. Надеюсь, игра всё-таки будет доделана и выпущена в паблик.



Via
Всего голосов 144: ↑133 и ↓11+122
Комментарии40

Читаем QR код

Время на прочтение5 мин
Количество просмотров1.1M
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

Иллюстраций: 14, символов: 8 510.
Читать дальше →
Всего голосов 623: ↑614 и ↓9+605
Комментарии109

Бот для Flash-игры / Внедряемся в Flash

Время на прочтение5 мин
Количество просмотров58K

В рамках недели ботов для браузерных игр.

Эта неделя богата на статьи о ботах для бразуерных игр.
Во всех статьях для управления ботом использовался AutoIT. Это простой и хороший способ чтобы начать делать бота «в лоб», он не требует никаких знаний об игре, кроме как знания правил и графического интерфейса. Для серверной части игры такой бот вообще будет выглядеть как обычный пользователь, если не брать во внимание невероятную усидчивость и производительность такого игрока.

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

В первой статье я наткнулся на комментарий со ссылкой на пост Adobe Profiler Fail, что побудило меня исследовать эту возможность в целях автоматизации действий в Flash-играх.
Читать дальше →
Всего голосов 79: ↑77 и ↓2+75
Комментарии27

Геттеры и сеттеры в Javascript

Время на прочтение5 мин
Количество просмотров48K
Javascript — очень изящный язык с кучей интересных возможностей. Большинство из этих возможностей скрыты одним неприятным фактором — Internet Explorer'ом и другим дерьмом, с которым нам приходится работать. Тем не менее, с приходом мобильных телефонов с актуальными браузерами и серверного JavaScript с нормальными движками эти возможности уже можно и нужно использовать прям сейчас. Но по привычке, даже при программировании для node.js мы стараемся писать так, чтобы оно работало в IE6+.

В этой статье я расскажу про интересный и не секретный способ указывать изящные геттеры и сеттеры и немножко покопаемся в исходниках Mootools. Частично это информация взята из статьи John Resig, частично лично мой опыт и эксперименты.
function Foo(bar){
    this._bar = bar;
}

Foo.prototype = {
    get bar () {
        return this._bar;
    },
    set bar (bar) {
        this._bar = bar;
    }
};


Читать дальше →
Всего голосов 104: ↑92 и ↓12+80
Комментарии68

Нестандартное использование Get и Set в Javascript

Время на прочтение2 мин
Количество просмотров5.1K
Многие в курсе, что в Javascript есть так называемые Getter'ы и Setter'ы. Это конструкции для отслеживания изменения значений свойств объекта, а так же возвращения этих значений. «С изнанки» объекта они выглядят как обычные функции:

var obj = {
   get value() {
     return 0;
   },
   set value(s) {
     alert ("Go screw yourself!")
   }
}


* This source code was highlighted with Source Code Highlighter.


Но раз это функции, их можно использовать как душе угодно!

Читать дальше →
Всего голосов 67: ↑50 и ↓17+33
Комментарии24

Окна «неправильной» формы

Время на прочтение6 мин
Количество просмотров12K

Начало


Иногда возникает необходимость в окне «неправильной» (не прямоугольной) формы, будь то заставка(splash screen), или виджет рабочего стола.

image
Читать дальше →
Всего голосов 52: ↑37 и ↓15+22
Комментарии35

Расширение функциональности не имея исходного кода

Время на прочтение4 мин
Количество просмотров3.2K
Думаю, у каждого из вас было ощущение, что в той, или иной программе не хватает какой-нибудь must have фичи. Если программа идет с исходным кодом, то проблем не возникает. Любой желающий может дописать нужную функциональность. А что если программа закрытая? Не стоит отчаиваться, это не пропащий случай. Сейчас расскажу, как можно дописать за автора то, чего не хватает.
Читать дальше →
Всего голосов 112: ↑109 и ↓3+106
Комментарии31

Написание макроса-бота для браузерной игры

Время на прочтение8 мин
Количество просмотров52K

Введение


Не так давно на Google+ появились игры. Прочитав топик об этом, я решил во что нибудь поиграть. Выбор пал на игру Diamond Dash. Через некоторое время игры программист во мне заговорил, что однотипные действия нужно автоматизировать. И вот что из этого вышло…

*Примечание: «руками» даже опытному игроку сложно набрать больше 400к

Раньше я никогда не сталкивался с задачами работы с экраном и мышкой. После непродолжительного гугления было решено для решения использовать язык макросов AutoIt.
Под катом вы найдете краткое описание игры, мой способ распознавания поля, алгоритм определения точки нажатия, и некоторое количество оптимизаций. А так же ссылку на github-репозиторий скрипта.
UPD Добавлено видео работы скрипта.
Читать дальше →
Всего голосов 168: ↑164 и ↓4+160
Комментарии115

Инструменты командной строки для веб-разработчика

Время на прочтение3 мин
Количество просмотров39K
Жизнь веб-разработчика омрачена сложностями. Особенно неприятно, когда источник этих сложностей неизвестен. То ли это проблема с отправкой запроса, то ли с ответом, то ли со сторонней библиотекой, то ли внешний API глючит? Существует куча различных прилад, способных упростить нам жизнь. Вот некоторые инструменты командной строки, которые лично я считаю бесценными.
Читать дальше →
Всего голосов 227: ↑217 и ↓10+207
Комментарии30

Quick Config — программа для быстрой смены заданных настроек

Время на прочтение2 мин
Количество просмотров13K
Став обладателем ноутбука ощутил все прелести мобильности. Работать стало проще, отпала необходимость таскать проекты на флешке, настраивать окружение на домашней и рабочей машине один в один. Появилась возможность брать с собой работу на отдых.

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

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

Так появилась программа Quick Config.
Читать дальше
Всего голосов 67: ↑62 и ↓5+57
Комментарии51

Получение через IMoniker объекта Range, скопированного из Excel в буфер обмена

Время на прочтение5 мин
Количество просмотров2.1K
Год назад в нашей компании возникла задача написать на C# приложение для импорта данных из Excel, в том числе с помощью буфера обмена и drag'n'drop. Excel при копировании в буфер кладет туда данные в нескольких форматах. Часть из них стандартные типа CF_TEXT, CF_CSV и т.п. Однако, если нужно иметь дело с объединенными ячейками и прочими радостями, то может понадобиться получить доступ непосредственно к объекту Range, который был перетащен или скопипастен. Для этого нужно воспользоваться форматом CF_LINKSOURCE и лежащим в нем интерфейсом IMoniker. О том, как это сделать, читайте под хабракатом.
Читать дальше →
Всего голосов 30: ↑22 и ↓8+14
Комментарии0

Взлом матановой капчи на C# — это просто!

Время на прочтение4 мин
Количество просмотров41K
В этом топике я хочу вам рассказать о взломе т.н. «матан-капчи», пример которой был представлен в недавнем топике Матановая капча на PHP — это просто!.
Прочитав статью автора об этой замечательной капче, мне захотелось написать программу для её распознавания, как говорится just for fun ;)
Читать дальше →
Всего голосов 184: ↑176 и ↓8+168
Комментарии88
12 ...
34

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Software Developer, Backend Developer
Senior
C#
.NET
ASP.Net
WPF
SQL
Git
OOP
English
Software development
.NET Core