Как стать автором
Обновить
21
0

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

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

Проектирование по контракту

Время на прочтение5 мин
Количество просмотров23K
Два года назад мне посчастливилось побывать на лекции замечательного человека, одного из разработчиков языка Eiffel, Бертрана Мейера. Он читал в нашем университете (СПб ГУ ИТМО) лекцию о довольно интересной концепции проектирования ПО. Называется она «проектирование по контракту». Суть этой концепции я попытаюсь описать ниже.

Вот, например, когда вы с клиентом договариваетесь о совместной работе, то вы заключаете контракт. Т.е. вы описываете обязанности обоих сторон и возможные последствия в случае неожиданных ситуаций. Данный подход можно применить и к разработке ПО, где в качестве сторон выступают программные модули.
Проектирование по контракту является довольно простой, но, в то же время, мощной методикой, основанной на документировании прав и обязанностей программных модулей для обеспечения корректности программы. Я считаю, что корректная программа – это программа, которая выполняет не больше и не меньше того, на что она претендует.
Читать дальше →
Всего голосов 71: ↑62 и ↓9+53
Комментарии56

madVR: как выжать максимум качества из видео

Время на прочтение1 мин
Количество просмотров132K
imageВ первый раз я познакомился с madVR, когда обнаружил новый чекбокс в настройках MPC Home Cinema. Как оказалось, качество видео получаемое на выходе madVR видео рендерер просто не сравнимо ни с чем, что я использовал раньше (EVR, Overlay, VMR 7, 9 и Haali). madVR создавался с целью выводить видео максимально возможного качества. В чем особенности madVR и каким образом у него получается видео такого высокого качества?
Читать дальше →
Всего голосов 42: ↑36 и ↓6+30
Комментарии61

Работа программиста в КНДР

Время на прочтение1 мин
Количество просмотров7.4K
Северная Корея открыла для себя ещё один способ получить столь ценную для страны валюту: разработка программного обеспечения. Местные программисты работают в компании Nosotek Joint Venture Company. Первое совместное предприятие в области IT между западной фирмой и КНДР проводит отбор среди элитных математиков КНДР и обучает их программированию с нуля. Nosotek — единственная компания в Пхеньяне, предоставляющая сотрудникам доступ в интернет.

Как заявлено на сайте, программа обучения включает полный набор языков программирования: от ассемблера до C#, а также ядро Linux, макросы Visual Basic.
Читать дальше →
Всего голосов 59: ↑50 и ↓9+41
Комментарии114

Об F# для архитекторов

Время на прочтение13 мин
Количество просмотров8.7K
Данная статья выросла из доклада, сделанного Крисом Смитом, одним из разработчиков F# на конференции DevLink. В целом она носит обзорный характер, однако несмотря на это, и на то, что усилиями shwars, mezastel и отчасти вашего покорного слуги F# уже не раз мелькал на Хабре, думаю что этот язык программирования не стал еще настолько очевиден всем, чтобы эта статья полностью потеряла смысл. Более того, здесь Крис пытается ответить на главный вопрос, который, думаю, мучает всех, кто хоть раз слышал о F#. Где же все-таки его применять? Получилось у него или нет – вам судить. Надеюсь после прочтения у вас хоть что-то относительно всего этого прояснится. Если так, я буду считать свою миссию перевыполненной :)
P.S. Первый перевод, поэтому не обессудьте за некоторые возможные баги.
image
Читать дальше
Всего голосов 66: ↑52 и ↓14+38
Комментарии33

ASP.NET MVC 3: подробный обзор нововведений

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

Спустя более чем четыре месяца с момента выхода финальной версии фреймворка ASP.NET MVC 2, команда разработчиков рада представить первую предварительную версию ASP.NET MVC 3. Анонс и ссылку на загрузку можно найти здесь.

В этой статье будет дан обзор нововведений и изменений, которые произошли в новой версии фреймворка.

Совместимость и поддержка .NET Framework 4.0


