• Perl и GUI. Работа с потоками
    0
    sub thread_worker {
        my $self = threads->self();
        my $tid  = $self->tid();
        
        while( defined( my $job = $queue_job->dequeue() ) ) {
            print STDERR "Worker($tid) has received task from Boss: $job\n";
            
            # выполняем какую-нибудь работу...
            #print STDERR "Worker($tid) has finished the task\n";
    	print STDERR "Worker($tid) has sleeped: ", scalar(localtime), "\n";
    
    	sleep 10;
    	print STDERR "Worker($tid) has woken up: ", scalar(localtime), "\n";
    
            # скидываем все в одну коробку ;)
            $queue_box->enqueue( "processed: $job" );
        }
    
        $queue_box->enqueue( undef );    
    }


    Задания отсылаются в очередь, элементы доступны.

    Boss(1) has received the task from Tk: one
    Worker(2) has received task from Boss: one
    Worker(2) has sleeped: Thu Jul 30 13:31:48 2009
    Boss(1) has received the task from Tk: two
    Boss(1) has received the task from Tk: three
    Worker(2) has woken up: Thu Jul 30 13:31:58 2009
    Worker(2) has received task from Boss: two
    Worker(2) has sleeped: Thu Jul 30 13:31:58 2009
    Boss(1) has received the task from Tk: four
    Worker(2) has woken up: Thu Jul 30 13:32:08 2009
    Worker(2) has received task from Boss: three
    Worker(2) has sleeped: Thu Jul 30 13:32:08 2009
    Worker(2) has woken up: Thu Jul 30 13:32:18 2009
    Worker(2) has received task from Boss: four
    Worker(2) has sleeped: Thu Jul 30 13:32:18 2009
    Worker(2) has woken up: Thu Jul 30 13:32:28 2009

  • Perl и GUI. Работа с потоками
    0
    ActivePerl 5.10.0.1005
    Tkx 1.07

  • Perl и GUI. Работа с потоками
    0
    Единственное, в представленном бенчмарке нету POE::Loop::Tk

  • Perl и GUI. Работа с потоками
    0
    благодарю.
  • Moose(X). Продолжение
    0
    тут был пост, что перл-программисты самые счастливые :)
  • Perl и GUI. Сравнение тулкитов
    +2
    > Буду благодарен, если осветите эту тему в статьях.

    Будет сделано ;)
  • Perl и GUI. Сравнение тулкитов
    0
    Java энтерпрайз.
    Обычный декстопный софт не так распространен на java.
  • Perl и GUI. Сравнение тулкитов
    0
    > Вот допустим, есть вполне конкретная задача. Дана формочка, с которой мы хотим получить данные. Используя wxHaskell+wxGeneric, можно быстренько отобразить контролы формы на структуру данных (умненький компилятор сделает все сам, практически без нашего вмешательства). Если не пользоваться wxGeneric, тогда весь код перекидывания данных туда-сюда (между GUI и структурой данных) придется писать ручками, что чревато.

    Виджеты Tk имеют свойство textvariable. Поэтому данные, которые вы вводите, будут храниться в переменных.

    my $ok = 'OK';
    my $button = $main_window->new_ttk__button( -textvariable => \$button );

    изменяя $ok изменится и надпись на кнопке.
  • Perl и GUI. Сравнение тулкитов
    0
    Tkx потому что:

    1. ActiveState PPM, PDK написаны с использованием этой библиотеки.
    2. Гарантированно (проверял везде) работает на Windows, Mac OS X, Linux, Solaris.
    3. «Родное» оформление.
    4. Мне необходимо использовать событийную машину (POE), поддержка Wx слабо реализована
    search.cpan.org/~mike/POE-Loop-Wx-0.04/lib/POE/Loop/Wx.pm

    а в случае с Tkx, «мост» уже почти написан, скоро засабмичу в CPAN ;)

    5. В бинарном файле места занимает в два раза меньше.

  • Perl и GUI. Сравнение тулкитов
    0
    Cам наступал на те же грабли. Заставить работать Tk+threads можно, если потоки задавать ДО создания UI.
    Правда там и в документации было написано что «Tk isn`t thread-safe»

    Рабочая модель это Boss/Workers + Queue.
  • Perl и GUI. Сравнение тулкитов
    +2
    Синтаксис извратным кажется, когда Вы не знакомы с ним. Согласен.
    Но по изучении, Вы поймете что ошибались.

    На самом деле все просто. Аргументы передаются через вектор @_.
    Приведу небольшой пример: необходимо написать подпрограмму(sum) которая суммирует два числа.
    my $result = sum( 3, 4 ); # result = 7

    варианты
    sub sum {
    my( $a, $b ) = @_; # распаковываем все сразу

    return $a + $b;
    }

    sub sum {
    my $a = $_[0];
    my $b = $_[1];

    return $a + $b;
    }

    sub sum {
    my $a = shift @_;
    my $b = shift @_;
    }

    так как shift без явного задания аргумента, извлекает первый элемент из _ то можно написать
    sub sum {
    my $a = shift;
    my $b = shift;

    return $a + $b;
    }

    можно и вообще return опустить
    sub sum {
    $_[0]+$_[1];
    }

    Хоть оно и будет работать, но так писать не следует. (хотя для perlgolf'ов сойдет :)
    Нужно придерживаться стилю программирования.

    «There's more than one way to do it» — Larry Wall.

    А вот и другой пример: написать подпрограмму которая будет суммировать все переданные ей числа
    my $result = sum( 1, 4, 6, 7 ); # 18

    sub sum {
    my $s = 0;
    $s += $_ foreach( @_ ); # прибавляем к $s каждый элемент из @_

    return $s;
    }

    Perl это искусство :)
  • Perl — Отправляем файлы на сервер HTTP запросом
    0
    Спасибо за вариант с использованием сокетов.
  • Perl — Отправляем файлы на сервер HTTP запросом
    0
    отправлять можно через WWW::Mechanize,
    очень удобно, метод submit_form

    #!/usr/bin/perl
    use strict;
    use WWW::Mechanize;
    
    my $file_to_upload = './files/some_file.bin';
    
    my $mech = WWW::Mechanize->new();
    $mech->agent_alias( 'Windows Mozilla' );
    $mech->get('http://somedomain.com/form');
    $mech->submit_form(
     with_fields => {
       upload_file => $file_to_upload,
     },
    );
    


    будет примерно так.
  • Сортировка миллиона 32-битных int'ов в 2 мегабайтах памяти на Питоне
    –1
    спасибо. интересно было почитать.
  • Perl и GUI. Сравнение тулкитов
    0
    начал цикл статей о разработке с использованием Tkx.
    santeri.habrahabr.ru/blog/65466/
  • Perl и GUI. Сравнение тулкитов
    +15
    perl «православен»
  • Perl и GUI. Сравнение тулкитов
    0
    последний релиз датируется
    Sep 19th, 2003 — Release of PerlQt-3.008 ChangeLog
  • Perl и GUI. Сравнение тулкитов
    +1
    биндинги морально устарели :)
  • Раздача Windows Web Server 2008
    0
    сходил в софтлайн,
    дали три диска (х86, х64, софт), два ключа, буклет, журнал, ручку, визитку :)
  • 10 приемов, разрушающих хрупкую красоту кода
    0
    ISO C89 требует объявления переменных в начале блока
  • История двух нитей
    –2
    семафоры решают…
  • Обзор мультиплатформенного портативного эмулятора Dingoo Digital A-320
    +1
    благодарю за информацию
  • Обзор мультиплатформенного портативного эмулятора Dingoo Digital A-320
    +1
    хотел у Вас спросить, может знаете…
    Я заказ девайс с диалэкстрим 17 июня, сегодня решил проверить, как там обстоят дела с заказом.

    в общем:
    Order received — in stock

    Dingoo… quantity: x1 ETA 7/4/2009

    ETA — это значит сколько осталось ждать пока его отправят?
    спасибо.

    Обзор на все 5 баллов, собственно он и послужил мотивацией к покупке ;)

  • Обзор мультиплатформенного портативного эмулятора Dingoo Digital A-320
    +1
    Заказал себе сабж ;)
    Жду когда доставят. платил по карточке visa через пайпаловский биллинг.

    кстати там к заряднику переходник на евророзетку нужен?