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

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

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

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

Время на прочтение2 мин
Количество просмотров14K
Многие из нас в детстве играли в Электронику серии ИМ и не только. Но не многие из нас даже представляют на сколько разнообразны были эти игры.



Читать дальше →
Всего голосов 56: ↑44 и ↓12+32
Комментарии60

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

Время на прочтение1 мин
Количество просмотров2.6K
В техническом блоге Википедии опубликовано сообщение о том, что с нынешнего момента все видеоролики на сайтах Wikimedia поддерживают доставку через торренты.

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

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

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

Время на прочтение1 мин
Количество просмотров12K
image
Перевод второй лекции Джеральда Сассмана
«Процедуры и процессы: подстановочная модель.»

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

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

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

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

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

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

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

Интересно, о чем это он
Всего голосов 76: ↑68 и ↓8+60
Комментарии165

Neoware CA2

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

image

Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии35

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

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

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

Содержание


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

Читать дальше →
Всего голосов 147: ↑145 и ↓2+143
Комментарии45

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

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

Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии18

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

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

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

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



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

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

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

И вот, не совсем скорое время наступило!
Читать дальше →
Всего голосов 89: ↑86 и ↓3+83
Комментарии14

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

Время на прочтение2 мин
Количество просмотров23K
Моя статья о бинаризации

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



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

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

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

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

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

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

Время на прочтение5 мин
Количество просмотров18K
Однажды заинтересовался, содержимым стека функции 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, а также об остальном содержимом «сегмента» стека.
Читать дальше →
Всего голосов 87: ↑82 и ↓5+77
Комментарии8

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

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

Подробности под катом.
Читать дальше →
Всего голосов 38: ↑26 и ↓12+14
Комментарии34

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

Время на прочтение6 мин
Количество просмотров18K
Всем доброго времени суток!

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

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

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

Что же там еще есть такого вкусного?
Всего голосов 192: ↑190 и ↓2+188
Комментарии39

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

Время на прочтение5 мин
Количество просмотров255K
Наверняка многим из гейм-девелоперов (или просто людям, увлекающимися програмировагнием) будет интересно услышать эти четыре важнейших алгоритма, решающих задачи о кратчайших путях.

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

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

Время на прочтение4 мин
Количество просмотров28K
Наверняка вы видели новые режимы просмотра изображений, которые Github выкатил в прошлом месяце. Это действительно изящный способ показать разницу между двумя версиями картинки. В этой статье я попробую объяснить, как можно просто сравнивать изображения с помощью только Ruby и ChunkyPNG.
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии9

Есть к чему стремиться, %username%

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


Японское усердие, усидчивость и инженерная направленность мозгов способны на многое.
В профиле youtube-юзера denha есть ещё много завораживающих видео, welcome!
Всего голосов 140: ↑122 и ↓18+104
Комментарии70

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

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

Аннотация


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

Информация

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