Рейтинг@Mail.ru

Наши друзья и партнеры

UnixForum
купить дешевый 
компьютер родом из Dhgate.com



Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог ->

Программирование и алгоритмические языки

Материалы для чтения on-line

  • 26.06.2017 Lawrence Aberba, перевод: А.Панин, "Пять причин, по которым язык программирования D является отличным выбором для вашего нового проекта"
    D является статически типизированным языком программирования общего назначения с C-подобным синтаксисом, компилируемым в машинный код. Возможность создания прототипов, скорость разработки, читаемость кода и другие преимущества языка D делают его отличным инструментом для совместной разработки программных проектов. По ряду причин он отлично подходит для разработки программного обеспечения с открытым исходным кодом; в данной статье рассказано о некоторых из них.
  • 25.05.2017 Tim Schürmann, перевод: А.Панин, "Meson - новая система сборки программного обеспечения"
    Разработчики, уставшие от сложных Make-файлов, определенно должны обратить внимание на новую систему сборки программного обеспечения под названием Meson, которая проста в использовании, позволяет создавать сценарии сборки, поддерживает внешние инструменты для тестирования программного обеспечения и работает в Linux, Windows и Mac OS X. Meson позволяет осуществлять сборку исполняемых файлов и разделяемых библиотек и при этом поддерживает возможность создания множества директорий для генерации различных сборок программного обеспечения на основе одного и того же исходного кода. Гибкий язык конфигурации прост для изучения, открывает множество возможностей для разработчика и поддерживает условные инструкции if.
  • 15.05.2017 Arnab Satapathi, перевод: А.Панин, "Запуск сценариев на языке JavaScript из командной строки"
    Язык программирования JavaScript набирает популярность день ото дня, причем сегодня его область применения не ограничивается веб-браузерами; JavaScript используется даже при программировании микроконтроллеров. Можно сделать вывод о том, что у языка программирования JavaScript отличное будущее, поэтому имеет смысл попробовать поработать с ним в Linux, а если быть более точным, научиться запускать сценарии на языке JavaScript из командной строки.
  • 30.04.2017 TuxetteChix, перевод: А. Кривошей, "Создание простого GUI в R с помощью библиотеки RGtk2"
    В этой статье представлено базовое введение в возможности пакета RGtk2, который обеспечивает создание программ с графическим интерфейсом в R с использованием библиотеки Gtk. Многие пользователи пишут скрипты R, принимающие на вход некоторые числовые данные, и возвращающие их статистические показатели. В статье на примере такого скрипта показано, как создать графический интерфейс, принимающий имя файла CSV, и выводящий всплывающее окно со стандартными статистическими показателями для данных из файла. Он также позволит пользователю сохранить результат в файле CSV.
  • 17.04.2017 Himanshu Arora, перевод: А.Панин, "Как отлаживать программы на языке C в Linux с помощью отладчика GDB"
    Вне зависимости от вашего опыта программирования, все разработанное вами программное обеспечение просто не может не содержать ошибок. По этой причине поиск и устранение ошибок являются одними из наиболее важных задач, выполняемых в рамках цикла разработки программного обеспечения. Хотя и существует несколько способов выявления ошибок в коде (тестирование, самостоятельный аудит кода и другие), для этой цели создан отдельный тип программного обеспечения под названием "отладчики". Вам безусловно будет полезно знать о существовании отличного отладчика под названием GDB, который позволяет достаточно просто отлаживать ваш код, помогая устранять ошибки и различные проблемные конструкции. В рамках данной статьи мы постараемся обсудить основные приемы работы с GDB, включая некоторые полезные функции/параметры данного инструмента.
  • 14.04.2017 Himanshu Arora, перевод: А.Панин, "Как установить и использовать профилировщик Gprof в Linux"
    Если вы являетесь разработчиком программного обеспечения, используете язык программирования C, Pascal или Fortran 77 и дистрибутив Linux в качестве платформы разработки, вам будет полезно знать о существовании мощного инструмента для проверки производительности вашего кода под названием Gprof. В данной статье подробно обсуждается процесс загрузки, установки и использования данного инструмента.
  • 04.04.2017 Himanshu Arora, перевод: А.Панин, "Малоизвестные полезные параметры компилятора GCC - часть 2"
    Компилятор GCC поддерживает на первый взгляд бесконечное количество параметров командной строки. Конечно же, никто не использует и не изучает все эти параметры в процессе работы над своим программным обеспечением, но существует ряд параметров, о которых должен, а может быть и обязан знать каждый разработчик. Некоторые из этих параметров могут использоваться достаточно часто, другие - от случая к случаю, что, впрочем, не делает их менее полезными. В данной серии статей рассматриваются некоторые из этих малоизвестных, но полезных параметров командной строки компилятора GCC.
  • 03.04.2017 Himanshu Arora, перевод: А.Панин, "Малоизвестные полезные параметры компилятора GCC - часть 1"
    Хороший компилятор любого языка программирования всегда поддерживает огромное количество параметров, но пользователи обычно знают и используют лишь их ограниченное количество. В частности, если вы разрабатываете код на языке C и используете Linux в качестве платформы для разработки программных продуктов, высока вероятность того, что вы используете компилятор GCC, который поддерживает огромное количество параметров командной строки. В данной статье рассматрены несколько таких параметров с их подробными описаниями и понятными примерами использования.
  • 29.03.2017 Mihalis Tsoukalos, перевод: А.Панин, "GNU Make: управляйте процессом сборки своего программного обеспечения"
    Компилируете программное обеспечение из исходного кода? Если это так, вам просто необходимо разобраться с Make-файлами. После создания корректного Make-файла для своего программного проекта, вы едва ли сможете допустить ошибки в процессе его сборки.
  • 27.03.2017 Juliet Kemp, перевод: А.Панин, "Будущее языков программирования"
    Автор решила попытаться предсказать события, которые будут происходить в мире языков программирования в течение следующих 50 лет... или хотя бы следующих 20 лет. Завершат ли используемые сегодня старые языки программирования свое существование? Какие новые языки программирования захватят умы разработчиков? Какие серьезные проблемы пытаются решить современные разработчики программного обеспечения и языков программирования сегодня? И как практика программирования повлияет на изменения в мире языков программирования в будущем?
  • 02.03.2017 Juliet Kemp, перевод: А.Панин, "Языки сценариев: что это такое и для чего они нужны?"
    Под "сценарием" обычно понимается единый фрагмент кода, который исполняется от начала до конца, но такие языки сценариев общего назначения высокого уровня, как Perl, Python и Ruby могут использоваться для разработки "сценариев", состоящих из тысяч строк кода и множества компонентов. Языки сценариев на сегодняшний день используются чуть ли не повсеместно; но чем они являются на самом деле?
  • 24.02.2017 Muhammad Usman Nasir, перевод: А.Панин, "Как интегрировать сценарий на языке Python в программу на языке C"
    Язык программирования Python завоевал популярность среди разработчиков благодаря своему простому синтаксису, низкому порогу вхождения и поддержке множества аппаратных платформ. Благодаря большому количеству доступных библиотек и модулей у разработчиков имеется возможность реализации сложных функций программ буквально в рамках нескольких строк кода. Если вы разрабатываете программу на языке C, причем часть этой программы должна быть разработана на языке Python и интегрирована в вашу программу на языке C с помощью специального API Python/C.
  • 15.02.2017 Reuven M. Lerner, перевод: А.Панин, "Переход на Python 3"
    Язык программирования Python не является новым, но продолжает развиваться и расширять аудиторию пользователей. Если у вас есть код, который исполняется с помощью интерпретатора Python 2, вам стоит задуматься о его адаптации к интерпретатору Python 3. Лучшим решением может быть ее инкрементальное обновление, заключающееся в адаптации кода сразу к двум версиям интерпретатора Python 2 и Python 3. После окончания процесса конвертации кода и успешного прохождения тестов на совместимость с обоими версиями интерпретатора вы сможете в любой момент отправиться в мир Python 3 со всеми его прелестями.
  • 02.02.2017 John Serrano, перевод: А.Панин, "Разработка нейронной сети на языке Python"
    Некоторые считают, что нейронные сети являются крайне сложными программами, доступными для понимания лишь академикам и гениям. На самом деле все совсем не так, нейронные сети являются достаточно простыми для понимания и реализации любым разработчиком программами. Разработка любой нейронной сети с нуля может оказаться достаточно сложной задачей, но, к счастью, существует несколько отличных библиотек, которые могут выполнять всю низкоуровневую работу за вас.
  • 05.01.2017 Mike Saunders, перевод: А.Панин, "Школа ассемблера: язык ассемблера для центральных процессоров архитектуры ARM"
    Хотя язык ассемблера на сегодняшний день и может считаться не особо актуальным, так как практически все современное программное обеспечение разрабатывается с использованием высокоуровневых языков программирования, он все еще находит свое применение в области встраиваемых систем, где всегда не хватает объемов оперативной памяти и устройств хранения данных. К тому же, возможность непосредственного использования инструкций центрального процессора не будет лишней при необходимости оптимизации тех или иных подпрограмм, которые исполняются тысячи раз в секунду и зачастую присутствуют в видеоиграх или системах симуляции физических процессов.
  • 12.12.2016 Ben Everard, перевод: А.Панин, "Code Ninja: Создание файловой системы с помощью FUSE"
    Обычно файловые системы создаются силами ядра операционной системы, в нашем же случае мы будем использовать технологию файловых систем пространства пользователя ("FUSE"), позволяющую разрабатывать приложения, создающие файловые системы вне ядра операционной системы. В данной статье мы будем использовать язык программирования Python для создания нашей файловой системы. Эта простейшая файловая система будет содержать всего лишь один файл с именем date, в котором, в свою очередь, будет содержаться информация о текущей дате.
  • 14.11.2016 Juliet Kemp, перевод: А.Панин, "Ada: язык программирования для оборонных ведомств"
    Механизмы языка программирования Ada для создания максимально безопасных программ сделали его популярным в области программных проектов для ответственных систем. Хотя на сегодняшний день он не всегда используется для оборонных проектов, он широко распространен в транспортных (на воздушном и железнодорожном транспорте, включая системы контроля перемещения поездов и воздушных судов Объединенного королевства), космических, банковских и медицинских проектах. Прочитав эту статью, вы получите представление об истории языка и его возможностях.
  • 07.11.2016 Mike Saunders, перевод: А.Панин, "Rust: начинаем работать с новым языком программирования от специалистов компании Mozilla"
    Специалисты компании Mozilla в течение пяти последних лет занимались, помимо прочего, разработкой Rust, чрезвычайно быстрого языка для системного программирования, позволяющего предотвратить практически все ошибки сегментирования и гарантирующего потокобезопасность. Другими словами, данный язык программирования позволяет разрабатывать программное обеспечение, работающее так же быстро, как и программное обеспечение, разработанное с использованием языка C, при этом лишенное проблем, присущих последнему.
  • 17.10.2016 Adrien Brochard, перевод: А.Кривошей, "5 лучших IDE для языка R в Linux"
    Если вы когда-нибудь имели дело с математической статистикой, возможно вы встречались с языком R. R является кроссплатформенным языком, и имеется целый набор хороших IDE, которые делают анализ данных в R более приятным. Если вы привязаны к какому-либо конкретному редактору, есть несколько очень хороших плагинов, чтобы превратить редактор практически в IDE.
  • 08.08.2016 Graham Morrison, перевод: А.Панин, "Знакомство с GNOME Builder"
    GNOME Builder - это интегрированная среда разработки для GNOME. С ней уже очень комфортно работать, в особенности благодаря продуманному дизайну графического интерфейса. Процесс установки приложения не является достаточно очевидным в том случае, если вы не желаете самостоятельно компилировать его, но это не является недостатком для приложения, созданного специально для разработчиков.
  • 06.07.2016 Adrien Brochard, перевод: А.Панин, "9 лучших интегрированных сред разработки с поддержкой языков программирования C/C++ для Linux"
    Благодаря данному списку вы узнаете о новых интегрированных средах разработки с поддержкой вашего любимого языка программирования. Следует отметить, что здесь рассмотрены далеко не все инструменты, облегчающие процесс разработки программных компонентов на языках C/C++ в Linux. Вы можете сообщить о своем любимом инструменте в разделе комментариев.
  • 22.06.2016 Graham Morrison, перевод: А.Панин, "Code Ninja: Что такое указатели?"
    Вы когда-нибудь задавались вопросом о том, что означают мистические символы "*" и "&" и каким образом они используются в коде? После чтения данной статьи у вас не будет возникать подобных вопросов.
  • 15.06.2016 Mike Saunders, перевод: А.Панин, "Школа ассемблера: расширение возможностей разработанной операционной системы"
    В прошлой статье об использовании языка ассемблера мы реализовали простейшую операционную систему, собрав воедино все техники и приемы, описанные в каждой из четырех статей серии. В данной статье мы будем добавлять в ядро операционной системы функции, которые впоследствии смогут использоваться обычными программами.
  • 13.06.2016 Alexander Larsson, перевод: А. Панин, "Сборка приложения для запуска в изолированном окружении xdg-app - часть 5"
    В предыдущих статьях серии мы занимались сборкой различных приложений и их локальным тестированием. В данной статье мы рассмотрим вопрос распространения этих приложений среди конечных пользователей. В первую очередь следует упомянуть о технологии OSTree. Эта технология лежит в основе механизма установки и распространения приложений для окружения xdg-app. Технология OSTree очень похожа на технологию, лежащую в основе системы контроля версий git, но при этом она была спроектирована специально для работы с деревьями бинарных файлов большого размера.
  • 31.05.2016 Alexander Larsson, перевод: А. Панин, "Сборка приложения для запуска в изолированном окружении xdg-app - часть 4"
    Основные функции и особенности изолированного окружения xdg-app.
  • 27.05.2016 Alexander Larsson, перевод: А. Панин, "Сборка приложения для запуска в изолированном окружении xdg-app - часть 3"
    В статье рассматривается метод автоматизации сборки приложения для запуска в изолированном окружении xdg-app с помощью инструмента xdg-app-builder.
  • 25.05.2016 Alexander Larsson, перевод: А. Панин, "Сборка приложения для запуска в изолированном окружении xdg-app - часть 2"
    И снова добро пожаловать в серию статей о сборке приложений для запуска в изолированном окружении xdg-app. В первой части мы установили все необходимые программные компоненты и собрали наше первое приложение в ручном режиме. В данной статье мы будем собирать более сложное приложение с помощью основных утилит xdg-app.
  • 20.05.2016 Alexander Larsson, перевод: А. Панин, "Сборка приложения для запуска в изолированном окружении xdg-app - часть 1"
    Первая статья из серии о сборке приложений для запуска в изолированном окружении xdg-app. Фундаментальной концепцией технологии xdg-app является разделение окружений исполнения и приложений. Каждое из приложений должно зависеть от окружения исполнения, которое содержит основные используемые этим приложением библиотеки. Окружения исполнения обычно одновременно используются множеством приложений, причем пользователь может установить в свою систему сразу несколько окружений исполнения.
  • 16.05.2016 Mike Saunders, перевод: А.Панин, "Школа ассемблера: разработка операционной системы"
    Располагая навыками, полученными в ходе чтения предыдущих статей серии, вы можете приступить к разработке своей собственной операционной системы! В данной статье мы сфокусируемся лишь на основных функциях операционной системы: загрузке и исполнении программ.
  • 11.05.2016 Mike Saunders, перевод: А.Панин, "Начинаем программировать на языке ассемблера: переход на уровень аппаратного обеспечения"
    На этот раз мы попробуем отказаться от операционной системы и поработать непосредственно с аппаратным обеспечением персонального компьютера. Вы сможете разработать код, который будет исполняться непосредственно на уровне центрального процессора и получать полное управление над системой без какого-либо взаимодействия с операционной системой, которая попросту отсутствует. Довольно увлекательное занятие, не так ли?
  • 09.12.2015 Mike Saunders, перевод: А.Панин, "Начинаем программировать на языке ассемблера"
    Большинство людей считает, что язык ассемблера мало чем отличается от черной магии и является частью темного и страшного мира, в который рискует войти лишь 0.01% лучших разработчиков программного обеспечения. Но на самом деле это красивый и очень доступный язык программирования. Вам стоит изучить его основы хотя бы для того, чтобы лучше понимать механизм генерации кода компиляторами, принцип работы центральных процессоров, а также лучше представлять принцип работы компьютеров.
  • 07.12.2015 Ben Everard, перевод: Н.Ромоданов, "Библиотека URWID: создаем интерфейсы текстового режима работы"
    В этой статье рассказано о том, как делать консольные интерфейсы на языке Python с использованием библиотеки Urwid. Urwid - это инструментарий для создания виджетов, это полноценная библиотека с поддержкой мыши, с возможностью интеграции средств ввода вывода, предоставляемых сторонними разработчиками, а также интеграции с сервисами.
  • 23.11.2015 TuxRadar, перевод: А.Панин, "Clutter: руководство для начинающих разработчиков"
    Clutter - это библиотека от разработчиков компании Intel, которая интенсивно используется для создания графических интерфейсов таких систем, как Moblin и Ubuntu Netbook Remix, а также GNOME 3. Интерфейс Clutter прост в изучении и использовании, причем с ним достаточно приятно работать. Если у вас не нашлось времени для изучения данного интерфейса ранее, расслабьтесь: мы собираемся продемонстрировать вам простой метод разработки приложений на основе библиотеки Clutter.
  • 02.11.2015 Mike Ruckman, перевод: А.Панин, "Как использовать сервис fpaste для распространения информации о проблемах программного обеспечения"
    Если вы используете или разрабатываете программное обеспечение, вам в любом случае придется передавать сообщения об ошибках, вывод команд или содержимое файлов по сети людям, способных помочь с диагностикой. Существует сетевой сервис для распространения текстовых файлов pastebin. В рамках экосистемы Fedora имеется аналогичный сервис: fpaste. Имя fpaste носит как предназначенный для распространения текстовых файлов сетевой сервис, так и утилита с интерфейсом командной строки, которая используется для работы с этим сетевым сервисом.
  • 30.10.2015 Mihalis Tsoukalos, перевод: А.Панин, "Хэш-таблицы: теория и практика"
    Хэш-таблица - это структура данных, которая содержит одну или большее количество пар ключ-значение. Хэш-таблицы используются при реализации компиляторов, баз данных, систем кэширования данных, ассоциативных массивов и других механизмов и программных продуктов. Хэш-таблицы являются одними из наиболее важных структур данных, изучаемых в рамках курсов компьютерных наук.
  • 26.10.2015 Joey Bernard, перевод: А.Панин, "Астрономические вычисления на языке Python"
    Одна из особенностей языка программирования Python, которая делает его настолько мощным, заключается в наличии большого количества подходящих практически для любых целей модулей. В данной статье рассказано о модуле Astropy, который был разработан сотрудниками Института исследований космоса для выполнения астрономических расчетов, обработки изображений и выполнения обсерваторных расчетов.
  • 14.10.2015 Mihalis Tsoukalos, перевод: А.Панин, "Знакомство с методикой разработки приложений на основе OpenGL"
    OpenGL является широко известным, мощным и функциональным стандартном генерации трехмерной, а также двухмерной графики. Данная статья является подробным руководством по разработке простых приложений на основе OpenGL, которое поможет вам понять методику рисования примитивов с помощью функций OpenGL.
  • 07.09.2015 Shawn Powers, перевод: А.Панин, "PHP для не-разработчиков"
    Целью данной статьи является подготовка читателя к непосредственному написанию полезного кода PHP. В рамках данного первого погружения в мир программирования, попытаемся создать что-либо полезное, но при этом простое.
  • 11.06.2015 А.Панин, "Возможности тулкита GTK+ и сопутствующих библиотек. Низкоуровневые функции для работы с сетью"
    Современные приложения с графическим интерфейсом все чаще используют сетевые сервисы. Несмотря на то, что в приложениях с графическим интерфейсом на основе тулкита GTK+ могут вполне успешно применяться вызовы функций API Linux для работы с сетевыми сокетами, в рамках библиотеки GIO реализованы классы, позволяющие разрабатывать кроссплатформенные сетевые приложения. Бесспорным преимуществом упомянутых классов является тесная интеграция с механизмами, реализованными в рамках библиотеки GLib.
  • 10.06.2015 А.Панин, "Возможности тулкита GTK+ и сопутствующих библиотек. Механизм загрузки ресурсов приложений"
    Дополнительные файлы ресурсов используются как приложениями с графическим интерфейсом, так и приложениями с интерфейсом командной строки. Примерами файлов ресурсов, используемых приложениями с графическим интерфейсом на основе тулкита GTK+, являются файлы изображений, звуковые файлы, файлы описания графического интерфейса и действий, файлы каскадных таблиц стилей с описаниями стилей элементов графического интерфейса, файлы с необходимыми для работы приложения данными и.т.д. Приложениям с интерфейсом командной строки для корректной работы также могут понадобиться файлы с данными. В данной статье рассматривается механизм загрузки ресурсов приложений, реализованный в рамках библиотеки GIO.
  • 09.06.2015 А.Панин, "Разработка дополнения для LibreOffice"
    В данной статье описывается процесс разработки простого дополнения для пакета LibreOffice, позволяющего преобразовывать открытый текстовый документ в документ формата HTML, оформленный в соответствии с требованиями оформления статей, присылаемых для публикации на сайте "Виртуальная энциклопедия "Linux по-русски".
  • 15.03.2015 Dan Nanni, перевод: А.Кривошей, "Как узнать версию glibc в Linux"
    При сборке из исходного кода некоторые программы в Linux могут требовать линковки с glibc определенной версии. В этом случае вам необходимо проверить, какая версия этой библиотеки установлена у вас в системе.
  • 18.02.2015 Tobias Gunther, перевод: Н.Ромоданов, "Семь полезных советов для тех, кто начинает использовать Git"
    В статье приведен ряд простых советов, которые помогут вам сделать Git важной частью вашего рабочего процесса веб-разработки.
  • 17.02.2015 Tobias Gunther, перевод: Н.Ромоданов, "Как быстро начать работу с Git"
    Базовое знание систем контроля версий стало необходимостью для каждого, кто работает с кодом, независимо от того, является ли он разработчиком программного обеспечения, веб-дизайнером, или даже художником, который должен работать в команде с разработчиками. Однако помимо того, что это просто нужно знать, есть и ряд причин, почему вам следует пользоваться системой контроля версий.
  • 16.02.2015 Jacob Gube, перевод: Н.Ромоданов, "Интерактивные курсы по Git"
    Система управления версиями является важным компонентом в современном процессе разработки. Подходит любая хороша система управления версиями, но Git, кажется, является самой популярной. Н.Ромоданов перевел несколько статей о Git, эти переводы мы начинаем публиковать на нашем сайте.
  • 08.01.2015 Richard Smedley, перевод: Н.Ромоданов, "Руководство по контролю версий с использованием Git"
    Git является распределенной системой контроля версий, написанной Линус Торвальдсом. Благодаря GitHub и десятку других популярных репозиториев, в которых Git используется как социальное хранилище, а также средство совместного использования кода, он становится именно тем, что по умолчанию выбирается в новых проектах в качестве средства распределенного контроля версий и управления исходным кодом.
  • 07.01.2015 Carla Schroder, перевод: Н.Ромоданов, "Знакомство с Git и Github для пользователей Linux"
    Распределенная система контроля версий Git является приятным следующим шагом после Subversion, CVS, Mercurial. Она отлично подходит для распределенной разработки, когда у вас есть несколько помощников, работающих над одним проектом, и для безопасной проверки всех видов сумасшедших изменений. Мы собираемся использовать бесплатным аккаунтом GitHub с тем, чтобы сдвинуться в правильном направлении и начать что-то делать.
  • 22.08.2014 Rob Zwetsloot, перевод: Н.Ромоданов, "Установка пакета Hacklang и сборка приложения Hack"
    Язык Hack - PHP-подобный язык программирования общего назначения со статической типизацией, разработанный компанией Facebook и представленный 21 марта 2014 года. Код, написанный на языке Hack, исполняется на виртуальной машине HHVM (англ. HipHop Virtual Machine), созданной на базе транслятора HipHop, и поддерживающего одновременно и Hack, и PHP. Является открытым программным обеспечением - исходные коды проекта открыты для участников сообщества.
  • 21.08.2014 Gary Sims, перевод: Н.Ромоданов, "Как с помощью Cygwin компилировать Linux-программы под Windows"
    Когда дело касается компиляции и запуска программ, написанных для Linux, в Windows, есть решение, известное как Cygwin. Проект Cygwin представляет собой набор наиболее распространенных инструментов и компиляторов (включая оболочки Bash и цепочку компиляторов GNU) для Windows. В его состав также входит библиотека, с помощью которой реализован слой совместимости, поэтому можно компилировать программы, в которых вызываются интерфейсы API, специфические для Linux. Cygwin не является эмулятором или виртуальной машиной, и он не позволяет двоичным файлам Linux работать на Windows без их предварительной перекомпиляции.
  • 08.06.2013 Renata Rendek, перевод: А.Кривошей, "Обзор языка программирования GNU R"
    Это первая из серии статей, посвященных программированию в R, в которых предполагается представить в сжатой форме элементарные составляющие языка программирования R, что поможет вам понимать код и писать свой.
  • 22.05.2013 Renata Rendek, перевод: А.Кривошей, "Установка и использование пакетов в GNU R"
    GNU R предлагает пользователям большой набор пакетов различных типов, позволяющих строить графики или выполнять статистические тесты. Некоторые пакеты специально созданы для использования в каких-либо отраслях промышленности. Многие уже включены в базовый инсталляционный набор R, но часть необходимо устанавливать дополнительно.
  • 14.05.2013 Renata Rendek, перевод: А.Кривошей, "Краткое руководство по статистическим моделям и построению графиков в GNU R"
    В этой части обзора мы рассмотрим пример простой линейной регрессии и узнаем о том, как выполнять базовый статистический анализ данных. Наш пример мы будем иллюстрировать графически, что позволит нам ближе познакомиться с построением графиков и диаграмм в GNU R.
  • 07.05.2013 Renata Rendek, перевод: А.Кривошей, "Введение в базовые операции, функции и структуры данных GNU R"
    Задача этой публикации - познакомить вкратце читателя с основными объектами языка программирования R. Мы изучим базовые операции R, функции и переменные. Далее мы ознакомимся со структурами данных R, объектами и классами.
  • 04.05.2013 Renata Rendek, перевод: А.Кривошей, "Запуск GNU R в Linux"
    GNU R можно запустить в Linux несколькими способами. В данной статье мы опишем запуск R из командной строки, как оконного приложения, в пакетном режиме и из скрипта оболочки. Вы увидите, какие опции требуются для запуска R в linux при выполнении различных задач. Некоторые из них больше подходят для простого статистического анализа, который можно осуществить с помощью одной строки кода, другие - для более сложных задач, которые требуют выполнения большого числа выражений R. В конце концов нам может потребоваться программа, которая будет работать на кластере linux в течение суток или двух. В этом случае мы будем запускать R в фоновом режиме, что позволяет нам выйти из кластера.
  • 03.05.2013 Renata Rendek, перевод: А.Кривошей, "Введение в GNU R"
    R - это язык программирования с открытым исходным кодом (программный пакет) и окружение, использующееся в основном для статистического анализа данных. В этой статье будет говориться в основном об установке R в Linux, но также покажем простой пример использования R для построения графика. Это первая статья в серии, посвященной R, которая будет интересна всем, кто хочет научиться пользоваться R.
  • 18.04.2013 Lyle Johnson, перевод: А.Ремнёв, "FXRuby - Create Lean and Mean GUIs with Ruby. The Pragmatic Programers"
    Алексей Ремнёв прислал для публикации на нашем сайте перевод этой книги. К сожалению, перевод немного страдает в плане литературного языка. Как пишет сам переводчик "с литературным стилем не очень хорошо. Но программист поймёт. Может кто пожелает окончательно отшлифовать." Править текст было бы очень трудоемко, так что перевод выкладывается "КАК ЕСТЬ". Ну и сразу имейте в виду, что формат файла - PDF.
  • 13.03.2013 Ульрих Дреппер, перевод Н.РОмоданов "Как писать разделяемые библиотеки".
    Данная статья познакомит вас с необходимыми правилами и методами создания оптимизированного кода разделяемых библиотек.
  • 11.03.2013 V. Nagaradjane, перевод: А.Панин, "Управление сессиями в PHP, часть 2: Сессии на стороне сервера"
    Формирование сессий на стороне сервера является наиболее безопасной стратегией работы с сессиями. Эта стратегия надежна, так как она никоим образом не зависит от настроек кук. Обычно серверы лучше защищены от проникновений злоумышленников. Следовательно, вероятность доступа неавторизованных лиц к данным сессий крайне ограничена.
  • 08.03.2013 V. Nagaradjane, перевод: А.Панин, "Управление сессиями в PHP, часть 1: Сессии на основе кук"
    Механизм управления сессиями позволяет использовать два преимущества: он защищает содержимое веб-страниц от доступа без авторизации и позволяет странице с одной и той же строкой URL вести себя по-разному в зависимости от пожеланий пользователя.
  • 28.01.2013 Koen Vervloesem, перевод: М.Хвощ, "Управление Linux десктопом через D-Bus"
    Каждая современная Linux среда рабочего стола использует D-Bus, систему, позволяющую программным приложениям общаться друг с другом. Благодаря D-Bus, ваш десктоп может быть настроен точно так, как вы хотите. В этой статье приведены примеры некоторых возможностей D-Dus.
  • 26.01.2013 sachit, перевод: А.Кривошей, "Пишем собственный калькулятор в виде скрипта командной оболочки"
    Скрипты оболочки - это основа мощи Linux. С их помощью мы можем делать самые разные вещи. Если вы до этого никогда не имели дело со скриптами, и первое, что вы увидели - это руководство, я рекомендую вам сначала немного изучить основы скриптов, чтобы понимать, о чем будет идти речь. В этом руководстве мы собираемся написать простой калькулятор, который будет выполнять простые математические операции: сложение, вычитание, умножение и деление.
  • 14.01.2013 George Koharchik, перевод: А.Панин, "Обработка изображений при помощи OpenGL и шейдеров"
    При помощи технологии OpenGL и библиотеки GLUT вы можете ускорить процесс обработки изображений, используя всю мощь видеоадаптера вашей системы.
  • 27.12.2012 Gianluca Insolvibile, перевод: А.Панин, "Обратная трассировка стека в ваших программах"
    В статье описывается способ использования технологии вывода обратной трассировки стека, которая позволяет исследовать последовательность вызовов функций и установить функцию, являющуюся причиной неполадок.
  • 18.12.2012 Joshua Birnbaum, перевод: А.Панин, "Файловая система /proc в Linux как инструмент разработчика"
    Файловая система proc предоставляет огромное количество информации о системе всем ее использующим. В статье описываются приемы, которые могут применяться для манипуляции различными типами информации, связанной с работой операционной системы, при помощи системных вызовов и команд для работы с файлами.
  • 10.12.2012 George Koharchik, Kathy Jones, перевод: А.Панин, "Внутренние функции компилятора GCC для обработки данных в векторной форме"
    Высокая скорость работы очень важна для мультимедийных и графических приложений, а также приложений, осуществляющих обработку сигналов. Компилятор GCC позволяет использовать промежуточный вариант между ассемблером и стандартным языком C, который позволяет повысить скорость работы приложения и использовать специфические возможности центрального процессора, не используя ассемблер: внутренние функции (compiler intrinsics). Эта статья описывает внутренние функции компилятора GCC, при этом выделяются принципы использования этих функций на примере трех платформ: X86 (используются технологии MMX, SSE и SSE2); Motorоla, а сейчас Freescale (используется технология Altivec); и ARM Cortex-A (используется технология Neon).
  • 08.11.2012 Manoj Kumar, перевод: А.Панин, "Разработка приложений с использованием Qt, часть 4"
    В этой статье мы рассмотрим часть фреймворка Qt, предназначенную для создания графических интерфейсов.
  • 07.11.2012 Manoj Kumar, перевод: А.Панин, "Разработка приложений с использованием Qt, часть 3"
    В этой статье мы поработаем с механизмом, лежащим в основе поддержки графических интерфейсов в Qt - сигналами и слотами.
  • 06.11.2012 Manoj Kumar, перевод: А.Панин, "Разработка приложений с использованием Qt, часть 2"
    В данной статье мы научимся использовать классы Qt для работы с простейшими типами данных и списками.
  • 05.11.2012 Manoj Kumar, перевод: А.Панин, "Разработка приложений с использованием Qt, часть 1"
    Данная статья является вводной статьей серии, описывающей процесс разработки приложений с графическим интерфейсом на основе фреймворка Qt.
  • 29.10.2012 Vivek Shangari, перевод: Н.Ромоданов,
  • "Lisp: Слезы радости, часть 9"
    В этой статье автор рассказывает о средствах программирования графического пользовательского интерфейса, имеющихся в языке Lisp.
  • "Lisp: Слезы радости, часть 10"
    В этой, завершающей статье из серии статей о языке Lisp, автор подводит итог своего изложения свойств и особенностей этого функционально ориентированного языка программирования.
  • 28.10.2012 Vivek Shangari, перевод: Н.Ромоданов, "Lisp: Слезы радости, часть 8"
    В этой статье продолжается описание языка Lisp - рассказывается о возможностях объектно-ориентированного создания программ, предлагаемых этим языком. Сравниваются функциональные возможности и объектно-ориентированные возможности языка Lisp.
  • 27.10.2012 Vivek Shangari, перевод: Н.Ромоданов, "Lisp: Слезы радости, часть 7"
    В этой статье продолжается рассказ о том, как в среде языка Lisp используются макросредства. В частности рассказывается о возможностях выполнения дейстивий на этапе макроподстановки.
  • 26.10.2012 Vivek Shangari, перевод: Н.Ромоданов, "Lisp: Слезы радости, часть 6"
    В данной статье продолжается рассказ об особенностях использования различных методик в среде языка Lisp. В частности, рассказывается о том, как в Lisp следует использовать замыкания, позволяющие управлять обменом данных между отдельными запусками одних и тех же или различных программ.
  • 25.10.2012 Vivek Shangari, перевод: Н.Ромоданов, "Lisp: Слезы радости, часть 5"
    Это уже пятая статья в серии статей о языке LISP. В ней рассказывается об использовании макросов. Механизм макросредств, имеющийся в языке Lisp, является мощным и естественным расширением языка.
  • 22.10.2012 Vishal Kanaujia, Chetan Giridhar, перевод: А.Панин, "Легковесные процессы: анатомическое исследование программных потоков в Linux"
    В этой статье, предназначенной для разработчиков Linux и студентов факультетов компьютерных наук, рассматриваются основы работы программных потоков и их реализация на основе легковесных процессов в ОС Linux, а для лучшего понимания приводятся примеры исходного кода.
  • 19.10.2012 Dibyendu Roy, перевод: А.Панин, "Перехват функций разделяемых библиотек"
    В том случае, если вы являетесь разработчиком и хотите изменить принцип работы функции из разделяемой библиотеки, вы можете использовать информацию из этой статьи для того, чтобы понять с чего начать работу по перехвату функции библиотеки и провести ряд экспериментов с функциями вашей собственной разделяемой библиотеки. Исходные коды программ и библиотек разработаны на языке C, программы собраны при помощи компилятора GCC и протестированы в ОС Linux.
  • 18.10.2012 Robert Love, перевод: А.Панин, "Разбираемся с D-BUS"
    Прикладные программы, ядро операционной системы и даже ваш мобильный телефон могут информировать вас о наступивших событиях, что позволит вам использовать ваш компьютер с максимальным удобством. В этой статье рассказывается о том, как работает D-BUS и как приложения могут использовать эту систему. Приведены примеры программного кода.
  • 13.10.2012 Sarath Lakshman, перевод: А.Панин, "Разрабатывем XMPP-клиент для Google Talk"
    Системы мгновенных сообщений являются одной из основных составляющих организации социальных сетей и Интернет. Популярный клиент Google Talk, использующий протокол XMPP (Extensible Messaging and Presence Protocol), вывел этот протокол обмена мгновенными сообщениями в лидеры среди открытых стандартов. Изучение протокола XMPP (известного ранее как Jabber) доставляет удовольствие - он прозрачен и использует простейшую архитектуру. После того, как вы поймете это, вам не составит труда разрабатывать собственные клиенты для XMPP/Google Talk без использования сторонних программных компонентов на понятном и мощном языке программирования Python.
  • 12.10.2012 Nishant Sharma, перевод: А.Панин, "iLinuxBot: Проектируем ботнеты для управления Linux-клиентами"
    В этой статье показано, как можно управлять с одного компьютера множеством ПК под управлением Linux. Это позволяет снизить затраты времени и труда на установку программ, изменение настроек путем изменения конфигурационных файлов или перезагрузки множества систем одновременно.
  • 11.10.2012 Pankaj Tanwar, перевод: А.Панин, "Захват пакетов при помощи библиотеки libpcap"
    В данной статье проводится обзор основных функций библиотеки libpcap, которая лежит в основе лучших (и наших любимых) снифферов tcpdump и Wireshark, и демонстрируется пример создания программы для захвата пакетов.
  • 09.10.2012 Amit Saha, перевод: А.Панин, "Начинаем работать с Inotify"
    Inotify является функцией ядра Linux, предоставляющей интерфейс для отслеживания изменений файловой системы пользовательским приложениям. Эта статья демонстрирует примеры использования API Inotify для отслеживания интересующих событий и выполнения различных действий при наступлении этих событий.
  • 24.08.2012 Vivek Shangari, перевод: Н.Ромоданов, "Lisp: Слезы радости, часть 4"
    В этой статье обсуждается использование LISP в конкретных разработках, рекурсия в LISP, поясняются понятия атомов, списков и предикатов, рассматривается функция присваивания.
  • 23.08.2012 Vivek Shangari, перевод: Н.Ромоданов, "Lisp: Слезы радости, часть 3"
    Это третья статья в серии, которая посвящена языку Lisp. В ней рассказывается о том, как появился первый интепретатор языка Lisp, а также на примерах показывается, как в этом языке определяются переменные и функции и что вам нужно сделать в случае, когда вам нужны рекурсивные функции.
  • 20.08.2012 Vivek Shangari, перевод: Н.Ромоданов, "Lisp: Слезы радости, часть 2"
    Эта вторая статья из серии статей о языке Lisp расказывает о принципах программирования снизу-вверх, применения быстрого прототипирования и знакомит с основами языка. Расказывается об атомах, списках, фукциях и s-выражениях, которые используются в языке Lisp.
  • 17.08.2012 Vivek Shangari, перевод: Н.Ромоданов, "Lisp: Слезы радости, часть 1"
    В настоящее время только очень небольшой процент самых элитных программистов пользуются языком Lisp, так что если вы хотите быть в числе избранных, то эта серия статей для вас. В первой статье рассказывается о месте языка Lisp среди других языков программирования, объясняется, как установить и запустить пакет CLISP, и на примере написания простой программы угадывания чисел показывается, что, собственно, может представлять из себя программа на языке Lisp.
  • 20.07.2012 Pankaj Tanwar, перевод: Н.Ромоданов, "Интерфейс прикладного программирования Socket API, Часть 5: SCTP"
    В этой статье, посвященной программированию сокетов, мы рассмотрим протокол Stream Control Transmission Protocol (SCTP). Он похож как на протокол TCP, так и на протокол UDP и в нем есть некоторые черты обоих этих протоколов. Он ориентирован на передачу сообщений и гарантирует надежную последовательную их доставку. Протокол SCTP можно использовать сразу в нескольких сетях, т. е. использовать более одного адреса IP с каждой стороны соединения.
  • 19.07.2012 Pankaj Tanwar, перевод: Н.Ромоданов, "Интерфейс прикладного программирования Socket API, Часть 4: Датаграммы"
    Протокол UDP, User Datagram Protocol — протокол пользовательских датаграмм, является протоколом без установления соединения. Это означает, что вы перед тем, как начать передачу данных (например, тройного подтверждения для TCP), соединение не устанавливаете; вы просто отправляете данные в виде датаграммы на требуемый адрес. Именно поэтому мы называем этот протокол ненадежным, поскольку мы не знаем или нам все равно, достигла ли датаграмма получателя или нет.
  • 18.07.2012 Pankaj Tanwar, перевод: Н.Ромоданов, "Интерфейс прикладного программирования Socket API, Часть 3: Параллельная обработка в серверах"
    В этой части серии мы узнаем, как работать с несколькими клиентскими программами, подключенными к серверу.
  • 17.07.2012 Pankaj Tanwar, перевод: Н.Ромоданов, "Создание собственного сервера: Интерфейс прикладного программирования Socket API, Часть 2"
    Ранее мы создали простой сервер и простую клиентскую программу, в которых использовался интерфейс прикладного программирования Socket API. На этот раз мы сначала начнем с программы, а затем объясним, что было сделано. Итак, запустите свою систему и приготовьтесь углубиться в программировании сокетов.
  • 16.07.2012 Pankaj Tanwar, перевод: Н.Ромоданов, "Интерфейс прикладного программирования Socket API, Часть 1: Создание собственного сервера"
    В этой серии статей, передназначенных для новичков сетевого программирования (знание языка C является обязательным условием), мы узнаем, как с помощью интерфейса прикладного программирования Socket API системы UNIX создавать сервера и сетевые клиентские программы. Мы начнем с создания простых программ типа "клиент-сервер", а затем попробуем сделать что-нибудь более сложное. Мы также попытаемся понять, как работают различные сервера.
  • 10.05.2012 О.И.Цилюрик, "Сервер TCP/IP ... много серверов хороших и разных"
    Зачастую при необходимости написания TCP/IP сервера используются одна из двух классических технологий: последовательный сервер, или параллельный сервер на основе fork(). Хотя реально можно предложить гораздо больше принципиально различных серверов, которые будут существенно отличаться своей сложностью, временем реакции на запрос клиента и другими показателями. В статье описано семь видов различных альтернативных технологий построения сервера TCP/IP, а с учётом обсуждаемых вариаций и высказанных соображений - и того больше. Приведены сравнительные характеристики по задержке времени получения ответа (время реакции).
  • 04.05.2012 О.И.Цилюрик, "Сеть IP - когда писать программы лень"
    Поводом для появления этих коротких заметок явилось намерение напомнить о том, что иногда для того, чтобы описать в программе нечто, по существу своему являющееся достаточно сложным, могут существовать способы выразить эти же вещи намного проще. А именно - мы поговорим об некоторых способах создания прикладных TCP/IP серверов, крайне редко, к сожалению, используемых в прикладном программировании, которые почти не требуют написания программного кода.
  • 11.04.2012 Gary Thomas, перевод: В.Царьков, "Сборка простого приложения в среде eCos"
    В этой заметке рассказывается о том, как собрать приложение на базе среды разработки, предлагаемой в рамках проекта eCos - разработки свободной операционной системы реального времени.
  • 06.06.2011 В.Царьков, "Хитрости при работе с GNU gettext"
    В статье приведены рекомендации по решению некоторых затруднений, возникающих при работе с GNU gettext - набором инструментов для перевода интерфейса программ на разные языки мира.
  • 26.07.2010 Оливер Мюллер, перевод: В.Царьков, "Реализация механизма обработки регулярных выражений на языке C++"
    Целью данной статьи является описание реализации механизма обработки регулярных выражений в виде класса на C++. Данная статья может быть вашим гидом по замечательному миру "поиска по шаблону" ("pattern matching").
  • 30.06.2010 Jake Edge, перевод: Н.Ромоданов, "Giggle: графический интерфейс для Git"
    В статье приводится краткое описание пакета Giggle - графической оболочки для Git, созданной на основе GTK+, версия с номером 0.5 которой была выпущена в апреле этого года.
  • 17.06.2010 Jason Gilmore, перевод: Н.Ромоданов, "10 советов и приемов для начинающих по использованию Git"
    Git - система управления версиями, имеющая открытый код и существенно повышающая уровень формализации при управлении версиями исходного кода. В Git есть так много возможностей и вариантов, что это ошеломляет начинающих. Автор составил список советов и приемов, которые помогут вам лучше управлять Git проектами.
  • 2.12.2009 Bill Zimmerly, перевод: Н.Ромоданов, "Крошечное "облако" в системе Android"
    В статье предлагается создать сервис на базе системы Android, эмулирующий сетевой сервер, что расширяет возможности локального компьютера уникальным и неожиданным образом. Разместите крошечное облако в вашем телефоне с системой Android и с пользой поэкспериментируйте с локальным веб сервером.
  • 20.10.2009 Mohan Lal Jangir, перевод: Н.Ромоданов , "Пишем драйвер сетевого устройства для Linux"
    В статье на примере драйвера для сетевой платы RealTek 8139 рассказывается, как самому написать драйвер сетевого устройства для Линукс.
  • 25.08.2009 Lennart Poettering, перевод: Максим Белозеров , "Путеводитель по джунглям звуковых API в Linux"
    Программистам часто трудно решить, какие из звуковых API для каких целей использовать при создании аудиопрограмм для Linux. Автор предлагает разобраться в этих джунглях.
  • Боб Хэппл (Bob Hepple), перевод: Сергей Супрунов, "Обработка аргументов командной строки с помощью process-getopt"
    Эта статья посвящена простому способу привести ваши скрипты в порядок, чтобы их работа была предсказуема, а опции и аргументы соответствовали соглашениям, принятым в Unix.
  • Bert Hubert, перевод: А.Тарасов, "Lex и YACC в примерах"
    Lex и YACC - стандартные средства UNIX, предназначенные для построения лексических и синтаксических анализаторов. В этой статье приведены примеры использования с комментариями.
  • Д.Грибенко, "Ассемблер в Linux для программистов C"
    Эта книга ориентирована на программистов, которые уже знают Си на достаточном уровне. Используя Си и ассемблер вместе, применяя каждый язык для определённых целей, можно добиться очень хороших результатов.
  • Mike Diehl, перевод А.Тарасова, "Как происходит компиляция. Часть 3."
  • Sandeep Grover, перевод А.Тарасова, "Компоновщики и загрузчики" Эта статья представляет собой сжатый обзор процесса объединения различных элементов кода и данных для получения одного исполняемого файла, который затем может быть загружен в память.
  • Mike Diehl, перевод А.Тарасова, "Как происходит компиляция. Часть 1."
  • Mike Diehl, перевод А.Тарасова, "Как происходит компиляция. Часть 2."
  • Daniel Voicu, перевод А.Тарасова, "Обзор Geany 0.14"
  • Ravi, перевод А.Тарасова, "Обзор Adobe AIR для Linux" Краткое описание кроссплатформенной среды AIR, версия для Linux.
  • Mayank Sharma, перевод А.Тарасова, "Трехмерная анимация Alice как способ понять ООП" Alice - учебный объектно-ориентированный язык, который, по замыслу его создателей, поможет студентам постичь основы ООП с помощью моделирования трехмерных сцен.
  • Avi Rozen, перевод А.Тарасова, "Удаленная отладка с помощью GDB и GDBserver" Рассмотрен способ отладки приложений на удаленной системе, платформа которой может отличаться от платформы разработчика.
  • Joost van der Sluis, перевод А.Тарасова, "Кросс-платформенная разработка с Free Pascal 2.2.0" Недавно вышел Free Pascal (FPC) версии 2.2.0. Этот компилятор языка Pascal сегодня является одним из самых примечательных компиляторов с открытым кодом. Каждый день все больше программистов узнают о FPC и начинают разработку своих приложений на Object Pascal. Особенно этому благоприятствует развитие Lazarus, графической среды разработки для FPC, которая содержит расширенный набор средств для разработки графических (GUI) приложений.
  • С.Шапошникова, "Применение управляющих размещениями в Tkinter"
  • Xavier Calbet, перевод А.Тарасова, "Создание фракталов в PDL"
  • Joe Barr, перевод А.Тарасова, "Fuzz-тестирование с помощью zzuf"
  • Richard M. Stallman и Roland McGrath, "GNU Make Программа управления компиляцией", GNU make Версия 3.79, Апрель 2000, перевод (C) Владимир Игнатов, 2000,
  • Ричард Столмен, Роланд Пеш, Стан Шебс и другие, "Отладка с помощью GDB", Восьмая Редакция, для GDB версии 5.0, Март 2000, Перевод: Сиваченко Дмитрий.
  • Risto S. Varanka, "Mini-HOWTO по языкам программирования" Перевод: Александр Ермолаев,
  • Jim Blandy, "Введение в CVS", перевод на русский язык - А.Махоткин, (tar-gz-архив)
  • "RCS" RCS - это Система Управления Исправлениями (revision control system), представляет собой пакет программ, которые отслеживают изменения в текстовых файлах и управляют разделенным доступом в ситуации с рабочими группами.
  • "CVS-RCS-HOWTO (система контроля исходного кода)", Alavoor Vasudevan (alavoor@yahoo.com), Перевод: Султанбек Тезадов.
  • "BASH Programming - Introduction HOWTO", Mike Gmikkey, перевёл Дмитрий А. Смирнов, (tar-gz-архив)
  • Adam Trachtenberg and David Sklar, "Введение в PHP" (8/3/99), перевод Н.В.Костроминой.
  • Сергей Лосев,  "PHP и MySQL - рабочие инструменты сайтостроителя", часть 1.
  • Тотоев Александр, "Автоматическое построение форм различной сложности и отправка их письмом с аттачами произвольного количества"
  • Riku Saikkonen,  "IO-Port-Programming", Перевод: Павел Гашев, SWSoft Pte Ltd., v. 28, December 1997.
  • Г.Россум и др., "Язык программирования Python" - pdf-файл в bzip2-архиве (1,1 МБ)

Статьи на английском

Если вам понравилась статья, поделитесь ею с друзьями: