LINUX.ORG.RU

Сообщения ghostmansd

 

Ноутбук в лучших традициях Thinkpad

Добрый вечер.

Хотелось бы услышать мнение и советы знающих людей, какой ноутбук можно было бы выбрать. На работе пользуюсь Thinkpad T420, он устраивает меня всем, кроме габаритов. В свое время (года два-три назад) с нескрываемой алчностью поглядывал на Thinkpad X220, но, увы, сейчас их не выпускают, а eBay никогда не пользовался и, откровенно говоря, побаиваюсь. Хотелось бы по комфортности что-то подобное.

Из критериев интересуют в первую очередь производительность, цена и легкость; экран, конечно, тоже было бы неплохо чуть более современный, чем у того же T420, но, впрочем, без этого готов прожить. Идеальный вариант — ультрабук 12-14 дюймов, производительный, но не слишком хлипкий (Ideapad U310 прожил откровенно мало); очень хотелось бы уложиться в 30 тысяч, можно чуть дороже. Какая-нибудь удобная док-станция (вроде той, что есть на T420) будет жирным плюсом. Lenovo Yoga не вдохновляет, ASUS Zenbook UX301 (кажется, так) стоил слишком невменяемых денег год назад, когда я присматривался к нему.

Заранее большое спасибо!

 , ,

ghostmansd
()

Структура приложения для всех пользователей

Добрый вечер!

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

Что требуется: все функции модуля должны быть доступны внутри Python, скрипт должен быть доступен для запуска всем. Также желательно gnulib положить в такое место, чтобы без root-доступа иметь возможность обновить файлы через git (не обязательно это делать вручную, могу и в скрипт добавить функцию).

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

Заранее большое спасибо!

ghostmansd
()

kde не запускается сразу после логина

Всем доброго времени суток.

Нуждаюсь в вашей помощи. Вчера поставил gentoo, все работает, кроме kde. При загрузке появляется стандартное кдешное окно для выбора пользователя и ввода пароля, однако при выборе оного больше ничего не происходит. Поле для ввода пропадает, остается лишь фон, на этом все заканчивается и рабочий стол не грузится. При попытке перейти в консоль через Ctrl-Alt-F1 выдается черный экран с надписью «This is localhost»; при попытке убить рабочий стол при помощи Ctrl-Alt-Backspace не происходит ничего. Папку ~/.kde удалил, пользователь состоит в группе video, нового пользователя пробовал создать — итог абсолютно такой же. Не сталкивались ли вы с такой проблемой? Подскажите, пожалуйста, где может быть собака зарыта. Заранее большое спасибо! Очень хотелось бы без перекомпиляции, если возможно, т.к. компиляция kde — это настоящая пытка.

 ,

ghostmansd
()

ядро компилируется не под ту архитектуру

Здравствуйте!

Сразу хочу извиниться, если вопрос покажется глупым, т.к. пока не искушен в таких вещах, как компиляция ядра. Описываю вкратце ситуацию: имеется живой диск Gentoo последней стабильной версии, ядро, полученное при помощи emerge gentoo-source. Нужные вещи в menuconfig вроде включил (для графики, сети и wi-fi). Однако ядро собирается почему-то под x86, хотя uname говорит, что я сижу, как и положено, на x86_64. Может, надо какие-то флаги добавить в USE? Тип архитектуры в menuconfig — Generic x86_64. Подскажите, пожалуйста, как решить этот вопрос.

 , , ,

ghostmansd
()

Бинарный PBM/PGM/PPM

Добрый вечер. Сегодня потребовалось разобраться со структурой файлов PBM/PGM/PPM (собирательно — PNM). Выяснил, что существует два типа PNM: текстовые (plain) и бинарные (raw). С текстовым PBM/PGM разобрался, получить цвета как массив чисел уже могу, но не могу понять структуру бинарного PBM. Не могли бы вы подсказать, где там собака зарыта? Желательно пример на Python. Содержимое текстового (plain) PBM выглядит так:

P1
# This is a comment
5 5
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

Вот как выглядит содержимое двоичного (raw) PBM:

'P4\n# This is a comment\n5 5\n\xf8\xf8\xf8\xf8\xf8'

Вот что гласит информация из man:

