LINUX.ORG.RU

Сообщения askh

 

Простой способ открыть окно приложения в GNOME3

Экспериментирую с GNOME3, обнаружил, что не знаю способа открыть окно программы на текущем рабочем столе одним действием, который бы при этом не обладал тем или иным вредным побочным эффектом. Есть следующие варианты, у каждого из которых свой недостаток:

  • клик левой кнопкой мыши по значку приложения в левой панели, но если окно этой программы не открыто на текущем рабочем столе, но открыто на другом, то перекинет туда (а этот баг (иначе не назвать) успел надоесть в Unity, я из-за него там почти перестал пользоваться несколькими рабочими столами — неприятно, когда работаешь над какой-то задачей, открываешь браузер или терминал и вдруг бац — куда-то перекидывает)
  • клик средней кнопкой мыши по тому значку, но если на текущем рабочем столе окно этой программы уже открыто, то новое будет открыто на новом рабочем столе (может среди разработчиков GNOME3 есть потомок Сусанина? иначе откуда у GNOME3 стремление увести куда-то пользователя с того рабочего стола, где он хотел работать?)
  • клик правой кнопкой мыши по тому значку, и в появившемся меню выбрать пункт «Новое окно», недостаток очевиден — слишком длинно (но пока это лучший из способов, который я увидел)

Я не вижу какой-то очевидной вещи? Или может это особенность Ubuntu, и в других дистрибутивах (а может в более новой версии GNOME?) есть способ открыть новое окно программы одним действием не задумываясь о том, открыты или нет другие окна той же программы?

askh
()

Xfce, спящий режим при закрывании крышки ноутбука

