LINUX.ORG.RU

До конференции YAPC::Russia «May Perl» осталось три дня

 ,


0

0

Кто не успел зарегистрироваться или же просто упустил из виду, спешите, еще есть время! Конференция пройдет в Москве, в эти выходные (17-18 мая).

Программа уже, видимо, меняться не будет. В программе конференции следующие интересные выступления:

День первый (17-го):

  • ‎IO::Lambda - асинхронный ввод-вывод в сложных задачах‎;
  • ‎Perl и Web 2.0‎;
  • профилирование Perl-кода‎;
  • POE - событийная машина Perl;
  • сайт на Jifty за пару часов‎;
  • построение совместимых Perl/mod_perl систем с веб-интерфейсом‎;
  • Eludia.pm: практичный MVC для корпоративных Intranet-систем‎;
  • аргументы в пользу XSLT‎.
День второй (18-го):
  • Moose - постмодернистская объектная система на Perl‎;
  • ООП. Parrot. Можно использовать;
  • разработка CMS для крупного портала на примере TRAVEL.RU‎;
  • применение ORM в Perl‎;
  • использование шаблона проектирования MVC в web-проектах‎;
  • использование web-based real-time графического вывода с использованием Perl‎.

Ну и, конечно же, масса общения с людьми, любящими Perl, профессионально использующими Perl и просто заинтересовавшимися Perl :)

>>> Подробности

★★★

Проверено: Shaman007 ()
Ответ на: комментарий от pento

>Это ли изящество? Ну серъёзно, встретив такое в коде какого-нить продукта, надо программисту по пальцам бить.

ты знаешь, поддерживать вот тот цикл что выше привели (который к тому же еще и нерабочий: в силу видимо именно того что очень черезчур замысловат) гораздо сложнее чем этот простой регексп

xargs ★★★
() автор топика
Ответ на: комментарий от vit122

какая разница на чем. регексп один - ^\s*(\d+)\s*(\d+)\s*(.*)$ а искать/заменять можно чем угодно.

проблема в том что одни языки спроектированы хуже других. пёрл спректирован не лучшим образом.

anonymous
()
Ответ на: комментарий от vit122

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

не однострочник конечно, но навскидку примерно так:

%hash=map{ /(.*?)\t(.*?)\t(.*)/?($1 => {sum=>$2, name=>$3}):() } split /\n/, $text;

еще и с пропуском пустых строк :)

PS:уверен что можно конечно попроще сделать, надо подумать ))

xargs ★★★
() автор топика
Ответ на: комментарий от Ky6uk-Py6uk

>накуя так длинно ?

spritf чтобы в пять символов выровнять :)

xargs ★★★
() автор топика
Ответ на: комментарий от anonymous

>после txt_out = '' - новая строка, исчезла в сообщении

говно язык: пробела не стало и все работать перестало

то есть просто с форума скопипастить уже нельзя

xargs ★★★
() автор топика
Ответ на: комментарий от xargs

1) разделитель не табулятор, ага, а пробел. При этом между фамилией и инициалами тоже пробел, ага 2) Номера счетов пишутся полностью один раз, потом именяющиеся последние цифры пишутся без полного номера счета. При этом, емнип, там еще в строке с полным номером появляется поле "код счета", а в сокращенных строках его нет. Иначе бы можно было рассмотреть этот файл как данные с фиксированной шириной столбца 3) Заголовки столбцов появляются перед каждым полным номером счета, при этом количество записей до следующего совершенно не фиксировано, и может их быть 100, а может быть одна

vit122
()
Ответ на: комментарий от vit122

> Приведи однострочником к структурированному виду, а мы посмотрим.

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

тогда так:
s/^(\d+)\s+(\d+)/sprintf("%11s %5s",$1,$2)/gem;

Ky6uk-Py6uk
()

Скокаж тут мудачья тусуется.

timofeji
()
Ответ на: комментарий от vit122

> 1) разделитель не табулятор, ага, а пробел. При этом между фамилией и инициалами тоже пробел, ага 2) Номера счетов пишутся полностью один раз, потом именяющиеся последние цифры пишутся без полного номера счета. При этом, емнип, там еще в строке с полным номером появляется поле "код счета", а в сокращенных строках его нет. Иначе бы можно было рассмотреть этот файл как данные с фиксированной шириной столбца 3) Заголовки столбцов появляются перед каждым полным номером счета, при этом количество записей до следующего совершенно не фиксировано, и может их быть 100, а может быть одна

вот такой тогда регексп:

s/(\d+)\s+(\d+)\s+([^0-9\r\n]+)\r?\n?/sprintf("%11s %5s %s\n",length($1)>5?$_=$1:$_+$1,$2,$3)/gem;

для приведенного примера:

