Pull to refresh
5
0
Send message

Многопоточный сервер на C# за 15 минут

Reading time11 min
Views333K
C# довольно простой и гибкий язык. Вместе с .NET поставляется довольно много уже готовых классов, что делает его еще проще. Настолько, что вполне можно написать простой многопоточный HTTP-сервер для отдачи статического содержимого всего за 15 минут. Можно было бы использовать уже готовый класс HttpListener и управиться еще быстрее, но цель этой статьи — показать, как вообще можно сделать нечто подобное в C#.
Читать дальше →
Total votes 94: ↑77 and ↓17+60
Comments72

Загрузка CentOS 6 с флэшки: прямые руки

Reading time3 min
Views42K
Каждый раз, когда читаешь рекомендации по созданию загрузочных флэх (в частности для Linux live USB flash), автор предлагает начисто отформатировать съемное устройство, а при наличии извращенной фантазии — отформатировать под ext2/3/4, а при особо извращенной — он создает 2 раздела, а то и вовсе лезет в прошивку контроллера флэшки, дабы создать там эмуляцию cdrom. Или в рекомендации используется софт, который делает то же самое — но автоматически.

Извольте, но у меня уже есть загрузочная, боевая флэшка, с которой загружается с помощью Grub4dos и пары прямых рук целый арсенал софта — от windows XP PE до установки гипервизора VMWare ESXi… Итак, я захотел портировать туда еще и Live CD для новой Cent OS 6.
Читать дальше →
Total votes 11: ↑8 and ↓3+5
Comments6

Вычислительная геометрия, или как я стал заниматься олимпиадным программированием. Часть 2

Reading time6 min
Views147K

Вступление


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

Начнем с взаимного расположения точки относительно прямой, луча и отрезка.
Читать дальше →
Total votes 39: ↑31 and ↓8+23
Comments27

Qt + OpenCV. Runtime и Widget для CvCapture (устройства видеозахвата)

Reading time14 min
Views22K

Введение.


Анализируя замечания предыдущего поста (Qt Designer & Runtime Qt библиотеки на службе OpenCV...), пришлось более детально проработать устройство видеозахвата библиотеки OpenCV и методы разделения библиотек runtime и виджетов.
Работа с Qt Designer удобна (я — лентяй), поэтому и возник компонент проектирования интерфейса для CvCapture. После начала работы подтянулось и «научное » тому объяснение — удобно применить нечто похожее, скажем, при проектировании интерфейса свойств или параметров приложения, использующего устройство видеозахвата.
Пока идёт скачивание архива проекта, читайте далее.

Благодарности.


Спасибо всем, кто оставил свои замечания по предыдущему посту.

Библиотека времени выполнения.


Итак, библиотека OpenCV установлена, примеры кода просмотрены. Самое время «прикрутить» устройство видеозахвата к Qt. Да не просто так, а чтобы и изображения получать, меняя устройства динамически. Да, чтобы помнило все пути к изображению, видео. Да, чтобы и номера камер переключало. Да, чтобы и… пост покороче получился.
Библиотека.

Чего проще! Наследуем новый класс библиотеки от QObject, прячем ненужные разработчику поля и методы в приватный класс как элемент коллекции QScopedPointer, монтируем сигналы оповещения и слоты-обработчики.
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments10

Получаем полноценный Linux и сопутствующие плюшки на Zyxel Keenetic без перепрошивки

Reading time3 min
Views87K
image

С недавного я времени стал обладателем Zyxel Keenetic. И моя симпатия к Linux не могла не дотянуться и до этого интернет-девайса. В этом топике я расскажу как можно получить полноценный root и расширить возможности Keenetic'а.

Читать дальше →
Total votes 59: ↑58 and ↓1+57
Comments26

Управление несколькими сервоприводами с высокой точностью на МК ATmega16

Reading time3 min
Views51K
Недавно ко мне обратились знакомые из макетной мастерской и предложили поработать над весьма интересным проектом. Им необходимо было выполнить макет, в котором бы двигались детали нескольких машин (кран, экскаватор, разрушитель). Логика несложная, но особенность в том, что они должны были двигаться со скоростью, гораздо ниже, чем скорость самих приводов, а это возможно реализовать только проходом через промежуточные точки. В этой статье я хочу познакомить вас с интересным методом точного управления большим количеством сервоприводов.

В моем случае предполагалось использовать четыре привода. Для этого проекта я изготовил небольшую плату:

image
Читать дальше →
Total votes 53: ↑47 and ↓6+41
Comments34

Учим bash-скрипты, пишем Sokoban

Reading time4 min
Views138K
Мне кажется, что на свете еще есть люди, которые хорошо знают несколько языков программирования, но при этом не пишут скриптов для bash, потому что скриптовый язык bash выглядит для них слишком странным. Чтобы доказать, что bash — это несложно, я написала игру Сокобан (или Грузчик, кому как нравится), и хочу рассказать, как она работает.
Краткая справка по bash, скриншот игры, исходный код и ссылка на файл - под катом
Total votes 170: ↑164 and ↓6+158
Comments67

Вычислительная геометрия, или как я стал заниматься олимпиадным программированием.Часть 1

Reading time8 min
Views133K
Здравствуйте, уважаемые хабравчане! Это моя вторая статья, и мне хотелось бы поговорить о вычислительной геометрии.

Немного истории


Я являюсь студентом уже 4 курса математического факультета, и до того как я начал заниматься программированием, я считал себя математиком на 100 процентов.

В конце первого курса мой преподаватель по информатике, который занимается олимпиадным программированием, обратил на меня внимание. Им как раз не хватало одного математика в команду. Так потихоньку меня начали приучать к олимпиадному программированию. Скажу честно, для меня это было очень сложно: для человека, который узнал слово Delphi на первом курсе. Однако мой преподаватель оказался очень грамотным специалистом и нашел хороший подход ко мне. Он начал давать мне математические задачи, который я сначала решал чисто математически, а уже потом писал код (с грехом пополам).

Мне очень нравится подход моего преподавателя: «разберись с этой темой, а потом расскажи нам, да так чтоб мы все поняли».

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

Я помню, как долго мучился с этими задачами, чтобы они прошли все тесты на сайте informatics.mccme. Зато теперь я очень рад, что прошел через все испытания и знаю, что же такое задачи вычислительной геометрии.
Читать дальше →
Total votes 83: ↑72 and ↓11+61
Comments40

Учим bash-скрипты, пишем Xonix

Reading time7 min
Views21K
Прочитал я пару недель назад на хабре статью Учим bash-скрипты, пишем Sokoban и подумал, что тоже знаю bash и могу что-нибудь написать, а заодно ещё лучше узнать bash. Подумал ещё и вспомнил, что давно хотел написать Xonix, когда-то этой игрой заигрывался на своём старом 386-м. И вот, несколько бессонных ночей и скрипт готов. Если интересно как это писалось, какие проблемы возникали, то добро пожаловать под хабракат.


Читать дальше →
Total votes 73: ↑72 and ↓1+71
Comments23

Многозначное шифрование с использованием хеш-функций

Reading time5 min
Views13K
В последнее время приходится все больше задумываться о сохранности анонимности и безопасности относительно прав на информационную собственность. В этой заметке я предложу довольно интересное решение относительно шифрования, позволяющего сохранить несколько различных объектов в одном контейнере с разными мастер-ключами, и гарантирующее отсутствие «следов» других сущностей при получении какой-либо одной. Более того, в силу конструктивных особенностей алгоритма — даже наличие расшифрованной сущности можно всегда списать на «случайность» (то есть, нет никаких средств проверить, были ли изначально зашифрованы эти данные или нет). Кроме того, алгоритм имеет чрезвычайную стойкость к атакам «подбора ключа». Правда у метода есть и существенный недостаток — катастрофически низкая скорость работы, но в ряде особенных случаев он все равно может быть полезен.
Читать дальше →
Total votes 63: ↑55 and ↓8+47
Comments35

Экспорт избранного Хабра в FB2

