Блоґ одного кібера

Я не знаю куди й нащо мені бігти. Та це все таки веселіше ніж сидіти.

Posts Tagged ‘linux

Найпростіший спосіб вимірювання найгіршої метрики

leave a comment »

Або іншими словами – примітивний облік робочого часу в лінуксах.

Для цього є команда – 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

Виходить що я трохи більше ніж пів-години на добу недопрацьовую. Правда шпигунський роман Тоні ДеМарко розповідає про те що до програмістів краще не застосовувати метрики, бо ті хитрі зарази знайдуть спосіб максимізувати метрику не покращуючи продукт. Якою гарною ця метрика не була б (хай навіть зміною відношення кількості вад до кількості функціоналу). А Тоні ДеМарко – виявляється в вікіпедії стоїть поруч з такими гігантами як Вард Каннінгам, Мартін Фаулер і навіть Тоні Хоар. Напевне варто познайомитись детальніше. Правда часу нема. Але якщо він не важливий, тоді важливе лише те що я вважаю важливою дією в кожен момент часу.

Written by bunyk

Березень 31, 2012 at 05:10

Опубліковано в Інструменти, Кодерство

Tagged with , ,

Наймінімалістичніший симулятор друкарської машинки.

Кількість коментарів - 15

Такий собі подарунок до нового року мені і подібним графоманам. Працює правда лише в лінуксах, бо curses. Сторінка проекту на Google Code. Інсталяція ручна і проста – скопіюйте файл програми собі в /usr/bin/, і дайте йому права на виконання.

Прочитати решту цієї замітки »

Written by bunyk

Грудень 31, 2011 at 16:56

Таймер ввімкнення/вимкнення

Кількість коментарів - 7

доволі корисна штука в телевізорі. Таймер вимкнення гарантує що коли ви раптом заснете – телевізор виключиться сам, і не буде промивати ваші мізки всю ніч. Таймер ввімкнення дозволяє не відволікатись на рекламу поки ви очікуєте якоїсь передачі, і спокійно в той час почитати книжку. (В мене нема телевізора, але я підозрюю, що точність телепрограм зараз майже нівелює цю перевагу). Ну, і таймер ввімкнення може зробити з телевізора будильник.

Комп’ютер може робити майже це ж саме. Наприклад подивитись фільм, і виключитись по його закінченню:

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 точно.

Written by bunyk

Листопад 14, 2011 at 22:11

Опубліковано в Інструменти

Tagged with ,

Заклинання для сповільненої зйомки в Ubuntu/Debian

leave a comment »

Звичайно вам потрібна ще веб-камера, і можливо якісь драйвери. На всяк випадок поставте Cheese – програмку для тестування веб-камери.

Інвентар:

sudo apt-get install cheese
sudo apt-get install streamer
sudo apt-get install mencoder

Сцена:

mkdir timelapse
cd timelapse
vim generate.py

Зйомка:
Прочитати решту цієї замітки »

Written by bunyk

Жовтень 10, 2011 at 23:02

Опубліковано в Інструменти, Графіка, Кодерство

Tagged with ,

Atheros Wi-Fi on Ubuntu 11.04, підходящі ядра, і інші проблеми

Кількість коментарів - 9

Як добре бути знову онлайн, і знову на нормальній швидкості. Виявляється 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)

Що допомогло – я не знаю. Можна було б поморочитись і вияснити, але поки все працює – чіпати нічого не хочеться.

Written by bunyk

Вересень 10, 2011 at 11:48

Опубліковано в Інструменти

Tagged with ,

Follow

Get every new post delivered to your Inbox.