LINUX.ORG.RU

Сообщения shatsky

 

Монтирование накопителей

Пытаюсь подключить к планшету флешку с помощью хост-кабеля и активного хаба. Ядро ее сразу же увидело и создало /dev/block/sda1, осталось только примонтировать. Поскольку всё это делается для слаборазбирающегося пользователя, монтировать нужно с помощью какого-нибудь наглядного GUI, аналог которого есть в любом линуксовом DE.

Разумеется, ничего такого ни в настройках, ни даже в файловом менеджере цыганмода нет. Есть отдельные костыльные программы, из которых на глаза попадаются в основном StickMount и USB Host Controller. У первого в описании написано, что он нормально работает только на нексусах, и, таки да, у меня он не работает - при нажатии на кнопке монтирования просто ничего не происходит. Очевидно, у меня какая-то не такая реализация блочных устройств в ядре и какая-то не такая команда mount. Второй монтирует, но только для рута, с правами rwx------, и никакой кастомизации параметров mount, кроме точки монтирования, не предусмотрено.

 андроид не линукс,

shatsky
()

Нативная ArmA Tactics

Зашел в стим, а там: http://store.steampowered.com/app/224860/?snr=1_4_4__100_6

Неужели и до ArmA 2/3 очередь дойдет?

shatsky
()

Нативные Civilization V и XCOM: Enemy Unknown

Если верить амазону, уже в этом месяце: http://www.amazon.com/2K-Definitive-Strategy-Collection-Multiple-platform/dp/..., http://www.amazon.com/s/ref=nb_sb_noss?url=node=290573&field-keywords=&am...
Также в списке есть Borderlands и NBA (хотя на их страницах о поддержке Linux еще ничего).

 

shatsky
()

Поиска единомышленников тред

Привет, ЛОР. Некоторое время назад я начал разработку CMS (Python/Django) для каталогизации музыки с построением связей по информации, которую обычно если и указывают, то разве что в текстовом описании: авторство музыки, текста и т. п. - что должно сделать возможной генерацию прилично оформленных страниц о творчестве поэтов и композиторов, например.
Первичная цель - реорганизовать архив сайта http://kkre-1.narod.ru/, представляющий собой уникальное собрание редкой музыки - в основном, советская эстрада и русские романсы (многое отсутствует даже в гигантской аудиопомойке вк). Технически там бардак из статических веб-страниц, но формат описания аудиозаписей на них более-менее однозначен, что позволяет с горем пополам автоматизировать построение по ним базы.
Имеющееся на данный момент состояние дел можно увидеть на http://music.shatsky.net/, исходники CMS лежат на https://github.com/shatsky/djmuslib.

Собственно, хотелось бы собрать людей, которым это было бы интересно, причем адекватных (гостевая kkre-1.narod.ru забита сообщениями вида «у меня перестали качаться песни с вашего сайта, зачем вы это сделали, вернитевсекакбыло») - надеюсь, здесь они есть. Для технических обсуждений есть гитхаб, для нетехнических запилил группу вдурове - http://vk.com/club59188719, пока что попытался там привлечь народ к придумыванию приличного названия для приложения заместо дурацкого «djmuslib».

Кстати, логотип с анимацией загрузки страниц нарисовать никто не возьмется? Эскиз: http://cs402720.vk.me/v402720737/8875/jvomXcqtwTQ.jpg

 , , советская музыка

shatsky
()

DoesNotExist при обращении по ForeignKey объекта ранее полученной выборки после изменений

Если я перебираю в цикле выборку объектов из базы, и при обработке одного из объектов выборки изменяю другой объект, также входящий в выборку, меняя его внешний ключ и удаляя сторонний объект, на который ключ указывал перед изменением, то, когда внешний цикл дойдет до измененного объекта - эго экземпляр в выборке все еще содержит старое значение ключа, указывающее на уже удаленный сторонний объект, и при обращении по нему вылетает DoesNotExist.

Пример для наглядности: я перебираю выборку объектов аудиозаписей модели Recording, ссылающихся на объекты музыки Music. При обработке объекта Recording может выполнится условие, требующее объединения некоторых существующих объектов Music; при этом внешние ключи ссылающихся на них Recording надо перенаправить на объединенный объект, а лишние объекты Music, информация из которых перемещена в объединенный - удалить. При этом в оставшейся части выборки Recordings могут оказаться старые экземпляры только что измененных объектов Recordings, ссылающиеся на удаленные при объединении объекты Music, и, когда цикл дойдет до них - вылетит эксепшн.

Как правильно решается эта проблема?

 ,

shatsky
()

Запрос с использованием Q дает пустое множество

Так работает (дает людей, которые одновременно композиторы и исполнители):

models.person.objects.filter(ext_person_category__category__in=['performers']).filter(ext_person_category__category__in=['composers'])
А так нет (дает пустое множество):
models.person.objects.filter(Q(ext_person_category__category__in=['performers'])&Q(ext_person_category__category__in=['composers']))

 ,

shatsky
()

ЧЯДНТ, или есть ли более вменяемый стеммер русского языка?

Из примеров работы mystem на моих данных:

кристалинской
{кристалинский?=A=род,ед,полн,жен|?=A=дат,ед,полн,жен|?=A=твор,ед,полн,жен|?=A=пр,ед,полн,жен}
Но ведь из правил склонения следует, что это слово может быть образовано от слова «кристалинская» при сколнении в творительный падеж (а еще в родовой, предложный и дательный), которое, согласно окончанию, может быть то ли прилагательным женского рода, то ли женской фамилией (мой случай). Почему оно предлагает только «кристалинский», да еще и считает, что это слово женского рода?
На многих других подобных фамилиях работает совершенно правильно:
белинской
{белинская=S,фам,жен,од=род,ед|=S,фам,жен,од=дат,ед|=S,фам,жен,од=твор,ед|=S,фам,жен,од=пр,ед}
В данном случае, зная, что нам дана фамилия в творительном падеже, можно однозначно нормализовать.
Но почему настолько ненадежно?

 ,

shatsky
()

HTML5 History и повторные запросы при переходах назад-вперед

При переходах назад-вперед по обычным веб-страницам браузер не выполняет повторные запросы, а сразу показывает страницы из кэша. Более того, часто даже не из кэша (по крайней мере, FF), а из памяти viewer'ов, где он держит их распарсенном виде, так что они отображаются мгновенно.
С AJAX-навигацией и HTML5 History API при простейшей реализации при вызове popstate просто выполняется повторный запрос по сохраненному адресу. Есть ли нормальные решения, позволяющие добиться такой же производительности, как в классическом случае?

 , ,

shatsky
()

И снова про регулярки: замена в контексте

Надо заменить в тексте все '/', кроме тех, которые находятся в сокращениях вида '<одна буква>/<одна буква>' (напр., 'к/ф', 'п/у'). Для примера рассматриваю только левую сторону контекста: перед чертой не должно быть последовательности из пробела или начала строки и одиночного символа.

re.sub('(?<!\s\S)/', ';', u' к/ф '))
- работает, но мне надо учесть, что а/б может находиться в начале строки.
re.sub('(?<!(^|\s)\S)/', ';', u' к/ф '))
- ругань на «look-behind requires fixed-width pattern» - похоже, специфичное для питона ограничение, причем оно даже не смотрит, что по обе стороны от '|' стоят варианты одинаковой длины.
re.sub('((?<!\s\S)|(?<!^\S))/', ';', u' к/ф '))
- ошибок нет, но замена на ; происходит везде - и в случае, если перед '/' начало строки и символ (что должен запрещать первый look-behind), и если перед '/' пробел и символ (что должен запрещать второй look-behind)

В моем случае можно обойтись первым вариантом с временным пришиванием пробелов к концам строки с последующим trim, но все же, как это делается правильно регулярками? Алсо, возможно ли в общем случае избавиться от ограничения fixed-width pattern? (я сначала пытался сделать обнаружение контекста в capture groups, но не нашел другого способа сделать отрицание выражения, кроме как использовать отрицательные look-*)

 , ,

shatsky
()

ManyToManyField из TextInput

Понадобилось сделать ввод M2M не через select multiple, а через текстовый input строкой ключей через запятую. Варианты есть разные, но для начала я просто поменял полю виджет на TextInput и был удивлен тем, что при передаче строки, содержащей единственный и валидный ключ без каких-либо лишних символов форма не проходит валидацию («Enter a list of values»). Отладчик браузера показывает совершенно такой же запрос, как и с дефолтным select multiple (...&person=<просто_число>&...). В чем может быть дело?

 

shatsky
()

Солнечное зарядное устройство

Хочу купить сабж для подзарядки своих девайсов в походах. Кто пользуется, какими именно, что можете о них сказать? Я пока присматриваюсь к KVAZAR KV-3.5BM.

 

shatsky
()

Не могу создать образ раздела, I/O error

При попытке считать любой раздел командой

dd if=/dev/block/mtdblock0 of=imagefile
dd валится с ошибкой:
/dev/block/mtdblock0: read error: I/O error
0+0 records in
0+0 records out
0 bytes transferred in 0.002 secs (0 bytes/sec)
в dmesg вываливается такое:
<3>[07-26 23:42:15.164166] [41: mtdblockd]msm_nand_read_oob: unsupported ops->len, 512
<3>[07-26 23:42:15.164166] [41: mtdblockd]end_request: I/O error, dev mtdblock0, sector 0
<3>[07-26 23:42:15.164166] [41: mtdblockd]Buffer I/O error on device mtdblock0, logical block 0
<3>[07-26 23:42:15.164166] [41: mtdblockd]msm_nand_read_oob: unsupported ops->len, 512
<3>[07-26 23:42:15.164166] [41: mtdblockd]end_request: I/O error, dev mtdblock0, sector 8
<3>[07-26 23:42:15.164166] [41: mtdblockd]Buffer I/O error on device mtdblock0, logical block 1
<3>[07-26 23:42:15.164166] [41: mtdblockd]msm_nand_read_oob: unsupported ops->len, 512
<3>[07-26 23:42:15.164166] [41: mtdblockd]end_request: I/O error, dev mtdblock0, sector 0
<3>[07-26 23:42:15.164166] [41: mtdblockd]Buffer I/O error on device mtdblock0, logical block 0

Я предположил, что его можно читать только целыми eraseblock'ами, посмотрел их размер в /proc/mtd:
mtd0: 00500000 00020000 "recovery"
0х20000=131072, но добавление параметра bs=131072 ничего не изменило.

Что не так?

 ,

shatsky
()

Mir катится в Wayland

Mir теперь, как и Wayland, использует xkbcommon, хотя еще совсем недавно отказ от Wayland обосновывался тем, что он якобы унаследовал некие проблемы обработки ввода от X'ов.

 mir wayland xkbcommon

shatsky
()

Невидимый шрифт Adobe Blank теперь свободен

Я просто оставлю это здесь:

http://blogs.adobe.com/typblography/2013/03/introducing-adobe-blank.html

//датировано 28 марта

 окончательное решение,

shatsky
()

Очередной еду_ в_гости-тред

Буду в этом замечательном городе 12-го числа в связи с сабжем. Есть возможность задержаться на день-другой. Есть ли в городе ЛОРовцы? Куда посоветуете сходить, на что посмотреть?

//уже бывал проездом, видел площадь с госпромом и университетом

 it-планета,

shatsky
()

Как в действительности работает jquery click(function(event){...})?

Ранее думал, что все изменения на странице выполняются через манипуляции с DOM. Понадобилось сделать AJAX-навигацию, с установкой обработчиков на ссылки стало понятно, что все сложнее. Сначала для обработки ссылок с class=«ajax» засунул в $(document).ready():

    $(".ajax").click(function(event){
      event.preventDefault();
      ajax_navigate(this.href);
      return false;
    });
DOM этот код явно не меняет, никак не изменяя видимые в коде страницы атрибуты.
Навигация заработала, но затем я увидел, что по недосмотру в ответ на AJAX-запросы сервер выдает страницу целиком, а не блок контента. После исправления этой ошибки ссылки в загруженном через AJAX блоке перестали AJAX'ифицироваться. Тогда я добавил такой же код в function(data){...} AJAX-запроса, чтобы по его завершении обрабатывались новые ссылки в загруженном блоке.
После этого произошло вот что:

  • ссылки в загруженном блоке AJAX'ифицироваться все равно не стали
  • ссылки на базовой странице стали после каждого нажатия «удваивать» количество вызовов, вызывая в последующем многократную подгрузку, а после какой-то последовательности (закономерность пока не понял) вызывать зацикленную подгрузку поочередно нескольких разных страниц.

Что на самом деле происходит при назначении функции через $(...).click()? Как-то можно (Firebug'ом, ...) посмотреть, что в действительности навешено на ссылку в данный момент?

 

shatsky
()

Браузер показывает JSON вместо исходного кода страницы

Делаю AJAX-навигацию, вот такая функция подставляет полученный в JSON контент в <div id=«main»>, а заголовок - в title:

  function ajax_navigate(url)
  {
    $.get(url, function(data){
      $('#main').html(data.content);
      document.title=data.title;
    })
  }
Браузер страницу отображает нормально, но вместо исходного кода показывает JSON (причем содержащий в поле content всю страницу, а не только полученный AJAX-ом кусок). Почему?

 , ,

shatsky
()

Хранение и объединение записей с разными, но пересекающимися множествами полей

Последнее время часто сталкиваюсь такой проблемой.

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

Первое, что приходит в голову - избыточный набор полей для свойств, поле type и NULL во полях, специфичных для типов, к которой запись не принадлежит.

Еще вариант - отдельная «агрегирующая» таблица с общими полями и nullable внешними ключами для всех возможных типов. Тогда нужно следить, чтобы для каждой записи был установлен один и только один внешний ключ из возможных и чтобы на каждую запись из таблиц с типоспецифичными полями указывала только одна запись из агрегирующей.

Как принято поступать в таком случае?

 ,

shatsky
()

Принтер не печатает, «Starting GPL Ghostscript 9.05...»

При попытке что-либо распечатать веб-интерфейс показывает «Starting GPL Ghostscript 9.05...», принтер остается в режиме ожидания.

$ systemctl status cups.service
cups.service - CUPS Printing Service
	  Loaded: loaded (/etc/systemd/system/cups.service; static)
	  Active: active (running) since Сб. 2013-03-23 19:16:56 EET; 52s ago
	 Process: 3819 ExecStartPost=/sbin/udevadm trigger --subsystem-match=usb --attr-match=serial=AL01077498 (code=exited, status=0/SUCCESS)
	Main PID: 3818 (cupsd)
	  CGroup: name=systemd:/system/cups.service
		  ├─3818 /usr/sbin/cupsd -f
		  └─3823 parallel:/dev/lp0 657 chaos Siciliana_Bach_BWV_1031.PNG 1 InputSlot=Auto number-up=1 PageSize=A4 Resolution=1200dpi Duplex=None job-uuid=urn:uuid:3bf...

марта 23 19:16:56 localhost systemd[1]: Starting CUPS Printing Service...
марта 23 19:16:56 localhost systemd[1]: Started CUPS Printing Service.
Как посмотреть, что в действительности с ним происходит? Все живые логи в /var/log/cups касаются только веб-интерфейса, cupsd в журнал ничего не пишет и никакой --verbose вроде как не имеет. И, кстати, что это за процесс 3823, почему у него такая странная командная строка - не путь к бинарнику, а какое-то «parallel:/dev/lp0»?

 

shatsky
()

Ubuntu Touch - перелицованный андроид

http://www.phoronix.com/scan.php?page=news_item&px=MTMwODg
Майкл докладывает: там SurfaceFlinger вместо графического сервера и вообще это просто CyanogenMod с другими лаунчером и приложениями.

 ничего интересного, расходимся

shatsky
()

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