30 авг. 2016 г.

Quick copy big number of files to slow flash drive

Проблема - DICOM исследование состоит из большого количества мелких файлов. Если их писать последовательно, просто смонтировав флешку, получается очень медленно.
Решение - создавать образ диска на HDD, писать туда, затем переносить образ через dd. Создаем таблицу разделов на флешке с двумя разделами - с тем, что нужно записать и остатком флешки.
#!/bin/bash
# 1st argument - name of disk device (e.g. /dev/sdb or /dev/flash etc)
# 2nd argument - source directory name
#FLASH_SIZE=`cat /sys/block/$1/size`
FLASH_SIZE=`du -s -k $2 |sed 's/\(.*[0-9]\)\(.*\)/\1*2+65535/'|bc`
date
echo $FLASH_SIZE sectors to write...
dd if=/dev/zero of=/tmp/flash.img bs=512 count=$FLASH_SIZE
echo dd image created...
/sbin/losetup /dev/loop0 /tmp/flash.img
/sbin/losetup -a
/sbin/mkfs -t vfat /dev/loop0
echo vfat fs on image made...
mount /dev/loop0 /mnt
cpstart=$(date +%s.%N); 
cp -r $2/* /mnt
cpdur=$(echo "$(date +%s.%N) - $cpstart" | bc);
printf "Copied in  %.6f seconds\n" $cpdur
echo files copied to image...
umount /mnt &
wait
dd if=/dev/zero of=$1 bs=512 count=1
echo -e "n\np\n1\n2048\n+"$FLASH_SIZE"\nt\nb\na\nw\nq\n"|fdisk $1 >/dev/null
dd if=/dev/loop0 of=$1'1' bs=512 count=$FLASH_SIZE &
wait
echo image moved to flash...
/sbin/losetup -D
rm /tmp/flash.img
echo -e "n\np\n2\n\n\nt\n2\nb\nw\nq\n"|fdisk $1 >/dev/null
mkfs -t vfat $1'2' &
wait
echo cleaning done.
date

11 авг. 2016 г.

От Стокгольма до Лаппеенранты за 7 дней - перегон яхты из Швеции.

Участники:
ТС - я, рулильщик
БР - брат, таксист на дальние расстояния.
Д - дочь, студентка, кок и швартовая команда.
АИ - наша единственная надежда, навигатор и шкотовый.














День (-1), 08.07
Путешествие началось вечером в пятницу. Загрузив вещи в машину, в 18:30 мы выехали из Питера. Нашей целью была паромная переправа в Турку. Гугл утверждал, что ехать туда около 4,5 часов, но по дороге был большой элемент неопределённости - финская граница в пятницу вечером. Поэтому выехали мы с запасом, поставив себе задачу пройти границу до полуночи. Около 10 часов вечера забрали от выборгского замка АИ с вещами.
На границу приехали около 23:30 и, на удивление, очередь там оказалось совсем не большой. Примерно в 00:10 выехали в Финляндию.

2 авг. 2016 г.

Установка DCM4CHEE для Windows и Debian

Windows

Берем инсталляцию MYSQL отсюда - http://dev.mysql.com/downloads/windows/
Берем инсталляцию JDK отсюда - 
http://www.oracle.com/technetwork/java/javase/downloads/index.html
или (для JDK7) 
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
сам dcm4chee берем отсюда - 
https://sourceforge.net/projects/dcm4che/files/dcm4chee/
Jboss для него берем отсюда - 
https://sourceforge.net/projects/jboss/files/JBoss/JBoss-4.2.3.GA/
Ставим MySQL.
Ставим JDK. Нужно ставить 1.7, так как с 8 не работает jmx-console


4 июн. 2016 г.

Нагрузочное тестирование Asterisk

На дополнительном Asterisk cоздаем call file с именем test:
Channel: SIP/192.168.0.1/100
application:Playback
data:demo-congrats
MaxRetires:1
RetryTime:60
WaitTime:30
Priority:1

С помощью скрипта закидываем его на прозвон в цикле:
#!/bin/bash
while true
do
  cp test test.call
  chown asterisk test.call
  chgrp asterisk test.call
  tmpname=$RANDOM.call
  mv test.call /var/spool/asterisk/outgoing/$tmpname
  sleep 60
done

20 мая 2016 г.

Lansweeper lspush.exe + openvpn - collect data on connect

The task:
Collect data from mobile computers after connecting into corporate network with openvpn client for windows.
The problem:
Openvpn client wait while "up" script ends. The lansweeper server not available because connection still not established.
How to resolve:
Run script and return control to connection. Run lansweeper client 20 seconds later.
=============================================
1. Use "up" option of openvpn
# connection.ovpn
script-security 2 system
up "c:\\adm\\up.cmd"
=============================================
2. Run vbscript and return to connection without waiting script
rem c:\adm\up.cmd
cscript.exe c:\adm\lspush.vbs
=============================================
Rem c:\adm\lspush.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
call WshShell.Run("c:\adm\lspush.cmd",0,false)
=============================================
3. Openvpn connection established and lspush.exe runs after timeout, when lansweeper server already availiable.
rem  c:\adm\lspush.cmd
timeout /t 20
c:\adm\lspush.exe my.lansweeper.loc

26 апр. 2016 г.

Raspberry Pi A/B 26 and 40 pin connector


20 апр. 2016 г.

Install dcm4chee-cdw on raspberry pi 2 (or raspberry pi model b) part 2 - writing dicom to flashdrive

Replace path to mkisofs and cdrecord to own scripts.
Connect button and LED to gpio connector. (button -  pins 9/11, led - pins 13/14)
Scripts will be availiable later.

13 апр. 2016 г.

Install dcm4chee-cdw on raspberry pi 2 (or raspberry pi model b)

1. Download minimal Raspberry Pi image from https://downloads.raspberrypi.org/raspbian_lite_latest,
write it on SD-card,
on any Linux  - apply gparted to /dev/sdb, resize partition up to flash size.

2. Load system on Raspberry. Connect by ssh.

29 мар. 2016 г.

Using Cisco SPA504G Yealink t27 t22p Fanvil C66 X5S Grandstream GXP1628 BLF lamps as status indicators and speed dial - Asterisk



; extensions.conf

[Hints]
exten => 9901,hint,Custom:LoginStat01
exten => 9801,hint,Custom:QueueStat01
exten => 9701,hint,Custom:PauseStat01
[Internal-Main]
; Operator login/logout ==================================
exten => _99XX,1,Answer
 same => n,noCDR()
 same => n,GotoIf($["${DEVICE_STATE(Custom:LoginStat${CALLERID(num)})}" = "NOT_INUSE"]?logout)
 same => n,Set(DEVICE_STATE(Custom:LoginStat${CALLERID(num)})=NOT_INUSE) ; login indicator becomes green
; do something and hangup
 same => n(logout),NoOp("Выход из системы")
 same => n,Set(DEVICE_STATE(Custom:LoginStat${CALLERID(num)})=INUSE) ; login indicator becomes red
; do something and hangup

14 мар. 2016 г.

"Правильная" таблица CDR

<pre>

CREATE TABLE `cdr` (
`id` int(11) unsigned NOT NULL,
  `calldate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `clid` varchar(80)  NOT NULL DEFAULT '',
  `src` varchar(80)  NOT NULL DEFAULT '',
  `dst` varchar(80)  NOT NULL DEFAULT '',
  `dcontext` varchar(80) NOT NULL DEFAULT '',
  `channel` varchar(80)  NOT NULL DEFAULT '',
  `dstchannel` varchar(80)  NOT NULL DEFAULT '',
  `lastapp` varchar(80)  NOT NULL DEFAULT '',
  `lastdata` varchar(80)  NOT NULL DEFAULT '',
  `duration` int(11) NOT NULL DEFAULT '0',
  `billsec` int(11) NOT NULL DEFAULT '0',
  `disposition` varchar(45)  NOT NULL DEFAULT '',
  `amaflags` int(11) NOT NULL DEFAULT '0',
  `accountcode` varchar(20)  NOT NULL DEFAULT '',
  `userfield` varchar(255)  NOT NULL DEFAULT '',
  `uniqueid` varchar(32)  NOT NULL DEFAULT '',
  `linkedid` varchar(32)  NOT NULL DEFAULT '',
  `sequence` varchar(32)  NOT NULL DEFAULT '',
  `peeraccount` varchar(32)  NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ALTER TABLE `cdr`
ADD PRIMARY KEY (`id`),
ADD KEY `calldate` (`calldate`),
ADD KEY `dst` (`dst`),
ADD KEY `src` (`src`),
ADD KEY `uniqueid` (`uniqueid`),
ADD KEY `accountcode` (`accountcode`);

ALTER TABLE `cdr`
MODIFY `id` int(11) unsigned NOT NULL AUTO_INCREMENT;