Страницы

Поиск по вопросам

Показаны сообщения с ярлыком загрузка. Показать все сообщения
Показаны сообщения с ярлыком загрузка. Показать все сообщения

четверг, 2 января 2020 г.

Загрузка ядра linux

#linux #загрузка #kernel #boot


Здраствуйте, решил себе ради интереса создать linux дистрибутив.

Собрал ядро, создал загрузочный ramdisk, сделал все что мне нужно в ramdisk

В итоге у меня вышла такая структура каталогов:

Папка boot в ней две папки, первая initrd, вторая kernel, в первой лежит main.gz
во второй kernel.lk

Как теперь из этого всего сделать img образ чтоб запустить в эмуляторе? Гугл сказал
что мне нужен загрузчик

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

Мог бы кто расказать подробнее, 
ибо я новичок: первый раз собрал ядро.
    


Ответы

Ответ 1



Смотря какой эмулятор используете, например Qemu поддерживает прямую загрузку ядра и рамдиска. Используй параметры -kernel bzImage use 'bzImage' as kernel image -append cmdline use 'cmdline' as kernel command line -initrd file use 'file' as initial ram disk или Воспользуйся virt-manager или virt-install - хорошие менеджеры для qemu. На других виртуалках можно воспользоваться GRUB или Syslinux. Для этого создайте образ диска dd if=/dev/zero of=newos.img bs=10M count=10. Потом создадим там раздел и файловую систему $ fdisk ./newos.img Welcome to fdisk (util-linux 2.26.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. На диске не удалось найти таблицу разделов. Created a new DOS disklabel with disk identifier 0xa17f7b6a. Команда (m для справки): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Номер раздела (1-4, default 1): 1 Первый сектор (2048-20479, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-20479, default 20479): Created a new partition 1 of type 'Linux' and of size 9 MiB. Команда (m для справки): w The partition table has been altered. Syncing disks. $ sudo partx -a ./newos.img $ sudo mkfs.ext4 /dev/loop0p1 Смонтируй луп и скопируй туда папочку /boot/ и установим туда grub: grub-install --boot-directory=КАТАЛОГ /dev/loop0 И можно отключить образ $ partx -d ./newos.img В некоторых деталях алгоритм установки скорее всего прийдется подкоректировать. И всеже рекомендую использовать qemu для игр с рамдиском ;)

пятница, 27 декабря 2019 г.

Как уменьшить размер при загрузке изображения

#php #ajax #изображения #iframe #загрузка


 $h)
                {
                    // Вычисление пропорций
                    $ratio = $h_src/$h;
                    $w_dest = @round($w_src/$ratio);
                    $h_dest = @round($h_src/$ratio);

                    // Создаём пустую картинку
                    $dest = @imagecreatetruecolor($w_dest, $h_dest);

                    // Копируем старое изображение в новое с изменением параметров
                    @imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest,
$w_src, $h_src);

                    // Вывод картинки и очистка памяти
                    @imagejpeg($dest, $tmp_path . $file['name'], $quality);

                    @imagedestroy($dest);
                    @imagedestroy($src);

                    return $file['name'];

                } else {
                    // Вывод картинки и очистка памяти
                    @imagejpeg($src, $tmp_path . $file['name'], $quality);
                    @imagedestroy($src);

                    return $file['name'];
                }
            }

            $name = resize($_FILES['picture'], $_POST['file_type'], $_POST['file_rotate']);

            // Загрузка файла и вывод сообщения
            if (!@copy($tmp_path . $name, $path . $name)){
                echo '';
            } else {                        
                echo '';
            }

            unlink($tmp_path . $name);
    }
}
?>

    


Ответы

Ответ 1



Знакомый скрипт загрузки и сжатия картинки, сам с ним долго морочился, наконец переделал его. Вот что - то вроде этого. class download_image { protected $path; protected $tmp_path; protected $types; protected $size; // Функция изменения размера // Изменяет размер изображения в зависимости от type: // type = 1 - эскиз // type = 2 - большое изображение // rotate - поворот на количество градусов (желательно использовать значение 90, 180, 270) // quality - качество изображения (по умолчанию 75%) public function prepare($file) { //Извлекаем путь к папке сайта $path = $_SERVER['SCRIPT_FILENAME']; //Обрубаем ипсолняемый файл в строке $path = str_replace("index.php", '', $path); $path .= "куда грузим"; $path0 = $_SERVER['DOCUMENT_ROOT']; function resize($file, $type = 1, $rotate = null, $quality = null){ global $tmp_path; $w =''; // Ограничение по ширине в пикселях $max_thumb_size = 200; $max_size = 600; if ($quality == null){ $quality = 0; } // Cоздаём исходное изображение на основе исходного файла if ($file['type'] == 'image/jpeg'){ $source = imagecreatefromjpeg($file['tmp_name']); }elseif ($file['type'] == 'image/png'){ $source = imagecreatefrompng($file['tmp_name']); }elseif ($file['type'] == 'image/gif'){ $source = imagecreatefromgif($file['tmp_name']); }else{ return false; } // Поворачиваем изображение if ($rotate != null){ $src = imagerotate($source, $rotate, 0); }else{ $src = $source; } $w_src = imagesx($src); $h_src = imagesy($src); imagepng($src, $path.$name, $quality, PNG_NO_FILTER); imagedestroy($src); return $file['name']; } // Массив допустимых значений типа файла $types = array('image/jpg', 'image/png', 'image/jpeg'); // Максимальный размер файла 5 Мб $size = 1024*1024*5; if ($_SERVER['REQUEST_METHOD'] == 'POST'){ // Проверяем тип файла if (!in_array($file['picture']['type'], $types)){ $err[7] = 'Запрещённый тип файла.'; } if ($file['picture']['size'] > $size){ $err[8] = 'Максимальный размер файла 5 Мб.'; } $name = resize($file['picture'], $file['picture']['type'],'0'); $tmp_name = $file["picture"]["tmp_name"]; $name = $file["picture"]["name"]; if (!move_uploaded_file( $tmp_name, $path.$name)) { $err[9] = 'Не удалось загрузить картинку'; } Переменная $web загружает в бд путь к картинке $web = $path.$name; $web = str_replace('полный путь к папке ','',$webpath); } if (count($err) != 0) { //Выдает ошибку return $err; } else { //Возвращаем путь return $web; } } } Если выхотите чтобы ваш сайт работал быстро не грузите в БД саму картинку! Проще и удобнее записать путь к загруженной картинке

суббота, 14 декабря 2019 г.

Промежуточная загрузка файла

#javascript #html5 #файлы #загрузка


на некоторых сайтах, при загрузке файла, файл "скачивается в браузер", после прохождения
загрузки, файл отдается браузеру уже в скачанном ввиде. Как это происходит? Что за
технология? И как такое сделать?


    


Ответы

Ответ 1



Это новинки, поэтому осторожно отнеситесь к совместимости. XMLHttpRequest может возвращать в качестве результата Blob. Да, обычный XHR: var oReq = new XMLHttpRequest(); oReq.open("GET", "/myfile.png", true); oReq.responseType = "blob"; oReq.onload = function(oEvent) { var blob = oReq.response; // ^ вот этот Блоб }; oReq.send(); ...за прогрессом скачивания можно следить, задав обработчик onprogress. Из Blobа можно сделать URL: objectURL = URL.createObjectURL(blob); ...и отдать его на "скачивание" любым удобным вам способом. Блоб существует исключительно на клиенте, и если существует, то уже целиком, поэтому "скачивание" блоба будет по факту сохранением уже загруженного его содержимого. Блоб можно сформировать огромным количеством способов, XHR только один из них.

понедельник, 14 января 2019 г.

Загрузка ядра linux

Здраствуйте, решил себе ради интереса создать linux дистрибутив.
Собрал ядро, создал загрузочный ramdisk, сделал все что мне нужно в ramdisk
В итоге у меня вышла такая структура каталогов:
Папка boot в ней две папки, первая initrd, вторая kernel, в первой лежит main.gz во второй kernel.lk
Как теперь из этого всего сделать img образ чтоб запустить в эмуляторе? Гугл сказал что мне нужен загрузчик
Много чего в гугле читал но нормального мануала по установке загрузчика для новичка не нашел.
Мог бы кто расказать подробнее, ибо я новичок: первый раз собрал ядро.


Ответ

Смотря какой эмулятор используете, например Qemu поддерживает прямую загрузку ядра и рамдиска. Используй параметры
-kernel bzImage use 'bzImage' as kernel image -append cmdline use 'cmdline' as kernel command line -initrd file use 'file' as initial ram disk
или Воспользуйся virt-manager или virt-install - хорошие менеджеры для qemu.
На других виртуалках можно воспользоваться GRUB или Syslinux. Для этого создайте образ диска dd if=/dev/zero of=newos.img bs=10M count=10. Потом создадим там раздел и файловую систему
$ fdisk ./newos.img
Welcome to fdisk (util-linux 2.26.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command.
На диске не удалось найти таблицу разделов. Created a new DOS disklabel with disk identifier 0xa17f7b6a.
Команда (m для справки): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Номер раздела (1-4, default 1): 1 Первый сектор (2048-20479, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-20479, default 20479):
Created a new partition 1 of type 'Linux' and of size 9 MiB.
Команда (m для справки): w The partition table has been altered. Syncing disks. $ sudo partx -a ./newos.img $ sudo mkfs.ext4 /dev/loop0p1
Смонтируй луп и скопируй туда папочку /boot/ и установим туда grub: grub-install --boot-directory=КАТАЛОГ /dev/loop0
И можно отключить образ $ partx -d ./newos.img
В некоторых деталях алгоритм установки скорее всего прийдется подкоректировать. И всеже рекомендую использовать qemu для игр с рамдиском ;)

вторник, 23 октября 2018 г.

Промежуточная загрузка файла

на некоторых сайтах, при загрузке файла, файл "скачивается в браузер", после прохождения загрузки, файл отдается браузеру уже в скачанном ввиде. Как это происходит? Что за технология? И как такое сделать?


Ответ

Это новинки, поэтому осторожно отнеситесь к совместимости.
XMLHttpRequest может возвращать в качестве результата Blob. Да, обычный XHR:
var oReq = new XMLHttpRequest(); oReq.open("GET", "/myfile.png", true); oReq.responseType = "blob";
oReq.onload = function(oEvent) { var blob = oReq.response; // ^ вот этот Блоб };
oReq.send();
...за прогрессом скачивания можно следить, задав обработчик onprogress
Из Blobа можно сделать URL:
objectURL = URL.createObjectURL(blob);
...и отдать его на "скачивание" любым удобным вам способом. Блоб существует исключительно на клиенте, и если существует, то уже целиком, поэтому "скачивание" блоба будет по факту сохранением уже загруженного его содержимого.
Блоб можно сформировать огромным количеством способов, XHR только один из них.