Pull to refresh
0
0
shulc @shulc

User

Send message

Игры Микропроцессорные или набери 100000 и увидишь мультик

Reading time2 min
Views14K
Многие из нас в детстве играли в Электронику серии ИМ и не только. Но не многие из нас даже представляют на сколько разнообразны были эти игры.



Читать дальше →
Total votes 56: ↑44 and ↓12+32
Comments60

Википедия переходит на P2P-видео

Reading time1 min
Views2.6K
В техническом блоге Википедии опубликовано сообщение о том, что с нынешнего момента все видеоролики на сайтах Wikimedia поддерживают доставку через торренты.

Каждый пользователь может установить в браузере расширение Swarmplayer (пока только под Firefox, скоро будет под IE) — и с этого момента любое видео Wikimedia будет поступать ему в браузер не напрямую с сайта, а через P2P-сеть таких же клиентов. Это позволит значительно снизить нагрузку на серверы Wikimedia.

Swarmplayer 2.0 работает с библиотекой Kaltura HTML5 (aka mwEmbed) и сервисом url2torrent.net.
Читать дальше →
Total votes 49: ↑47 and ↓2+45
Comments36

Структура и интерпретация компьютерных программ

Reading time1 min
Views12K
image
Перевод второй лекции Джеральда Сассмана
«Процедуры и процессы: подстановочная модель.»

Эти лекции были прочитаны 25 лет назад сотрудникам HP, но на самом деле это тот легендарный вводный курс 6.001, который читался в MIT в 1980 году. С тех пор эти лекции sine qua none во всем мире программирования. Хотелось бы чтобы каждый программист посмотрел этот курс, ничего не учит абстрактному мышлению лучше, чем SICP.
Приятного просмотра на ночь глядя.
Читать дальше →
Total votes 75: ↑75 and ↓0+75
Comments37

SICP теперь по-русски

Reading time1 min
Views63K
image

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

В качестве эксперимента выкладываю перевод первой из 20 лекций. Если это получит должный отклик, буду переводить дальше.
Читать дальше →
Total votes 97: ↑92 and ↓5+87
Comments61

Механическая клавиатура (с кликом)

Reading time3 min
Views45K
Buckling Springs
Однажды в студеную зимнюю пору лошадку прибили ушами к забору ой… Ну да, прибили мою рабочую лошадку — клавиатуру cherry с механическим кликом, путешествующую со мной с начала 90-х годов. Пришлось курить гугл на предмет современной механической клавиатуры с кликом. Увидев результаты, был, мягко говоря, удивлен — оказывается, в 21 веке механические клавиатуры не рулят :( Есть клавиатуры, похожие на пульт управления шаттлом, есть плоские, толстые, с подсветкой и без, резиновые, раскладывающиеся, вообщем, какие угодно, но не старые добрые механические клавиатуры. Это заговор, подумал я и решил разобраться что к чему B-)

Интересно, о чем это он
Total votes 76: ↑68 and ↓8+60
Comments165

Neoware CA2

Reading time3 min
Views18K
В продолжение моих изысканий с eBox-2300SX и тонкими клиентами я хочу рассказать еще об одном устройстве, пригодном для роли домашнего сервера/сидбокса/NAS'а — называйте как вам угодно :)
Встречайте — Neoware CA2.

image

Читать дальше →
Total votes 49: ↑47 and ↓2+45
Comments35

Моделирование большого количества взаимодействующих друг с другом частиц

Reading time6 min
Views30K
Рассмотрим ситуацию, когда необходимо обрабатывать столкновения между объектами. Как вы в этом случае поступите? Вероятно, самым простым решением будет проверить каждый объект с каждым другим объектом. И это правильное решение, и все будет замечательно до тех пор пока объектов не много. Как только их станет порядка нескольких тысяч, вы заметите, что все стало как-то медленно работать. А если частиц несколько десятков тысяч или сотен? Тогда все замрет. Вот здесь уже интересно, на какие хитрости и оптимизации вы пойдете, чтобы решить такую проблему.

Для простоты, будем рассматривать 2D случай, частицы круглые, радиус частиц у всех одинаковый.

Содержание


1. Обзор алгоритмов
1.1. Полный перебор
1.2. Sweep & Prune
1.3. Регулярная сеть
2. Некоторые оптимизации
2.1. Sweep & Prune
2.2. Регулярная сеть
3. Сравнение скорости выполнения
4. Приложение (программа и исходный код)
5. Заключение

Читать дальше →
Total votes 147: ↑145 and ↓2+143
Comments45

Язык программирования D — продолжение 2

Reading time9 min
Views3.1K
Доброго всем времени суток!
Сегодня я продолжаю рассказ о замечательном языке программирования D.
В своих прошлых статьях я вел рассказ о мультипарадигменности и метапрограммировании в D.
К тому же не могу не отметить замечательную статью Volfram, в которой он продолжил тему метапрограммирования, рекомендую.
За окном праздники, люди отдыхают, празднуют, радуются, потому не хочу нагружать вас тяжелой информацией и речь сегодня поведу на несложную, но от того не менее приятную тему: перегрузка операторов.
Вы можете сказать, что это вообще мелочи и не очень-то и интересно, но как раз в D перегрузка операторов является немаловажной частью дизайна языка и, что еще важнее, я смогу показать несколько примеров использования CTFE (Compile-time function evaluation), о котором была речь в предыдущей статье. Не зря же я им так восхищался, верно?
В добавок, тема перегрузки операторов в D затрагивает много связанных с ней немаловажных концепций, которые в свою очередь я раскрою в статье.
Итак, кому интересно — добро пожаловать под кат.

Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments18

Метод Виолы-Джонса (Viola-Jones) как основа для распознавания лиц

Reading time15 min
Views181K
Хотя метод был разработан и представлен в 2001 году Полом Виолой и Майклом Джонсом [1, 2], он до сих пор на момент написания моего поста является основополагающим для поиска объектов на изображении в реальном времени [2]. По следам топика хабраюзера Indalo о данном методе, я попытался сам написать программу, которая распознает эмоцию на моём лице, но, к сожалению, не увидел на Хабре недостающей теории и описания работы некоторых алгоритмов, кроме указания их названий. Я решил собрать всё воедино, в одном месте. Сразу скажу, что свою программу успешно написал по данным алгоритмам. Как получилось рассказать о них ниже, решать Вам, уважаемые Хабрачитатели!
Добро пожаловать под кат!
Total votes 123: ↑121 and ↓2+119
Comments17

То, чего вы не ждали от калькулятора. Пасьянс на bc

Reading time4 min
Views7.1K
Невинные развлечения с bash больше не кажутся мне чем-то особенным. В качестве своей следующей цели для экспериментов я выбрала GNU bc — консольный калькулятор и скриптовый математический язык программирования в одной коробке. Эта статья наверняка будет полезна всем линуксоидам и юниксоидам, не очень тесно знакомым с bc.



Итак, короткое введение в программирование на bc, кавай и нэки пасьянс на чистом bc и поэтессы.
Всё это можно найти под катом.
Total votes 112: ↑109 and ↓3+106
Comments27

Решение задачи «Яндекс интернет математика — 2011». Определение визуальной схожести изображений

Reading time12 min
Views20K
В апреле-мае 2011 года компания Яндекс проводила очередной тур конкурса Яндекс интернет математика. Тема тура: «Определение визуальной схожести изображений».
Я публиковал новость про объявление победителей и обещал в скором времени описать решение поставленной задачи нашей командой — LookLikeIt, которая заняла 12-е место в финальном рейтинге.

И вот, не совсем скорое время наступило!
Читать дальше →
Total votes 89: ↑86 and ↓3+83
Comments14

Бинаризация (практика часть ?)

Reading time2 min
Views23K
Моя статья о бинаризации

Применение на практике



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

Начну с малого и простого:
Реализовал
  • Бинаризация с нижним порогом
  • Бинаризации с верхним порогом
  • Бинаризация с двойным ограничением
  • Метод Отса (Оцу)
  • Метод Янни (Яни)
  • Метод среднего
Читать дальше →
Total votes 35: ↑30 and ↓5+25
Comments16

Алгоритмы отсечения

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

Этот пост посвящён разбору нескольких алгоритмов, направленных на одну и ту же задачу, задачу отсечения отрезков. При генерации изображений могут получаться фигуры произвольной формы и размеров. Зачастую мониторы не могут отобразить сгенерированные изображения целиком. Также иногда возникают ситуации, когда необходимо задать область изображения на экране и выводить изображения только внутри этой области. Для решения этих задач и придуманы алгоритмы отсечения.
Читать дальше →
Total votes 57: ↑54 and ↓3+51
Comments10

Несколько подробностей о функции main

Reading time5 min
Views18K
Однажды заинтересовался, содержимым стека функции main процесса в linux. Провел некоторые изыскания и теперь представляю вам результат.

Варианты описания функции main:
1. int main()
2. int main(int argc, char **argv)
3. int main(int argc, char **argv, char **env)
4. int main(int argc, char **argv, char **env, ElfW(auxv_t) auxv[])
5. int main(int argc, char **argv, char **env, char **apple)

argc — число параметров
argv — нуль-терминальный массив указателей на строки параметров командной строки
env — нуль-терминальный массив указателей на строки переменных окружения. Каждая строка в формате ИМЯ=ЗНАЧЕНИЕ
auxv — массив вспомогательных значение (доступно только для PowerPC [1])
apple — путь к исполняемому файлу (в MacOS и Darwin [2])
Вспомогательный вектор — массив с различной дополнительной информацией, такой как эффективный идентификатор пользователя, признак setuid бита, размер страницы памяти и т.п.

Далее о том как получить массив вспомогательных значений для i386 и x86_64, а также об остальном содержимом «сегмента» стека.
Читать дальше →
Total votes 87: ↑82 and ↓5+77
Comments8

Неблокируемая очередь сообщений для двух потоков

Reading time3 min
Views4.4K
Несколько лет назад, при работе над своим небольшим игровым проектом, у меня возникла необходимость реализовать передачу сообщений от одного потока другому. В ходе поисков вариантов решения появилась идея реализовать неблокируемую очередь.

Подробности под катом.
Читать дальше →
Total votes 38: ↑26 and ↓12+14
Comments34

Дерево ван Эмде Боаса

Reading time6 min
Views18K
Всем доброго времени суток!

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

Дерево ван Эмде Боаса (van Emde Boas tree) — ассоциативный массив, который позволяет хранить целые числа в диапазоне [0; U), где U = 2k, проще говоря, числа, состоящие не более чем из k бит. Казалось бы, зачем нужно еще какое-то дерево, да еще позволяющее хранить только целые числа, когда существует множество различных сбалансриованных двоичных деревьев поиска, позволяющих выполнять операции вставки, удаления и прочие за O(log n), где n — количество элементов в дереве?

Главная особенность этой структуры — выполнение всех операций за время O(log(log(U))) независимо от количества хранящихся в ней элементов.

Что же там еще есть такого вкусного?
Total votes 192: ↑190 and ↓2+188
Comments39

Базовые алгоритмы нахождения кратчайших путей во взвешенных графах

Reading time5 min
Views255K
Наверняка многим из гейм-девелоперов (или просто людям, увлекающимися програмировагнием) будет интересно услышать эти четыре важнейших алгоритма, решающих задачи о кратчайших путях.

Сформулируем определения и задачу.
Графом будем называть несколько точек (вершин), некоторые пары которых соединены отрезками (рёбрами). Граф связный, если от каждой вершины можно дойти до любой другой по этим отрезкам. Циклом назовём какой-то путь по рёбрам графа, начинающегося и заканчивающегося в одной и той же вершине. И ещё граф называется взвешенным, если каждому ребру соответствует какое-то число (вес). Не может быть двух рёбер, соединяющих одни и те же вершины.
Каждый из алгоритмов будет решать какую-то задачу о кратчайших путях на взвешенном связном. Кратчайший путь из одной вершины в другую — это такой путь по рёбрам, что сумма весов рёбер, по которым мы прошли будет минимальна.
Для ясности приведу пример такой задачи в реальной жизни. Пусть, в стране есть несколько городов и дорог, соединяющих эти города. При этом у каждой дороги есть длина. Вы хотите попасть из одного города в другой, проехав как можно меньший путь.
Читать дальше →
Total votes 79: ↑71 and ↓8+63
Comments31

Сравнение изображений и генерация картинки отличий на Ruby

Reading time4 min
Views28K
Наверняка вы видели новые режимы просмотра изображений, которые Github выкатил в прошлом месяце. Это действительно изящный способ показать разницу между двумя версиями картинки. В этой статье я попробую объяснить, как можно просто сравнивать изображения с помощью только Ruby и ChunkyPNG.
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments9

Кластеризация палитры изображения и сжатие в формате PNG

Reading time7 min
Views15K

Аннотация


В данной статье читателю предлагается опыт разработки алгоритма сжатия изображения, хранящегося в формате PNG. Сжатие осуществляется за счет квантования палитры с использованием классификатора К–внутригрупповых средних. Приводится исходный код алгоритма, написанный на языке Java. Указываются проблемы и дальнейшие пути улучшения алгоритма.
Читать дальше →
Total votes 47: ↑46 and ↓1+45
Comments38
1

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity