03 декември 2007

Модули в RDsuite

Друго нещо, което ще се появи в коледната версия на RDsuite e възможността за работа с модули. Кодът, който администрира създаването им и раздаването на привилегиите на отделните потребители е вече в svn хранилището. Това като цяло дава възможност да се фокусира разработването на специфични програми, като склад, фактуриране и т.н. Като цяло идеята е следната: добавянето на фирма в системата регистрира схема в базата данни, която общо взето съдържа счетоводна информация за фирмата като номенклатури, сметкоплан, документи, осчетоводявания. Създаването на модул от своя страна създава допълнителна схема, която малко или много е свързана със схемата за счетоводната информация за дадена фирма. Разликата е в това, че в даден модул може да има по специфична информация, обхващаща дейността, за която е предназначен модула. Като цяло още имам няколко чуденки как да бъде реализирана комуникацията между отделните модули. За момента се ориентирам към това публичната информация за даден модул да бъде изнесена по някакъв начин в счетоводната схема и ако някой модул се нуждае от информация генерирана в друг модул, то да я търси в счетоводната схема. Възможно е да се измисли и начин за запитвания към отделен модул идващи от счетоводната схема, както и да се измисли някаква директна комуникация между отделните модули. Но дали ще се наложи да се правят такива сложни работи ще стане ясно, когато броят на отделните модули нарасне.

Като цяло добавянето на нов модул към административната част в системата става като се създадат два xml файла. Единият описва структурата на схемата, а другия съответния template. Към момента обаче регистрирането в системата става, чрез промяна в изходния код. Поради тази причина смятам след нова година да преразгледам db слоя но системата и да изнеса и тази конфигурация във външен файл. Това би дало възможност лесно да се разработват модули, които не е нужно да са базирани на QT4 или C++. Разбира се, при такъв сценарий няма да могат да се ползват готовите widget-и, освен, ако по някакъв начин не може да експортиран rdcorelib към съответните инструменти, които се използват.

Като финал да кажа и кое налага разработването на template-и и модули. Освен нещата, които за момента седят в svn хранилището има още четири програми, които ще бъдат включени в него. Два модула (за управление на арматурен двор, който е завършен доста отдавна и за управление на бетонопроизводство, който е някъде по средата на своето развитие), една програма за управление на xml файловете с дефинициите на отделните схеми (трябва малко да се пипне преди да я импортна в svn-а) и програма за ДДС дневници (сигурно ще бъде завършена след излизането на QT4.4, тъй като ще си спестя доста излишна работа). Така че, ако видите голямо изсипване на файлове в svn, то да не се притеснявате, че съм се преуморил. Просто ще бъдат неща, които залежават повече от година по диска ми.

Отново за разделното събиране на отпадъци

Мога да разбера хората, които не си изхвърлят боклука разделно, въпреки че имат контейнери за разделно събиране на отпадъци. Все пак е едно усилие в повече да почистваш опаковките и да ги трупаш в различни пликчета или кошчета. Мога да приема и гледната точка на хората, които разбиват контейнерите и измъкват събраните опаковки, най-вече хартия, за да ги предадат на вторични суровини. Все пак трябва да се яде и живее. Но не мога да ги разбера какви са тези олигофрени, които изхвърлят биологични отпадъци в контейнерите за разделно събиране и прецакват цялата идея.

25 ноември 2007

Template-и в RDsuite

Скоро не съм писал неща за RDsuite и като се има предвид, че последната версия е от началото на годината, то сигурно доста хора са си помислили, че проектът е в застой. Сега е моментът да разсея тези опасения и да кажа, че около Коледа ще излезе следващата версия. Едно от новите неща в нея ще бъде използването на template-и. От гледна точка на функционирането на програмата това не носи нещо ново, но пък ще дава възможност да не се започва с празна база данни, което ще е доста полезно за доста потребители, на които не им се разучават детайлите около аналитичността на сметките или потребителските справки.

От техническа гледна точка template-тът е набор от widget-и, чрез които потребителят въвежда някакви входни стойности. Някои стойности може да са задължителни, а други да се въвеждат при желание. Към всеки widget е закачен набор от sql команди и ако потребителят е решил да въвежда някакви стойности през него, то съответните команди се изпълняват. Принципно командите може да са произволни, но към момента се предполага, че това са select заявки, които връщат резултат един ред с една колона. Това не е кой знае какво ограничение като се има предвид, че записът на данни в базата минава през stored procedures (които в моя случай са функции). От друга страна това ограничение е важно, за да може резултатът от една заявка да се ползва в друга заявка, която не е необходимо да бъде от същия widget. В момента widget-ите, които се поддържат са Label (който ако е пожелателен става CheckBox) и LineEdit. При необходимост този набор ще се увеличи. Иначе цялото описание на template-та се съхранява в xml файл, така че лесно се редактира през текстов редактор. На който му се експериментира да хване последния код от svn хранилището.

От организационна гледна точка имам няколко чуденки. Към момента цялото описание на template-тите се съхранява в отделен файл и не знам дали не е по-добре да ги сложа към файла, който описва структурата на съответната схема. Това от своя страна ще наложи преместване на кода от администраторската част към общата библиотека. Освен това в момента има дублиране на код относно изпълнението на sql команди, което трябва да видя как да разчистя. Нямам още яснота какъв вид ще добият нещата, когато се почне поддържане на няколко различни вида sql сървъра. Ужким това е планирано в проекта, но може да се получат няколко проблематични области. И не на последно място може би трябва да довърша редактора за структурата на отделните схеми, към него и да сложа template-тите и да го commit-на в svn-а. Едно такова упражнение хем ще изчисти всичките въпроси относно как да се организират нещата около достъпа до базата данни, хем ще може по-лесно да се редактират отделните файлове. От гледна точка на крайният потребител на проекта обаче едва ли ще донесе някаква полза.

По отношение на счетоводната програма остава да видя все пак какво да има в съответния template. Така или иначе едва ли има универсален сметкоплан, така че трябва да измисля някакво приближение, от което всеки потребител с минимални усилия да промени нещата към нещо по-удобно за него. Всякакви предложения са добре дошли.

23 ноември 2007

Няколко дни без лаптоп

В съботата ми се прецака захранващия адаптер на лаптопа. Всъщност може би се е прецакал в някой от предните дни, но тъй като не ми се е налагало да го ползвам едва в събота разбрах. Съобщението, че ми остават еди колко си минути бързо бе последвано от изключване на компютъра. Принципно и преди ми се е случвало да си мисля, че съм включил лаптопа в контакта, пък той да е на батерии, но чат с понаместване на кабела нещата се оправяха (тук е моментът да споделя, че когато първо пускам компютъра, а след това го включвам в електрическата мрежа, то индикаторът за захранването в KDE-то на Fedora-та показва батерийка, независимо че не е на батерии. Ако някой знае как се оправя това неудобство, да сподели). Явно около огъването на кабелите някъде го бях прекъснал за постоянно и този път този фокус не проработи. Бях неприятно изненадан. Доста от нещата ми седят само там и ги нямам другаде и нямаше как да свърша нещата, които бях запланувал. Много е гадно като си направиш някакъв план изведнъж всичко да отиде по дяволите. Макар и денят да не бе загубен, тъй като можеше да свърша и други полезни за мен неща, някак си ми отиде цялото настроение, вкиснах се и нищо не ми се правеше.

Тъпото е, че тези адаптери нямат винчета за разглобяване и май ги лепят по някакъв гаден начин, така че отваряне без безвъзвратно повреждане на корпуса не може да се направи. Това ме отказа да си играя в къщи на млад електротехник и прехвърлих джаджата в задбалансовите активи. Все пак, за да се убедя, че проблемът е там, а не някъде другаде, набързо инвестирах в един мултицет (дълго отлагана инвестиция, остава да вида и кога необходимостта от бормашина ще ме изненада неприятно). Нямаше изходно напрежение.

Звънях на хората, от които си го бях купил с надеждата да продават адаптери, но се оказа, че не работят в съботата и никой не ми вдигаше (както се оказа по-късно и да имаше някой, нямаше да свърша веднага работа). Поразрових се из мрежата да видя от къде какво мога да купя. Това, че беше събота доста стесняваше възможностите. Във всичките магазини, в които продават техника, като Плесио, Мултирама, Технополис и прочие продават универсални адаптери. Точно пък с такива неща на руска рулетка не ми се играе. Не е ли 18.5V и 3.5A, не ми го пробутвайте. Все пак компютърът ми е в гаранция и ако нещо му се случи, това ще е първата причина, поради която ще ми отсвирят гаранцията. Явно ще трябва да се чака понеделника да си купя оригинално захранване.

Разбира се, имаше възможност да претендирам за гаранционно обслужване, но няколко неща ме отказаха от това. Първо исках да имам ползваем лаптоп ASAP. Ако се позовавах на гаранцията, то трябваше да си пакетирам компютъра, както съм го получил и да го оставя в сервиза. Там да ми го приемат, после някой да му отдели внимание по някое време и да констатира очевидния проблем, след което да си го получа в някой от следващите дни или седмици. Това не ми се понрави като идея. Да оставим настрана нещата, че сервизът ми е на майната си, пък отпуска за такива неща не ми се пуска. Второ в гаранционната карта със ситен текст е споменато, че гаранцията може да не важи за аксесоари и като се има предвид колко често сервизите се позовават на ситния текст, то вероятността да ме отсвирят не беше малка и само щях да си загубя времето. Да оставим настрана, че вината най-вероятно е и моя. Та прецених, че по-добре да дам 50 лева и да не се разправям с глупости.

Дойде и понеделникът. Звъня в магазина и обяснявам как се интересувам от захранващ адаптер за еди какъв си лаптоп. Обясниха ми как не продавали оригинални адаптери, как ги доставяли със сервизна поръчка, но могат да ми предложат универсален адаптер. Трябва само да дойда с лаптопа, за да видя дали ще сработят нещата. Отбих предложението с аргументите, които изказах по-горе и минах в контраатака. Обясних и че на техния сайт пише, че имат в наличност оригинален адаптер, който би трябвало да ми свърши работа. Изненадата беше пълна и ме помолиха да кажа кой е каталожният номер. Никакъв проблем. Казаха ми, че в момента го нямат в магазина, но могат да го доставят и да мина да си го получа. Попитах кога може да стане това и ми обясниха, че правят доставките сутрин преди обяд, така че на следващия ден ще мога да си го взема. Казах, че ме устройва. Още един ден щях да го преживея, особено като се има предвид, че си ползвам лаптопа основно през уикендите. Казаха, че ще ми се обадят. Пък аз помолих да потвърдят, че този адаптер е съвместим с моя модел лаптоп. Отговорът последва доста бързо, което не ме изпълни с кой знае колко доверие за верността му. Досега ми се е случвало да се сблъсквам хора, които не знаят характеристиките на нещата, които продават, но не ми се е случвало да попадам на хора, които да нямат представа дали продават нещо. Добре, че са измислили мрежата. Кратка справка в страницата на производителя потвърди, че това е моят адаптер.

Дойде и следващият ден (вторник). Гледах да не се отделям от телефона, за да не пропусна ценното обаждане. А то все не се случваше. Наближаваше към 13 часа и реших да поема инициативата в свои ръце. Звъннах в магазина. Този път попаднах на някакъв младеж, обясних му за какво се обаждам и попитах дали ми е дошло адаптера. Той малко се стъписа, проведе някакви консултации, на няколко пъти слушах музика от тяхната телефонна централа и ми каза да се обадя утре да проверя дали е дошъл. Определено се ядосах. Ако имах възможност щях ей така на пук да си го взема от другаде и да ги отсвиря. За съжаление имам доста ангажименти в работата и не мога да отделя време за търсене, пък фирмите, които на първо време мога да запитам или го нямат в продуктовата гама или направо на страницата им пише, че го няма в наличност. Кофти работа като го закъсаш с един от основните дистрибутори.

Дойде и следващия ден (сряда). Улисан в работа, не усетих как наближи обяд. Извъня ми телефона и девойката от магазина ми се обади, че мога да си получа адаптера. Зарадвах се и малко по-късно запраших натам. Всичко беше точно и останах доволен.

От цялата тая история започнах да се питам защо са ни толкова смотани фирмите. В крайна сметка не мога да виня девойката, че не познава продуктите, които продават, ако фирмата не и е осигурила нужното обучение. Ако отидете в Технополис или Техномаркет, такива хора с лопата да ги ринете. Не мога да виня девойката, че им е скапана логистиката. Толкова ли е трудно, да държат наличности на различни аксесоари на производителя, чийто дистрибутор са, в мрежата си от магазини. Добре, че съм в София, защото, ако бях в някой град в провинцията, сигурно и сега щях да си седя с неизползваем лаптоп. В крайна сметка доволният клиент е този, който си свърши бързо работата. Лошото е масово фирмите не се стараят да правят клиентите доволни, а ги вълнуват основно финансовите резултати. Някак си пропускат, че двете неща са свързани.

19 ноември 2007

Лиценз

Ако някой е имал капка съмнение, че в този блог пиша някакви смислени работи, то сега е моментът да ги разсея. В този блог пиша глупости (в широк и тесен смисъл) и поради тази причина ми е все тая дали някой ми спазва авторските права. Гледам, че все пак от време на време на някой му допада някое постингче и се копират материали, като се слагат линкове насам. За да не ги затруднявам правно тези хора най-накрая лицензирах съдържанието на блога под Creative Commons by-nd лиценз. Честно казано отдавна си мислех да го направя, но мързела все натежаваше. Е, преборих го! ;-)