LINUX.ORG.RU

Сообщения Xenesz

 

Скопировать (редактировать) определение map

Уважаемый Все. Как <топик>?

 

Xenesz
()

Python urllib — стали недоступны определённые адреса

Хаюшки олл.

Скрипт на третьем питоне использует urllib. Внезапно urlopen() стала упорно выбрасывать «The HTTP server returned a redirect error that would lead to an infinite loop» для определённых адресов, причём wget скачивает те же страницы без проблем. Есть способ победить urllib или другой модуль python3 для чтения веб-страницы?

 ,

Xenesz
()

Negative lookback & backreferences

Допустим, нужно перед каждым словом «трансденсканция», перед которым нет слова «трансценденентальная», вставить это слово. Инвентарь Vim включает negative lookback assertion:

/\(трансценденентальная \)\@<!трансденсканция

Но, поскольку соответствие негативное, первой группе соответствует пустая строка.

s/(трансценденентальная \)\@<!трансденсканция/\1 \2/

не изменяет текст. Хотелось бы найти другой способ кроме

s/(трансценденентальная \)\@<!трансденсканция/трансценденентальная \2/

 

Xenesz
()

Разные Location для одной веб-страницы

Хай ол. Сайт opensource.ru при обращении к нему с помощью wget –spider выдаёт «Location: https://www.linux.org.ru». Как получить Location подобного ресурса с помощью модулей перла, например, или хотя бы питона?

 ,

Xenesz
()

Вставка в командную строку по средней кнопке мыши

Хаюшке, All.

Есть такая удобная фишка, как вставка выделенного мышью текста при нажатии средней кнопки мыши. И есть такая удобная вещь, как MC. Но в нём такая фишка в командной строке не работает (если не скрыть панели, что нежелательно). Как объехать? Заранее спасибо за ответы.

 

Xenesz
()

mapped_file_source: исключение на пустом файле

После нормального получения хэша нескольких файлов обломался на файле нулевой длины и соорудил тест.

std::string emptyname = "zero.cpp"; // Тестовый файл нулевой длины
unsigned char emptyhash[MD5_DIGEST_LENGTH];
boost::iostreams::mapped_file_source emptymap;
emptymap.open(emptyname);
if (emptymap.is_open()) {
    MD5( (unsigned char*) emptymap.data(), emptymap.size(), emptyhash );
    emptymap.close();
}
Вылетает с сообщением
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::exception> >'
  what():  std::exception
Aborted
Можно заранее проверять файл на ненулевую длину, но какого лешего?

Гугл дал подтверждение только в одном электрописьме, которое ничего не прояснило.

 ,

Xenesz
()

C++: несовместимые по const геттеры

или О Нарушенных Обещаниях.

Добрейшего всем.

У меня есть вектор элементов кастомного класса Item, которые надо сортировать двумя способами: по размеру и по хэшу.
Для этого я делаю два соответствующих геттера:

long getSize() const;
unsigned char* getHash();
Обращаю внимание на то, что getHash() не const, так как он же генерирует хэш, если хэш не был установлен. Посчитать заранее все хэши слишком дорого.
[UPD]
Хэши хранятся в объектах, getHash() изменяет значение соответствующего приватного члена
[/UPD]
Дальше пишется функтор с параметром field, принимающим значение SIZE или HASH
struct cmpItem
и оператор
bool operator() ( const Item& left, const Item& right)
суть которого следующая
if ( field == SIZE ) return left.getSize() < right.getSize();
/* if ( field == HASH ) return left.getHash() < right.getHash(); */

Сортировка вектора по размеру

std::vector<Item> scroll;
...
std::sort( scroll.begin(), scroll.end(), cmpItem(SIZE) );
работает как задумано, а с сортировкой по хэшу проблемы.

Если раскомментить в функторе

if ( field == HASH ) return left.getHash() < right.getHash();
то компилятор жалуется:

passing ‘const Item’ as ‘this’ argument of ‘unsigned char* Item::getHash()’ discards qualifiers

что логично, ибо этот метод не костантный.
Если привести getSize() к аналогичному getHash() виду (без const)

long getSize();
и соответственно поправить оператор
bool operator() ( Item& left, Item& right)
то вываливается простыня ошибок, из которых наиболее вразумительны

no match for call to ‘(cmpItem) (Item&, const Item&)’
no match for call to ‘(cmpItem) (const Item&, Item&)’

У меня такие вызовы не используются, это желание компилятора «шоб було»?

Нельзя иметь один функтор для неизменяющего метода и изменяющего метода?
Если я должен оба метода сделать не константными, то как?

 

Xenesz
()

C++: массив элементов переменного размера

Добрейшего всем.

Нужно прочитать пути-имена файлов с stdin, отсортировать по размеру и посчитать кое-какую статистику. Файлов может быть несколько сотен тысяч или больше. Хочется, чтобы это не занимало десятки секунд и не съедало много памяти.

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

Насколько я понимаю, std::vector в принципе подходит, но при добавлении элементов он будет иногда перестраиваться, а это, по-моему, несколько дольше, и доступ к элементу в итоге будет не быстрее.

Какие ещё варианты?

UPD Исправлено: s/имена файлов из каталога/пути-имена файлов с stdin/

 

Xenesz
()

Именительный или творительный

Уважаемые знатоки, внимание на экран. Вопрос задаёт телезритель из Индии.
(Оригинал на инглеше, перевод мой.)

'Он был умным' и 'Он был умный' — оба предложения имеют одно и то же значение, но в первом используется творительный падеж.
Так в чём разница между ними и когда следует использовать творительный падеж?

Тут товарищи академики с dic.academic.ru подсказывают, что в современном русском именительный падеж в сказуемом архаичен, кроме «меня зовут…» или «они называются…» Однако я чаще слышу фразы типа «водитель был пьяный» или «куртка была белая». Можно ещё краткую форму прилагательного использовать, но она выглядит книжной, особенно для женского или среднего рода («стена была бела»). Какая форма правильна в современном русском языке? Заранее благодарен за ответы.

А линукс тут при том, что у меня гента.

 нафилфак,

Xenesz
()

Некромодерация

Чисто из любопытства: это кто у нас режет темы трёхлетней выдержки?

Xenesz
()

Перемещение файлов торрента во время раздачи

Уважаемые знатоки. У меня есть торрент на раздаче. Я внезапно перемещаю файл торрента и подсовываю вместо него мягкую ссылку на новое местоположение файла. Верно ли, что торрентовый клиент при этом не может обломаться?

Xenesz
()

Пошто тему удавили?

Зря, ПМСМ.

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

Xenesz
()

Патентный троллинг — инновационная отрасль

Гугл проиграл в суде ещё тридцать мегабаксов. На этот раз не какому-то гиганту, а невеликому патентному троллю Vringo, который в прошлом году купил старые патенты Lycos. В предмете разбирательства, ПМСМ, ничего нового и интересного, и сумма кагбе не особо впечатляет, тем более что истцы желали изначально получить почти полмиллиарда, но суд их существенно окоротил.

Дело Virgo примечательно тем, что патентная атака непосредственно отображалась фондовым рынком, инвесторы реагировали на каждую юридическую процедуру.

Патентные дела уже претендуют стать отраслью экономики.

!Ъ могут также посмотреть доставляющих картинок.

Xenesz
()

Заменить содержимое div, зная class и содержимое

Дано: динамически генерируемая страница на плюсаче. Люди в кругах представлены элементами вида

<div class="jn Gs">Linus Torvalds</div>
Элементы различаются только текстом между <div…> и </div>.

Требуется: дописать текст в элементе. Например:

The Linus Torvalds

После поисков и консультаций нарисовался код для greasemonkey:

// ==UserScript==
// @name        G+ tags
// @namespace   https://plus.google.com/*
// @description Tag people in circles
// @include     https://plus.google.com/*
// @version     1
// ==/UserScript==


​​var elements = document.getElementsByClassName("jn Gs");
for(i=0;i<=elements.length;i++) {
    content = elements[i].innerHTML;
    switch(content) {
        case "Linus Torvalds" :
            elements[i].innerHTML = "The " + content;
            break;
        default : 
            elements[i].innerHTML = content + " - who?";
    }            
}

Но получился Fig. 1. Кто подскажет, что могло пойти не так?

Или как можно решить задачу с помощью других, желательно простых инструментов типа Stylish?

 , ,

Xenesz
()

Ненужные либы и модули

Допустим, вы лепите очередной лисапедик для домашних нужд. Берёте библиотечку… не то. Ещё одну… Наконец, находите то, что заточено как по мерке.

Что вы делаете с библиотеками и модулями, которые не пригодились? Варианты видятся такие:

  • Нищебродопроблемы. Диски стоят дёшево, нехай либы лежат, авось ещё понадобятся.
  • Я верю в П-тр-га и доверяю своей памяти, я точно знаю, какие пакеты у меня установлены (включая модули из CPAN и подобное). Я в любой момент могу сказать, какие можно вынести.
  • Я с самого начала рисую для лисапеда пакет с зависимостями, при каждом билде он обновляется, все не пригодившиеся пакеты можно потом снести автоматом, как orphaned.
  • Свой вариант. (?)

Как кто справляется?

 ,

Xenesz
()

sed: объединить строки в абзаце

Прощу помощи у знатоков sed. Пусть дан текст вида

    Рыба рыба рыба рыба рыба
рыба рыба рыба рыба; рыба ры-
ба рыба рыба.
    Рыба рыба рыба рыба рыба,
рыба рыба рыба рыба?
Требуется объединить строки внутри каждого абзаца (который начинается строкой с отступом) и удалить переносы:
Рыба рыба рыба рыба рыба рыба рыба рыба рыба; рыба рыба рыба рыба.
Рыба рыба рыба рыба рыба, рыба рыба рыба рыба?

 

Xenesz
()

Идентификация борнов

По ссылкам ниже какой-то электронный аванхард вперемежку с фоно. Кто-нибудь опознает исполнителя? (Пара треков, по ходу, малость битые.)

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

 , опознание

Xenesz
()

ШГ и радуга

Посоветуйте тесты на «радугу». Глаз окончательно замылился. Или методу какую подбора параметров ШГ под монитор.

Заранее признателен.

 ,

Xenesz
()

check_license() { die

 * ERROR: app-misc/2gis-3.0.9.1 failed (setup phase):
 *   you no longer need this as portage supports ACCEPT_LICENSE itself
 * 
 * Call stack:
 *             ebuild.sh, line  85:  Called pkg_setup
 *   2gis-3.0.9.1.ebuild, line  23:  Called check_license '/var/lib/layman/sunrise/app-misc/2gis/../../licenses/2Gis-ru'
 *         eutils.eclass, line 1476:  Called die
 * The specific snippet of code:
 *   check_license() { die "you no longer need this as portage supports ACCEPT_LICENSE itself"; }

ЧЯДНТ и как с этим бороться?

 

Xenesz
()

Посоветуйте почтовый софт

Сабж.

Требования: консольный клиент, несколько аккаунтов на разных серверах, включая gmail.

Пожелания: управление виртуальными папками.

Приветствуются: истории успеха.

Не нужно: энтерпрайз.

 

Xenesz
()

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