Reading time2 min
Views9.5K
Ненавижу длинные вступления
И поэтому не буду писать их даже под спойлером.

  • Зачем?
    • Для оффлайнового просмотра на читалках.
  • Моя читалка не поддерживает FB2!
  • Хочу!
    1. Обзаводимся Python 2.7+. Тестировалось на Python 2.7.3.
    2. Ставим библиотеку BeautifulSoup 4. Вкратце варианты:
      • apt-get install python-beautifulsoup4
      • easy_install beautifulsoup4
      • pip install beautifulsoup4
      • Исходники и python setup.py install
    3. Качаем код из репозитория (прямая ссылка на последнюю версию).
    4. Открываем файл habrafav.py и в строке username = ... прописываем свой логин.
    5. python habrafav.py (или просто habrafav.py под Windows)
    6. Ждём. У меня с кэшированными данными экспорт ~150 статей занимает около 6 минут и 600 Мб оперативной памяти.
    7. Забираем habrahabr_favorites.fb2. Мой занимает примерно 62 Мб.

Читать дальше →
Total votes 88: ↑81 and ↓7+74
Comments50

Избранное Хабра в PDF

Reading time3 min
Views17K
Всех с наступившими!

image

Так как я люблю все упорядочивать и каталогизировать, давно вертелась мысль завернуть избранные топики с хабра в PDF и отсортировать по датам.
Собственно выделилось немного свободного времени в праздники, решил задуманное осуществить и поделиться с хабром

UPD:
— Исправлена ошибка «too large on page» (подробнее на github) Спасибо Bifidokk и StreetAngel
— Авторы топиков сделаны ссылкой
— Добавлена возможность сохранять избранное только из указанных блогов

Читать дальше →
Total votes 201: ↑192 and ↓9+183
Comments113

О прямоугольных координатах и гексагональных сетках

Reading time4 min
Views28K
Думаю, никому не нужно объяснять, насколько широко в играх (и не только) используются гексагональные сетки. Как для заданной шестиугольной ячейки найти координаты ее центра и вершин — достаточно очевидно. Обратное же преобразование (т.е. поиск ячейки, в которую попала данная точка с координатами x и y) уже не столь тривиально. О нём и пойдет речь в данном топике.
Читать дальше →
Total votes 72: ↑67 and ↓5+62
Comments51

Первые шаги с OpenCL или сказ о том как одинаковый код на GPU и CPU запускать

Reading time15 min
Views58K
Итак, прошел почти год с момента моего первого поста о программировании видеокарт и страшилок о том, как это все сложно. Теперь настала пора показать, что все не так плохо и как пользоваться этой странной штукой по имени OpenCL, да еще и использовать его главное преимущество, то есть возможность запускать один и тот же код на разных девайсах. А еще я покажу как можно получить на порядок большую производительность обычного процессора практически бесплатно.
За деталями под кат...
Total votes 57: ↑54 and ↓3+51
Comments21

Aftershock: как будем жить после пресловутого законопроекта. Советы бывалых

Reading time21 min
Views5.6K


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

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

Пост получился объемным. Но для тех, кому лень читать, внутри есть удобная для разбора и обсуждения mindmap-карта. Поэтому садитесь поудобнее и приготовьтесь к «погружению». Надеюсь, что длительное вдумчивое чтение окажет успокаивающее воздействие на нервную систему пользователей хабра после всех этих эмоциональных обсуждений.

Читать дальше →
Total votes 144: ↑112 and ↓32+80
Comments207

Архитектура систем управления самолётом

Reading time13 min
Views45K
«Мы работаем для того, чтобы вы не боялись летать»

image
рис 1. Модель Bombardier BD 500 в аэродинамической трубе

Именно такой слоган я как-то придумал для своей работы. Он как нельзя лучше выражает саму суть разработки систем управления самолётом. И, если честно, я бы хотел, чтобы это стало девизом всех разработчиков систем управления современными самолётами по всему миру. Потому что, несмотря на то, что часто можно услышать, что самолёт — один из самых безопасных видов транспорта, тысячи людей по всему миру боятся летать, вцепляются в ручки кресел… А зачастую причина всех страхов — неизвестность. Когда надо доверится такой непрочной конструкции, болтающейся километры над землёй, таким хрупким сплетением проводов и битов кода, скрытой завесой улыбок стюардесс и тайн программного кода. И которую стоит приоткрыть.

Читать дальше →
Total votes 112: ↑110 and ↓2+108
Comments52

