Создание CD или DVD образов из репозиториев Linux



22 коммент.
Задача: где-то далеко, за высокими горами, лежат репозитории Ubuntu или репозитории Debian, которые хочется использовать локально и записать на диски.
Решение: для этого потребуется установить несколько пакетов, достать скрипт на ruby и освободить побольше места на винчестере.


1. Введение

Пакеты по лицензионным или прочим соображениям делятся в репозитории на секции: например, главная (main) и несвободная (non-free). Пакеты несвободной секции в официальный репозиторий не входят по лицензионным соображениям - но это не значит, что их нельзя скачать. Простое скачивание результата не даст - нужно разбить большой репозиторий на DVD-образы, чтобы пользоваться ими потом.

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


2. Создание локального зеркала

Нужно установить пакет debmirror:
aptitude install debmirror
После этого можно будет качать репозиторий к себе на винчестер с возможностью автоматической докачки (если не сможете вытянуть его за один заход). Выходим в консольку и даём команду:
debmirror debian --nosource --host=backports.org --root=debian --method=http --progress --dist=etch-backports --section=main,contrib,non-free --arch=i386 --ignore-release-gpg
Теперь что всё это значит и как всем этим пользоваться.
Полужирное выделение - это важные параметры, которые нужно будет менять, красным - это, собственно, значения параметров, которые меняем. Для пояснения ситуации лучше запустить броузер и скормить ему ссылку, которая стоит в --host, после чего станет ясно:
  • --host - это адрес репозитория (без слеша на конце, здесь это backports.org)
  • --root - это тот каталог, от которого начнётся зеркалирование пакетов. Короче - это каталог, который виден сразу после захода на адрес, указанный в --host и его же указываем сразу после команды debmirror.
  • --method - обычно это http
  • --dist - название версии дистрибутива, который нас интересует (например sarge, etch, lenny...). Это следующий по уровню каталог, после --host далее --root, далее каталог dist и каталог в нём будет --dist
  • --section - название секции, которая нам нужна (например non-free, если не одна - разделитель запятая без пробелов, типа non-free,main)
  • --arch - архитектура.

Здесь, насколько смог, пояснил на примере реального зеркала, полужирным выделены важные каталоги, красным - нужные нам параметры и что вместо них подставлять.

http://backports.org/
[DIR] debian/ это --root=
[TXT] README.mirrors.html 08-Jun-2007 07:41 10K
[TXT] README.mirrors.txt 08-Jun-2007 07:41 7.6K
[ ] archive.key 20-Apr-2006 08:32 1.9K
[DIR] dists/ 10-Apr-2007 12:24 -
[DIR] etch-backports/ это --dist= 08-Jun-2007 07:38 -
[ ] Release.gpg 08-Jun-2007 07:38 189
[DIR] contrib/ это --section= 10-Apr-2007 12:24 -
[DIR] main/ это --section= 10-Apr-2007 12:24 -
[DIR] non-free/ это --section= 10-Apr-2007 12:24
[DIR] sarge-backports/ 08-Jun-2007 07:38 -
[DIR] doc/ 02-Sep-2005 19:14 -
[DIR] indices/ 08-Jun-2007 07:38 -
[ ] ls-lR.gz 08-Jun-2007 07:38 386K
[ ] ls-lR.patch.gz 08-Jun-2007 07:38 15K
[TXT] new.html 08-Jun-2007 09:50 3.4K
[DIR] pool/ 16-Jan-2006 11:35 -
[DIR] project/ 15-Dec-2005 22:12 -
[TXT] removals.txt 07-May-2007 21:59 40K
[TXT] robots.txt 19-Apr-2005 21:03 26
[TXT] style.css 07-May-2005 15:11 1.7K
[DIR] tools/
После этого запустится программа и, если нам повезёт, начнут копироваться пакеты и складываться в локальные каталоги. Поползут строки типа:
Getting: pool/main/l/linux-2.6.16/linux-image-2.6.16-2-686-smp_2.6.16-18~bpo.1_i386.deb... ok
Getting: pool/main/l/linux-2.6.16/linux-image-2.6.16-2-686_2.6.16-18~bpo.1_i386.deb... ok
Getting: pool/main/l/linux-2.6.16/linux-image-2.6.16-2-k7-smp_2.6.16-18~bpo.1_i386.deb... ok
Это копируются пакеты. Всё отлично, переходим дальше.


3. Разделяем пакеты в каталоги размера DVD-образа
Каталог с репозиторием больше, чем можно записать на болванку - следовательно, распределяем по каталогам, суммарный объём файлов которых не превышает CD / DVD диск. Нужно установить пакет debpartial:
aptitude install debpartial
Далее делаем каталог для записи на DVD (например, etch-backports-dvd):
mkdir etch-backports-dvd
и создаём с помощью debpartial описание пакетов в каждом диске:
debpartial --nosource --dirprefix=backports-etch --section=main,non-free --dist=etch-backports --size=DVD backports-etch backports-etch-dvd

Для других архитектур, например для amd64, нужно указать явно архитектуру:
debpartial --nosource --arch=amd64 --section=non-free --dist=etch --size=DVD non-free non-free-dvd/
И снова несколько пояснений. Указываем те секции, которые указали при скачивании командой debmirror, название дистрибутива из --dist, размер (CD или DVD). Потом сначала пишем откуда создавать описания, а потом куда (в каталог, который будем нарезать на болванку). После этого поползут строчки вида:
Reading dists/etch-backports/main/binary-i386/Packages.gz... done
Reading dists/etch-backports/non-free/binary-i386/Packages.gz... done
backports-etch0: 260 packages. Size: 1014633860 [ openoffice.org-l10n-de, ... ]
/usr/bin/debpartial:230: warning: Insecure world writable dir /usr/local/matlab7 in PATH, mode 040777
Writing Packages.gz of backports-etch0 for (etch-backports,main,i386)... 252.
Writing Packages.gz of backports-etch0 for (etch-backports,non-free,i386)... 8.
А когда всё успокоится, в каталоге (в этом примере) etch-backports-dvd появятся подкаталоги с номерами, начиная с 0, в которых скопированы описания пакетов. В моём примере создался один каталог, так как пакетов немного:
backports-etch0
Теперь нам потребуется язык ruby, который скорее всего уже установлен, но тем не менее:
aptitude install ruby
После этого создаём файл скрипта под названием debcopy и записываем в него следующее (оригинал кода здесь):
#!/usr/bin/ruby
#
# debcopy - Debian Packages/Sources partial copy tool
#
# Usage: debcopy [-l]

#
# where
is a top directory of a debian archive,
# and
is a top directory of a new debian partial archive.
#
# debcopy searches all Packages.gz and Sources.gz under
/dists
# and copies all files listed in the Packages.gz and Sources.gz
# files into
from . -l creates symbolic links
# instead of copying files.
#
# Copyright (C) 2002 Masato Taruishi

