Блоги


Sphynkx аватар

Часики для консоли

Всем хороша консоль, кроме одной мелочи - часиков, которые всегда перед глазами. Средствами zsh можно кое-что придумать - время будет отображаться в командной строке в правой части экрана. И обновляться не в realtime, а лишь после ввода очередной команды. Причем старые показания не стираются - уже прошедшие времена медленно "возносятся" вверх по скроллингу... Это категорически неуклюже и к тому же некрасиво.
Когда-то давно нарыл такую простенькую утилитку - smartclock. Удобные часики в правом верхнем углу, кушать не просят, запускать можно через init-скрипты. Одно время ею пользовался. Сейчас посмотрел по Сети и вижу, что память об этой утилитке почти стерлась. Но, как говорится, "рукописи не горят" ;-)) Посему, пусть лежит тут.

Пару ньюансов.

alexu аватар

Ваши вопросы Грегу Кроа-Хартману (Greg Kroah-Hartman)

Грег Кроа-Хартман (Greg Kroah-Hartman) согласился дать нам интервью. Грег - один из основных разработчиков ядра Linux. В настоящее время он мэйнтейнер для стабильной ветки ядра вместе с Крисом Райтом (Christ Wright), системы для стабилизации драйверов (staging subsystem), USB, diver core, debugfs, kref, kobject, sysfs, и еще нескольких подсистем. Он также мэйнтейнер Gentoo пакетов для этих програм, и оказывает помощь в работе над пакетом ядра. Грег работает на Novell SUSE Labs, уделяя основное время Linux Driver Project.

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

скрипт смены каналов провайдеров

назрела необходимость подобного скрипта. ногами не бить - скрипт пилотный, лучше помогайте советом! линсоветом.
p.s. начинать читать с первого elif

bliznezz аватар

спасение телефонной книги (вслепую с Samsung SGH-E250 )

не относится к Linux (т.к. было под windows), но околокомпьютерное, про низкоуровневым общением между компьютером и телефоном.
Преамбула. у жены умер телефон (Samsung SGH-E250), красненький =)))

у него умер шлейф. надо подключиться к его памяти и слить с него телефонную книжку.

Конвертирование *.jpeg файлов в другое разрешение в Linux.

Как-то раз, вернувшись домой после очередной прогулки с фотоаппаратом, мне нужно было отослать некоторые и фотографий на мыло моей девушке.Однако, даже при небольшом разрешении моего фотоаппарата (5 MPx) фотографии получаются довольно громоздкими - больше 2 Мб.

Немножко погуглив я нашел утилитку convert из пакета ImageMagick, которая очень многое умеет, в том числе и ковертировать файлы по разрешению.
Только вот по одному файлу конвертировать слишком долго и я написал скрипт использующий convert и позволяющий конвертировать все *.jpeg файлы из нужной папки.

Синтаксис следующий:

~$: ./jpeg_conv source_dir target_dir width quality

source_dir - директория с исходными картинками. По умолчанию - текущая.

target_dir - директория, где будут созданны измененные изображения. Создается автоматически. По умолчанию, в исходной папке с картинками создается папка converted_image.

width - ширина получившихся файлов в пикселях. Высота высчитывается автоматически, картинка масштабируется. По умолчанию - 1024px.

quality - качество получаемых картинок. По умолчанию - 50.

Ну и собственно пример:
~$ ./jpeg_conv ~/myphoto ~/my_little_photo 640 40

И, разумеется, сам код:

bliznezz аватар

ext3 фрагментация

испытываю негативное влияние фрагментации крупных файлов на хранилице бекапов.

операционка rhel4, файловая система соотв. ext3.
для оценки фрагментации использую команду filefrag из e2fs-utils.

она выдает данные в таком виде:

