Pull to refresh
1
0
ciiccii @ciiccii

User

Send message

Изменение кода программы во время ее выполнения на примере Common Lisp

Reading time8 min
Views13K

Введение


По моему скромному мнению, Lisp — жемчужина среди языков функционального программирования. Несмотря на то, что это один из первых в истории (1958 год) высокоуровневых языков, он по сей день не перестает удивлять. Мне кажется, он настолько обогнал свое время, что его час еще только готовится прийти.

Так давайте попытаемся написать программу, которую проблематично будет создать на других языках. Как следует из названия статьи, эта программа будет редактировать собственный код по мере своего выполнения. Для ее создания я использую Common Lisp, а точнее его интерпретатор SBCL.
Читать дальше →

Исследование игры-головоломки «Сапёр» (продолжение)

Reading time4 min
Views16K
Продолжаем наше исследование игры «Сапёр» от Microsoft.

Данная статья является продолжением первой статьи.

О чем будет идти речь:
1) Взлом, основанный на переполнении буфера
2) Взлом игровых мин
3) Исследование архитектуры игры.

I

Откроем игру, следом за ней CE( Cheat Engine ). Присоединяемся к процессу игры:

image

Читать дальше →

Статистические тесты в R. Часть 1: Бинарная классификация

Reading time5 min
Views25K
Доброго времени суток. Хочу поделиться своими знаниями о работе со статистикой в R.
Многим из нас приходится сталкиваться с различными данными на работе и в повседневной жизни. Качественно и правильно их обработать и проанализировать не так сложно. В этой серии статей я покажу применения некоторых статистических тестов.

Заинтересовались? Добро пожаловать под кат.
Читать дальше →

Теория и практика пассивных пироэлектрических датчиков или как сделать индикатор направления движения

Reading time8 min
Views139K

В нашем несовершенном мире весьма востребованы разные технические штуки, призванные стоять на страже имущества и спокойствия граждан. Поэтому сложно, полагаю, найти человека, который бы никогда не видел охранных сигнализаций, снабженных датчиками движения. Физические принципы их работы, а также реализация могут быть разные, но, вероятно, наиболее часто встречаются пироэлектрические пассивные инфракрасные датчики (PIR).

Примерно такие:



Реагируют они на изменение излучения в инфракрасном диапазоне, а именно в средней его части — 5-15 мкм (тело среднего здорового человека излучает в диапазоне около 9 мкм). С точки зрения конечного потребителя штука очень простая — вход питания (чаще 12 вольт) и выход реле (обычно твердотельное и с нормально замкнутыми контактами). Прокрался кто-нибудь тепленький мимо — реле сработало. Скукота. Но внутри все не так просто.
Сегодня мы немного времени посвятим теории, а затем распотрошим один такой девайс и сделаем из него не просто датчик, реагирующий на факт движения, но регистрирующий направление движения.

Немного теории и практики

Пример примитивного веб сервера на С++ с использованием OpenSSL

Reading time4 min
Views12K
Давно хотел написать полезную статью и вот наконец нашёл подходящий информационный повод.

Речь в этой статье пойдёт о создании примитивного web сервера работающего по https протоколу. Мы на пишем серверную часть, а в качестве клиентской части будет выступать любой из браузеров.
В итоге мы получим максимально упрощённый пример примитивного web сервера который можно будет улучшать и затачивать под свои задачи.
Читать дальше →

Data Mining: Первичная обработка данных при помощи СУБД. Часть 3 (Сводные таблицы)

Reading time7 min
Views18K
Данная серия посвящена анализу данных для поиска закономерностей. В качестве примера используется одна из обучающих задач сообщества спортивного анализа данных Kaggle. Хотя размеры данных для задачи не большие, методы обработки, которые будут рассматриваться вполне применимы для больших объемов данных.
После выполнения Часть 1 и Части 2 сформировались две таблицы, содержащие преобразованные данные.
titanik_test_3 и titanik_train_3.
Читать дальше →

Радиоканал 433МГц и синхронизация времени от GPS

