Pull to refresh
6
0

User

Send message

Эффективная конкатенация строк в .NET

Reading time8 min
Views38K

Для программистов на платформе .NET одним из первых советов, направленных на повышение производительности их программ, является «Используй StringBuilder для конкатенации строк». Как и «Использование исключений затратно», утверждение о конкатенации часто неправильно понимается и превращается в догму. К счастью, оно не столь деструктивно, как миф о производительности исключений, но встречается заметно чаще.

Было бы неплохо, если бы вы перед прочтением данной статьи прочли мою предыдущую статью о строках в .NET. И, во имя удобочитаемости, дальше я буду обозначать строки в .NET просто строками, а не «string» или «System.String».

Я включил эту статью в список статей, посвящённых .NET Framework в общем, а не в список C#-специфичных статей, так как полагаю, что все языки на платформе .NET под капотом содержат один и тот же механизм конкатенации строк.
Читать дальше →
Total votes 52: ↑40 and ↓12+28
Comments38

Предельная производительность: C#

Reading time56 min
Views263K
performanceЯ поделюсь 30 практиками для достижения максимальной производительности приложений, которые этого требуют. Затем, я расскажу, как применил их для коммерческого продукта и добился небывалых результатов!
Приложение было написано на C# для платформы Windows, работающее с Microsoft SQL Server. Никаких профайлеров – содержание основывается на понимании работы различных технологий, поэтому многие топики пригодятся для других платформ и языков программирования.
Читать дальше →
Total votes 135: ↑90 and ↓45+45
Comments289

Выбор платформозависимой библиотеки в runtime

Reading time4 min
Views9K
Суть вопроса

В большинстве случаев .NET-приложения являются платформонезависимыми. Мы ожидаем, что наше приложение будет одинаково выполняться как в 32-хразрядной ОС, так и 64-хразрядной.

Так обычно и происходит до тех пор, пока нам не понадобится использовать внешние платформозависимые библиотеки, например неуправляемые. Если такая библиотека существует в вариантах и для x86, и для x64, то это может принести нам определенную головную боль. Будем исходить из того, что ограничивать наше приложение, например, только 32-хразрядным процессом не в наших правилах.

Возможно, нам придется поддерживать вдвое больше конфигураций проекта. В этом случае при отладке придется переключать конфигурации, ведь разработческий веб-сервер Cassini существует только в x86 варианте, а ReSharper может запускать тесты и в 64-хразрядном процессе. Кроме того, придется выпускать два дистрибутива и предоставлять пользователю при скачивании с сайта ох какой нелегкий выбор. Поэтому разумным решением выглядит выбор подходящей для работы библиотеки уже в runtime в зависимости от того, в каком процессе (32-х или 64-хразрядном) код выполняется. При этом сами проекты остаются AnyCPU.

В нашем приложении необходимо подключаться к к Oracle Database, для чего используются библиотеки Oracle Instant Client и Oracle Data Provider for .NET.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments12

А будет ли дождь?

Reading time5 min
Views25K
Время от времени я езжу на работу на велосипеде. Иногда на улице идёт дождь, погода «не велосипедная», и тогда возникает дилемма: немного подождать, пока он закончится, либо вообще ехать на автомобиле. Бывает и так, что с утра погода хорошая, а вечером начинает идти дождь и хочется найти «окно» для того, чтобы вернуться домой сухим. Пару раз доходило до смешного – с утра светит солнце, я выезжаю, минут через пять начинается неслабый дождик, а ещё через несколько минут он заканчивается, снова светит солнце, а я вхожу в офис мокрый до трусов.

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

Под катом мы сделаем следующее – программно загрузим карты дождя с одного из сервисов и посмотрим, что будет происходить в окрестностях определённой точки, сохранив результаты в dropbox. Нехитрое пятничное упражнение исполним, разумеется, в LabVIEW.
Читать дальше →
Total votes 44: ↑42 and ↓2+40
Comments30

Решаем 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

Обзор алгоритмов кластеризации числовых пространств данных

Reading time10 min
Views42K
Задача кластеризации – частный случай задачи обучения без учителя, которая сводится к разбиению имеющегося множества объектов данных на подмножества таким образом, что элементы одного подмножества существенно отличались по некоторому набору свойств от элементов всех других подмножеств. Объект данных обычно рассматривается как точка в многомерном метрическом пространстве, каждому измерению которого соответствует некоторое свойство (атрибут) объекта, а метрика – есть функция от значений данных свойств. От типов измерений этого пространства, которые могут быть как числовыми, так и категориальными, зависит выбор алгоритма кластеризации данных и используемая метрика. Этот выбор продиктован различиями в природе разных типов атрибутов.

В этой статье приведён краткий обзор методов кластеризации числовых пространств данных. Она будет полезна тем, кто только начинает изучать Data Mining и кластерный анализ и поможет сориентироваться в многообразии современных алгоритмов кластеризации и получить о них общее представление. Статья не претендует на полноту изложения материала, напротив, описание алгоритмов в ней максимально упрощено. Для более подробного изучения того или иного алгоритма рекомендуется использовать научную работу, в которой он был представлен (см. список литературы в конце статьи).
Читать дальше →
Total votes 45: ↑41 and ↓4+37
Comments10

Плейн- и радарспоттинг, или я болен авиацией

Reading time7 min
Views78K
Я болен авиацией. Да, именно так и никак иначе. На моем ноутбуке хранится куча мануалов к различным самолётам от Boeing и Airbus, пособия по радиообмену, фильмы по авиационной тематике. Помимо всего этого я слушаю авиадиапазон с помощью портативной радиостанции (которая, кстати, не имеет возможности передавать на этих частотах, только слушать!). И плюс ко всему я регулярно, раз или два в месяц выбираюсь к аэропорту Шереметьево и фотографирую самолёты, заходящие на посадку. В этом посте я расскажу, как докатился до такой жизни. Может быть кто-то из вас, уважаемые читатели, тоже заболеет авиацией.
Кому интересно — прошу под кат.
Читать дальше →
Total votes 201: ↑193 and ↓8+185
Comments84

Что не пишут в википедии о глобальных навигационных спутниковых системах

Reading time8 min
Views44K
Вдохновлённый серией постов «Теория радиоволн», я решился на аналогичный пост о системах спутникового позиционирования. Я работаю в структуре, которая занимается обеспечением функционирования системы ГЛОНАСС, поэтому постараюсь рассказать о ней и её конкурентах с несколько другой точки зрения. Пост будет именно об их устройстве, попутно хотелось бы развеять несколько мифов.
Читать дальше →
Total votes 178: ↑174 and ↓4+170
Comments161

MS SQL: hierarchyid — иерархия по-новому

Reading time4 min
Views50K
В наше время среди СУБД самую большую распространенность получили реляционные базы данных, в которых основными объектами являются таблицы и отношения между ними. Таблицы — это очень хорошо, они позволяют решить большинство задач по хранению данных и манипуляции с ними. Но в реальном мире сущности требующие хранения не всегда представлены в табличном виде. Одним из таких очень распространенных видов структуры данных отличных от таблицы является древовидная структура, когда каждый элемент данных имеет предка и потомков. Примером такой структуры может быть структура штата предприятия, в котором во главе стоит директор (корень дерева), его заместители, отделы с начальниками, которые подчиняются определенным заместителям, сотрудники отделов, которые подчиняются начальникам.

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

Однако, разработчики СУБД MS SQL предлагают в своей новой версии MS SQL 2008 для реализации древовидной иерархии новый тип хранения данных hierarchyid.
Читать дальше →
Total votes 35: ↑31 and ↓4+27
Comments35

Полоумный дом на Siemens Logo

Reading time4 min
Views133K
Попался на глаза пост, почитал… решил написать о своем варианте.

В общем, в 3х-комнатной квартире у меня «полоумное» освещение давным-давно. Основная его цель — поменьше жать выключатель. Изначально я в коридоре прямо в полу разместил четыре 12-вольтовых цветных точечных светильника. Потом добавил еще 2 в маленьком коридоре, потом еще 2 вставил в потолок (точнее в низ антресоли) у кухни. В полу, кстати, светильники устанавливать просто (полы то на деревянных лагах): взял насадку для дрели, которой сверлят дверные полотна под ручку. Ей и наделал аккуратные дырки прямо сквозь ламинат. Получилось как-то так:




Читать дальше →
Total votes 66: ↑62 and ↓4+58
Comments48

Телевизор в сети

Reading time4 min
Views71K
Дано: современный телевизор, модель не играет большой роли, главное чтобы был сетевой плеер.
Требуется: подцепить его к домашней сети чтобы он проигрывал хранящиеся на серваке фильмы.


Читать дальше →
Total votes 20: ↑11 and ↓9+2
Comments69

Настройка SMS уведомлений в zabbix

Reading time10 min
Views59K
Вопрос SMS уведомлений в zabbix уже освещался на Хабре и проблема решалась с использованием СМС-шлюзов. Также упоминали про Отправку SMS c помощью Delphi. Я же хочу рассказать, как настроить SMS уведомления используя USB модем.
Итак, что имеем:

1) довольно обширная ИТ-инфраструктура

2) система мониторинга Zabbix 2.0.3 (актуальная версия на момент написания статьи) функционирующая под Fedora 14 x64

3) 3G USB модем ZTE MF100 от национального украинского оператора Киевстар.



4) Prepaid симка, которая шла в комплекте с модемом.

Также для модема была куплена корпоративная 3G симка, но её использовать не получится, так как с 3G-карточек невозможно позвонить и отправлять смс, а это нам не подходит.Итак, положил на карточку небольшую сумму «для опытов», втыкнул модем в USB и
понеслась
Total votes 15: ↑13 and ↓2+11
Comments9

Отправка SMS с 3G/GSM модема

Reading time7 min
Views213K
Привет Хабр. В данной статье я бы хотел поделиться опытом работы с GSM модемом, а точнее опытом отправки SMS сообщений. Ниже будет описана реализация программы на Delphi для отправки SMS сообщений, а так же чтение и удаление входящих/исходящих сообщений с модема. В моём случае это был модем HUAWEI от MTS. Всех кого заинтересовал, прошу под кат.
Читать дальше →
Total votes 44: ↑40 and ↓4+36
Comments20

Интернет термометр или телеметрия загородного дома

Reading time6 min
Views109K
Построил я «загородный» домик, поскольку в нем не живу, столкнулся с проблемой определения температуры. На стройке живет теща. Вода в систему отопления набрана. Опытным путем определено, что при +8 в доме, трубы на стенах за гипсокартоном начинают промерзать, а при +18 теща болеть. Вот и возникла идея мониторить температуру удаленно.

После поисков в интернетах, было закуплено 2 девайса: отечественного производства ВМ1707 и китайский termoHID. Софт к обоим прилагался. Китайское творчество было наляписто, но по функцианалу немного превосходило наше, но к нашему девайсу можна подключать до 10 датчиков DS18B20. Этот аргумент был решающим.

Сейчас в системе 4 датчика, улица, 1-й этаж, 2-й этаж и чердак. Накоплено год статистики. Фронт выглядит вот так:

Читать дальше →
Total votes 32: ↑29 and ↓3+26
Comments41

Дефрагментация индексов со сбором статистики MS SQL 2008 R2

Reading time5 min
Views47K
Одна из первых задач, которая возникает перед DBA после развертывания новой БД — это настройка планов по ее обслуживанию. Зачастую, в план обслуживания включается задача по дефрагментации индексов. Мне нравится, когда я знаю не только то, что дефрагментация выполнилась ночью с воскресенья на понедельник, но и то, как она прошла, сколько выполнялась, какие индексы были перестроены и в каком состоянии они остались после дефрагментации.

Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments10

Удобный файлообменник с нуля

Reading time6 min
Views54K
Привет, Хабр!

Сегодня я хочу рассказать как создать удобную http/ftp файлопомойку. Сразу скажу – это довольно просто. Что требуется от читателя? Базовые навыки работы в консоли linux, умение пользоваться редактором nano и, естественно, желание создать себе свой небольшой файловый уголок в сети.
Я полагаю, следующее имеет смысл делать людям обладающим белым IP адресом и быстрым интернет-подключением. Мой вариант системы предполагает авторизацию ftp/http и возможность создания скрытых разделов, при этом остается возможность давать прямые ссылки на файлы. Также, я предусматривал пользование http мордой с мобильных устройств, поэтому интерфейсе скрипта нет ничего лишнего. Для любителей fancy-look и желающих красоты а не функциональности этот вариант, скорее всего, не подойдет. Но это вовсе не значит что твоя файлопомойка, мой любимый техногик, будет выглядеть некрасиво. Посмотреть что из этого выйдет можно по ссылке.
Для начала определим начальную конфигурацию: debian 6, apache2, php5, proftpd и хорошее настроение. Всеми любимая убунта тоже подойдет.
Читать дальше →
Total votes 27: ↑12 and ↓15-3
Comments20

Что такое Ivideon?

Reading time5 min
Views91K


В Ivideon нет рекламы. Вообще. Даже несмотря на то, что существенная часть наших пользователей подключены бесплатно.
Мы запустили сервис видеонаблюдения почти год назад и он был бесплатным без всяких ограничений для всех. Три месяца назад мы запустили коммерческие тарифы и ввели ограничения. Две камеры — бесплатно, включая возможность их трансляции на собственном сайте, а дополнительные камеры — за небольшую абонентскую плату. Большинству не корпоративных пользователей двух камер более чем достаточно.

Но самое важное, мы оставили сервис бесплатным почти для 100 000 аккаунтов, которые были зарегистрированы до ввода тарифов, независимо от количества подключенных камер. Мы не хотели терять наших клиентов из-за желания заработать больше.

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

Но речь не об этом. С момента появления нашего блога и нашей первой статьи на Хабре о том как создавался Ivideon, мы ни разу не рассказали о том, а что же мы сделали и зачем? То, что обычно компании первым делом публикуют на Хабре в виде собственной рекламы, мы пропустили. Позвольте нам сделать это сейчас и не получить уж слишком много минусов. Тем более мы просто хотим рассказать о нашем продукте, который позволяет не только в реальном времени наблюдать за яйцами.
Если просто, то Ivideon дает удобную возможность объединить в одном интерфейсе личного кабинета неограниченное количество камер, разбросанных географически. Они могут находиться как в одном офисе, так и на разных континентах.
Читать дальше →
Total votes 105: ↑85 and ↓20+65
Comments79

Радиоприемник 60-1700 МГц на RTL2832 за 20 баксов или SDR для начинающих

Reading time4 min
Views326K
В этой статье я расскажу о том, как, потратив совсем небольшие деньги и немного времени, получить радиоприемник, способный принимать что угодно в диапазоне 60-1700 МГц (радиостанции, звуковое сопровождение ТВ, радиолюбителей, карманные радиостанции и многое другое). Для этого
мы используем DVB-тюнер на чипе RTL2832, работающий в специальном режиме, который можно приобрести за $20 или даже дешевле.


Читать дальше →
Total votes 94: ↑91 and ↓3+88
Comments108

USB TV-тюнеры на rtl2832 — или как услышать в радиоэфире все за 600 рублей

Reading time5 min
Views503K
Давно я собирался купить какой-нибуть универсальный радиоприемник/радиосканер, чтобы полазить по эфиру, послушать о чем говорят ночью матёрые и бородатые радиолюбители…

До недавнего времени, это удовольствие обходилось от 300$ и до бесконечности. Ну а с переходом гос.органов (и России и за бугром) на цифровую (но пока еще не зашифрованную) связь APCO P25 стоимость удовлетворения нездорового любопытства стала ещё выше.

Год назад все изменилось — умельцы выяснили, что многие из продающихся у нас китайских USB TV-тюнеров за 600 рублей — фактически являются универсальным радиоприёмником, на который без каких-либо доработок можно послушать практически все-что угодно в диапазоне 50-900Мгц (если повезет — до 2200Мгц, но там голосом особо ничего не передают): переговоры самолётов с диспетчерами, строителей, такси, жучки в вашей квартире и многое другое.

Под катом я расскажу что и где покупать, как подключить и настраивать, ну и наконец — что можно послушать.
Читать дальше →
Total votes 144: ↑137 and ↓7+130
Comments147

Разворачиваем cron в Windows

Reading time2 min
Views75K
Стандартный планировщик Windows штука мощная, но столкнулся с проблемой, которая не позволила мне легко им пользоваться в «домашнем» выпуске Windows. Пришлось установить в систему настоящий cron. Ни капли не пожалел!
Как к этому пришёл, и что из этого поучилось под катом.
Читать дальше →
Total votes 25: ↑14 and ↓11+3
Comments23

Information

Rating
Does not participate
Location
Белгород, Белгородская обл., Россия
Registered
Activity