Open Glamdring opened 8 years ago
ref за GUI (ако потрябва): https://www.npmjs.com/package/nativefier
@banzsh обърни внимание, че минимума е просто скрипт, който ползва различни бази данни и съдържа инструкции как да се добави във windows scheduler или windows service.
А максимумът е скрипт, който се инсталира като windows service, за да е жив след рестарт.
Минимален вариант е:
//cc @banzsh
@antitoxic, @Glamdring, когато не създаваме нов ресурс, override
като upsert
или delete+create
да се разбира?
Избрах https://github.com/ckan/ckanapi за интерфейс със CKAN. Изглежда по-елегантно и ще отнеме тежестта за гадаене коя ckan версия какви endpoints има (не че има разлика в контекста на задачата).
:+1:
@antitoxic, @Glamdring, когато не създаваме нов ресурс, override като upsert или delete+create да се разбира?
@banzsh дай малко контекст? Не съм запознат с възможностите на CKAN на 100%. Може ли да се пазят версии (dataset versioning)? Тоест ако не създаваш нов ресурс, да му създадеш нова версия? Предполагам не може?
Ако може -> просто качваш нова версия. Ако не може виж: https://github.com/governmentbg/opendata/issues/31#issuecomment-174581342 . Предлагам, когато не се създава нов ресурс, просто да да се добавя нов, а на остарелия да му се слага expired_on
текущата дата и причина за expiry -> Automatic update
Но, по-важното в момента не се фокусирай на updates. Нека направим инструмент, който чете от данни от различни източници и просто блъска нови данни.
Btw, видя ли https://github.com/obshtestvo/opendata-data-provider? Това е разработено преди година и работи със CSV.
@antitoxic, видях https://github.com/obshtestvo/opendata-data-provider, форкнах го, ще използвам някои неща от него и мисля към него да пускам PR. Watcha think? Или друго репо да правим?
Добавих opendata-data-provider
към repo-тата, до които имаш достъп в obshtestvo. Директно редактирай него. Имаш push достъп разбира се.
@banzsh проучих малко вчера нещата. Игнорирай разговора вчера. Целим mysql, postgres, csv, excel. Това е всичко за начало, за да направим MVP release. Ползвай SQLAlchemy или каквото беше решил.
Refs, ако се тръгне с nodejs: https://sqlectron.github.io/ - билднато с nodejs+electron, има поддръжка на postgresql, mysql и mssql. И е opensource и decoupled - https://github.com/sqlectron
@banzsh изглежда много добро. Къде видя mssql? Тук са само 2: https://github.com/sqlectron/sqlectron-term#current-supported-databases
В https://github.com/sqlectron/sqlectron-core са писали и ms поддръжка.
ref: node + oracle на windows изглежда като да не е много portable: https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#winbins
The destination computer's PATH needs to include Visual Studio redistributables. If you used Oracle client 11.2 then the Visual Studio 2005 restributable is required. For Oracle client 12.1, use the Visual Studio 2010 redistributable.
@antitoxic Идеята на тези redistributables е да могат да се инсталират, ако нямаш инсталирано Visual Studio.
Могат да се свалят и сложат с отделен инсталатор, който може да се свали безплатно:
Определено е по-малко portable от това просто да се изсипят едни файлове някъде, но е изискване, което би трябвало в повечето случаи да е лесно изпълнимо. Инсталаторът може да е част от общия пакет.
Може да сте попадали, но когато ми трябва да тествам нещо под windows (по-точно IE), ползвам тези VMs - https://github.com/xdissent/ievms
@antitoxic пробвах node, не ми хареса през какво минаваш, за да достигнеш до executable. Още повече, че sqlectron не тръгна. Стартирайки sqlectron, след инсталация ми бумна коравосърдечното "C:\Program Files\Sqlectron\Sqlectron.exe is not a valid Win32 application." По-скоро е направено за GUI-та, базирани на html, и за Win7+
Пробвах https://github.com/mitchellh/gox, написах тест, който достъпва MySQL сървър и изпълнява select клауза, крос-компилирах с gox и тествах на чисто XP - profit (отделно, че получаваме байнърита за куп други операционни).
Мисля да продължа с Go, но ми трябват тестови сървъри, MySQL и PostgreSQL мога да си вдигна локално, но по останалите бази нямам знания и не съм сигурен, че мога да сетъпна работещи инстанции.
@banzsh Малко коментари, за да се започнем вече работа с дадена технология.
@antitoxic пробвах node, не ми хареса през какво минаваш, за да достигнеш до executable. По-скоро е направено за GUI-та.
През какво минаваш? Питам с идеята, че не целим да е лесно компилирането, а да е portable след това. Няма нужда да е .exe. Може да bundle-ваме node.exe просто.
но по останалите бази нямам знания и не съм сигурен, че мога да сетъпна работещи инстанции.
ползвай неща като това: https://github.com/fgrehm/vagrant-mssql-express
gox
За какво ни е? Не build-ваме ли само за windows? Или това е единствения начин да се build-не за windows от линукс?
GO - работил съм отдавна и малко. Чисто е, просто е, не е лошо. Ако го изберем губим JS разбираемостта и печелим oracle драйвер: https://github.com/golang/go/wiki/SQLDrivers . Имай предвид, че @peperon проверява дали с .NET може лесно да се направи executable, което ще има една единствена цел -> приема SQL за инпут, връща резултати (csv) за output. Ако пробата даде позитивни резултати ще можем да отдъхнем за DB драйвъри.
Какво мислиш?
ref: informix with docker: https://github.com/0x1fff/docker-informix
PS: @banzsh тия неща ги намирам просто като търся в github или google за "mssql vagrant", "informix docker", "informix vagrant"...
Относно docker и vagrant - не ми мина през ума, ще ги ползвам за тестове :)
nodejs се оказа, че има повече за четене от go, относно как да си направиш приложението да работи под windows. Чисто самият апп се ангажира с това как да бъде билднат. В go не видях такова нещо. Пишеш си приложението, билдваш през gox и то бълва .exe, което просто върви.
В момента не мога да намеря източник, но ми се стори, че за да билднеш нещо на electron (който всъщност не ползва V8), трябва да го пишеш на платформата, за която билдваш.
И пак да кажа, sqlectron не върви на XP (http://electron.atom.io/docs/v0.36.5/tutorial/supported-platforms/#windows)
Друго, което пробвах за node е https://github.com/igorklopov/enclose, но е платен - http://enclosejs.com/buy и билдва на конретната платформа: https://github.com/igorklopov/enclose/blob/master/bin/enclose.js#L46
@banzsh а ако оставим настрана electron и просто ползваме node.exe
+ nashiq_skcript.js
?
Тествах. Този подход работи при mysql. Като вдигна другите бази ще имам яснота дали ни върши работа.
Йо. Малък ъпдейт от мен за .net и Informix.
IBM предоставя библиотеки за комуникация с базата, прочетох малко докумнентация за тях(тук и тук). За съжаление не можах да тествам реално нищо, защото download линка на страницата беше временно unavailable(пробвах го в петък и ме навигираше ок, но за съжаление нищо не свалих тогава :disappointed: ).
За да се ползват драйверите трябва да се инсталира client SDK, което е е малко кофти. Теоретично може да се автоматизира с инсталатор, но за момента нямаше как да проверя това.
Ще поразгледам и някой друг подход ако е възможен пък до тогава да се надяваме днес страницата им да бъде достъпна отново...
Има ли смисъл да гледам за други драйвери с друга база данни за .net?
Една малко random идея. Какво ще кажете вместо комуникацията с базите данни да става на ниво клиент, да имаме отделен web service който да го прави? По този начин клиента ще бъде доста простичък, ще има ролята на trigger за качването на данни, и няма да има нужда да се притесняваме как точно да го инсталираме на клиентските компютри. Въртят ми се следните сценарии:
Ползите от този подход биха били, че няма да се притесняваме какво и как точно да инсталираме на клиентските машини, т.е. дали клиента ни е portable отпада като притенсение. Например за Informix трябва да се инсталира client sdk на машините от които трябва да достъпваме базата. Подозирам, че бихме има доста такива проблеми в бъдеще и ако контрола на комуникациите с базите данни е по-лесно достъпен за нас би било по-лесно.
Както споменах под всеки от сценариите има и недостатъци. Не съм съвсем сигурен, но този подход може да усложни решението. Също така ще имаме нужда и от някакво security.
Мнения?
@peperon
Потенциален проблем би било ако сървърът няма достъп до тази база данни по причини от сорта - трябва да си в локална мрежа за да достъпиш тази база. Отново ще ни е нужно някакво security.
Show-stopper. Няма как да го направим. Най-малкото за достъп до цялата база отвънка. Други причини бол, bandwidth, legal, ...
Пиши като можеш да сайта вече не е down :smiley_cat: и пробваш .net и informix/oracle.
Предполагах, но реших да питам все пак, защото кой знае, може статутър ни да го позволява. :)
За Oracle има build-in client в .NEТ и няма да имаме проблеми с него, но ще го тествам днес.
Recap от мен.
SELECT
-и, т.е. колко да ни лимитира. :)Другата седмица ще тествам с Informix
и евентуално как да автоматизираме install-ът.
@antitoxic ще направиш ли един nodejs бранч в репото, да не отива зян това, което са направили момчетата в https://github.com/obshtestvo/opendata-data-provider
Прогрес: имаме работещи и тествани csv, mysql и postgresql. Не можах да вдигна mssql vagrant-та и реших да не пилея сега време, за да довърша другите адаптери. По-късно ще добавя README и едно todo, че има какво да се разкрасява (e.g. ditch callbacks). Ще пушна като имам бранч.
@banzsh, извинявай за забавянето. Аз ще направя каквото ти трябва, само ми кажи пак какво, че не можах да разбера:
nodejs
?Не разбрах и какво ще стане зян, ако го няма този бранч.
Много въпроси, знам и звуча малко неориентирано, за което се извинявам :bow:
@mitio С Тони се разбрахме да работим в https://github.com/obshtestvo/opendata-data-provider, който към момента съдържа код от някакъв хакатон. Тъй като това, което направих няма нищо общо с това, което е в бранчовете, ще е по-добре нов чист бранч, в който да си пушна nodejs проекта. До колкото виждам имам самo push права, не мога да създавам бранчое.
@banzsh, готово. Бранчът nodejs
е базиран на master. Изтрий си вътре каквото не ти трябва.
@Glamdring виждам, че си започнал някаква работа в тази посока в това хранилище: https://github.com/governmentbg/opendata-ckan-pusher
Няколко човека от Open Data Node се свързаха с нас, проявявайки интерес към българския opendata портал и предлагайки да разгледаме техния OSS проект, базиран на CKAN. Преглеждайки материалите на сайта им, виждам, че може би те имат имплементирано нещо подобно на това (извадката по-долу е от тук):
Support for correct publishing
In order to publish Open Data properly, i.e. using Open formats, in machine readable form and in timely manner, Open Data Node does following:
- it extracts (harvests) data from internal systems using any available interface and method to do that safely, effectively, with low costs,
- it processes that data, performing format conversions, cleansing, anonymization, enrichment, linking, etc. (and as part of that also compiling some metadata about that data)
- it stores the results (data and metadata too), serving effectively as cache, protecting internal systems from overloading in case of high demand for data from users,
- it makes the results available to the general public and businesses supporting both common users (with usual office tools on PCs or other devices) and application developers (equipped with powerful software development tools and above average hardware), implementing also automated and efficient distribution of updated data increments and dataset replication (including metadata),
- it allows all this to be automated, easy to use and easy to maintain.
Ще опитам да се разбера с тях за разговор, за да получа повече информация и ще споделя.
Тук има техническа информация за ODN:
Между другото, ODN е съвкупност от няколко компонента, един от които е CKAN. Имат собствен CKAN форк: https://github.com/OpenDataNode/odn-ckan
/cc @mihail-ivanov
Аз си говорих с тях, те ми пратиха конкретни реализации, и точно това, което ни трябва за първа стъпка (с минимално усилие и поддръжка да спестим ръчното качване), ми изглежда, че го нямат.
Нужна е базова функционалност за автоматично качване на масиви от компютри в администрацията.
Функционалността е:
Трябва да работи под windows.
Приложението може да бъде с CLI, вкл. да бъде python скрипт и да изисква инсталация на python на машината. Няма нужда от GUI. Конфигурирането на периодичността може да бъде приложението или в windows scheduler. Ако е в приложението, то то следва да се регистрира като windows service. Допуска се добавянето като service или като scheduled task да бъде ръчно или с отделен .bat скрипт.