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

|

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

Обычный домашний компьютер. Обычная пришедшая в голову пользователя блажь: «хочу, чтобы на рабочем столе обоина менялась каждые 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 баксов очередной шароварщик за очередную поделку для ковыряния в носу.

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

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

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

4 коммент.:

Анонимный комментирует...

А игор нет.

ShadowPrince комментирует...

Игоры есть - у кого прямые руки запустит почти что угодно с wine.
К слову, на windows тоже можно писать программы самому, и они вполне будут делать то, что нужно. Вот только на виндовсе это ужасный моветон, и никто так не делает. Ну и подозреваю, что придется делать целое .net приложение или работать с winAPI, linux и шеллы в этом плане хорошо преуспели.

Анонимный комментирует...

игор есть.смотри например на вальв и ненужно никокго вайна ни к чему апи вин теперь.стим и несколько этих самых игор портируют.только линух он не для идиотов тут видите ли bash shell рулит.впрочем ставь минт или убунту там куча графичесих настроек.и да... Не бойся лезть в терминал)

Анонимный комментирует...

от ты далбайоп))))))))

Отправить комментарий