Posts Tagged ‘linux’
Найпростіший спосіб вимірювання найгіршої метрики
Або іншими словами – примітивний облік робочого часу в лінуксах.
Для цього є команда – last. Дозволяє подивитись в логах час останніх входів і виходів з системи. Якщо наприклад дати команду
last 7 # еквівалентно last tty7
Дізнаємось хто коли і скільки користувався сьомим терміналом:
bunyk tty7 :0 Thu Feb 2 08:30 - down (09:32)
Вдома попробував – не працює. А виявляється все тому, що є певна конфігурація ротації логів /etc/logrotate.conf, в якій написано – monthly.
Але команду я дізнався на початку місяця, коли ще жодних логів не було навіть на роботі. Якось неправильно ця ротація працює. Вдома логи чомусь все одно ведуться за один день, хоча я й написав що хочу місячну ротацію. Може не в ті логи написав.
А ще збацав коротенький скриптик, який бере дані з last, і рахує середній робочий час:
#!/usr/bin/python3
import re
import subprocess
def hours(s):
s = s.split(':')
return float(s[0]) + float(s[1]) / 60
def to_str(x):
h = int(x)
m = 60 * (x - h)
return '%s:%s' % (h, int(m))
output = subprocess.check_output(['last', '7']).decode('utf-8')
data = (re.findall(r'\((\d\d:\d\d)\)', x) for x in output.splitlines())
data = [hours(x[0]) for x in data if x]
print(output)
print('Average time: ', to_str(sum(data)/len(data)))
bunyk@bunyk-laptop:~/workspace/uaprom$ /home/bunyk/experimental/timestat.py bunyk tty7 :0 Thu Mar 22 09:32 still logged in bunyk tty7 :0 Wed Mar 21 10:37 - 19:51 (09:13) bunyk tty7 :0 Tue Mar 20 11:48 - down (08:16) bunyk tty7 :0 Mon Mar 19 11:38 - down (07:14) bunyk tty7 :0 Sat Mar 17 09:45 - down (08:36) bunyk tty7 :0 Fri Mar 16 10:35 - 19:23 (08:48) bunyk tty7 :0 Thu Mar 15 10:22 - down (08:47) bunyk tty7 :0 Tue Mar 13 10:02 - 19:44 (09:42) bunyk tty7 :0 Mon Mar 12 12:08 - 20:34 (08:25) bunyk tty7 :0 Wed Mar 7 10:29 - down (07:42) bunyk tty7 :0 Tue Mar 6 09:54 - down (09:50) bunyk tty7 :0 Mon Mar 5 11:15 - 19:32 (08:16) bunyk tty7 :0 Sat Mar 3 11:21 - down (07:03) bunyk tty7 :0 Fri Mar 2 12:08 - down (08:00) wtmp begins Thu Mar 1 18:46:07 2012 Average time: 8:27
Виходить що я трохи більше ніж пів-години на добу недопрацьовую. Правда шпигунський роман Тоні ДеМарко розповідає про те що до програмістів краще не застосовувати метрики, бо ті хитрі зарази знайдуть спосіб максимізувати метрику не покращуючи продукт. Якою гарною ця метрика не була б (хай навіть зміною відношення кількості вад до кількості функціоналу). А Тоні ДеМарко – виявляється в вікіпедії стоїть поруч з такими гігантами як Вард Каннінгам, Мартін Фаулер і навіть Тоні Хоар. Напевне варто познайомитись детальніше. Правда часу нема. Але якщо він не важливий, тоді важливе лише те що я вважаю важливою дією в кожен момент часу.
Наймінімалістичніший симулятор друкарської машинки.
Такий собі подарунок до нового року мені і подібним графоманам. Працює правда лише в лінуксах, бо curses. Сторінка проекту на Google Code. Інсталяція ручна і проста – скопіюйте файл програми собі в /usr/bin/, і дайте йому права на виконання.
Таймер ввімкнення/вимкнення
доволі корисна штука в телевізорі. Таймер вимкнення гарантує що коли ви раптом заснете – телевізор виключиться сам, і не буде промивати ваші мізки всю ніч. Таймер ввімкнення дозволяє не відволікатись на рекламу поки ви очікуєте якоїсь передачі, і спокійно в той час почитати книжку. (В мене нема телевізора, але я підозрюю, що точність телепрограм зараз майже нівелює цю перевагу). Ну, і таймер ввімкнення може зробити з телевізора будильник.
Комп’ютер може робити майже це ж саме. Наприклад подивитись фільм, і виключитись по його закінченню:
mplayer -fs movie.avi halt
Такий скрипт потрібно запускати під суперкористувачем звісно, бо інакше комп’ютер не виключиться.
Біда тільки от в тому, що коли комп’ютер так виключити, то скрипт для таймера ввімкнення не спрацює (виключений комп’ютер взагалі ніякі скрипти не хоче виконувати, гад). Тому є варіант пом’якше – вимкнути лише монітор. Для цього замість halt пишуть:
xset dpms force off
бажано при цьому ще витягти мишку, бо будь-який її рух вмикає монітор назад.
Монітор погас, комп’ютер працює. І якщо ми раптом загубили свій будильник з додатковою функцією телефона (подумати тільки, тепер навіть в будильниках купа додаткових функцій. Що за дивний світ!), то можна просто змусити дзвеніти свій комп’ютер. Для цього пишемо команду crontab -e, і вводимо щось типу:
40 6 * * * mocp -U
Це означає: в 40 хвилин 6-тої години, щодня (*), щомісяця (*), в будь-який день тижня (*), music on console player -Unpause.
Звісно аби зранку хоч щось відбулось, окрім ввімкненого комп’тера, потрібен встановлений плеєр, поставлений на паузу, з ввімкненим звуком. Mocp використовувати необов’язково. Хоча він найзручніший, та консольні інтерфейси мають багато інших. Принаймі Amarok точно.
Заклинання для сповільненої зйомки в Ubuntu/Debian
Звичайно вам потрібна ще веб-камера, і можливо якісь драйвери. На всяк випадок поставте Cheese – програмку для тестування веб-камери.
Інвентар:
sudo apt-get install cheese sudo apt-get install streamer sudo apt-get install mencoder
Сцена:
mkdir timelapse cd timelapse vim generate.py
Зйомка:
Прочитати решту цієї замітки »
Atheros Wi-Fi on Ubuntu 11.04, підходящі ядра, і інші проблеми
Як добре бути знову онлайн, і знову на нормальній швидкості. Виявляється Ubuntu 11.04 має в десятки разів повільніше Wi-Fi з’єднання на комп’ютерах з адаптером Atheros (до яких належить мій Acer Aspire 5100, деякі Dell, Asus, і напевне багато інших).
Більше того, коли я обновив ядро до 2.6.38-11, вайфай взагалі пропав. Мене це страшно мучило, бо я не знав як поміняти ядро. Тепер знаю, розказую.
Пакети з ядром лінукса можна ставити прямо через Synaptic, але там є не всі. Повний список читаємо тут. Нам потрібні три пакети:
linux-headers-ВЕРСІЯ-ЯКІСЬЦИФРИ-generic_ВЕРСІЯ-ЦИФРИ.ЦИФРИДАТИ_АРХІТЕКТУРА.deb а також: linux-headers-2.6.39-02063904_2.6.39-02063904.201108040905_all.deb linux-image-2.6.39-02063904-generic_2.6.39-02063904.201108040905_i386.deb
Підберете версію і архітектуру потрібну вам самостійно. Качаєте їх в якусь чистеньку директорію і запускаєте в ній
sudo dpkg -i *.deb
Вуаля – нове ядро в наявності. Перезавантажуємось. Тут УВАГА – GRUB автоматично грузить насвіжіше ядро. А їх на вашому комп’ютері стільки – скільки разів воно обновлялось. Щоб вибрати інше ядро, при ввмікненні комп’ютера натискаєте і тримаєте клавішу F8. Мій комп’ютер від цього пищить як свиня, яку ріжуть, але з кожної третьої спроби показує меню GRUB.
Wi-Fi чомусь працює лише на ядрі 2.6.38-10, тому те що я встановлював 2.6.39 не допомогло. Ставити третю версію я не ризикнув.
Залишилось дві проблеми – швидкість, і як зробити так, аби при запуску GRUB сам вибирав нормальну версію.
Я вирішив просто видалити всі дефектні ядра. Для цього в Synaptic шукаємо linux-image-2, і від дасть нам список пакетів з ядрами другої версії. Видаляємо всі крім тих на якому сидимо. (Видаляти ядро на якому сидиш не можна, про це навіть є якась приказка). Версія на якому сидимо повертається командою uname -r, тому переконайтесь що сидите на тій в якій працює інтернет.
Далі. Швидкість. Тут теж ХЙЗ що. Можна прочитати і виконати оце. Окрім того, я ще створив в каталозі /etc/modprobe.d/ два файлики ath9.conf та ath9k.conf з однаковим вмістом:
options ath9k nohwcrypt=1
А також:
Commit Log for Fri Sep 9 22:05:26 2011 Встановлено наступні пакунки: linux-backports-modules-cw-2.6.39-2.6.38-10-generic (2.6.38-10.6) linux-backports-modules-cw-2.6.39-2.6.38-10-generic-pae (2.6.38-10.6)
Що допомогло – я не знаю. Можна було б поморочитись і вияснити, але поки все працює – чіпати нічого не хочеться.