A raster of Height rows, in order from top to bottom. Each row is Width bits, packed 8 to a byte, with don't care bits to fill out the last byte in the row. Each bit represents a pixel: 1 is black, 0 is white. The order of the pixels is left to right. The order of their storage within each file byte is most significant bit to least significant bit. The order of the file bytes is from the beginning of the file toward the end of the file.
A row of an image is horizontal. A column is vertical. The pixels in the image are square and contiguous.

Если честно, не понимаю, как должен выглядеть код на Python для создания/чтения двоичного PBM. Почему-то преследует подозрение, что надо как-то задействовать array или struct, но не уверен, что это подозрение верно. Не могли бы вы подсказать, каков принцип создания/чтения этих двоичных файлов, желательно на Python?

Спасибо!

 netpbm,

ghostmansd
()

Посоветуйте ноутбук

Добрый вечер. Интересует ноутбук, который обладает рядом характеристик:

1. Полноценная поддержка Linux железом. Сейчас пользуюсь HP Pavilion dv6, сперва не работала видеокамера (потом вышел патч), тачпад работает почему-то нормально только под openSUSE (может, у них какие-то свои патчи; пробовал также Fedora, Ubuntu и Mint, везде результат не очень удачный).

2. Производительность.

3. Портативность.

4. Относительно долгое время работы от батареи.

5. Очень хотелось бы попользоваться USB 3.0.

Между пунктами 2 и 3 предпочту скорее пункт 2. Видеокарту, я так понимаю, нужно брать либо ATI, либо Intel. В игры не играю, разве что в совсем старые типа Героев или Deus Ex, поэтому всякие фичи не сильно нужны. Вроде встроенные видеокарты позволяют работать от батареи дольше? Встроенные видеокамеры и вещи интересуют мало. Весьма пригодился бы разве что кардридер. Ну, и USB 3.0, как и написал выше.

Желательно в районе 20-25 тысяч.

Спасибо!

 ,

ghostmansd
()

Python 2 vs Python 3

Всем привет. Возник вопрос, какая версия Python используется по умолчанию в большинстве дистрибутивов. Во всяких тырпрайзах, насколько я знаю, может использоваться хоть 2.6, у меня в openSUSE стоит 2.7.2. Поделитесь, пожалуйста, информацией по другим дистрибутивам. Обратную совместимость с третьей версией вроде как трудно соблюсти по ряду самых разных причин, но и сидеть до Апокалипсиса на второй версии не хочется. Есть ли смысл писать на Python 3? Нет, я сторонник прогресса, но стоит ли заставлять пользователя ставить Python 3?

P.S. Вот-вот должен выйти Python 2.7.3, наверное, будут использовать его?

 py3k,

ghostmansd
()

PyQt4: QtGui.QWidget.(re)setLayout

Добрый вечер. Вошел тут в состояние ступора, будучи не в силах заставить PyQt при нажатии на кнопку натягивать на виджет другой layout. Кода много, привожу лишь кусок:

self.Main_LeftWidget = QtGui.QWidget()
self.Main_RightWidget = QtGui.QWidget()

self.X_LeftLayout = QtGui.QGridLayout()
self.X_RightLayout = QtGui.QGridLayout()
### здесь код для наполнения layout'ов X

self.Y_LeftLayout = QtGui.QGridLayout()
self.Y_RightLayout = QtGui.QGridLayout()
### здесь код для наполнения layout'ов Y

# далее сигналы двух QAction связываются каждый со своим слотом
def slot_X:
  self.Main_LeftWidget.setLayout(self.X_LeftLayout)
  self.Main_RightWidget.setLayout(self.X_RightLayout)

def slot_Y:
  self.Main_LeftWidget.setLayout(self.Y_LeftLayout)
  self.Main_RightWidget.setLayout(self.Y_RightLayout)

Первое нажатие срабатывает нормально, в дальнейшем выдается ошибка:

Attempting to set QLayout "" on QWidget "", which already has a layout

Как бороться? И можно ли вообще? Спасибо большое!

ghostmansd
()

[PyQt4] Размер QGridLayout в процентах

Добрый вечер. Подскажите, пожалуйста, как установить максимальный размер QGridLayout в процентах? Примерный код:

self.gridMain = QtGui.QGridLayout()
self.gridData = QtGui.QGridLayout()
self.textWidget1 = QtGui.QTextBrowser()
self.textWidget2 = QtGui.QTextBrowser()
self.textWidget3 = QtGui.QTextBrowser()

self.gridMain.addLayout(self.gridData, 0, 0) # Добавить в левую часть еще одну сетку
self.gridMain.addWidget(self.textWidget1, 0, 1) # Добавить в правую часть textWidget1
self.gridData.addWidget(self.textWidget2, 0, 0) # Добавить в верхнюю часть слева textWidget2
self.gridData.addWidget(self.textWidget2, 1, 0) # Добавить в нижнюю часть слева textWidget3
В итоге половину главного окна занимают два виджета из левой части, половину - один из правой. Мне же нужно, чтобы на правый всегда приходилось 75% процентов экрана, а на два левых - 25%. Разумеется, это соотношение должно выполняться при любом размере экрана. Подскажите, пожалуйста, как это можно реализовать?

ghostmansd
()

Книги про сжатие изображений

Добрый вечер! Что посоветует уважаемый анонимус почитать про сжатие графики из относительно новых книг? В первую очередь интересуют форматы сжатия без потерь. Насколько я сумел понять в целом, для черно-белых изображений лучше всего подходит JBIG2, для всего прочего - LZW. Но если по второму еще можно найти кое-какую информацию, то по JBIG2 единственным источником являются исходники jbig2enc/jbig2dec и DjVu, в которых пока что разобраться не могу по той причине, что еще не вступил в тесную интимную связь с C++. Есть вроде как про JBIG2 в английской Педивикии, но она довольно трудна для понимания (по крайней мере, моего понимания): http://en.wikipedia.org/wiki/JBIG2

ghostmansd
()

[python] MIME

Добрый вечер! Есть необходимость определить тип MIME для tar.gz архива, имеющего имя, например, myfile.ext. Нужно иметь такую возможность для разных платформ (что означает невозможность провернуть вариант с использованием file myfile.ext -bi). Пробовал такой вот вариант:

import mimetypes
print(mimetypes.guess_type('myfile.ext')[0])
К сожалению, такая тема не канает: можно указать, например, myfile.pdf, и в итоге получить результат, что файл имеет тип application/pdf, а это, понятное дело, истине не соответствует. Строго говоря, для mimetypes.guess_type вообще неважно, существует ли файл: проверяется сам текст пути. Было бы здорово, если бы можно сделать это примерно так:
file = open('myfile', 'rb')
mime = waytoreadmime(file)
Стандартное приложение file все определяет корректно, но, увы, не подходит по изложенным выше причинам. Подумывал о magic number, у gzip он вроде как равен [1f 8b], но вот способа определить это я не знаю. Какие будут предложения?

 

ghostmansd
()

PyQt: автоизменение размера вложенного виджета

Добрый день! Изучаю постепенно PyQt, базовыми функциями (вроде создания разделов и подразделов меню, тулбаров, кнопок) на самом начальном уровне вроде как овладел. Ступор возник при создании виджетов внутри главного окна. Задача такова: создается объект QMainWindow с меню и панелью-статусом внизу экрана (это уже сделано), а все расстояние от строки меню до панели-статуса должно быть занято вертикальным контейнером QVBoxLayout, внутри которого помещаются виджеты QTextEdit и QPushButton. С этим вроде проблем не возникло, но есть одна весьма досадная неприятность: при изменении размера QMainWindow размер QVBoxLayout остается прежним, а мне необходимо изменять этот размер пропорционально. Документация по Qt довольно велика, честно говоря, я в ней попросту заблудился, поскольку не знаю, что именно нужно искать. Пляски вокруг .size вроде ничего не дали. Или я неправильно танцую, или нужен вообще другой танец. Подскажите, пожалуйста, как решить эту проблему? Спасибо.

ghostmansd
()

Python: простейший алгоритм шифрования

Имеется текстовый файл, который содержит два слова, например, «cake» и «lie». Последовательность слов может быть разной, например:

cakecakecakelieliecakelielielielieliecakecakecake
lielielielielielieliecakecakelielie
. Идея состоит в том, чтобы создать копию этого файла, где последовательность из слов cake кодируется как «C#», а «lie» - как «L#», где # - количество идущих подряд подобных элементов. Таким образом, указанный образец будет выглядеть примерно так:
C3L2C1L5C3
L7C2L2
Разумеется, файлы будут значительно бОльшими, нежели этот, поэтому потребуется достаточно быстрый алгоритм. Я понимаю, что в целях быстроты мне многие посоветуют написать то же самое на C, но я надеюсь, это можно реализовать довольно удачно и средствами Python. Подскажите, пожалуйста, как сделать это «по уму».

