Хранение изображений в базе данных MySQL

Для хранения изображений в базе данных MySQL необходимо определить одно из полей таблицы как производное от типа BLOB. Сокращение BLOB означает большой двоичный объект. Тип хранения данных BLOB обладает несколькими вариантами:

  • TINYBLOB — может хранить до 255 байт
  • BLOB — может хранить до 64 килобайт информации
  • MEDIUMBLOB — до 16 мегабайт
  • LONGBLOB — до 4 гигабайт

Соответсвенно, для хранения изображений нам надо создать таблицу images с двумя полями:

  • id — уникальный ID изображения
  • content — поле для хранения изображения

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

<form action="putimage.php" enctype="multipart/form-data" method="post"> Изображение: <input name="image" type="file" />
<input type="submit" value="Загрузить" />
</form>Обработчик формы - файл putimage.php:
// Проверяем пришел ли файл
if( !empty( $_FILES['image']['name'] ) ) {
// Проверяем, что при загрузке не произошло ошибок
if ( $_FILES['image']['error'] == 0 ) {
// Если файл загружен успешно, то проверяем - графический ли он
if( substr($_FILES['image']['type'], 0, 5)=='image' ) {
// Читаем содержимое файла
$image = file_get_contents( $_FILES['image']['tmp_name'] );
// Экранируем специальные символы в содержимом файла
$image = mysql_escape_string( $image );
// Формируем запрос на добавление файла в базу данных
$query="INSERT INTO `images` VALUES(NULL, '".$image."')";
// После чего остается только выполнить данный запрос к базе данных
mysql_query( $query );
}
}
}
?>

Извлечь сохраненный файл изображения можно следующим образом (файл image.php):

if ( isset( $_GET['id'] ) ) {
// Здесь $id номер изображения
$id = (int)$_GET['id'];
if ( $id > 0 ) {
$query = "SELECT `content` FROM `images` WHERE `id`=".$id;
// Выполняем запрос и получаем файл
$res = mysql_query($query);
if ( mysql_num_rows( $res ) == 1 ) {
$image = mysql_fetch_array($res);
// Отсылаем браузеру заголовок, сообщающий о том, что сейчас будет передаваться файл изображения
header("Content-type: image/*");
// И  передаем сам файл
echo $image['content'];
}
}
}
?>

Чтобы вывести изображение в HTML-документе, делаем так:

<img src="image.php?id=17" alt="" />

И последнее: графические файлы иногда имеют довольно большой размер, убедитесь, что настройки сервера позволяют работать с таким объемом данных. В файле php.ini это директивы post_max_size — определяет максимальный объем данных передаваемых методом POST, и upload_max_filesize — определяет максимальный размер загружаемого файла. Так же проверьте, позволяют ли настройки MySQL обрабатывать запросы с большим объемом данных (директива max_allowed_packet файла my.ini).

Основные команды консоли восстановления Windows

В один прекрасный день компьютер отказывается загружать систему …

В один прекрасный день компьютер отказывается загружать систему и выводит на экран тарабарщину на голубом фоне. Неизвестно откуда появляется сообщение о том, что система не может быть запущена, так как потерян или испорчен какой-то файл. Прежде всего вы пытаетесь перезагрузиться, однако этот способ не всегда срабатывает. В такой ситуации восстановить работоспособность системы можно с помощью нового инструмента, входящего в состав Windows 2000 Professional — Консоли восстановления (Recovery Console — RC).

Установка консоли восстановления

Для начала нужно запустить RC с установочного CD-ROM Windows 2000 Pro (в том случае, конечно, если система поддерживает загрузку с CD-ROM) или с установочных дискет. Можно установить RC как один из вариантов загрузки. Установив компакт-диск, выбираем меню Start, затем Run и вводим в командную строку:

{x}:\i386\winnt32 /cmdcons

где вместо х подставляется буква устройства чтения компакт-дисков. После запуска появится диалоговое окно с вопросом о том, нужно ли устанавливать RC. Выбираем Yes. Для установки консоли понадобится до 7Mбайт дискового пространства. По завершении установки система предложит перезагрузиться. После этого новая опция загрузки — <Консоль восстановления> — к вашим услугам.

Для запуска RC с установочных дискет или напрямую с CD-ROM придется загружать систему именно с них. В текстовой части программы установки Windows 2000 Pro появляется возможность выбора между инсталляцией системы (нажав Enter) или ее восстановлением (нажав R). Выбираем вариант восстановления. Далее программа установки предлагает выбрать режим восстановления с помощью консоли восстановления (нажав С) или диска аварийного восстановления emergency repair disk (снова нажав R).

Если система отказывается загружаться, я рекомендую выбирать R, т.е. восстановление с помощью диска аварийного восстановления, даже если самого диска нет. В этом случае автоматически проверяется наличие и целостность всех важнейших системных файлов. Я использовал эту опцию для восстановления Windows 2000 после того, как привел ее в нерабочее состояние установкой Windows NT 4.0. Если этот метод не работает, придется перезагрузиться и запустить RC.

Использование RC

Вне зависимости от того, как запускается RC — с CD-ROM, установочных дисков или из загрузчика — после запуска придется зарегистрироваться. В системах с двойной загрузкой нужно будет выбрать, в какой из установок это сделать (например, C:\winnt, D:\winnt), и ввести пароль администратора. После регистрации появится приглашение на ввод команд. По команде help выдается перечень всех команд, доступных в консоли восстановления. Большинство из них знакомы пользователям командной строки Windows 2000 Pro и DOS, однако информацию по каждой конкретной команде можно получить , набрав

help <command>

В этом примере приведена строка для выдачи информации о команде attrib и результат ее исполнения:

C:\WINNT>help attrib

Команда показывает или изменяет атрибуты файлов:

+ — Назначить атрибут.
— Снять атрибут.
R — Атрибут файла только для чтения.
S — Атрибут системного файла.
H — Атрибут скрытого файла.
C — Атрибут сжатого файла.

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

help attrib

из командной строки Windows 2000 Pro. В RC, однако, отсутствует возможность установки или снятия атрибута архивного файла, вместо нее предоставляется возможность работы с атрибутом сжатия. В RC также отсутствуют переключатели /S и /D, изменяющие атрибуты подкаталогов и папок. Большинство команд RC предоставляют сокращенные возможности по сравнению с их вариантами в Windows 2000 Pro. Некоторые команды, однако, существуют только в RC.

Batch. Команда запуска на исполнение файла пакетной обработки. Определены два аргумента: имя запускаемого пакетного файла и файла, в который система перенаправляет выходные данные.

Disable. Команда позволяет предотвратить запуск служб и драйверов при загрузке системы. Она используется в том случае, если на стадии начальной загрузки системы происходит сбой в инициализации службы или драйвера устройства. В команде Disable используется один аргумент — наименование службы, запуск которой мы хотим предотвратить (получить список наименований можно с помощью команды Listsvc). Перед тем как пометить службу флажком запрета на исполнение, команда распечатает флаг запуска службы. Например, команда

disable cdrom

сообщает, что прежний флаг запуска был SERVICE_SYSTEM_START. Это значение нужно запомнить, оно потребуется для возобновления работы службы командой Enable после завершения процедуры восстановления.

Diskpart. С помощью этой команды можно разбить жесткий диск на разделы. Все параметры ей можно передавать из командной строки (введите help diskpart для получения списка аргументов команды). Однако проще работать с ней в диалоговом режиме

diskpart

На текстовом экране появится список разделов жесткого диска. Cтрелками вверх и вниз выбираем необходимый раздел или свободное пространство. После выбора раздела клавишей D удаляем его. Для создания нового раздела в свободном пространстве нажимаем клавишу С.

Система попросит задать размер нового раздела. Завершив все настройки, нажимаем Esc для возврата в RC. Не забудьте отформатировать вновь созданные разделы командой Format.

Enable. Команда разрешает запуск при загрузке системы ранее отключенных служб и драйверов. Она использует два аргумента — наименование службы и ее флаг запуска (если не указать флаг запуска, команда Enable выведет перечень допустимых флагов). Например

enable cdrom SERVICE_SYSTEM_START

разрешает запуск службы cdrom и устанавливает флаг ее запуска при загрузке системы.

Exit. Команда завершает работу RC и перезагружает компьютер.

Expand. Команда распаковывает архивные файлы (.cab), используемые программой установки Windows 2000 Pro. В консоли восстановления она работает так же, как и ее аналог в Windows 2000 Pro, однако использует слегка измененные аргументы. Команда help expand даст их подробное описание.

Fixboot. Команда позволит восстановить систему в случае небрежной установки NT или инсталляции Windows 9x поверх установленной Windows 2000 Pro — в такой ситуации загрузить Windows 2000 Pro обычно не удается. Команда Fixboot перезаписывает загрузочный сектор жесткого диска, что делает диск загружаемым. Понимает единственный аргумент — букву устройства, на которое производится запись. Например

fixboot c:

произведет запись нового загрузочного сектора на диск С.

Fixmbr. С помощью этой команды можно попытаться восстановить главную загрузочную запись (Master Boot Record) загрузочного раздела. С ее помощью можно попытаться заставить систему загружаться в тех случаях, когда она отказывается это делать. У нее определен только один аргумент — имя устройства, на которое устанавливается новая MBR. Если имя в команде не указано, Fixmbr запишет новую MBR в устройство по умолчанию (обычно диск С).

Format. Команда позволяет переформатировать дефектный диск или заново отформатировать раздел, созданный командой Diskpart. Ее аргументами могут быть только: буква устройства, /Q (quick format) — параметр быстрого форматирования и /FS:(file system) — тип файловой системы, с указанием одного из параметров FAT, FAT32, или NTFS. Например команда

format g: /Q /FS:FAT32

применит быстрое форматирование к устройству G и создаст на нем файловую систему FAT32. Если при запуске команды тип файловой системы не указан, по умолчанию задается NTFS, используемая только системами Windows 2000. Это может вызвать проблемы при настройке окружения на работу двух операционных систем одновременно. (Прим. переводчика: установка Windows NT 4.0 с сервисным пакетом SP4 позволяет NT работать с NTFS 5.0, созданной Windows 2000).

Listsvc. Команда выводит на экран перечень всех используемых в системе служб и драйверов с указанием их флагов запуска. Если система не может загрузиться из-за проблем с каким-либо драйвером, Listsvc может помочь. Выпишите наименования всех служб, появившихся на «голубом экране смерти» и загрузите RC. Запустив Listsvc, найдите в выданном ею списке выписанные службы. Командой Disable отключите подозрительные драйверы и покиньте RC. Если система после этого не запустится, загружайте RC и пробуйте снова.

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

Map. Команда выводит список всех устройств жесткого диска, поставленных им в соответствие букв, форматов файловой системы, размеров устройств и физических устройств NT, соответствующих каждому диску. Например, для диска С: команда Map может вывести подобную информацию

C: FAT162047MB
\Device\Harddisk0\Partition1

Аргументом этой команды может быть arc. В этом случае команда покажет разметку физического устройства в формате Advanced RISC Computing (ARC). Именно в таком виде эта информация обычно представлена в файле boot.ini.

Systemroot. Команда делает текущим корневой системный каталог Windows 2000 Pro (обычно C:\winnt).

Команды консоли восстановления могут помочь «оживить» систему. Когда исчерпаны все средства, RC подскажет верное решение.

Настройка консоли Windows XP

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

Так что чем раньше вы овладеете освоитесь с командной строкой, тем для вас же и лучше. А теперь нажимайте Пуск > Выполнить, вводите текст cmd и жмите Enter.

Настройка

Внешний вид командной строки можно изменять. Щелкните правой кнопкой мыши по строке заголовка окна и выберите пункт Properties (это окно можно также запустить нажатием Alt + «Пробел» + P). Откроется окно с четырьмя вкладками, на которых будут доступны опции изменения настроек программы. Если вам не нравится стандартный черный экран командной строки, то на вкладке Color вам предлагается выбрать цвет экрана и текста либо из 16 стандартных цветов, для которых имеется соответствующие образцы, либо задав числовое значение цвета в формате RGB.

На вкладке Layout настраивается размер окна и экранного буфера. Если в ранних ОС MS-DOS и Windows размер экрана оставался неизменным — 25 строк в высоту и 80 символов в длину, и для вывода большего количества строк приходилось добавлять команду

|more

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

Текст в окне командной строки

Для копирования и вставки текста в окно командной строки обычные для Windows комбинации клавиш, такие как Ctrl+C, Ctrl+V, работать не будут. Для извлечения текста из буфера обмена вам придется вызвать меню, щелкнув правой кнопкой мыши по заголовку окна, и выбрать подменю Edit. Или же просто щелкните правой кнопкой по окну. Для копирования текста из окна выберите пункт Mark и мышью выделите нужный текст. Затем либо нажмите Enter, либо в том же меню выберите Copy. Если надо вставить какой-то текст в окно командной строки, обратитесь к команде Paste.

Для повторного выполнения команды воспользуйтесь стрелками «вверх» и «вниз», позволяющими перемещаться по списку выполненных команд. Для очистки экрана от текста служит директива

cls

.

Новые утилиты командной строки

Windows XP предлагает ряд новых интересных утилит командной строки. Рассмотрим некоторые из них. Для получения справки об интересующей вас команде запустите ее с параметром /?. Для сохранения информации в текстовый файл после команды добавьте

> text.txt

Утилита Systeminfo предоставляет детальную информацию о конфигурации компьютера и его операционной системе: имя ПК, тип установленной ОС, ее версию, количество процессоров, их тактовую частоту и многое другое. Кроме всего прочего, с помощью этой утилиты вы сможете отследить, сколько времени операционная система работает без перезагрузки.

С помощью утилиты Shutdown выключается или перезагружается локальный или удаленный компьютер. Ее параметры позволяют задать время, через которое произойдет действие, пользователь получит сообщение, а также объяснение причины завершения работы.

В Windows XP появилась возможность завершать задачи из командной строки. Это можно сделать с помощью утилиты taskkill. Итак, для того чтобы завершить какую-то задачу, нужно сначала узнать ее номер, воспользовавшись утилитой tasklist. Обе упомянутые утилиты позволяют создавать фильтры для обрабатываемых задач. Например, команда

tasklist /fi "status eq not responding"

выведет на экран список всех зависших задач, а команда

taskkill /f /fi "username eq Guest"

завершит все задания, запущенные пользователем Guest.

Утилита bootcfg поможет в конфигурировании файла настроек boot.ini.

Утилита schtask позволяет создавать расписание для запуска задач периодически или в заданное время.

Для того чтобы просмотреть все открытые в системе файлы, предлагаю воспользоваться командой openfiles /query. Она позволит определить все файлы, открытые как локально, так и удаленно, а также покажет имя процесса, использующего их. Команда openfiles /disconnect отключает удаленных пользователей от общих файлов на вашем компьютере.

Напоследок рассмотрим еще одну очень интересную команду — Fsutil hardlink. Она принимает всего один параметр — create. Эта команда позволяет создавать жесткие ссылки на файлы. Жесткие ссылки позволяют одному файлу иметь несколько разных имен. Один и тот же файл может появляться в разных директориях или даже в одной директории с различными именами. И данные этого файла не могут быть удалены, пока счетчик имен файлов не будет равен нулю. Так как все ссылки указывают на один и тот же файл, программы могут открывать любую из них и изменять исходный файл.

Приведем пример использования этой команды. Допустим, имеется файл d:\1.avi, занимающий 600 Мб. Воспользовавшись командой

fsutil hardlink create d:\2.avi d:\1.avi

, вы создаете жесткую ссылку на этот файл. В результате вы получите два файла, но объем занимаемого дискового пространства не изменится. Хотя если Вы выделите эти два файла, Вам будет показано, что они занимают 1200 мегабайт. Таким образом Вы можете создать неограниченное число копий какого-либо файла, при том что на занятом пространстве диска это никак не отразится. Причем если удалить один из таких клонов, все остальные останутся без изменений. Для того чтобы уничтожить исходный файл придется удалить все жесткие ссылки на него. Но у этой команды есть ограничения: все файлы должны быть в пределах одного тома, и файловая система — только NTFS (NT File System).

Проброс TCP соединения через ICMP туннель

Утилита PingTunnel (http://www.cs.uit.no/~daniels/PingTunnel/) позволяет организовать
TCP тунель поверх ICMP ‘echo’ или 53 UDP порта. Подобное может оказаться полезным для обеспечения
работы клиента, для которого пакетным фильтром заблокирован весь трафик, кроме ICMP или 53 UDP порта.
Для работы PingTunnel необходим запуск прокси-процесса на удаленной машине
(не важно, под какой ОС, утилитой поддерживается даже Windows), имеющей выход в сеть.

Ставим ptunnel.
В Debian/Ubuntu:

   apt-get install ptunnel

В RedHat/CentOS/Fedora:

   yum install ptunnel

Во FreeBSD:

   cd /usr/ports/net/ptunnel && make && make install

На внешней машине, имеющей выход в сеть, запускаем icmp-прокси («-x пароль» можно не указывать,

но тогда пустит любого):

   ptunnel -x пароль

На локальной машине, на которой ничего кроме ICMP не работает, поднимаем туннель:

   ptunnel -p хост_прокси -lp локальный_порт_туннеля -da адрес_дальнейшего_проброса \
      -dp порт_дальнейшего_проброса -x пароль

Например:

    ptunnel -p proxy.testhost.ru -lp 2222 -da server.testhost.ru -dp 22 -x пароль

На proxy.testhost.ru у нас должен быть запущен icmp-прокси.
При коннекте на 2222 порт локальной машины мы будем переброшены на 22 порт хоста server.testhost.ru
Например, для входа на server.testhost.ru по SSH нужно набрать:

   ssh -p 2222 localhost

В случае проблем можно попробовать указать имя внешнего сетевого интерфейса через опцию «-c»,

например «-c eth1».
Для создания туннеля через 53 UDP порт на локальной и удаленной стороне нужно запустить ptunnel c опцией «-udp».

Источник

Руссификация FreeBSD 7

В /etc/rc.conf добавить:

font8×14=”cp866-8×14″
font8×16=”cp866b-8×16″
font8×8=”cp866-8×8keymap=”ru.koi8-r”
scrnmap=”koi8-r2cp866″

(если нет, то либо используйте sysinstall либо поправьте вручную)

В /etc/ttys для всех теримналов должно быть прописано cons25r вместо cons25, если это не так — исправьте.

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

pw user mod username -L russian

В домашней папке пользователя должен присутствовать файл .inputrc

set meta-flag on
set convert-meta off
set output-meta on