Почему линукс рулит

| 4 коммент.

Избитая тема, да. Я не буду писать философских сочинений, это точно не мой жанр. Покажу реальный пример.

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

Что делает пользователь Windows? Пользователь Windows открывает яндекс и пишет: «меняющиеся обои для рабочего стола». Потом чешет репу и дописывает: «бесплатно». Ага. И находит какую-нибудь программу, и даже не одну. И пользуется, довольный.

Что делает пользователь Linux? Ну конечно пользователь Linux может поступить аналогичным образом и найти какое-нибудь приложение-для-смены-обоев или приложение-для-чесания-левой-пятки, или даже приложение-для-ковыряния-в-носу. Но пока вы там будете гуглить, умеет ли программа для смены обоев ковырять в носу нужным образом, я открываю текстовый редактор и пишу:

#!/bin/bash

WP_DIR=~/wallpapers/
WP_REGEX='\.(png|jpe?g)$'
INTERVAL=5m

while true ; do

 find "${WP_DIR}" -type f | egrep -e "${WP_REGEX}" | sort -R | while read FILENAME ; do
  if [ `file -ib "$FILENAME" | egrep '^image/' -c` = 1 ] ; then
   feh --bg-fill "$FILENAME"
   break
  fi
 done

 sleep $INTERVAL
done

Уверен, писал я это не дольше, чем вы искали и устанавливали программу. И здесь написано ровно то, что мне нужно:
  • из какого каталога брать картинки;
  • и с какими расширениями;
  • менять их случайным образом;
  • каждые 5 минут.

И это работает.

На первый взгляд кажется, что пользователь Windows затратил меньше усилий. Но разница в том, что пользователь Windows вынужден искать специальную программу под каждый частный случай. Я же напрямую объясняю машине, чего я от неё хочу, и она делает именно это.

Поехали дальше. Через пару дней пользователю надоедает смотреть на одни и те же 10 обоин, что валялись в ~/wallpapers/, и он собирался было скачать новых, но тут подумал: «какого черта? пусть компьютер сам качает обои, мне лень». Вот лично мне нравится сайт wallbase.cc, там много хороших обоин. Пусть машина сама скачивает обои из топ-листа.

Что делает пользователь Windows? Пользователь Windows открывает яндекс и... ну вы в курсе. Но пользователю нужна не просто программа для скачивания обоин, а программа для скачивания обоин с конкретного сайта. Каковы шансы её найти? На самом деле, не слишком велики, по запросу «wallbase.cc downloader» сплошь скрипты под линукс. Это уже не просто «ковырять в носу», это «ковырять в носу в гамаке на лыжах, играя на баяне». Так что пользователю Windows придётся сосать лапу. Кстати, почему их там так много, этих скриптов?

Потому пользователи Linux привыкли напрямую объяснять машине, что им от неё нужно. И каждый из этих скриптов — такое объяснение. Вот мой вариант:

WP_DIR=~/wallpapers/wallbase.cc/
INTERVAL=20m

echo > "$WP_DIR/cookies.txt"

WGETARGS='--user-agent="Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120403211507 Firefox/12.0" --keep-session-cookies --load-cookies="'"$WP_DIR/cookies.txt"'"'

ids="`(
 wget $WGETARGS "http://wallbase.cc/toplist/0/12/eqeq/0x0/0/100/60/2w" -q -O -
 wget $WGETARGS "http://wallbase.cc/toplist/60/12/eqeq/0x0/0/100/60/2w" -q -O -
 wget $WGETARGS "http://wallbase.cc/toplist/120/12/eqeq/0x0/0/100/60/2w" -q -O -
 wget $WGETARGS "http://wallbase.cc/toplist/180/12/eqeq/0x0/0/100/60/2w" -q -O -
) | grep -o 'wallbase\.cc/wallpaper/[0-9]*' | cut -d/ -f 3`"

while true ; do
 echo "$ids" | sort -R | while read id ; do
  if ls "$WP_DIR" | grep "[^0-9]$id[^0-9]" -q ; then
   continue
  fi

  url="`
   wget $WGETARGS -q -O - \
    --referer=http://wallbase.cc/toplist/0/12/eqeq/0x0/0/100/60/2w \
    "http://wallbase.cc/wallpaper/$id" | \
   egrep -o "http:.*(gif|png|jpg)" | egrep "wallbase2|imageshack.us|ovh.net"
  `"

  (
   cd "$WP_DIR" && \
   (echo "$url" | wget \
    $WGETARGS \
    --referer="http://wallbase.cc/wallpaper/$id" -q -i - )
  )

  break
 done

 sleep $INTERVAL
done

Эта простыня иероглифов означает: "скачать первые четыре страницы (по 60 картинок на каждой) из двухнедельного топ-листа и затем скачивать по одной случайной картинке из этого списка каждые 20 минут." Писалась она, конечно, подольше, чем предыдущая, но оно того стоит.

Linux — это система, в которой ты можешь объяснить машине, что тебе от неё надо, и она подчинится. А Windows — это просто платформа для стижки хомячков, в которой с каждого хомячка норовит срезать по 10 баксов очередной шароварщик за очередную поделку для ковыряния в носу.

У пользователя линукс всегда есть уверенность: «и эту тоже задачу возможно решить».

И еще. Подход «я говорю, а ты делаешь» не просто практичен и богат возможностями. Есть кое-что сверх этого. Согласитесь: это на самом деле чертовски кайфово, когда тупая железяка исполняет волю Хозяина. Это круто.

Вот поэтому линукс рулит. Не смотря ни на что.

Энтузиазм вместо мозгов

| 0 коммент.

Опенсорс, сцуко, такой опенсорс. Приходится работать с тем, что само приползло.

Есть тут один девелопер, компенсирующий отсутствие ума гиперактивностью. Слежу вот за его коммитами и думаю: чувак, а может ты под веществами? Лог коммитов смотришь, и кажется: ух, сколько всего полезного чел накатал. А потом открываешь диффы, а таааааам... Там пиздец, дорогие мои.

Но, твою мать через полено, есть же какой-то предел упоротости! Я всё могу понять, но коммитить код, который даже не компилируется, снабдив его сообщением "Исправлена компиляция с Gtk3" — это уже за гранью... даже не знаю, за гранью чего... за гранью, блядь, всего! При этом попутно сломав и нормальную работу на Gtk2.

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

Особый трагизм ситуации придаёт то, что он один из самых активных разработчиков. У большинства остальных просто тупо нет времени.

А потом все эти говна гордо уйдут в релиз. Так и живём.

«Работало вполне сносно»

| 0 коммент.

Из обсуждения на ЛОРе:

Разговор мейнтейнеров Archlinux в рассылке:

M1: 'll be away for a couple of days, normally everything should get updated automatically while i'm out.

M2: How are you updating things automatically?

M1: cronjobs on a server :)

D1: So you're blindly signing and pushing packages based on the fact that they compile?

M1: yes why not?

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

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

Автор фразы и сам не понял, насколько глубокомысленную вещь он изрек. «Работало вполне сносно» со всей определенностью тянет на официальный девиз линукса, если бы таковой был. Unix way, да.

Долбогрызики

| 0 коммент.

Долгие месяцы не заходил в панель управления blogspot-а. И вот зашел, и первое, что я вижу — это очередной феерический проёб в интерфейс:



«Постоянных читателе...», ага. Может если как-то хитро потянуть за эту строку или если изменить размер окна, то можно увидеть текст целиком? Хренушки. Нет.

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

Но и это не самое смачное! Самое смачное, что если эту надпись потянуть мышкой до упора, а потом скопировать и вставить куда-нибудь, то вставляется она без обрезки: «Постоянных читателей: 80»

Традиционно: «я не знаю, как надо писать, чтобы напрограммировать подобное!». Хотя ведь вру. Знаю. И уже давно ничему не удивляюсь.

Очередная иллюстрация к тому, что слова «гугл» и «дизайн» могут сочетаться в пределах одного предложения только в ироническом контексте.

Samsung NP300E5Z-A06

| 0 коммент.

Какой интересный ноутбук попался на глаза случайно. Собственно, больше всего мне в нём нравится жёсткий диск на 750Гб и возможность установки 8 гигабайт ОЗУ (в комплектации — 2) в сочетании с такой приятно низкой ценой. Правда на сайте самого Самсунга указаны всего лишь 500Гб, возможно, в новых поставках уменьшили объём диска.

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

Update:

Купил. Хороший, практичный бук.

No comments

| 0 коммент.


Компьютеры не решили реальных проблем, но создали виртуальные

| 0 коммент.

Мечты из 20-го века разбились о суровую действительность человеческой природы.
Где роботы-помошники, выполняющие рутинную работу? Где «умный дом»? Где коммуникатор, который в магазине напомнит мне, что в хлебнице не осталось хлеба, и что жена утром просила купить еще и картошки? Кстати, где и магазины без людей-продавцов? Где безопасные полностью автоматические автомагистрали? Где заводы, на которых техника воспроизводит сама себя без участия человека?

Я могу купить навороченный смартфон и погрузиться в «восхительный мир» асек, твиттеров, ютюба, форумных баталий и ЖЖ-срачей, но не могу банально подключить его к кофеварке, чтобы проснувшись утром и зайдя на кухню, получить чашечку кофе. Гвозди забивать таким смартфоном — но даже на это, впрочем, он не годен. Могу купить ноутбук, покрытый понтами и брендами как новогодняя ёлка — мишурой, но не могу заставить его насыпать коту жрачки в кормушку, пока меня не будет дома.

Следует признать, что в деле преобразования природы под нужды человека компьютерные технологии пока что потерпели полный фейл. Хотя причины лежат отнюдь не в оных технологиях, а в том, что эти проблемы, на самом деле, никто и не собирался решать. Ведь смотреть документальную запись настоящего крушения самолёта на ютюбе, гораздо интереснее, чем заниматься реальными делами, не правда ли, %username%? А твиттер — лучше, чем шашлыки на природе.

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

Всё для людей

| 0 коммент.

...или приключения iso-образа в дебрях современных технологий:

  1. Осознать, что Наутилус не умеет писать iso образы.
  2. Установить GnomeBaker.
  3. Записать образ и получить пустой диск.
  4. Очистить диск.
  5. Понаблюдать, как Наутилус и GnomeBaker играют в игру «Кто у кого диск отберёт».
  6. Попытаться записать образ и получить случайную ошибку.
  7. Два-три раза повторить в произвольном порядке шаги 3-6.
  8. Скопировать образ на съемный диск, запустить на ноутбуке Nero под Windows и записать образ с первой попытки.
  9. Profit.
Они говорят «современная операционная система», да.
В целом, деградация на лицо.

Но это всё фигня. Прелюдия, так сказать. Щас я буду FreeBSD устанавливать — вот где настоящий секс-то.

...до основанья, а затем...

| 0 коммент.

Multi programming language Web: .NET/Mono as scripting engine
Time to future Web. Multi programming language Web. We have ready .NET and Mono platforms. Vendors should uses it as common scripting engines and contribute it. Vendors should focuses on fast bug-less renderers and do not invents own scripting engines. Why we want it.
+ We tired from forcing JS as exclusive Web language. We want freedom of language choose. We do not need to develop another %language% -> js translator. Each language exist for it's own tasks. Its stupid to perform massive calculations using JS instead Haskell or Erlang. Or 3d rendering using untyped js without operator overloading support instead C++.
+ We want modern development tools and IDE. Its better to debug in MonoDevelop or in Visual Studio instead using console or browser own debug tool. Except css/layout debug of course.
+ We tired from ugly js minification and minification hacks. We want CIL binary code as stuff which is sent to client side. CIL is *safe* bytecode.
+ Its so easy to embed CLR into renderer. CIL has build-in OOP support. Renderer just extends CRL with DOM classes.
+ We do not need to switch between languages. Its hard for human brain. Remember how often you write '$i' in js and 'var i' in php. Also using one language in server and in client we do need reimplement same classes many times.
+ .NET/Mono works on popular platforms. x86, arm, windows, linux, BSD, iOS, android(currently porting), webos(http://code.google.com/p/webosdotnet/)
+ Yes we understand, vendors competes and share market. They uses JS benchmarks, renderer benchmarks, accessibility, features, ... as advertisement of own browser. We just propose remove scripting engine speed from this list.
Я даже не знаю таких слов, какими это следует комментировать. Пиздец. Пиздец. Пиздец, пиздец, пиздец.

Когда коту делать нечего, он яйца лижет, а программисты — издеваются над PHP

| 0 коммент.

В блоге у Тормоза 3-й день занимаемся какой-то хернёй, пытаясь заставить PHP делать то, для чего он в принципе не предназначен. Со счётом 3:0 пока побеждает интерпретатор.

Не ходите, дети, JSAPI читать

| 0 коммент.

Ебанётесь.

Мыши плакали, кололись, но продолжали писать вебдванольненькое приложение для Blogger.
Примеры скриптов для работы с Blogger API более всего похожи на обряды магии вуду. Ну ничо, прорвёмся.

В этой стране до тех пор всё будет плохо, пока мы будем себе говорить, как у нас всё плохо

| 0 коммент.

Как я вчера писал, profithunter телепатически пообщался с духом Русского Менталитета (™) и рассказал всем всю правду о рунете и неблагодарных пользователях. Ну попиарился чувак, получил ретвитов, ссылок и обсуждение в комментах — это не удивляет. Удивляет реакция хомячков в этих самых комментариях. Из 43-х комментариев, по существу высказались (считая вместе со мной) целых трое. Остальные занимались крайне продуктивным делом: опускали в говно своих сограждан, плакались и просили выдать им кнопку ретвита, чтобы поделиться горем с друзьями. Эмо-тред, розовые сопли. Это пиздец.

Люди, блядь, ау! Рунета мало не потому, что все в нём пидарасы жмоты, а потому, что нас самих мало! И в сети, и вообще на глобусе. Этот простой факт ясен, или требует развернутых объяснений на молекулярном уровне? Харе стонать, валите работать! Нет же, они ретвитят сидят. Сделайте крутой сайт или откройте оффлайновый бизнес, или заставьте, хотя бы, положить чиновников асфальт на ямы рядом  с вашим домом. Мусор из подъезда уберите, в конце концов.
Пиздуйте делом заниматься, короче.

Сделали Linux красивым, пора подумать и о юзабилити

| 0 коммент.

Давайте присмотримся к панели задач в GNOME с темой оформления Glossy:



Не будут тянуть кота за половые органы, сразу скажу, в чём тут проблема:
  1. У свёрнутых окон иконка теряет насыщенность. Все кнопки окон выглядят как братья-близнецы, зачастую совершенно невозможно понять где найти нужное окно приложения. Чем больше окон открыто, тем меньше текста остаётся видимым на кнопках, и пользователь начинает ориентироваться в основном по цвету иконок и их расположению относительно друг друга. В данном случае пользователь обламывается.
  2. Текущее окно выделено только цветом кнопки, практически неотличимым от цвета других кнопок. Если у монитора не идеальная цветопередача (а с вымиранием CRT теперь практически у всех хреновая цветопередача), и светлый кажется чуть темнее, а тёмный —  чуть светлее, отличить кнопку активного окна от неактивного становится вообще невозможно.
Первая проблема, очевидно, лечится пропатчиванием элемента управления, формирующего панель задач. (Я уже привык к тому, что GNOME ничего никогда невозможно настроить в конфиге, всё «настраивается» ручной правкой исходника и перекомпиляцией.) Этим я в ближайшее время, видимо, и займусь.

Вторая проблема — особенность темы оформления. Однако, надо сказать, что я просмотрел множество тем, и во многих из них вообще никак не выделяют кнупку активного окна, а большинстве оставшихся — делают это примерно так же, как в Glossy. Вообще же, Glossy в остальном отличный стиль: красивый и эргономичный. Так что придётся патчить и его, делать свою кустомную версию.
Можно найти отдельные темы оформления, где о выделении активного окна как-нибудь позаботились, но все они (из тех, что я видел) сами по себе (за пределами панели задач) страшны:



Плохие русские не хотят читать блоги

| 0 коммент.

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

GoboLinux, side-by-side versioning и все-все-все

| 0 коммент.

Курю документ по дизайну GoboLinux и почему-то кажется, что что-то тут не то. С одной стороны, поставлена цель запускать в полностью-run-time-конфигурабельной среде немодифицированные Unix-программы, а с другой — всё это должно работать на ванильном ядре. Понятно, что так просто не получится: нужно либо программы модифицировать с целью отвязать от compile-time привязки к путям в системе, либо на системном уровне обеспечивать виртуализацию привычного FHS. Может быть даже, ядро при этом удастся оставить вполне ванильным, но где-то на уровне загрузчика исполняемых модулей код виртуализации должен быть всё равно.

Другая проблема в том, что архитекторы GoboLinux всё еще остаются в рамках классического для Unix подхода к программам, в то время как реальность давно уже требует выйти на следующий уровень абстракции. На мой взгляд, современной ОС требуется:
а) уметь из модулей-кирпичиков составлять рабочую среду для приложения и
б) прозрачно отделять конфигурацию приложения от его бинарников.

GoboLinux пытается решать первую задачу, но оставляет за бортом вторую. Хотя если отстраниться от привычных понятий исполняемых файлов, библиотек, конфигураций и взглянуть на систему с точки зрения задач и служб, то мы увидим, что по отношению к задаче «Редактировать ~/todo.txt», исполняемый файл /usr/bin/kate является таким же служебным модулем, как какая-нибудь libqt-mt.so.3 — по отношению к самой kate. С точки зрения пользователя, мы «открываем документ ~/todo.txt в редакторе ~/.kde/share/apps/kate» (ну или где там у вас лежит его конфиг). Какие бинарники при этом грузятся, вообще никого не волнует. Да-да, тот самый документо-ориентированный интерфейс. Только его апологеты не понимают, что невозможно нарисовать в «Наутилусе» красивые иконки и добиться этим мировой гармонии, когда на уровне файловой системы царят бардак и кривые пакетные менеджеры. (Впрочем, они вообще ничего не понимают.)

Что касается практической стороны дела, то для реализации механизма виртуализации достаточно имеющихся средств. Как минимум, можно делать chroot в локальное рабочее окружение при запуске процесса. Другой вариант (требующий минимального вмешательства в ядро) — добавлять нужные симлинки в каталоги процессов в файловой системе proc, чтобы каждый процесс в /proc/self/something видел свой собственный вариант something. В общем, технически ничего сложного, если поставить задачу и всерьёз заняться её решением.

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