#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License with
# the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL;
# if not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
#
require 'getoptlong'
require 'zlib'
require 'ftools'
$link = false
def usage
$stderr.puts "Usage: #{__FILE__} [-l]
"
exit 1
end
def each (file, &block)
fin = Zlib::GzipReader.open(file)
fin.each do |line|
yield line
end
fin.close
end
def each_file (file, &block)
each(file) do |line|
if /Filename: (.*)/ =~ line
yield $1
end
end
end
def each_sourcefile (file, &block)
dir = nil
each(file) do |line|
case line
when /^Directory: (.*)$/
dir = $1
when /^ \S+ \d+ (\S+)$/
yield dir + "/" + $1
end
end
end
def calc_relpath (source, dest)
pwd = Dir::pwd
Dir::chdir source
source = Dir::pwd
Dir::chdir pwd
Dir::chdir dest
dest = Dir::pwd
Dir::chdir pwd
src_ary = source.split("/")
src_ary.shift
dest_ary = dest.split("/")
dest_ary.shift
return dest if src_ary[0] != dest_ary[0]
src_ary.clone.each_index do |i|
break if src_ary[0] != dest_ary[0]
src_ary.shift
dest_ary.shift
end
src_ary.size.times do |i|
dest_ary.unshift("..")
end
dest_ary.join("/")
end
def do_copy(path)
if $link
pwd=calc_relpath(File.dirname($dest_dir + "/" + path), $source_dir)
File.symlink(pwd + "/" + path, $dest_dir + "/" + path)
else
File.copy($source_dir + "/" + path, $dest_dir + "/" + path)
end
end
def copy(path)
s=$source_dir + "/" + path
d=$dest_dir + "/" + path
if FileTest.exist?(d)
$stats["ignore"] += 1
return
end
if FileTest.exist?(s)
File.mkpath(File.dirname(d))
do_copy(path)
$stats["copy"] += 1
else
$stats["notfound"] += 1
$stderr.puts s + " not found."
end
end
opts = GetoptLong.new(["--symlink", "-l", GetoptLong::NO_ARGUMENT],
["--help", "-h", GetoptLong::NO_ARGUMENT])
opts.each do |opt,arg|
case opt
when "--symlink"
$link = true
when "--help"
usage
end
end
usage if ARGV.size != 2
$source_dir = ARGV.shift
$dest_dir = ARGV.shift
if $link
$source_dir = Dir::pwd + "/" + $source_dir unless $source_dir =~ /\A\//
$dest_dir = Dir::pwd + "/" + $dest_dir unless $dest_dir =~ /\A\//
end
$stats = {}
$stats["ignore"] = 0
$stats["copy"] = 0
$stats["notfound"] = 0
open("|find #{$dest_dir}/dists -name Packages.gz") do |o|
o.each_line do |file|
file.chomp!
print "Processing #{file}... "
$stdout.flush
each_file(file) do |path|
copy(path)
end
puts "done"
end
end
open("|find #{$dest_dir}/dists -name Sources.gz") do |o|
o.each_line do |file|
file.chomp!
print "Processing #{file}... "
$stdout.flush
each_sourcefile(file.chomp) do |path|
copy(path)
end
puts "done"
end
end
puts "Number of Copied Files: " + $stats["copy"].to_s
puts "Number of Ignored Files: " + $stats["ignore"].to_s

puts "Number of Non-existence File: " + $stats["notfound"].to_s

Даём ему права на исполнение и пишем:
ruby debcopy backports-etch/ backports-etch-dvd/backports-etch0/
Начнётся процесс копирования, который может отнять много времени. Терпеливо ждём, потягивая кофе / чай / коньяк (нужное подчеркнуть). Закончится это всё примерно следующим:
Processing backports-etch-dvd/backports-etch0//dists/etch-backports/main/binary-i386/Packages.gz... done
Processing backports-etch-dvd/backports-etch0//dists/etch-backports/non-free/binary-i386/Packages.gz... done
/usr/bin/myscript/debcopy:144: warning: Insecure world writable dir /usr/local/matlab7 in PATH, mode 040777
Number of Copied Files: 260
Number of Ignored Files: 0
Number of Non-existence File: 0
Повторяем это для всех директорий с номерами (backports-etch0/ backports-etch1/ ... backports-etchN/), получаем копию репозитория, нарезанного на каталоги подходящего размера.


4. Создаём ISO-образы и пропаливаем на болванки
Если хочется пользоваться репозиторием на болванках на других машинах, нужно нарезать репозиторий на диски. Тут всё просто: создаём ISO-образ:
mkisofs -f -J -r -o backports-etch0.iso backports-etch-dvd/backports-etch0
Не забываем повторить эту команду для всех директорий с номерами (backports-etch0/ backports-etch1/ ... backports-etchN/), получаем ISO-образы и пропаливаем их на диски своей любимой программой прожига.


Ссылки
Собственно, пост является переводом и расширением этой замечательной статьи. Решение, может, и не лучшее, но мне оно нравится тем, что работает :-) Так же очень толковое руководство тут.
Читать далее

Июльский Linux-поинт 2007 года



11 коммент.

Полная версия в PDF доступна тут (около 1.7Мб), ещё один репортаж у Аркадия aka Tigro.



Участники:

+ virens
+Tigro
+NightLord
+ValehO
+Vega
+Angry Judas
+Shurik
+SAV
+Shaggy-cat



Предисловие

Если прошлый поинт был самым откладываемым, то этот - самым многочисленным за этот год. Этому способствовало предварительное объявление на блоге, и многие коллеги по перу к нам присоединились. Всегда интересно встретиться живьём и пообщаться не только в комментариях или по почте. Фотокорреспондентов в этот раз было целых трое: я, virens, Tigro и ValehO. Причём Аркадий aka Tigro подошёл к делу серьёзно, принеся Canon EOS 350D. Так что если увидите ещё несколько фоторепортажей - не удивляйтесь.


Сборы и подготовка

Почти все встретились в метро - так как местных солнцевских и новопеределкинских товарищей было меньше. Немного подождали участницу нашей встречи Светлану aka Vega, что само по себе было знаменательным событием: до этой встречи представительницы прекрасной половины к нам не заглядывали. Как выяснится позже, это не последняя участница нашей встречи. Но это будет после, а сейчас мы едем к месту встречи. Под дождём ...

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

Дорога к месту события


После дождя...Наши коллеги с убунту-форума и другие цивилизованные граждане с трудом себе смогут представить это ни с чем не сравнимое удовольствие: продираться по колено в грязи несколько километров по земляной колее, размытой многодневными дождями, с тяжёлыми сумками и авоськами дров в руках. Дабы не смущать благородную публику, фотографий дороги мы не делали, но при некотором усилии можно себе это представить, а некоторым даже удалось прочувствовать на себе. Но это как с дождём: не возвращаться же. Кто-то шутливо напевает песню ``Эх, дороги ...пыль да туман ...'' в перерывах между пожеланиями Гидрометцентру долгих лет и больших трудовых успехов.
Как бы там ни было, но до места мы добрались, хотя в этот раз оно было чуть ближе, чем обычно. Красота: лес после дождя, свежо, прохладно, а если вспомнить, что в сумках ещё прохладные напитки разной степени крепости, хлебцы и сосики - совсем красота. Тут и началось самое интересное.


Борьба за огонь

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

Содрали с дров кору, положили бумаги, сверху дров - по всем теоретическим рассчётам оно должно было заполыхать. А оно только дымит и шипит. Однако!

Дровишки нам попались сырые...Знаете, как развести огонь с сырыми дровами в сыром лесу? Отвечаю: весьма весело. И тут на помощь пришёл Георгий aka Angry Judas.




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



Пока Евгений aka ValehO возносил мольбы Патрику, наша ударная команда сумела всё-таки добыть огонь и подсушить дрова - и вот, сначала дым, а потом и огонёк намекали на то, что сосисками на огне нам полакомиться всё же удастся. И тут начались атмосферные осадки в виде водяных капель - дождик пошёл, проще говоря.

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



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

Мероприятие началось

Над костром стало всё больше и больше нависать сосисок, поднимаем бокалы и откупориваем бутылки и банки. Обсуждаем насущное, последние известия: о GPL v3 и последних ядрах, Шурик делится тонкостями работы сетей, а я вспоминаю, как при прожиге болванки с Slackware 12 у меня неожиданно отключилось DMA на пишущием приводе и как я смиренно ждал окончания записи. Чертеводы Кирилл aka NightLord и Андрей aka SAV рядом обсуждают особенности работы FreeBSD. Евгений aka ValehO и его спутница Vega (Светлана) рассказывают анекдоты из жизни о работе некоей операционной системы виста от мало кому известной компании из села Рэдмонд. Перебегая от дыма костра, пытаемся поджарить сосиски - и это удаётся.

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



Местные фоторепортёры сменяют чарки на фотоаппараты и отправляются на охоту. Мы с Аркадием снимаем друг друга и участников поинта, позирующих для репортажа.

Погода на время балует солнышком, костёр горит, дрова ещё есть, провиант тоже. И всё-таки хорошо просто так посидеть вместе, на природе, радуясь простым вещам, которые так редко замечаешь в городе. Неспешно общаться, вспоминать забавные случаи, сообща раздувать костёр ...Просто здорово.



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



И вот, когда дело шло к вечеру, дрова догорали и уже в общем настала пора расходиться, Шурик и Андрей aka SAV потихоньку скрылись и отправились за нашим последним гостем, а вернее гостьей. Через некоторое время к нам присоединилась Галина aka Shaggy-cat, отведала последнюю сосиску и успела отойти от смущения, приняв участие в общей фотографии.

Ещё немного постояли, затушили костёр и отправились в обратный путь.



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

Ну вот, выбрались, промокшие и немного чумазые от дорожной грязи, но с хорошим настроением и задором. Надеюсь, что это небольшое описание и фотографии позволят хотя бы отчасти передать то настроение, которое присутствовало на встрече - а тем, кто был, пусть напомнит о том, как это было. А было здорово. И это ещё один повод встретиться вновь, ``на том же месте, в тот же час''.
Читать далее

Дополнительные возможности блогодвижка Blogger



23 коммент.
Время от времени меня спрашивают коллеги по блоггерству "а как ты прикрутил такую-то рюшечку?" Тут я мучительно начинаю вспоминать, что и где я искал и куда кинул в бездонные заметки нужную страницу. Поэтому решил собрать всё, что ещё помню, в одном посте.
Читать далее

Интернет-провайдер QWERTY: полный... triple-play



33 коммент.
Если кто-то думает подключаться к Ethernet-провайдерам или переходить откуда-нибудь на QWERTY - небольшое личное наблюдение уже бывшего абонента этой "замечательной" сети. Зайдите на официальный сайт кверти - какая тишина и благодать. Форум - просто райские кущи какие-то: всё работает, всё прекрасно, все счастливы. Благостная картина? Почти...

Лирическое отступление
Когда я подключался к этой сети, она называлась иначе - Центел. Крупная, хорошо работающая высокоскоростная сеть с большим количеством абонентов, вменяемым суппортом, выбором тарифов, прекрасным форумом, приёмом платежей в любом виде - и что главное, сеть всегда работала. Простои, если и были, то несколько часов в месяц. До середины 2006 года Центел был, наверное, лучшей сетью Москвы.

А потом пришли другие бандитыменеджеры и стало это кверти. Некоторое время после этого сеть работала так же, как и прежде, но... Разворотили форум, поудаляли часть нужных и полезных топиков, перекроили на свой лад. Закрыли FTP-сервера на закачку - качать можно, но не видите того, что вкачали. Только после утверждения модераторами. Итог: FTP-сервера превратились в тухлое болото.
Начались перебои с приёмом электронных платежей (в августе 2006 - почти на месяц), в некоторых районах падал биллинг, а потом начался легендарный теперь уже переход на динамические IP...


Что с кверти не так?
Всё очень просто: люди зажрались зарвались. Они уверовали в беспредельность возможностей своего оборудования и начали подключать всё новые и новые районы. Москвы мало - давайте подключать Подмосковье. Выдержит, никуда не денется...

Скажем так: пока выдерживает. То есть уже "не пока" - волевым решением начался переход на NEO-QWERTY, с динамическими IP. Маркетоидный отдел кверти решил, что всем вдруг очень понадобился Triple Play - телефония, телевидение и интернет в одном флаконе по одному проводу. Не то, чтобы они сильно ошибались: в общем, хочется, но на фоне так же стабильно работающего интернета.

После этого началось такое, что даже глючный Стрим на этом фоне стал просто сказкой. Эпопея с заменой оборудования превратилась в клоунаду: маркетинговый отдел бодро рапортовал, что к июню всё оборудование заменят. Техники, похоже, оказались не в курсе: естественно, всё работает на старых настройках. Первый эксперимент начали на районе Ховрино... в общем, я не могу приводить сохранённые посты на форумах ввиду крайнего их насыщения четырёхэтажными матюгами. Но наиболее приличные комментарии такие:

я так с начала июня почти каждый [день]!!! сперва периодичность правда была
дня три, потом через день, посл неделю каждый день. у меня операторы и
не спрашивали кто я и какой у меня номер договора. можт по голосу
узнавали. уж не знаю. но кто этот галимый call - центр назвал
технической поддержкой. чо они там поддерживают то. вчера последний раз
общался с оператором, ну и задаю ему вопрос - если у меня почти месяц
каждый день обрубается все можт все таки пора задуматься почему
, а не
тупо делать синхронизацию. на что он мне отвечает, что у меня теряется
привязка ИП (я это и так естестно знаю - каждый день об этом
выслушиваю) и все из-за НЕО сети. ничего еще толком не налажено, сказал
он мне, мы и сами воем тут от этих премудростей руководства. задал др.
вопрос, если ничего не налажено и огромное кол-во абонентов просто не
получаю в полной мере услуги которые оплачиваются полностью, на что был
ответ - не знаю почему руководство не принимает никаких мер, вам
остается только ждать.

Скорость в новой сети NEO-Кверти просто феерическая, а пинги - молниеносные:

Как вам пинг до шлюза в моей NEO-сети Фестивальная 28, порадуйтесь
Ping has started ...

PING 74.41.80.1 (74.41.80.1): 56 data bytes
64 bytes from 74.41.80.1: icmp_seq=0 ttl=232 time=388.218 ms
64 bytes from 74.41.80.1: icmp_seq=1 ttl=232 time=383.799 ms
64 bytes from 74.41.80.1: icmp_seq=2 ttl=232 time=366.296 ms
64 bytes from 74.41.80.1: icmp_seq=3 ttl=232 time=384.861 ms
64 bytes from 74.41.80.1: icmp_seq=4 ttl=232 time=406.644 ms
64 bytes from 74.41.80.1: icmp_seq=5 ttl=232 time=387.693 ms
64 bytes from 74.41.80.1: icmp_seq=6 ttl=232 time=409.266 ms
64 bytes from 74.41.80.1: icmp_seq=7 ttl=232 time=392.992 ms
64 bytes from 74.41.80.1: icmp_seq=8 ttl=232 time=393.256 ms
64 bytes from 74.41.80.1: icmp_seq=9 ttl=232 time=409.924 ms

--- 74.41.80.1 ping statistics ---
10 packets transmitted, 10 packets received, 0% packet loss
round-trip min/avg/max = 366.296/392.294/409.924 ms

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

Кое-что сохранилось тут, например:


