Как стать автором
Обновить
43
0
Денис @Klotos

Пользователь

Отправить сообщение

Почему автомобильный аккумулятор нельзя использовать в ИБП?

Время на прочтение7 мин
Количество просмотров364K
Предыстория

На тот момент, когда я первый раз попробовал заменить в ИБП старый аккумулятор ёмкостью 7Ач на старый автомобильный аккумулятор номинальной ёмкостью 65Ач, я ещё не знал, почему этого нельзя делать, и как это может навредить здоровью аккумулятора, самому ИБП и людям, проживающим в одном помещении с ним.

Доработка бесперебойника не заняла много времени, но профит был заметен сразу же. Сто-ватная нагрузка в виде домашнего «сервера» продержалась порядка двадцати часов без внешнего питания, хотя раньше 10 минут — это был предел, которого хватало разве что на корректное завершение работы. Более длительных отключений за время эксплуатации данной модификации замечено не было, а подключение интернета по технологии GPON позволяло серверу оставаться в сети даже при масштабных отключениях электроэнергии.



Но это было давно. А год назад мне случайно попалось на глаза объявление о продаже нескольких бывших в употреблении ИБП APC 3000 за смешные деньги, 4000 рублей за штуку, без аккумуляторов, но рабочие. Немного подумав, решил что надо брать, причём сразу два, правда к моменту покупки цена успела подняться до 5000 рублей за штуку, но меня это не остановило, ведь в магазине за те же деньги предлагали лишь варианты на 1кВт, да и то от всяких noname фирм с не очень лестными отзывами и модифицированным синусом.
Читать дальше →
Всего голосов 61: ↑54 и ↓7+47
Комментарии183

Почему я не преподаю SOLID и «принцип устранения зависимостей»

Время на прочтение5 мин
Количество просмотров65K

Статья 1. Почему я не преподаю SOLID


Если вы разговариваете с кем-то, кому небезразлично качество кода, уже достаточно скоро в разговоре всплывёт SOLID — аббревиатура, помогающая разработчикам запомнить пять важных принципов объектно-ориентированного программирования:

SOLID полезен. Его разработали знатоки в нашей области. Он помогает людям рассуждать о дизайне. Помогает создавать системы, устойчивые к изменениям.

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

Сегодня SOLID остается для меня важным, но я больше не пытаюсь сделать мой код SOLID. Я редко упоминаю его, когда говорю про дизайн. И тем более я не учу пользоваться им разработчиков, которым хочется почерпнуть хорошие дизайнерские методы проектирования. Он больше не находится у меня под рукой в моем «ящике для инструментов». Он лежит в пыльной коробке на чердаке. Я храню его, потому что он важен, но редко им пользуюсь.
Читать дальше →
Всего голосов 57: ↑47 и ↓10+37
Комментарии101

Высокопроизводительный код на платформе .NET

Время на прочтение16 мин
Количество просмотров34K
Здравствуйте, дорогие читатели!

Не так давно мы занялись проработкой книги "Writing High-Performance .NET code", которая до сих пор не переведена на русский язык, хотя ей и скоро год.



Нас, конечно, не удивило, что такую книгу уже растаскивают на цитаты, однако выяснилось, что уважаемый автор Бен Уотсон даже выложил на сайте «Codeproject» целую статью, написанную по мотивам одной из глав. К сожалению, объем этого материала слишком велик для хабропубликации, однако мы решили все-таки перевести первую часть статьи, чтобы вы могли оценить материал книги. Приглашаем к прочтению и к участию в опросе. Кроме того, если все-таки целесообразно перевести и вторую часть — пишите в комментариях, постараемся учесть ваши пожелания.
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии12

Ускоряет ли освобождение дискового пространства ваш компьютер?

Время на прочтение9 мин
Количество просмотров77K
Это перевод ответа на вопрос о влиянии свободного пространства на диске на производительность с сайта superuser.com — прим. переводчика



От автора: Похоже, я случайно написал целую книгу. Налейте себе чашку кофе перед чтением.

Ускоряет ли освобождение дискового пространства ваш компьютер?

Освобождение дискового пространства не ускоряет компьютер, по крайней мере не само по себе. Это действительно распространённый миф. Этот миф так распространён, потому что заполнение вашего жёсткого диска часто происходит одновременно с другими процессами, которые традиционно могут замедлить* ваш компьютер. Производительность SSD может снижаться по мере заполнения, однако это сравнительно новая проблема, свойственная SSD, и, в действительности, малозаметная для простых пользователей. В общем случае, недостаток свободного места — просто красная тряпка для быка (отвлекает внимание — прим. переводчика).
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии15

Что ж вы делаете, паразиты: распространённый микроб заподозрили в управлении поведением людей

Время на прочтение3 мин
Количество просмотров37K
image

Паразитическое одноклеточное toxoplasma gondii, принадлежащее к токсоплазмам, известно уже более 100 лет. К концу 20 века учёные более-менее изучили и способы размножения паразита, и то, как люди могут им заразиться. По разным оценкам, этот микроорганизм присутствует в организмах от 50% до 65% всех людей на планете.

Как ни странно, половое размножение у токсоплазм проходит исключительно внутри организмов животных из семейства кошачьих. Внутри всех остальных организмов, которые удаётся заразить, паразит размножается делением. При этом считается, что его присутствие практически не оказывает на организм никакого влияния. После того, как здоровая иммунная система за несколько дней справляется с новыми «гостями», микробы переходят в неактивное состояние. Опасность он представляет только для людей с нарушениями иммунной системы, а также для беременных женщин, которые заразились им впервые – в худшем случае токсиплазмы способны даже привести к летальному исходу у больных и у плода.
Читать дальше →
Всего голосов 51: ↑41 и ↓10+31
Комментарии47

Управление удалённым IIS

Время на прочтение8 мин
Количество просмотров14K

Вступление


Некоторое время назад мне была поставлена задача найти оптимальный способ программного управления удалённым IIS и реализовать его в виде некоего модуля. Задача интересная, с множеством трудностей, поэтому хочется поделиться своим опытом.

Вот список основных требований к реализуемому модулю:
  • Возможность выполнения основных операций с IIS:
    • создание сайта
    • создание virtual application
    • создание virtual directory
    • настройка bindings для сайтов, включая установку сертификатов SSL
    • создание пулов приложений с детальной настройкой
  • Поддержка параллельной работы с несколькими IIS на разных серверах фермы
  • Поддержка IIS версии 8.0 (более ранние версии поддерживать не нужно).

Одним словом, модуль должен был уметь практически всё, что можно сделать через IIS Manager.
Как реализовывался данный функционал
Всего голосов 10: ↑10 и ↓0+10
Комментарии8

Биологические эффекты долговременного космического полёта

Время на прочтение8 мин
Количество просмотров28K
Согласно распространённому стереотипу, всё очень просто: космонавт полетел на станцию и выполняет там эксперименты. Иногда его рабочие будни становятся героическими: на космической станции случается пожар, разгерметизация или ещё какая напасть, и он справляется с проблемами, но в целом ни во время, ни после полёта он не испытывает никаких проблем с собственным здоровьем или хотя бы гигиеной.

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

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

Радиация


Повышенные уровни радиации могут привести к катаракте. К примеру, поставивший рекорд срока пребывания на орбите Земли (221 день) Валентин Лебедев потерял зрение. Радиацией действительно нельзя пренебрегать.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии47

Вопросы про индексы, которые вам не надо будет задавать

Время на прочтение11 мин
Количество просмотров46K


После ответов на 14 вопросов об индексах, которые вы стеснялись задать, у меня возникло гораздо больше комментариев, уточнений и исправлений. Скомпилировать из всего этого статью выглядело затеей с минимумом пользы. И это заставило меня призадумался, а почему вообще мы должны «стесняться задавать» подобные вопросы? Стыдно не знать? А есть ли способ разобраться, не вгоняя себя в краску? Есть. Причем он избавит от многочисленных неточностей, которыми изобилуют многие «ответы». Вы будете чувствовать буквально каждый байт вашей базы кончиками своих пальцев.