Номер счета Сумма Фамилия
12345600000 5000 Иванов
00001 4000 Сидоров А.П .... 00002 400 ООО "Петр"
40005500000 3333 Петрова А.В.

результат работы :

12345600000 5000 Иванов
12345600001 4000 Сидоров А.П .....
12345600002 400 ООО "Петр"
40005500000 3333 Петрова А.В.


можно еще добавить функционала.


Ky6uk-Py6uk
()
Ответ на: комментарий от timofeji

> Да к тому же, меряться регепсами дебильно.

это хорошая разминка для мозгов :)

Ky6uk-Py6uk
()
Ответ на: комментарий от vit122

Однако все условия так и не выполнены - когда я это решал, приходилось руками делить файл на подходящие под подобный регексп куски(я awk использовал) и после склеивать обработанное.

vit122
()
Ответ на: комментарий от vit122

> Однако все условия так и не выполнены

какие условия, "код счета" ? - так не был приведен пример с ним, откуда я знаю в каком месте он находится.

Ky6uk-Py6uk
()
Ответ на: комментарий от Ky6uk-Py6uk

В столбце следом за номером счета, но только в случае если счет полный - у кратких он такой же.

Вспомнил еще продолжение траха с такими файлами - уже обработанные в нормальный вид файлы надо сравнить, и получить на выходе три файла - 1) строки, в которых изменилась сумма на счете; 2) счета в первом файле, которые закрылись (нету во втором); 3) новые счета (нет в первом, а есть во втором). %)

vit122
()
Ответ на: комментарий от vit122

> В столбце следом за номером счета, но только в случае если счет полный - у кратких он такой же.

нет проблем.

исх. текст с кодом счета:
Номер счета Код Сумма Фамилия
12345600000 111 5000 Иванов
00001 4000 Сидоров А.П .....00002 400 ООО "Петр"
40005500000 222 3333 Петрова А.В.


s/(\d+)\s+(\d*)\s?(\d+)\s+([^0-9\r\n]+)\r?\n?/sprintf("%11s %5s %5s %s\n",length($1)>5?($_=$1,$m=$2,$3,$4):($_+$1,$m,$2,$4))/gem;

генерирует четыре колонки, код счета добавляется как новая колонка там где его нет.

Ky6uk-Py6uk
()
Ответ на: комментарий от Ky6uk-Py6uk

собственно результат работы:

12345600000 111 5000 Иванов
12345600001 111 400 Сидоров А.П .....
12345600002 111 40 ООО "Петр"
40005500000 222 3333 Петрова А.В.

Ky6uk-Py6uk
()
Ответ на: комментарий от xargs

> вот еще задачка для одного регвыражения: 
> имеется текст в переменной нужно в начале каждой строки этого текста поставить ее номер. 
> желательно номер выровнять по ширине (скажем 5 символов)

------------------------ Python ------------------------ 
print '\n'.join('%+5s %s'%(s[0],s[1]) for s in enumerate(txt.split('\n')))
--------------------------------------------------------

то же, покрасивше:
--------------------------------------------------------
print '\n'.join('%+5s %s' % (line[0], line[1])
                for line in enumerate(txt.split('\n'))
                )
--------------------------------------------------------

В попу Перл, в попу регекспы, в попу однострочники

anonymous
()
Ответ на: комментарий от Ky6uk-Py6uk

боже если такой регексп попадется 100% минут 30 буду его разбирать чоб
 понять что он делает.... Вот за это и не любят Перл. Программист тратит пол часа чтоб составить регексп, 
а потом каждый следующий программист по пол часа чтоб понять что-же делает этот регексп. 
Причем как тут было сказано есть еще условия которые в регекспе вообще не выидны. 
Итого в любом случае гораздо лучше сделать чтото типа

def parseBlock(block):
    """  Разбирает текст вида:
     бла-бла-бла
     
    возвращает хэш вида бла-бла-бла
    """
    def parseLine(line):
        """Разбирает строку и взвращает и тд"""
       А тут текст функций

И кстати регекспы не всегда наибыстрейшая штука  

anonymous
()
Ответ на: комментарий от anonymous

ну знаете...


сравнивать перловый

for my $k (0..$#seq) {
  ++$cnt[$k] while $content=~/$seq[$k]/gi;
  printf "$seq[$k] $cnt[$k]\n"
}

и питоновский 

for f in variants:
    print f, len(findall(f, seq))

не корректно

borisych ★★★★★
()
Ответ на: комментарий от anonymous

вместо split('\n') можно написать splitlines()

вообще-то оптимизировать можно долго.

но кому оно нужно ? анонимусам-однострочникам ?

anonymous
()
Ответ на: комментарий от anonymous

> В попу Перл, в попу регекспы, в попу однострочники

ага, жду аналог моего кода приведенного выше, только на Питоне:

s/(\d+)\s+(\d*)\s?(\d+)\s+([^0-9\r\n]+)\r?\n?/sprintf("%11s %5s %5s %s\n",length($1)>5?($_=$1,$m=$2,$3,$4):($_+$1,$m,$2,$4))/gem;

Ky6uk-Py6uk
()
Ответ на: комментарий от anonymous

> боже если такой регексп попадется 100% минут 30 буду его разбирать чоб понять что он делает.... Вот за это и не любят Перл. Программист тратит пол часа чтоб составить регексп,..

это сильно зависит от квалификации программиста :)

люди, хорошо знающие Перл легко понимают код написанный другим перл программистом.

Ky6uk-Py6uk
()
Ответ на: комментарий от Ky6uk-Py6uk

нафиг это. А то скоро на брэйнфаке писать начнем.... Неужели непонятно, что именно этим и плох перл???

anonymous
()
Ответ на: комментарий от anonymous

Да-да, спасибо

-------------------------------------------------------
print '\n'.join('%+5s %s' % (line[0], line[1])
                for line in enumerate(txt.splitlines())
               )
-------------------------------------------------------

anonymous
()
Ответ на: комментарий от anonymous

> нафиг это. А то скоро на брэйнфаке писать начнем.... Неужели непонятно, что именно этим и плох перл???

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

s/(\d+)              # сохраняем номер счета
\s+
(\d*)                # код счета (если есть) или сумма
\s?
(\d+)                #  сумма
\s+([^0-9\r\n]+) # все остальное
\r?\n?/              # убираем окончания строк (потом создадим заново, но для каждой записи)
sprintf("%11s %5s %5s %s\n",
length($1)>5?        # проверяем если строка имеет полный номер
($_=$1,$m=$2,$3,$4)  # ...то сохраняем номер счета, код и выдаем список из четырех полей

:($_+$1,$m,$2,$4)    # ...иначе - складываем оригинальный сохраненный номер счета с текущим неполным, и выдаем список из четырех полей, используя ранее сохраненное значение для кода счета.

)/gemx;


так понятней стало ?

Ky6uk-Py6uk
()
Ответ на: комментарий от Ky6uk-Py6uk

> s/(\d+)\s+(\d*)\s?(\d+)\s+([^0-9\r\n]+)\r?\n?/sprintf("%11s %5s %5s %s\n",length($1)>5?($_=$1,$m=$2,$3,$4):($_+$1,$m,$2,$4))/gem;

Строчка — родная сестра этой, да? $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see

А вообще, это п*здец. За такой код я бы увольнял сразу. Пох, что он выполняет заданное и пох, что его может быть прочтет другой перловик — maintainability и readability кода много важнее любых других параметров.

Назовите причину, по которой программист имеет право писать такой код в серьезном проекте?

anonymous
()
Ответ на: комментарий от anonymous

Перл - один из самых читабельных языков для умеющих читать

> maintainability и readability кода много важнее любых других параметров

Как уже было сказано, специалист по Перлу поймёт код другого специалиста без каких-либо проблем. Тем более такие фундаментальные вещи как regexps и sprintf (самому-то не смешно признаваться в такой неграмотности?). Если сравнивать другие языки с Перлом, то лично для меня они сильно уступают ему по читабельности. Я сказал "лично для меня" потому как это сугубо индивидуально. Кто-то владеет свободно пятью натуральными языками, а для кого-то и один русский оказывается слишком сложным. Не спорю, для кого-то лишняя лексема в языке может вызывать переполнение оперативной мозговой памяти, но зачем же хвалиться этим.

Впрочем, если цель - засадить за maintainability неспециалиста, то возможно лучше для него выбрать dumbed down язык, чтобы даже такие же неспециалисты смогли его прочесть.

> Назовите причину, по которой программист имеет право писать такой код в серьезном проекте?

Краткость - сестра таланта. Меньше кода - меньше багов. Назовите причину, по которой программиста надо засадить за бедный язык, где за синтаксическими издержками с кучей искусственных запретов не видно самого алгоритма.

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

mihalych ★★★
()
Ответ на: комментарий от anonymous

> Сравнивать перл и питон по красоте синтаксиса - это как сравнивать молоток и китайскую вазу, тоже по красоте.

Скорее, как сравнивать навороченную профессиональную фотокамеру с мыльницей. Мыльница красивее, вероятно, раз её покупают. Но не для меня.

mihalych ★★★
()
Ответ на: комментарий от mihalych

mihalych - старый ты пердун, ты забыл уточнить:

_Старинную_ профф камеру и современную дигиталку-мыльницу!

Старик перловод кряхтит, разводит реактивы (с тайной гордостью что никто этого повторить не может :) - говорит "не моргать 40 секунд" :) и "сейчас вылетит птичка"!

Проффесионал? Безусловно! Магия? А то!

Но тут выходит маленькая девочка с эмблемой питона, достает Canon S80 и просто жмёт на кнопку :)

anonymous
()
Ответ на: комментарий от anonymous

Ох анон, молодой ссыкун, ты забыл уточнить, перл хоть на 2 года и старше питона, но востребованность у него примерно в 10 раз больше, чем у мертворождённого питона, кторый лучше сравнивать с фотоапарами, которые цепляют в виде брелка на ключи.
Рекламируют их везде- но никто не покупает, так как хоть и выглядит прикольно, но толку никакого.

anonymous
()

> специалист по Перлу поймёт код другого специалиста без каких-либо проблем

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

anonymous
()
Ответ на: комментарий от anonymous

>боже если такой регексп попадется 100% минут 30 буду его разбирать чоб понять что он делает....

дык на КАЖДОМ НОВОМ языке более менее сложные конструкции надо разбирать как работают

а потом когда освоишься тогда наоборот чем меньше наворотов в виде циклов-ветвлений-итп в решении задачи тем проще разобрать

xargs ★★★
() автор топика
Ответ на: комментарий от anonymous

> лет двадцать назад я мог читать код с перфокарт. но тогда это было вызвано необходимостью. заниматься подобными вещами теперь могут только люди, не нашедшие другого способа добиться признания у окружающих.

нормальный перфоратор печатает код по верхнему обрезу карты.

PS уж больно много "вторичного продукта" :)

anonymous
()
Ответ на: комментарий от Ky6uk-Py6uk

>приведенный мной код - это элементарщина, там нечего даже разбирать,

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

xargs ★★★
() автор топика
Ответ на: комментарий от xargs

> то и вообще суть кода в глаза просто бросаться будет Очень верное замечание :)

pento ★★★★★
()
Ответ на: комментарий от xargs

Ага, визуальную среду разработки для перла, иначе просто нифига не понятно, что эти извращенцы накодили.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

>Ага, визуальную среду разработки для перла, иначе просто нифига не понятно, что эти извращенцы накодили.

редактор с подстветкой синтаксиса (например vim) и комплишенами нужен для всего

хоть perl- хоть shell-скрипты писать, хоть просто email-письма

xargs ★★★
() автор топика
Ответ на: комментарий от xargs

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

wfrr ★★☆
()
Ответ на: комментарий от wfrr

не знаю, я как-то сейчас исключительно перлом на жизнь зарабатываю и довольно таки неплохо

на питон таких вакансий нет

на руби правда звали на те же примерно деньги но неинтересен мне руби :)

xargs ★★★
() автор топика
Ответ на: комментарий от xargs

> не знаю, я как-то сейчас исключительно перлом на жизнь зарабатываю и довольно таки неплохо

а вы счастливый человек ! У меня сейчас примерно 80% PHP и 20% Perl :) а лет 6-8 назад было наоборот. а 10 лет назад было 100% перл :)

Ky6uk-Py6uk
()
Ответ на: комментарий от Ky6uk-Py6uk

>а вы счастливый человек ! У меня сейчас примерно 80% PHP и 20% Perl :) а лет 6-8 назад было наоборот. а 10 лет назад было 100% перл :)

если ты в мск (кстати пойдешь на сабжевую конфу?) то найти работу где 100% перла совсем несложно

я вот аж две недели искал ;)

xargs ★★★
() автор топика
Ответ на: комментарий от xargs

>не знаю, я как-то сейчас исключительно перлом на жизнь зарабатываю и довольно таки неплохо

А уж сколько народу на выжуалвайсике зарабатывает ещё более хорошие бабки ...

>на питон таких вакансий нет

То есть Google тебе сказали - ты риально крутой питонщик - но нам питон не нужен? Аха-аха верим-верим :)

>на руби правда звали на те же примерно деньги но неинтересен мне руби :)
>xargs

Дык. Перловоды - это секта, им окружающий мир паралелен :)

anonymous
()
Ответ на: комментарий от anonymous

Ну, Ололо, приведа мне данные на другой поисковик по вакансиям, доказывающий востребованность Питона.
Или ты работу ищещь только в Гугле и другие конторы тебя не интересуют?

anonymous
()
Ответ на: комментарий от anonymous

>Дык. Перловоды - это секта, им окружающий мир паралелен :)
О, хоть один понимающий анонимус попался.
Именно секта, и после обряда инициации программист начинает понимать перл. А у питонистов такого нет, по этому питонисты питон не понимают, но чтоб никто не заметил устраивают холиворы.
И вообще, язык без TIMWTOTDI это не язык, это средство разработки, которым пользуются оутсорсеры, чтобы заказчику понятней было, в то же время Перл это средство самовыражения, это не для реальных пацанов, это для людей творческих.

И вообще, что спорить, через пару лет все на parrot сидеть будем, и джава тоже, и сишарп, вообще всё.

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

vany
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.