$ find /DUMP1/ /DUMP2/ -type f -name "*.d*mp" -exec filefrag {} \;
/DUMP1/chidori/file1.dump: 73 extents found, perfection would be 27 extents
/DUMP1/chidori/file2.dump: 255 extents found, perfection would be 1 extent
/DUMP1/chidori/file3.dump: 51 extents found, perfection would be 1 extent
/DUMP1/chidori/file_2008.dump: 203 extents found, perfection would be 1 extent.
/DUMP1/chidori/yesterday.dump: 255 extents found, perfection would be 1 extent
/DUMP1/sagara/db/file1.dump: 255454 extents found, perfection would be 317 extents
/DUMP1/sagara/db/file2.dump: 54210 extents found, perfection would be 104 extents
/DUMP1/sagara/db/file3.dump: 16018 extents found, perfection would be 37 extents
/DUMP1/sagara/file_2008.dump: 203 extents found, perfection would be 1 extent.
/DUMP2/altair/flash_recovery_area/s1/full.dmp: 1366 extents found, perfection would be 9 extents
/DUMP2/altair/flash_recovery_area/s2/full.dmp: 462 extents found, perfection would be 4 extents
/DUMP2/georgia/db/1.dmp: 425 extents found, perfection would be 33 extents
/DUMP2/geordia/db/2.dmp: 317 extents found, perfection would be 32 extents
/DUMP2/optimist/db/Dima.dump: 1 extent found

когда объект один-два, еще можно прочитать и оценить трубуется ли дефрагментация, или терпимо.
но когда их много - пришлось нацарапать скриптик на awk

bliznezz аватар

клепаю скрипт, который будет качать файл с инета кусочками, после чего склеивать.

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

как правило клиент начинает тянуть, думает, думает, потом коннекшн дохнет =/
в тоже время если я запрошу объект не целиком а кусочек, на пример 100мб - то все ок.

Работа, время и только

Для получения только времени работы машины, например в скриптах, хочу предложить следующий универсальный способ:

]$ uptime | sed "s/.*p\ *//;s/,[^,]*u.*//g"
1 day, 48 min

Почему универсальный? Потому как на выходе не будет "лишних" символов:

]$ uptime | sed "s/.*p\ *//;s/,[^,]*u.*//g"
59 min
]$ uptime | sed "s/.*p\ *//;s/,[^,]*u.*//g"
59 min
]$ uptime | sed "s/.*p\ *//;s/,[^,]*u.*//g"
2:43 min
]$ uptime | sed "s/.*p\ *//;s/,[^,]*u.*//g"
23:15 min

и в добавление к теме "работа", для возможности, например, выключения без прав рута, достаточно выполнить следующую команду:

]$ chmod +s /sbin/halt

Vim. Перемещения курсора в Си-программах. Прыжок к телу функции.

Пару месяцев назад запостил в типсы исправленный vim-скрипт Cfname.vim, облегчающий редактирование программ на C. Оригинал можно найти на http://www.vim.org/scripts/. Автор не пожелал выложить новый скрипт с моими исправлениями, поэтому использовать "тамошний" скрипт не рекомендую, так как он во многих случаях не делает того, что должен. Лучше пользоваться моим.
Самой интересной фичей скрипта является возможность определения функции, в теле которой расположен курсор, и печать заголовка ( имя_функции (... ) { ) по нажатию определенных клавиш.

bliznezz аватар

мотиватор

while [ $(date +%k%M) -lt 1730 ] ;  do zenity --error --text="РАБОТАТЬ СЦУКО! \n\n\nСОЛНЦЕ ЕЩЕ ВЫСОКО" ; sleep 900; done

Заставляем less реагировать на русскую раскладку

Платформа не имеет значения. Исходники можно утянуть с http://ftp.gnu.org/gnu/less/. При редактировании использовался less-418.tar.gz (08-Jan-2008 17:20 292K)

В патче участвуют два файла decode.c и less.h

  • decode.c: массивы cmdtable[] и edittable[]
  • less.h: директива CONTROL(c)

(прикреплены пропатченные версии)

Мной конфигурилось c '--prefix=', make && sudo make install
После чего, less стал откликаться на 'й', как на 'q'.
Много протестировать не приходилось. Буду рад выслушать критику и баги.

з.ы. арчлинукс
Желаю мира.

Imagemagick. Создать из jpeg pdf

Собственно проблемы создать pdf нет.

$ convert *.jpg -adjoin -monitor MyPDF.pdf

Проблема состоит в предварительной подготовке изображений.

Есть около 400 штук картинок типа такой:

pacman update list

Вроде из заголовка все понятно, но все же: скрипт для консольного вывода списка пакетов, требуемых для обновления системы. Полезен, если обновлений много и какие-либо из-них, пока, устанавливать нет необходимости(аля не желательно).
буду рад, если понадобиться кому-нибудь, кроме меня =)
ах да, совсем забыл, обновлялка pacman, но я думаю при желании и необходимости переделается под "другой" линь.

