Pull to refresh
11
0
Pavel Kovalenko @nitrocaster

Software Engineer

Send message

Получение указателя на объект .Net

Reading time5 min
Views27K

Сразу отвечу на вопрос «а зачем?». Просто интересно получить указатель на объект и потом подумать, что с ним особенного можно сделать :) Ведь если получить указатель, то дальше можно сделать все что угодно. Например, становится возможным изучить поведение SyncBlockIndex, или взять MethodTable и изучив, где что находится, изменить его содержимое. Можно мастерить собственные типы данных, не прибегая к Reflection. В общем можно делать много странных вещей, которые относятся больше к спортивному программированию и к саморазвитию. Однако, приступим.


Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments6

Дизассемблинг и приручение лампового гитарного звука

Reading time4 min
Views66K

Как все начиналось


Порядка 5 лет назад, я начал свое шествие по миру ламповой техники. За это время было собраны десятки разных схем и прослушано порядка пяти десятков «оригинальных» ламповых усилителей. В результате, сформировалось четкое понимание «как должно звучать» и какой «гибкостью» должен обладать аппарат.
В процессе знакомства с разными гитарными усилителями, долгое время, меня не оставлял в покое звук «головы» от фирмы Krank. Но в тот момент, к сожалению, оценить его и попробовать — было невозможно. Продажи начались только-только в Штатах, а живых экземпляров в Санкт-Петербурге не было. Было принято решение во что бы то ни было, достать столь «лакомый кусочек». К счастью нашлись подходящие люди которые смогли купить и привезти его в Питер. Долгие 14 дней ожидания и моя прелесть стояла на пороге квартиры. Счастью не было предела. Чем больше я на нем играл, тем больше мною овладевала мысль: «Как же устроена эта штука».
В один прекрасный момент, собравшись с духом, я твердо решил: “Я должен узнать «тайну » этого чуда”.

Шли дни, летели недели. Кусочек за кусочком вырисовывалась схема.

image
Читать дальше →
Total votes 73: ↑69 and ↓4+65
Comments60

Nano: И всё-таки его придётся выучить [2]

Reading time2 min
Views184K
Продолжаем. Предыдущий топик (навигация по тексту): тут.

Сегодняшняя тема — работа с выделением, копирование и удаление кусков текста.

Для понимания принципов команд работы с текстом нужно сначала понять принцип выделения текста. Он осуществляется либо мышью, либо с клавиатуры. С клавиатуры выделение происходит так: сначала отмечается начало выделение: Alt-A или Ctrl-^. Далее следует навигация — и до момента выполнения действия над текстом в буффере, выделение сохраняется (обратите внимание, выделение сохраняется даже при вводе текста, в этом оно сильно отличается от выделения в gui-приложениях windows и ближе к persistent blocks в TurboC, DN и соответствующей опции Far Manager'а).

Обратите внимание, применимы все функции навигации, включая переход по номеру строки или поиск (в следующих выпусках).

Далее выделенный текст можно удалить или скопировать в буффер. Это делает комбинация Ctrl-K (или F9).

Выделенный текст можно скопировать в буффер обмена — комбинация Alt-6 (да, мы ЛЮБИМ nano).

Далее мы можем вставить текст из буффера обмена — Ctrl-U или F10. Обратите внимание — в подсказке снизу написана неправда, это не отмена удаления, это вставка.

Читать дальше →
Total votes 48: ↑31 and ↓17+14
Comments32

Nano: И всё-таки его придётся выучить [1]

Reading time2 min
Views111K
            Речь идёт о текстовом редакторе nano в Linux.
Я не люблю nano и предпочитаю vim. Однако, в отсутствии vim, выбирая между vi и nano, я всё-таки предпочту nano, ибо как говорится в старой поговорке, «у vi есть два режима: бибикать и всё портить».

Кроме того, идёт активная замена vi на nano во многих дистрибутивах. Например, в новых версиях Debian и Ubuntu по-умолчанию vi устанавливается в самом куцем виде. А главное, его больше нет в busybox install/initrd этих ОС, что однозначно заставляет задуматься об изучении nano, не из любви к нему, а по необходимости.

Я понимаю, что сидеть и зубрить список комбинаций кнопок бесполезно, так что вместо этого я думаю сделать маленькие nano-уроки — по 8 комбинаций или фич за урок (я и сам их планирую изучать по мере публикации).

Nano не имеет «режима команд» как vim, и этим похож на oldschool-редакторы из консоли DOS/Windows (NC, Far Manager, DN, hiew/biew, внезапно втесавшегося в список mcedit и т.д.). Все команды отдаются нажатием комбинаций клавиш — функциональными кнопками или комбинацией Ctrl-буква, Alt-буква.

Важное отличие от 'generic editor' — это поддержка эмуляции Ctrl'а и Alt'а.

Читать дальше →
Total votes 155: ↑124 and ↓31+93
Comments295

Жадные алгоритмы

Reading time4 min
Views194K
ДеньгиДоброго времени суток, хабр! Сегодня я бы хотел рассказать про жадные алгоритмы.

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

Думаю, каждый программист в своей жизни хотя бы раз написал жадину, может быть, даже не задумываясь об этом. Что же это такое? Добро пожаловать под кат.
Читать дальше →
Total votes 106: ↑100 and ↓6+94
Comments17

1% всех сайтов рунета держит свой memcached открытым для мира. Немного статистики

Reading time3 min
Views74K
How do I authenticate?
You don't!

это цитата из FAQ memcached.

Да, в memcached по умолчанию не предусмотрено системы аутентификации, и администратор сам должен сделать маленький шажок, чтобы закрыть свой сервер от свободного доступа. Например, запустить его на 127.0.0.1, или воспользоваться фаерволом. Сколько же сайтов рунета это сделали?
Узнать подробности
Total votes 197: ↑189 and ↓8+181
Comments117

«Запретите им запрещать» или обратная сторона реестра запрещенных сайтов

Reading time3 min
Views126K


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

Можно долго спекулировать о том, что они думали и чем они не думали, но факт есть факт: блокировкой любого сайта они невольно вручают мощное средство, если не сказать орудие, защиты и нападения в руки владельца домена, включенного в реестр.
Информационная война как она есть
Total votes 211: ↑199 and ↓12+187
Comments129

rCons — quake-style враппер для консоли в Windows

Reading time2 min
Views45K
В свое время при знакомстве с линуксом меня заинтриговала возможность вызова консоли в том виде, в каком это сделано в многочисленных играх. Из примеров подобных программ можно упомянуть Guake и Yakuake. Вменяемых вариантов под Windows найти не получилось, поэтому спустя какое-то время я созрел на написание своего варианта.


Читать дальше →
Total votes 88: ↑80 and ↓8+72
Comments151

Решаем 9 задач управления Windows Server 2008 с помощью PowerShell. Часть 1

Reading time9 min
Views63K

Введение



Порою с помощью PowerShell управлять Windows Server 2008 можно гораздо быстрее, чем с помощью привычых GUI-инструментов. В этой статье вы найдет 9 наиболее распространенных задач, которые могут быть реализованы с помощью PowerShell. (10 задача была исключена из перевода из-за того, что демонстрируемый в статье скрипт был неполным – Прим. переводчика).
По данной теме будет два поста. Материала много, материал хороший, но, к сожалению, размещение в одном посте сделает его нечитаемым.
Итак, какие задачи будут рассмотрены:
  1. Изменение пароля локального администратора с помощью PowerShell
  2. Перезагрузка или выключение сервера
  3. Перезапуск службы
  4. Остановка процесса
  5. Создание отчета об использовании диска
  6. Получаем 10 последних ошибок журнала событий
  7. Сбрасываем контроль доступа к папке
  8. Получаем server’s uptime
  9. Получаем информацию о Service Pack

Первые пять задач мы рассмотрим в этом посте, оставшиеся 4 последующем. Заинтересованных приглашаем под кат.
Читать дальше →
Total votes 19: ↑12 and ↓7+5
Comments4

Spatial hashing для самых маленьких

Reading time5 min
Views41K


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

Предположим, что у вас есть несколько объектов и вам нужно узнать нет ли между ними столкновений. Простейшим решением будет посчитать расстояние от каждого объекта до всех остальных объектов. Однако, при таком подходе количество необходимых вычислений растёт слишком быстро. Если на десятке объектов приходится делать сотню проверок, то на сотне объектов выходит уже десяток тысяч проверок. Это и есть печально известная квадратичная сложность алгоритма.
Можно улучшить ситуацию, если...
Total votes 88: ↑82 and ↓6+76
Comments21

Сетевое программирование для разработчиков игр. Часть 1: UDP vs. TCP

Reading time9 min
Views172K
От переводчика: Это перевод первой статьи из цикла «Networking for game programmers». Мне очень нравится весь цикл статей, плюс всегда хотелось попробовать себя в качестве переводчика. Возможно, опытным разработчикам статья покажется слишком очевидной, но, как мне кажется, польза от нее в любом случае будет.


Привет, меня зовут Гленн Фидлер и я приветствую вас в первой статье из моей онлайн-книги “Сетевое программирование для разрабочиков игр”.

image

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

Вы, скорее всего, уже что-нибудь слышали о сокетах, и, возможно, знаете, что они делятся на два основных типа — TCP и UDP. Первое, что нужно решить при разработке многопользовательской игры — это какой тип сокетов использовать — TCP, UDP, или оба?
Читать дальше →
Total votes 86: ↑75 and ↓11+64
Comments53

Интервью с Бьерном Страуструпом о языке C++

Reading time12 min
Views83K
image
Считанные часы остались до Нового 2014-го года, в котором в числе прочего всем нам был обещан новый стандарт C++14. Однако он будет не большим самостоятельным обновлением, а лишь доработкой C++11, багфиксом, который придаст текущей версии языка завершенный вид. На этом фоне Уильям Вонг (англ. William Wong) от ресурса electronicdesign.com взял интервью у Бьерна Страуструпа (дат. Bjarne Stroustrup), создателя C++. Беседа затронула несколько тем: от истории разработки C++ и особенностей стандарта C++11 до проблемы обучения этому языку программирования.

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

Читать дальше →
Total votes 95: ↑92 and ↓3+89
Comments137

Введение в оптимизацию. Имитация отжига

Reading time10 min
Views185K
В этой статье я постараюсь максимально доходчиво рассказать о таком простом, но эффективном методе оптимизации, как имитация отжига (simulated annealing). А чтобы не быть причисленным к далёким от практики любителям теоретизировать, я покажу как применить этот метод для решения задачи коммивояжёра.

Для понимания статьи Вам понадобятся минимальные навыки программирования и владение математикой на уровне 9 класса средней школы. Статья рассчитана на людей не знакомых с методами оптимизации или только делающих первые шаги в этом направлении.

image


Читать дальше →
Total votes 148: ↑138 and ↓10+128
Comments37

Встречайте RyuJIT: новый JIT-компилятор для .NET

Reading time4 min
Views19K
Мир движется к 64-битным вычислениям, несмотря на то, что в результате программы не всегда работают быстрее или производительнее по сравнению с 32-битными. Многие 32-битные программы, по разным причинам, могут работать быстрее 64-битных. Одним из таких примеров является 64-битный JIT-компилятор .NET-фреймворка. Он выполняет большую работу для того, чтобы ваша программа работала очень быстро, но сам он, увы, не настолько быстр, как хотелось бы. Это мы и собираемся исправить. Представляем x64 JIT-компилятор нового поколения, который способен компилировать 64-битный .NET код в 2 раза быстрее.
Читать дальше →
Total votes 49: ↑46 and ↓3+43
Comments7

8 успешных лет freelance'а, tips and tricks

Reading time9 min
Views34K
Доброго всем дня, вечера, здравствуйте, коллеги.

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

Я бы хотел рассказать об особенностях freelance-занятости для людей, которые никогда этим не занимались, но хотели бы иметь набор полезных советов, когда захотят попробовать. Приступать к какому-либо делу подготовленным — всегда хорошая идея.
Читать дальше →
Total votes 206: ↑193 and ↓13+180
Comments157

Отправляем заявление в Государственную Думу относительно "«анти»террористического" пакета законопроектов

Reading time6 min
Views60K
Итак, уважаемые коллеги, друзья, и просто пользователи ресурса, к превеликому сожалению, в Госдуме от чтения к чтению победоносно идет совершенно варварский пакет законопроектов, способных нанести огромный урон нашей с Вами любимой отрасли.

Я против того, чтобы молча на это смотреть.

Однако я — не варвар (нет, ну… правда), и поэтому предлагаю попробовать бороться с варварством цивилизованным путем.
А именно, предлагаю четко и адресно поставить уважаемых господ законодателей в известность относительно:
  • Нашего отношения к данным законопроектам
  • Причины нашего отношения к данным законопроектам
  • Одного совершенно очевидного фатального (для нужд данного поста мы будем предполагать абсолютную искренность законодателей, а в рамках такого допущения недостаток именно фатальный) данного пакета законопроектов, указывающего на необходимость доработки этого самого пакета.


Для реализации этого плана предлагаю отправить в Государственную Думу вежливое (обязательно вежливое! Ибо мы не варвары!) письмо.
Узнать, что это за письмо такое, как его отправлять и зачем оно нужно
Total votes 188: ↑167 and ↓21+146
Comments180

Самодельный фазовый лазерный дальномер

Reading time9 min
Views292K
image
В статье я расскажу о том, как я делал лазерный дальномер и о принципе его работы. Сразу отмечу, что конструкция представляет собой макет, и ее нельзя использовать для практического применения. Делалась она только для того, чтобы убедится в том, что фазовый дальномер реально собрать самому.
Читать дальше →
Total votes 187: ↑187 and ↓0+187
Comments72

Применение преобразования Пуассона для бесшовного наложения изображений

Reading time2 min
Views37K
В задачах машинного зрения и автоматизированной обработки изображений зачастую встречается задача бесшовного наложения изображений. Для наглядности, сразу приведу пример.


Читать дальше →
Total votes 84: ↑75 and ↓9+66
Comments33

Восстановление битой истории Skype (main.db)

Reading time4 min
Views60K
Skype database crashПромучавшись в очередной раз над восстановлением побившейся базы, решил набросать краткую инструкцию, как мне удалось вернуть почти всю историю сообщений скайпа. Знатоки sqlite3 приглашаются для написания более лучших способов, чем я нащупал наугад.

Предыстория


Переустановил ОС Win7, установил skype (6-й), привычно скопировал всю папку профиля из старого:
%AppData%\Roaming\Skype\мой_профиль\
в новое место.

Запускаю скайп и вдруг он виснет на автовходе. После повторного запуска вижу приглашение войти. Вхожу — все контакты на месте, а сообщений — практически нигде нет. Только в некоторых групповых чатах сохранились. Вся личная переписка, коей скопилось немало — исчезла. Проделал N(^k) попыток копировать базу данных, удаляя файлы блокировок, is-corrupt и прочие. Скайп ругается, что с базой проблемы, затем просит перезайти — после чего сообщений нет.
Погуглив, нашел хабро-посты про экспорт сообщений, угон аккаунтов и т.п. Ага, значит sqlite! Это обнадёживает.
Читать дальше →
Total votes 38: ↑32 and ↓6+26
Comments24

Runtime-генерирование .Net-кода для тех, кому некогда

Reading time8 min
Views35K
Инфраструктура .Net содержит встроенные средства генерирования кода (On-the-Fly Code Generation). Это позволяет .Net-программе в момент своего исполнения самостоятельно (без участия программиста) скомпилировать текст, написанный на каком-либо языке программирования и исполнить получившийся код. Логично было бы ожидать, что для осуществления этих действий в стандартной .Net-библиотеке предусмотрен простейший метод соответствующего класса. Но к сожалению это не так. Microsoft, проделав огромный путь по встраиванию в среду .Net средств генерирования кода, не сделала самый последний шаг навстречу простейшим потребностям программистов. Значит, придётся сделать этот шаг самостоятельно.

Самое простое средство предлагаемое Microsoft для решения описанной задачи — это класс CSharpCodeProvider, который входит в стандартную библиотеку .Net. Использование этого класса — не очень сложная задача, но тем не менее было бы полезно иметь инструмент, превращающий использование сгенерированного на лету кода в задачу тривиальную.
Вот что получилось в результате
Total votes 58: ↑51 and ↓7+44
Comments29

Information

Rating
Does not participate
Location
Yerevan, Армения
Registered
Activity