shoorick: (Рыжий)
Когда-то давно мельком заметил я, что счётчик кадров в фотоаппарате Nikon D70s какой-то странный: номер не всегда возрастает. Порывшись в фотоархиве, нашёл я пачку кадров, где номер сбрасывается, проверил:
#!/bin/sh
for file in `ls 442*jpg`
do
    echo  -n $file
    exiftool $file | grep 'Shutter Count' | cut -c33-44
done

Так и есть!
4420.jpg: 65534
4421.jpg: 65535
4422.jpg: 0
4423.jpg: 1
4424.jpg: 2
4425.jpg: 3
4426.jpg: 4
4427.jpg: 5
4428.jpg: 6
4429.jpg: 7

Выходит, счётчик всего-навсего двухбайтовый. Что же, предполагалось, что камера не может сделать больше, чем 65535 кадров? И ведь ме́ста-то в EXIF для нормального счётчика хватает — поле имеет тип LONG (32-битное беззнаковое целое), но используется лишь наполовину.

Кстати, geeqie показывает некоторые тэги, которые exiftool не отображает и среди них есть Shutter Count 1 (Exif.NikonSi01xx.ShutterCount1), в котором хранятся целые числа со значениями около 869×10⁶ (хотя есть и другие, сильно отличающиеся значения), а также поле Shutter Count 2 (Exif.NikonSi01xx.ShutterCount2), где лежат па́ры небольших целых чисел. Что это за числа — не вышло ни понять, ни нагуглить.

http://shoorick.ru/2016/01/10/two-bytes/
shoorick: (Рыжий)
Сваленные в кучу файлы можно сгруппировать по их расширению — например, такой командой:
find . -type f \
| perl -MFile::Copy -MFile::Path -nle \
'/\.([^\.\/]+)$/ and $ext = $1; print $ext; File::Path::make_path "../$ext"; move $_, "../$ext"'

http://shoorick.ru/2015/04/08/bulk-grouping/

Баш!

Mar. 22nd, 2011 05:53 pm
shoorick: (Default)
Запускающийся при входе в FreeBSD по умолчанию шелл /bin/sh — неудобен. Например, в нём нет дополнения по нажатию клавиши табуляции. Можно не тратить время на гуглёж и заменить шелл оболочку на более могучую, например, на bash. Однако прямое редактирование /etc/passwd не помогает. Выход — использовать chsh:
chsh -s /usr/local/bin/bash
shoorick: (Default)
find . -name \*pdf \
| perl -nle '$o=$_;s/Выпуск //;s/ том /_/;rename $o,$_'
shoorick: (Default)
Из примеров на Mojolicious::Lite можно легко вынести все встроенные шаблоны в отдельные файлы — для этого можно запустить your-app-name inflate.

Может возникнуть и обратная задача — собрать шаблоны обратно в одну кучу. Зачем? Ну, например, для того, чтобы распространять готовое приложение в виде одного файла. Получить список файлов и их содержимое можно скриптом:
 1 #!/bin/sh
 2
 3 for i in `find templates -name \*.ep`
 4 do \
 5     echo -n '@@ '
 6     echo ${i#templates/}
 7     cat $i
 8     echo
 9 done
Переезжая из-под kate на vim, пробую и исходный код раскрашивать в нём же.
shoorick: (Default)
Дано — весы напольные бытовые безмозглые без памяти.
Хочется — где-то хранить результаты взвешиваний: время и вес. Голова не подходит — ей подобные данные ни к чему. КПК и бумажные блокнот тоже
Возможное решение — хранить данные на компьютере. Причём, сохранить надо быстро, а обработать сохранённое (например, построить по ним график) — можно позже. Простейший из методов — системными командами, без излишнего программизма:
echo `date '+%s%t'` $1 >> ~/.weight/data
В файл пишется время и вес. Разедлитель полей — символ табуляции. Дёшево и сердито. Обработка данных — в следующей серии.
shoorick: (Default)
Panoramio предоставляет возможность отображать фотографии оттуда на своём сайте — можно получить список фотографий по указанным координатам в формате JSON. Как разбирать JSON — другой вопрос. Я попробовал яваскриптом — в общем-то, работает. Правда, я весь яваскрипт забыл, поэтому смог, подглядывая в справочник, лишь разобрать предварительно полученное. А как получить список яваскриптом — не знаю. Поэтому написал мелкий скриптик — два эха и один wget — который делает нужный список:
echo -n 'var list = eval(' > susu.js
wget http://www.panoramio.com/map/get_panoramas.php?order=popularity\&...\&size=square -O - >> susu.js
echo ');' >> susu.js
А уже из этого списка и получаю картинки:
<script language="javascript" src="susu.js"></script>
...
<script language="javascript">
    var count = 20;
    var from = Math.round((list.count-count-1)*Math.random());
    for ( var i = from; i < from + count; i++ ) {
        with ( list.photos[i] ) {
            document.write('<a href="'+photo_url+'" title="Photo by '
            +owner_name+'. '+photo_title
            +'"><img src="'+photo_file_url+'" alt="'+photo_title+'"></a>');
        }
    }
</script>
Список получать можно и по крону. Раз в неделю — вполне достаточно, нет смысла брать чаще. Только вот в списке почему-то оказываются лишние фотографии, немного выходящие за пределы указанного квадрата: например, вместе с университетским городком в список попадают и фотографии с середины улицы Энтузиастов.
shoorick: (Default)
FILE=`date "+$HOME/map/track/%y%m%d.gpx"`
if [ -f $FILE ]; then
    cp $FILE $FILE~
fi
gpsbabel -w -r -t -i garmin -f usb: -o gpx -F $FILE
Сливает с гарминского навигатора путевые точки, треки и маршруты, сохраняет их в файл с именем вида ГГММДД.gpx, если файл существовал — переименовывает его в ГГММДД.gpx~

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 13th, 2025 11:36 pm
Powered by Dreamwidth Studios