началоstart ~ софтуерът-и-азsoftware-and-i ~ биография/cvcv/resume ~ библиотекаlibrary ~ снимкиphotos ~ детскиkids' ~     български/.bg     english

софтуер от свилен добрев | software by svilen dobrev

software by me софтуер от мен

left to be free. use it.. as you can. and don't hurt it.

оставен на свобода. ползвай го... както можеш. и не го наранявай.


github

  • py-xtdb-datomic + transit-python

    xtdb is a bi-temporal immutable database, datomic is an older 1-temporal one ; they did not have convenient python clients, and i needed such for some payments architecture.. but the project did not happen, so these are left as is - xtdb covers v1 and early v2 (~02.2024), with tests and everything. The "transit-protocol" library is 3x-5x faster rewrite over the original, but it's only use was xtdb v2 :/

    xtdb е двувремева непроменяема база данни, datomic е по-стара едно-времева такава ; нямаха си удобни питонски клиенти, а ми трябваха за една платежна архитектура.. но проекта не се случи, така че са оставени както бяха - xtdb покрива версия v1 и ранна версия v2 (~02.2024), с тестове и всичко. Библиотеката за транзит-протокола е 3x-5x ускорена спрямо оригинала, но единствената и употреба беше xtdb v2 :/


  • Notionery Понятийник

    cool and rather far-fetched idea... Notionery: system that helps you do "routine" things like remembering, learning and expressing yourself, in your terms and about your known things (subjects, themes, domains, people,.. whatever you have idea/notion of).

    яка и доста далечна идея... Понятийник: Система която ти помага да правиш "рутинни" неща като запомняне, научаване и себеизразяване, на твоя си език, относно познатите ти неща (предмети, теми, области, хора,.. за каквото имаш идея/понятие).


  • sklad склад

    tiny python.wsgi file-uploader for www server - multiple (HTML5) or single selections, progress-per-file, unlimited size (does not store anything in memory)

    мъничка качвачка на файлове на питон/wsgi за www-сървър - множествен (HTML5) или единичен избор, напредък-по-файлове, неограничени размери (не държи нищо в паметта)


  • fuselage фюзелаж

    tag-based semantic file system, in python, over FUSE. Pluggable aspects (parsing or interpretting). Querying and relations between tags/items. Modular architecture, allows different user-ends (fs/webdav/http/..), or backends (sql/rdf/..)

    етикетна семантична файлова система, на питон, върху FUSE. Добавяеми аспекти (за превод или употреба). Запитвания и взаимовръзки между етикетите и нещата. Модулна архитектура, позволяваща различни накрайници към потребителя или към системата.


  • facer / фасон ~2010

    tiny language for interface/protocol declaring and describing, in python. Methods - signature, inheritance, specialization; argument and result types, cardinality and optionality. Generates documentation. Easy cloning by interpreting over different set of types/arguments. All kind of checks are possible but are not automatic - only if called. Similar to static_type below but with different intentions - for (www) APIs.

    малък език за обявяване и описание на протоколи/интерфейси, на питон. Методи - сигнатура, наследяване, специализация; аргументи и резултати - тип, размерност, не-задължителност. Генерира документация. Лесно размножаване чрез прилагане върху друго множество от типове/аргументи. Всякакви проверки са налични но не са автоматични - само ако се извикат. Прилича на static_type по-долу, но с други намерения - за (www) програмни интерфейси.

    class IO_account( IO_base):
        class Types( Types):
            email       = Types.text
            name        = Types.user_text
            provider    = Types.enum( 'facebook linkedin email'.split(), type= str )
            r_account_profile = Types.text_stream
        MTypes = MTypes( Types) #autonaming-wrapper
    
        account_create= Method(
                email       = optional( MTypes.email),
                first_name  = optional( MTypes.name),
                provider    = MTypes.provider,
                ).doc( 'creates an inactive account and sends a token to email for confirmation')
        account_get     = MethodAuth(
                ).returns( MTypes.r_account_profile
                ).doc( 'returns account data')
    
        

  • smok / смок ~2011

    Translated Python 3: replacing the english words ( operators, names and messages - if,else,for,..) with another language - e.g. bulgarian (ако,иначе,за). For kids, and people who want to think and write in their own language, instead of suffer with the alternatives - near-"english", transliteration into latin, mixed latin-cyrilic.

    Преведен Питон 3: замества английските думи (оператори, имена и съобщения - if,else,for,..) с друг език - напр. български (ако,иначе,за). За деца, и хора които искат да мислят и пишат на собствения си език - вместо да се мъчат с алтернативите - почти-"английски", български на латиница или смес от кирилица и латиница.

    клас Филминфо( Инфо):      #изцяло преведено / fully translated
        @класметод
        деф сглоби_име( кл, име ):
            имена = [ име ]
            ако   име.завършва('.bg'): имена.допълни( име[:-3])
            инако име.завършва('.ru'): имена.допълни( име[:-3])
            иначе: имена.допълни( име)
            върни Инфо.сглоби_име( *имена)
    
    class Filminfo( Info):     #изцяло на английски / fully in english
        @classmethod
        def make_name( kl, name):
            names = [ name]
            if name.endswith('.bg'): names.append( ime[:-3])
            elif name.endswith('.ru'): names.append( име[:-3])
            else: names.append( ime)
            return Info.make_name( *names)
        

  • reporter / репортер ~2007
      declarative language for describing a report - and executing it:
    • input params and data extraction
    • data processing - filtering, calculations, aggregation/grouping/ordering
    • output layout into various looks (like MVC) - plaintext, wxwin/ printpreview, pdf/reportlab, html, excel, ...
    • the modelling is discrete, that is the atomary item is a field. Then fields can be grouped into various report-metamodels, depending on structural flexibility: bunch-of-fields - free form ; rows-of-fields - list of things ; table - rows of (same) columns (tabular data) ; cross-cut cols/rows (variable number rows * variable number columns) ;
    • there is inheritance in several aspects - structure, fields, processing, layout - a well as containment (field can be a sub-report)
      декларативен език за описание на справки - и изпълнението им:
    • входящи параметри и извличане на данните
    • обработка на данните - филтриране, изчисления, агрегиране/групиране/подреждане
    • оформление на изхода в разни изгледи (като МИК/MVC) - прост-текст, wxwin/ printpreview, pdf/reportlab, html, excel, ...
    • моделирането е дискретно, т.е. атомарния елемент е поле. Полетата може да се групират в разни мета-модели, според структурната гъвкавост: набор-полета - свободна форма ; редове-от-полета - списък неща ; таблица - редове от (еднакви) колони (таблични данни) ; кръстосани редове/колони (променлив брой редове * променлив брой колони) ;
    • има наследяване в няколко посоки - структура, полета, обработка, оформление - както и съдържане (поле може да е под-справка)
    class SprPeople( SprDef):
        class MyRow( Row):
            _set_ = FieldContainer(
                name   = FldDef( type= Text, model= 'name.name',
                            view= FldView( label= 'Name', align= 'l', border= 'r')),
                age    = FldDef( type= Int, model= 'ageyears',
                            view= FldView( label= 'Age', align= 'r', border= 'r')),
                city   = FldDef( type= Text, model= 'address.city'),
                suburb = FldDef( type= Text, model= 'address.suburb'), )
            _calc_ = FieldContainer(
                address = FldDef( type=Text,
                            data= lambda r: r.city +' '+ r.suburb),
                            view= FldView( label='Addresse', align='l', border='r')), )
        

  • dbcook / бд-готвач ~2007

    language to describe "recipes" for persistency of group of python classes, within their declarations. Independent of the database, hides it as much as technicaly possible - so same recipe and queries can be rendered into SQL/Alchemy (working), or others - RDFalchemy or google-datastore (todo). For big class-hierarchies. Has bitemporal extension, aggregations, polymorphic associations (for multiple inheritance), source-code-generator, etc. Even the query filters can be represented as python expressions..

    език за описание на "рецепти" за представяне на набор от питонски класове в база данни, като част от декларацията им. Не зависи от базата, и я скрива колкото е технически възможно - така че една и съща рецепта и заявки може да се претворят в SQL/Alchemy (работи), или в друго - RDFalchemy или google-базата (някога). За големи йерархии от класове. Има разширения за двувремеви данни, агрегиращи колони, полиморфни асоциации (за множествено наследяване), генератор на код, и т.н. Даже заявките може да се представят чрез питонски изрази..

    class Employee( Base):
        name    = Text()
        age     = Int()
        manager = Reference( 'Employee')    #single
        dept    = Association.Link( 'Dept', attr= 'people', nullable= True)     #many
        @classmethod
        def all_a25( kls):
            return kls.query( lambda me: me.manager.name.starswith( 'a') | me.age == 25 )
        

  • static_type ~2003-2006

    statically typed attributes and structures in python.
    note-2024: When i announced it in 2004 in python mailing group, i was spit at and torn into pieces - "if you need types, go use java". Fast forward 15-20 years.. python annotations a.k.a. "type-hints" are everywhere, overgrown, obscuring normal code and being abused as crutches for unskilled.. but they are just.. hints. Funny irony..

    статични типове - атрибути и структури - в питон
    забележка-2024: Когато ги представих през 2004 в питонската група, ме оплюха и разпънаха - "като искаш типове, върви пиши на Джава". Прескачаме 15-20 години.. питонските анотации, ползвани като типови-подсказки, са навсякъде, разраснали се, чак нормалния код не се вижда от тях, и се злоупотребяват за патерици за начинаещи.. а те са си само.. подсказки. Ирония..


  • timed / овременен ~2007

    bitemporal objects engine in python, with or without dbcook; look forward to history-enabled attributes

    машина за дву-времеви обекти на питон, с или без dbcook; очаквайте атрибути с история


  • SQLAlchemyAggregator ~2006

    automatic aggregating columns in SQLAlchemy / python

    автоматични агрегиращи колони в SQLAlchemy / питон


  • svd_util ~2000-2022

    useful python utilities (modules, classes, funcs, languages/frameworks, ..) made over the years

    полезни питонски неща (модули, класове, функции, езици/структури, ..) правени през годините

    • optz : simple !! options-getter (wrapping optparse or else)
    • attr.py : additional python-reflection tools: - multilevel getattr, setattr, import, getitemer - local vs see-through-hierarchy getattr - fail-proof issubclass() - subclasses extractor
    • eutf.py : guess utf or byte-encoding, and (on-the-fly) conversion, on text or files. python2 + python3
    • facer.py : protocol/API declaration language. Methods, arguments, results - types, cardinality, optionality; inheritance, specialization, cloning. Use visitors to do/generate all else.
    • expr.py : expression builder/visitor
    • tracer.py : trace python execution (for expain/log)
    • jgenerator.py : model-description "language" + dialects + generator of equivalent model in java + SAX + sqlite
    • ui/ : language for dialog/form layout description (text, html, wx); mini-MVC-web-framework (~2003)
    • vreme.py : Universal Calendar Time and Pediods arithmetics; physical, logical (next-working-day), inherit/compose, count, compare, overlap, cut
    • recorder.py : recorder + re-player of object usage - method calls with their args
    • config.py : hierarchical namespaced configuration language/engine, with types, helps, inheritance
    • and many others..

      и много други..


  • the bin ~1991-2022

    these are some various tools, scripts, settings, "languages"... for example
    - qini: config and aliases to make shells and terminals/vim behave same -
    - vcs+colorvcs: use + colorize bzr/svn/cvs/hg/git in same way;
    - archiv: view and extract all sorts of archives;
    - hyphbg: hyphenation in Bulgarian
    and many others, more or less usable

    това са разни инструментчета, скриптове, настройки, "езици"... например
    - qini: настройки и псевдоними за всякакви конзоли и терминали/vim да се държат еднакво
    - vcs/colorvcs: ползва и оцветява bzr/svn/cvs/hg/git по един и същ начин;
    - archiv: разглежда и изважда всякакви архиви;
    - hyphbg: сричкопренасяне на Български
    и куп други, повече или по-малко полезни


  • cassowarypy ~2002

    python wrapper over the Cassowary linear constraint solver + fixes

    питонска огъвка на известния решател на системи линейни ограничения Cassowary (+поправки)




писалка върху тефтер   | ballpen on a notebook
писалка върху тефтер | 2009 ballpen on a notebook | 2009

подредени топчета  | ordered marbles
подредени топчета | 2009 ordered marbles | 2009

нова стара къща  | new old house
нова стара къща | Констанц 2004 new old house | Konstanz 2004

диаграма от Лего  | diagram in Lego
диаграма от Лего | 2008 diagram in Lego | 2008

лице в лице   | face to face
лице в лице | ?? face to face | ??

шарени каски на строежа            | colorful helmets at building site
шарени каски на строежа | Варна 2004 colorful helmets at building site | Varna 2004 цветные каски на стройке | Варна 2004


писалка на тефтер | ballpen on notebook

Детски нещаKids' things
книжкиbooks
творения:легоcreations:lego

БиблиотекаLibrary
снимкиphotos
хайкуhaiku
водолет / e-foilwaterfly / e-foil
обиКолелоroundaBike
направи самdo it yourself

софтуерът-и-азsoftware-and-i
био/cvcv

>> #OpenToWork <<

'2008-2024 ~ началоstart ~ софтуерът-и-азsoftware-and-i ~ биография/cvcv/resume ~ библиотекаlibrary ~ снимкиphotos ~ детскиkids' ~   az()svilendobrev _ com