Обновил Ubuntu, оценил улучшения в Unity и GNOME3, в общем, вопрос по Xfce: как сделать чтобы при закрывании крышки ноутбука он переходил в спящий режим? В разделе меню «Настройки» есть «Сеансы и запуск», там есть галочка «Запускать службы GNOME при входе в систему», если её поставить, то нужный функционал включается, но вместе с ненужным: запускается программа для речевого вывода и т.д. А сам Xfce этого не умеет? Неудобно каждый раз при завершении работы вручную отправлять ноут в спящий режим :-(

askh
()

Алгоритм RSA, должны ли простые p и q быть различными?

В Википедии есть описание алгоритма RSA: http://ru.wikipedia.org/wiki/RSA, там написано: «Выбираются два случайных простых числа p и q заданного размера (например, 1024 бита каждое).», а должны ли эти числа быть различными? Нужно написать программу, реализующую этот алгоритм, сейчас её проверяю, и обнаружил, что при разных p и q расшифрованный текст соответствует оригиналу, а при равных — не соответствует. Искать ошибку в программе или p и q действительно должны быть различными? В другом месте я нашёл указание на то, что они должны быть разными (http://sources.ru/csharp/RSACryptoPad.html): «Генерируем два различных больших нечетных простых числа, назовём их P и Q, одинакового порядка» (причём смущает, что во втором источнике оговаривается, что выбранные простые числа должны быть нечётными).

askh
()

Unity, открыть мышью окно Наутилуса или терминала на новом рабочем столе

Если на одном рабочем столе уже открыто окно программы, то, если перейти на второй рабочий стол, и оттуда кликнуть по значку этой программы на левой панели, то нас перекинет на первый рабочий стол. Но ладно, против этого есть решение — не забывать, что новое окно открывается кликом по значку правой кнопкой мыши. Однако для Наутилуса и терминала это не работает! Если кликнуть правой кнопкой по значку в левой панели, то в открывшемся меню будет пункт Домашняя папка или соответственно Терминал, по клику на котором пользователя перебрасывает на другой рабочий стол, где уже есть окно соответствующей программы. Должен же быть способ открыть окно Наутилуса на новом рабочем столе мышью кроме как перейти на тот рабочий стол, где он уже открыт, открыть там новое окно, переместить его на нужный рабочий стол и перейти туда?..

askh
()

Unity, найти нужное окно из нескольких похожих

Может чайниковский вопрос, но какого-то очевидного решения я не увидел.

Нетбук, Unity, открыты несколько документов в LibreOffice. Нужно быстро переключиться к конкретному документу или хотя бы перебрать их один за другим в поисках нужного.

В традиционном DE я бы отсортировал бы значки документов на панели задач по степени нужности и знал бы, что такой-то документ первый, такой-то второй и т.д., в крайнем случае просто кликал бы по значку каждого из окон и нашёл бы нужное.

В Unity нет панели задач. Можно дважды кликнуть по значку приложения на левой панели, тогда Unity покажет изображения каждого из окон, но на экране моего нетбука это будут четыре практически идентичных картинки — видно, что открыты несколько документов с каким-то текстом, но где среди них нужный? Существует ли в Unity возможность как-то решить эту проблему?

Пока писал, нашёл решение конкретно для LibreOffice: в меню есть пункт «Окно», которым я раньше никогда не пользовался, но теперь пригодится. Но это решение для частного случая, не во всех же программах есть функция переключения между окнами приложения.

askh
()

Unity. Переключение рабочих столов.

Как известно, в Unity, при клике по значку приложения открывается существующее окно, а не новое. При использовании нескольких рабочих столов это приводит к очень неприятному эффекту: если окно открыто на другом рабочем столе, то перекидывает туда, и нужно возвращаться и заново открывать приложение. То есть пользоваться несколькими рабочими столами стало просто невозможно (я в итоге заметил, что хотя на десктопе активно пользуюсь несколькими рабочими столами, на нетбуке от этого отучился). Есть ли способ заставить Unity в такой ситуации открывать новое окно на текущем рабочем столе? И, если нет, можно ли как-то убрать значок переключения рабочих столов? В принципе, Unity — это интерфейс для нетбуков (на большом экране с ним работать просто невозможно), а на нетбуке несколько рабочих столов можно посчитать излишней функцией (ресурсов у системы относительно мало, так зачем держать открытыми окна, которые потребуются когда-то потом? лучше наверное заново открыть). Но при этом значок переключения между рабочими столами занимает место, лучше уж использовать его для значка какой-нибудь программы. Возможно ли убрать переключатель рабочих столов?

askh
()

Dia, создание своих объектов (.shape)

Потребовалось начертить небольшую схему с элементами вроде 2И-НЕ, в Dia не нашёл подходящих элементов (плохо искал? по идее ведь часто должны требоваться...), но, на первый взгляд показалось, что сделать их самому легко. В конце письма пример, который почти работает. А «почти» потому, что после сохранения и последующей загрузки файла с такими элементами символы «&» вдруг все съехали вправо вниз... Причём некоторыми манипуляциями их можно заставить вернуться обратно. У меня что-то неправильно, или это глюк Dia? Может в создаваемых объектах нельзя использовать текст, и символы нужно рисовать?

А вот собственно пример файла .shape для элемента 2И-НЕ:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns="http://www.daa.com.au/~james/dia-shape-ns" xmlns:svg="http://www.w3.org/2000/svg">
  <name>2AND-NOT</name>
  <icon>2andnot.png</icon>
  <connections>
    <point x="0" y="1"/>
    <point x="0" y="2"/>
    <point x="4" y="1.5"/>
  </connections>
  <aspectratio type="fixed"/>
  <svg:svg>
    <svg:rect x="1" y="0" width="2" height="3"/>
    <svg:ellipse cx="3" cy="1.5" rx="0.2" ry="0.2"/>
    <svg:text x="2" y="1">&amp;amp;</svg:text>
    <svg:line x1="0" y1="1" x2="1" y2="1"/>
    <svg:line x1="0" y1="2" x2="1" y2="2"/>
    <svg:line x1="3" y1="1.5" x2="4" y2="1.5"/>
  </svg:svg>
</shape>

Dia версии 0.97.1 из Ubuntu 10.10

askh
()

pcre, можно ли получить опционально встречающиеся значения?

Есть некие фрагменты текста, которые, кроме общей обязательной части, могут содержать или не содержать строки с дополнительной информацией, то есть, к примеру, что-то такое:

заголовок
параметр 1: значение1
параметр 2: значение2

заголовок
параметр 2: значение2
параметр 3: значение3

Порядок строк постоянен, поэтому первое, что пришло в голову, это использовать конструкции вроде (?:параметр1: (\\d+))? - то есть строчка может присутствовать, и тогда нам требуется числовое значение, а может не присутствовать, тогда оно собственно и не нужно. Но такой подход не работает :-( Так нельзя?

Вот пример кода:

#include <iostream>
#include <string>
#include <pcrecpp.h>

using namespace std;
using namespace pcrecpp;

int main(int argc, char *argv[])
{
    string text = "Это тест\n"
                  "первое значение: 10\n"
                  "второе значение: 20\n"
                  ;

    RE re("Это тест\n"
          "(?:первое значение: (\\d+)\n)?"
          "(?:второе значение: (\\d+)\n)?"
          , RE_Options(PCRE_UTF8));

    int v1 = -1, v2 = -1;
    bool res = re.FullMatch(text, &v1, &v2);
    cout << res << " " << v1 << " " << v2 << endl;
    return 0;
}

Если код в таком виде, то re.FullMatch(text, &v1, &v2) возвращает true. Если в тексте закомментировать «первое значение: 10\n» или «второе значение: 20\n», то re.FullMatch(text, &v1, &v2) возвращает false (причём если закомментировать «второе значение: 20\n», то переменная v1 всё-таки меняет своё значение, но v2 - нет, ну а если закомментировать «первое значение: 10\n», то обе переменные сохраняют значение -1).

Но вот если не пытаться получить значения из скобок, то есть вместо re.FullMatch(text, &v1, &v2) написать re.FullMatch(text), то результат во всех трёх случаях - true. То есть получается, что само регулярное выражение срабатывает как нужно, дело лишь в том, что FullMatch может не хватать результатов чтобы записать в заданные переменные.

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

askh
()

Спрашивайте в магазинах

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

askh
()

Реклама Linux

Не очень давно видел на LOR идею разместить рекламу Linux, примерно как к выходу Firefox 1.0 размещали рекламу в New York Times. А если делать что-то такое на местном уровне (ролик на электронном табло, небольшая реклама в газете, баннер на сайте и т.п.), может уже есть готовые материалы для этого? И есть ли юридические тонкости, которые нужно знать при создании рекламы? Например, наверное нельзя использовать логотипы дистрибутивов? Всё-таки это чужие торговые марки... И наверное могут быть сложности если построить рекламу на противопоставлении с Windows, например если сказать, что Windows подвержена вирусам, это могут расценить как подрыв чужой деловой репутации?

askh
()

MacPro 4.1, какой дистрибутив Linux выбрать?

Есть компьютер MacPro 4.1, нужно установить на него Linux, какой дистрибутив для этого лучше подойдёт?

askh
()

send и EAGAIN

Если сокет находится в неблокирующем режиме, и после вызова send получили ошибку EAGAIN, то данные не были отправлены вообще или только частично? То есть можно ли при следующем вызове использовать другой буфер или нужно повторить вызов с тем же самым, откуда функция возьмёт недостающие данные?

askh
()

Плагин для Pidgin на Perl, уведомление пользователя

Нужно из плагина для Pidgin на Perl выдавать пользователю уведомления, которые бы закрывались по таймауту, идеальным вариантом наверное было бы использовать libnotify, но похоже модуль Desktop::Notify в моём дистрибутиве содержит ошибку (таймаут игнорируется, и выдаётся сообщение "Argument "" isn't numeric in subroutine entry at /usr/lib/perl5/Net/DBus/Binding/Iterator.pm line 445.". Можно ли выводить информационное сообщение с таймаутом средствами самого Pidgin? Purple::Notify::message вроде бы таймаута не предполагает.

askh
()

Патенты. Новая угроза.

Традиционно считается, что в России нет такой угрозы свободному программному обеспечению, как патенты. Хотя вопрос спорный, например недавно ЗАО "Лаборатория Касперского" получило патент номер 2363045, касающийся именно программного обеспечения. И ситуация может ухудшиться - в России создана организация, на первый взгляд призванная лоббировать интересы IT-отрасли, но сразу настораживает то, что во главе её (в источнике должность названа "модератор") стоит основатель Фонда патентования алгоритмов и программ. Можно предположить, что теперь идеи патентования программного обеспечения в России будут защищаться активнее, что в итоге может привести к невозможности использования и развития свободного программного обеспечения, в частности Linux, у нас в стране.
Подробности

Перемещено Shaman007 из OpenSource

askh
()

Возможно ли использовать MySQL в проектах под GPL 3?

Почитал условия лицензирования MySQL, сложилось впечатление, что её нельзя использовать в проектах, лицензируемых под GPL 3. Если я правильно понял "FOSS License Exception" (http://www.mysql.com/about/legal/licensing/foss-exception/), то там говорится, что не все свободные лицензии совместимы с GPL 2, и они разрешают использовать свою клиентскую библиотеку так же и в проектах с другими лицензиями, перечисленными в списке, но в нём нет GPL 3, а проект под этой лицензией не может содержать код под GPL 2 only. Получается, что в проекте под GPL 3 нельзя использовать MySQL?

askh
()

gtkmm: Gtk::Notebook и кнопка закрытия на закладке

В Gtk::Notebook закладка не имеет сама по себе кнопки закрытия, а как её туда добавить? Первое, что приходит в голову - вместо текстовой метки помещать туда контейнер с меткой и кнопкой. Но тогда возникает вопрос - как сделать "крестик" на кнопке? Картинкой? Но если я правильно понял документацию (http://www.gtkmm.org/docs/gtkmm-2.4/docs/reference/html/classGtk_1_1Button.ht...), картинка на кнопке может как показываться, так и нет, в зависимости от настроек. Хотя можно конечно буквой "X" сделать...

Или может есть другой способ сделать кнопку закрытия на закладках?

>>>

askh
()

Есть ли у Linux будущее в России?

Вроде бы странный вопрос, но последнее время я засомневался. Linux может стать жертвой распространения патентования в области программного обеспечения, должен стать - он невыгоден для Microsoft, и у него есть возможность начать множество патентных исков, которые сделают опасным использование Linux (не как в случае со SCO - там претензии были другого плана, по поводу чистоты кода, которую автоматически соблюдаешь когда пишешь сам, но с патентами это не срабатывает). Вероятно пока Microsoft останавливают две вещи - внимание антимонопольных органов и то, что патентная система далеко не во всех странах распространяется на программное обеспечение (а в случае патентной атаки на Linux эти страны явно откажутся её вводить). То пока ещё не самые благоприятные условия чтобы прихлопнуть Linux, но вообще это возможно, и этого стоит ожидать. Кто на месте Microsoft поступил бы иначе? И следует ожидать, что они добиваются и будут добиваться изменений в законодательстве (в том числе и российском), выгодных им, и невыгодных свободному программному обеспечению. Возможно как раз в интересах Microsoft несколько лет назад было изменено отечественное патентное законодательство - раньше там было сказано, что алгоритмы не патентуются, а потом слово "алгоритмы" оттуда исчезло.

Теоретически можно было бы добиваться защиты наших интересов, это было бы достаточно просто хотя бы потому, что в данном случае интересы государства совпадают с нашими, но мы этим не занимаемся. А вот Microsoft работает над тем, чтобы защитить свои интересы в ущерб нашим, мы знаем об этом, можем этому противостоять, но ничего не делаем. Интересно, почему?

>>>

askh
()

Linux и выборы

А за какую партию по вашему мнению лучше голосовать с точки зрения развития OpenSource и почему? Всё-таки до выборов осталось всего 2 недели, лучше проголосовать за ту партию, которая выгодна нам, чем потом возмущаться, что власть делает всё неправильно.

>>>

askh
()

Как в gtkmm сделать окно в окне?

Как при помощи gtkmm сделать окно, которое будет находиться "внутри" другого окна, то есть которое не будет выходить за его пределы и будет перемещаться вместе с ним? К примеру, как окна документов (журналов и т.д.) в 1С.

askh
()

fstream и flock

Как в C++ заблокировать файл? flock ведь ожидает в качестве первого параметра дескриптор файла, а не класс... Поискал в Интернете, не нашёл работающего решения. Где-то советовалось реализовать для чего-то собственный класс, но это странно, вроде бы блокирование файла - это очень часто используемая операция, и должен быть способ это сделать в одну строку.

askh
()

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