Pull to refresh
59
0

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

Send message

Хабраиндекс для статей по программированию под Android

Reading time2 min
Views94K
Читать дальше →
Total votes 220: ↑204 and ↓16+188
Comments43

Алгоритмы поиска в строке

Reading time4 min
Views189K

Постановка задачи поиска в строке


Часто приходится сталкиваться со специфическим поиском, так называемым поиском строки (поиском в строке). Пусть есть некоторый текст Т и слово (или образ) W. Необходимо найти первое вхождение этого слова в указанном тексте. Это действие типично для любых систем обработки текстов. (Элементы массивов Т и W – символы некоторого конечного алфавита – например, {0, 1}, или {a, …, z}, или {а, …, я}.)

Наиболее типичным приложением такой задачи является документальный поиск: задан фонд документов, состоящих из последовательности библиографических ссылок, каждая ссылка сопровождается «дескриптором», указывающим тему соответствующей ссылки. Надо найти некоторые ключевые слова, встречающиеся среди дескрипторов. Мог бы иметь место, например, запрос «Программирование» и «Java». Такой запрос можно трактовать следующим образом: существуют ли статьи, обладающие дескрипторами «Программирование» и «Java».

Поиск строки формально определяется следующим образом. Пусть задан массив Т из N элементов и массив W из M элементов, причем 0<M≤N. Поиск строки обнаруживает первое вхождение W в Т, результатом будем считать индекс i, указывающий на первое с начала строки (с начала массива Т) совпадение с образом (словом).
Пример. Требуется найти все вхождения образца W = abaa в текст T=abcabaabcabca.

Образец входит в текст только один раз, со сдвигом S=3, индекс i=4.
Читать дальше →
Total votes 86: ↑66 and ↓20+46
Comments38

Видеохостинг своими руками

Reading time6 min
Views69K
Эта статья о некоторых технических аспектах реализации бесплатного сервиса для загрузки, хранения и просмотра видео. Будут рассмотрены вопросы настройки серверного программного обеспечения, даны примеры команд для конвертации видео и примеры кода на языке PHP.
Читать дальше →
Total votes 126: ↑126 and ↓0+126
Comments108

Перехват системных вызовов с помощью ptrace

Reading time4 min
Views34K
ptrace (от process trace) — системный вызов в некоторых unix-подобных системах (в том числе в Linux, FreeBSD, Max OS X), который позволяет трассировать или отлаживать выбранный процесс. Можно сказать, что ptrace дает полный контроль над процессом: можно изменять ход выполнения программы, смотреть и изменять значения в памяти или состояния регистров. Стоит оговориться, что никаких дополнительных прав при этом мы не получаем — возможные действия ограничены правами запущенного процесса. К тому же, при трассировке программы с setuid битом, этот самый бит не работает — привилегии не повышаются.

В статье будет показано, как перехватывать системные вызовы на примере ОС Linux.
Читать дальше →
Total votes 57: ↑54 and ↓3+51
Comments9

Знакомимся с OpenGL

Reading time8 min
Views297K

OpenGL


Знакомство с OpenGL нужно начать с того, что OpenGL — это спецификация. Т.е. OpenGL лишь определяет набор обязательных возможностей. Реализация же зависит от конкретной платформы.
OpenGL является кроссплатформенным, независимым от языка программирования API для работы с графикой. OpenGL — низкоуровневый API, поэтому для работы с ним неплохо иметь некоторое представление о графике в целом и знать основы линейной алгебры.
Читать дальше →
Total votes 96: ↑81 and ↓15+66
Comments47

Обработка POST тела в разрабатываемых модулях

Reading time5 min
Views3.3K
На сегодняшний день достаточно руководств и описаний, как разработать собственный модуль под nginx. Для тех, кто на танке, ссылки можно найти на сайте nginx
Но, как использовать данные POST, к сожалению информации кот наплакал.

Читать дальше →
Total votes 8: ↑6 and ↓2+4
Comments7

Ресайз изображений на лету

Reading time9 min
Views20K
Практически в любом веб-приложении использующем изображения существует потребность формировать уменьшенные копии этих изображений, причем зачастую, форматов дополнительных изображений несколько.
Так же вызывает некоторую головную боль добавление новых размеров на существующем приложении. Отсюда задача:
Читать дальше →
Total votes 73: ↑69 and ↓4+65
Comments65

Apache, fastcgi и c++: «Hello, world»

Reading time6 min
Views42K
img
Писать web-приложения на C/C++ дело неблагодарное. Многие говорят, что это полное безумие, когда есть PHP и Perl. И я с ними согласен. Это очень просто написать сайт на PHP(особенно используя фреймворки вроде Zend Framework).
Но..(всегда есть какое-то «но»).
Давайте не будем забывать, что простота использования складывается не только из простого синтаксиса. Учитывается множество параметров. И одним из весомых параметров является наличие статей «Get started with ...» с примерами «hello, world»-программ. Я собираюсь добавить немного простоты написанию fastcgi на C/C++. И если прочитав эту статью хоть один человек скажет «А это не так уж и сложно», то я буду считать свою миссию выполненной.
читать далее
Total votes 98: ↑87 and ↓11+76
Comments114

audio.js — слушаем музыку в любом браузере

Reading time1 min
Views70K
audio.js — это javascript библиотека, позволяющая использовать HTML5 тэг повсюду. Что скрывается за словом «повсюду». Если есть возможность использовать тэг , то будет использоваться он, иначе будет подключен плеер на flash. В библиотеку так же входит и UI отображение для этого плеера, которое может быть видоизменено с помощью css.
Читать дальше →
Total votes 77: ↑74 and ↓3+71
Comments37

Перехват системных вызовов в linux под x86-64

Reading time3 min
Views6.5K

Введение


В интернете опубликовано множество статей по перехвату системных вызовов под x32. В рамках решения одной задачи появилась необходимость в перехвате системных вызовов под архитектурой x86-64 при помощи загружаемого модуля ядра. Приступим:
Total votes 56: ↑49 and ↓7+42
Comments14

Тюнинг linux для игр

Reading time5 min
Views14K
imageНесколько раз замечал жалобы новых пользователей linux на отзывчивость игр. Говорят, что после продолжительной игры в windows, в линуксе сразу заметны странные задержки системы. В пример ставится задержка между кликом по кнопке выстрела и самим выстрелом, например, это выразительно проявляется с railgun в quakelive. Конечно, время средней реакции игрока на событие (200-220мс) существенно больше выигрыша от какого-либо тюнинга системы, но если можно обратить пару десятков миллисекунд в свою пользу, то почему бы не сделать это? В общем, и сами пользователи windows, увлекшись, ищут способы тюнинговать систему для более приятной игры. Немалую роль играет и сугубо игровой тюнинг переменных, но об этом достаточно информации на специализированных форумах, и в очередной раз обсуждать это не стоит.

Внутри тюнинг linux
Total votes 88: ↑73 and ↓15+58
Comments45

Любовь Google Maps к российским стратегическим объектам

Reading time3 min
Views32K
Пользуюсь сервисом спутниковых снимков от Google практически с момента его появления и давно уже заметил странную особенность: он очень тяготеет к различным стратегическим объектам нашей необъятной Родины. Заурядные городишки Google Maps интересуют явно меньше чем военные части, аэродромы, полигоны, приграничные территории и т.д.

К примеру, в Бурятии и Забайкальском крае с хорошим разрешением снята совсем небольшая часть поверхности, в то же время, 70-80% малонаселенных областей границы с Монголией и Китаем сняты с отличным качеством! Зачем???
Читать дальше →
Total votes 167: ↑137 and ↓30+107
Comments222

Пишем свой драйвер под Linux

Reading time8 min
Views68K
image

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

То, что мы сегодня создадим, корректнее будет назвать LKM (Linux Kernel Module или загрузочный модуль ядра). Стоит сказать, что драйвер – это одна из разновидностей LKM.

Писать модуль мы будем под ядра линейки 2.6. LKM для 2.6 отличается от 2.4. Я не буду останавливаться на различиях, ибо это не входит в рамки поста.

Мы создадим символьное устройство /dev/test, которое будет обрабатываться нашим модулем. Хочу сразу оговориться, что размещать символьное устройство не обязательно в каталоге /dev, просто это является частью «древнего магического ритуала».

Читать дальше →
Total votes 251: ↑240 and ↓11+229
Comments78

Сумбурные заметки про python и django

Reading time5 min
Views47K
Накопилось несколько маленьких заметок/советов про python и django, которые на отдельные топики не тянут, поэтому публикую все сразу.

Под катом:
  • как упростить код вьюх ровно в 2 раза
  • легкий способ рисования графиков
  • почему Ian Bicking воскликнул «Cool!»
  • приложения для ВКонтакте на django за 5 минут
  • хорош ли pymorphy?
  • пара фишек насчет выкладки пакетов на pypi
  • что общего между декораторами и with-контекст-менеджерами
  • принимаем оплату на django-сайтах
  • показываем Яндекс.Карту для заданного адреса

Читать дальше →
Total votes 159: ↑153 and ↓6+147
Comments37

Пишем свою ОС: Выпуск 1

Reading time6 min
Views273K
Данный цикл статей посвящён низкоуровневому программированию, то есть архитектуре компьютера, устройству операционных систем, программированию на языке ассемблера и смежным областям. Пока что написанием занимаются два хабраюзера — iley и pehat. Для многих старшеклассников, студентов, да и профессиональных программистов эти темы оказываются весьма сложными при обучении. Существует много литературы и курсов, посвящённых низкоуровневому программированию, но по ним сложно составить полную и всеохватывающую картину. Сложно, прочитав одну-две книги по ассемблеру и операционным системам, хотя бы в общих чертах представить, как же на самом деле работает эта сложная система из железа, кремния и множества программ — компьютер.

Каждый решает проблему обучения по-своему. Кто-то читает много литературы, кто-то старается поскорее перейти к практике и разбираться по ходу дела, кто-то пытается объяснять друзьям всё, что сам изучает. А мы решили совместить эти подходы. Итак, в этом курсе статей мы будем шаг за шагом демонстрировать, как пишется простая операционная система. Статьи будут носить обзорный характер, то есть в них не будет исчерпывающих теоретических сведений, однако мы будем всегда стараться предоставить ссылки на хорошие теоретические материалы и ответить на все возникающие вопросы. Чёткого плана у нас нет, так что многие важные решения будут приниматься по ходу дела, с учётом ваших отзывов.
Читать дальше →
Total votes 293: ↑282 and ↓11+271
Comments225

Поднять 100 долларов или пройти мимо? Теория вероятностей в повседневной работе

Reading time6 min
Views31K
Удивительное дело, но мы чаще действуем полагаясь на интуицию, чем на здравый смысл и расчет. К сожалению, это касается не только личной жизни, но и работы. Помните старую историю о том, стоит ли Биллу Гейтсу подбирать бумажку в сто долларов из под ног? Шутники рассчитывали сколько зарабатывает Гейтс в минуту и утверждали, что поднимая бумажку он тратит свое время неэффективно.

Как вы считаете, стоило ему поднимать эти деньги? Не спешите с ответом. Пусть Гейтс зарабатывает в минуту 64 тысячи долларов. Это условное число. Нужно ли поднять бумажку в сто долларов? Подумайте.

И тут мы получаем, ловушку, которая заложена изначально в самой постановке вопроса. Гейтс не затрачивает свое личное время для того, чтобы приумножать состояние, это делают деньги на банковских счетах. Поэтому нагнувшись, Билл получит дополнительные сто долларов и это выигрышная ситуация для него. Чувствуете разницу в постановке вопроса? Я не беру в рассмотрение то, что эмоционально как и любой человек, он обрадуется тому, что нашел такую купюру. И это будет связано с тем, что найти сто долларов редкая удача и мало кто может похвастаться этим. Вы находили сто долларов? Только отвечайте честно. Если да, то что ощущали? Вероятность такого события крайне мала, отсюда высокая эмоциональная окраска.

Об автобусе и горилле на поле, шоу на ТВ и открытие двери с гоночным автомобилем, который можно забрать домой. Теория вероятностей в действии.

Читать дальше →
Total votes 247: ↑169 and ↓78+91
Comments264

Демон конвертации видео в FLV

Reading time3 min
Views3.7K
Решил поделиться недавно написанным кодом демона для видеохостинга.
Принцип демона прост. Демон смотрит в папку, куда загружаются видеофалы, и при появлении там новых, копирует в другую папку, запускает в фоне процесс конвертации, создает превьюшку, и копирует полученное видео в папку пользователя.
Читать дальше →
Total votes 40: ↑39 and ↓1+38
Comments31

UPD. Демон конвертации видео в FLV.

Reading time1 min
Views2.3K
Это продолжение, а точнее развитие, статьи написанной ранее.

В результате небольшого рефакторинга, получилось повысить производительность, и упростить код. Результатом стало изменение перечня используемого софта.
Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments53

Information

Rating
Does not participate
Date of birth
Registered
Activity