Стани премиум член и добиј попуст на 2000+ производи и куп други бенефити!
  • Ако имаш проблем со најава или регистрација на IT.mk, побарај го решението тука!

Миграција на legacy лабораториски софтвер: од CA-Clipper 5.2 во Tauri 2 + Rust + PostgreSQL

Fatal1ty_

Großmeister
28 февруари 2008
23.781
33.884
roka.mk
Напишав детален workflow за тоа како препишав специјализиран софтвер за молекуларна генетика и кариотипирање, од CA-Clipper 5.2 со dBASE III+ во модерен stack базиран на Tauri 2, Rust, React и PostgreSQL 16. Проектот го работев за клиент од USA, траеше 6 месеци, со околу 290.000 мигрирани варијанти.

Стариот систем потекнуваше од 1991 година, имаше 17 неповрзани .dbf датотеки без foreign keys, без валидација на HGVS нотација, и со критичен проблем при concurrent write каде последниот корисник ги презапишуваше промените на другиот.

Посебно интересен ми беше делот со HGVS нормализацијата преку Python и Biocommons библиотеката, идентификував 34 пациенти со потенцијално погрешна клиничка класификација поради inconsistent нотација во стариот систем.

Tauri го избрав наместо Electron поради вградена Linux машина со само 4 GB RAM поврзана со NGS секвенцер. Tauri зафаќаше 42 MB при старт наспроти 310 MB кај Electron. При обработка на VCF со 50.000 записи, Electron го доведуваше системот до swap, додека Tauri завршуваше за 94 секунди.

Во статијата е документиран секој чекор. Од PostgreSQL schema дизајн, преку VCF парсирање во Rust со noodles, ACMG класификација, ISCN parser со nom, до Tauri capability security моделот. Ако некој размислува за модернизација на legacy систем во регулирана индустрија, мислам дека ќе му биде корисно.

Линк: https://it.mk/kako-prepishav-spetsifichen-softver-od-clipper-vo-tauri-workflow/
 

mimica

hello world
15 декември 2010
136
78
Колку се наплаќа за ваква работа ако не е тајна? Делува комплексно и бара доста знаење.
 

Fatal1ty_

Großmeister
28 февруари 2008
23.781
33.884
roka.mk
Не би за пари да зборам. А дали бара знаење? Па секако особено бекенд за ваков вид на проект.
 

gdamjan

poweruser
3 април 2008
4.055
3.492
Скопје
damjan.softver.org.mk
gdamjan's setup  
Processor & Cooler
AMD Ryzen 5 Pro 4650G / Cooler Master Hyper 212 Black
Motherboard
MSI MAG B550m Mortar Wifi
Storage
NVME: 1TB AData XPG SX8200 Pro / HDD: 2x 2TB Toshiba P300
PSU
Gigabyte G750H
RAM
G. SKILL Ripjaws V Series 2x 16GB / DDR4 3200Mhz/CL16
Video card
Vega 7 on APU
Case
Bequiet! PureBase 500
Mouse
Logitech MX Anywhere 2S
Keyboard
ThinkPad USB Keyboard With TrackPoint (sk-8855)
OS
Arch Linux
одличен проект! браво
 

TylerMkD

poweruser
7 ноември 2014
4.763
10.096
Јас го прашав Gemini дали се ова може AI да го вајб-среди и ми рече нема шанса, 100 грешки ќе направел.

Така да скапа работа...
 

Fatal1ty_

Großmeister
28 февруари 2008
23.781
33.884
roka.mk
Јас го прашав Gemini дали се ова може AI да го вајб-среди и ми рече нема шанса, 100 грешки ќе направел.

Така да скапа работа...
А ти кажа колку пари? Пошо од се напишано пара ги интересира дечките :)
 

Daniel86

poweruser
28 мај 2013
4.278
11.752
Скопје, Карпош 1
www.facebook.com
Daniel86's setup  
Processor & Cooler
i5 11400 & Deepcool AK620
Motherboard
Gigabyte Z590 UD AC
Storage
Samsung 980 Pro NVMe 500GB & Samsung 980 PRO NVMe 1TB & WD Blue WD10EZEX 1TB
PSU
Asus Rog Strix 850W
RAM
2X 16GB DDR4 3200MHz Kingston Fury Beast CL16 RGB
Video card
Intel UHD730 & Asus RX5700XT OC 6GB
Case
Deepcool Tesseract SW Black/Blue
Mouse
MX Master 3
Keyboard
Aula Moon Slasher
Audio
Kenwood KRF-V5020 + Kenwood LS76
Monitor
Asus TUF Gaming VG27AQ3A
OS
Windows 11 Pro

InSides

lurker
21 февруари 2009
758
2.019
И мене ме интересираат парите ама само од аспект дали @Fatal1ty_ е задоволен од компензацијата за вложеното време, труд и стратегија.

Со тоа решено, поздравувам опис на проект од оваков калибар на јавно достапна локација. Знаењето треба да се шири, и ова помага и за изведувачи и за нарачувачи да сфатат колку е сложен оваков зафат наместо "абе ајде колку време ќе ти треба една базичка да ми префрлиш".

