Saturday, January 21, 2012

Auto_increment magic behavior (Perl)

1. Задача

Недавно в рассылке moscow.pm увидел небольшую задачку, вроде бы ничего особенного?

$perl -E '$s1="a1"; $s2="1a"; $s3="az"; say ++$s1; say ++$s2;'
a2
2
ba

Показал ее коллегам, многие дали верный ответ, но никто не смог объяснить.

2. Auto_increment (++)

Из офиц. документации следует, что auto_increment работает двумя способами:
- обычный инкремент чисел
- магический инкремент строк

2.1 Инкремент чисел

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

$str = "abc1";
$str += 0;
say ++$str;

Output: 1

2.2 Инкремент строк

Выполняется только при соблюдении следующих условий:
- переменная не пуста (содержит строку)
- переменная использовалась до этого только в текстовом контексте
- и соответсвует регулярному выражения /^[a-zA-Z]*[0-9]*\z/

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

2.3 Алгорит инкремента строк
 
Инкремент строки связан с диапазоном соответсвующих строк.
# $var = 'ab9';
# say ++$var;
# ac0

Инкремент тут производится в диапазоне. (aa0 .. zz9) и т.д.
aa9
ab0
..
ab9 --> текущая строка
ac0 --> строка после инкремента
ac1
..
ac9
ad0

Давайте перейдем к более интересному примеру:

# $var = 'zz9';
# say ++$var;
# aaa0

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

zy0
..
zy9
zz0
..
zz9  -> текущая строка
aaa0 -> строка после инкремента
..
aaa9

Ошибочно думать чтот тут инкрементится каждый символ в строке.

2.4 А как же декремент (--) 

Магическое поведение не распространяется на auto_decrement (--)
Перед декрементом, он преобразует переменную в числовой контекст, поэтому:

$var = "aaa1";
say --$var;

Output: -1

2.5 Закрепление

Ну и на последок для закрепления:

my @vars = (
    "a1a",
    "012",
    "zaz",
    "1az",
);

foreach my $var (@vars) {
    say ++$var;
}

Output:
1
013
zba
2

2.7 Ресурсы

Sunday, November 27, 2011

Презентация хитрости Perl от Brian d Foy

В начале ноября прошел YAPC::Brasil 2011.
 
Несколько презентаций уже доступны, одна их которых принадлежит Brian d Foy (My Perl bag of Tricks). 


Вот несколько хитростей Perl представленных в этом докладе.

1) Используем open не только для открытия файлов.

Открывать с помощью open можно не только файлы, а также переменные содержащие информацию.

my $string = "1\n2\n";
open my $fh, '<', \$string; 

2) Работа с большим количеством файлов 

Работа с массивом файлов, даже в случае если один из файлов не откроется, скрипт продолжит работу. 

foreach my $file ( @files ) {
    open my($fh), '>', $file or do {
        warn "... $!\n";
        next FILE;
   }
}

3) Работаем с данными в исходнике после __END__.

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

my $data = do {
     local $/; ;
};
...

__END__

....

4) Современная проверка с помощью ref

Автор приводит свою технику проверки ссылки с помощью ref,
Лучше использовать прототипы ссылок, так как 'ARRAY' будет захардкожен, то можно неправильно его написать.

if ( ref $r eq 'ARRAY' ) - устаревшая техника

if ( ref $r eq ref [] )
if ( ref $r eq ref {} )
if ( ref $r eq ref sub{} )
if ( ref $r eq ref qr// )

5) joinим все подряд

Еще интересное применение оператора join
 
my $string = join "\n", @entries; - последняя строка не будет содержать переноса, немного неудобно.
$string .= '\n';

print join "\n", @entries, ''; - а этот вариант позволит справится нам с последней строкой.


6) Переменные по умолчанию.

Этот способ задания переменных по умолчанию, мне очень нравится.
action( name => 'mike');

sub action {
     my %defaults = (...);
     my %config = (%defaults, @_);
...;

}

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

Thursday, May 19, 2011

"Swap for change"



   Я познакомился с несколькими волонтерами, которые организовывали акцию “Swap for change. Все они из университета Лулеа.  

    Суть акции заключалась в следующем. Ребята в течение месяца собирали вещи ненужные людям в университете, в основном одежда, обувь и другое. За каждую сданную вещь человек получал купон (1 купон = 1 вещь). В конце мероприятия можно было обменять купоны на другие вещи. Все что осталось после обмена направлялось нуждающимся бездомным людям и беженцам, проживающим на севере Швеции.

Складываю кофту

Собранные вещи

Волонтеры за работой

Складываем, складываем :-)
     В акции в основном участвовали студенты 2-3 курса университета, все Шведы. Всего в команде было 8 человек, 3 парня и 5 девушек. Я один был студент по обмену. Ребята меня хорошо приняли, несмотря на то, что я не знаю Шведского языка. Шведы очень хорошо знают английский язык, его им прививают еще в школе.

    
   Работа заключалась в приеме вещей, складывании и сортировке их. Вещей за один месяц принесли очень большое количество около 5000 штук. В день мы принимали примерно от 400 – 1500. Организация была отличной. Расклеивать объявление в университете и на остановках города было не трудно, в результате привлекли большое количество людей. Эта акция проводилась в университете в первый раз. Люди приносили ненужные вещи достаточно хорошего качества. Были некоторые требования, предъявляемые к ним: чистота и хорошее состояние. Одна девушка наверно за раз сдала около 200 экземпляров (юбки, джинсы, платья и т.д.).

Перед открытием

В ожидании
Украшения
     Думаю, у каждого в гардеробе найдется пару десятков ненужных вещей. В акции участвовали не только студенты, но и местное население. Спонсоры для организации тоже нашлись быстро, с вешалками помог магазин H&M. Нашли девушек модельной внешности, чтобы представить коллекцию собранных вещей перед началом обмена. Одна из компаний предоставила услуги доставки вещей в приют бездомных и беженцев в соседнем городе этого региона.

   За время участия в акции я познакомился с настоящими шведскими студентами, узнал, почему они приехали на север учиться. У всех в основном ответ хотят не зависеть от родителей. Завести знакомство со Шведами очень трудно, если ты не знаешь Шведского языка. Они не сильно открытый народ и сильно с иностранцами не пересекаются., но если нужно в помощи не откажут. Команда волонтеров познакомилась с географией России,  теперь они знают, что кроме Москвы и Санкт-Петербурга в России есть другие прекрасные города.

   Заключение

   Акция удалась, были собрано около 5000 вещей из них половина была обменяна, остальная часть отправилась нуждающимся. Обмен происходил в студенческом кафе. Все происходило культурно, людей пришло очень много около 500 человек. Все стояли и ожидали своей очереди, вещей хватило всем. Больше 60% вещей было отправлено нуждающимся. 
   Следущую акцию ребята проводили под названием "Running for change", все желающие пробежали кросс и внесли пожертвования Шведским эмигрантам, я был в отъезде. 

Friday, April 22, 2011

Курс искусство ведения презентаций / English presentation


Для более детального изучения системы образования Швеции, я взял курс English presentation. Курс о том, как правильно делать презентацию на публике. Довольно полезный и увлекательный предмет. Его стараются пройти почти все студенты по обмену. 

Первым делом я зарегистрировался на этот предмет через Интернет. Примерное количество студентов на этом курсе около 30. Сразу было доступно расписание, так же в сети. Все необходимые материалы можно скачать.
- Контакты преподавателя.
- План занятий
- Условия сдачи

На первой лекции узнал, что весь нужный материал преподаватель нам будет выдавать перед каждым занятием (цветные распечатки текущей темы). Чтобы успешно сдать курс необходимо посетить 80% занятий, если посещаешь меньше - твои проблемы, справки и прочие радости Российской студенческой жизни не действуют. Каждую пару преподаватель отмечает студентов. У него очень хорошая память и всех он уже называет по именам. Никто не старается схитрить и т.д. Ребята занимаются, прежде всего, для себя. В конце курса будет проходить нечто похожее на наш зачет, каждый должен будет выступить с хорошей презентацией на любую тему.

Занятие проходит на одном дыхании, я практически не устаю и не засыпаю. Преподаватель из Англии, ведет очень интересно. Мы делимся на группы по 5-6 человек и обсуждаем определенные темы, и решаем по ходу вопросы, поставленные преподавателем. В этом процессе участвуют все.

География студентов очень разнообразная Сирия, Турция, Словакия, Венгрия, Германия, Испания, Франция, Италия, Сингапур, Китай, Южная Корея, Северная Ирландия. Из России я только один.

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

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

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

Мини столовые


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

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

Уютно

На всех хватит

Для сотрудников университета (преподавателей, вспомогательного персонала и аспирантов) имеются специальные кафе. В которых предоставляется немного больше сервиса, чем в студенческих мини столовых для студентов. Стоят мягкие диваны и кресла, столы, кофе машины, чайники, тостеры, плиты, кружки, тарелки и др. Три раза в неделю подвозят свежие фрукты в эти кафе, это небольшой бесплатный бонус. Сюда не разрешается входить обычным студентам.
Для преподавателей


Нас этот запрет не коснулся :-)

Friday, April 1, 2011

Система печати, копирования и сканирования ~ Быстро, гибко, доступно


Что нужно для счастья студенту? Конечно же недорогая доступная печать, без очередей :)

Обычное МФУ + считыватель для студенческой карты

Система печати в LTU очень удобная, она привязана к студенческой карте. 
Нужно сделать несколько действий
- зарегистрировать на специальном портале
- положить деньги на свой акаунт через платежную систему visa, master card.
- установить приложение, которое позволит добавить принтеры доступные по всему университету. 

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

Печать 

Тут существует два варианта печати:
- Мгновенная печать, отправляем файл на печать, и он распечатывается на указанном принтере.
- Печать с ожиданием, файл отправляется в очередь, и вы можете распечатать его на любом принтере со считывателем карт. Очень удобно выходя из лаборатории отравить на печать, и уходя из университета после тренировки распечатать в удобном тебе месте из твоей очереди печати.

Сканирование 

Сканировать документы одно удовольствие, сканируешь документ, и результат отправляется в выбранном формате на локальный email, который привязан к твоей карте. Не нужно никакого сменного носителя, чтобы сохранить файл. Работает система как часы, файл на почту приходит быстро. Очень большое количество настроек, позволяет гибко настроить нужное качество и размер документа.

Копирование 

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

Цена 

Цена за печать приемлемая. Очереди бывают только в библиотеке к принтерам, в остальных местах никогда очередей не бывает. Большие пачки листов А4, А3 лежат открыто рядом с МФУ, большого интереса у студентов не вызывают. У нас бы растащили в первый же день.

Надежды
Надеюсь когда-нибудь и в нашем университете появится подобные вещи.

Небольшая инструкция


 

Библиотека


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

Тут как в морге :)

Приятно сидеть и листать книжки

Вид сверху
Занимается народ    
На входе
Для пользования библиотекой выдается специальная пластиковая карта, с помощью нее регистрируешь книжки и забираешь их домой. 

Поиск книги проходит примерно по такому процессу:  
  • - Заходим на сайт библиотеки, вбиваем название книги
  • - Если книжка есть в бумажном варианте, указана полка, где ее можно взять.
  • - Период, на который книжка выдается
  • - Возможен вариант, что книга доступна в *.pdf формате 
Так как до некоторых полок не все смогут дотянуться, есть удобные подставки.

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

Регистратор

Возврат книг
Есть возможность мониторить, какие книжки ты брал через online систему. За несколько дней до дедлайна, приходит уведомление на почту. Штраф за просроченную книгу от 50-100 крон (250-500 рублей).

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

У нас в библиотеке в СибГУТИ безлюдно, а если и студенты там есть, то большинство просто на стульях просиживают время и разговаривают.