Что такое код installuserfont

How to install a Font in server

I have downloaded and installed a font in my system, then i used this font in my project, its worked fine in local system, but when i upload this page to server its not working. How can i install a font in server? or How can i solve this issue?

6 Answers 6

With CSS3 it is possible to embed fonts on websites even if it isn’t available on the user’s machine.

First upload your font to a directory on your server.

Then register that font in your CSS so that you can use it like so:

Then, to use it on elements within your site:

Note that this will only work in select modern browsers, namely current versions of Firefox, Chrome, Safari, Opera, and IE9. IE8 and older versions of IE don’t support this so it’s good to declare and test the site with a ‘fall back’ font.

Also note that there may be licensing issues depending on the font..

Установка шрифтов в Windows 7

Сегодня мы поговорим о различных способах установки шрифтов в Windows 7. Эта процедура, казалось бы, не должна вызывать особых проблем у пользователей системы и администраторов, но и в ней есть свои подводные камни. Попытаемся разобраться каким же образом можно установить шрифт в Windows 7, я приведу несколько способов, по мере увеличения сложности. Естественно, мы предполагаем, что вы уже скачали новый шрифт и, если он находился в архиве, вы его распаковали. Напомню, что файл шрифта имеет расширение .ttf.

Установка нового шрифта в Windows 7

Чтобы установить новый шрифт, достаточно просто щелкнуть по файлу ttf правой клавишей мыши и выбрать пункт «Install» (Установить)

После чего появится окно, отображающее прогресс установки.

Еще один способ установки шрифтов заключается в том, что вам необходимо открыть панель управления шрифтами (Control Panel\All Control Panel Items\Fonts) и простым перетягиванием (Drag&Drop) перетянуть файл шрифта в это окно.

Если нужно установить сразу несколько шрифтов, то их так же просто можно выделить мышью и перетянуть на панель.

Есть еще одна интересная опция по добавлению новых шрифтов в Windows 7. Если новых шрифтов много, а места на системном диске мало, можно установить шрифты при помощи ярлыков. Для этого в панели управления шрифтами слева нажмите на пункт «Font Settings» (Параметры шрифта) и в появившемся окне отметьте галочкой опцию «Allow fonts to be installed using a shortcut (advanced)» (Разрешить установку шрифтов с помощью ярлыков). В этом случае Windows будет использовать новый шрифт прямо из того каталога, в котором он находится.

Теперь, если щелкнуть правой кнопкой по шрифту, появится дополнительный пункт меню «Install as shortcut» (Установить как ярлык).

Массовая установка шрифтов в Windows 7 скриптом

Представим ситуацию, когда нужно установить сразу несколько десятков шрифтов на несколько компьютеров. Естественно вручную делать это очень долго и нудно. Есть ли способ автоматизации установки новых шрифтов в Windows 7. К счастью есть!

Во времена Windows XP чтобы установить шрифт, достаточно было просто скопировать его файл в каталог C:\Windows\Fonts. В Windows 7 такой трюк не сработает, и хотя вы можете сказать, что чуть выше мы проводником копируем файл со шрифтом в каталог C:\Windows\Fonts, я возражу, сказав что не все так просто. При копировании шрифта с помощью Windows Explorer осуществляется не просто копирование. Система определяет, что копируется новый шрифт и автоматически запускает его установку в систему, поэтому и появляется всплывающее окно с текстом «Installing».

Для установки шрифтов в Windows 7 можно воспользоваться файлом-сценария на языке VBS. Допустим, у нас есть каталог c:\install\font, в котором содержатся файлы шрифтов, которые нужно установить. Мы создаем на диске новый файл с расширением vbs (например, batch_install_font.vbs), копируем в него указанный код и запускаем его как обычную программу:

Set objShell = CreateObject(«Shell.Application»)
Set objFolder = objShell.Namespace(«c:\install\font»)
Set objFSO = CreateObject(«Scripting.FileSystemObject»)

For Each FontFile In objFolder.Items()
Set objFolderItem = objFolder.ParseName(FontFile)
If Not objFSO.FileExists(«c:\windows\fonts\» & FontFile) Then
objFolderItem.InvokeVerb («Install»)
End If
Next

В результате запустится последовательная установка новых шрифтов из каталога c:\install\font в систему и для каждого из них появится окно с индикатором выполнения процесса.

Если данные шрифты уже установлены в Windows 7, то их повторная установка запущена не будет.

Установка PECL PHP

Просматривая аналитику обнаружил, что ко мне стали часто обращаться по запросу «установка pecl php», как я понимаю, этому поспособствовала моя предыдущая статья про установку mnoGoSearch. Мне стало интересно, что же люди ищут по этой проблеме?