Од аспект на регулирана индустрија, неколку прашања:
  1. Дали размислувавте (или вградивте опција) за динамички приказ на системски дијаграм? Нешто каде има јасна поделба помеѓу (1) лични, (2) јавни, (3) чувствителни и (4) здравствени податоци? Нешто што ги покажува насоките на движење на податоците?

  2. Кои се барањата (ако ги има) за ограничување на задршка на податоци (data retention)? Дали системот (ако има ограничувања) автоматски прави анонимизација или бришење по истек на тој период?

  3. Дали се користи енкрипција на ниво на (1) база, (2) табела или (3) колона/поле?
Секако, одговорите само ако не се кочат со NDA и слични заврзлами.
 

Fatal1ty_

Großmeister
28 февруари 2008
23.781
33.884
roka.mk
@InSides Тенкс за поддршката и за конретните прашања. Прашањата се на место и истите ми се изоставени од документацијата, па ќе се обидам да ги одговорам накратко.

1. Нема динамички диаграм, но има вграден систем како жива React административна страница достапна само за ADMIN. Не е статичка слика, туку повикува Rust команда која агрегира бројачи по зона. Насоките на движење се цртаат обоено по тип: сини за лични (само влез), зелени за јавни (двонасочни со ClinVar), портокалови за чувствителни (само болница), црвени за здравствени (само до клиничар). Контролата на пристап е на ниво на PostgreSQL Row-Level Security, не во апликациска логика.

2. Имплементирана е диференцирана политика: 15 години за лични и здравствени, 30 години за генетски, перманентно за јавни варијанти и audit log. Акцијата е секогаш анонимизација (не бришење): EMB се заменува со иницијали плус hash, датумот на раѓање се сведува на само година, а варијантните наоди остануваат за популациска статистика. pg_cron го извршува ова автоматски на 1 јануари секоја година. Иначе освен овие податоци кои идат како анонимизација, сите останати записи можат да се бришат. Мојот предлог беше да нема опција за бришење, но архивирање, меѓутоа инсистираа да се бришат наместо да се архивираат, па така е имплементирана опција за бришење на секој запис но со дупла конфирмација. Само да напоменам дека имаат и бекап на база така да се може да се врати ако се избрише по грешка.

3. Имплементирани се четири независни слоја: LUKS full-disk на Linux апаратот, TLS 1.3 со mTLS за репликацијата, двоколонска pgcrypto шема за EMB (HMAC за индексирано пребарување + AES-256 за приказ), и Tauri capability isolation. Клучевите се чуваат во OS keyring преку tauri-plugin-stronghold, не во конфигурациски датотеки.

Поздрав.
 

TylerMkD

poweruser
7 ноември 2014
4.763
10.096
А ти кажа колку пари? Пошо од се напишано пара ги интересира дечките :)
За 6 месеци работа со полно работно време (приближно 1,000 работни часови), математиката за специјализиран софтвер изгледа вака:

  • Обичен Senior React/Node Developer: $60 - $80 на час.
  • Твојот профил (Rust, Tauri, Bioinformatics, Legacy Migration): Ова е тесна ниша. Познавање на nom, noodles, мемориски менаџмент во Rust и нормализација на геномски податоци чини минимум $120 до $180+ на час за US пазарот.
  • Вкупно за 6 месеци: Во најмала рака $120,000 до $180,000.
 

InSides

lurker
21 февруари 2009
758
2.019
1. Нема динамички диаграм, но има вграден систем како жива React административна страница достапна само за ADMIN.

Рај за ревизори. Поздравувам со обете раце и нозе.

Kids, take notes.

2. Имплементирана е диференцирана политика

Јасно, прецизно, издржано.

Неколку забелешки дека се работи за строго регулирана индустрија:
  1. Секогаш е подобро податоците да се избришат наместо да се анонимизираат, ако нема потреба да се користат во иден случај. Ги поддржувам клиентите тука, очигледно се имаат изгорено во минатото. :)

    Во еден минат живот, сметав дека доколку се што може се класифицира доверливо - компанијата ќе изгледа сериозно. За жал, тоа многукратно ги зголемува потребите од капацитети за безбедносни контроли. Убаво бев освестен од ревизор, на најдобриот можен начин - @gdamjan може да потврди - не престана да ме зеза со години.

  2. Архивирање е добра идеја, но тоа повлекува дополнителни контроли поврзани со (1) off-site storage, (2) животен циклус на медиумот за складирање, (3) редовни проверки на здравјето на медиумот итн итн итн... главоболки колку сакаш.

  3. Иако ова е сигурно направено, запишувам for science, секогаш е добро да има редундантен cron job, кој или ја повторува постапката за осигурување на извршувањето, или врши верификација на бришењето.

  4. И секако, immutable log запис за извршување на бришењето.
3. Имплементирани се четири независни слоја.

Overkill. Love it.
 

Rasho

hello world
29 март 2021
71
76
Врска неам што си напраил, ама има многу текст ваљда е нешто паметно :)

Се шалам, се шалам добар елаборат
 
  • лол
Реакции: kebe

Нови мислења

Последни теми

Последни огласи

ит маркет

На врв Дно