Reading time3 min
Views49K
image Доброго времени суток!
Хочу поделиться опытом создания системы единой синхронизации времени в пределах квартиры/офиса c элементами олдскул и постапокалипсиса.

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

Потом появилась возможность синхронизации от GPS. В своё время приобрел RS232 GPS модуль, выдающий информацию о координатах в NMEA, который подключал к чёрно-белому PALM m105 и радовался программе PathAway. Но прогресс на месте не стоял, появились другие задачи и GPS модуль провалялся на полке до текущего момента.
Читать дальше →

Управляем вентилятором ноутбука через DSDT в Linux и не только

Reading time10 min
Views62K
Не знаю почему, но я всегда воспринимал системы охлаждения в ноутбуках как некий закрытый черный ящик. Тупость алгоритмов, по которым вентилятор начинал надрывно завывать при еще вполне холодном процессоре, изрядно раздражала во многих ноутбуках, но мне казалось, что все параметры там производители прибили гвоздями и поменять их можно разве что расковыряв BIOS или вообще только вставив какие-нибудь регулируемые резисторы в нужных местах. Ни тем, ни другим мне заниматься совершенно не хотелось, поэтому я об никогда всерьёз даже не задумывался.

Нет, конечно, я слышал про всякие программы, которые могут вмешиваться в управление охлаждением и вроде кто-то ими успешно пользуется, но лично мне с ними вечно не везло, точнее не везло с железом, на котором я пытался их завести. Например, какое-то время назад я пробовал настроить fancontrol на довольно старом ноутбуке HP nc8430 с Убунтой. В итоге, известный скрипт sensors-detect не смог найти ни одного вентилятора в системе, а без этого fancontrol не работает. На разных форумах периодически появляются люди с похожими проблемами, но никто им толком помочь не может.

Тогда я в очередной раз забросил эту тему и вернулся к ней только на днях, когда читал обзоры, подыскивая себе новый ноутбук, и уже вроде бы выбрал почти всем хороший Sony S15, как опять в одном из обзоров читаю про него, что вентилятор в нем вообще не останавливается никогда, даже когда точно можно. Постоянно шумящий ноутбук я больше не хочу, а выбирать как всегда особо не из чего, учитывая, что надо 15", что TN матрицу я тоже больше не хочу, и бюджет ограничен. Ну сами знаете, как оно бывает. Может быть на нем все-таки заведется fancontrol и все будет хорошо, но а если нет? Никаких отчетов по его установке на этот ноутбук найти не удалось. Это побудило меня еще раз копнуть тему программного управления вентиляторами и пройти довольно непростой, но очень увлекательный квест.
Читать дальше →

Немного о создании демок, часть 1

Reading time8 min
Views18K
Здравствуйте!
Эта статья, прежде всего для новичков, тех, кто только решил заняться демосценой, если статья будет положительно принята сообществом, то я сделаю цикл из нескольких статей о создании демок. Каждая статья будет короткой, но в конце каждой статьи будет вполне рабочий пример.
Сразу предупрежу, эта статья не о том как делать Demo с помощью OpenGL, DirectX, и миллионов шейдеров, об этом есть много хороших статей, я буду писать о рисовании в памяти.
Подробности

Визуализация статистики использования компьютера с R

Reading time6 min
Views21K


Думаю, многим интересно (хотя бы из любопытства), как именно они используют свой компьютер: самые нажимаемые кнопки, пройденное мышью расстояние, среднее время работы и другую информацию. В этой статье я расскажу один из вариантов того, как можно собрать такую информацию и затем представить её в виде интерактивных графиков. Все описанные действия производились на ноутбуке с ОС Debian Wheezy, Python 2.7.3, R 2.15.
image
Подробнее, с картинками и ссылками

Миникомпьютер из роутера с OpenWRT: пишем драйвер фреймбуфера

Reading time19 min
Views68K
Добрый день, уважаемые хабровчане. Вот мы и подошли к самой интересной и важной части моего цикла статей про превращение небольшого роутера в миникомпьютер — сейчас мы с вами будем разрабатывать настоящий драйвер фреймбуфера, который позволит запустить на роутере разные графические приложения. Чтобы энтузиазм не угасал, вот видео одного из таких приложений — думаю, большинство узнают это великолепный старый квест:

На случай, если вы пропустили предыдущие части — вот ссылки:
1 — Миникомпьютер из роутера с OpenWRT: разрабатываем USB-видеокарту
2 — Миникомпьютер из роутера с OpenWRT: пишем USB class-driver под Linux
Итак, приступаем к работе.
Читать дальше →

Обзор алгоритмов кластеризации числовых пространств данных

Reading time10 min
Views42K
Задача кластеризации – частный случай задачи обучения без учителя, которая сводится к разбиению имеющегося множества объектов данных на подмножества таким образом, что элементы одного подмножества существенно отличались по некоторому набору свойств от элементов всех других подмножеств. Объект данных обычно рассматривается как точка в многомерном метрическом пространстве, каждому измерению которого соответствует некоторое свойство (атрибут) объекта, а метрика – есть функция от значений данных свойств. От типов измерений этого пространства, которые могут быть как числовыми, так и категориальными, зависит выбор алгоритма кластеризации данных и используемая метрика. Этот выбор продиктован различиями в природе разных типов атрибутов.

В этой статье приведён краткий обзор методов кластеризации числовых пространств данных. Она будет полезна тем, кто только начинает изучать Data Mining и кластерный анализ и поможет сориентироваться в многообразии современных алгоритмов кластеризации и получить о них общее представление. Статья не претендует на полноту изложения материала, напротив, описание алгоритмов в ней максимально упрощено. Для более подробного изучения того или иного алгоритма рекомендуется использовать научную работу, в которой он был представлен (см. список литературы в конце статьи).
Читать дальше →

Миникомпьютер из роутера с OpenWRT: пишем USB class-driver под Linux

Reading time20 min
Views79K

Добрый день, уважаемые хабровчане. В прошлой статье мы с вами разработали простую USB-видеокарту на базе STM32F103 и китайского дисплейного модуля на контроллере ILI9325.
Проверяли мы его из юзерспейса, при помощи LibUSB. Ну что ж, пришло время нам написать свой собственный драйвер, который позволит делать все то же самое, но из-под Linux и без дополнительных библиотек. Этот драйвер мы внесем в дерево исходников OpenWRT и он поселится там наравне со всеми остальными.
Начнем.
Читать дальше →

Из чрута — на поверхность: как, почему и что делать?

Reading time2 min
Views26K
Основано на реальных событиях.

Представьте себе, что у вас есть крупный проект, для которого необходимо собирать софт. А ещё у вас есть желание замутить сборочную ферму, на которой ваши подчинённые будут собирать нужный софт. А ещё это всё происходит под Linux-ом, и каждому надо организовать «чистое» окружение с минимумом затрат. Как это сделать?

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

А через неделю после интеграции этого решения и после увольнения сотрудника «икс» вы просыпаетесь — а на сервере девственно чистый жёсткий диск. Злодей уничтожил труды разработчиков, работа встала.

Почему же он сумел удалить всё, если был в «защищённом» «запертом» чруте?
Читать дальше →

Наложение основных надписей по ГОСТ 2.104 (рамок) на LaTeX документы

Reading time5 min
Views44K
Несмотря на то, что многие считают наши государственные стандарты, касающиеся ЕСКД и ЕСПД устаревшими, конструкторскую и программную документацию необходимо выполнять в соответствии с ними.

Когда я был совсем молодым «специалистом» я с унынием наблюдал за тем, как в Microsoft Office пишутся технические условия, программы и методики испытаний. Порой эти документы очень сложные и длинные. Наиболее пугающими были основные надписи, помещённые в колонтитул. Они никак не соответствовали ГОСТ 2.104. В простонародье их называют «рамками». Они были ужасны. Я не видел, чтобы кому-то удавалось сделать их правильно. Плавали размеры, толщины линий. Это было видно даже без линейки.
Читать дальше →

Параллелим R

Reading time3 min
Views12K

Введение


Сейчас практически невозможно представить себе мир без параллельных вычислений. Параллелят все и вся, даже у мобильных телефонов теперь несколько ядер, а значит… ну вы понимаете. Но давайте поговорим не о мобильных приложениях, а о более полезных и интересных вещах. О машинном обучении. Тема тоже модная, разрекламированная, про машинное обучение слышали даже домохозяйки и только ленивый еще не трогал это руками. Для машинного обучения, и если быть более точным, для статистических расчетов есть множество разных фреймворков, на мой вкус лучший из них – R (да простят меня поклонники Octave). И речь пойдет именно о нем.

Disclaimer:
я не претендую на особую строгость изложения, моя задача донести до читателей общую мысль.
Читать дальше →

Диаграммы в LaTeX

Reading time12 min
Views27K
Многие достаточно часто сталкиваются с необходимостью создания различных диаграмм, графов, деревьев для удобного представления информации. Особенно важным этот вопрос может оказаться при создании презентаций. Большинство офисных пакетов предоставляют возможность создавать красивые диаграммы при помощи интерактивного интерфейса. А если нужно создать большую диаграмму? Или записать в ней математические формулы? Сосредоточиться на содержании, а не оформлении и расположении элементов на экране?

Преимущества использования LaTeX уже неоднократно обсуждались. Так же как и способы создания презентаций при помощи beamer и векторная графика из пакета PGF/Tikz. Но возможно ли получить в LaTeX диаграммы, не уступающие по внешнему виду полученным в больших и сложных пакетах? Один из способов предложен ниже.
Читать дальше →

Подделываем вашу подпись при помощи шарнирного механизма. Теорема Кемпе

Reading time5 min
Views223K
В этом посте я расскажу про программу, которая подделывает любую подпись при помощи шарнирного механизма. Программа основана на теореме Кемпе, доказанной в середине 19-го века.

Читать дальше →

Проброс NVIDIA Quadro 4000 в виртуальную машину с использованием гипервизора Xen

Reading time7 min
Views19K
Прочитав однажды пост [1] про успешный проброс видеокарты в виртуальную машину я подумал, что неплохо бы мне завести себе такую рабочую станцию.

При разработке кроссплатформенного программного обеспечения часто возникают проблемы с его тестированием. Всю свою работу я выполняю исключительно под Linux'ом, при этом конечный пользователь работает исключительно в операционной системе (ОС) Windows. Можно было бы использовать VirtualBox, например, но когда нужно проверить работу модулей использующих OpenGL или CUDA возникают серьёзные проблемы. Dual Boot как вариант даже не рассматриваю. Получается, что, так или иначе, мне приходиться использовать второй компьютер, который просто не куда поставить. При этом большую часть времени он простаивает без дела. Получается крайне не эффективная, с точки зрения использования ресурсов, схема.

Однажды моя мечта превратилась в крайнюю необходимость. Необходимо было собрать графическую станцию со следующими характеристиками:
  1. Операционная система Windows 7 (далее Windows);
  2. Набор программного обеспечения использующего DirectX, OpenGL и CUDA;
  3. Высокоскоростное, локальное, отказоустойчивое хранилище размером порядка 10 Тб;
  4. Механизм резервного копирования и восстановления всей системы;
  5. Периодическое автоматическое резервное копирование пользовательских данных.

Многие могут подумать: «Причём же тут виртуализация?». Проблема в том, что Windows, по моему личному мнению, не отличается высокой надёжностью. Зачастую конечными пользователями системы являются не особо квалифицированные люди, в следствии чего на компьютер попадает зловредное ПО, которое может уничтожить все данные на всех накопителях. При этом необходимо чтобы бэкап хранился локально, но уничтожить его было не возможно. Организация большого и быстрого хранилища данных так же не является тривиальной задачей. Так или иначе, было решено запускать Windows в среде виртуальной машины (ВМ).
Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity