понедельник, 17 ноября 2014 г.

Первое впечатление о Oculus Rift

Опробовал в кототком тесте данное устройство. Впечатления противоречивые. На обычные очки не одеть. Можно конечно подогнать линзами на самом устройстве но это не всегда удобно. Использовать устройство стоя без страховки сложно. Организм начинает считать, что что то не то происходит и соотвественно реагировать. Возможно сидя было бы проще и удобнее. Без системы как в "Газонокосильщике" использовать сложно и чревато. 
Вот как то так.

четверг, 27 марта 2014 г.

Себе на заметку: Определение номера колонки в JTable по которой произошол клик мышью.

В одном из проектов понадобилось переключать внутрению логику обработки редактирования данных в JTable в зависимости от клика на колонки.
В результате получилось следующее :

 JTable grid.getTableHeader().addMouseListener(new HeaderClick()); 

вешаем слушателя на заголовок таблицы.

класс HeaderClick выглядит следующим образом:

class HeaderClick implements MouseListener {

        @Override
        public void mouseClicked(MouseEvent me) {
            if (me.getSource() instanceof JTableHeader){
                TableColumnModel cl=((JTableHeader) me.getSource()).getColumnModel();
                if (cl.getColumn(cl.getColumnIndexAtX(me.getX())).getHeaderValue().toString().equals("Брутто")){
                    Glu.setCFG("CardSpecDirection", "brutto");
                    cl.getColumn(cl.getColumnIndexAtX(me.getX())).setHeaderRenderer(null);
                   
                }

            }

        }
 номер колонки по заголовку которой мы кликнули получаем с помошью -
cl.getColumnIndexAtX(me.getX())  т.е. me.getX() - это положение мыши и по положению мыши мы получаем номер колонки в заголовке.
 

вторник, 25 февраля 2014 г.

Себе на заметку: загрузка и выгрузка файлов с FTP

Загрузка файлов с FTP сервера

import os
import ftplib
# сохранем файлы по маске и ftp сервера
# из корня в папку expath
def copyData(expath,ftp_srv,user=None,passw=None,mask='.txt'):
    conn=ftplib.FTP(ftp_srv,user,passw)
    dir_res=[]
    conn.dir('.',dir_res.append)
    files=[f.split(None,8)[-1] for f in dir_res if f.startswith('-')]
    print files
    for f in files :
        if f.find(mask)!=-1:
            outf=open(expath+os.sep+f,'wb')
            try:
                conn.retrbinary('RETR %s' % f,outf.write)
            finally:
                outf.close()
    conn.quit()
Сохранение файлов на FTP сервере

import ftplib
import os

local_file=os.listdir('./exp')

ftp_srv='192.168.1.1'
user='ftp'
passw='1234'
# каталог на FTP сервере куда мы закидываем данныне remote_path='xt1'

conn=ftplib.FTP(ftp_srv,user,passw)

if len(remote_path)!=0:
    conn.cwd(remote_path)

for l in local_file:
    print l
    f=open('./exp/'+l,'rb')
# вот ради это все остальное и затевается     conn.storbinary('STOR '+l,f)
    f.close()
    pass

conn.quit()

пятница, 24 января 2014 г.

Рабочее место официанта..

Вот примерно такой дизайн у рабочего места официанта для кассовой системы Unicash. (Делается под Touch Screen)

вторник, 18 июня 2013 г.

Vala и конфиг в json

Как то в один прекрасный день потребоволось хранить дерево в одной программе на vala. И обуяла меня жажда велосипедостроения (ну за одно и потренироваться в работе с json оказалось неплохо).  В результате родился ниже приведенный класс. Класс умеет проверять наличие ключа (не значения) в json - структуре. Читать с диска и сохранять на диск результат а так же работать с строковыми значениями. Остальные значения допустимые в json  в данном примере не включены из за эконимии места, и строкового типа хватить для показа работоспособности.

Так как используется модуль Json то при сборке проэкта не забудьте указать пакет json-glib-1.0. К примеру строка сборки тестового примера у меня выглядит как vala --pkg json-glib-1.0 -o test_config_d -g
Для разделения веток конфига используется символ "/".
К примеру чтение значение cfg.get_string_value("Key 1/Key 2/Key 3") примененое к json файлу вида
 {
           "Key 1":{"Key 2":{"Key 3":"value 2"},
                          "Key 4":"value 1"
                        }
}
 вернет значение value 2

четверг, 14 марта 2013 г.

Zebra Ununtu и проблемма с "прыгающими" принтерами

При открытии нового объекта возникла забавная проблема. На операторской машине стоит Ubuntu 12.04 и подключены 2 принтера по usb. В Ubunt'е при подключении принтеров по usb создаются каналы вида /dev/usb/lpxx , где xx - номер от 0 и дальше. Данная особенность позволяет печатать из программ которые про cups ничего не знают. К примеру cat 1.txt > /dev/usb/lp0 выведет файл 1.txt на печать. Данная особенность использовалась для печати на принетера Zebra из под wine. Ясно что это костыль но вот если печатать через cups то растеризатор делает очень забавные весчи с тем что на него отправили. Правда делает он, что попало при 203 dpi, если поставить 300 dpi то все нормально, но только возникают проблемы с тем что картинка получается в 300 dpi а принтер умеет 203 dpi и не все что можно было вывести на печать входит. Это была только присказка.