Как тут не вспомнит нашего дорого Виктора Степановича: "хотели как
лучше, а получилось как всегда.." Хотя может как лучше и не хотели,
хотели как будет дешевле и удобнее провайдеру, а про пользователей как
всегда забыли. В общем triple Play вышел на славу.... Интернет
периодически вырубается, после 00:00 вообще помоему ни разу не работал
за две недели... видимо устает за день айпишники менять каждые 2
минуты....


Мнение о провайдере КВЕРТИ тех, кто ещё остался:
Достал этот QWERTY своими обманами...
он не обманывает,просто чисто совковая компания.

Я думаю валить из зтой конторы Миканора....
не думайте. сделайте это
Это идиотизм или как?
Это qwerty )

По поводу скоростей и хитростей договоров:
Статику подняли...Но инет работает через пень колоду...Потеря
пакетов..Скорость как на модеме в старые времена...Вот Вам и НЕО
сеть...ЙЦУКЕН в своем репертуаре...По поводу повышения скорости...Это рекламный ход ЙЦУКЕН...На самом деле повашать ее наверное и не собирались...Втирают здесь что ДО 4000 Кбит/с.А в тарифном плане нет ДО.Есть ДО в тарифе 100 Мбит/с..

И ещё немного избранной лирики с форумов кверти:
Кверти одноразовый провайдер, сидишь на нем пока все работает, как только что-то ломается проще сразу уйти в другую сеть).

QWERTY - коннект здесь больше не живет...

Что лучше, по вашему мнению, ЙЦУКЕН или модем???(вопрос относиться к а8(Вешняки, Новогиреево, Новокосино))

Больше часа в Вешняках не было ни интернета ни локалки..даже форум не работал. Получасовую очеред в сапорт не высидел и смирившись пошел читать книгу.

Один день скорость была и опять .Фильм с районной за 72часа.Неделю звоню в т.п одни отговорки.Отвечают что это нормальное явление.за что платим?.
За модемную связь

Прошлое и позапрошлое воскресение. Праймтайм (ближе к вечеру). Как думаете что было? Традиция чтоли?!!!!! Ну если у вас там падет что-то периодически - значит надо меры предпринимать какие-то!!!! ДОСТАЛИ!!!
Так выглядит перегрузка сети, когда мощности каналов и/или серверов не хватает для обслуживания всех подключившихся абонентов.

Как не жаль но полностью ситуация полностью совпадает с предыдущим пользователем. Интернет пропадает каждые 2 дня регулярно. Если правайдер не может наладить НЕО сеть у уже подключенных районов, то тогда вообще зачем переводить на НЕдО всё новые районы. Решите проблему с пропаданием интернета.
обьект договора 2000146504 район Царицыно

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

Спасибо техподдержке - терь даже линк пропал

98827-040/07 Лобня
C 13.08.07 только глючная локалка, интернета нет, в тп звонить бесполезно.
Заявки отправили уже 3 штуки. Последний раз сказали , что ошибка в написании скриптов и в течении суток исправят. Такого безобразия не было даже в ЕХЕ.

З.Ы. Предлагаю регистрировать рекорды автоответчика! Мой рекорд: Оператор ответит через 6 часов 18 минут - нехило!

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

2. Доработать автоответчик
«Если Вы хотите услышать что
проблема будет устранена в течение 3-х часов - нажмите «1»,
в течение суток – нажмите «2»,
в течение 3 суток – нажмите «3»,
все и так работает – нажмите «4»,
случайный ответ – нажмите «5»,\
соединить с другим провайдером – нажмите 6,
гудки - оставайтесь на линии.


Это уже порядком надоело. Особенно, когда звонишь в службу тех. поддержки и спрашиваешь о сроках устранения, а тебе отвечают:"А кто его знает? Может сегодня, а может и послезавтра. Да и вообще у нас 3 раб. дня на устранение проблемы. Чего Вы так переживаете?". Причем говорится таким недовольным тоном, как будто я сам виноват в этой проблеме. Получается меня могут оставить без связи на 5 дней(3 раб. +2 выходных) и никак это не компенсировать? Нет уж... увольте. Такое терпеть больше не намерен. Ухожу В Корбину.


№4009812799

Хех в продолжении истории....

- Суббота 6 октября.... день
Дозвонился до ТП. 40 минут ожидания.... гудки.... Описание проблеммы (не выдает ip по DHCP) в ответ "запускаем синхронизацию так как ваш МАК не передается по стеку, через 3 часа заработает" гудки... (Как результат в течении часа пропал линк на сетевой)

-Воскресенье 7 октября вечер ~16:50
ТП, 35 минут... гудок.... Описание проблеммы (Нет Линка, звонил, синхронизация и прочее...) уверили что после очередной Правильной синхронизации (через 3 часа) все будет =).

-Понедельник 8 октября
ТП, около часа ожидания, гудок... Описание проблеммы, пауза... Ответ: "Ваш порт отключен на нашем оборудывании, запишите номер проблеммы 27670, я сообщу в цус до завтра вашу проблемму решат." Что то новенькое =)

-Вторник 9 октября
ТП (~14 00) ожидание 30 минут, гудок... Приятный голос девушки здравствуйте =). Начинаю описание проблеммы и вешают трубку (может и сорвалось...)

