LINUX.ORG.RU

Сообщения Slavaz

 

[e]grep: выборка строк

Возникла задачка... застопорился на решении :)

Есть файл вида:

1 {0}  {0}  (1) [2] <3> {0} sdfgdf <3> [2] {0}
2 {0}  {0}  (1) [2] <3> {0} sdf {0}{0}{0}gdf <3> ={0} {0} {0} {0} [2] 3 {0}
3 {0}  {0}  (1) [2] <3> {0} sdf {0}{0}{0}gdf <3> ={0}-{0} [2] {0}
4 blabla {0}  {0}  (1) [2] <3> {0} sdf {0}{0}{0}gdf <3> ={0}^{0} [2] {0}
5 {0}  {0}  blabla(1) [2] <3> {0} sdf {0}{0}{0}gdf <3> ={0[2]}{0} [2] {0}
6 {0}  {0}  (1) [2] <3> {0} sdf {0}{0}{0}gdf <3> <3> ={0}{0} [2] {0}

Номера в начале - это номера строк для наглядности.

Условие: выбрать такие строки, где подстроки {0},(1),[2],<3> повторяются в произвольном порядке в строке до десяти раз, разделенные различным количеством любых символов, кроме ^ и -

после применения грепа нужно получить строки:

1 {0}  {0}  (1) [2] <3> {0} sdfgdf <3> [2] {0}
2 {0}  {0}  (1) [2] <3> {0} sdf {0}{0}{0}gdf <3> ={0} {0} {0} {0} [2] 3 {0}
6 {0}  {0}  (1) [2] <3> {0} sdf {0}{0}{0}gdf <3> <3> ={0}{0} [2] {0}

строки 3 и 4 содержат ^ и -

Строка 5 имеет неправильный элемент {0[2]}

Можно ли средствами только лишь grep (grep -E) решить эту задачу?

Slavaz
()

2wyldrodney

Заранее извиняюсь за личную переписку, но не удержался.

wyldrodney, это твоё фото: http://www.linux.org.ru/photos/37723:-373061758.png ?

Если да, то это не твой отец случаем: http://img12.nnm.ru/c/4/4/f/b/c44fb8498b3ebeb2ea46f8678771dd75_full.jpg ?

Похожи, однако... :)

Slavaz
()

Зарелизили Midnight Commander 4.7.5-pre1. Просьба потестить

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

Скачать здесь: http://www.midnight-commander.org/downloads?order=id&desc=1

Переводчикам: у вас есть две слишним недели до 27-го декабря. Потом релиз.

Slavaz
()

pcre: поиск «целые слова» с utf-8 текстом

Прошу помощи зала. Дано: тестовый файл вида

