YAPC::Russia 13–15 мая в Москве

Ух, что-то запоздал с публикацией, но все же решился на перепост habrahabr.ru/blogs/perl/118681/ =)

С 13 по 15 мая в Москве пройдет четвертая конференция YAPC::Russia, посвященная языку программирования Perl и его сообществу. В этом году конференция совмещена с ежегодным украинским Perl-воркшопом Perl Mova.

Трехдневная программа состоит из хакатана по Perl 6 и докладов про современные версии языка и приложения на их основе.

В первый день, пятницу 13 мая, будет организован хакатон про Perl 6. Хакатон — неформальное собрание программистов, желающих принять участие в разработке текущей версии компилятора Perl 6 Rakudo. Руководить процессом приедет живущий в Швеции один из ведущих разработчиков компилятора Джонатан Вортингтон. На хакатон также приезжают Мартин Берендс и Карл Мэсак, принимающие активное участие в разработке Rakudo и Perl 6.

Второй и третий день — суббота и воскресенье 14 и 15 мая — отведены под выступления и доклады о практической и теоретической сторонах разработки на перле.

Список докладов на сегодня выглядит так:

На русском языке

Наш специальный гость Константин Осипов. ‎Tarantool: NoSQL хранилище с открытым исходным кодом‎.‎

  • Вячеслав Матюхин. Поиск по блогам Яндекса‎‎.
  • Алексей Капранов. Программа одним файлом.
  • Андрей Шитов. Что нового в Perl 5.14‎.‎
  • Анатолий Шарифулин. Почему Mojolicious?‎
  • Александр Загацкий. Использование Perl 6 Pod.‎‎
  • Илья Чесноков. Использование исключений при разработке на Perl.‎

По-английски

  • Martin Berends. Perl 6 Implementations in May 2011.‎
  • Jonathan Worthington. Inside A Compiler.‎
  • Carl Mäsak. Athlete programming‎.‎
  • Jonathan Worthington. Nested Languages: Beyond Strings‎.‎
  • Martin Berends. Perlduino‎.‎
  • Jonathan Worthington. Jonathan Worthington ‎«Rakud’oh!»: Making our compiler smarter.‎

Блиц-доклады

  • Анатолий Шарифулин. Облачные хостинги: DotCloud и Phenona.
  • Александр Котов. Perl remote jobs.
  • Юрий Ершов. Шаблонный движок в одну строчку.
  • Андрей Шитов. Как очистить массив‎.
  • Валерий Студенников. Programming & Zen‎.
  • Анатолий Шарифулин. Мой Modern Perl.
  • Андрей Шитов. YAPC::Europe в Риге.

Регистрация и прием докладов еще продолжаются.

Отдельной строкой мы приглашаем разработчиков Яндекса рассказать о том, как они собираются переходить с Perl на JavaScript.

Участие в конференции YAPC::Russia бесплатное: достаточно зарегистрироваться на сайте мероприятия. Конференция пройдет в помещении центра «Цифровой октябрь» на Берсеневской набережной, 6.

Конференции серии YAPC::Russia проходят с 2007 года в городах России и соседних стран: Москве, Санкт-Петербурге, Киеве, Риге, Минске, Софии, Ташкенте, Екатеринбурге, Ростове-на-Дону, Владивостоке и Кастанае.

Язык программирования Perl создан в 1987 году. В XXI веке язык был существенно обновлен, что вызвало начало новой волны популярности Perl.

Участники YAPC::Russia получат скидочный купон на YAPC::Europe 2011.

event.perlrussia.org/mayperl4/

Интересные примеры на PowerShell | PowerShell и другие скрипты

Недавно натолкнулся вот на этот пост. В нём приведено несколько интересных примеров того “как в Perl одна-две строчки кода могут сделать больше, чем десять строк в каком-нибудь другом языке программирования”

😉 Мне показалось что будет интересно сравнить как эти примеры выглядели бы на PowerShell 😉 И главное – это может быть полезно тем кто уже знает Perl но сейчас изучает PS.

Как известно PowerShell очень молодой язык, и разумеется он унаследовал множество элементов других языков, и следовательно местами схож с многими из них. Я часто слышу о коде PowerShell фразы типа “О, да они же украли PHP!”, “Это же C# с более простым синтаксисом”. Но по-моему больше всего PowerShell похож на Perl. Это и не удивительно – Perl был одним из любимых языков авторов PS, и это здорово — многим хорошим особенностям в PS мы обязанны именно Perl’у.

Hats off to superstar Larry Wall and Perl, very few people and technologies that have had the level of (positive 🙂 ) impact these 2 have had on the industry.  The world is a better place because that guy was born!

Jeffrey Snover

Это была отмазка 😉 Теперь перейдем к коду 🙂

Сразу скажу – мне кажется это просто удачная подборка попалась, многие примеры удалось записать на PS сильно короче, и главное – понятнее (субъективно конечно 🙂 ). В очень многих областях Perl легко даст фору PowerShell’у в плане компактности кода, может быть даже и некоторые из этих примеров на Perl можно записать гораздо более красиво, так что буду рад если знающие Perl люди оставят свои конструктивные комментарии 🙂

Я цитирую только описания, код на Perl можно посмотреть в оригинальном посте.

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

#Встроенный оператор -contains            
$array -contains $element            

2. Удалить из массива @arr элементы, которые есть в массиве @skip.

#Вопросительный знак - алиас для where            
$arr | ? {$skip -notcontains $_}

Вместо пункта 3 я написал красивый (субъективно разумеется 😉 ) фильтр:

filter Replace-Words            
{            
    foreach ($arg in $args) {            
        $pair = $arg.split("=",2) #Разрезаем аргумент на 2 части по знаку             
        $_ = $_ -replace $pair[0],$pair[1] #Заменяем вхождения в строке            
    }            
    $_ #Выдаём результирующую строку            
}

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

$text = Get-Content .\test1.txt            
$text | Replace-Words плохое=хорошее яблоки=груши | Set-Content . \test1.txt

4. Вывести список имен файлов и каталогов в заданной директории, отсортированный по дате последнего доступа. Обычно глобы сортируют список по имени файлов и каталогов. Для сортировки по дате последнего изменения, заменить цифру 8 на 9.

В PS для сортировки по дате изменения надо заменить не 8 на 9, а LastAccessTime на LastWriteTime 😉

ls | sort lastAccessTime

5. Удалить повторяющиеся элементы в массиве.

$arr | select -Unique

6. Перемешать элементы массива

$arr | sort {Get-Random}

Командлет Get-Random появился только в PS 2.0, в 1.0 можно сделать так:

$r = New-Object random            
$arr | sort {$r.next()}

7. Выбрать случайный элемент в массиве можно как минимум двумя способами. Можно перемешать элементы, как в предыдущем примере, и выбрать нулевой, а можно в одну строчку:

$arr | Get-Random

8. Аналог PHP функции urlencode.

[System.Uri]::EscapeUriString(http://проверка)

Понравилось это:

Нравится Загрузка…

Как создать массив нулей в Python?

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

Здесь мы рассмотрим различные подходы к созданию массива нулевых элементов. В этой статье мы рассмотрим различные подходы:

  • Использование простого умножения
  • Использование цикла
  • Использование понимания списка
  • Использование встроенного метода numpy.zeros()
  • Использование функции itertools.repeat()
  • Использование bytearray

Метод 1: использование простого умножения

В этом примере мы умножая массив нулей на 9. Взамен мы получим массив с 9 элементами нулей.

Python3

обр0 = [ 0 ] * 9

печать (обр0)

Выход: 900 58

 [0, 0, 0, 0, 0, 0, 0, 0, 0] 

Метод 2: Использование цикла

В этом примере мы создаем массив 0, используя цикл for в диапазоне от 0 до 10. 32 []

для и для диапазон ( 0 , 10 ):

     arr1.app конец( 0 )

      

печать (обр1)

Вывод:

 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

Метод 3: Использование понимания списка

9 0057 Пример 1: Создание одномерного массива с использованием понимание списка

Как мы знаем здесь, цикл for создаст такой список, и мы перебираем ноль внутри списка до заданного диапазона.

Python3

обр = [ 0 для 9003 1 элемент в диапазон ( 5 )]

печать ( arr)

Вывод:

 [0, 0, 0, 0, 0] 

Пример 2: Создание двумерного массива с использованием генератора списков

В этом примере мы создаем двумерный массив с использованием генератора списков в Python для создания нулей из 5 строк и 10 столбцов.

Python3

обр2 =

[[ 0 для 90 031 col in range ( 5 )] для ряд в диапазон ( 10 )]

печать (обр2)

Вывод:

 [[0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0]] 

Метод 4: Использование встроенного метода numpy.zeros()

В этом примере мы создаем массив NumPy с нулями в качестве numpy.zeros() используется функция, которая возвращает новый массив заданной формы и типа с нулями.

Python3

импорт numpy as np

 

arr3 9003 2 = np.zeros(( 2 , 2 , 3 ), dtype = [( 'x' , 'int' ), ( 'y' , 'float' )])

печать (arr3)

печать (arr3.dtype)

Вывод:

В выходных данных i4 задает 4 байта целочисленного типа данных, тогда как f8 задает 8 байтов типа данных float.

 [[[(0, 0.) (0, 0.) (0, 0. )]
  [(0, 0.) (0, 0.) (0, 0.)]]
 [[(0, 0.) (0, 0.) (0, 0.)]
  [(0, 0.) (0, 0.) (0, 0.)]]]
[('x', '

Метод 5. Использование функции itertools.repeat()

Модуль Itertools — это инструмент с эффективным использованием памяти, который используется сам по себе или в сочетании для формирования алгебры итераторов.

Здесь мы создаем итератор, используя функцию repeat(), эта функция принимает значение в качестве первого аргумента, а затем второй аргумент принимает количество повторений значений.

Ниже примера мы берем 0 в качестве значения, а второй параметр 5 — это количество повторений, а затем преобразуем temp_var в список.

Python3

импорт itertools

 

temp_var 9 0031 = itertools.repeat( 0 , 5 )

печать ( список (temp_var))

Вывод:

 [0, 0, 0, 0, 0] 
90 396 Способ 6. Использование массива байтов

Чтобы создать массив нулей с помощью подход bytearray. Это создаст массив байтов из 10 элементов, каждый из которых инициализирован 0. Затем вы можете распечатать массив байтов, чтобы увидеть список нулей.

Python3

массив нулей = bytearray( 10 ) 90 032

нули = [ int ( str (x)) для x в массив нулей]

печать (нули)

Выход

 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 

Списки и массивы (Learning Perl, 3-е издание)

Содержание:

Доступ к элементам массива
Специальные индексы массива
Литералы списка
Присвоение списка
Интерполяция массивов в строки
Структура управления foreach
Любимое значение Perl по умолчанию: $_
Скаляр и контекст списка
в контексте списка
Упражнения

Если скаляр был «единственным числом» в Perl, как мы его описали. в начале главы 2, "Скалярные данные", «множественное число» в Perl представлено списками и массивами.

Список — это упорядоченный набор скаляров. Ан Массив — это переменная, содержащая список. В Perl, эти два термина часто используются так, как если бы они сменный. Но, если быть точным, список — это данные, а массив - это переменная. У вас может быть значение списка, которого нет в массив, но каждая переменная массива содержит список (хотя этот список может быть пустым). На рис. 3-1 представлен список, независимо от того, хранится он в массиве или нет.

Рис. 3-1. Список из пяти элементов

Каждый элемент массива или списка — это отдельная скалярная переменная с независимым скалярное значение. Эти значения упорядочены, т. е. имеют конкретная последовательность от первого до последнего элемента. Элементы массива или списка проиндексировано маленькими целыми числами, начиная с ноль[67] и считая единицами, поэтому первый элемент любого массива или список всегда является нулевым элементом.

[67]Индексы массивов и списков всегда начинаются с нуля в Perl, в отличие от некоторых других языков. В раннем Perl было возможно изменить начальный номер индексации массива и списка (не для только один массив или список, но для всех сразу!). Ларри позже понял, что это ошибка, и ее (аб)использование теперь сильно обескураженный. Но, если вам крайне любопытно, поищите $[переменная в man-страница perlvar .

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

Массивы и списки могут содержать любое количество элементов. Самый маленький не имеет элементов, а самый большой может заполнить всю доступную память. Опять же, это соответствует философии Perl. «без лишних ограничений».

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

элементы массива нумеруются с помощью последовательные целые числа, начиная с нуля и увеличиваясь на единицу для каждого элемент, например:

 $fred[0] = "ябба";
$fred[1] = "дабба";
$fred[2] = "ду"; 

Само имя массива (в данном случае "fred") из совершенно другого пространства имен, чем используют скаляры; ты мог бы скалярная переменная с именем $fred в той же программе, и Perl будет относиться к ним как к разным вещам и не будет сбит с толку.[68] (Однако ваш программист может быть сбит с толку, поэтому не капризно делайте все ваши имена переменных одинаковыми!)

[68]Синтаксис всегда недвусмысленный - возможно, хитрый, но недвусмысленный.

Вы можете использовать элемент массива, такой как $fred[2] в каждое место[69], где вы можете использовать любую другую скалярную переменную, например $фред. Например, вы можете получить значение из элемент массива или измените это значение теми же выражениями мы использовали в предыдущей главе:

[69]Ну, почти. Самое заметное исключение заключается в том, что управляющая переменная цикла foreach, который мы увидим позже в этой главе, должен быть простым скаляром. А есть и другие, такие как «косвенный слот для объектов» и "косвенный слот дескриптора файла" для печати и принтф.

 print $fred[0];
$fred[2] = "Диддли";
$fred[1] .= "что есть"; 

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

 $число = 2,71828;
напечатать $fred[$number - 1]; # То же, что и при печати $fred[1] 

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *