LINUX.ORG.RU

Сообщения kondor

 

shell: раскрыть escaped символы

Форум — Development

Есть shell-скрипт в котором есть строчка:

su -l USERNAME -c "$@"

А аргументах, передаваемых скрипту, есть escaped unicode-символы, например: \303\272\ (символ ú). А $@ может выглядить примерно следующим образом:

sleep 20; /usr/bin/some-app -rlti --modify-window=1 --password-file /tmp/passwd user@host.local::traysh/Documents/M\303\272sicas /media/

Таким образом они (символы) не расскрываются и программа вызывается с неверными аргументами.

Как минимальными усилиями сделать unescape этих символов? Про $'\303\272\' известно, но как применить эти знания в данном контексте — непонятно. На целевой системе — busybox со всеми вытекающими.

Спасибо.

kondor
()

JavaScript: как создать поддерево элементов по строке?

Форум — Web-development

Господа, как в JS сделать примерно следующее?

var data = "<ul><li>Item</li></ul>";

document.getElementById("target-element").appendChild(document.create_???_Node(data));

Чтобы добавленная строка data добавлялась в качестве поддерева:

target-element
  |
  *--* ul
     |
     *--* li
         |
         *--* Item

createTextNode() не подходит, т.к. вставляет строку as is. Может есть стандартные средства? Или хотя бы сторонняя библиотека?

Спасибо.

P.S. В JS не разбираюсь, но возникла задача, которую надо решить с использованием оного.

kondor
()

Syntext Serna Free теперь OpenSource!

Новости — Open Source
Группа Open Source

И так этот момент настал! Исходный код Syntext Serna Free открыт под лицензией GNU GPL 3.0, что делает Serna по-настоящему свободным программным обеспечением.

На данный момент исходники доступны для скачивания в виде tar.bz2 архива с инструкциями по сборке. В течение некоторого времени ожидается публичный репозиторий. Также вместе с анонсом был запущен список рассылки serna-developers@syntext.com для желающих принять участие в разработки Serna.

Syntext Serna — это кроссплатформенный WYSIWYG XML-редактор для создания и сопровождения XML документации в таких форматах, как Docbook и DITA. Написан с использованием библиотеки Qt4 и имеет в своем распоряжении SDK для расширения функционала с помощью Python и C++.

>>> Подробности

 opensource xml editor, serna free, ,

kondor
()

Syntext Serna станет OpenSource

Новости — Open Source
Группа Open Source

Не так уж и давно была новость, что у Syntext Serna появилась бесплатная (Free Edition) версия. Но разработчики программы решили не останавливаться на достигнутом и сделали очередной шаг, преподнеся своим пользователям настоящий сюрприз — редактор в течении месяца станет OpenSource.

Поэтому в преддверии открытия исходников, разработчики просят пользователей поделиться своими идеями, мыслями и советами о том, как лучше организовать community environment: как для пользователей, так и для авторов патчей. Особо благодарным и заинтересованным лицам предлагается простимулировать весь этот процесс с помощью взносов (donations).

Syntext Serna — это кроссплатформенный WYSIWYG XML-редактор для создания и сопровождения XML документации в таких форматах, как Docbook и DITA. Написан с использованием библиотеки Qt4 и имеет в своем распоряжении SDK для расширения функционала с помощью Python и C++.

>>> Подробности

 dita, , ,

kondor
()

oFono — новая платформа мобильной телефонии

Новости — Linux General
Группа Linux General

Intel и Nokia представили широкой публике новый совместный проект. oFono — открытая платформа для создания мобильной GSM/UTMS телефонии, позволяющая строить на её основе приложения организации телефонной связи.

oFono распространяется под лицензией GNU GPLv2, и предоставляет разработчикам высокоуровневое D-BUS API для создания телекоммуникационных приложений под любой лицензией. Также одной из интересных особенностей новой платформы является возможность её расширения с помощью низкоуровневого plug-in API, который позволяет производить интеграцию не только с существующими OpenSource решениями, но и со сторонними закрытыми разработками. Plugin API основывается на открытых стандартах, в том числе, и на спецификации 3GPP TS 27.007 «AT command set for User Equipment (UE)».

>>> Подробности

 , , ,

kondor
()

Истории успеха проприетарных продуктов?

Форум — Talks

Что-то мне тут любопытно стало: кто знает какие программные продукты, изначально разрабатывавшиеся как проприетарные, которые через какое-то время стали OpenSource и при этом остались вполне успешными и не ушли в небытие?

На ум приходит только VirtualBox, но наверняка есть и другие. Какие?

kondor
()

python && tk: как правильно упаковывать виджеты

Форум — Development

Решил поиграться с Python + Tk, но что-то буксую на правильной упаковке виджетов. Код ниже.