До конца не осознаю, что их приводит сюда, единственной причиной может служить то, что PECL раздел на официальном сайте PHP долгое время не был переведен на русский язык, может люди ищут русский перевод?

Что-ж, раздел интересный и перевод его занимает не так много времени, людям, которым по душе читать мануалы на русском языке посвящается:

Глава 5. Установка PECL расширений

Таблица содержимого

Введение в PECL установку

PECL это хранилище PHP расширений которое доступно Вам через систему PEAR. Этот раздел руководства предназначет для демонстрации того, как получить и проинсталлировать PECL расширения.

Эти иструкции предполагают, что «/your/phpsrcdir/» это путь к исходному дистрибутиву PHP и что «extname» это имя PECL расширения, поэтому приведите все рассматриваемые здесь примеры в соответствии с Вашими требованиями. Эти инструкции также полагают, что Вы уже знакомы с командой pear.

Для использования расширения оно должно быть собрано, проинсталлировано и загружено. Методы описаные ниже предоставляют Вам различные инструкции о том, как собрать и инсталлировать расширения, но они не загружают их автоматически. Расширения могут быть загружены после добавления директивы расширений в php.ini файле или через использование функции dl().

Когда собираются PHP модули, очень важно знать версии всех необходимых инструментов (autoconf, automake, libtool, и т.д.) Смотрите Анонимные CVS инструкции для детализации требуемых инструментов и требуемых версий.

Загрузка PECL расширений

Существует несколько вариантов для загрузки PECL расширений, такие как:

Это веб сайт PECL содержащий информацию о различных расширениях, которые предлагаются командой разработчиков PHP. Информация доступная там содержит: лог изменений, замечания о релизе, требования и другие детали.

pecl download extname

PECL расширение имеющее релизы и находящееся в списке PECL на веб сайте и доступное для скачивания и инсталляции с использованием команды pear. Вами может быть выбрана требуемая ревизия.

Большинство PECL расширений размещено в CVS. Веб просмотр CVS может быть выполнен через http://cvs.php.net/pecl/. Для загрузки прямо из CVS должна быть использована следующая последовательность команд (заметьте, что phpfi это пароль для пользователя cvsread):

Скачивание для Windows

Пользователи Windows могут найти уже скомпилированные PECL файлы выполнив закачку Collection of PECL modules со страницы PHP Downloads и выбрав PECL Snapshot. Для компиляции PHP под Windows, читайте соответствующий раздел.

PECL для Windows пользователей

Как и множество других PHP DLL расширений, инсталляция заключается в простом копировании DLL файла с PECL расширением в папку с расширениями «extension_dir» и их дальнейшей загрузкой в php.ini. Для примера, добавьте следующую строку в Ваш php.ini:

После того, как все сделано, перезапустите веб сервер.

Компиляция совместных PECL расширений с PEAR

PEAR легко создает общедоступные PHP расширения. Используя команду pear, сделайте следующее:

Эта команда загрузит исходник extname, скомпилирует и инсталлирует extname.so в Вашу директорию с расширениями «extension_dir», затем extname.so может быть загружено через php.ini.

По умолчанию, команда pear не инсталлирует пакеты, которые помечены как альфа или бета релизы. Если нет доступного стабильного пакета, Вы можете инсталлировать бета пакет используя следующую команду:

Вы также можете инсталлировать определенную версию расширения используя следующий вариант:

Компиляция совместных PECL расширений с phpize

Иногда использование PEAR инсталлятора невозможно. Такое может быть если Вы находитесь за файерволом или расширение, которое Вы хотите инсталлировать, недоступно Вам как PEAR совместимый пакет, таковыми могут быть неизданные расширения из CVS. Если Вам необходимо построить такое расширение, Вы можете использовать низко-уровневую сборку, выполнив построение вручную.

Илон Маск рекомендует:  Работа с cookies на javascript

Команда phpize используется в качестве подготовки окружения для PHP расширения. В следующем примере исходные коды для расширения находятся в директории названной extname:

Успешная инсталляция создаст файл extname.so и разместит его в директорию с PHP расширениями. Вам необходимо откорректировать php.ini и добавить в него строку extension=extname.so, прежде чем Вы сможете использовать это расширение.

Если в системе отсутствует команда phpize и используются предварительно скомпилированные пакеты (такие как RPM), будьте уверенны в том, что инсталлируете подходящую версию PHP пакета, так как часто они включают в себя команду phpize наряду с предопределенными файлами заголовков для сборки PHP и его расширений.

Выполните phpize —help для показа дополнительной информации об использовании этой команды.

Компиляция статических PECL расширений PHP

Вам может понадобится собрать PECL расширение статически, т.е. прямо непосредственно в код PHP. Для этого Вам необходимо поместить исходный код расширения в директорию «php-src/ext/» и указать сборщику PHP на регенерацию его конфигурационного скрипта.

Это создаст следующую директорию:

Далее дайте PHP команду перестроить конфигурационный скрипт и затем соберите PHP как обычно:

Замечание:
Для запуска скрипта ‘buildconf’ Вам необходимы autoconf 2.13 и automake 1.4+ (более новые версии autoconf могут работать, но не поддерживаться).

В зависимости от расширения используется либо —enable-extname либо —with-extname. Обычно расширение, которое не требует внешних библиотек, использует —enable. Для выяснения этого момента запустите следующую строку после buildconf:

Diplom Consult.ru

Назначение Загрузка нового файла шрифта.

int far installuserfont(char far *name);

Замечанияname определяет маршрут доступа к файлу, содер-

жащему строчный шрифт. Одновременно может быть

установлено до 12 шрифтов.

Возвращаемоеinstalluserfont возвращает номер нового шрифта,

значениекоторый в последующем может быть передан функ-

ции settextstyle для выбора соответствующего

шрифта. Если внутренния таблица шрифтов пере-

полнена, то возвращается значение -11

ПереносимостьДанная функция работает только на IBM PC и сов-

местимых моделях при наличии соответствующих

НазначениеОбщий интерфейс программных прерываний процес-

int int86(int intr_num,union REGS *inregs,

union REGS *outregs);

Замечанияint86 вызывает программное прерывание процессо-

ра 8086,указанное в аргументе intr_num. Перед

выполнением программного прерывания функция ко-

пирует содержимое регистров из inregs в регист-

После завершения обработки прерывания функция

копирует текущее значение регистров в outregs,

а флаг состояния в поле outregs x.cflag, копи-

рует значения флагов 8086 в x.flags (в

Если установлен флаг состояния, то это значит,

что возникла ошибка.

Отметим, что inregs может указывать на ту же

структуру, что и outregs.

Возвращаемоеint86 возвращает значение AX после заверше-

значениения программного прерывания. Если флаг состоя-

(outregs -> x.cflag != 0),

указывая на ошибку, функция присваивает

_doserrno код ошибки.

Переносимостьint86 уникальна для процессоров семейства 8086.

Смотри такжеbdos, bdosptr, geninterrupt, intdos, intdosx,

#define VIDEO 0x10

/* помещает курсор в позицию x,y */

void gotoxy(int x,int y)

union REGS regs;

regs.h.ah=2; /* установка позиции курсора */

НазначениеОбщий интерфейс программных прерываний процес-

int int86x(int intr_num, union REGS *inregs,

union REGS *outregs, union SREGS *segregs);

Замечанияint86x вызывает программное прерывание процес-

сора 8086, указанное в аргументе intr_num. Пе-

ред выполнением программного прерывания int86x

копирует содержимое регистров из inregs в ре-

int86x, кроме того, копирует segregs->x.ds и

segregs->x.es в соответствующие регистры перед

выполнением программного прерывания. Эта осо-

бенность позволяет программам, которые исполь-

зуют дальние (far) указатели или большую модель

памяти, определить сегмент, который будет ис-

пользован во время программного прерывания.

После завершения обработки прерывания функция

копирует текущее значение регистров в outregs,

а флаг состояния в поле outregs x.cflag, копи-

рует значения флагов 8086 в x.flags (в

outregs). int86x, кроме того, восстанавливает

DS и устанавливает segregs->es и segregs->ds в

значения соответствующих регистров. Если уста-

новлен флаг состояния, это значит, что возникла

int86x позволяет вам вызывать программное пре-

рывание процессора 8086, которое берет значение

DS, отличное от текущего сегмента данных, и/или

которое берет аргумент в ES.

Отметим, что inregs может указывать на ту же

структуру, что и outregs.

Возвращаемоеint86x возвращает значение AX после

значениезавершения программного прерывания. Если флаг

(outregs -> x.cflag != 0),

указывая на ошибку, функция присваивает

_doserrno код ошибки.

Переносимостьint86x уникальна для процессоров семейства

Смотри такжеbdos, bdosptr, geninterrupt, intdos, intdosx,

int86, intr, segread

НазначениеОбщий интерфейс программных прерываний MS-DOS.

int intdos(union REGS *intregs,

union REGS *outregs);

Замечанияintdos вызывает программное прерывание 0x21 для

вызова специальной функции DOS. Значение inregs

->h.al определяет вызываемую функцию.

После завершения обработки прерывания 0x21

intdos копирует текущее значение регистров в

outregs, а флаг состояния системы — в поле

Если установлен флаг состояния, это значит, что

Отметим, что inregs может указывать на ту же

структуру, что и outregs.

Возвращаемоеintdos возвращает значение AX после

значениезавершения функции DOS. Если флаг состояния ус-

тановлен (outregs->x.cflag != 0), указывая на

ошибку, функция присваивает _doserrno код ошиб-

ПереносимостьУникальна для MS-DOS.

Смотри такжеbdos, bdosptr, geninterrupt, intdosx, int86,

/* уничтожает имя файла, при успехе возвращает

int delete_file(char near *filename)

union REGS regs; struct SREGS sregs;

regs.h.ah = 0x41; /* уничтожить файл */

regs.x.dx = (unsigned) filename;

/* Если флаг состояния установлен, то имеет

return(regs.x.cflag ? ret : 0);

printf(«Возможно уничтожить NOTEXSIT.$$$ ?»

Установка и настройка Xdebug

Есть очень хороший инструмент для отладки php кода — Xdebug. Сегодня я расскажу как его развернуть на своей машине, а также как настроить NetBeans >

Немного о Xdebug

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

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

Установка Xdebug

Уже довольно давно Xdebug, как расширение для php, присутствует в репозиториях. Поэтому его установка очень проста, для этого введите в консоли следующую команду.

С установкой покончили. Перейдем к настройке.

Настройка Xdebug

Настройка расширения выполняется при помощи редактирования конфигурационных ini файлов. Тут есть два пути:
1. В php.ini создаем секцию [xdebug] и в ней задаем параметры.
2. Все параметры задаем в xdebug.ini, который хранится тут /etc/php5/conf.d/xdebug.ini
Тут решать Вам и только Вам.

Куда писать — определились. Определимся что писать?
Давайте я приведу список настроек, и поясню, что они означают:

После, необходимо чтобы наши изменения подтянулись.
Для этого нужно перезагрузить apache или php-fpm (в зависимости от того, что Вы используете).

Чтобы убедиться, что все хорошо, выведите
phpinfo();
Если такой текст имеется — значит все отлично:

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans

Теперь проверим улучшенный var_dump:

Вы должны увидеть красивый стилизированный вывод содержимого массива.
Теперь создадим ошибку (забудем ; в конце строки)

Вы должны увидеть подробное сообщение об ошибке, представляющее собой таблицу.

Настройка PhpStorm

Настройка NetBeans IDE

Устанавливаем NetBeans, если он еще не установлен. Заходим в СервисПараметры. Переходим в меню PHP, далее вкладка Отладка (Debugging).
И указываем следующие значения.
Порт отладчика: 9000
Идентификатор сеанса: netbeans-xdebug
Хочу отметить, что порт сеанса, как и идентификатор сеанса могу быть другими. Например, можно указать идентификатор ide-xdebug , но тогда и в конфигах Xdebug придется указать такое же значение.

Остальные параметры настраиваем под себя.

Ну, а о том, как выполнять отладку — в другой раз.

Composer — менеджер зависимостей для PHP

Composer (getcomposer.org) — это относительно новый и уже достаточно популярный менеджер зависимостей для PHP. Вы можете описать от каких библиотек зависит ваш проект и Composer установит нужные библиотеки за вас! Причём Composer — это не менеджер пакетов в классическом понимании. Да, он оперирует с сущностями, которые мы будем называть «пакетами» или библиотеками, но устанавливаются они внутрь каждого проекта отдельно, а не глобально (это одно из основных отличий от старого-доброго PEAR).

Илон Маск рекомендует:  Iis приостановка веб сервера (pauseweb)

Кратко, как это работает:

  1. У вас есть проект, который зависит от нескольких библиотек.
  2. Некоторые из этих библиотек зависят от других библиотек.
  3. Вы описываете в своём проекте те библиотеки, от которых непосредственно зависит ваш код.
  4. Composer находит нужные версии требуемых библиотек для всего проекта, скачивает их и устанавливает в папку вашего проекта.

При создании Composer авторы черпали идеи и вдохновение из аналогичных проектов: npm для Node.js и Bundler для Ruby.

Изначально он был спроектирован и разработан двумя людьми Nils Adermann и Jordi Boggiano, сейчас в проекте участвует более двадцати контрибьюторов, Проект написан на PHP 5.3, распространяется под лицензией MIT и доступен на github.

Первые коммиты были сделаны апреле 2011 года и на сегодняшний день Composer находится в стадии «alpha3». Однако, он уже достаточно стабилен и используется многими популярными PHP проектами (например, Symfony 2). Список проектов использующих Composer можно посмотреть на сайте packagist.org — это официальный репозиторий Composer пакетов. Кстати, на недавней конференции Devconf 2012 разработчик фреймворка Yii в своём докладе упомянул, что Yii2 скорее всего тоже будет использовать Composer.

В этой статье я кратко опишу основные возможности Composer и мы попробуем создать демонстрационный проект использующий Composer для загрузки необходимых библиотек. Все примеры будут доступны на github.com и bitbucket.org.

Что умеет Composer?

  • Скачивать пакеты и их зависимости;
  • по умолчанию, пакеты скачиваются из официального репозитория packagist.org. Любой человек может свободно добавить туда свой пакет, чтобы сделать его установку максимально лёгкой и удобной для всего мира;
  • пакеты можно скачивать не только с packagist.org, но и из любого git, mercurial или svn репозитория;
  • при скачивании пакетов с github.com или bitbucket.org не требуется установленной системы контроля версий (git или hg), Composer работает через API этих сайтов;
  • git/hg/svn репозиторий с пакетом может находиться не только на одном из перечисленных выше сайтов, но в любом другом месте, например, в локальной сети предприятия или вообще на локальном жестком диске;
  • кроме того, устанавливаемая библиотека не обязательно должна быть оформлена в виде Composer-пакета, вы можете сделать установку из любого git/hg/svn репозитория произвольной структуры;
  • наконец, устанавливаемый пакет не обязательно должен быть git/hg/svn репозиторием, это может быть произвольный zip файл доступный по любому uri!
  • все пакеты устанавливаются в текущую директорию (откуда была выполнена команда install), это позволяет иметь несколько различных версий библиотек при работе над разными проектами параллельно;
  • команда update обновляет все установленные (или установит заново случайно удалённые) пакеты до свежих версий. А может и не обновлять версии до самых свежих, если создать специальный composer.lock файл — это позволяет зафиксировать комбинацию из стабильных версий всех используемых в проекте библиотек;
  • после установки пакетов автоматически генерируется autoload.php, с помощью которого можно подключить установленные библиотеки в коде вашего проекта. При подготовке Composer-пакета рекомендуется использовать PSR-0 — стандарт расположения и именования php файлов, чтобы autoload смог их легко найти. В любом случае, автор пакета может описать правила, по которым autoload будет искать файлы тех или иных классов или неймспейсов. Если вы устанавливаете библиотеку, которая не оформлена как Composer-пакет (например, произвольный git репозиторий с github), то задача описания правил autoload ложится на ваши плечи. Так что никакой магии с генерируемым autoload.php нет — он умеет загружать всё (даже библиотеки с набором функций вне классов), главное, чтобы были описаны правила (автором библиотеки или вами).

Рабочий пример: используем Composer в своём проекте

Чтобы разобраться, как пользоваться Composer’ом, напишем маленький проектик на PHP: «Super Hello World». Поскольку мы не хотим изобретать велосипед и писать код «с нуля», возьмём готовые библиотеки и фреймворки.

Мы будем использовать cледующие библиотеки:

  1. микрофреймворк Silex (доступен в виде Composer пакета на packagist.org),
  2. шаблонизатор Twig (доступен в виде Composer пакета на packagist.org),
  3. наш собственный логер посещений SuperLogger, который я оформил в виде Composer-пакета и опубликовал на github
  4. нашу старую, но любимую легаси-библиотеку superlib, которая состоит из мешанины классов без неймспейсов и функций без классов; библиотека опубликована на github, но не является оформленным Composer-пакетом

Как мы это делали раньше: скачивали нужные нам фреймворки и библиотеки, думали куда их распаковать, писали в проекте кучу require (или require_once для надёжности).

Как мы это сделаем теперь: используем Composer — он сам скачает все библиотеки и сгенерирует для нас autoload.php. Кроме того, если мы захотим показать «Super Hello World» коллегам, достаточно будет опубликовать код нашего проекта на github (или ещё где-нибудь), не включая всех требуемых библиотек в репозиторий и не готовя длинной инструкции по их установке. Нашим коллегам достаточно будет скачать (склонировать) «Super Hello World» и выполнить команду

Composer распространяется в виде одного файла composer.phar (phar — это php-архив) — по сути это PHP скприт, который может принимать несколько команд (install, update, . ) и умеет скачивать и распаковывать библиотеки.

Кстати, немного о синтаксисе запуска.
Если вы работаете под Windows, то скорее всего вы будете писать что-то вроде

Можно упростить себе жизнь, создав composer.bat и положив его в %PATH%.

В Linux и OS X можно настроить на исполнение команду типа

composer.json

Итак, мы готовы написать наш Super Hello World проект. И я его только что написал: http://github.com/pqr/superhelloworld. Код состоит из одного index.php файла в директории web и шаблона layout.twig в директории views.

Голова всему — это файл composer.json. Он должен быть в корне проекта, в нашем случае рядом с директориями web и view. В этом файле необходимо указать от каких библиотек зависит наш проект. Кроме того, если эти библиотеки не являются оформленными Composer-пакетами, то нужно указать некоторую дополнительную информацию об устанавливаемой библиотеке (например, описать правила автозагрузки классов и функций для autoload.php).

composer.json, как вы догадались, имеет формат данных JSON. На вопрос «почему именно JSON?» разработчики Composer отвечают «Потому что. Просто примите это.«.

Нам нужно описать один js-объект, в котором будут находиться все инструкции. Первая и самая главная инструкция: require.

Подключаем пакеты с сайта packagist.org

Здесь я описал зависимость проекта от PHP версии 5.3.0 и выше, от silex (микрофреймворк) и от twig (шаблонизатор). Silex и Twig доступны в виде Composer-пакетов на сайте packagist.org, поэтому дополнительных настроек не требуют. Замечу, что Silex в свою очередь зависит ещё от нескольких пакетов — все они будут скачены и установлены автоматически.

Имя пакета состоит из двух частей разделёных косой чертой: названия поставщика (vendor name) и названия библиотеки. Названием поставщика зачастую является ник автора или имя компании. Иногда, название поставщика совпадает с именем самой библиотеки или фреймворка.

Для каждого пакета обязательно нужно указать номер версии. Это может быть бранч в репозитории, например, «dev-master» — приставка dev сигнализирует, что это имя бранча, а сам бранч соответсвенно называется «master». Для mercurial репозитория аналогичная запись будет выглядеть как «dev-default». В качестве номера версии можно указать и более сложные правила, используя операторы сравнения. Кстати, если вы скачиваете код из удалённого репозитория, то Composer сканирует теги и имена веток в этом репозитории на предмет чего-то похожего на номера версий, например тег «v1.2.3» будет использован как указатель на версию 1.2.3.

Подключаем на собственный Compsoer-пакет

Далее, подключим наш собственный пакет SuperLogger, который правильно оформлен, но опубликован не на packagist.org, а на github:

Чтобы Composer знал где искать пакет «mycompany/superlogger», мы добавили массив repositories со ссылкой на соотвествующий github репозиторий. Обратим внимание, что записи в массиве repositories напрямую никак не связаны с блоком require — между пакетами и репозиториями не указано соответствие. На сколько я понял, Composer ищет все требуемые пакеты во всех указанных репозиториях (в т.ч. на сайте packagist.org) и скачивает найденные совпадения по каким-то внутренним приоритетам. Более глубоко я в этом моменте ещё не разбирался, поправьте меня, если кто-то знает детали.

Подключаем произвольный git репозиторий

Теперь подключим нашу легаси-библиотеку superlib, которая лежит на github, но не является оформленным Composer-пакетом, т.к. она очень старая.

В массив repositories добавился объект, который целиком описывает пакет pqr/superlib. По сути, это то описание, которое должен был бы сделать автор библиотеки и положить его внутри своего репозитория. Но по условиям задачи, superlib не является оформленным Composer-пакетом, поэтому нам пришлось создать его описание в рамках Super Hello World проекта. Аналогичным образом можно подключить любую другую библиотеку, в т.ч. простой zip файл.

Подключаем простой zip файл

Например, вот как могло бы выглядеть описание зависимости от шаблонизатора Smarty, распространяемого в виде zip файла с исходниками в svn:

Инстукция autoload

Вернёмся к нашему проекту.
Описывая «pqr/superlib», мы добавили инструкцию autoload. В ней указан файл timer.php, в котором будущий автозагрузчик будет искать классы и указали файл с функциями lib_functions.php — он будет принудительно подключаться в начале autoload.php.

Илон Маск рекомендует:  Тег code

Итак, наш проект состоит из:

  • в корне лежит файл composer.json;
  • в корне находятся директории web и views;
  • внутри директории web лежит файл с «бизнес-логикой» нашего приложения: index.php;
  • внутри директории views лежит файл шаблона layout.twig;
  • дополнительно, в папку web я положил .htaccess (для apache) и web.config (для IIS 7.5) с правилами mod_rewrite/url rewriter — непосредсвенно к настройке Composer они отношения не имеют.

Всё готово к запуску.

Запускаем composer install

Composer клонирует репозитории и распаковывает их на нужной версии в директорию vendor, которую он сам создаёт в корне проекта. После распаковки, в директории vendor мы найдём:

  • файл autoload.php
  • служебные директории .composer и composer
  • pimple — пакет, который подтянулся вместе с микрофреймворком Silex
  • silex — сам микрофреймворк, его мы явным образом затребовали при описании зависимостей
  • symfony — некоторые компоненты из Symfony 2, которые требуются для работы Silex
  • twig — шаблонизатор, который мы также явно запросили
  • mycompany — внутри этой директории будет находиться репозиторий superlogger скаченный с github
  • pqr — внутри этой директории будет находиться репозиторий superlib, также скаченный с github

Остаётся только подключить autoload.php в начале файла web/index.php (require «../vendor/autoload.php») и все библиотеки и функции будут доступны!

Как создать собственный Composer пакет?

В этом проекте мы использовали Composer с точки зрения потребителя библиотек. А как самому создать Composer пакет, чтобы любой другой человек смог им воспользоваться?

На самом деле, один из таких пакетов я создал, когда подготавливал примеры для этой статьи. В корне репозитория superlogger лежит файл composer.json похожей структуры, который описывает сам пакет и его зависимости (в случае с superlogger зависимостей нет). Другие примеры: репозитории silex и twig, которые скачались в папку vendor — все они имеют файл composer.json в корне — смотрите, изучайте!

И, конечно, не забывайте про документацию на официальном сайте getcomposer.org/doc/.
Эту тему я оставлю вам для самостоятельной проработки.

Подведём итоги

В этой статье я рассказал, что такое Composer, его историю и описал основные возможности. Мы с вами попробовали создать проект, который использует Composer для установки пакетов с сайта packagist.org и из наших собственных репозиториев.

Самое время попробовать!

  1. Скачате Composer (getcomposer.org/download/)
  2. Скачате superhelloworld (git clone git://github.com/pqr/superhelloworld.git)
  3. Установите зависимости (cd superhelloworld && php composer.phar install)
  4. Изучите появившуюся папку vendor и сгенерированный autoload.php
  5. Используте Composer в своих проектах
  6. PROFIT.

В своих рабочих проектах я использую систему контроля версий Mercurial. Этот пример вы также можете скачать и установить через Composer с сайта bitbucket.org: http://bitbucket.org/pqr/superhelloworld

Внимание: к сожалению, при использовании Composer с Mercurial репозиториями на Windows машине я нашел один баг. Если вы устанавливаете зависимости в проекте, который находится на диске отличном от системного диска, то получите ошибку. Например, системный диск C:, а проект вы разворачиваете где-то в папке D:\someproject и ваш проект зависит от библиотек опубликованных в виде Mercurial репозиториев — Composer не сможет правильно их прочитать. Собираюсь в ближайшее время пофиксить этот баг и отправить pull request в официальный репозиторий Composer’а.

Установка шрифтов в Windows 7

Сегодня мы поговорим о различных способах установки шрифтов в Windows 7. Эта процедура, казалось бы, не должна вызывать особых проблем у пользователей системы и администраторов, но и в ней есть свои подводные камни. Попытаемся разобраться каким же образом можно установить шрифт в Windows 7, я приведу несколько способов, по мере увеличения сложности. Естественно, мы предполагаем, что вы уже скачали новый шрифт и, если он находился в архиве, вы его распаковали. Напомню, что файл шрифта имеет расширение .ttf.

Установка нового шрифта в Windows 7

Чтобы установить новый шрифт, достаточно просто щелкнуть по файлу ttf правой клавишей мыши и выбрать пункт «Install» (Установить)

После чего появится окно, отображающее прогресс установки.

Еще один способ установки шрифтов заключается в том, что вам необходимо открыть панель управления шрифтами (Control Panel\All Control Panel Items\Fonts) и простым перетягиванием (Drag&Drop) перетянуть файл шрифта в это окно.

Если нужно установить сразу несколько шрифтов, то их так же просто можно выделить мышью и перетянуть на панель.

Есть еще одна интересная опция по добавлению новых шрифтов в Windows 7. Если новых шрифтов много, а места на системном диске мало, можно установить шрифты при помощи ярлыков. Для этого в панели управления шрифтами слева нажмите на пункт «Font Settings» (Параметры шрифта) и в появившемся окне отметьте галочкой опцию «Allow fonts to be installed using a shortcut (advanced)» (Разрешить установку шрифтов с помощью ярлыков). В этом случае Windows будет использовать новый шрифт прямо из того каталога, в котором он находится.

Теперь, если щелкнуть правой кнопкой по шрифту, появится дополнительный пункт меню «Install as shortcut» (Установить как ярлык).

Массовая установка шрифтов в Windows 7 скриптом

Представим ситуацию, когда нужно установить сразу несколько десятков шрифтов на несколько компьютеров. Естественно вручную делать это очень долго и нудно. Есть ли способ автоматизации установки новых шрифтов в Windows 7. К счастью есть!

Во времена Windows XP чтобы установить шрифт, достаточно было просто скопировать его файл в каталог C:\Windows\Fonts. В Windows 7 такой трюк не сработает, и хотя вы можете сказать, что чуть выше мы проводником копируем файл со шрифтом в каталог C:\Windows\Fonts, я возражу, сказав что не все так просто. При копировании шрифта с помощью Windows Explorer осуществляется не просто копирование. Система определяет, что копируется новый шрифт и автоматически запускает его установку в систему, поэтому и появляется всплывающее окно с текстом «Installing».

Для установки шрифтов в Windows 7 можно воспользоваться файлом-сценария на языке VBS. Допустим, у нас есть каталог c:\install\font, в котором содержатся файлы шрифтов, которые нужно установить. Мы создаем на диске новый файл с расширением vbs (например, batch_install_font.vbs), копируем в него указанный код и запускаем его как обычную программу:

Set objShell = CreateObject(«Shell.Application»)
Set objFolder = objShell.Namespace(«c:\install\font»)
Set objFSO = CreateObject(«Scripting.FileSystemObject»)

For Each FontFile In objFolder.Items()
Set objFolderItem = objFolder.ParseName(FontFile)
If Not objFSO.FileExists(«c:\windows\fonts\» & FontFile) Then
objFolderItem.InvokeVerb («Install»)
End If
Next

В результате запустится последовательная установка новых шрифтов из каталога c:\install\font в систему и для каждого из них появится окно с индикатором выполнения процесса.

Если данные шрифты уже установлены в Windows 7, то их повторная установка запущена не будет.

Не работает код в DevC++

22.01.2014, 19:37

Не работает calloc в DevC++
Вот код программы. #include #include float *get_mem(void) < float *p; р.

DevC++ не компилирует простой код с библиотекой
с интернета взял код (как пример) но не компилирует его вообще ничего не делает((( а что мне.

Почему в devc++ не работает функция COLOR()
Помогите пожалуйста. В учебнике сказано, что цвет можно задавать функцией COLOR(255,255,255). Пишу.

Почему в одних IDE код работает, а в других нет? (Visual Studio vs DevC++)
Есть простой код, который находит максимальное значение в массиве. Но есть странность одна: 1)На.

Что такое код installuserfont

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

Действия довольно просты:

  • Предоставить разрешения Modify, пользователю или группе пользователей на папку Fonts в папке Windows
  • Предоставить разрешения Set Value, Delete на ветку реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

Что такое код installuserfont

I just fixed my TS With this:

Commandline in TS:

@ECHO OFF
TITLE Adding Fonts..
REM Filename: ADD_Fonts.cmd
REM Script to ADD TrueType and OpenType Fonts for Windows

REM How to use:
REM Place the batch file inside the folder of the font files OR:
REM Optional Add source folder as parameter with ending backslash and dont use quotes, spaces are allowed
REM example «ADD_fonts.cmd» C:\Folder 1\Folder 2\

IF NOT «%*»==»» SET SRC=%*
REM ECHO.
REM ECHO Adding Fonts..
REM ECHO.
FOR /F %%i in (‘dir /b «%SRC%*.*tf»‘) DO CALL :FONT %%i
REM OPTIONAL REBOOT
REM shutdown -r -f -t 10 -c «Reboot required for Fonts installation»
REM ECHO.
REM ECHO Done!
REM PAUSE
EXIT
EXIT

:FONT
ECHO.
REM ECHO FILE=%

n1
SET FNAME=%FNAME:-= %
IF «%

x1″==».otf» SET FTYPE=(OpenType)
IF «%

x1″==».ttf» SET FTYPE=(TrueType)

ECHO FILE=%FFILE%
ECHO NAME=%FNAME%
ECHO TYPE=%FTYPE%

x1″ «%SystemRoot%\Fonts\»
reg add «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts» /v «%FNAME% %FTYPE%» /t REG_SZ /d «%FFILE%» /f
GOTO :EOF

*** CURRENTLY ONLY SUPPORTS ***
TrueType FONTS (.TTF EXTENSION)

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL