Wednesday, September 12, 2012

... заиграет музыка

Edifier C200 несколько превзошли мои ожидания. Они большие! Нет, правда. Представлял их себе иначе. Хороший размер, как сказал парень, выдавший коробку.
Коробка (справа) в сравнении со стулом (слева).
На ультрабуке мало музыки. Ну очень мало. Песни с концерта Queen от 3 июля (в оригинальном исполнении, конечно), альбом J. Coulton'а с последней раздачи Humble Music Bundle и... все. Но я точно знал, что буду слушать в первую очередь: '39.
Рапсодия была второй, но при прослушивании хотелось визжать от восторга! Стоп. Визжать? Нет, я серьезный человек. Безмерно ликовать и радоваться? Подходит... для лемура. Не описать мне то состояние (вероятно, дело не только в колонках).
Как-то так теперь все и выглядит
Слух у меня так себе. И это еще я себя похвалил. Музыку выбираю так: нравится - слушаю, не нравится - не слушаю. Любимой группы просто нет, есть песни, которые нравятся. Направления в музыке не различаю, названия песен и групп не запоминаю. Альбомы могу слушать на шаффле. Могу перемешивать альбомы и исполнителей.
Из последних могу отметить только Rise Against - слушаю очень часто. Этому даже есть объяснение - от них легко отвлечься и уйти в работу. И приятно потом возвращаться. Когда меня спросили про наиболее зацепивший альбом, сказал, что такого нет. Это правда лишь от части: их на самом деле два (последних). Они постоянно есть в плейлисте. Но не уверен, что это именно то "зацепил", которое имелось ввиду.

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

Sunday, September 9, 2012

Дороги, колеса, огород

Дороги.
Все-таки дураки.

Колеса.
Пора. Пора ехать на малую родину. Объездная дорога через Кстово свободна, поэтому едем быстро. Скопление фур. Какой-то странный звук. Это у нас? Вроде нет... Хотя. Лучше остановиться. Я тормоз. Не делайте как я. Иначе и у вас будет прокатанный профиль у резины. До дыр... Причина прокола пожелала остаться инкогнито (даже для участников происшествия). Колесо заднее. Поменять не долго (хоть тут я не тупил), но все равно неприятно. Дальше ехали без приключений.

Огород.
Люблю я работать на земле. Копать, пахать, сажать... После офиса это лучший отдых. Но физически довольно тяжело. А картошку пора выкапывать. Площадь небольшая - каких-то 4 сотки. Копать под мотоблок быстро, но нагрузка на плечевой пояс солидная. На мотоблоке мы с отцом по очереди. Через полчаса половина выкопана. А вот и собиральщики.
Общий вид и мои любимые Зайцевы на горизонте
Теперь я как тузик бегаю с ведрами. Два двойных - два захода по два ведра, два двойных, два двойных, три двойных! Это две группы собиральщиков, идущих навстречу одна другой, встретились и дружно заполнили все ведра. Под конец сборов пошел дождь. "Это мираж, держать строй!" - мое словестное недержание. Закончили. Такой вот урожай:
Урожай средний, но на всех трудящихся хватит. Крупной не много, мелочи тоже. Но средний размер все же ниже среднего :) На зиму хватит. И ведь все свое, без ГМО.
А еще есть тыква. Много тыквы!

В детстве мы потрошили ее, вырезали страшные глаза и улыбку Джокера, внутрь вставляли свечку и выставляли эту прелесть на дороги. Машины объезжали, мотоциклисты обычно сбивали. Мы не унывали - тыквы-то много. А еще в тыкве прячутся очень вкусные семечки.

Внеплановое.
От Кемли до Саранска 60 км, можно доехать очень быстро. Но сейчас половина дороги в ремонте, а половина оставшейся половины без разметки, что позволяет оставить непозволительно низкие ограничения скорости. Двухлитровый хондовский двигатель так и подмывает притопить посильнее. Ограничение 40 км/ч. ОК, еду 60. Вот только спидометр у меня в милях. 80. А вот и ремонтные работы...
От Саранска до Кемли 60 км, можно доехать очень быстро. Хорошая штука круиз-контроль, позволяет жестко зафиксировать свою скорость. Осталось только руль автоматике доверить. Нет уж, я сам поеду. 95.

Кажется, о чем-то я так и не написал.

Friday, August 31, 2012

Когда мне нечего написать

Когда мне нечего написать, я не пишу. Даже если пишу о том, что не пишу, когда писать не о чем. Это ведь даже правильно - не писать, когда нет темы для написания. И я не пишу. Когда не о чем писать. Но сейчас-то ведь не тот случай, когда мне не о чем написать, и я не пишу? А может, это как раз случай, когда... Ну, вроде понятно уже.
Примерно такая каша в голове последнее время. Примерно так же выглядят мои последние тесты. Примерно... С трудом вспоминаю, что происходит в тесте, написанном чуть больше недели назад. Не работает то, что работать должно. То, что работать не должно, тоже не работает. Великий язык Перл. Ага, write-only language. Сегодня впервые про это услышал. Люблю Перл, когда пишу на нем. Ненавижу нас обоих, глядя на то, что понаписал больше месяца назад. Хотел именно про это и рассказать, кстати. И сегодня же попалась статья на эту тему. Бывают же совпадения. Не редко. Что-то, заинтересовавшее меня, может так или иначе проявляться в окружающем мире.
Будьте осторожны со своими желаниями, они осуществимы. Но детали решают все. Хотел отдохнуть от работы - неделю провалялся больной. Хотел написать статью - прочитал что-то похожее. Но написать важнее, так сам себе доказываю, что думать не разучился. А ведь первые обзацы шли с трудом...

Следующие две строчки делают одно и то же (спасибо начальнику за второй вариант):
my $var = $x > $y ? $x : $y;
my $var = ($x, $y)[$x < $y];

А это просто шутка:
sub first_and_last_quarters($) {
    my $arr_ref = shift;    
    return [@{$arr_ref}[0..($#{$arr_ref}/4)], @{$arr_ref}[(3*($#{$arr_ref}/4))..$#{$arr_ref}]];
}
Работать должно. Попробуйте теперь заменить $arr_ref на $_[0].

Friday, August 10, 2012

Парное программирование и музыка

Много мыслей в голове, а как начать пост - не знаю. Даже не знаю, о чем именно хочу написать. Расскажу, пожалуй, про музыку. Вот как было раньше? Услышал где-то песню, понравилась, услышал еще - не понравилось. На этом все и заканчивалось. Потом что-то поменялось (появился интернет): понравившаяся песня скачивалась, к ней скачивался альбом и дискография всей группы. Песни практически не слушались, просто занимали место на компьютере.
А что сейчас? Кажется, ничего не поменялось. Но это видимость. Последнее время за то, что я слушаю, отвечает она. Это она виновата в том, что я по-хорошему послушал Queen. Это из-за нее я прослушал всю дискографию Rise Against. Влюбился в Bohemian Rhapsody. Порадовался вместе с Сэло и люды и Тролль гнет ель. Плакал от '39. Восхищался Мельницей. Не останавливался вместе с Don't stop me now и Fat Bottomed Girls. И это не в прошедшем времени на самом-то деле.
Весь предыдущий абзац посвящен Willi. Так уж вышло.

А еще мы с Яськой практиковали парное программирование. Ну как парное: она пишет, я троллю. Хотя пару раз вырывал клавиатуру из ее уставших рук и писал сам. Сегодня решили поменяться ролями: выяснилось, что кодит она лучше, чем троллит.
Сама же практика парного программирования весьма хороша - код действительно получается качественне. И читаемее и правильнее. Кстати, я придумал, как нам сделать один совершенно неочевидный момент совершенно очевидным. Какая замечательная тавтология.

Получился какой-то ясин пост. Ну и пусть.

Thursday, August 2, 2012

doctorhead.ru

Если вы когда-нибудь будете гулять по Нижнему Новгороду и совершенно случайно рядом с вами окажется здание 6 по улице Ванеева, то не откажите себе в удовольствии зайти в уютный магазин doctorhead.ru. Два молодых человека помогут вам подобрать наушники под любимую вами музыку с учетом всех ваших требований. Если с собой у вас не окажется плеера, вам предложат местный - один из тех, что есть в магазине. Если вам очень повезет, то на плеере окажется часовая wav'ка с Classic Queen, где на 8-й минуте вы сможете оценить звучание любых наушников.

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

Wednesday, July 25, 2012

Без названия #1

Мне вдруг сегодня вспомнился один занятный случай из далекого прошлого. Дело было в летнем лагере, мне лет 13. В один из последних дней нам устроили глобальный тимбилдинг, как ныне говорят: всем выдали пачку порезанных ниток и пустые бусы с меленьким навесным замочком и парой ключиков. Один ключ, понятное дело, себе, другой - самому близкому человеку в лагере. А вот ниточки на бусы можно было повязывать кому угодно, только при этом надо было объяснить, с чего вдруг такая вольность в поведении. В тот день я чем-то отравился и довольно долго отлеживался в палате. В итоге бусы к концу дня бусы у меня пустые, ключа два, да еще и пучок ниток. Ну я и пошел всем доказывать, как они мне дороги и как я всем благодарен (сарказма нет, с ребятами из своего отряда я очень подружился). Подхожу к девушке, спрашиваю: "Где, мол, твои бусы?". А она как-то так обрадовалась, удивилась: "Ты хочешь мне повязать?!". Ниточку я успешно отдал, и даже взамен получил, кажется. А сейчас вот вспомнил тот случай и задумался: да что ж в этом было такого? Мы примерно 10 дней целыми сутками все вместе были, сплачивались по полной, а ниточку повязать - это уже слишком? Да я ж там всех любил примерно одинаково, мне это в радость было - дарить ниточки и теплые слова. Вывод тут какой: мы, люди, часто уделяем слишком много внимания совершенно незначительным вещам. А значительность определяем для себя сами.

Что-то затянулось вступление, я ж про другое хотел рассказать. Вот есть в мире масса языков программирования, многие из них очень широко распространены, некоторые я знаю. Больше всего мне приходится писать на Perl'е. Это восхитительно ужасный язык программирования. Столько всего можно сделать в одну строчку и получить от этого такой гиковский кайф, что захочется продолжать и продолжать. Но вот через неделю этот код проще переписать, чем прочитать...
Но если уж писать на перле, то извольте освоить сложные конструкции типа хэша хэшей хэшей. Вот о них и хочу рассказать.
Есть у нас хэш:
my %hash = (
    'first'  => 1,
    'second' => [1..10],
    'third'  => 'string here'
);
Второй элемент есть не что иное как ссылка на массив, т.е. общая структура чуть сложнее самой простой. Напишем простенькую функцию для распечатки такой структуры:
sub print_my_hash($) {
    my $ref = shift;
    map {
        if (ref($ref->{$_}) eq 'ARRAY') {
            print join(', ', @{$ref->{$_}}), "\n";
        } else {
            print $ref->{$_}, "\n";
        }
    } keys %{$ref};
    print "\n";
}
Если обнаруживаем ссылку на массив - обрабатываем отдельно. При распечатке получим вот это:







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

Вернемся к коду: все распечаталось как мы ожидали (я-то точно). Теперь скопируем наш хэш в другой:
my %copy = %hash;
Было не сложно, правда? Распечатаем и его:








Ура, отличий нет, копирование прошло успешно.
Теперь возьмем и поменям какой-нибудь элемент массива в новом хэше и распечатаем его:
$copy{'second'}->[4] = 100500;
print_my_hash(\%copy);




Все опять именно так, как ожидалось.

Внимание, сейчас будет развязка. Приготовились? Точно? Уверены? Вопросы уже достали? Ок, заканчиваю издеваться над теми, кто правдами или неправдами дочитал до этого момента: что находится в пятом элементе (индекс = 4) массива в первом хэше?
Вопрос выглядит совершенно по-идиотски, если вы пишете/писали на C. Он даже для опытных перлописцев слишком прост. Но прежде чем назвать меня профнепригодным представьте себе конструкцию из хэша с десятком полей, значениями которого могут быть и скаляры (в перле это и строки и числа), и хэши, и ссылки на массивы и хэши. Скажете, можно без этого? Наверно, но это же перл, это нормально. Правильный ответ, кстати, 100500.

К чему я это? Извольте: все современные фреймверки и языки программирования сильно абстрагируют обычного программиста (меня) от реально происходящих в машине событий. Ничто не заменит мяса в колбасе базовых знаний ОС, структур данных и умения работать с памятью.

Полный код и постскриптумы:
#!/usr/bin/perl

use strict;
use warnings;

sub print_my_hash($) {
    my $ref = shift;
    map {
        if (ref($ref->{$_}) eq 'ARRAY') {
            print join(', ', @{$ref->{$_}}), "\n";
        } else {
            print $ref->{$_}, "\n";
        }
    } keys %{$ref};
    print "\n";
}

my %hash = (
    'first'  => 1,
    'second' => [1..10],
    'third'  => 'string here'
);
print_my_hash(\%hash);

my %copy = %hash;
print_my_hash(\%copy);

$copy{'second'}->[4] = 100500;
print_my_hash(\%copy);

print_my_hash(\%hash);

PS: зачем я объединил два разных поста в один? Не знаю, само собой.
PPS: с описанным примером сталкивался в реальной работе дважды или трижды. Всегда все было не так очевидно, как в описанном здесь примере, и связано было, в основном, с перлофичами.
PPPS: код подсвечен с помощью этого: http://tohtml.com, а написан с помощью Sublim
PPPPS: убунта неприятно удивила, но в венду не перезагружусь
PPPPPS: в блогспоте мне не нравится - неудобно писать свои мысли, настраивать форматирование и пр.

Sunday, July 22, 2012

О чем вообще говорят мужчины

Вечер пятницы, офис маленькой никому неизвестной компании, уже пора бы домой. Но мы с Сашей не уходим - ждем. Звонок. Приехал Андрей. Выходим, едем ко мне. Надо бы закупиться разными гадостями, чтобы ударить ими по здоровью.
- Чем завтракать будем? Вообще что-то планируется?
- Яичницу пожарим. Надо только хлеба взять.
Из гадостей взяли колу и чипсов, все стандартно.
 - Вы есть-то хотите? Можем по-хорошему поужинать. Картошка, салатик.
 - Да!
Ох, студенты :) Веселая кассирша просит автограф и говорит, что будет плакать, если я не вернусь. Обещаю зайти еще и мы уходим.
 - Тут кухня, вот комната.
Моем картошку, огурцы, помидоры.
 - Огурцы попадаются горькие. Саш, ты должен их все попробовать. Андрей, вот сковорода, нож, картошка. Мы верим в тебя.
Режу салатик, Андрей помогает посолить, Саша твитит. В соседней комнате лежит зеркалка, но кому она нужна, если в телефоне есть камера?
 - Я не хипстер!
 - А сколько ты набрал в хипстер-тесте?
 - 100%.
 - Теперь скажи еще раз, что ты не хипстер.
Картошка готова. Салат тоже. Раскладываем по тарелкам, едим. Вкусно. Мы все молодцы.
 - Салат надо доедать. Саш?
- Ага, а то будешь потом голодными зимними вечерами вспоминать, что когда-то не доел.

- Посасывая палец...

- Чужой.
Теперь на столе персики, кола. Кажется, пора высыпать чипсы. Разработчики мы или нет?
 - Как же можно делать эти проектики? Надо разрабатывать комплекс! Лет на 20-30.
Ага. Разговор плавно и не очень перетекает с темы на тему. Как на личном?
 - Саш, ну хоть ты нас порадуй.
 - Я гей, мужики.
Время за полночь. Вторая двухлитровка колы открыта, пачка чипсов тоже не первая. Что там на счет комплексов-то?
 - В коде всегда надо оставлять только тебе известные баги. И писать его надо так, чтобы никто ничего не разобрал. Так станешь незаменимым сотрудником.
 - Убивать...
Нет, серьезно, что там с комплексом?
 - А комплекс неполноценности тебя не устраивает?
Почему бы не заняться исследованием влияние повышения температуры в районах, населенных сусликами, и последствиями этого повышения? Захват сусликами новых территорий... Бред.
 - В мире после атомной войны не будет коммуникаций. Приборы будут сломаны или просто бесполезны. Для передачи информации выжившие люди смогут использовать тараканов.
 - Перспективная разработка. Пару миллиардов на первые два года исследований можно смело закладывать. Плюс 30 лет по доработку. Вот тебе и комплекс.
Половина 5 утра. Отвозим Сашу до места его пребывания, едем обратно.
 - Мы с тобой спать-то вообще будем?
 - Ну не прям с тобой.
Тяжело засыпать, когда снаружи начинается день. В голове формируется текст, звучит Radio Ga Ga и фраза "двойной хлопок и ладони вверх".