После запуска приложение выглядит так. Что сразу анноит:

  1. Центрирование Label+Entry происходит по вертикали. Хочу чтобы каждая пара Label+Entry была «прижата» к верху и чтобы между парами не было таких огромных пустых пространств.
  2. При растягивании окна получается вот такая фигня. Как сделать хотя бы «резиновую» упаковку, чтобы размеры виджетов также увеличивались пропорционально (а-ля Qt, при помещении в layout'ы) и не было этих некрасивых пустых пробелов до границ окна?
  3. При уменьшении размеров окна получается вот такое. Как запретить, чтобы виджеты «не терялись» при ресайзе, кроме как делать fixed size окна?

Продолжаю читать документацию по Tkinter, буду благодарен если не только ткнёте носом в ошибку, но еще и объясните немного :). Спасибо.

#!/usr/bin/env python

import Tkinter as Tk

def main():
    root = Tk.Tk()
    root.title("Python::Tk test")

    fr1 = Tk.Frame(root)
    l1 = Tk.Label(fr1, text = "Label 1")
    e1 = Tk.Entry(fr1)
    l1.pack(side = Tk.LEFT)
    e1.pack(side = Tk.LEFT)
    fr1.grid(row = 0, column = 0, columnspan = 2, padx = 10)

    fr2 = Tk.Frame(root)
    l2 = Tk.Label(fr2, text = "Label 2")
    e2 = Tk.Entry(fr2)
    l2.pack(side = Tk.LEFT)
    e2.pack(side = Tk.LEFT)
    fr2.grid(row = 1, column = 0, columnspan = 2, padx = 10)

    fr3 = Tk.Frame(root)
    l3 = Tk.Label(fr3, text = "Label 3")
    e3 = Tk.Entry(fr3)
    l3.pack(side = Tk.LEFT)
    e3.pack(side = Tk.LEFT)
    fr3.grid(row = 2, column = 0, columnspan = 2, padx = 10)

    quit = Tk.Button(root, text = "Quit")
    quit.grid(row = 5, column = 0, sticky = Tk.W + Tk.S)

    blah = Tk.Button(root, text = "Blah!")
    blah.grid(row = 5, column = 2, sticky = Tk.E + Tk.S)

    canvas = Tk.Canvas(root, width = 500, height = 500, bg = "white")
    canvas.grid(row = 0, column = 3, columnspan = 4, rowspan = 4)
    
    root.mainloop()

if "__main__" == __name__:
    main()
kondor
()

Syntext Serna 4.1 — WYSIWYG XML редактор

Новости — Проприетарное ПО
Группа Проприетарное ПО

Недавно, а именно 12 марта, вышла новая версия визуального кросс-платформенного WYSIWYG XML-редактора Syntext Serna.

Преимущества и отличительные особенности:

  • Возможность создания контента намного быстрее, чем в традиционных редакторах (vim, emacs etc.).
  • Целостное представление документа, составленного из фрагментов с помощью external/internal entity, XInclude-фрагментов и функции XSLT document().
  • Встроенная поддержка основных стандартов документации XML, таких как DocBook, DITA, TEI, NITF.

Из функциональных особенностей можно выделить:

  • Валидацию «на лету» с помощью XML Schema.
  • Возможность быстрого создания расширений и интеграции с помощью языков Python, С++ и настраиваемого интерфейса пользователя.
  • Создание HTML и PDF практически одним нажатием кнопки.
  • Кросс-платформенность: Linux, Mac OS X, Sparc Solaris 8, MS Windows (2000/XP/Vista). Написан с использованием любимого многими Qt4.

Редактор является проприетарным. Раньше была доступна только trial-версия, однако с недавнего времени появилась вполне себе самодостаточная и функциональная бесплатная (freeware) версия. Для Linux доступны .tar.gz и .rpm-пакеты.

Screenshots

Release Notes

>>> Подробности

 ,

kondor
()

Как «расшарить» pulseaudio с chroot?

Форум — General

Есть хостовая машина с Ubuntu с работающим pulseaudio. На ней в chroot запущена еще одна инсталляция с Ubuntu, в которой крутится некая программа. Этой самой программе нужен доступ к звуковой подсистеме машины для создания неких звуковых уведомлений, однако подсистема часто используется хостом (через pulseaudio), из-за чего программа весело сообщает о "sound output error".

Как можно сделать, что бы вся работа со звуком в chroot шла через хостовый pulseaudio? Сама программа позволяет выбирать устройства вывода. Или это принципиально невозможно? Какие еще есть альтернативы?

Спасибо.

kondor
()

RMS и EULA

Форум — Talks

Интервью RMS журналу PCA