листинг в файл = перенаправление вывода.

FreeBSD. Callouts. Переодически вызывающиеся в ядре функции.

Понадобилось написать функцию, которая один (первый) раз вызывается из системного вызова, и далее продолжает вызываться в ядре через заданные промежутки времени N раз несмотря на возвращение процесса из системного вызова в user space. Реализуется данный механизм через callout (9).
Порядок действий прост:
1. обявляем структуру struct callout my_callout
2. callout_init(struct callout &my_callout, 1);
3. Пишем функцию, которая должна вызываться: func (void *arg)
4. Внутри функции делаем следующее: callout_reset(&my_callout, secs*hz, func, arg);
Сие привяжет my_callout к func, реинициализирует таймер, и через secs секунд повторно будет вызвана func.

Исходник:

#include <sys/param.h>
#include <sys/types.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/module.h>

Временная запись, смысловой нагрузки не несёт.

Добавляю дневник к ya.ru. Эта абракадабра для робота

13110793.7b4ad654e26397bc2dc822f05366730c.1231547626.b09b3ef30fda0018f47ade22ba3cb0e0

авторестарт VPN

Частенько вылетает инет, запарился вручную восстанавливать, ну и заморочился написал скриптик:

разрывы

вот почему происходят разрывы сессия в инете?
все настроено
вы винде все отлично а вот в линухе нет
из за чего может быть это?

ramok аватар

FreeBSD. Remapping kernel memory buffer to space of user process

Задача: В системном вызове создать в пространстве ядра буфер. Сделать дополнительное отображение буфера в пространство процесса, сделавшего системный вызов. Другими словами, привязать к буферу два набора виртуальных адресов: кернельные, для доступа к буферу из системного вызова, и другие виртуальные адреса для процесса.

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

  • Получаем указатель на структуру vmspace, описывающую виртуальное адресное пространство процесса: struct vmspace *vms = procp->p_vmspace;
  • Создаем буфер размером в страницу: MALLOC(addr, vm_offset_t, PAGE_SIZE, M_DEVBUF...
  • Находим vm_object, соответствующий выделенному буферу: vm_map_lookup(&kmem_map, addr, VM_PROT_ALL,

Подключение светодиода к компьютеру и его программирование

В этом посте я расскажу о способах подключения к LPT и его программировании.
Не судите строго - моя первая статья.
Во-первых нужно узнать что же из себя представляет LPT порт, что и как мы к нему будем подключать/ Приведу информацию с   Википедии.
IEEE 1284 (порт принтера, параллельный порт, LPT) — международный стандарт параллельного интерфейса для подключения периферийных устройств персонального компьютера.В основном используется для подключения к компьютеру принтера, сканера и других внешних устройств (часто использовался для подключения внешних устройств хранения данных), однако может применяться и для других целей (организация связи между двумя компьютерами, подключение каких-либо механизмов телесигнализации и телеуправления).

Смотрите также