Новый облачный сервис для хранения, публикация и чтения документов docme

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

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

Сервис обрадовал уже на этапе регистрации — просто введите ваш e-mail и регистрация закончена, а на указом ящике будет лежать письмо с логином (ваш e-mail) и паролем. Просто ура — во мне по умолчанию признают человека, а не бота.

Первым делом я залил pdf файл со своим расписанием из института. Мне предложили заполнит информацию о документе. Лично мне не понятно, почему присутствуют и «категория» и «теги», по моему они дублируют друг друга. Настройки приватности позволяют разрешать: скачивать, печатать, копировать. Так выглядит pdf документ:

И уже мы видим мелкие недостатки — огромная панель с мои профилем и маленькими кнопочками. А управляющая панель отображения документа снизу под документом — я ее да же не сразу увидел. Все остальное на высоте — масштабирование, полноэкранный режим и выделение текста. А для просмотра документа другими людьми надо просто кинуть ссылку. Да кстати, как на большинстве мобильных они думают отображать документы, ведь отображение документов через flash?!

Следующее документ был «экзотичнее» — odt с таблицей. Отобразился, но кривовато:

При загрузке большого файла docx наткнулся на надпись «Ваш документ конвертируется», ладно подождем. Через секунд 10 открылось. И верстка поползла — на титульнике методички дата аж на середине листа. И исчезло содержание 🙁

Смотреть конечно можно, но на уровне «а что там есть вообще?». Хорошо, скормим тогда обычный doc с диаграммами, таблицами и рисунками — глянем что из этого выйдет. А вышло все очень да же не плохо — ничего не уползло, все отобразилось. Единственный мелкий недостаток — угловатый рендеринг диаграмм и формул:

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

Ах да, мне часто не хватает djvu reader для просмотра документов и книг — справится ли? А вот и нет… даже не дает загрузить — жаль.

И хотелось бы видеть что эти за «более ста типов документов»! Где перечень поддерживаемых форматов?

Сервис довольно интересный — документы можно читать там, где есть интернет и браузер с flash player. Только вот не везде есть flash player. И очень хочется, что бы были мелкие недостатки — не нужны аватары пользователей, они занимают слишком много полезного пространства. И всетаки популярные форматы в большинстве случаев можно просмотреть и с помощью софта, а вот какой нибудь документ формата семейства ODF или djvu хотелось бы иметь возможность просмотреть в нормальном виде, а не в расползающейся верстке.

Собираем ядро 2.6.34 с патчем bfs в Debian Squeeze

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

  • Переходим в  нужную директорию cd /usr/src/
  • Качаем исходники wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
  • Распаковываем их tar xvjf linux-2.6.34.tar.bz2
  • Переходим в папку с исходниками cd linux-2.6.34
  • Качаем патч bfs к ядру с сайта разработчика wget http://ck.kolivas.org/patches/bfs/2.6.34-sched-bfs-318.patch
  • Патчим ядро patch -p1 < 2.6.34-sched-bfs-318.patch
  • Устанавливаем нужные пакеты для сборки ядра apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
  • Теперь генерируем новую конфигурацию ядра на основе существующей cp /boot/config-`uname -r` ./.config
  • Конфигурируем ядро make menuconfig
  • Обязательно изменяем настройки (остальное по вкусу)

Processor type and features -> Timer frequency устанавливаем в 1000Hz
Processor type and features -> Tickless System (Dynamic Ticks) отключаем
Processor type and features -> Preemption Model -> Preemptible kernel (Low latency desktop)

  • Затем make-kpkg clean
  • И тут маленький изворот отличающий от других инструкций gedit ./Documentation/lguest/Makefile и приводим к виду:
  • # This creates the demonstration utility «lguest» which runs a Linux guest.
    CFLAGS:=-m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE

    all:

    clean:
    rm -f lguest

  • Ну и собираем ядро и заголовочные файлы fakeroot make-kpkg —initrd —append-to-version=-bfs_my kernel_image kernel_headers
  • На этапе формирования пакетов оно ругнется и вывалится с ошибкой на имя сборки, тогда делаем: cp include/generated/utsrelease.h include/linux/ и заново запускаем fakeroot make-kpkg —initrd —append-to-version=-bfs_my kernel_image kernel_headers
  • Если все прошло успешно то в /usr/src/ появится 2 новых пакета — установите их dpkg -i linux-*.deb

Эта инструкция составлена по кучи других и что я брал и где я уже не помню, т.к. пишу уже с собранного ядра по история из терминала. Удачной вам ядерной физики 🙂