ТП (~17 00) ожидание 40 минут, гудок... Описание проблеммы, номер 27670... Ответ: "Что за номер?" разъясняю, говорю что звоню не 1 раз... Пауза, "Я вижу что у Вас за проблемма, оставте свой номер телефона, я вам перезвоню через 40 минут". Называю, приятно слышать что то новое...
Через час перезванивают... Линк есть? - Да. Интернет? проверяю... Да есть, - Спасибо!!! "проблемма до конца не решена, вам включали порт в ручную, работать должно в цус проблемму передам" Я довольный вешаю трубку.
Успеваю проверить почту,... Линк гаснет =(

ТП (~22 00) ожидание 40 минут, гудок... Описание проблеммы.... 5минут разговора, пинг идет, инет есть. Вопрос о гарантии остается без ответа, благодарю, вешаю трубку.... Линк гаснет.

Итог ~ 4 часов ожидания, голос автоотвечика снится в страшных снах. Куча негатива. Неработающий интернет.

Выводы: Все зависит от того на кого попадаешь в ТП.... Дозвон в ТП ЖЖОТ!



Потрясающая по художественной силе история:

Зовут меня Мартынов Сергей, номер лицевого счета 6709643679. Заявка на установку Интернета + ТВ (№96436) была принята в конце апреля, на первые числа мая была запланирована установка. Мастера ко мне не пришли, после многочасового висения на телефоне мне сообщили, что оборудование отсутствует, ждите, мы вам позвоним. Недели через три я позвонил сам, уже в диспетчерскую "Ховрино", мне сказали, что оборудование появилось, но уже закончилось, а про меня забыли, извините, мы вам позвоним. В следующий раз звонил опять сам, еще недели через три, сказали, что оборудования нет, ждите. Это уже была середина июня. В следующий раз я позвонил недели через две, опять сам, оказалось, что оборудование есть, и был оформлен наряд на 5 июля.

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

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

Еще через несколько дней пришедший мастер пытается поменять свитч Zyxel на D-Link, но последний не работал вообще, пришлось поменять обратно на Zyxel. Следующие несколько вечеров я провожу на телефоне, бесчисленное количество раз (причем после ожидания на линии в течение 20-45 минут) мой звонок "теряют" при попытке переключения диспетчером технической поддержки на вторую линию (на которой сидят хоть сколько-то вменяемые люди). В результате проводят три или четыре попытки синхронизации, после чего (чудо!) у меня начинают работать и Интернет, и телевидение. Это конец июля.

В общей сложности проработало все с неделю, после чего у меня опять пропал Интернет, а затем и ТВ. Опять многочасовое ожидание на телефоне, опять многочисленные попытки синхронизации, на сей раз безуспешные и последовавшее оформление наряда на ремонт (№3402653). Мастер пришел 14 августа и заменил Zyxel, продемонстрировав, что и Интернет и ТВ работают. Результат: сервис восстановлен, наряд закрыт.

Вчера, 15 августа (на следующий день!), перестали работать и Интернет, и ТВ. Опять многочасовое ожидание на телефоне ("подождите, осталось меньше минуты"), опять попытки синхронизации, просьба оставить компьютер включенным на ночь, обещание, что утром все будет работать. Утром все без изменений, Интернет и ТВ отсутствуют. Провисев на линии 40 минут (только что), я дозвонился до оператора, который мне сообщил, что по их информации у меня все работает нормально.

Кто-то хочет поспорить со мной, что это полный отстой?!

Ну и наконец один абонент выдал совершенно потрясающую фразу - новая реклама для Кверти:
Qwerty!!!!
Теория-это когда вы знаете все, но ничего не работает.Практика-это когда
все работает.но никто не знает почему.В нашей компании мы совмещаем
теорию и практику-ничего не работает и никто не знает почему!!!

Со временем всё портится - даже приличные провайдеры. Мало ли - десять пользователей отключатся, а мы подключим за это время сотню и плюнем на тех, кто отключился. Не вселяют оптимизма и слова:

до сих пор перенастройка оборудования затронула только не большую часть сети.. толи ещё будет..
подтвердившиеся у нас в Зябликово. То в логах красуется
eth1: link down
то просто нет пинга вообще никуда. Скачки скорости, часто отваливается (нет пинга никуда) на полчаса, час или больше. В редкие минуты просветления работает на закачку со скоростью 0,5-1Мб/сек (номинал - 100Мбит/сек), но и это, в общем, неплохо. И так несколько часов, а потом, может быть, на десять минут соединение появится. Временами вот такая феерия:
eth1: link down
eth1: link up, 10Mbps, half-duplex, lpa 0x0000
eth1: link down

Что особенно неприятно, так это то, что суппорт героически отрицает какие бы то ни было проблемы на данном участке: "в вашем районе жалоб на работу оборудования нет".


Краткое резюме:
  • тарифы: разбойники с большой дороги, особенно на лимитных по трафику тарифах (360 руб - 500 Мб), на анлимах сильно рубят скорость.
  • суппорт: туда хорошо звонить дзен-буддистам, могущим повисеть на автоответчике 15-30 минут. Но иногда отвечают быстро - раз на раз не приходится. Народ в техподдержке вменяемый, вежливый и предупредительный, надо отдать должное.
  • устранение неисправностей: когда как. Иногда быстро, но бездумно (пришли - пнули - заработало - ну и фиг с ним). В случае большой беды используют стратегию "голову в песок" и оттуда отвечают "скоро всё заработает".
  • когда сеть всё-таки работает: немного напоминает легендарный когда-то Центел - высокая скорость и маленькое время отклика.
  • варианты оплаты: все, какие только можно себе представить - деньги они берут хорошо и профессионально.
  • ресурсы: их всё меньше и меньше. Чахлые FTPшники, официозный форум, и всё то, что вам щедро наобещают при подключении.

Центела больше нет, и качество услуг продолжает падать. Сначала перекроили форум на свой лад, порубали полезные топики, ввели на нём крепкую цензуру (попробуйте найти там упоминания о сбоях - ничего, просто райские кущи какие-то). Потом начались проблемы с оплатой электронными деньгами. Закрыли FTP-сервера на загрузку, и сейчас там всё заросло тиной. От бывших когда-то огромных коллекций фильмов и музыки остались жалкие обломки - я с завистью смотрю на то, что есть в Корбине. Кто-то пытается поддерживать торрент-трекеры, но всё это на любительских началах и довольно дилетантском уровне. Многие держатся в кверти именно из-за соединения с Интернетом - и вот не осталось и этого.

Сейчас (апрель-июль 2007 года) значительная часть кверти работает с перебоями и глюками - переход на новое оборудование затянулся на неопределённое время. Так что по крайней мере сейчас подключаться к кверти просто глупо: в сети полный стабилиздецtriple-play - это такое состояние провайдера, когда услуг много, но ни одна нормально не работает.

Со временем абонентов будет всё больше и больше - а дорогостоящее оборудование менять будет всё накладнее. Конечно, ресурсы у кверти ещё есть, но жадность маркетоидов их быстро сведёт на нет.

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

Волшебная клавиша SysRq / Printscreen



31 коммент.
Достаточно редко, когда я провожу над своей системой бесчеловечные ядерные эксперименты, она зависает наглухо - ничто не совершенно в этом мире. Именно для этих целей в ядре Линукс имеется замечательная возможность: Волшебная клавиша SysRq или Magic SysRq Key.


Что это такое?

Если внимательно посмотреть на клавиатуру, там обнаружится кнопка PrtSc / SysRq. Подавляющее большинство пользователей Windows полагают, что она специально присутствует на клавиатуре для скриншотов. Однако
кнопка Magic SysRq Key появилась на клавиатурах задолго до Microsoft.

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




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


Как ей пользоваться?
Сначала нужно убедиться, что она включена: в конфиге ядра CONFIG_MAGIC_SYSRQ должно иметь значение Y (по крайней мере в дефолтном ядре Дебиана это так). Дальше применение такое: нажимаем и держим ALT, нажимаем SysRq, отпускаем всё и нажимаем одну из "командных" клавиш - ниже их краткое описание.


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

Одновременное нажатие клавиш Alt + SysRq +

'H'elp - выводит все доступные возможности SysRq, выделяя большой буквой клавишу действия;

loglevel'0'-'8' - позволяет менять уровень подробности вывода от 0 (только критические сообщения) до 8 (самый подробный режим);

re'B'oot - немедленная перезагрузка системы, прямо как клавиша RESET (без синхронизации и размонтирования файловых систем);

'C'rashdump - выполняет директиву kexec для перезагрузки, чтобы получить сведения об ошибках;

hol'D's - показывает все блокировки, которые держат устройства или файлы;

power'O'ff - корректно выключает систему (если настроено и поддерживается, обычно это прямая команда отключения);

'S'ync - пытается синхронизировать все примонтированные файловые системы, при этом пишет в консоли "Emergency Remount R/O" - когда этот процесс закончится, должно написать "Emergency Remount Complete";

'U'nmount - пытается перемонтировать все примонтированные файловые системы в режим "только-чтение";

show'T'asks - выдаст список текущих задач и информацию о них в текущую консоль;

'N'ice - используется для того, чтобы сделать задачи реального времени с изменяемым приоритетом;

sho'W'-blocked-tasks - выдаст список всех непрерываемых (заблокированных, ждущих окончание ввода-вывода) задач;

show'M'em - выдаст информацию о доступной и занятой оперативной памяти, а так же степени использования своп-файла;

'F'ull - вызвать oom_kill (out-of-memory kill) для прерывания приложений, забравших слишком много памяти (может занять продолжительное время);

secure acces 'K'ey - убивает все программы на текущей консоли, но не применяйте её на консоли, где запущены иксы (графический сервер будет остановлен и вы не сможете увидеть то, что печатаете и то, что ответит SysRq);

un'R'aw - забирает контроль над мышью и клавиатурой у Х-сервера, что полезно, если Х-севрвер завис: так можно перейти в консоль, убить Х-сервер или проверить логи;

t'E'rm - послать сигнал завершения работы SIGTERM всем процессам, кроме init.

K'I'LL - послать сигнал немедленного завершения работы SIGKILL всем процессам, кроме init.

То есть, например, для аварийной синхронизации данных жмём ALT+SysRq + s, далее ALT+SysRq + u и после этого можно жать на ресет или, что тоже самое ALT+SysRq+b

Ссылки
Помимо документации к ядру, можно почитать об этом тут и здесь.
Читать далее

Ядро Linux 2.6.22 - впечатления



32 коммент.
Давно смотрел и ждал этой версии, так как обещали много интересного и полезного. И вот оно вышло! Немного распинав текущие дела, погрузился в изучение того, о чём так долго говорили большевики (с). Забегая вперёд, могу сказать: оно того стоило.

Здесь в основном - впечатления от использования и некоторое время работы с новым ядром 2.6.22, графики и диаграммы построить ещё не успел. Так что только впечатления.

Диспозиция
Дело происходит на моём многострадальном ноутбуке, работающем под управлением Debian Etch с кусочками Sarge, GCC 4.1 и на тот момент ядром 2.6.20-ck. Ядро с патчами Кона Коливаса меня в принципе устраивало, но всё-таки хотелось большей отзывчивости системы.

Зачем я ввязался в авантюру с Low Latency
Дисковая система ноутбука - самое слабое его место: она очень медленная (по сравнению с десктопом), и при плотной многозадачной нагрузке отзывчивость системы становится неприлично большой. Выход есть: несколько пожертвовав производительностью, получить отзывчивую систему (фактически, Soft Realtime OS). Это достигается наложением low-latency патчей, при этом работа с дисковыми операциями ещё немного "проседает" по производительности, но зато при поиске писем в Thunderbird и одновременной сортировке Scrapbook в Firefox музыка не заикается и ОпенОфис не притормаживает. Все эти танцы с бубном того стоят: такой же ноутбук с дефолтной убунтой на борту глотает пыль с копыт тюнингованного low-latency Дебиана с IceWM :-)
Я использовал конфиг от 2.6.20-ck, что мне вообще говоря мало помогло: конфигурирование ядра немного изменилось, так что пришлось быстро пробежаться и расставить недостающие флажки там, где они нужны.



Вкусное и полезное

Многое было заявлено и обещано - теперь осталось это протестировать и воспользоваться.


Новая система управления памятью

Не буду утомлять подробностями, в которых я и сам не до конца разобрался :-) Одно становится понятным после прочтения топиков в LKML: SLUB быстрее и богаче возможностями. Поэтому выбираем его:
General setup --- Choose SLAB allocator (SLUB (Unqueued Allocator))
Если что, краткий комментарий:
SLUB is a slab allocator that minimizes cache line usage instead of managing queues of cached objects (SLAB approach). Per cpu caching is realized using slabs of objects instead of queues of objects. SLUB can use memory efficiently and has enhanced diagnostics.
Более эффективно работает с памятью - этого мы и ждали.


Low-latency патчи Инго Молнара
Кон и Инго долго боролись и доказывали, чей планировщик задач круче и где. В основном победила точка зрения Инго, и Кон Коливас отказался от своих затей с патчами и больше их не ведёт. Откровенно говоря, я не очень ощущал прирост отзывчивости в ck-патчах. Да, лучше, чем на обычном ядре, но не на столько.
Патчи Молнара (планировщик задач с полностью справедливым распределением ресурсов CFS, Completely Fair Scheduler) наложились без истерик - тихо и гладко. Забегая вперёд, могу сказать: после загрузки я подумал, что моему ноутбуку вставили здоровенное шило куда нужно - настолько он стал отзывчивее к моим действиям. Запуск всех крупных приложений, параллельная сборка нового ядра, поиск в Thunderbird и Firefox и ещё куча всего так и не смогли прервать хотя бы на миг музыку.


Tickless-system - высокоточные часы системы
Processor type and features --- [*] Tickless System (Dynamic Ticks)
В новом ядре появилась эта давно обещанная возможность. Насколько я понял, это повышает точность распределения времени задачам. По этому поводу особенно заметны улучшения при воспроизведении видео Mplayer и работы эмулятора QEMU.
На всякий случай:
This option enables a tickless system: timer interrupts will only trigger on an as-needed basis both when the system is busy and when the system is idle.
Роман Химов пояснил в комментариях (за что ему большое спасибо):
Cистема сможет больше "спать" при отсутствии загрузки. Обычно как дело обстоит, если железяке нечего делать (ни один процесс не хочет процессорного времени), она так или иначе "засыпает". Однако через 1/n (где n то самое CONFIG_HZ, стандартно 250 вроде бы сейчас) секунды таймер стучится в процессор прерыванием, будит систему, ядро снова решает, хочет ли кто-нибудь процессора, если никого нет, снова впадает в спячку, но через 1/n секунды опять получает пинок от таймера.


Ну и другое...

Не забываем включить FUSE, поддержку нужных устройств, Magick SysRq клавишу (на всякий случай, полезное дело), все планировщики IO (так как у меня ReiserFS3.6, ставлю Anticipatory).


Загрузка и работа
Загрузка стала происходить немного быстрее, исчезли некоторые сообщения об ошибках.
Первые впечатления после загрузки: ухтывау :-) Всё стало отзывчивее на глаз раза в полтора: при сортировке Scrapbook в броузере переключение на другие задачи идёт мгновенно, как будто ничего и не происходит. При добавлении свопа - то же самое: создание гигового своп-файла идёт своим чередом, можно пока поправить документ в ОпенОфисе и немного поправить картинку в GiMP.
Все устройства на месте: кардридер работает, сеть и звук тоже. Всё, как и прежде, только быстрее и отзывчивее.
Так что если кто думает поэкспериментировать - дело стоящее.
Читать далее

ImageMagick - мощный консольный графический редактор



32 коммент.
Часто требуется не просто обработать или улучшить изображение, но применить последовательность операций к большому количеству изображений. В этом нам поможет консольный графический редактор ImageMagick.


Установка и первые шаги
Устанавливается черзвычайно просто:
apt-get install imagemagick
и всё. Но дальше меня лично ждал сюрприз: а где, собственно, программа? На самом деле этот пакет содержит несколько программ: display, animate, identify, convert, montage, mogrify и composite. Здесь я приведу свой скромный опыт работы с основной программой пакета - всемогущей convert.

С пакетом ImageMagick (во всяком случае в Дебиане) поставляется могучий мануал в PDF на 320 страницах - весьма толковое руководство, но на английском. До его завершения весьма далеко: описаны только опции командной строки, а остальное просто набросано.


Консольный графический редактор
У многих моих подоконных товарищей такое словосочетание вызывает когнитивный диссонанс: как графический редактор может быть консольным!? Может, и бывает чрезвычайно полезен, когда нужно обработать не одно, а множество изображений, лежащих к тому же в разных каталогах. Естественно, в альтернативной среде приняты наиболее топорные средства решения проблем: тыкать и выделять мышкой, и для каждого файла повторять процедуру. Самые продвинутые слышали об Action в фотошопе, но и это средство - не панацея (а кроме того, требует немалого времени на отладку комбинации действий).

Ниже - часть используемых мной команд обработки изображений, разбитых по категориям (насколько это возможно).


Операции с цветом
Имеется в виду изменение цветовых пространств: RGB/CMYK, grayscale и BW. Всё, что связано с изменением цветов.

Перевод в оттенки серого
-colorspace GRAY
Например: convert -colorspace GRAY tux.jpg tuxConvertGray.jpg
На самом деле ключ colorspace позволяет переводить изображения между разными цветовыми пространствами: GRAY, OHTA, RGB, Transparent, XYZ, YCbCr, YIQ, YPbPr, YUV или CMYK.


Перевод в чёрно-белое изображение

Здесь есть несколько методов: бинаризация по порогу (threshold), с диффузией ошибки (метод Floyd/Steinberg, error diffusion) и локальный адаптивный порог.

Бинаризация с диффузией ошибки выполняется ключом:
-dither
-monochrome
Вместе с этой опцией следует применять ключи -colors или -monochrome для определения цветового пространства, к которому применяется преобразование.

Бинаризация по порогу делается при помощи ключа:
-threshold число
где число - значение порога.
Пример: convert -threshold 128 1.png 2.png

Локальная адаптивная бинаризация по порогу производится при помощи следующего параметра:
-lat ШиринаxДлина{+-}Смещение{%}
Здесь имеется в виду область размером ШиринаxДлина, в пределах которой происходит порог. Смещение определяет степень отклонения значений пикселей (в процентах). Данные параметры стоит подбирать с визуальным контролем (запустить ещё и просмотрщик изображений).
Пример: convert -lat 3x3+5% tux.jpg tuxConvertedLat3x3.jpg


Постеризация
Уменьшение количества цветов на изображении:
-posterize числооттенков
до числаоттенков приводит к сокращению и "огрублению" оттенков изображения.


Инвертирование

Чтобы инвертировать изображение (цветное или полутоновое), надо указать ключ:
-negate
Действует для цветых и полутоновых изображений.


Изменение разрядности изображения

Чтобы перевести 16-битное изображение в 8-битное, нужно воспользоваться ключом:
-depth 8
Кто сказал, что в Линукс нельзя работать с 16-битным цветом?





Операции с освещённостью
Всё, что касается освещённости пикселей, без привязки к цветовому пространству: гамма-коррекция, контрастирование.

Повышение / понижение контраста
Изменение контрастности изображения достигается:
-contrast

+contrast
При этом -contrast повышает контрастность, а + понижает.
Пример: convert -contrast tux.jpg tuxConvertedContrast-50.jpg


Эквализация гистограммы

Автоматическое контрастирование изображения:
-equalize

Производит автоматическую эквализацию гистограммы - алгоритм изменяет гистограмму изображения так, чтобы она была равномерна по светам и теням.


Нормализация

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


Гамма-коррекция

Для гамма-коррекции изображения следует указать ключ:
-gamma значение

Значения меньшие 1.0 делают изображение темнее, значения более 1.0 осветляют изображение. Наиболее часто применяемые значения лежат в пределах от 0.8 до 2.3
Можно применять разные значения гамма-коррекции для разных цветовых каналов, например так: -gamma 1.7/2.3/1.2


Уровни

Более тонкая настройка контрастности изображения при помощи уровней:
-level точкачёрного{,точкабелого}{%}{,значениегаммакоррекции}
можно указывать как в абсоютных величинах, например -level 10,65000 так и в процентах -level 2%,98%
По умолчанию гамма стоит равная 1.0 (то есть без гамма-коррекции), но её можно задать, например, так -level 2%,98%,0.8





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


Изменить размер изображения
Можно задать точный размер в пикселях:
-resize MMMxNNN

изменить размер изображения на MMMxNNN. При этом плотность изображения сохраняется изначальной.
Можно задать в процентах:
-resize 200%
то есть увелилить в 2 раза.

Более быстрый, но грубый алгоритм маштабирования:
-scale число%
масштабирует изображение в заданном процентном соотношении.


Кадрировать изображение
Для кадрирования изображения следует использовать:
-crop ШиринаxВысота{+-}<ИсходноеХ>{+-}<ИсходноеY>{%}
Имеется в виду, что требуется вырезать область ШиринахВысота, причём область смещена на значение ИсходноеХ и ИсходноеY пикселей. Значения двух последних параметров - на самом деле просто координата левого верхнего угла области, для которой указаны данные ширины и высоты. Описание дано в терминологии GiMP: если там вызвать диалог кадрирования, то станет понятным, что имеется в виду.
Пример: convert -crop 95x85+50+12 tux.jpg tuxConvertedCrop.jpg


Изменить плотность изображения

Для того, чтобы задать количество пикселей на дюйм, следует воспользоваться ключом:
-density DPIгоризонтальноеxDPIвертикальное
-density число
Первый вариант нужен тогда, когда по вертикали и горизонтали разрешение разное. Второй вариант проще: если нужно задать разрешение, одинаковое в обоих направлениях.


Поворот изображения

Чтобы повернуть изображение, указываем:
-rotate "+-градусы"
Для того, чтобы повернуть изображение по часовой стрелке, пишем -rotate "+90" для поворота против часовой стрелки, соответственно
-rotate "-90"
Если поворот производится на произвольное число градусов, то изображение поворачивается как целое, увеличиваясь для вмещения исходной картинки. Появившиеся области становятся цвета фона, который определяется параметром -fill цвет.
Несколько слов о заполнении:
  • если надо заполнить цветом по-быстрому и особенно не думать, можно указать именованый цвет (yellow, black, white). Полный их перечень можно получить командой convert -list color
  • если заполнять надо точно известным цветом, можно указать его в формате #RGB (R,G,B are hex numbers, 4 bits each)
  • convert -fill blue ...
    convert -fill "#ddddff" ...
    convert -fill "rgb(65000,65000,65535)" ...




Фильтры для улучшения изображений
Приведены алгоритмы размытия / повышения резкости и шумоподавления.

Размытие по Гауссу
Чтобы размыть изображение по Гауссу:
-blur Радиус
-blur РАДИУСxСИГМА
Размытие изображения по Гауссу на РАДИУС пикселей. Опционально можно задать степень (стандартное отклонение) - задав СИГМУ.


Радиальное размытие
Размыть изображение, "завращав" его вокруг центра, можно:
-swirl градус
на заданное количество градусов.


Удаление спекл-шума
Простой метод удаления спекл-шума (мультипликативный шум):
-despeckle
Действие приводит к лёгкому размытию.


Выделение краёв

Для выделения краёв на изображении следует использовать ключ:
-edge радиус
Приводит к появлению оконтуренного изображения (по всей видимости, применяется метод Собела).


Увеличение резкости

Для того, чтобы изображение стало более резким, можно применить ключ:
-sharpen РадиусxСигма
Используется оператор Гаусса, требуется задание радиуса и стандартного отклонения (Сигма)


Медианная фильтрация
Для удаления импульсного шума с изображения следует использовать медианную фильтрацию:
-median радиус
значение параметра задаёт область оценки шума для алгоритма.


Нечёткая маска
Для повышения резкости изображение, особенно на контурах, можно применить нечёткую маску:
-unsharp РадиусxСигма+величина+порог
Используется оператор Гаусса, которому требуется задать Радиус и Сигму (для достижения хороших результатов радиус должен быть больше сигмы). По умолчанию 0 и 1.0 соответственно.
Параметр величина есть процент разницы между оригинальным и нечётким изображением, умолчание 1.0, а порог - величина количественной разницы между изображениями (умолчание 0.05).

У некоторых пользователей возникает дескрипанс: как же так, типа Unsharp, а повышает резкость? Дело в том, что фильтр получил своё имя потому, что его действие выглядит так, как будто из изображения вычли его нерезкую копию. Никакого вычитания, конечно, не происходит: выполняется свёртка с ядром Гаусса 3х3 пикселей, но это уже другая история.

Добавление / удаление шума (по ближайшим соседям)
Шумоподавление выполняется при указании ключа:
-noise радиус
Удаление шума с изображения на основе анализа величин значений ближайших пикселей в области заданного радиуса. Пиксель считается шумовым и заменяется на среднее по области, если и только если значение пикселя является максимумом или минимумом в данной области.

Чтобы добавить шум к изображению, указываем:
+noise тип
Можно добавить шумы: Uniform (однородный), Gaussian (Гауссов), Multiplicative (спекл-шум), Impulse (импульсный), Laplacian (Лапласов шум), Poisson (шум Пуассона).



Вместо заключения
Мне давно хотелось разобраться с возможностями ImageMagick, а тут выдалось время, когда вся работа сделана, а новой ещё не нагрузили :-) К сожалению, фраза сейчас не актуальна :-)))

Ссылки
Мануал в формате PDF я уже упоминал, очень толковая вещь, но занудно написанная и довольно неряшливая. Начальные сведения можно найти у моего забугорного коллеги, продвинутые сведения и приёмы - у орлов из IBM. Товарищ jetxee привёл несколько примеров использования ImageMagick в скриптах. Этого должно хвтатить на первое время.
Читать далее

Презентации powerpoint? Лучше! Встречаем beamer



23 коммент.
Задача: написана статья или отчёт в LaTeX, а нужно к тому же сделать презентацию прямо из LaTeX, в которой будут рисунки, таблицы и формулы. К тому же, нет времени и желания бороться с монстрами типа OpenOffice.org Impress или Microsoft Powerpoint.

Решение: для создания презентаций в LaTeX существует пакет beamer, установка и освоение которого не представляют особых сложностей.

Установка
Просто и естественно: ищем в своих репозиториях всё, что содержит слово beamer и находим:
# apt-cache search beamer
latex-beamer - LaTeX class to produce presentations

Это то, что нам нужно. Установка apt-get install latex-beamer, как говорится в руководстве по beamer, проходит в формате "Sit back and relax". Теперь всё готово, и можно запускать любимую оболочку для создания
LaTeX файлов - Kile, TeXmaker, Lyx, Emacs или к чему ещё ваша душа прикипела.


Создание презентаций в beamer
Здесь всё достаточно просто: если вы работали в LaTeX какое-то время, разобраться с презентациям - дело от силы получаса. Почти все ваши приёмы оформления текста в LaTeX будут работать и в презентациях, и теперь из статьи или отчёта презентацию будет сделать очень просто: никакой бесполезной борьбы с визуальщиной, подбора шрифтов и вечно прыгающих рисунков. В конце концов, вы получите PDF-файл, который в одинаковом виде открывается во всех сколько-нибудь полноценных операционных системах.

Итак, ближе к делу. После установки пакета latex-beamer вы должны будете новый документ с презентацией объявить классом beamer. Вот как выглядит шапка для латеховского файла:

\documentclass{beamer}
\usepackage[T2A]{fontenc}
\usepackage[koi8-r]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{amssymb,amsfonts,amsmath,mathtext}
\usepackage{cite,enumerate,float,indentfirst}
\usepackage[dvips]{graphicx}

\title
{Итоги работы проекта}
\author{Михаил Конник и сотоварищи}
\date{лето 2007}

Если у вас другая раскладка - поменяйте koi8-r на свою. Кроме того, вы должны указать название презентации (title), авторов(author) и дату (date). После этого в теле документа вы можете сгенерировать титульный слайд командой \maketitle и таким образом получить первый слайд своей презентации.
Каждый слайд находится в окружении
\begin{frame}
.......
\end{frame}


Каждый слайд неплохо дополнять комментариями, чтобы не запутаться потом и не забыть, что отображается на слайдах.
Заголовок слайда делается командой \frametitle{что вы хотите написать в заголовке} и отображается в соответствие с темой слайдов. Но об этом позже.

После всего сказанного выше, пробуем сделать презентацию - например, такую:

\begin{document}

%%титульная страница
\maketitle

%% основные моменты
\begin{frame}
\begin{center}
\frametitle{Основные достижения:}
\begin{itemize}
\item использование пространственно-некогерентного света ртутной лампы;
\item применение RAW-конверторов, использование полного динамического диапазона цифровой фотокамеры;
\item усовершенствование линейных алгоримтов деконволюции.
\end{itemize}
\end{center}
\end{frame}

\end{document}

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

[LaTeX] finished with exit status 1
./Present.tex:9:Option clash for package graphicx.
./Present.tex:15: Glyph not defined in PD1 encoding,(hyperref) removing `\CYRM' on input line 15. Glyph not defined in PD1 encoding,(hyperref) removing `\CYRM'

Не обращаем внимания на эти вопли и спокойно конвертируем в PDF. Результат будет скромный, но со вкусом и без лишних телодвижений:



Хорошо, быстро и без долгих страданий от съехавших шрифтов и картинок офисных пакетов. Если хотим сделать презентацию несколько богаче и профессиональнее по оформлению, нужно лишь указать одну из тем, наличествующих в комплекте. А в комплекте их немало:
beamerthemeAntibes.sty
beamerthemeBergen.sty
beamerthemeBerkeley.sty
beamerthemeBerlin.sty
beamerthemeBoadilla.sty
beamerthemeboxes.sty
beamerthemeCopenhagen.sty
beamerthemeDarmstadt.sty
beamerthemedefault.sty
beamerthemeDresden.sty
beamerthemeFrankfurt.sty
beamerthemeGoettingen.sty
beamerthemeHannover.sty
beamerthemeIlmenau.sty
beamerthemeJuanLesPins.sty
beamerthemeLuebeck.sty
beamerthemeMadrid.sty
beamerthemeMalmoe.sty
beamerthemeMarburg.sty
beamerthemeMontpellier.sty
beamerthemePaloAlto.sty
beamerthemePittsburgh.sty
beamerthemeRochester.sty
beamerthemeSingapore.sty
beamerthemeSzeged.sty
beamerthemeWarsaw.sty

Так же много и цветовых схем оформления, всё это добро (по крайней мере в Debian) лежит в /usr/share/texmf/tex/latex/beamer/themes

Чтобы применить тему и цветовую схему оформления к вашей презентации, достаточно до \begin{document} написать:
\usetheme{Antibes}
\usecolortheme{seahorse}
И вот что при этом произойдёт:



Программы типа power point отдыхают, особенно если в презентации много формул и рисунков. Посмотреть на то, как выглядят слайды с разными настройками, можно на сайте Beamer Matrix.

Заключение
В этой вводной статье, конечно, нельзя объять необъятное: beamer имеет огромное количество настроек и параметров, которые вы можете задать, если захотите. Можно менять темы оформления, цвета и размеры шрифтов, подключать другие гарнитуры, изменять стиль отображения заголовков... Всё это позволяет точно подстраивать результат под ваши нужды. Однако даже с минимальными усилиями вы будете получать презентации лучше, чем microsoft powerpoint, а уж насколько проще!


Ссылки
Литературы по beamer не так много, и в большинстве своём она на английском. Вот здесь очень хорошая статейка для разбега. Некоторое количество продвинутой информации есть тут, а здесь делятся своим опытом по использованию beamer. Так же прекрасную статью о beamer, написанную Евгением Балдиным, можно прочесть в LinuxFormat за апрель 2007 года (#91).
Читать далее