В отличии от предыдущей версии, ASP.NET MVC 3 поддерживает только четвертую версию .NET Framework. Кроме того, компоненты разработчиков для интеграции в Visual Studio поддерживаются только для Visual Studio 2010 и Visual Web Developer Express 2010.

Фреймворк ASP.NET MVC 3 может быть установлен вместе с ASP.NET MVC 2, они могут использоваться отдельно друг от друга.

Читать дальше →
Всего голосов 77: ↑60 и ↓17+43
Комментарии33

Правила эффективного использования jQuery

Время на прочтение5 мин
Количество просмотров43K
Здесь приведен ряд очень простых правил, следуя которым, ваше сотрудничество с jQuery не будет омрачено скрежетом напрягшегося браузера. Конечно, не так часто случается, что скорость работы javascript’а оказывается критичной, однако такое все же может произойти, и произойти в самый неподходящий момент. Поэтому, лучше держать эти правила в голове и не пренебрегать ими.
Читать дальше →
Всего голосов 144: ↑112 и ↓32+80
Комментарии151

NetApp: начало

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


«NetApp? Это еще кто?» — возможно скажет рядовой российский IT-шник, прочитав заголовок поста.
Хотя, безусловно, как компания и ее продукты, NetApp рядовому хабраюзеру пока знакома гораздо меньше, чем, например, HP, или Microsoft, тем не менее пришла пора и ей появиться на Хабре. Тем более, я уверен, ей есть что рассказать интересного. NetApp всегда была «комьюнити-ориентированной» компанией, любящей и ценящей своих пользователей, я искренне хотел бы, чтобы в России она стала такой-же юзеролюбивой, как, например, у себя на родине, в США. Попробуем сделать этот шаг здесь.

Начав в 1993-м году как классический стартап, с идеи создания недорогого, простого в управлении, установке и обслуживании «устройства» (appliance) хранения данных, доступного любому, кому нужно хранить много данных на дисках, и быстро получать к ним доступ, компания угадала «волну» и получила широчайшую популярность в годы интернет-бума конца 90-х, когда молодым интернет-компаниям массово требовались такие несложные и производительные системы хранения на базе недорогих в использовании ethernet-технологий, которые «просто работают».
Читать дальше →
Всего голосов 76: ↑54 и ↓22+32
Комментарии122

Пишем свой Windows service

Время на прочтение3 мин
Количество просмотров143K
Многие из нас сталкиваются с такой задачей, когда нужно запускать своё приложение при запуске компьютера. Конечно можно поместить ярлык в автозагрузку, но как-то это неправильно. Да к тому же если комп перегрузился, а пользователь не залогинелся, то и ваше приложение тоже не запустится.

Самым верным решением в данной ситуации является написание Windows сервиса.

Пример создания сервиса в Studio 2010, .Net C# под катом
Читать дальше →
Всего голосов 95: ↑62 и ↓33+29
Комментарии47

Обзор типов индексов Oracle, MySQL, PostgreSQL, MS SQL

Время на прочтение6 мин
Количество просмотров198K
В одном из комментариев здесь была просьба рассказать подробнее об индексах, и так как, в рунете практически нет сводных данных о поддерживаемых индексах различных СУБД, в данном обзоре я рассмотрю, какие типы индексов поддерживаются в наиболее популярных СУБД
Взглянем?
Всего голосов 99: ↑96 и ↓3+93
Комментарии41

Как надо и как не стоит проводить инвентаризацию