I received an EeePC as a gift, but I could not run it because my conscience will not let me agree to the EULA. Finally, I asked someone to install a free GNU/Linux distro so the machine could be used.

Все-таки, RMS бесподобен!

kondor
()

Apache, 304

Форум — Admin

Есть примитивный репозиторий .deb пакетов, состоящий собственно из Packages.gz, Packages.bz2 и самих файлов.

Когда скачиваешь Packages.* напрямую, например, с помощью wget/curl, Apache отдает файл со статусом 200. Когда GET делает 'Debian APT-HTTP' файл отдается со статусом 304 (Not Modified) — и соответственно, удаленный клиент не знат, что есть обновления.

Что быстрее всего и как в данном случае можно поправить: репозиторий или настройки сервера (.htaccess), что бы отдавался честный 200, ибо файл действительно изменился? Спасибо.

На ум приходит пока w/a в виде cgi-скрипта, который будет подставлять свои хидеры и отдавать сам файл.

kondor
()

Не работает hibernate

Форум — General

Имеется: Ubuntu 8.10, lvm

Хочу сделать encrypted swap для машинки (/home уже зашифрован), для чего сделал следующее:

Сделал том на LVM, зашифровал его (luksFormat), открыл, сделал mkswap, закрыл и обновил файлы:

/etc/crypttab:

homevolume  /dev/sys-vol/home    none   luks,retry=3
swapvolume  /dev/sys-vol/swap    none   luks,retry=3,swap

/etc/fstab:

...
/dev/mapper/swapvolume   none  swap  sw  0  0

Ну и на всякий случай сделал:

update-initramfs -k all -c; reboot

При загрузке все Ok — спрашивает пароли. При попытке сделать hibernate, пишет в консоль:

[ 1234.5678 ] PM: Cannon find swap device, try swapon -a

и возвращает в гномовскую сессию. Что я тут не докрутил, что бы работал hibernate на зашифрованный swap?

mount | grep swap | wc -l возвращает 0, /dev/mapper/swapvolume существует.

Спасибо.

P.S. До этого, на незашифрованном swap, hibernate работал «на ура».

kondor
()

GtkTreeView/C: как расположить столбцы?

Форум — Development

Есть GtkTreeView с GtkListStore в качестве модели. Состоит из трех столбцов с соответствующими renderer'ами: GtkCellRendererText, GtkCellRendererPixbuf, GtkCellRendererPixbuf.

+-------+----+----+
| text | p1 | p2 |
+-------+----+----+

Как сделать, что бы крайние два столбца c GtkCellRendererPixbuf были выравнены по правую сторону (прижаты к правой стороне), а все остальное пространство было занято столбцом с GtkCellRendererText с выравниванием по левой стороне?

Столбцы добавляются с помощью gtk_tree_view_insert_column_with_data_func().

Спасибо.

>>>

kondor
()

Еще один IM

Форум — Talks

cut-here >>>

http://habrahabr.ru/blogs/im/42639/#habracut

MDC – мультипротокольный клиент обмена сообщениями с поддержкой операционных систем Windows, Linux, MacOS X и протоколов ICQ, Mail.Agent, Jabber, AOL

# Хранение истории переписки на сервере;
# Переносимость;
# Поддержка основных протоколов обмена сообщениями. Сейчас MDC поддерживает такие протоколы, как ICQ, AOL, Mail.Agent, Jabber (плюс Gtalk и Я.Online). В ближайшее время бета-версия MDC выйдет с поддержкой протокола MSN.
# Объединение контактов (метаконтакты). Это ещё одна полезная фишка, которая позволяет объединять контакты одного и того же человека из разных систем обмена сообщениями, что позволяет как минимум не задуматься о том, каким протоколом пользуется Ваш собеседник.

<<< cut-here

>>>

kondor
()

Gtk/C: как расположить тулбары?

Форум — Development

Привет,

Делаю три, рядом расположенных, toolbar'а:

GtkWidget* main_vbox = gtk_vbox_new(FALSE, 0);
GtkWidget* toolbar_hbox = gtk_hbox_new(FALSE, 0); // HBox будет "держать" данные тулбары
...
// HPaned --, основная, рабочая зона программы
gtk_box_pack_start(GTK_BOX(main_vbox), hpaned, TRUE, TRUE, 0);

// Сами тулбары, собственно
gtk_box_pack_end(GTK_BOX(main_vbox), toolbar_hbox, FALSE, TRUE, 0);

// First
GtkWidget* toolbar1 = gtk_toolbar_new();
gtk_box_pack_start(GTK_BOX(toolbar_hbox), toolbar1, TRUE, TRUE, 0);

// Second
GtkWidget* toolbar2 = gtk_toolbar_new();
gtk_box_pack_start(GTK_BOX(toolbar_hbox), toolbar2, TRUE, TRUE, 0);