Бесплатного супа больше не будет

Reading time23 min
Views17K
Фундаментальный поворот к параллелизму в программировании

Автор: Герб Саттер
Перевод: Александр Качанов

The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
(By Herb Sutter)

Ссылка на оригинал статьи: www.gotw.ca/publications/concurrency-ddj.htm

Примечание переводчика: В данной статье дается обзор современных тенденций развития процессоров, а также, что именно эти тенденции значат для нас — программистов. Автор считает, что тенденции эти имеют фундаментальное значение, и что каждому современному программисту придется кое в чем переучиваться, чтобы не отстать от жизни.

Данная статья достаточно старая. Ей уже 7 лет, если считать с момента ее первой публикации в начале 2005 года. Помните об этом, когда будете читать перевод, так как многие вещи, которые для вас уже стали привычными, для автора статьи в 2005 году были в новинку и только-только появлялись.

Читать дальше →
Total votes 122: ↑113 and ↓9+104
Comments81

Headtracking или как увидеть трехмерный чайник на двухмерном мониторе

Reading time4 min
Views9.1K
В прошлом семестре брал я курс компьютерного зрения и под конец надо было делать финальный проект на любую тему, которая с этим связана. Стало мне интересно, можно ли при помощи веб-камеры отслеживать глаза пользователя и показывать ему 3д объекты с правильного ракурса, этим я и решил заняться. Т.е. сделать из монитора эдакое окно в виртуальный мир. Теперь же я хочу поделиться с хабрапользователями о том, как это у меня получилось и какие подводные камни встретились на пути.
Читать дальше →
Total votes 170: ↑170 and ↓0+170
Comments58

Однострочники на С++

Reading time2 min
Views61K
image
На хабе появилось несколько топиков об «однострочниках» на разных языках, которые решали простые задачи. Я решил опубликовать несколько алгоритмов на языке C/С++.
Итак, поехали!
Читать дальше →
Total votes 148: ↑111 and ↓37+74
Comments103

Кормление и уход за разработчиками (или почему мы такие ворчуны)

Reading time22 min
Views28K
Прим. переводчика — В оригинале использовался всем знакомый термин «software engineer». Так как русский его аналог «инженер-программист» используется в повседневной речи редко, пришлось использовать слово «разработчик» как наиболее близкое. Также профессия «short-order cook», с которой автор сравнивает положение многих разработчиков в индустрии, была переведена как «мальчик на побегушках» — мне кажется, что она отлично отражает суть проблемы отношения к разработчикам. Наконец, я старался везде вместо слов «to code» и «programming» использовать «разрабатывать» и «разработка» из-за сложившемся в русском языке негативном смысле слов «кодировать» и «программирование» как примитивных процессов перевода требований в машинные инструкции низкого или высокого уровня.

Автор оригинальной статьи — Nickolas C. Zakas, известный фронтенд разработчик и JavaScript-евангелист в свое время проработавший более пяти лет в Yahoo. Это запись из его блога, в которой он говорит о том, почему с разработчиками так сложно договориться и что с этим делать.


Не так давно Дженна Байлотта написала замечательную статью «Как дизайнерам ужиться с разработчиками», в которой она описывает методы работы в команде, позволяющие дизайнерам и разработчикам добиться лучшей производительности. Я в свое время работал с дизайнерами (а, работая в UI, и с разработчиками) и столкнулся с похожими проблемами, так что мне понятен ее практичный подход. Во время командной работы никогда не помешает уважать труд своих коллег и понимать их способ мышления.

Одна из главных мыслей той статьи заключалась в том, что разработчики говорят «нет» слишком быстро. Эта мысль тут же въелась мне в мозг и долго отказывалась вылезать оттуда. Мне хотелось воскликнуть: «Но подожди, ты же не понимаешь, почему мы говорим „нет“!». Тут же появился миллион других защитных аргументов. На самом деле она, конечно, права — мы правда слишком быстро говорим «нет», причем не только дизайнерам, а вообще всем. Это побудило меня поразмыслить над психологией разработчиков и тем, что составляет нашу истинную суть.
Читать дальше →
Total votes 242: ↑228 and ↓14+214
Comments76

Information

Rating
Does not participate
Registered
Activity