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

Предположим, что у меня есть два приложения, написанные в C#.. первое-это стороннее приложение, которое вызывает событие под названием "OnEmailSent".

Второе-это пользовательское приложение, которое я написал, что хотел бы каким-то образом подписаться на "OnEmailSent" даже первого приложения.

Есть ли какой-либо способ, которым я мог бы каким-то образом прикрепить второе приложение к экземпляру первого приложения, чтобы прослушать событие "OnEmailSent"?


Поэтому для дальнейшего разъяснения мой конкретный сценарий заключается в том, что у нас есть пользовательское стороннее приложение, написанное на c#, которое вызывает событие "OnEmailSent". Мы можем видеть, что событие существует, используя рефлектор.

То, что мы хотим сделать, - это выполнить некоторые другие действия, когда этот компонент отправляет email.

Самый эффективный способ, который мы можем придумать, - это использовать некоторую форму IPC, как предложил Андерс, и слушать событие OnEmailSent, вызванное сторонним компонентом.

Поскольку компонент написан на языке C#, мы играем с идеей написать другое приложение C#, которое может присоединяться к исполняющему процессу, и когда оно обнаружит, что событие OnEmailSent было вызвано, оно выполнит свой собственный код обработки событий.


Возможно, я что-то упускаю, но из того, что я понимаю о том, как работает удаленное взаимодействие, следует, что должен быть сервер, определяющий какой-то контракт, на который клиент может подписаться.

Я больше думал о сценарии, в котором кто-то написал отдельное приложение, например outlook, которое предоставляет события, на которые я хотел бы подписаться из другого приложения.

Я предполагаю, что сценарий, о котором я думаю, - это отладчик .net и то, как он может присоединяться к исполняемым сборкам для проверки кода во время его выполнения.

c#   events   delegates    

361   5   00:57, 7th August, 2020


Получить последний элемент в таблице-SQL

У меня есть таблица истории в SQL Server, которая в основном отслеживает элемент через процесс. Элемент имеет несколько фиксированных полей, которые не изменяются на протяжении всего процесса, но имеет несколько других полей, включая статус и идентификатор, которые увеличиваются по мере увеличения шагов процесса.

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

Select * from HistoryTable where BatchRef = @BatchRef

Он вернет все шаги для всех элементов в пакете-например

Id      Status  BatchRef        ItemCount
1       1       Batch001        100
1       2       Batch001        110
2       1       Batch001        60
2       2       Batch001        100

Но чего я действительно хочу, так это:

Id      Status  BatchRef        ItemCount
1       2       Batch001        110
2       2       Batch001        100

Edit: Appologies - кажется, не удается получить теги TABLE для работы с Markdown - последовал за справкой к письму и выглядит нормально в предварительном просмотре

sql   sql-server   database   tsql    

551   6   00:54, 7th August, 2020


Необычное использование побитового XOR в Javascript?

Привет.


Отлаживая недавно очередной кусок чужого кода наткнулся на такой цикл:

while (--i ^ -1) /* тело цикла */;


при этом, изначально i равно некоторому положительному числу. То есть, побитовый оператор используется здесь для целых чисел. Немного подумав, я понял, что результат побитового XOR обратится в нуль единственно в случае, когда числа равны. Тогда условие кастуется в true. В противном случае, будет не-ноль, что кастуется в false.


Получается, можно использовать побитовый XOR вместо оператора != (если мы заранее знаем, что сравниваемые величины суть числа).


Отсюда у меня возник вопрос, который я хочу поставить перед аудиторией.


Почему автор использует XOR?


Вчера весь вечер я размышлял над этим и наиболее правдоподобной причиной мне показалось желание написать «крутой непонятный код». Сразу вспомнилось, как я, когда начинал постигать азы программирования, вдруг обнаружил, что могу писать «лаконичный код, который сложен для понимания и который работает». Мне казалось, что это свидетельствует о каких-то скиллах. На самом деле, понятно, что это свидетельствует об обратном. В пользу этой гипотезы было ещё то, что весь остальной код в окрестности приведённого фрагмента был написан подобным образом.


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


В результате (безуспешно пытаясь заснуть на протяжение двух часов :) ), я встал, подошёл к компу и написал скриптик, который делал много сравнений тем и иным способом и мерял время.


Оказалось, что если использовать побитовый XOR вместо !=, появляется прирост в производительности (по крайней мере на Firefox), этот прирост стабильный (то есть он есть всегда, то больше, то меньше), но составляет всего лишь около 1%.


Может быть, есть ещё какие-нибудь особенности, дающие преимущество побитовому XOR?

JavaScript    

340   7   00:53, 7th August, 2020


Выталкивание MSI файлов

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

Мне интересно, требуется ли, чтобы SMS использовал файлы MSI или он может обрабатывать другие типы установщиков (.exe). Если нет, существуют ли программы с открытым исходным кодом для создания файлов MSI?

deployment   installer   windows-installer    

417   3   00:51, 7th August, 2020


Клиент постоянно требует консультаций(бесплатных), как быть?

Сначала на этапе разработки сайта клиент постоянно мучал вопросами о сайте, о движке, о хостинге. Причём явно было видно что ему эти ответы нужны просто так, для интереса. Человек совершенно в этом всём не разбирается. Теперь когда настало время поисковой оптимизации клиент вообще залез на шею с вопросами «а почему так, а почему не так, объясните мне что вы делаете, зачем вы это делаете, как вы это делаете...». При попытке отказать в ответе получаешь кучу криков вида «Я ваш клиент, я деньги плачу! Я хочу знать что происходит с моим сайтом!». Сейчас на все эти разговоры тратится около 2х — 3х часов в день. Естественно, за это время никто и не думает ничего платить. Вот мне интересно, уважаемое хабрасообщество, как вы реагируете на такие случаи?

Организация   работы   Client   side   optimization    

339   10   00:45, 7th August, 2020


Каковы некоторые хорошие серверы SSH для windows?

Попытка установить сервер SSH на сервере Windows Server 2003. А какие из них хорошие? Желательно с открытым исходным кодом. Я планирую использовать WinSCP в качестве клиента, поэтому сервер, который поддерживает расширенные функции, реализованные этим клиентом, будет отличным.

windows   deployment   ssh   winscp    

398   7   00:43, 7th August, 2020


Nginx + php-fpm + freebsd. проблема?

Собрал из портов nginx и php5 с php-fpm



Создал vhost для nginx

server {<br/>
 server_name site1;<br/>
 listen 80;<br/>
 access_log /server/logs/nginx/site1.access.log;<br/>
 error_log /server/logs/nginx/site1.error.log;<br/>
<br/>
location ~ \.php$ {<br/>
 fastcgi_pass 127.0.0.1:9000;<br/>
 fastcgi_index index.php;<br/>
 fastcgi_param script_FILENAME /server/www/site1$fastcgi_script_name;<br/>
 include fastcgi_params;<br/>
 }<br/>
 <br/>
 location / {<br/>
 root /server/www/site1;<br/>
 }<br/>
 <br/>
<br/>
}<br/>




Добавил в rc.conf

nginx_enable=&quot;YES&quot;<br/>
php_fpm_enable=&quot;YES&quot;<br/>




Запустил nginx и php-fpm

/usr/local/etc/rc.d/php-fpm start<br/>
/usr/local/etc/rc.d/nginx start<br/>




Результат:

PHP страницы не возвращают ничего, даже если это просто текст и там нет скриптов. В error.log nginxа php-fpmа ничего, в server/logs/nginx/site1.error.log тоже ничего.

Код ответа 200.



Кто может разъяснить?

Заранее спасибо.

PHP   Nginx   FreeBSD    

345   2   00:40, 7th August, 2020


Хороший смартфон-камерофон?

Добрый день, уважаемые хабровчане. Хотелось бы приобрести себе смартфон (коммуникатор) с хорошей или даже очень хорошей камерой. По деньгам особо ограничений нет (до 1200$). Что посоветуете?

Мобильные   устройства    

309   5   00:39, 7th August, 2020


Программа поиска сходства изображений

Есть очень много графиков, сохраненных в графическом формате. Графики генерировались при помощи программы. Однако, в связи с тем, что программист, составляющий программу для создания графиков, мог ошибиться, то другой независимый программист написал собственную программу и так же сгенерировал графики. Теперь осталось сверить их. Но уж совсем не хочется портить зрение и очень хотелось бы автоматизировать этот процесс. Поэтому нужна готовая программу, которая найдет «10 отличий» 2-х изображений. Если есть такие программы — прошу предоставить хотя бы название, а еще бы лучше ссылку на скачивание.