// Third
GtkWidget* toolbar3 = gtk_toolbar_new();
gtk_box_pack_end(GTK_BOX(toolbar_hbox), toolbar3, TRUE, TRUE, 0);

В итоге получаю то, что изображенно на http://xs232.xs.to/xs232/08420/actual394.png. Надо, что бы крайний тулбар был выравнен по правому краю, как на http://xs232.xs.to/xs232/08420/desired510.png.
Как это сделать?

Спасибо.

>>>

kondor
()

GtkListStore/GtkTreeModel: вопросы

Форум — Development

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

1. Как надо правильно освобождать память из под элементов в GtkListStore в конце работы? gtk_list_store_clear()? Встретил код, где итеративно с помощью gtk_tree_model_get() берутся элементы и им делается g_free() -- но, насколько я понимаю, удаляются только копии элементов, а не сами элементы.

2. Что происходит с предыдущим элементом в GtkListStore, когда я делаю gtk_tree_model_set() по существующему итератору? Ведь память из под него не освобождается? Как правильно удалить предыдующий элемент в модели перед тем как задать новый на его место?

Нужно для подобного, что бы избежать утечек памяти:

GtkTreeIter iter;
struct MyData* data;
...
// Get item
gtk_tree_model_get(model, &iter, 0, &data, -1);

// set new name
g_free(data->name);
data->name = generate_name();

// Update item
gtk_tree_model_set(model, &iter, 0, data, -1);

free_my_struct(data);

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

Спасибо.

>>>

kondor
()

GtkTreeSelection: выделить строку

Форум — Development

Меняю строки в моделе местами:

     next_iter = gtk_tree_iter_copy(&current_iter);
     gtk_tree_model_iter_next(model, next_iter);
 
     gtk_list_store_swap(GTK_LIST_STORE(model), &current_iter, next_iter);

И хочу, что бы выделение перемещалось вместе с перемещенной на 
позицию вниз строкой.

GtkTreeSelection* selection = gtk_tree_view_get_selection(
                                       GTK_TREE_VIEW(tree_view));
gtk_tree_selection_select_iter(selection, next_iter);

Но проблема в том, что выделение как оставалось на одном месте,
так и остается. Вместо next_iter пробовал &current_iter --
но результат один и тот же. Что я делаю не так?

Спасибо.

P.S. Данные действия производятся в обработчике сигнала 'activate' 
наследника GtkCellRendererPixbuf.

>>>

kondor
()

GtkTreeIter: узнать о предыдущем и следующем элементах

Форум — Development

Есть GtkTreeCellDataFunc. Внутри ее доступны: GtkTreeViewColumn, GtkCellRenderer, GtkTreeModel, GtkTreeter. Как правильно узнать, имеются ли у текущего элемента prev и next sibling элементы?

Это продолжение вопроса; нужно для того, чтобы правильно расставить управляющие pixbuf'ы во View для первого и крайнего элементов соответственно.

Пока удалось только найти gtk_tree_model_iter_next(). Но у этого варианта отсутствует парная _prev() функция + выглядит данный подход как-то криво.

Спасибо.

>>>

kondor
()

GtkTreeView: как сделать следующий View наиболее правильно?

Форум — Development

Надо сделать View вида:

+--------+--------+-----+
| data11 | data12 |  ↓  |
+--------+--------+-----+
| data21 | data22 | ↑ ↓ |
+--------+--------+-----+
| data31 | data32 | ↑   |
+--------+--------+-----+

где:
 data* -- значения, берущиеся из модели
 ↑ и ↓ -- управляющие Pixbuf'ы. При клике на один из них строка 
соответственно перемещается на уровень выше или ниже соответственно.

Как наиболее правильно представить и реализовать эти arrows связанные с GtkTree?

Пока придумал, что под каждую из стрелок сделать свой GtkCellRendererPixbuf.
Но есть мысль, что такой подход, возможно, крив/неправилен с точки 
зрения построения UI в Gtk. Плюс, возможно этот элемент UI будет 
выглядеть внешне не особо красиво. 

Спасибо.

>>>

kondor
()

Подскажите железку для домашнего сервера

Форум — Talks

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

Надо: вынести функционал сервера (webserver, torrent, e-donkey) в отдельную железку -- максимально маленькую, тихую, беспроблемную и дешевую :); железка должна позволять поставить полноценный линукс, с которым можно вытворять что угодно. Подключение к сети: ethernet.

Мысли: купить б/у eee pc с разбитым дисплеем, завернуть винты в usb-боксы и подключить к eee pc. Единственный вопрос: обеспечить корректное выключение системы при потери электричества.

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

>>>

kondor
()

RSS подписка на новые темы