Введение
Xlib — это библиотека, позволяющая программам на языке C рисовать на экране
любого X-сервера — локального или удаленного. Все, что для этого требуется —
вставить в исходный файл программы строку «include <X11/Xlib.h>», добавить
в Makefile ключ компоновщика -lX11, и вот вы уже готовы к вызову любой
функции из библиотеки Xlib.
Для примера рассмотрим как нарисовать окно на экране локального компьютера.
Это можно сделать следующим образом:
Listing 1: http://gazette.linux.ru.net/lg78/articles/misc/tougher/example1.cpp.txt
#include <X11/Xlib.h> #include <unistd.h> main() { // Открыть дисплей Display *d = XOpenDisplay(0); if ( d ) { // Создать окно Window w = XCreateWindow(d, DefaultRootWindow(d), 0, 0, 200, 100, 0, CopyFromParent, CopyFromParent, CopyFromParent, 0, 0); // Нарисовать окно на экране XMapWindow(d, w); XFlush(d); // Выполнить задержку, достаточную // по времени, чтобы мы смогли увидеть окно sleep(10); } return 0; }
Скомпилируйте программу командой:
prompt$ g++ test.cpp -L/usr/X11R6/lib -lX11
Запустите:
prompt$ ./a.out
И, вуаля, в течение 10 секунд можете любоваться окном на экране:
Рисунок. Если очень хочется — можнопосмотреть на http://gazette.linux.ru.net/lg78/articles/misc/tougher/screen_small.png
Цель данной статьи — познакомить вас с некоторыми простыми классами, которые
можно использовать при разработке Xlib-приложений. Мы создадим приложение с
одним окном и кнопкой в этом окне. Кнопку мы напишем сами, используя только
библиотеку Xlib.
Обновления
OS X, в отличие от Windows, никогда не скажет при выключении или, что ещё важнее, при включении компьютера: «Эй, пользователь, мне плевать на твои дела, мне тут надо обновиться, так что подожди минутку. Или 10 минуток. Или полчаса, ну ты понял, да? Иди, погуляй». Разумеется, автоматические обновления Windows можно отключить, но зачем, ведь иметь всегда актуальную ОС — это удобно и безопасно?
Перезагрузка — это крайний метод при завершении обновления системы
Большинство обновлений OS X ставятся в фоновом режиме и даже не требуют перезагрузки. А если перезагрузка всё-таки потребуется — ОС поинтересуется, не желаете ли вы её выполнить прямо сейчас или ей подождать, пока вы завершите свою работу.
В конце концов, ОС для пользователя, а не наоборот.
26. sa_flags
Поле sa_flags в struct sigaction формируется побитовым ИЛИ следующих значений:
A_ONSTACK — Используется для обработки сигналов на альтернативном сигнальном стеке.
SA_RESETHAND — Во время исполнения функции обработки сбрасывает реакцию на сигнал к SIG_DFL; обрабатываемый сигнал при этом не блокируется.
SA_NODEFER — Во время обработки сигнала сигнал не блокируется.
SA_RESTART — Системные вызовы, которые будут прерваны исполнением функции обработки, автоматически перезапускаются.
SA_SIGINFO — Используется для доступа к подробной информации о процессе, исполняющем сигнальный обработчик, такой как причина возникновения сигнала и контекст процесса в момент доставки сигнала.
SA_NOCLDWAIT — Подавляет создание процессов-зомби.
SA_NOCLDSTOP — Подавляет генерацию SIGCHLD, когда порожденные процессы останавливаются или возобновляются.
В Things 3 есть за что заплатить
Стойко уверен, какую бы подборку менеджеров задач вы ни открыли, в ней всегда будет это приложение. Настоящий идеал менеджера задач, способный справиться буквально со всем, что вы ему доверите. Приложение имеет высочайший рейтинг в App Store, а его функциональность не оставит равнодушными даже требовательных пользователей. Мы уже писали об этом приложении ранее. В этой статье мой коллега Павел Дмитриев подробно разобрал все функции и поделился своим мнением. Рекомендую к прочтению.
Лучший менеджер задач, который вы можете себе представить.
Дизайн приложения простой и интуитивно понятный. Сложно найти решение подобного рода от других разработчиков. Приложение также встречает нас экраном с добавлением разного рода задач. При этом каждая задача не нагружает вас огромным количеством деталей, и все выглядит также просто, как список покупок на бумаге. У каждой из задач есть огромное количество разных настроек: теги, чек-листы, дата начала и дата завершения, но эти поля аккуратно располагаются в правом нижнем углу, пока в них не возникнет необходимость.
Интерфейс приложения Things 3 на iPhone.
Все задачи сначала попадают в раздел Входящие, где хранятся до тех пор, пока вы не укажете для них дополнительные параметры. Очень часто случается так, что необходимо быстро что-то записать, а уже потом разбираться с деталями. В Things это организовано на высшем уровне.
Помимо задач существует также раздел Проекты, в который вы можете добавлять несколько задач сразу. Тут можно устанавливать дедлайны, гибко работать с конкретными подпунктами проектов и многое другое. Существуют еще более крупные разделы такие, как Области. В них можно добавлять несколько проектов и удобно работать с каждым из них.
Приложение Things 3 крайне простое в использовании, и даже если вы никогда не сталкивались с подобного рода софтом, трудностей с ним возникнуть не должно. Главными минусами этой разработки являются отсутствие кроссплатформенности (Things 3 доступен только внутри экосистемы Apple) и ценовая политика разработчиков. Приложение для iPhone обойдется вам в 899 рублей, для iPad — 1790 рублей, а для Mac цена достигает отметки в 4690 рублей, поддержка Apple Watch тоже на месте. Но не спешите закидывать меня помидорами, ежедневно Things 3 выбирает огромное количество пользователей Apple. Там действительно есть чему удивиться.
1.1 В какую папку устанавливаются библиотечные файлы .so и заголовочные файлы .h при установке glibc, как gcc может правильно найти соответствующие папки?
Когда мы устанавливаем –prefix = / path / при сборке gcc, gcc устанавливается в / path /. По умолчанию gcc будет искать библиотеки в / path / lib / и искать файлы заголовков в / path / include /. Например, в обычных системах Linux и gcc, и glibc установлены в каталоге / usr /, поэтому исполняемый файл gcc находится в каталоге / usr / bin, а файл библиотеки glibc находится в / usr / lib В этом каталоге файл заголовка glibc находится в каталоге / usr / include. Разумеется, указанное выше соотношение не является точным и может быть указано вручную при установке gcc и glibc. Вы можете использовать команду «gcc -print-search-dirs» для просмотра пути поиска библиотеки gcc:
Вы можете использовать следующие методы, чтобы изменить путь к библиотеке и файлу заголовка, который gcc ищет по умолчанию:
- (1) Используйте «gcc -nostdlib -Lusrlibpath», чтобы изменить путь поиска библиотеки по умолчанию для gcc, и используйте «gcc -nostdinc -Iusrincpath», чтобы изменить путь поиска заголовка по умолчанию для gcc.
- (2) Используйте «gcc -Wl, -sysroot =», чтобы изменить путь поиска библиотеки по умолчанию для gcc.
- (3) Измените файл спецификации gcc, чтобы настроить любые параметры gcc.
Спецификации — это файлы конфигурации gcc. Этот метод модификации является самым мощным, но он также является самым сложным и рискованным, поскольку файл спецификации gcc неясен и труден для понимания. Пока я не буду изменять его, но сначала я расскажу о существовании этого метода. Используйте команду «gcc -v», чтобы просмотреть путь к спецификациям gcc:
В некоторых установках gcc используются встроенные спецификации, но нет внешних файлов спецификаций:
Для встроенной спецификации вы можете использовать команду «gcc -dumpspecs» для просмотра содержимого конкретной спецификации:
Вы также можете использовать «gcc -specs =», чтобы указать файл спецификации gcc.
(4) Передается ли конфигурация gcc по умолчанию командой configure во время сборки?
Используйте команду «gcc -v» для просмотра значения конфигурации gcc. Параметры конфигурации описаны в файле gcc-4.1.0 \ gcc \ doc \ install.texi.
Системы управления бизнесом
CPM
Corporate Performance Management (CPM — не путать с CRM)
- финансового планирования и прогнозирования — с целью создания бюджета компании и определения основных направлений доходов и расходов
- стратегического планирования — создание финансовых моделей на основе анализа потоков доходов и расходов (здесь же зачастую система работает с KPI)
- финансовой и управленческой отчетности — создание отчётов для подведения итогов за период, а также презентаций перед руководством
- формирования консолидированной финансовой отчётности — агрегация и представление данных для анализа, аудита, отчётности перед государственными структурами.
ECM
СЭД/СЭДО/ECM (системы электронного документооборота / Enterprise Content Management)Документооборот, на котором мы выросли, а СЭД-вендоры поднялись
Дешевое и качественное ПО
Когда вы устанавливаете себе Windows (или покупаете компьютер с Windows) — какие программы попадают в ваше распоряжение, кроме самой ОС? Ну там Блокнот, Часы, WordPad, Калькулятор… Есть ещё набор программ семейства Windows Live (киностудия Windows Live, почта Windows Live), расширяющие функциональность компьютера, но не многие из них действительно хочется оставить, да и устанавливать их надо отдельно, тратить на это время.
Вообще, Apple считает, что пользователь не должен тратить своё время на настройку компьютера — и мы с этим полностью согласны. «Работа на компьютере» — это не «работа на компьютер». Пользователю нужно писать тексты, считать и анализировать данные, сочинять музыку, рисовать, заниматься монтажом видео, а не устанавливать программы и патчи и не копаться в конфигурационных файлах.
Чтобы получить от Windows-компьютера больше — нужно ставить дополнительное программное обеспечение, часть которого стоит немалых денег. Например, если вы хотите серьёзно заниматься музыкой — придётся приобрести какой-нибудь Cubase за 800 с лишним долларов. Если фотографией: Lightroom за 5500 тысяч рублей и Photoshop за 22 тысячи рублей. Как-то дороговато выходит.
На приложениях для Mac OS X не раззоришься
Офисные приложения — тоже недешёвые. Минимальный комплект Microsoft Office обойдётся от двух с половиной тысяч рублей, ну либо 250 рублей в месяц по подписке.
Но если вы покупаете Mac, то всё по-другому. Только включив компьютер, вы получаете возможность пользоваться и полноценным офисным пакетом от Apple, и приложением для работы с музыкой Garage Band (которого, на самом деле, хватает во многих случаях, но если нужно больше — Logic Pro, полноценная музыкальная студия с большим набором качественных эффектов, виртуальных инструментов и пресетов стоит всего 200 долларов). Также есть и редактор видео iMovie, функциональность которого не идёт ни в какое сравнение с простенькой «Киностудией Windows Live». Причём, всё это уже установлено на ваш компьютер и готово к работе.
Дополнительно можно купить (буквально в два клика в магазине Mac App Store) пакетный RAW-конвертор, по совместительству, каталогизатор Aperture — всего 2500 рублей, что более чем в два раза дешевле, чем аналогичный Lightroom. А приложение Pixelmator, которого будет достаточно подавляющему большинству «мастеров» Photoshop, обойдётся всего в тысячу рублей.
К сожалению, воровать приложения под OS X, как правило, тоже проще, чем под Windows — видимо, среди пользователей OS X больше честных людей. С другой стороны — какой смысл тратиться на разработку серьёзной защиты от пиратов, если большинство нужных программ по карману даже студенту?
Установка Linux в VirtualBox
Установка операционной системы Linux не представляет собой сложную задачу. Linux предлагает одну из самых простых установок.
Иллюстрировать установку я буду на примере Ubuntu, пожалуй, самом известном дистрибутиве Linux.
При старте пользователю дается выбор «Запустить» или «Установить» операционную систему. Если выбрать «Запустить Ubuntu», то система будет загружена в Live-режиме, т.е. без внесения изменений на жесткий диск компьютера и можно будет «пощупать» Ubuntu и решить есть ли желание использовать его в дальнейшем. В случае с выбором «Установить Ubuntu», происходит непосредственная установка.
При создании новой виртуальной машины определяются следующие параметры:
- имя виртуальной машины. В соответствии с ним будет создан каталог с файлами виртуальной машины.
- тип операционной системы, которая будет установлена на виртуальной машине. В данном случае — Linux
- версия ОС. В данном случае, Ubuntu.
Прочие параметры можно оставить по умолчанию, поскольку они и так уже выбраны исходя из конфигурации оборудования реальной машины и в соответствии с типом и версией операционной системы, устанавливаемой на виртуальной машине. При необходимости, параметры можно определить исходя из собственных предпочтений, например, увеличить объем выделяемой виртуальной машине оперативной памяти.
При выделении памяти, нужно учитывать реальный ее объем и минимальные требования гостевой ОС. Если возникают затруднения в выборе данного пункта — используйте рекомендуемые программой значения. Неправильное распределение памяти между реальной и виртуальной машинами может привести к снижению производительности обеих.
Тип файла, определяющий формат, желаемый использовать при создании нового жесткого диска, я оставлю без изменений VDI.
Виртуальный жесткий диск может быть создан либо динамическим, либо фиксированным. Динамический диск создается не на весь задаваемый настройкой объем, а на его часть, и увеличивается по мере необходимости в процессе работы виртуальной машины. Для получения максимального быстродействия гостевой операционной системы лучше выбрать фиксированный виртуальный жесткий диск, а для экономии дискового пространства — динамический.
Я выберу фиксированный виртуальный жесткий диск
Затем указываются имя и размер файла.
Имя я задам «Ubuntu», а размер оставлю по умолчанию 8,00 Гб.
Большинство параметров, определяемых в процессе создания новой виртуальной машины, можно, при необходимости, изменить в любой момент времени.
В настройках в пункте «Носители» выбираю образ оптического диска «ubuntu-16.04-desktop-i386», нажимаю «Ок» и запускаю виртуальную машину.
Далее на экране появляется окно приветствия, где нужно выбрать язык. Почти все дальнейший действия будут переведены на него. Кроме того, на этом этапе предоставляется выбор «Запустить» или «Установить» Ubuntu.
Для начала выберем «Запустить Ubuntu». Открывается рабочий стол Ubuntu 16.04. После знакомства с Ubuntu, можно перейти к непосредственной установке. На рабочем столе расположен значок с наименованием «установить Ubuntu 16.04 LTS».
В шаге «Подготовка к установке Ubuntu», активирую оба пункта: Загрузить обновления при установке и Установить стороннее программное обеспечение, и жму на кнопку «Продолжить».
Следующий шаг это разметка диска.
Можно просто отформатировать весь винчестер и установить на него Ubuntu, но мной будет рассмотрен ручной вариант, поэтому я устанавливаю переключатель в положение «Другой вариант» и жму кнопку «Продолжить»
В открывшемся окне, если винчестер еще не размеченный, нужно создать таблицу разделов. Для этого нажимаю кнопку «новая таблица разделов», а затем «+».
Далее на экран будет выведено сообщение с вопросом «Записать изменения на диск?». Проверив всё ли правильно, жму кнопку «Продолжить».
Затем выбираю часовой пояс, место нахождения, ввожу имя пользователя, имя компьютера и пароль
После этого происходит установка Ubuntu. Дожидаюсь её завершения.
Следующий шаг — перезагрузка компьютера и вход в систему путем ввода пароля, указанного во время установки
Готово. Система установлена и готова к использованию.
Теперь можно начать пользоваться операционной системой, к примеру, загрузить браузер, установить дополнительное программное обеспечение, поиграть с настройками оформления или просто пользоваться рабочим столом.
«Р7-Офис»
Было бы упущением обойти вниманием платформу отечественной разработки — «Р7-Офис». Функциональность приложения позволяет отнести его к решениям широкого профиля
Тем более, что оно присутствует в реестре отечественного ПО, что позволяет пользоваться им и в госструктурах.
Большой плюс этой платформы — прекрасная совместимость с документами формата OOXML, базового для офисного ПО от Microsoft. Временами, если приходится работать с документами, содержащими сложное форматирвоание, совместимость оказывается даже лучше, чем в Office Online от той же Microsoft. Редакторы «Р7-Офис» являются полнофункциональными что в оффлайн, что в онлайн-версиях.
Google Workspace
Платформа Google Workspace также выросла на базе офисных онлайн-приложений, а Google Документы и по сей день составляют важную ее часть. Текст-процессор, таблицы и презентации, совместное редактирование — с Google всё это было уже доступно тогда, когда такая функциональность не была мэйнстримом. Плюс мощная и исключительно широко известная почтовая платформа Gmail (со своим корпоративным адресом, конечно), облачное хранилище Drive.
В составе пакета присутствуют развитые средства коммуникации: сервис видеоконференций Meet, групповой мессенджер с совершенно оригинальным названием Chat и другие полезные «фишки» типа заметок и виртуальной презентационной доски. Есть также конструктор сайтов Sites и средство проведения самых разнообразных опросов и анкетирования Forms.
34. Планирование процессов
Исходя из трех основных состояний процесса «готов», «выполнение», «заблокирован». Планировщик должен знать, какой процесс находится в каком состоянии. Все усложняется, если ЦП содержит несколько вычислительных ядер. Поэтому в ОС вводятся различные очереди (списки) для планирования процессов.
Исходя из трех состояний процесса вводятся 3 очереди:
-
Очередь задач: множество всех процессов, которые есть в системе
-
Очередь готовых: множество всех процессов, готовых для выполнения, им можно в любой момент дать квант процессорного времени и они будут выполняться.
-
Очередь ожидающих: множество всех заблокированных процессов.
78. Опишите два свойства модели Белла — Лападулы
- Простое свойство безопасности (The simple security property) — процесс, запущенный на уровне безопасности k, может проводить операцию чтения только в отношении объектов своего или более низкого уровня. К примеру, генерал может читать документы лейтенанта, но лейтенант не может читать генеральские документы.
- Свойство * (The * property) — процесс, работающий на уровне безопасности k, может вести запись только в объекты своего или более высокого уровня. К примеру, лейтенант может добавить сообщение в генеральский почтовый ящик, докладывая обо всем, что ему известно, но генерал не может добавить сообщение в лейтенантский почтовый ящик, сообщая о том, что известно ему, поскольку генерал может быть ознакомлен с совершенно секретными документами, содержание которых не должно доводиться до лейтенанта.
Достоинства
- Бесплатность: При установке Linux открываются возможности получения набора из тысяч бесплатных программ, которые абсолютно функциональны.
- Надежность: Корректная работа аппаратной части ПК, позволит Linux’у работать годы без перезагрузки и зависаний. А кнопка Reset вообще никогда не понадобится.
- Безопасность: В Linux практически нет вирусов. Само построение операционной системы исключает работу вредоносных программ. И поэтому можно обойтись без антивирусных программ, замедляющих работу компьютера. Нет необходимости постоянно обновлять антивирусные базы и проверять жесткий диск на вирусы.
- Открытый исходный код: Это дает возможность использовать и модифицировать код по своему желанию. Можно в любой момент исправить какие-нибудь ошибки или недочёты системы, а также расширить её функциональность, путём написания дополнений или программ, работающих под ее управлением.
В настоящее время Linux собрал вокруг себя огромное сообщество программистов, постоянно совершенствующих систему путем разработки новых версий и разновидностей Linux’овой операционной системы, также написанием разнообразных программ, работающих под Linux.
2.1, путь поиска библиотеки при связывании
Скомпилируйте say.c в libsay.so, а затем скомпилируйте libsay.so при компиляции test.c, чтобы проверить путь поиска в библиотеке, когда gcc связан.
(1) Используйте «gcc -Llibpath -llibname», чтобы указать путь поиска библиотеки ссылок:
-
(2) Используйте переменную среды «LIBRARY_PATH», чтобы указать путь поиска библиотеки ссылок:
-
(3) Используйте «SEARCH_DIR» в сценарии подключения ld, чтобы указать путь поиска библиотеки ссылок:
Используйте команду «ld -verbose», чтобы просмотреть параметр SEARCH_DIR в скрипте ссылок gcc по умолчанию. Конечно, вы также можете использовать «ld -Txxx.lds», чтобы указать скрипт связи.
Скопируйте libsay.so в указанный путь SEARCH_DIR и свяжите тест:
1.3 Когда программа работает, каковы пути поиска в библиотеке динамических ссылок?
При связывании конфигурация пути поиска библиотеки имеет следующие методы: (Для конкретного использования, пожалуйста, обратитесь к описанию в главе примера)
- (1) При компиляции используйте «gcc -Wl, -rpath», чтобы указать путь поиска библиотеки динамических ссылок во время выполнения, и жестко запишите его в опцию «RPATH» файла ELF.
- (2) Переменная среды «LD_RUN_PATH» используется для указания пути поиска библиотеки динамических ссылок во время компиляции, и она жестко задана в опции «RPATH» файла ELF.
- (3) Используйте переменную среды «LD_LIBRARY_PATH», чтобы указать путь поиска библиотеки динамических ссылок во время выполнения.
- (4) Используйте файл конфигурации «/etc/ld.so.conf», чтобы указать путь поиска библиотеки динамических ссылок во время выполнения.
- (5) Используйте путь поиска по умолчанию «/ lib, / usr / lib» библиотеки динамических ссылок во время выполнения.
Установка последней версии clang
Вы можете скачать исходники LLVM/Clang из SVN и собрать, а затем установить с помощью checkinstall. Готовые скрипты для автоматизации этой задачи вы найдёте на странице gist.github.com/sergey-shambir/a075161d774e211e1a423826764c7d33 Для работы скриптов нужны установленные пакеты subversion, cmake и checkinstall.
- скрипт скачивает исходный код LLVM/Clang и собирает через CMake
- скрипт должен быть запущен через sudo, он соберёт и установит DEB-пакет “llvm-clang-custom”
- файлы и должны находиться рядом с при сборке пакета
Также вам нужно удалить системные пакеты llvm и clang перед началом установки.
Если оба скрипта завершились успешно, проверьте версию clang в системе командой :
29.7. Трассировка вызовов библиотечных функций с помощью утилиты strace
Более детальная трассировка вызовов всех функций из разделяемых библиотек может осуществляться с помощью утилиты . Начнем с создания файла, доступного только для чтения.
root@deb503:~# echo hello > 42.txt root@deb503:~# chmod 400 42.txt root@deb503:~# ls -l 42.txt -r-------- 1 root root 6 2011-09-26 12:03 42.txt
После этого откроем данный файл с помощью текстового редактора , разместив в строке команды перед командой исполнения бинарного файла команду исполнения утилиты с записью данных трассировки в отдельный файл. Это позволит нам получить файл с информацией о всех вызовах функций разделяемых библиотек, осуществленных из бинарного файла .
root@deb503:~# strace -o strace.txt vi 42.txt
Созданный нами файл может быть открыт только для чтения, но мы все равно попытаемся изменить его содержимое и использовать директиву для принудительной записи данных в него. После этого мы закроем текстовый редактор и перейдем к рассмотрению содержимого файла журнала трассировки вызовов функций разделяемых библиотек.
root@deb503:~# grep chmod strace.txt chmod("42.txt", 0100600) = -1 ENOENT (No such file or directory) chmod("42.txt", 0100400) = 0 root@deb503:~# ls -l 42.txt -r-------- 1 root root 12 2011-09-26 12:04 42.txt
Обратите внимание на то, что текстовый редактор осуществлял изменение прав доступа к файлу дважды. Файл журнала трассировки вызовов функций разделяемых библиотек содержит большой объем информации, поэтому его содержимое не приводится в полном объеме в данной книге.
root@deb503:~# wc -l strace.txt 941 strace.txt
Предыдущий раздел: | Оглавление | Следующий раздел: |
Глава 28. Ядро Linux | Глава 30. Резервные копии данных |