Mplayer как музыкальный плеер

Перепробовал миллионы музыкальных плееров под линуксом, но они все грустные. Что qmmp, что deadbeef обладают одним неприятным багом — если они закрываются неправильно, то они не сохраняют плейлисты и вообще настройки. Это очень, очень, очень раздражает.

Поэтому я решил улучшить свою жизнь и украл способ:

Конечно же, это только первая попытка. Когда-нибудь я научу ЭТО в плейлисты и другие расширения. Может быть даже прикручу menu от zsh. И может быть даже научу это слушать слушать медиа-клавиши.

2015.07.13 22:04

Kingsman: Секретная служба

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

749540

2015.06.27 17:12

Пост очередной любви к пхп

Вот, захотелось мне скачать файл курлом, указываю опции:

$local_file = fopen($file, 'w+');

$curl = curl_init($url);

curl_setopt($curl, CURLOPT_TIMEOUT, -1);
curl_setopt($curl, CURLOPT_FILE, $local_file); // Write curl response to file
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);

$result = curl_exec($curl);
curl_close($curl);

fclose($local_file);

И оно не работает! А всё потому что:

It appears that setting CURLOPT_FILE before setting CURLOPT_RETURNTRANSFER doesn’t work, presumably because CURLOPT_FILE depends on CURLOPT_RETURNTRANSFER being set.

Это прекрасно и очевидно! В очередной раз порадовался что пишу на пхп!

2015.06.26 13:56

Смешной мирок программистов

Это вот ваше программерское сообщество так похоже на обычное человеческое чтобы вы там не говорили.

Однажды кто-то решил что node.js это плохо и запилилил свой форк io.js аргументировав это тем что в node.js не хотят принимать патчи и вообще делают что хотят. И подумаешь что они этот node.js и придумали, но они неправильно его развивают! И запилили форк io.js. Прошло время и в node.js так испугались, так испугались что у них перехватят инициативу и давай объеденяться с io.js, создали там управляющий совет и вообще всё очень, очень серъёзно.

А вторая смешная история связана с sourceforge. Некогда он был крутой площадкой для публикации своих программ и исходников, а потом придумали всякие гитхабы, а sourceforge продали кому-то. И новые владельцы осознав что купили никому не нужную ерунду давай пихать рекламу в инсталляторы ни с кем не посоветовавшись чтобы хоть как-то денег отбить. И вот ужасный блокировщик рекламы uBlock Origin целиком заблокировал SourceForge, а в sourceforge так испугались, так испугались что давай сразу же прекращать зеркалирование программ и привлекать сообщество к выработке новых правил.

А ведь взрослые люди вроде бы как.

2015.06.19 14:14

Про вим в 2015 году уже прямо как в 2014!

Как уже многие сотни из вас, многих миллионов, моих поклонников догадались (некоторые даже и пожалели меня убогого) что я пользуюсь vim’ом. Причём всё настолько плохо что я пользуюсь только vim’ом. И больше вообще ничем другим. У меня даже слово IDE связано с ужасной пыткой которую не пережить (куда милее мне мой маленький уютный ад с vim’ом).

Предприняв попытку опять сделать vim хоть сколько-нибудь приемлимым к использованию я наткнулся на некий потрясающий пост “Learning Vim in 2014: Getting More from Vim with Plugins“.

Немедленно сменил свой старый ущербный менеджер плагиов Pathogen (который, впрочем, ещё несколько часов назад меня устраивал более чем достаточно и менять я его не собирался) на Vundle и не пожалел. Я тут пару раз ходил по всем плагинам чтобы их погитпуллить, а тут оно само это будет делать (ну, каждый раз как команду вызову).

В этом же блоге из этой же статьи прочитал статью “A look at Ack” — заменитель grep’а для программистишек.

Немедленно установил и просто божественно счастлив. Не хватает главной фишки плагина ctrlp.vim, но зато в выводе нет этой идиотской grep’овой придури с "filename.txt: found !!!!" и когда пытаешься скопировать имя оно, гадина, каждый раз с двоеточием копируется. Ну и да, наверное, это можно было настроить, но вы же понимаете что круче пользоваться крутым ack чем старым задротским унылым grep. К тому же ack написан на перле, а не на жалком C. Сплошные плюсы (вы же понимаете про какие я плюсы?).

Ну и до кучи плагин “ctrlp.vim” который по нажатию, как вы уже догадались, ctrl+p позволяет написать такое "co/in" и оно вполне может найти такой файл "src/controller/index". Оказвыается, это называется “fuzzy searching” и уже давно в мейнстриме! Но самая крутая возможность — оно идёт из текущей дирректории вверх пока не найдёт .git и воспринимает её как ROOT. Милота.

На этом же сайте было сказано что автор преимущственно пользуется ctrl+p и :Ack, а NerdTree почти не пользует. А началось всё это безобразие у меня с того что я захотел чтобы у меня NerdTree во всех табах был одинаковый >_> (есть плагин, но он “мерцает”).

Ну и посмотрите, до кучи, в “Learning Vim in 2014” от того же автора.

2015.06.06 02:19

И снова профессор Савельев.

Очень, очень люблю слушать Савельева. Он такой уверенный человеконенавистник и шовинист, что прямо мимими.

И да, второе видео подряд за день! Это всё специально для того чтобы попасть в ТОП Блогов. Потерпите пару лет, я скоро перестану постить только видосики.

2015.06.03 23:33

Будущее уже совсем рядом!!11!11

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

Впрочем, всякие microsoft surface пытаются решить эту проблему, но слабенько. И вот новость:

В октябре компания Bq намерена выпустить первый смартфон с реализацией десктоп-режима – телефон можно будет подсоединить к монитору/телевизору через порт HDMI, подключить клавиатуру и мышь, и получить полноценную рабочую станцию, на которой будут доступна и синхронизирована вся информация, используемая при обращении с устройством в режиме телефона. Рабочее окружение при работе в режиме настольной системы будет построено на основе штатной оболочки Unity и обычных настольных приложений, используемых в сборке Ubuntu для десктоп-систем. При этом сосуществование десктоп-окружения и мобильных оболочек будет организовано в бесшовном режиме: все открытые в мобильном браузере страницы и сохранённые закладки будут доступны в полноценной настольной версии браузера, из десктоп-режима можно добавлять и редактировать контакты, осуществлять звонки, отправлять SMS, работать с календарём-планировщиком.

Судя по всему в телефоне будет тупо две системы: мобильная и полноценная и надо будет туда-сюда перезагружаться. Это, конечно, бред. Ну и телефоны пока слабенькие совсем, но вот лет через 5 телефоны по мощности будут как мой текущий ноутбук и, если к тому времени этой мощности будет хватать, будет жить уже намного интереснее, совсем как в будущем ^___^.

2015.06.01 23:55

Про дизайнеров!

Увидел смешное

Никогда не спорь с дизайнером — только насилие.

2015.06.01 23:21

Про фильм “Эффект Лазаря”

Посмотрел весьма посредственный фильм “Эффект Лазаря“. Но в этом фильме настолько забавное объяснение религии что я чуть не уверовал к концу просмотра.

The Lazarus Effect

2015.05.29 22:45

СРОЧНО В НОМЕР!

Я тут недавно восторгался неким А. А. Зализняком, а тут, оказывается, сама википедия(викисловарь) использует его словарь! Вот это да! Шок! Удивление!

2015.05.28 08:39

Филолог Андрей Анатольевич Зализняк

Мой новый кумир — Андрей Анатольевич Зализняк. Удивительная профессия.

И, конечно, БЕЛАРУСЬ СТРОНГ!

2015.05.25 21:41

Ассоциации северокорейских граждан в Японии

Совершенно случайно прочитал крайне занимательную статью про Корею. Вот я даже не знаю как бы я поступил в подобной ситуации и как бы я жалел потом о неправильном выборе. А вы? Расскажите в комментариях свои мысли по этому поводу, какой из трех вариантов вы бы выбрали?

В 1952 году, когда Япония подписала мирный договор с союзниками, согласно которому она признавала независимость Кореи. Следствием этого договора стало то, что подавляющее большинство корейцев не получало японского подданства и должно было выбрать между гражданством Северной и Южной Кореи. Южная Корея, находившаяся в то время под властью диктатора Ли Сынмана, настроенного радикально антияпонски, не поддерживала никаких отношений с бывшей метрополией. Таким образом, японские корейцы отказались брошенными сеульским правительством на произвол судьбы. Северная же Корея, напротив, проводила активную кампанию среди «соотечественников в Японии», призывая их брать гражданство КНДР. С учетом того, что тогдашняя Северная Корея была более богатым и не сильно менее свободным государством, чем Юг, кампания имела большой успех. Ее кульминацией стало создание в 1955 году Ассоциации северокорейских граждан в Японии (АСГЯ) – той самой организации, о которой речь шла в первом абзаце.

2015.05.20 16:26

Про игру agar.io

Злые люди прислали ссылку на игру: agar.io. И я не могу оторваться от неё.

Если вы играли в игру Spore и видели первый уровень — вы сразу всё поймёте. Если вы не играли, то вы — нормальный человек и тоже поймёте всё сразу.

20150511_030522

Вы начинается играть чем-то круглым, предположительно клеткой (кругла клетка! оксюморон! (примитивный лингвистический юмор (очевидное объяснение очевидного (лингвистический фрактал (примитивный математический юмор))))).

Как клетка вы можете двигаться и поглощать более другие клетки. Начинаете жить размера 10 и питаться подножным кормом который добавляет по +1 к вашему размеру. Как только вы отъедаетесь на размер ~20 у вас появляются суперспособности.

Первая — это откинуть часть своей плоти на корм другим.
Вторая — разделиться на две равные части причем одна часть выстреливает вперёд, а первая часть остается на месте (я прямо лингвистический террорист сегодня).

На карте находитесь вы, другие игроки, некоторое колличество подножного корма и зелёные мины (вирусы?).

Вот, собственно и всё, но за этими простыми правилам скрывается потрящающая игровая механика.

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

Во-первых, чем вы меньше тем вы быстрее.
Во-вторых, поглотить вас можно двумя способами: или просто поглотить, или выстрелить часть себя.

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

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

Из этого исходит два нюанса этого способа. Во-первых, очень хорошо когда вы стреляете в больше колличество клеток размера ~45% от вашего. Во-вторых, рядом очень нежелательного иметь клетки размер которых >60% вашего размера. Но при этом если вы уверены что после разделения вы нормально поглотите других клеток, то ваша вторая половина вполне может быть больше вас до разделение + остается вторая ваша половина.

То есть выгодно, но опасно. При этом разделившись вы не можете сразу соединиться обратно — вам нужно какое-то время поплавать, а размера вы уже меньще и поэтом вы хорошая жертва.

Во-вторых на карте есть вирусы съедая который вас разрывает на части. Одно крупная размера ~50% и много мелких. А ещё в вирусы можно стрелять своей плотью и после поедания ~60 поинтов оно стреляет в противоположную сторону другим вирусом.

У вирусов сразу два назначения: во-первых они опасные и все стараются их избегать. Поэтому в них хорошо как прятаться/убегать в панике, так и вести жертву к скоплению вирусов чтобы они не могли от вас никуда убежать. БВА-ХА-ХА.

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

Чем вы больше тем вам играть веселее — у вас всё более масштабно. Но при этом вы постоянно теряете в размере (видимо, энергия на движение) и поэтому вам было бы неплохо атаковать. При этом делиться надвое страшно — вдруг пожрут. Поэтому совсем мелких стараешься лишний раз не есть во избежание.

Это вот про механику, при этом есть ещё одна потешная составляющая — социальная. В игре нет никакого общения кроме как выбрать ник. При этом от ника может зависить ваш скин. Например, игроки с ником Russia полосатые, которые Poland так там кантри-бол, Польша стронг! Stalin с усами, USSR с серпом и молотом.

Я, например, если сам большой, то стараюсь не есть тех кто говорит на русском. Ну то есть я могу, но могу и проплыть мимо. При этом иногда ещё и делюсь своей энергией помогая со стартовым ростом. При этом могу иногда не съесть меня. А когда у тебя с игроком цвета российского флага такой негласный альянс (о котором никак вообще не договориться и вообще цель игры в поедании!), то очень удобно бывает загонять в угол какого-нибудь урода с ником Nazi.

Забавная игра в общем-то.

2015.05.12 00:25

Как жаль что я не программист

Ведь если бы я был программистом я бы понимал что тут происходит:

And now as one allocation, sliced into lines:

// Allocate the top-level slice, the same as before.
picture := make([][]uint8, YSize) // One row per unit of y.
// Allocate one large slice to hold all the pixels.
pixels := make([]uint8, XSize*YSize) // Has type []uint8 even though picture is [][]uint8.
// Loop over the rows, slicing each row from the front of the remaining pixels slice.
for i := range picture {
	picture[i], pixels = pixels[:XSize], pixels[XSize:]
}

2015.05.08 15:02