Pull to refresh
0
0

User

Send message

Intel IPP Samples for Windows — работа над ошибками

Reading time13 min
Views2.6K
Проверка Intel IPP Samples for Windows
Это моя очередная заметка о том, как PVS-Studio делает программы более надёжными. То есть где, и какие ошибки он обнаруживает. На этот раз под молоток попали примеры, демонстрирующие работу с библиотекой IPP 7.0 (Intel Performance Primitives Library). Хотел, вначале, этот пост поместить в блог Intel, но потом решил, что это будет совсем уже...
Читать дальше →

Реализация графов и деревьев на Python

Reading time17 min
Views291K
Продолжаем публикацию наиболее интересных глав из книги Magnus Lie Hetland «Python Algorithms». Предыдущая статья расположена по адресу habrahabr.ru/blogs/algorithm/111858. Сегодня же речь пойдет об эффективной работе с графами и деревьями и особенностях их реализации в Python. Базовая терминология теории графов уже обсуждалась (например здесь: habrahabr.ru/blogs/algorithm/65367), так что я не включил часть главы о терминах в эту статью.

Реализация графов и деревьев


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

Динамика по подотрезкам: базовые вещи и «одна хорошо, а две лучше»

Reading time8 min
Views22K
Добрый вечер.
В этом посте я разберу задачу B «Дубы» с практического тура городской олимпиады школьников Санкт-Петербурга по информатике.
Задача эта на динамическое программирование по подотрезкам и идея решения интересна тем, что удобнее посчитать две динамики вместо одной. Если вас заинтересовало (незнание динамики не освобождает, но будет труднее) — добро пожаловать.
Читать дальше →

Vim и кириллица: парочка приёмов

Reading time2 min
Views58K
image

Раньше для редактирования обычных русскоязычных текстов, я обычно откладывал Vim в сторонку и прибегал к помощи других редакторов. Причиной этому была парочка очень неприятных косяков:
  1. На каждый чих приходилось сто раз переключать раскладку, чтобы корректно ввести пару команд и вернуться обратно. Например, замена буквы-опечатки в только что написанном слове, выливалось в: switch → добраться до буквы, нажать r → switch → [нужная буква] → switch → A → [пишем дальше]. Ад!
  2. Штатный spell checker букву «ё» не любил и любое слово с её участием предлагал заменить на аналог через «е». А я ё люблю, меня это расстраивало.

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

Основы Linux от основателя Gentoo. Часть 3 (3/4): Управление аккаунтами в Linux

Reading time7 min
Views46K
Продолжение третьей части серии руководств Linux для новичков. Основы управления пользователями и группами.

Навигация по основам Linux от основателя Gentoo:

Часть I:
  1. BASH, основы навигации
  2. Управление файлами и директориями
  3. Ссылки, а также удаление файлов и директорий
  4. Glob-подстановки
Читать дальше →

Vim как IDE для веб-разработки, и не только.

Reading time12 min
Views102K
В данной статье рассматриваются мощные плагины, позволяющие повысить удобство разработки в VIM, а также даются ценные указания по их доработке и использованию. В том числе, используемых команд и горячих клавиш.

Рассмотрена настройка через конфигурационный файл vimrc и приведены ссылки на статьи с описанием отдельных моментов.

Кого-то VIM оттолкнет, показавшись поначалу слишком сложным или неудобным. Однако не стоит недооценивать его гибкость и возможность настройки себя, ведь из VIM можно буквально вылепить идеальный редактор/IDE, таким, каким вы представляете его себе.

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

Я постарался писать как можно компактней, но без потери содержательной части, но статья все-равно вышла довольно объемной. Материал логически разбит на несколько разделов и совсем не обязательно читать его по порядку. Тем не менее, прочитать сведения по установке плагинов и настройке vimrc я рекомендую настоятельно.


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

Hg Init: Часть 6. Архитектура репозиториев

Reading time5 min
Views30K
Это шестая, заключительная часть из серии Hg Init: Учебное пособие по Mercurial от Джоэля Спольски (Joel Spolsky). Предыдущие части:



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

Часть 6. Архитектура репозиториев



Наш рецепт становится все лучше:

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

Введение в OCaml: Структура программ на OCaml [2]

Reading time12 min
Views8.3K
[прим. пер.: продолжение перевода, первая статья тут]
тизер к статье с графикой на OCaml

Структура программ на OCaml


Теперь мы потратим немного времени на высокоуровневый анализ некоторых настоящих программ на OCaml'е. Я хотел бы показать вам локальные и глобальные определения, разницу в использовании ;; и ;, модули, вложенные функции, ссылки. Из-за этого мы столкнёмся с множеством концепций OCaml'а, которые пока что не имеют смысла для начинающего изучать OCaml, так как мы не встречали их ранее. Не фокусируйтесь на них, сконцентрируйтесь вместо этого на общем представлении о формате программ и особенностях языка, на которые я буду указывать.

Локальные «переменные» (на самом деле локальные выражения)


Возьмём нашу функцию average на Си и добавим в неё локальные переменные (сравните её с примером в прошлой главе).

double average (double a, double b)
{
  double sum = a + b;
  return sum / 2;
}

Теперь посмотрим на это для OCaml:

let average a b =
  let sum = a +. b in
  sum /. 2.0;;

Стандартное выражение let name = expression in используется для определения локального именованного выражения и name может быть использовано в дальнейшем вместо expression вплоть до ;;, который означает окончание локального блока кода. Обратите внимание, мы даже не использовали отступ после объявления in. Просто воспринимайте let ... in так, как будто это один оператор.
Читать дальше →

Числа, которые должен знать каждый программист

Reading time1 min
Views18K
Чтобы было понятно, на чём следует концентрироваться при оптимизации, слайд из доклада «Создание программных систем в Google и его уроки»:
Таблица

RZD+: Расширение Chrome для упрощения процесса покупки билетов на сайте РЖД

Reading time2 min
Views7.7K
Вкратце: как многие знают, что сайт РЖД ticket.rzd.ru не очень приятен — слишком много нужно тыкать мышкой, чтобы узнать цены билетов на разные поезда. Расширение RZD+ для Chrome может сделать процесс покупки на сайте РЖД чуточку проще — теперь при покупке билета в шаге выбора поезда достаточно нажать на кнопку «Инфо» в правой части описания поезда, чтобы без перехода на другие страницы посмотреть информацию о ценах и количестве мест разных типов в выбранном поезде.
rzd+ icon

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

Поиск и решение проблем масштабируемости на примере многоядерных процессоров Intel Core 2 (часть 1)

Reading time7 min
Views3.1K
Адаптация программного обеспечения для эффективного использования всех доступных процессоров наиболее критична в свете намечающегося многоядерного будущего современной вычислительной техники. Кроме всех прочих препятствий, которые могут быть встречены на этом пути, существуют проблемы, связанные с совместным использованием конечной пропускной способности существующих платформ и процессоров. Правильное использование событий производительности процессора Intel Core2 позволит определить точную причину, останавливающую приложение на пути к полноценному использованию всех доступных в системе ядер.
Читать дальше →

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

Reading time8 min
Views68K
image

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

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

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

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

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

Ajenti 0.4

Reading time1 min
Views1.7K
За короткий срок мне удалось выполнить почти все ваши, хабраюзеры, заказы на функциональность, и теперь я просто хочу донести до вас новость о выпуске новой версии (осторожно, пост-changelog!).

Традиционная картинка для привлечения внимания:

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

Основы Linux от основателя Gentoo. Часть 2 (3/5): Управление процессами

Reading time7 min
Views60K
В этом отрывке рассмотрены команды управления процессами. Вы научитесь замораживать процессы, размораживать, отправлять в фоновый режим, изменять приоритет, просматривать запущенные процессы и жестоко их убивать. Введено понятие сигналов. Рассмотрены такие команды, как bg, fg, jobs, kill, nohup, nice, renice, ps и top.



Навигация по основам Linux от основателя Gentoo:

Часть I
  1. BASH: основы навигации (вступление)
  2. Управление файлами и директориями
  3. Ссылки, а также удаление файлов и директорий
  4. Glob-подстановки (итоги и ссылки)

Часть II
  1. Регулярные выражения (вступление)
  2. Назначения папок, поиск файлов
  3. Управление процессами
  4. Обработка текста и перенаправления
  5. Модули ядра (итоги и ссылки)


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

Создание локального репозитория Ubuntu 10.04

Reading time4 min
Views14K
Постепенный перевод предприятия на GNU/Linux порождает необходимость соответствующих изменений в инфраструктуре. Сегодня мы решаем проблему глобального обновления клиентских машин путем создания локального репозитория. Процесс изначально документировался как памятка на будущее, потому заранее прошу прощенья за возможные несуразности в тексте. Итак.
Для начала следует определиться, посредством чего лучше сделать это. Интернеты выделяют двух фаворитов rsync и debmirror. Выбрал последний, ввиду его большей гибкости.

1. Получение ключей


Для создания зеркала репозитория необходимо получить ключ «Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>». Для этого в терминале от суперюзера вводим:
gpg --no-default-keyring --keyring trustedkeys.gpg --recv-keys 437D05B5
Читать дальше →

Основы Linux от основателя Gentoo. Часть 2 (2/5): Назначения папок, поиск файлов

Reading time9 min
Views78K
В данном отрывке рассказано о стандарте иерархии файловой системы (FHS), почему директории так называются и для чего они нужны. Упомянута переменная окружения PATH и разобраны основные команды для поиска файлов в системе, такие как whereis, find и locate (slocate).



Навигация по основам Linux от основателя Gentoo:

Часть I
  1. BASH: основы навигации (вступление)
  2. Управление файлами и директориями
  3. Ссылки, а также удаление файлов и директорий
  4. Glob-подстановки (итоги и ссылки)

Часть II
  1. Регулярные выражения (вступление)
  2. Назначения папок, поиск файлов
  3. Управление процессами
  4. Обработка текста и перенаправления
  5. Модули ядра (итоги и ссылки)


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

Псевдографика в консоли Unix/Linux. Немного больше User Friendly чем вы могли себе позволить

Reading time14 min
Views33K
Привет! Бывает, хочется забыть о «скучной» консоли, разбавить ее хоть капелькой интерактива, особенно если часто приходиться делать одни и теже операции и тем более если вы пишите для облегчения своей участи скрипты. Итак, псевдографика. За мной читатель, я покажу тебе такую консоль!
Читать дальше →

Information

Rating
Does not participate
Registered
Activity