Конвертация djvu в epub. Чем?

Собственно весь вопрос уместился в заголовке.

Что лучше использовать?

Электронные   книги   DjVu    

401   1   17:32, 24th August, 2020


PHP. Как получить имя файла по открытому file handle

Проблема. Есть функция, которая генерирует некоторое имя файла, записывает его в базу и выполняет
return fopen($filename);

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

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

PHP    

371   4   17:31, 24th August, 2020


Проблема связи php и python через memcached?

если совершается set из php в memcache то при попытке сделать get по такому ключу из python получаю:
&gt;&gt;&gt; import sys; print('%s %s' % (sys.executable or sys.platform, sys.version))<br/>
/usr/bin/python2.6 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) <br/>
[GCC 4.4.5]<br/>
&gt;&gt;&gt; import memcache<br/>
&gt;&gt;&gt; import binascii<br/>
&gt;&gt;&gt; m=memcache.Client(['127.0.0.1:11211'], debug=0)<br/>
&gt;&gt;&gt; def php_hash(key):<br/>
... return (binascii.crc32(key) &gt;&gt; 16) & 0x7fff<br/>
... <br/>
&gt;&gt;&gt; m.get((php_hash(mfd.php_nexttime), mfd.php_nexttime))<br/>
Traceback (most recent call last):<br/>
 File &quot;&quot;, line 1, in NameError: name 'mfd' is not defined<br/>
&gt;&gt;&gt; m.get((php_hash('mfd.php_nexttime'), 'mfd.php_nexttime'))<br/>
Traceback (most recent call last):<br/>
 File &quot;&quot;, line 1, in  File &quot;/usr/lib/pymodules/python2.6/memcache.py&quot;, line 779, in get<br/>
 return self._get('get', key)<br/>
 File &quot;/usr/lib/pymodules/python2.6/memcache.py&quot;, line 766, in _get<br/>
 value = self._recv_value(server, flags, rlen)<br/>
 File &quot;/usr/lib/pymodules/python2.6/memcache.py&quot;, line 915, in _recv_value<br/>
 return val<br/>
UnboundLocalError: local variable 'val' referenced before assignment<br/>
<br/>
Устал гуглить может кто ни будь сталкивался?

PHP   Python   Memcached    

322   3   17:19, 24th August, 2020


правило mod_rewrite для перенаправления всех запросов, кроме одного конкретного пути

Я пытаюсь перенаправить все запросы к моему домену на другой домен, используя mod_rewrite в объявлении Apache 2.2 VirtualHost. Есть одно исключение - я бы хотел, чтобы все запросы к /audio -му пути не перенаправлялись.

Я написал RewriteCond и RewriteRule, чтобы сделать это, но это не совсем правильно, и я не могу понять, почему. Регулярное выражение содержит отрицательный lookhead для строки "/audio", но по какой-то причине это не соответствует. Вот такое определение:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net(?!/audio) [NC]
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]

Если я изменю RewriteCond на:

RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net/(?!audio) [NC]

(т. е. поставьте косую черту вперед вне отрицательной части lookahead), то это работает, но недостатком этого является то, что запросы к mydomain.net без косой черты trailing не будут перенаправлены.

Может ли кто-нибудь указать мне, что я делаю не так?

(Примечание: угловые скобки вокруг домена в бите RewriteRule выше добавляются StackOverflow.com - их нет в фактическом коде!)


Вот такие правила:

<VirtualHost *:80>
ServerAdmin me@mydomain.net
DocumentRoot "/var/www/mydomain.net/htdocs"
ServerName www.mydomain.net
ServerAlias mydomain.net

RewriteEngine on
RewriteCond {REQUEST_URI} !^/audio
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]
RewriteLog logs/mod_rewrite_log
RewriteLogLevel 3

ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>

Спасибо @mercutio - это вполне логично, но все равно кажется, что это не работает.

Вот что говорит журнал mod_rewrite, когда я делаю запрос на http://mydomain.net/audio/something.mp3 :

(2) init rewrite engine with requested uri /audio/something.mp3
(3) applying pattern '^(.*)$' to uri '/audio'
(2) rewrite '/audio' -> 'http://www.newdomain.net/'
(2) explicitly forcing redirect with http://www.newdomain.net
(1) escaping http://www.newdomain.net for redirect
(1) redirect to http://www.newdomain.net [REDIRECT/301]

Поскольку REQUEST_URI действительно начинается с /audio , я ожидаю, что RewriteRule будет проигнорирован.

apache   mod-rewrite    

390   1   16:51, 24th August, 2020


Если у вас есть приложение Java, которое потребляет CPU, когда оно ничего не делает, как вы определяете, что оно делает?

Я вызываю поставщика Java API, и на некоторых серверах кажется, что JVM переходит в цикл опроса с низким приоритетом после входа в API (CPU при использовании 100%). То же самое приложение на других серверах не проявляет такого поведения. Это происходит на WebSphere и Tomcat. Окружение сложно настроить, поэтому трудно попытаться сделать что-то вроде профилирования в Eclipse.

Есть ли способ профилировать (или какой-то другой метод проверки) существующее приложение Java, работающее в Tomcat, чтобы узнать, какие методы выполняются, пока оно находится в этом состоянии spinwait? Приложение выполняет только один метод, когда оно попадает в это состояние (метод поставщика). Поставщик не может повторить поведение (конечно).


Обновление:

Используя JConsole, я смог определить, кто бежит и что они делают. Мне потребовалось несколько часов, чтобы понять, почему он это делает. Проблема заключалась в том, что используемый поставщик API jar не соответствовал точно конфигурации базы данных, которую он использовал. Он по умолчанию включал отслеживание и мониторинг производительности на серверах, которые имели небольшое несоответствие в конфигурации. Я использовал другой jar и все хорошо.

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

@Cringe-я немного поэкспериментировал с некоторыми из предложенных вами вариантов. У меня были некоторые проблемы с настройкой JProfiler, это выглядит хорошо (но дорого). В дальнейшем я пошел дальше и добавил плагин Eclipse Profiler, и я буду просматривать различные профилировщики с открытым исходным кодом для сравнения функциональности.

java   profiling    

486   8   16:50, 24th August, 2020


Сохранение истории в графическом редакторе?

Здравствуйте. Вот задался вопросом — как корректно сохранять историю в графическом редакторе (как Гимп) для использования в UNDO/REDO. Сам вижу три варианта:

1. Сохранять список действий.

Например, нарисовал линию такого-то цвета в таких координатах, применил фильтр «Блур», повернул изображение. В случае использования UNDO проходятся все действия от первого до необходимого.
Преимущество: Занимает очень мало места в памяти. При сохранении проекта можно с легкостью восстановить всю историю. При желании можно даже хранить полное дерево (например сделали действие A, B, C, D, E, вернулись к С, сделали F, G. Итоговый путь получился ABCFG, но можно как в системе контроля версий сохранить и ветку DE)
Недостаток: При использовании Undo или загрузке ранее сохраненного изображения проходится весь путь, а это может играть существенное время и если при обычном простом редактировании такой проход может занять каких-то 100-200 мс, что некритично, так при использовании тяжелых фильтров может замедлиться до десятков секунд.

2. Сохранять полный дамп проекта в bitmap

Каждое действие всю картинку мы сохраняем в память как готовый рисунок.
Преимущество: Очень быстро работает. Сделали undo/redo и просто показали из памяти тот рисунок, который у нас был (уже отрендеренный). Даже тяжелый фильтр, что угодно.
Недостаток: Занимает очень много места в памяти. Допустим, у нас рисунок размером 1k*1k. В каждом пикселе мы храним 32 бита информации (по 8 бит на r,g,b и 8 бит на альфаканал), то есть 4 байта, то есть такой битмап у нас будет занимать в идеале 4 метра, а история из 64 действий — 64*4 = 256 мб в памяти. А если допустить, что у нас графический редактор поддерживает слои и пусть их будет хотя бы пять… Аналогично, проекты с историей хранить тяжело.

Gimp

В Гимпе по косвенным признакам я опеределил, что используется второй подход. Признаки такие:

1. История ограничена

2. Тяжелые фильтры при ундо-редо возвращают статус кво очень быстро.

3. Совмещенный подход

Конечно, есть альтернатива. Храним историю первым способом, а последних, например, 8 действий храним вторым способом, т.к. редко используется такой дальний undo. Сохранять на винт можно только действия, из-за чего проект с множеством изменений будет долго открываться, но допустимо весить. Или еще добавить последнюю битмап дату.
Преимущества обоих подходов
Недостаток — значительно утяжеляется логика приложения. Фактически — надо реализовывать два механизма истории.

Тема для обсуждения

Что скажете вы? Может, есть еще какой-то подход. Если нет, то какой из подходов предпочли бы вы (в идеальном случае и в случае очень сжатых сроков)? Почему?

GIMP   Оперативная   память    

371   4   16:50, 24th August, 2020


Как сделать, чтобы ширина div зависела от содержимого?

Пробовал float: left, но в данном случае это работает только в IE и Opera.

Как есть


Как хотелось бы — работает в IE и Opera с float: left


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

CSS   HTML    

378   0   16:47, 24th August, 2020


Aliases вида *.example.com в MAMP PRO

Маководческий вопрос — как в этом пакете сделать так, чтобы все поддомены основного домена направлялись в конкретную директорию?
*.example.com не прокатывает — не принимает и всё тут.

macOS   MAMP    

329   1   16:42, 24th August, 2020


Стоимость цели в GA

Как сделать подсчет стоимости цели?
Есть счетчик в AdWords в котором можно указать цену товара.
Есть возможность в счетчик динамически подставлять общую стоимость заказа… НО… но нужно считать все заказы по всем каналам привлечения трафика.

adwords.google.com/support/aw/bin/answer.py?hl=ru&answer=115794# Здесь только общие понятия и пояснения отсутствуют.



Сколько дал вам университет знаний?

Дайте пожалуйста оценку в процентах.

IT-образование    

315   24   16:28, 24th August, 2020