Для этого, я предлагаю «поднять капот» у SQL Server и окунуться в сладостный мир шестнадцатеричных дампов. Может статься, что внутри все гораздо проще, чем вам казалось.
Читать дальше →
Всего голосов 36: ↑34 и ↓2+32
Комментарии9

14 вопросов об индексах в SQL Server, которые вы стеснялись задать

Время на прочтение26 мин
Количество просмотров1.1M
Индексы — это первое, что необходимо хорошо понимать в работе SQL Server, но странным образом базовые вопросы не слишком часто задаются на форумах и получают не так уж много ответов.
Роб Шелдон отвечает на эти, вызывающие смущение в профессиональных кругах, вопросы об индексах в SQL Server: одни из них мы просто стесняемся задать, а прежде чем задать другие сначала подумаем дважды.


От переводчика
Данный пост является компиляцией двух статей Роба Шелдона:

Если вы пишите запросы на языке T-SQL, но плохо понимаете откуда берутся данные, то стоит прочитать данный перевод.
Если же вы захотите знать больше, то в конце перевода я даю тройку книг с которых следует двигаться дальше.

Перейти к чтению
Всего голосов 40: ↑37 и ↓3+34
Комментарии44

Как убеждать людей в сети: семнадцать малоизвестных джедайских трюков

Время на прочтение11 мин
Количество просмотров305K


Хотите узнать, как на просторах интернета убеждать людей и получать от них желаемое?

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

В этой статье не будет ни слова о взаимном обмене, дефиците, социальном доказательстве и прочих широко известных принципах убеждения. Вы наверняка и так все о них знаете
Читать дальше →
Всего голосов 149: ↑108 и ↓41+67
Комментарии78

Исследуем базы данных с помощью T-SQL

Время на прочтение26 мин
Количество просмотров284K
Как dba и консультант по оптимизации производительности SQL Server в Ambient Consulting, я часто сталкиваюсь с необходимостью анализа узких мест производительности на экземплярах SQL Server, которые вижу первый раз в жизни. Это может быть сложной задачей. Как правило, у большинства компаний нет документации по их базам данных. А если есть, то она устарела, или же её поиск занимает несколько дней.

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

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

Как и с любыми скриптами, сначала проверьте их в тестовом окружении, прежде чем запускать в продакшене. Я бы рекомендовал вам погонять их на тестовых базах MS, таких как AdventureWorks или pubs.

Ну, хватит слов, давайте я покажу скрипты!
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии11

Феерическая расстановка всех точек над Lumia 1020 или каким должен быть настоящий камерофон с поддержкой RAW

Время на прочтение11 мин
Количество просмотров220K

Пришло время собрать в одном месте все-все-все мифы и разоблачения одного из самых противоречивых с точки зрения читателей камерофонов — Lumia 1020. (Внимание, много фото, красивых фото)

А также гвоздь программы, впервые на хабре, у всех на глазах: работа с RAW-исходниками, полученными с 1020, и их обработка.

Садитесь поудобнее, мы начинаем ;)
Какие вопросы чаще всего приходят в голову, когда читатель слышит выражение: «Камерофон Lumia 1020 с камерой в 41 мегапиксель»?

  1. 41 мегапиксель, как он там умещается?
  2. Соответствует ли остальное железо заявленному уровню фотомодуля?
  3. И всё же, там правда столько мегапикселей?
  4. Да даже если столько, какая от них польза? Зачем так много?
  5. Предположим, что в этом есть смысл, но RAW в смартфоне — это же перебор, толку от него с такой матрицы?!!
  6. Всё равно зеркалка лучше!

P.S. Да, у автора всё так же остался приступ «Люди любят обиженных» и он всё ещё отчаянно пытается восстановить честь финских инженеров, чьи достижения, по мнению автора, были незаслуженно проигнорированы в свете последних событий.


Пойдём по порядку.

1. 41 мегапиксель, как он там умещается?


Читать дальше →
Всего голосов 212: ↑174 и ↓38+136
Комментарии201

Удобный двоичный источник данных взамен Stream

Время на прочтение9 мин
Количество просмотров8.4K
Как обычно получают двоичные данные ваши .NET-компоненты? Если отбросить примитивный случай когда все данные уже в байтовом массиве, то уверен что в виде System.IO.Stream. В общем случае он позволяет собственно только одну операцию — считать в указанный байтовый массив (буфер) указанное количество байтов. При выполнении чтения с помощью этой операции возникают два вида затруднений и одно нерациональное использование ресурсов.

Затруднение номер один: если данные одного и того же источника нужны в нескольких компонентах, то после того как один компонент считал какие то данные из Stream, то он их «потребил», и другим компонентам они уже никак не достанутся. Затруднение номер два: данные нам нужны в виде некоторых блоков, а в результате чтения блок может оказаться в буфере лишь частично (только три байта 32-х битного числа, только половина букв слова и т.д.). Нерациональное использование ресурсов возникает из-за того, что каждый читающий данные компонент должен создавать свой собственный буфер для чтения. Далее я предлагаю простое в использовании решение указанных затруднений, которое позволит очистить ваш код, получить высокую производительность чтения и получать универсальные компоненты.
Читать дальше →
Всего голосов 11: ↑7 и ↓4+3
Комментарии41

ИБП для роутера

Время на прочтение4 мин
Количество просмотров228K
Вначале был свет, и было хорошо. Внезапно, отключили электричество, и родилась идея.

image

Дома имеется планшет и пара телефонов, которые позволяют пользоваться интернетом без шнурка к розетке. Инет приходит через 3G модем и раздается роутером через Wi-Fi. Остается мелочь – заставить работать роутер при отсутствии электричества.

Вот тут я и вспомнил про старенький источник бесперебойного питания (ИБП) Back-UPS 300. Вполне себе рабочий девайс, но давно пылящийся по причине того, что «ничего он не тянет, да и нафиг он нужен».

Идея такая – упростить схему, исключив преобразование в 220В, понижать 12В сразу в 5В и получить приличное время автономной работы.
Читать дальше →
Всего голосов 151: ↑145 и ↓6+139
Комментарии108

Защита .NET приложений — всё же, во что заворачивать селёдку?

Время на прочтение9 мин
Количество просмотров27K

Защита .NET приложений — всё же, во что заворачивать селёдку?



В пику вот этому обзору. Решил написать собственный обзор обфускаторов, ибо считаю вышеобозначенный не только поверхностным, но и вводящим в заблуждение.
Актуален один вопрос — так ли хорошо защищает тот или иной продукт от снятия защиты? Учитывая, что производители обфускаторов честно предупреждают — сборка остается дизассемблируемой. И это краеугольный камень проблемы защиты .Net приложений. Тотальная защита приводит к неудобствам запуска сборки в разных средах, обфускация — к условной открытости кода. Остается решать задачу по усложнению получения кода, его читабельности и снятию защиты.

Итак, что мы имеем:
Читать дальше →
Всего голосов 69: ↑51 и ↓18+33
Комментарии30

Простой способ добавить поддержку файлов лицензий в Ваше приложение .Net

Время на прочтение6 мин
Количество просмотров18K
Некоторое время назад приятель попросил автоматизировать часть рутинной работы его бизнеса. На тот момент я предвкушал наступление грядущего сокращения и с удовольствием согласился.
Разработка заняла три полных цикла и сейчас подходит к концу четвертый завершающий цикл работы над программой и у меня возникла идея двинуть свой продукт дальше в массы. Сказано сделано, началась работа по составлению договоров, изменению дизайна, отбутфорсингу и других прочих лабудей и возник интереснейший вопрос — а как защитить программу от не лицензионного использования и не дать возможности просто ее копировать?
Что я использовал
Всего голосов 24: ↑18 и ↓6+12
Комментарии16

От чего защищает strong name в .net cборках?

Время на прочтение4 мин
Количество просмотров16K
Основная цель strong name или подписи сборки это ее уникальность в GAC(Global assembly cache). На основании сборки во время подписи вычисляется криптографический открытый ключ, закрытый хранится в секрете у производителя сборки, хеш-функция от которого и составляет public token, что, по сути, есть strong name для сборки. Public token сохраняется в метаданных сборки и в паре с именем сборки, версией, и культурой, и служит для уникальной ее идентификации.

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

Но многие заблуждаются думая, что сборка со строгим именем защищена от модификации. Справедливости ради, стоит заметить, что если производитель сборки опубликовал public token или открытый ключ, например на своем сайте, то всегда можно проверить соответствует ли этот ключ или токен тому ключу, который зашит в используемые сборки, но это скорее придется проверить вручную. Важно другое, что строгое имя не защитит сборку от модификации, как многие думают, и соответственно механизм в CLR не отработает, как положено и загрузит модифицированную сборку.
Читать дальше →
Всего голосов 42: ↑26 и ↓16+10
Комментарии28

Отключение ctrl-alt-delete, alt-tab, Пуск и прочих сочетаний

Время на прочтение5 мин
Количество просмотров73K
Это вольный перевод статьи с сайта tamas.io о программном отключении и включении горячих клавиш Windows средствами C#. Совсем недавно мне самому понадобились подобные функции в моей программе и я с удивлением обнаружил, что в рунете ничего об этом нет, да и вообще в сети об этом сказано совсем немного. Так что, если интересно или также нужно, как было мне — добро пожаловать!
Читать дальше →
Всего голосов 10: ↑6 и ↓4+2
Комментарии7

Будущее C#

Время на прочтение3 мин
Количество просмотров64K
На конференции NDC 2013, недавно прошедшей в Лондоне, Мадс Торгерсен (Mads Torgersen), являющийся одним из разработчиков спецификации языка C#, рассказал в своём докладе “The Future of C#” о возможных нововведениях в нём.
Читать дальше →
Всего голосов 83: ↑78 и ↓5+73
Комментарии145

Задачи и отмена в .Net — tips & tricks

Время на прочтение11 мин
Количество просмотров101K
С выходом .NET Framework 4.0 в состав BCL была добавлена библиотека Task Parallel Library (TPL), реализующая параллелизм на основе задач. В основе библиотеки лежат типы Task и унаследованный от него тип Task. Эти типы являются обёртками для асинхронных операций; они позволяют абстрагироваться от таких технических деталей, как, например, потоки и синхронизировать асинхронные операции друг с другом.

В этой же версии .NET Framework появился мини-framework для кооперативной отмены асинхронных операций. Состоит он из всего трёх типов:
  • CancellationTokenSource — создаёт маркёры отмены (свойство Token) и обрабатывает запросы на отмену операции (перегруженные методы Cancel/CancelAfter).
  • CancellationToken — маркёр отмены; позволяет несколькими способами отслеживать запросы на отмену операции: опросом свойства IsCancellationRequested, регистрацией callback-функции (через перегруженный метод Register), ожиданием на объекте синхронизации (свойство WaitHandle).
  • OperationCanceledException — исключение, выброс которого по соглашению означает, что запрос на отмену операции был обработан и операция должна считаться отменённой. Предпочтительный способ генерации исключения — вызов метода CancellationToken. ThrowIfCancellationRequested.

Механизм отмены через CancellationToken является стандартным для TPL — есть перегрузки методов, принимающих CancellationToken, исключения OperationCanceledException специальным образом обрабатываются и т.д. Однако, как и в любом другом API, есть свои тонкости, хитрости, best practices.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии5

Информация

В рейтинге
Не участвует
Откуда
Украина
Зарегистрирован
Активность