zed.0xff.me

demangle MSVC, Delphi & C++Builder mangled function names with pure Ruby

Ever wanted to convert @afunc$qxzcupi or ??3@YAXPAX@Z to something more human-readable?

(ofcourse you wanted, and you know about tdump.exe and undname.exe :)

And now you can do it using pure ruby, thanks to unmangler gem:

Unmangling Borland mangled names

1
2
3
4
5
6
7
8
require 'unmangler'

puts Unmangler.unmangle "@afunc$qxzcupi"
puts Unmangler.unmangle "@Forms@TApplication@SetTitle$qqrx17System@AnsiString"

# output:
# afunc(const signed char, int *)
# __fastcall Forms::TApplication::SetTitle(const System::AnsiString)

Unmangling MSVC mangled names

1
2
3
4
5
6
7
8
require 'unmangler'

puts Unmangler.unmangle "??3@YAXPAX@Z"
puts Unmangler.unmangle "?AFXSetTopLevelFrame@@YAXPAVCFrameWnd@@@Z"

# output:
# void __cdecl operator delete(void *)
# void __cdecl AFXSetTopLevelFrame(class CFrameWnd *)

And now w/o arguments

1
2
3
4
5
6
7
8
9
require 'unmangler'

puts Unmangler.unmangle "@Forms@TApplication@SetTitle$qqrx17System@AnsiString", :args => false

# outputs "Forms::TApplication::SetTitle"

puts Unmangler.unmangle "?AFXSetTopLevelFrame@@YAXPAVCFrameWnd@@@Z", :args => false

# outputs "AFXSetTopLevelFrame"

Links

  1. unmangler gem on rubygems.org
  2. unmangler sources on github.com

TBD: GCC support

новый gem: Яндекс.Метрика

Установка

Добавьте в config/environment.rb:

1
    config.gem "yandex_metrika", :lib => "yandex/metrika", :source => "http://gemcutter.org"

и выполните команду:

1
    rake gems:install

Описание

Быстрая интеграция Яндекс.Метрики в ваше Rails-приложение.

По умолчанию код метрики автоматически вставляется в каждую страницу перед
закрывающим тэгом </body>.
Но сначала нужно корректно сконфигурировать плагин, иначе он будет ругаться.

Конфигурация

Для этого добавьте следующий код в config/environment.rb:

1
2
3
    if defined?Yandex::Metrika
        Yandex::Metrika.counter_id = '123456'
    end

А для избежания замусоривания environment.rb всякими плагинами -
можно добавить этот конфиг в config/initializers/yandex_metrika.rb

Вместо ‘123456’ нужно вставить ваш личный COUNTER_ID, который можно вытащить
из javascript-кода, предоставляемого Яндексом: “new Ya.Metrika(123456)”,
тут 123456 и есть искомый код.

По умолчанию код метрики вставляется в страницы только при использовании
production окружения. Для активации кода и в development нужно сделать так:

1
    Yandex::Metrika.environments = %w'production development'

Если есть необходимость для каких-то страниц выключить код Яндекс.Метрики – то
добавть следующий код в соответствующий класс контроллера:

1
    skip_after_filter :add_yandex_metrika_code