Время на прочтение10 мин
Количество просмотров17K
На мой взгляд, нет ничего сложнее, чем использование современных технологий в реальной жизни. Любая программа, любой алгоритм в «чистом» виде – вещь в идеальном случае довольно простая. Чуть сложнее оказывается (если оно в принципе возможно) прямое сопряжение таких алгоритмов, реализованных разными командами. Еще сложнее получается обработка данных, сгенерированных другими программами. Самое неприятное и сложное – заставить работать это все в реальном мире, с данными, генерируемыми непредсказуемыми и хаотичными процессами нашей реальности. Потому что алгоритм и его реализующая программа в любом случае представляют собой средство УПОРЯДОЧЕННОЙ обработки данных. А наш мир, как это сейчас считается, катится только в направлении увеличения беспорядка.
Автоматизация розничной торговли – задача из этой области: попытка упорядоченно обработать потоки данных, слабо подчиняющихся формализации и упорядочению. Ну или очень сильно сопротивляющиеся. Хе, как будто у них есть намерения.
В своей предыдущей статье (Как надо и как не стоит автоматизировать торговлю) я довольно сумбурно свалил очень много всего в кучу. Похвалил и поругал ПО для автоматизации продаж в торговой сети. Уточним: в коммерческой сети аптек. И обещал рассказать, как лучше провести инвентаризацию.
Сегодня я расскажу, как мы проводим инвентаризацию на аптеках, и какие айсберги поджидают наш Титаник на этом пути.
В этот раз постараюсь разукрасить статью картинками и писать предложения с меньшим количеством слов.
Кому интересно — добро пожаловать под кат.
Читать дальше →
Всего голосов 20: ↑16 и ↓4+12
Комментарии4

Настройка групповых политик ограниченного использования программ в Windows 7

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

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

Поскольку у меня стоит Windows 7 Professional, первой идеей оказалось использование AppLocker'a, однако быстро выяснилось, что работать в моей редакции винды он не хочет, и требует Ultimate или Enterprise. В силу лицензионности моей винды и пустоты моего кошелька, вариант с AppLocker'ом отпал.

Следующей попыткой стала настройка групповых политик ограниченного использования программ. Поскольку AppLocker является «прокачанной» версией данного механизма, логично попробовать именно политики, тем более они бесплатны для пользователей Windows :)
Читать дальше →
Всего голосов 75: ↑62 и ↓13+49
Комментарии47

ЛикБез по патентам (продолжение)

Время на прочтение6 мин
Количество просмотров9.6K
В первой части статьи мы поговорили о том, какие бывают патенты, кто такие тролли и как начинается патентная тяжба, с обещанием, что мы продолжим тему. Дальше я расскажу о том, как идет процесс спора, о чем мечтает тролль и каковы методы борьбы против патентного троллинга.
Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии19

ЛикБез по патентам

Время на прочтение5 мин
Количество просмотров13K
Цель этой статьи — помочь тем, кто рассчитывает выйти на западные рынки с продуктом или технологией, быть готовыми к тому черному дню, когда вы получите по почте иск о нарушении патентных прав. Если вы рассчитываете на успех, то наивно рассчитывать, что вас обойдет чаша сия. Не обойдет. Правда, это вряд ли будет чаша. Скорее это будет большая неотесанная дубина. Дубина патентного тролля.
Правда, такая история ожидает совсем не в каждой стране. В большинстве стран законы ограждают общество от патентования идей. Осознав, что программное обеспечение не подчиняется законам физики, а значит — запатентовать можно практически все, большинство стран существенно ограничило возможность патентования чего-либо в области ПО. Существует, однако, одно маленькое, но важное исключение — Соединенные Штаты Америки. Про эту страну мы и будем в основном говорить.
Невозможно в одной статье описать все аспекты ситуации с патентами в США. К тому же, я не американский патентный юрист, и не знаю всех тонкостей, а если бы и знал, вряд о них имело бы смысл здесь писать. Поэтому постараемся сконцентрироваться на самом важном, а если всплывут вопросы, поговорим о них в комментах.
Если тема заинтересовала, приглашаю разбираться с ней под катом.
Читать дальше →
Всего голосов 52: ↑50 и ↓2+48
Комментарии45

Замедление хеширования паролей. Зачем?

Время на прочтение7 мин
Количество просмотров15K
Доброго времени суток, хабрапараноик! Сегодня мы поговорим о немного необычном способе повышения безопасности, а именно замедлении хеширования паролей. Казалось бы, когда всё вокруг стараются оптимизировать, зачем что то замедлять?
Хотя бы затем, что даже в самой супер-пупер защищенной системе самым слабым звеном остается человек. А именно, его пароль.

Вы пытались когда нибудь взломать зашифрованный rar архив? И сколько паролей в секунду оно перебирало? 50-100-200? Даже на хорошем GPU, при использовании небезызвестного cRARk, скорость перебора всего около 2400 вариантов/сек. И это-то по сравнению с десятками (сотнями) миллионов паролей/сек для zip/md5/SHA1.

Под катом моя вольная интерпретация этого процесса.
Читать дальше →
Всего голосов 91: ↑79 и ↓12+67
Комментарии107

Windows-компьютер без антивирусов

Время на прочтение6 мин
Количество просмотров63K
Предупреждение: Описанное в статье несколько устарело, т.к. я забросил винды в эпоху Windows 2003.

Каждый раз, когда меня знакомые спрашивают: «какой антивирус лучше?», я могу сказать только одно: «антивирус — как придворный шаман. Бывают лучше, бывают хуже, но определить, кто лучше камлает, не получится». Антивирус не гарантирует защиту от вирусов, более того, у него есть полное моральное право пропустить новую заразу и начать её детектить дня через 2-3 после «инцидента». Т.е. как основное средство защиты он годится не очень.

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

Теория


Любой уважающий себя вирус, оказавшись запущенным, тем или иным методом стремится в системе закрепиться, т.е. создаёт исполняемый файл или библиотеку, которая прописывается тем или иным образом в запуск. «Авто» запуск или в форме «дополнения» к другим исполняемым файлам (debugger, hander, плагин, и т.д.) — не важно. Важно: существует барьер под названием «запуск кода». Даже старые-добрые вирусы, дописывающие себя в исполняемые файлы, всё равно должны иметь возможность писать в файлы, которые предполагается запускать.

Безусловно, есть вирусы, размножающиеся без создания файлов (например, мс-бласт). Но условием появления этого вируса должна быть доступность сервера для обращений с носителей вируса или запуск кода через эксплоит в браузере\сетевой компоненте. В случае дыры в браузере дальнейшее размножение не возможно (т.к. нужно обращаться к браузерам на других машинах, а это требует поднятия сервера, куда будут ходить другие пользователи и мотивации пользователям ходить именно на этот узел). В случае дыры в сетевой компоненте и размножения без сохранения на диск, описанная мною методика с большой вероятностью работать не будет и возможна эпидемия. Однако, я не уверен, что антивирусы поймают такой 0day эксплоит, плюс, их (дыры) довольно резво фиксят, так что этот сценарий я откладываю как маловероятный. Наличие же файрволов ещё более уменьшает их опасность. От не-0day вполне же спасает своевременная (автоматизированная) установка обновлений.

Итак, основную бытовую опасность представляют вирусы, запускающиеся «из файла» (хотя бы потому, что они переживают перезагрузку компьютера). Если мы запретим каким-то образом запуск «неправильных» файлов, то проблема будет решена (т.к. несохраняющийся в файле вирус не сможет пережить перезагрузку, а в случае запуска с правами пользователя, даже банального релогина).

В Windows существует технология — политика ограниченного запуска приложений. Её можно активировать в режиме «запрещать всё, что не разрешено». Если поставить запрет полный — для всех, включая администраторов, все файлы, включая библиотеки, то мы получим точную гарантию того, что посторонний (не входящий в список разрешённых) файл не будет запущен. По-крайней мере я пока не слышал, чтобы в этой технологии были дыры. Обращаю внимание, нужно запрещать и библиотеки тоже, потому что печально известный конфикер запускается с флешек именно с помощью запуска библиотеки обманом rundll32.

Однако, запреты и разрешения не будут иметь смысла, если не сформулировать правила, которые запретят запуск «чужаков».

Модель безопасности


Перед тем, как описать подробно конфигурацию, сформулирую теоретические принципы её организации:

1. То, куда пользователь может писать закрыто для запуска.
2. То, что пользователь может запускать, закрыто для записи.
Читать дальше →
Всего голосов 139: ↑109 и ↓30+79
Комментарии133

О, эти планы запросов

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


История стара как мир. Две таблицы:
  • Cities – 100 уникальных городов.
  • People – 10 млн. людей. У некоторых людей город может быть не указан.

Распределение людей по городам – равномерное.
Индексы на поля Cites.Id, Cites.Name, People .CityId – в наличии.

Нужно выбрать первых 100 записей People, отсортированных по Cites.

Читать дальше →
Всего голосов 94: ↑72 и ↓22+50
Комментарии142

MongoDB или как разлюбить SQL

Время на прочтение6 мин
Количество просмотров66K
Введение

Коллеги, при разработке приложений, мы каждый день сталкиваемся с потребностью в гибком хранении информации (обновлении, поиске по ней, и т.д.). Класс продуктов, которые решают этот круг задач, как все мы знаем — Базы данных. Но что это такое в нашем понимании? У многих «база данных» твердо ассоциируется с MySQL, таблицами и SQL-запросами. И это устраивает до определенного момента. Действительно, реляционные базы данных дают массу преимуществ в работе: поскольку данные имеют сильную связанность, не нужно контролировать целостность базы данных. Используя простой под-запрос можно выбрать количество комментариев к каждому посту в блоге. Используя JOIN нетрудно делать сложные связанные выборки и получать данные сразу о нескольких сущностях.
Читать дальше →
Всего голосов 129: ↑122 и ↓7+115
Комментарии99

Oracle RAC. Общее описание / Часть 1

Время на прочтение10 мин
Количество просмотров72K
Высоконагруженные сайты, доступность «5 nines». На заднем фоне (backend) куча обрабатываемой информации в базе данных. А что, если железо забарахлит, если вылетит какая-то давно не проявлявшаяся ошибка в ОС, упадет сетевой интерфейс? Что будет с доступностью информации? Из чистого любопытства я решил рассмотреть, какие решения вышеперечисленным проблемам предлагает Oracle. Последние версии, в отличие от Oracle 9i, называются Oracle 10g (или 11g), где g – означает «grid», распределенные вычисления. В основе распределенных вычислений «как ни крути» лежат кластера, и дополнительные технологии репликации данных (DataGuard, Streams). В этой статье в общих чертах описано, как устроен кластер на базе Oracle 10g. Называется он Real Application Cluster (RAC).

Статья не претендует на полноту и всеобъемлемость, также в ней исключены настройки (дабы не увеличивать в объеме). Смысл – просто дать представление о технологии RAC.

P.S. Beware of the многабукаф
Продолжение статьи

Читать дальше →
Всего голосов 55: ↑49 и ↓6+43
Комментарии10

Давайте знакомиться!

Время на прочтение8 мин
Количество просмотров18K
imageПозвольте представиться. Меня зовут Александр Ложечкин, я работаю руководителем департамента стратегических технологий в Российском представительстве Microsoft. Департаментом стратегических технологий на русском языке мы называем то, что в оригинале, на английском языке, называется департаментом Developers & Platform Evangelism.

Я пришел в Microsoft чуть более шести лет назад, начав работать в этом же департаменте, который на тот момент состоял всего из восьми человек, евангелистом (или экспертом по технологиям разработки ПО, как было написано на визитке). Сейчас нас уже больше 40 (точное число зависит от методики подсчета). До Microsoft я работал в компании DocsVision, где руководил разработкой этого продукта. А начинал я свою профессиональную карьеру в IT в компании Digital Design разработчиком ПО. До сих пор программирование считаю самым интересным занятием в жизни, хотя профессионально этим уже давно не занимаюсь.

Нашел я, как и мои коллеги, свое призвание в другом: в том, чтобы сделать более успешными и счастливыми всех разработчиков, ИТ-специалистов, архитекторов, технических студентов, в общем, всех технических специалистов в России. И это действительно та цель, которую большой Microsoft ставит перед нашим департаментом, без всяких прикрас. А планы по порабощению мира и задача «be evil» действительно не стоят у нас на повестке дня.
Читать дальше →
Всего голосов 224: ↑121 и ↓103+18
Комментарии296

Информация

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