Pull to refresh
0
0
Send message

Как определить все мониторы и их разрешения

Reading time1 min
Views26K
image
Недавно возился с нормальной инициализацией окна, и стояла задача задетектить все мониторы и их разрешения. Оставлю тут решение для потомков.
Читать дальше →
Total votes 51: ↑37 and ↓14+23
Comments23

Аудит удаления и доступа к файлам и запись событий в лог-файл средствами Powershell

Reading time7 min
Views231K

Я думаю, многие сталкивались с задачей, когда к Вам приходят и спрашивают: «У нас тут файл пропал на общем ресурсе, был и не стало, похоже кто-то удалил, Вы можете проверить кто это сделал?» В лучшем случае вы говорите, что у вас нет времени, в худшем пытаетесь найти в логах упоминание данного файла. А уж когда включен файловый аудит на файловом сервере, логи там, мягко говоря «ну очень большие», и найти что-то там — нереально.
Вот и я, после очередного такого вопроса (ладно бекапы делаются несколько раз в день) и моего ответа, что: «Я не знаю кто это сделал, но файл я Вам восстановлю», решил, что меня это в корне не устраивает…
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments20

PHPExcel и большие файлы

Reading time4 min
Views99K
PHPExcel — отличная библиотека с огромным функционалом по работе с форматами xls, xlsx. Можно считывать, записывать, менять форматирование, задавать формулы, а из xlsx можно и картинки вытаскивать.

На хабре уже был пост про эту библиотеку - Универсальное чтение ячеек в PHPExcel. Я остановлюсь только лишь на главном минусе PHPExcel — вечно памяти не хватает, все время сыпятся ошибки «Fatal error: Out of memory». Этот пост о том, как это обойти.

Читать дальше →
Total votes 33: ↑25 and ↓8+17
Comments23

Перехват видео в браузере или TCP сниффер под Windows на коленке (часть вторая)

Reading time8 min
Views14K
Это обещанное дополнение к моему предыдущему посту, в котором рассказывается про альтернативную технику установки ловушек на функции. Одним из недостатков реализации ловушек в предыдущем посте было постоянное переписывание кода в начале перехваченной функции. В качестве альтернативы было упомянуто решение, которое не требовало бы постоянной перезаписи. Принципиальная схема его работы предоставлена здесь:

image
Исходники, детали и пояснения под катом…
Читать дальше →
Total votes 33: ↑32 and ↓1+31
Comments23

Перехват видео в браузере или TCP сниффер под Windows на коленке (часть первая)

Reading time19 min
Views39K
Однажды, не очень давно, мне порекомендовали фоновую качалку потокового видео под названием Jaksta, которая позволяет записывать потоковое видео на диск прямо во время просмотра YouTube, Facebook видео, GoogleVideo и так далее. В результате ее установки я получил стойкий BSOD при каждой загрузке Windows. Переключившись в Safe Mode я снес нафиг это творение, но возникли вопросы.
Краткое изучение софтины показало что она устанавливет NDIS Miniport драйвер, который конкретно в моей системе стал умирать при загрузке. «Нафига такие сложности?», подумал я и решил поэкспериментировать с реализацией перехвата потокового видео из браузера без всяких драйверов.
Читать дальше →
Total votes 91: ↑85 and ↓6+79
Comments38

Исследование изменений в базе данных посредством контрольных сумм

Reading time4 min
Views25K
Картинка Лупа. Исследование изменений в базе данных посредством  контрольных суммИсследование состояния базы данных очень значительно помогает при исследовательском тестировании. А сам тестировщик может найти такой баг, который может удивить самых матерых программистов.

Очень значительной частью приложения, над которым я работаю – является База Данных под управлением SQL Server и Oracle. За 10 лет существования самого приложения, количество таблиц выросло до 210 только в стандартной поставке, каждый пчих пользователя обложен триггерами, написано множество хранимых процедур и функций.

Но для меня важно лишь то, какие изменения данных провоцируют мои манипуляции с пользовательским интерфейсом.
Читать дальше →
Total votes 7: ↑4 and ↓3+1
Comments19

Создаем расширения для Google Chrome

Reading time6 min
Views50K
Вчера задался себе таким вопросом: как можно обезопасить мой профиль в Google Chrome и вообще все данные, которые в нем хранятся? Немножко погуглив, я нашел ссылки на кучу расширений (типа этого), которые позволяют устанавливать пароль как на браузер так и на отдельные его профиле (это логично, если знать как работает Chrome в режиме мультипрофильности). Я начал их устанавливать и сразу тесты на баги. И как оказалось ни один из них не хочет адекватно работать в режиме мультипрофильности. Не очень-то долго думая я решил написать собственное расширение и заодно разобраться в Google Chrome API.
Как я создавал своё расширение читайте под катом
Total votes 42: ↑32 and ↓10+22
Comments18

Укрощаем хоткеи системой плагинов на C#

Reading time9 min
Views6.1K
Привет, дорогой хабражитель!

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

Вступление


Примерно полтора месяца назад пользователь vvzvlad натолкнул меня на идею программы, для перевода различного текста по нажатию хоткея. Я очень долго пользовался этой программкой, но вот пару дней назад мне пришла в голову идея улучшить её.
Я решил добавить возможность назначать различные хоткеи на разные действия. Для этого я использовал систему плагинов.
В итоге получилась программа HotKeyHelper, которую вы можете скачать здесь.

image

Файл проекта находится здесь.

Под катом вы увидите исходный код программы и пояснения к нему.

Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments4

Многоклиентский сетевой протокол на C#

Reading time10 min
Views30K

Предисловие


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

Читать дальше →
Total votes 62: ↑47 and ↓15+32
Comments84

Создание msi-пакетов и установка любого ПО средствами групповых политик Windows

Reading time4 min
Views275K
Доброго времени суток, Хабр! Хочу представить интересный, по моему мнению, способ создания msi-инсталляторов для любого программного обеспечения и, как следствие, развертывание его средствами GPO. Подчеркну, что описанный метод не подразумевает создание «слепков» системы, а использует нативные инсталляторы софта, при чем для создания msi применяются только бесплатные для коммерческого использования продукты.
Читать дальше →
Total votes 25: ↑22 and ↓3+19
Comments26

Сервис для более эффективного пополнения запаса английских слов

Reading time2 min
Views49K
Добрый день!

Я хочу представить небольшой сервис, который создан, чтобы помочь в эффективном пополнении словарного запаса для английского языка:

image

Если коротко, работает он следующим образом.

1. Вы загружаете текст, который хотите прочитать. Это может быть URL статьи из интернета, книга или статья в pdf, doc, txt, ps или субтитры.

2. Система строит статистику слов и отображает слова, отсортированные по частоте употребляемости в тексте. Предварительно к словам применяется лемматизация (т. е. слова make и made будут считаться идентичными).

3. Вы отмечаете знакомые слова, а также слова, которые надо изучить.

4. Вы печатете слова, которые необходимо изучить, в удобном для вас формате (в том числе, с коротким англо-русским переводом, т. е. не полную словарную статью).

А теперь чуть подробнее
Total votes 86: ↑82 and ↓4+78
Comments72

Стеганография. Скрываем текстовую информацию в bmp файле. Практическая реализация на C#

Reading time7 min
Views38K
Доброго времени суток!

На Хабрахабре уже есть статьи на данную тему и я хочу поделится своим вариантом решения данной задачи. И так, начнем.

Читать дальше →
Total votes 32: ↑16 and ↓160
Comments9

Видеоурок по созданию интернет-магазина на MODX Revolution + Shopkeeper. Часть 1

Reading time1 min
Views14K


Начинаю делать серию видеоуроков по созданию интернет-магазина на MODX Revolution + Shopkeeper. Пока видео без голосового сопровождения, но думаю и так будет всё понятно.
Из первой части вы узнаете как:
  • Установить и настроить MODX Revolution;
  • Создать шаблоны сайта;
  • Создать меню;
  • Создать и настроить контекст для каталога товаров;
  • Установить Shopkeeper.
Читать дальше →
Total votes 31: ↑26 and ↓5+21
Comments12

Маленькие чудеса C#/.NET – структура DateTimeOffset

Reading time4 min
Views39K
Рассмотрим некоторые части .Net Framework'a, выглядящие тривиальными, но вполне способными сделать ваш код более простым как в написании, так и в сопровождении.


Пишущие на .NET (а если вы этого не делаете, то зря читаете этот пост) наверняка время от времени используют для своих нужд структуру DateTime. Эта структура удобна для хранения дат, времени или даты/времени, относящихся к локальной временной зоне (или же к UTC).


Однако, бывают случаи, когда вам необходимо сохранить время в виде смещения, а не конвертировать его в локальное время. И вот здесь вам на помощь придёт структура, впервые появившаяся в .NET 3.5 — DateTimeOffset.
Читать дальше →
Total votes 65: ↑58 and ↓7+51
Comments7

Работа с большими файлами экселя

Reading time5 min
Views52K
Что такое большой файл? Ну так чтобы реально большой? В бытность свою я думал, что это файлик на 50-60 тыс строк записей. И оставался я бы в таком неведении до сих пор, но пришлось выполнять один проект, в котором надо было работать с файлами на 600-800 тыс строк. Хождение по мукам — под катом:

Читать дальше →
Total votes 50: ↑35 and ↓15+20
Comments43

Сравнение объектов в C#.NET

Reading time6 min
Views136K
C#.NET предлагает множество способов сравнить объекты, как экземпляры классов, так и структур. Способов так много, что без упорядочения этих способов и понимания их грамотного использования и имплементации (при наличии возможности переопределения), в голове, неминуемо, образуется каша.
Читать дальше →
Total votes 41: ↑35 and ↓6+29
Comments25

Делаем библиотеку написанную на .Net понятной для Unmanaged кода

Reading time3 min
Views10K
Пол года проработав в компании, которая занимается программированием на MQL под Meta Trader столкнулся с таким заказом: клиенту нужно что бы программа была написана на C# или VB.Net.

Задача была в том, что бы написать программу на C# и dll на том же языке, которая связывает приложение с торговым советником на MQL. С одной стороны мне это на руку, так как C# изучаю больше года, с другой — стало непонятно, а как же это делается и вообще возможно ли это?
image
Читать дальше →
Total votes 43: ↑27 and ↓16+11
Comments40

Когда использовать Parallel.ForEach, а когда PLINQ

Reading time13 min
Views74K

Введение


Обычно, при оптимизации программы для многоядерных компьютеров первым шагом является выяснение возможности разделения алгоритма на части, выполняющиеся параллельно. Если для решения задачи необходимо параллельно обрабатывать отдельные элементы из большого набора данных, то первыми кандидатами станут новые возможности параллельности в .NET Framework 4: Parallel.ForEach и Parallel LINQ (PLINQ)

Parallel.ForEach


Класс Parallel содержит метод ForEach, представляющий собой многопоточную версию обычного цикла foreach в C#. Подобно обычному foreach, Parallel.ForEach выполняет итерации над перечислимыми данными (enumerable), но с использованием множества потоков. Одна из более часто используемых перегрузок Parallel.ForEach выглядит следующим образом:

public static ParallelLoopResult ForEach<TSource>(
			 IEnumerable<TSource> source,
			 Action<TSource> body)

Ienumerable указывает на последовательность, по которой нужно выполнить итерации, а Action body задает делегат, вызываемый для каждого элемента. Полный список перегрузок Parallel.ForEach можно найти здесь.

PLINQ


Родственный с Parallel.ForEach PLINQ представляет собой модель программирования для паралелльных операций над данными. Пользователь определяет операцию из стандартного набора операторов, включающих в себя проекции, фильтры, агрегирование и т.д. Подобно Parallel.ForEach PLINQ достигает параллельности, разбивая входную последовательность на части и обрабатывая элементы в разных потоках.
В статье выделяются различия между этими двумя подходами к параллельности. Разбираются сценарии использования, в которых лучше всего использовать Parallel.ForEach вместо PLINQ и наоборот.

Выполнение независимых операций


Читать дальше →
Total votes 79: ↑73 and ↓6+67
Comments9

XenApp: Опыт установки и настройки

Reading time6 min
Views90K
Доброго времени суток, Хабровчане.

Преамбула

XenApp (читается «ЗенАп») придуман компанией Citrix для виртуализации и доставки приложений через тонкий клиент, посредством своего собственного протокола CIA. Надо сказать, что идея сама по себе хороша, потому что в теории избавляет от многих головняков, типа покупки лицензионного софта от Империи Зла и других, чуть менее жадных вендоров. Конечно, это интересно, только если брать приложения в аренду, потому что лицензии на XenApp стоят достаточно дорого. Хочется отметить, что XenApp работает только под Windows.
Не знаю, к сожалению или к счастью, но все крупнейшие производители самого потребляемого софта сейчас имеют свои полнофункциональные продукты, доступные либо через web-интерфейс, либо через тонкий клиент, поэтому мне кажется, что XenApp, как отдельный продукт, очень скоро станет неинтересен конечному потребителю, и останется в поле зрения у компаний, которые сами занимаются арендой приложений. Как раз на аренду приложений сделала ставку моя компания.
И после того, как я был озадачен этой интересной затеей, я понял, что гугль ничего внятного на русском языке про XenApp не выдаёт, а всё, что можно покурить — это обширный мануал на сайте Citrix.com на английском языке. Но разве для нас это проблема?
Руководствуясь чувством «помочь ближнему своему» я решил описать процесс установки и настройки XenApp, который мне пришлось расковыривать самостоятельно, используя англоязычный мануал и плохо знакомого человека, который лицензированный специалист Citrix.
Читать дальше →
Total votes 26: ↑18 and ↓8+10
Comments16

Information

Rating
Does not participate
Registered
Activity