среда, 16 декабря 2015 г.

Could not load file or assembly or one of its dependencies

Подключил к dotNET проекту стороннюю библиотеку, запускаю, получаю FileNotFoundException Не удалось загрузить файл или сборку "***.dll" либо одну из их зависимостей. Не найден указанный модуль.(Could not load file or assembly '***.dll' or one of its dependencies. The specified module could not be found.)
Как посмотреть зависимости?
первая идея ILSpy, но проблема была в том, что сторонняя сборка требует кучу unmanagement библиотек.
на помощь пришла утилитка Dependency Walker
короче рекомендую

понедельник, 23 ноября 2015 г.

RabbitMQ: Erlang machine stopped instantly (distribution name conflict?).

Сменилось имя компа, соответственно при запуске службы RabbitMQ она сразу крешилась со следующими сообщениями в логе:

  • RabbitMQ: Erlang machine stopped instantly (distribution name conflict?). The service is not restarted as OnFail is set to ignore.
  • Служба "RabbitMQ" завершена из-за ошибки Процесс был неожиданно завершен.

В папке C:\Users\{MyUserName}\AppData\Roaming\RabbitMQ\db были найдены папки, в названии которых фигурировало старое имя компа.

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

  1. cd %programfiles(x86)%\RabbitMQ Server\rabbitmq_server-3.5.6\sbin
  2. rabbitmq-service.bat remove
  3. rabbitmq-service.bat install
все действия пришлось выполнять "От имени администратора"

среда, 11 сентября 2013 г.

requirejs module

Решил написать Hello World с использованием requirejs сделал простой модуль:
define(
    'module',
    ['jquery'],
    function ($) {
        function Foo() {
            this.bar = function (name) { return name+': Hello world!!'; }
        }
        return new Foo();
    }
);


ну и его вызов:
require(
    ['jquery', 'module'],
    function ( $,m) {
        $(document).ready(function () {
            $('.hello').html(m.bar('Drypa'));
        });
       
    }
);

и получаю сообщение о том, что m.bar не определено.
в фаербаге выясняю что мой объект m равен
Object { id="_@r5", uri="js/_@r5.js", config=function()}
несколько минут гугления не помогли.
Всё оказалось просто, нечего называть модули 'module'.

суббота, 26 ноября 2011 г.

.gitconfig

[alias]
st = status
ci = commit
co = checkout
br = branch
[color]
branch = auto
diff = auto
interactive = auto
status = auto

пятница, 26 ноября 2010 г.

SVN pre-commit hook

задача. дано сервер на винде(хотя думаю это не принципиально) на нем VisualSVN. надо запретить коммиты с пустым логом.

решение. естественно нашел на просторах интернета:

"ПУТЬ К svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo "Commit Comments are Required" >&2
exit 1
:OK
exit 0


* This source code was highlighted with Source Code Highlighter.

среда, 26 мая 2010 г.

Регулярные выражения

Очень понравилась статья, фактически это тот минимум, что надо знать для работы с регулярными выражениями. Правда в некоторых местах автор немного "ошибается" в описаниях, тут просто надо обратить внимание, что например на паттерн [^аеёиоуыэюя] будет матчится не только согласные, но и заглавные гласные, и цифры. в остальном статья просто супер!
ссылка

понедельник, 5 апреля 2010 г.

Eclipse: resource is out of sync with the file system

Эти заметки надо потом объединить в одну, под общим названием "Настройка Eclipse под себя".

Итак первое неудобство, после svn-update, ну или если файлы проекта изменились извне eclips-а при попытке открытия файла возникает сообщение
resource is out of sync with the file system...
бла-бла-бла, нажмите F5 для обновления
Мне лень постоянно нажимать F5 или Refresh Project...
Итак: идем Window->Preferences->General->Workspase интересует галка "Refresh automatically"
я заодно выставил и автосохранение перед сборкой.
и text file encoding - UTF-8

NB!: Да, кстати, не зря это всё в меню Workspase находится, при переключении на другой воркспейс эти настройки теряются.

суббота, 27 марта 2010 г.

В тему пятничного "ночного собеседования" ;-)

Очень понятное описание работы с INNER JOIN, LEFT JOIN, RIGHT JOIN
http://barulina.ru

вторник, 9 марта 2010 г.

Проблемы с Mindows Mobile(Media Player)

Перестал тут на моем Asus P535 запускаться Media Player, соответственно(по логике MS) звонки я слышать перестал(в место мелодии звонка только один короткий писк) оказалось
"Причиной того, что wmplayer.exe не запускается, является то, что в каталоге ApplicationData\Volatile скопилось более тысячи каталогов начинающихся с XMEI* - все удаляем - и Windows media player запускается, звонки работают."

Получается, что MS решили, что нефиг тысячу раз открывать плеер, на тысячу первый раз он отказывается работать

четверг, 25 февраля 2010 г.

.NET получить номер версии

Задача Visual Studio не совсем вменяемым на мой взгляд( с помощью честно стыренного где-то JS скрипта и post-build Event) изменяет номер версии сборки. И вот мне захотелось его где-нибудь отобразить. Например мне очень часто приходится встречаться с такой ситуацией: приходит пользователь, говорит: "У меня вот то-то и то-то в программе не работает, а у Васи/Пети/etc. - работает." Теперь ответ на такой вопрос скорее всего сведётся к следующему: "а какую версию используете? посмотри в заголовке окна(например),1.0.0.0, ага, а Вася с Петей и Etc уже давно перешли 2.12.365.98729, и там эта функциональность была реализована".

Короче гордиться особо нечем, всё как обычно до безобразия просто, даже глупо было гуглить такое:
System.Reflection.Assembly.GetCallingAssembly().GetName().Version.ToString(3)

* This source code was highlighted with Source Code Highlighter.

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

четверг, 4 февраля 2010 г.

Serialization .net( основные требования)

Всё чаще стал использовать XML не только как хранилище контента, но и для хранения настроек программ.
Сейчас после того, как очередной раз поймал InvalidOperationException при сериализации решил написать для себя список требований к объекту:
1) должен иметь атрибут
[Serializable]
* This source code was highlighted with Source Code Highlighter.
2)Должен иметь конструктор по-умолчанию(без параметров)

Из основного вроде всё, если вспомню чего, потом допишу.

теперь частности:
если необходимо сериализовать класс-наследник, то у базового класса надо с помощью атрибута XmlInclude перечислить ему(базовому) все типы наследников примерно так:
[XmlInclude(typeof(Information)), XmlInclude(typeof(Episode))]
public abstract class Element


* This source code was highlighted with Source Code Highlighter.

очень хорошо сериализуются коллекции, я использую List, но думаю и с другими проблем быть не должно.Вот пример списка, где в качестве типа T - абстрактный класс:
[XmlArrayItem(typeof(Information)), XmlArrayItem(typeof(Episode))]
public List<Element> Actions


* This source code was highlighted with Source Code Highlighter.
Просто указываем с какими элементами может иметь дело List

вторник, 6 октября 2009 г.

Как получить список всех полей(методов, etc) у Структуры(класса) в .Net

Дано: есть структура(несколько структур) с огромным количеством полей. задача: проделать однотипные действия с этими полями.
Сразу было понятно, что писать на каждое поле это действие - труд бестолковый и никому не нужный, кроме того, если потом кто-то захочет добавить/удалить поля исходной структуры, то потребуется переписывать заново код.
И тут, как говорится, нам на помощь приходит .net reflection
больше говорить нечего, исходник говорит сам за себя:


FieldInfo[] fields = typeof(TRZU).GetFields();//Тут получили все поля структуры
foreach (FieldInfo mi in fields)
{
//...
ZTVarChanded(mi.Name, mi.GetValue(rzu).ToString());
}


* This source code was highlighted with Source Code Highlighter.

как нетрудно догадаться: mi.Name - это имя переменной(короткое имя)
а так mi.GetValue(rzu) - получается значение этой переменной в экземпляре этой структуры.

Ну, а так-бы получилось без использования этой чудо фичи:


  1. if (zt.iPosition != _zt.iPosition)
  2. {
  3. ZTVarChanded("iPosition", zt.iPosition.ToString());
  4. }
* This source code was highlighted with Source Code Highlighter.

//И ещё примерно 200 таких блоков на каждое поле структуры


PS:
У структуры можно получить всё, что угодно, например, можно получить вообще все члены для этого всего навсего используется чудо функция GetMembers();

пятница, 31 октября 2008 г.

Как подключить Flash OCX к своему .NET приложению(точнее как получить из OCX->DLL)

Задача - сделать свой Flash player.
Запускаем Visual Studio command prompt
aximp.exe -source "путь-к-файлу-ocx"
в результате чего получаем 4 файла
  • AxShockwaveFlashObjects.dll
  • AxShockwaveFlashObjects.pdb
  • ShockwaveFlashObjects.dll
  • AxShockwaveFlashObjects.cs
Собственно говоря нам нужны только вот эти 2 dll-ки, причем в References можно добавлять только AxShockwaveFlashObjects.dll

вторник, 7 октября 2008 г.

Оффтоп

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

пятница, 3 октября 2008 г.

MySQL Install

При установке MySQL сервера столкнулся с ошибкой:
cannot create windows service for Mysql error: 0

помог отказ от конфигурации после установки, ребут. после чего конфигурация прошла успешно.

воскресенье, 28 сентября 2008 г.

Оптимизация TortoiseSVN

Ну, начнём-с.
Стал я тут замечать, что иногда(особенно когда мучит неодолимое желание поработать) система начинает жутко тормозить.
не зная на что жаловаться, остановил SQL server и тому подобные службы - не помогло.
и тут наткнулся на блог товарища Frobozznik где он написал о проблеме с TortoiseSVNCache, за что ему большое спасибо.
В общем вот гайд.

Оффтоп

тест