'time'
Время
'Time'
'время'
\время=
"время+
:вреМя-
;время_
'время)
'время(
'время*
'время&
_время&
'время^
'1234время%
`время!
~время@
'eeeвремяeetimertet^

Надо доказать, что регексп \bвремя\b будет работать наравне с регекспом \btime\b... или надо найти замену \b (граница слова). Особенность: используется glib-pcre (можно и классический libpcre). для упрощения задачи скопируйте тестовые данные в файл. откройте в mcedit (серии 4.7.*). нажмите F7 и вбивайте регекспы.

P.S. Что самое интересное: \Bвремя\B работает как надо... а вот \Btime\B уже не срабатывает... в принципе, это объяснимо, если принять, что «In all flavors, the characters [a-zA-Z0-9_] are word characters» - а про остальные нац.символы разрабы pcre, наверное, не догадываются.. :(

http://midnight-commander.org/ticket/2396

P.P.S Регексп, выдранный из grep, находит немного неправильно. Нужно, чтобы находилось только «время», а с grep'овым регекспом находит «\время=» (то есть, с окружающими символами).

Slavaz
()

Не пора ли подправить правила?

При регистрации на сайте запрещается:

...

Использование более одного логина одним пользователем. Допускается смена логина пользователем, при этом старое имя не должно более использоваться. Смена логина и повторная регистрация разрешается не чаще одного раза в месяц.

...

4. Сообщения вне темы обсуждения и флеймы

...

8. Сообщения, нарушающие действующий Уголовный Кодекс Российской Федерации

Slavaz
()

Составить SQL-запрос (объекты -> теги)

Упрощённо есть три таблицы:

table objects ( id => bigserial, 'name' => varchar(200) );

table tags ( id => bigserial, 'tagname' => varchar(200) );

table objects_tags ( 'object_id' => bigint, 'tag_id' => bigint );

Соответственно, объекты и теги связаны как «многие ко многим» через таблицу objects_tags

Что нужно: выбрать объекты, у которых есть теги «tag1», «tag2», «tag3». При этом не один из трёх, а точно три. Не четыре, не два, а именно эти три тега с этими именами. Следующая выборка может быть уже по двум тегам.. следующая - по шести... то есть, один запрос как нечто вроде

... WHERE 'tags'.'tagname' IN ('tag1', 'tag2', 'tag3')

но тут один из... а надо все :)

Ткните в манул, плиз.

Slavaz
()

Stable release of mc-4.7.0.4

http://mail.gnome.org/archives/mc/2010-April/msg00012.html

Качайте, пробуйте, багрепортуйте если что.

P.S. Это не основная ветка разработки - это багфикс-релиз в стабильной ветке.

Slavaz
()

[Стёб в стиле «ЛОР»] MC - оно ещё шевелится?

Всем Far-одрочерам и ниасилянтам шелла посвящается...

Вышла новая версия закоса под Far.

Что нового: http://www.midnight-commander.org/wiki/NEWS-4.7.1 Там же есть список, что пофиксили. Список что поломали само собой не прилагается. Ебилды в Генте. Гента в Интернете. Интернет где-то там.

Также разрабы решили, что они в состоянии сделать безглючную поделку, поэтому решили периодически шевелить палочкой ветку разработки под названием 4.7.0-stable: http://www.midnight-commander.org/wiki/NEWS-4.7.0.3 Оно зарелизилось где-то рядом с основным закосом.

P.S. Оформите кто нормальную новость, пожалуйста. :)

P.P.S. Модерам: эту тему после оформления нормальной новости грохните.

Slavaz
()

Просьба: потестируйте IPv6

Добавляем поддержку IPv6 в VFS (конкретно FTP).

У кого есть возможность, помогите, пожалуйста, с тестированием.

# склонировать репозиторий (для уменьшения трафика клонируется минимум коммитов)
git clone --depth 2 git://www.midnight-commander.org/git/mc.git
cd mc
# подготовить код к тестированию:
git merge origin/121_support_IPv6

# далее стандартно:
./autogen
./configure && make
src/mc

и проверить FTP-соединения через IPv6 протокол:

F9 -> 'FTP link' -> введите:
[s:o:m:e::a:d:d:r]

Ну или
user@[s:o:m:e::a:d:d:r]

Можно о результатах отписаться здесь, можно непосредственно в тикете:
http://www.midnight-commander.org/ticket/121

Slavaz
()

Midnight Commander: конфиг в UTF-8 и не-UTF сискодировки

Перешли на использование glib-ini функций вместо своего велосипеда. Глибовские функции хотят только UTF-8 в конфиге. Есть пользователи, у которых не только UTF-8 системная кодировка. Сделали перекодировку "на лету" из UTF-8 в сискодировку.

Но осталась проблема, требующая "мозгового штурма": пользователь обновляет мс, у пользователя остались старые его конфиги (в KOI8-R, например). Что с ними делать? MC напрочь откажется с ними работать (вернее, с теми параметрами, которые содержат не- UTF-8).

Варианты:

1) решать средствами пакетного менеджера (в постинсталл триггерах). Не совсем хорошо, ибо слишком много условий: разная кодироавка у пользователей на одном хосте, пользователи не только в /home и т.д.;

2) пытаться распознать в mc кодировку ini-файла пользователя и автоматом переконвертить его. Не совсем хорошо, ибо операция разовая, хардкодить не хотелось бы;

3) пытаться распознать кодировку, если не айс, то делать бэкап конфига, стартовать с дефолтной конфигурацией и созданием нового конфига. Предупредить пользователя диалоговым окном об данном действии.

Что лучше/хуже? Свои варианты?

Slavaz
()

[ЖЖ]

// ==UserScript==
// @name           cleanLOR
// @namespace      LOR
// @include        http://www.linux.org.ru/tracker.jsp
// ==/UserScript==

var regex=/\[жж\]/i;

$("table.message-table tbody tr").each(function(index,object){
  var topic_title=$("td a", object).get(1);

  if (!topic_title)
	return;

  if (regex.test($(topic_title).html())) {
      $(object).remove();
  }
});

Сорри, наболело :(

 

Slavaz
()

Питон-2.4 - патч для trac-git плагина

http://trac-hacks.org/attachment/ticket/5310/python24.2.patch

В двух словах: патч для плагина trac-git (trac версии 0.11), позволяющий запускать этот плагин на LTS-дистрах с установленным python-2.4

Так как я совсем не дружу с Питоном (патч писался вместе с гуглем в обнимку), то просьба знающим просмотреть одним глазом и подсказать, что можно подправить.

P.S. Заодно сделал здесь анонс патча: кто настрадался со связкой git+trac на серверных дистрах, то вот оно решение :)

Slavaz
()

UTF-8 upper/lower

Интересует такой вопрос: при смене регистра букв в UTF-строке сохраняется ли такая же длина?

Например:
"аБв" - длина строки в байтах равна 6
"абв" - длина строки в байтах равна 6
"АБВ" - длина строки в байтах равна 6

С русским диапазоном понятно, всё гуд - на каждую букву по два байта. А как с другими диапазонами (японский, арабский и т.д.)?

Slavaz
()

UnitTest for C

Кто какие системы тестирования для C знает?

rcunit - http://rcunit.sourceforge.net

Ещё кто что добавит?

Slavaz
()

mc, частично починена перекодировка файлов

Не умею я новости писать, да и не тянет ИМХО это на новость - многое из задуманного пока не сделано. Короче, линк, там расписано и разжёвано:

http://forum.redhat-club.org/viewtopic.php?pid=34768#p34768

ЗЫ. Кому хочется скора - оформите новостью.

Slavaz
()

Re: fedora

Original: http://www.linux.org.ru/jump-message.jsp?msgid=3242144&cid=3243231

> Последний раз, когда щупал федору на десктопе - не порадовало то, что при действиях, которые требуют рутовые привилегии, запрашивался рутовый пароль, а не пользовательский (т.е. использовался аналог gksu, а не gksudo, как в той же Ubuntu)

ИМХО логично.

Hint в LTSP будет полная анархия.

Slavaz
()

GIS: дайте направление копания.

Пришлось заняться ГИС-технологиями.

Разобрался с созданием (qgis) и публикацией (mapserver+ php_mapserver.so)

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

P.S. После окончательного "вьезжания" в суть технологии обещаю где-нить выложить толковое howto... если его ещё нету.

Slavaz
()

php 5.1.6 - жёсткие ссылки

Говорю сразу: в ньюансах php не силён. Волею судеб пришлось... :)

<?php 

function getById(&$data,$id){ 
  if (! isset($data['id'])) return false;
  if ($data['id'] == $id) return $data;
  if (! isset($data['children'])) return false;
  foreach ($data['children'] as $ind=>$val){
    return $this->getById($data['children'][$ind], $id);
  }
}

$some_data=array( 'id' => 12345 );

$needed_data = & getById($some_data,12345);
$needed_data['bla-bla'] = 'bla-bla';

print_r($some_data);

?>
Выдаёт:
Array (
 [id] => 12345
)
а хочется:
Array (
 [id] => 12345,
 [bla-bla] => 'bla-bla'
)

Как? 

>>>

Slavaz
()

Linux inotify узнать, кто инициатор события.

Сабж, собственно. Язык реализации роли не играет - где будет решение, на том языке и напишу.

Необходимо узнать, кто удалил/переместил/изменил файл/каталог. Если при создании можно просто натравить fstat(), то при перемещении/изменении fstat покажет user/group, каким оно было при создании... при удалении вообще скучно :(

Решал ли кто такое?

>>>

Slavaz
()

[perl] Net::XMPP2 и многопоточность.

Сначала простенький пример:
----------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use threads; use threads::shared;
use AnyEvent;
use Net::XMPP2::IM::Connection;

my $dest='myjabberaccount@gmail.com';

my $j = AnyEvent->condvar;
#my $timer;
my $thr2;

my $Con = Net::XMPP2::IM::Connection->new ( jid      => 'testaccount@gmail.com', password => 'someC00lPasswdd',
        initial_presence => -10, debug    => 1);

sub ListenForMessages {
    async {
        while (1){
            print "Sending message inside timer\n";
            my $immsg = Net::XMPP2::IM::Message->new (to => $dest, body => "ttteessstt from timer");
            $immsg->send ($Con);
            sleep 5;
        }
    };
#    $timer = AnyEvent->timer (after => 5, cb => sub {
#       print "Sending message inside timer\n";
#           my $immsg = Net::XMPP2::IM::Message->new (to => $dest, body => "ttteessstt from timer");
#           $immsg->send ($Con);
#           sleep 5;
#        ListenForMessages();
#    });
}

$Con->reg_cb (
    session_ready => sub {
        my ($con) = @_;
        print "Connected as " . $con->jid . "\n";
        print "Sending message to $dest:\n$msg\n";
        my $immsg = Net::XMPP2::IM::Message->new (to => $dest, body => "ttteessstt"); $immsg->send ($Con);
        ListenForMessages();
    },
    message => sub {
        my ($con, $msg) = @_;
        print "Message from " . $msg->from . ":\n" . $msg->any_body . "\n---\n";
    },
    error => sub {
        my ($con, $error) = @_;
        warn "Error: " . $error->string . "\n";
    },
    disconnect => sub {
        my ($con, $h, $p, $reason) = @_;
        warn "Disconnected from $h:$p: $reason\n";
        $j->broadcast;
    }
);

print "Trying to connect...\n";
$Con->connect ();
$j->wait;
--------------------------------------------------------------

Теперь пояснение: Приходит только "ttteessstt". Ни одна из мессаг "ttteessstt from timer" даже не пытается отправиться (судя по tcpdump). И ни через таймер, ни через async{} не работает. :(

Кто что может подсказать?

>>>

 

Slavaz
()

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