Собираем ядро на Debian Squeeze с BFS

Недавно тут захотелось свежих программ и было решено поставить Debian Squeeze вместо Lenny. Сказано — сделано. Только вот  ядро меня не устраивало — почему то ReiserFS не хотел монтироваться, скорость работы (мои сборки были с BFS и переход с него обратно очень ощутим). Обычно я пользуюсь вот этим и этим руководством, но по ним у меня ничего не получалось. Не создавался initrd, и ядрышко (linux-2.6.32.9) выдавало kernel panic not syncing vfs unable to mount root fs on unknown-block. По этому запросу выдавало много что, но я предположил что налажали в скриптах и оказался прав. Вот бага.

Решение простое — берем пакет initramfs-tools из репазитраия Lenny, а заодно и kernel-package. И еще я поставил grub от lenny — мне просто не нравится новая версия, но стоит описать так как это может на что-нибудь повлиять. Правим конфиг /etc/apt/preferences что бы наши усилия не уничтожились первым обновлением

Package: kernel-package
Pin: version 11.0*
Pin-Priority: 989

Package: grub-common
Pin: version 1.96*
Pin-Priority: 989

Package: grub
Pin: version 0.97-47*
Pin-Priority: 989

Package: initramfs-tools
Pin: version 0.92*
Pin-Priority: 989

Конечно это не true но пофиг. Искать баги в скриптах, или пытаться разобраться в коментах к багу мне не хотелось. Казалось вот оно счастье, но нет собранное ядро теперь нам будет говорить (а вот это не у всех и не всегда) waint root file system. И все дело в кривом конфиге идущим с текущим ядром. Не делайте cp /boot/config-`uname -r` /usr/src/linux/.config Посидите вечерком над make menuconfig или make gconfig (по вкусу) и составьте нормальный конфиг для себя, дальше его можно будет перетаскивать из ядра в ядро через oldconfig.

Описывать все по шагам не буду, все описано в статьях по 2 верхним ссылкам и нечего плодить сущности.

Работает — сломай что бы не скучно было или ставим debian squeeze

Стоял у меня Debian Lenny еще с того времени, когда он был еще testing. Все было прекрасно кроме устаревших пакетов. И потянуло меня обновится на Debian Squeeze.

Скачал образ, записал на диск (да ставил заново ибо слишком много накопилось не нужных программ и библиотек). Вставил диск и понеслось. Графического исталятора нет (ну и фиг с ним, всеравно не пользуюсь). При разметке дисков нельзя было работать с ReiserFS (а у меня в нем /home  и / я то же в нем обычно держу), ладно думаю попробую ext4 — фиг. Система просто не ставится если корень в ext4. Ладно выбрал ext3. Поставил. По умолчанию ставится grub2 — страшный и не понятный и документации мало или практически нет. Разделы с ReiserFS удалось подцепить только на ядре 2.6.30. С ядром по умолчанию 2.6.32 ReiserFS не хочет дружить.

NetworkManager конечно тут же определили мою локалку и настроил ее сам, но вот pppoe соединение я так и не смог в нем поднять. Поэтому он был удален, а сеть по старинке была настроена через /etc/network/interfaces   и там все не гладко прошло. Раньше у меня up route add было в конце конфига и оно работало теперь надо это писать после каждого интерфейса по отдельности (ну или я не так понял, но хотя бы работает).

И самое не понятное — не собирает initrd у нового ядра (делал всегда по инструкции). Вот переход с обычного ядра на свое с BFS особо не заметен, нов от обратно…. кажется все таким мееедлееенным.

Вообщем пока Squeeze сырой.

Делаем автоматический бекап базы keepassx на флешку в linux

Все мои пароли хранятся и генерируются с помощью программы KeePassX. По понятным причинам хочется, что бы делался бекап и причем автоматически. Раньше я решал эту проблему dropbox, но ситуация поменялась и я больше не мог делать online синхронизацию. Пришлось носить portable версию KeePassX на флешке, а постоянный бекап просто забываешь. Это меня и подвигло к автоматизации этого процесса.

Есть 2 способа — расковырять скрипты gnome-volume-manager но он просто непонятен (а я как бы завязал и на трезвую голову в таком не разобраться) или через pamusb.


Pluggable Authentication Modules (PAM) — Подключаемые Модули Аутентификации — библиотека, предоставляющая API для управления методами аутентификации в Unix-подобных операционных системах. Позволяет программам, которые используют аутентификацию, быть независимыми от схемы аутентификации.

