вторник, 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 и не все что можно было вывести на печать входит. Это была только присказка. 

понедельник, 14 января 2013 г.

Добавлен собраный пакет MT Loadera (теперь клубничный !!!)

Добавлен новый пакет MT Loadera. В текущей версии сделана работа с загрузкой - выгрузкой программируемых товарных кнопок на весах.

Работать с нопками луште всего при заргуженом списке PLU (иначе не имеет смысла). При сохранении списка PLU сохраняются и назначенные конпки.

четверг, 22 ноября 2012 г.

Работа Gtk3 приложения в браузере

Заинтересовал меня собственно вопрос "а как же работает проброс приложения GTK 3 в браузер". Как оказалось в Ubuntu 12.04 в Gtk 3  Gio.Brodway не включен. Гугление дало следующий рецепт :
sudo apt-get-repository ppa:malizor/gtk-brodway
sudo apt-get update
sudo apt-get upgrade
Запуск из командной сроки: 
GDK_BACKEND=brodway UBUNTY_MENUPROXY=LIBOVERLAY_SCROLLBAR=0 gcalctool

После чего по порту 8080 в браузере становится доступно наше запущенной приложение.
Иструкция по включению взята здесь.
Проверялось кроме системных Gtk3 приложений, собственное написанное на Python. Из особенностей следует заметить следующее. Окошки не могут изменять свой размер. Из кнопок доступно только закрытие приложения, минимизация и максимизация не доступы.