ghostmansd
()

Python: передать в функцию имя и значение переменной

Возможно ли как-то передать в функцию переменную так, чтобы передать не только значение, но и имя передаваемой переменной? Например:

var1 = 17

showNameAndMeaning(var1)

var1 = 17


Долго копался со всякими %s и %d, но здравый выход так и не пришел в голову.

ghostmansd
()

Вызов Python из bash

Вопрос, пожалуй, даст повод заподозрить во мне клинического идиота, но удержаться не мог. Не обладая навыками программирования и зная лишь совсем чуть-чуть bash и, horribile dictu, ERM, постепенно подхожу к идее, что хочу выучить Python. Для большинства вещей, тем не менее, мне хватает bash, поэтому интересует возможность не переписать кое-какие свои наработки с нуля на Python (на это мне пока не хватит знаний), но попробовать использовать некоторые более удобные вещи из Python в bash. Идея заключается в следующем: нужно передать из bash в Python некоторые переменные, провести над ними операции (например, срез строки) и вернуть их в bash для дальнейшего использования. Обратный вариант (передача из Python в bash переменных, обработка и возвращение в Python) вроде как возможен. А есть ли выход в моем случае? Большинство программ, которые я использую в скриптах, запускаются как раз из bash, и вопрос весьма актуален. К тому же, при моем уровне знания Python пока что лучше оставить основным языком bash. Заранее прошу прощения, если уровень идиотизма в сообщении показался кому-то превышающим все мыслимые нормы. :-)

ghostmansd
()

Работа с массивами

Здравствуйте, уважаемые форумчане! Нужна ваша помощь в решении одной проблемы. Есть группа файлов с именами от 0001 до x, где x кратно четырем. Необходимо переместить их в директорию /tmp в следующем порядке:

x:0001:x-1:2:x-2:3:x-3..., etc.
Наверное, их стоило бы обрабатывать как массив для удобства? Я до этого не работал с массивами, нуждаюсь в вашем совете, как бы это лучше сделать.

ghostmansd
()

Вопрос по getopts

Здравствуйте, уважаемые форумчане! Подскажите, пожалуйста, есть ли возможность использовать длинные имена опций (sc. состоящие не из одной буквы)? Например, вместо -h можно использовать --help. Огромная просьба привести исходный код. Пробовал почитать man и образец magicwand (из числа скриптов Image Magick), но вкурить не удалось. Хотелось бы пример попроще. Гугл я спрашивал, но там примеры трудные для меня. Каков, например, скрипт для распознавания опции --output и передачи значения этой опции в $output?

ghostmansd
()

Обработка изображений: что выбрать?

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

До этого имел дело только с bash (да, я знаю, это звучит жалко; с другой стороны, bash вполне гармонично уживается с imagemagick). Кто-то говорил, что есть очень хорошая библиотека по работе с изображениями в Python, однако сколько людей — столько и мнений. Хотелось бы узнать ваше мнение по данному вопросу.

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

ghostmansd
()

Вывод в zenity подключенных сканеров

Добрый вечер! Возник вопрос по утилите S.A.N.E. По команде

scanimage -L
выдается список устройств вида
device `xerox_mfp:libusb:001:002' is a SAMSUNG ORION multi-function peripheral
device `hp5590:libusb:001:003' is a scaner
Таких устройств может быть и несколько. Вводить надо то, что находится между двух разных кавычек. Можно ли как-то занести все это добро в список zenity?
zenity  --list  --radiolist \
FALSE "device1" \
FALSE "device2" \
..........
FALSE "deviceX"
Задал бы этот вопрос авторам S.A.N.E., да вот не нашел ни форума у них, ни почты.

ghostmansd
()

zenity неправильно обрабатывает переменные

Неправильно интерпретируется следующий скрипт:

action=$(zenity  --title 'Конвертировать электронный документ' \
--width '350'  --height '215' \
--list  --text '>> Исходный документ: '$input' \
>> Выходной документ: '$output'' \
--radiolist  --column ''  --column 'Доступные действия' \
TRUE 'Указать полный путь к исходному документу' \
FALSE 'Указать полный путь к выходному документу')
$input - полный путь к исходному файлу, $output - к выходному. В чем может быть дело?

ghostmansd
()

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