Собственное, как происходит аутентификация и настройка модуля можно прочитать здесь или тут. Добавляем нужную нам флешку и пользователя через pamusb-conf и правим конфиг /etc/pamusb.conf

Во первых:
Должен присутсвовать и должен быть раскоментирован (в debain он по умолчания есть но закомментирован).

<service id=»pamusb-agent»>
<option name=»one_time_pad»>false</option>
</service>

Во вторых:

keepassx:
<user id=»alex»>
<device>myflash</device>
<agent event=»unlock»>cp -u /home/alex/key/pass.kdb /media/MyBigFlash/KeePassX/</agent>
</user>

Надо добавить в секцию

userid — пользователь, которого мы добавили в pamusb-conf.
devise — имя флешки, которое мы задали определенной флешки в pamusb-conf
agent event=»unlock» — выполнить команду при подключении флешки.
После чего запустить pamusb-agent для проверки правильности написания конфига. После удачных опытов добавляем pamusb-agent —daemon в автозагрузку.
Теперь нам достаточно лишь вставить флешку в ПК, что на нее залилась более новая бд KeePassX.
p.s. Флешку надо отмонтировать, иначе база может не обновится, это связано с тем что обычно в linux информация не сразу заливается на флешку.

640Кб должно быть достаточно для каждого или делаем меленькими отсканенные методички

Цитату в заголовке приписываю Билл Гейтсу, он или не он ее произнес — не важно, речь пойдет не о том. Частенько нам приходится сканировать документы, книги, а нам студентам методички (все дальнейшее описание будет вестись на основе моего опыта, полученного на сканирование методичек). Хорошо отсканенную методичку, иногда, полезно при себе иметь, если и есть бумажная версия (методичку можно забыть, не взять — зачем тащить из-за методички пакет/сумку если только методичка сегодня будет и нужна). Хорошо отсканенная методичка это не та, которая будет черт знает сколько весить, а та которой будет удобно пользоваться.

И так мы имеет обычный ПК с Debian Lenny на борту, сканер canon lide 25 ну и набор ПО (gscan2pdf, scantailor, Djvu Solo 3.1 в wine ), ну и собственно методичку по эконометрике.

Сканер настроен поэтому приступим сразу к сканированию. Запускаем программу gscan2pdf и сканируем методичку в разворот. Первые страницы в режиме «оттенки серого», т.к. обложка напечатана на цветной бумаге, остальные в «штриховая графика» с разрешением 300 dpi. (разрешение должно быть одним на весь документ или потом замучаетесь!) Закончив сканирование рекомендую развернуть страницы в альбомную ориентацию и сохранить результат в tiff в отдельную папку. Получился файл размером 22 Мб — многовато для методички, да и читать такое трудновато

Надо обработать! Конечно можно FineReader-ом (лезть под винду) или вручную. Но была найдена замечательная программа scantailor . Открываем, подгружаем наш файл tiff. Можно исправить ориентацию (но мы это уже сделали) поэтому начинаем разрезку. Запускаем ее в автоматическом режиме (не правильное исправим потом).
 
 
Бегло просматриваем и исправляем вручную, где программа накосячила.  Следующий пунк компенсация наклона — нужен в основном для книг или для криворуких 🙂 Нам не надо — пропускаем.

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

После исправления косяков, а их было мало, переходим к следующему этапу. В «Макете страниц» нам надо задать макет страниц — логично 🙂 Определяем поля, выравниваем страницы по размеру, естественно в автоматическом режиме. И мы в финале!
 
 
На последнем этапе «Вывод» задаем dpi у нас 300. Режим -Черно-белый, удалять пятна оставим по дефолту. И запускам автоматический режим 🙂 Это самая ресурсоёмкая операция — большая нагрузка на процессор, так что запускаем и идем пить чай (хотя для методички хватило времени что б только поставить чайник).
 
В указанной для выхода получаем набор tiff пронумерованных, очищенных. Получили 39 tiff общим объемом 2,9 мб — чувствуете разницу? 
Отдельные страницы это хорошо, но нам нужно это все собрать. Основных вариантов 2 — pdf или djvu. Т.к. я за правильное использование форматов, то выбираем djvu. В интернете куча скриптом и рецептов, как собрать это все в 1 документ, но не один мне не понравился (найдете что-то удобное и гибкое для linux флаг вам в руки). Поэтому я установи Djvu Solo 3.1 в wine.
Добавляем все нужные нам изображения (в начале или в конце может быть пустое изображения от несуществующей половинки обложки). 

И завершающий этап — жмем FileEncode As  Djvu выбираем Bundled и задаем куда мы хотим сохранить и под каким названием. После подтверждения появится диалог:

Указываем разрешение (ну больше 300 явно не стоит, всеравно мы сканили с 300), можно указать 200. Указываем Bitonal (2 тоновый или русским языком говоря черно-белый) и жмем заветную кнопку OK.
В итоге получаем файл djvu, у меня размером в 392,2 КБ. Кстати, если  мы бы сжали в djvu тот первый отсканированный вариант, то объем  получился бы от 1 до 2 мб, что то же не плохо.
 
 
У нас теперь методичка, которую приятно просматривать, маленького размера в читаемом виде. Это не распознанный текст, но всеравно очень даже.
p.s. я буду рад, если моя заметка поможет сделать хоть на 1 книгу меньше, которая криво отсканена в pdf и занимающую 90 мб

автоматизация в учебе

Толпы студентов у доски с расписанием — у кого то это вызывает приступы ностальгии, у меня отвращение. Почти у каждого института есть свои сайт, где можно скачать расписание, посмотреть полезную информация. У некоторых это сделано хорошо, у некоторых плохо.
Мой институт имеет 2 сайта один так себе, другой ужасный 🙁 Главный immf.ru много полезной информации, в удобном виде, но часть информации закрыта — просят получить логин/пароль в каком то кабинете. Другой my.immf.ru страшный и ужасный — сайт студентов, лажа полная, но все открыто. Открыто и расписание (не понимаю зачем закрывать доступ к расписанию на главном), но часто забывают обновить.
Но одногрупник нашел маленькую недоработку — можно ходить по директориям http://www.immf.ru/download/  . И конечно же там в открытом виде лежит расписание http://www.immf.ru/download/Raspisanie/   в pdf файлах 🙂
Каждый раз вбивать строку в браузер и смотреть, не обновилось ли расписание, мне лень, решил написать скрипт (сначала просто он качал затем и научился уведомлять). Конечно, все будет выполнено средствами linux
Сам скриптик

#!/bin/bash
wget -N --output-file=/tmp/log_wget.txt -P /home/alex/  http://www.immf.ru/download/Raspisanie/shedule_sokr.pdf
if grep -q 'сохранён' /tmp/log_wget.txt
then perl ./jabberMS
fi

Wget мы качаем файлик расписания, если он новее чем у нас на в указанной директории и пишет лог. Дальше grep мы проверяем лог на слово сохранен (если файл не новее то этого слова там не будет). И если условие выполняется, то мы можем отправлять сообщение (файл уже у нас). Дело в том, что я нашел 2 способа программно отправить сообщения в jabber — sendxmpp и скрипт на perl. Заставить работать sendxmpp я так и не смог. Поэтому пришлось воспользоваться скриптом

#!/usr/bin/perl

use Net::XMPP;
use locale;
use utf8;
my $c=new Net::XMPP::Client();
Connect(hostname=>"наш сервер с которого отправляем");
AuthSend(
username=>"логин",
password=>"пароль",
resource=>"Perl");
my $m=new Net::XMPP::Message();
$m->SetMessage(
to=>"hardworm@jabber.ru",
from=>"hardworm@jabber.ru",
body=>"Raspisanie obnovilos");
$c->Send($m);
$c->Disconnect();

Ну и в конце скрипта написано кому, от кого ну и само сообщение. Загоняем в cron наш скрипт, допустим выполняем его каждые 3 часа.

Планируется, всетаки, заставить работать sendxmpp. Возможно, это все сделано все не красиво с программерской точки зрения, зато работает 🙂

История возникновения и развития *nix систем

 Черновой не законченный вариант выступления

UNIX — группа переносимых, многозадачных и многопользовательских операционных систем.
Первая система UNIX была разработана в 1969 г. в подразделении Bell Labs компании AT&T. С тех пор было создано большое количество различных UNIX-систем.
До этого ОС создавались индивидуально под компьютеры, ведь их были единицы, не было единых стандартов в работе «железа». IBM была монополистом на рынке больших компьютеров, а персональных и не было. Необходимость в «универсальной» ОС появилась с появлением миникомпьютеров PDP от компании DEC. Они были относительно дешевыми (университеты и предприятия могли себе их позволить), были меньше чем обычная комната, что было редкостью для компьютеров IBM, и их было несколько моделей. Были сформированы основопологающие принципы:

  • использование простых текстовых файлов для настройки и управления системой;
  • широкое применение утилит, запускаемых в командной строке;
  • взаимодействие с пользователем посредством виртуального устройства — терминала;
  • представление физических и виртуальных устройств и некоторых средств межпроцессового взаимодействия как файлов;

Но первые системы писались на Assembler и не могли быть переносимыми и программы написанные для этих ОС так же. В начале 70х годах был разработан язык программирования для Unix систем «Си». C 74 года система бесплатно распространялась среди университетов и академических учреждений. Bell Labs выпустила 7 «редакций» unix. К 78 году unix была установлена более чем на 600 машинах. Компания AT&T в 80х годах осознала ценность системы и начала выпускать коммерческие Unix. Однако уже в 78 году появилась не коммерческая, открытая система Unix  BSD созданная в институте Беркли. Дальше было создано огромное количество unix систем как открытых так и коммерческих.
В 1983 году был создан проект Ричардом Столлменом GNU (GNU is not unix) в котором разработаны множество свободных инструментов  — компиляторы, библиотека языка и т.д. но не было создано самое главное — ядро.
Ядро написал в 1991 году финский студент Линус Торвальдс. Изначально это была программа-терминал для соединения с университетским компьютером, которая переросла в ОС. Ядру требовалось окружения и инструменты, а проекту GNU ядро. По просьбе Столлмана ядро с окружением — операционная система стала называться GNULinux.
17 сентября 1991 года появилась 0.01 версия linux. 14 марта 1994 linux 2.0. 4 января 2001 — Linux версии 2.4.0. 8 декабря 2003 — Linux версии 2.6.0

сборка ядра 2.6.31

Вышло очередное ядро linux 2.6.31 и было сказано что:
Проведена работа по улучшению отзывчивости системы при выполнении типовых десктоп операций в условиях нехватки оперативной памяти. Удалось добиться уменьшения на 50% числа запросов, попадающих на вытесненные в раздел подкачки страницы памяти, и на 1/3 уменьшить число обращений к свопу (pswpin), что продемонстрировало в тестах увеличение интерактивности при работе с десктопом примерно в два раза;
Звучит очень привлекательно с моими то 512 мб ОЗУ. Ринулся качать, а потом и смотреть как собирать ядро. Нашел вот это — подробно описано что требуется и как собирать ядро на Debian Lenny. Чуть полазив по конфигу начал компилировать но …. облом
cc -m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE lguest.c -o lguest
lguest.c:21:25: error: sys/eventfd.h: No such file or directory
lguest.c: In function ‘create_thread’:
lguest.c:1021: warning: implicit declaration of function ‘eventfd’
make: *** [lguest] Error 1

Пару часов часов гуглинья привели к на эту страницу .  Проделав нехитрое действие, а именно в катологе исходных текстов ядра отредактировать файл Documentation/lguest/Makefile  заменив строчку all: lguest  на all:
Дальше все отлично собралось и установилось. Система действительно отзывчивее да и в swap лезет меньше. Кстати сократилось и время загрузки системы, возможно из-за того что много лишнего выбросил, а может и не из-за этого.
p.s. А через 2 дня я купил 2 Gb оперативной памяти и пришлось пересобирать ядро из-за своих оптимизаций, при которых система видела меньше 1 Gb

учёба или поиск альтернатив

Долго не писал в блог т.к. был выбит ремонтом и juick из строя 🙁
Чем дальше в лес, тем …. больше понимаю что мне нравится степь. В общем, все больше разочаровываюсь в специальности «Прикладная информатика в экономике». Информатики почти не видно среди этой …. (слов матерных не хватает) экономики. Декан насается со своими идиотскими коллективами — кому нах нужен патриотический кружок? Дал бы хоть возможность АСУчить деканат, пусть даже работа в стол, но хотя б потренировались. Уже ничего с лета не писал 🙁 Надо будет что-нибудь попробовать написать.
С преподавателем решили возобновить семинары по linux. Вот собственно приблизительные темы. Сами видите что это ужас. Надо будет расписать поконкретнее. Как будет известно дата и время сообщу. Уж извините, всех подряд приглашать не буду — отвечаю за всех я.
А и кстати что-то не вижу вакансий эникеев… 🙁 Уже совсем что ли не требуются? А то я хочу попробовать себя в данной области. Нужна работа чисто для опыта.