Od outsourcingu k vývoju (2. časť)

В predchádzajúci článok, hovoril som o pozadí vzniku Veliamu a rozhodnutí distribuovať ho cez systém SaaS. V tomto článku budem hovoriť o tom, čo som musel urobiť, aby produkt nebol lokálny, ale verejný. O tom, ako distribúcia začala a s akými problémami sa stretli.

plánovanie

Aktuálny backend pre používateľov bol na Linuxe. Takmer každá organizácia má Windows servery, čo sa nedá povedať o Linuxe. Hlavnou silnou stránkou spoločnosti Veliam je vzdialené pripojenie k serverom a sieťovým zariadeniam za NAT. Táto funkcionalita však bola veľmi úzko spätá s tým, že router musel byť Mikrotik. A to by očividne mnohých neuspokojilo. Najprv som začal uvažovať o pridaní podpory pre routery od najbežnejších predajcov. Pochopil som však, že ide o nekonečné preteky o rozšírenie zoznamu podporovaných spoločností. Navyše tie, ktoré sú už podporované, môžu mať inú sadu príkazov na zmenu pravidiel NAT z modelu na model. Jediným východiskom zo situácie sa zdalo byť VPN.

Keďže sme sa rozhodli distribuovať produkt, ale nie ako open source, stalo sa nemožné zahrnúť rôzne knižnice s otvorenými licenciami, ako je GPL. Toto je vo všeobecnosti samostatná téma, po rozhodnutí o predaji produktu som musel prejsť polovicu knižníc, pretože boli GPL. Keď písali pre seba, bolo to normálne. Nie je však vhodný na distribúciu. Prvá VPN, ktorá vám príde na myseľ, je OpenVPN. Ale je to GPL. Ďalšou možnosťou bolo použitie japonskej siete SoftEther VPN. Jeho licencia mu umožnila zahrnúť ho do svojho produktu. Po niekoľkých dňoch rôznych testov, ako to integrovať tak, aby používateľ nemusel vôbec nič konfigurovať a vedel o SoftEther VPN, sa podarilo získať prototyp. Všetko bolo ako má byť. Ale z nejakého dôvodu nás táto schéma stále mátla a nakoniec sme ju opustili. Ale prirodzene odmietli, keď prišli s inou možnosťou. Nakoniec sa všetko robilo na bežných TCP spojeniach. Niektoré spojenia fungujú cez koordinátora, niektoré priamo cez technológiu Nat Hole Punching (NHP), ktorá bola implementovaná aj vo Free Pascal. Musím povedať, že som o NHP nikdy predtým ani nepočul. A ani ma nenapadlo, že je možné pripojiť 2 sieťové zariadenia, obe sú priamo za NATom. Naštudoval som si tému, pochopil princíp fungovania a sadol som si k písaniu. Plán je realizovaný, užívateľ sa jedným kliknutím pripojí k požadovanému zariadeniu za NAT cez RDP, SSH alebo Winbox bez zadávania hesiel alebo nastavovania VPN. Navyše väčšina týchto spojení prechádza okolo nášho koordinátora, čo má dobrý vplyv na ping a náklady na obsluhu týchto spojení.

Prenos serverovej strany z Linuxu na Windows

Pri prechode na Windows sa vyskytlo niekoľko problémov. Prvým je, že vstavaný wmic v systéme Windows vám neumožňuje robiť dopyty WQL. A v našom systéme už bolo na nich všetko postavené. A bolo tu ešte niečo, ale teraz som zabudol, prečo od jeho používania nakoniec upustili. Možné rozdiely medzi verziami systému Windows. A druhým problémom je multithreading. Keďže som nenašiel dobrý nástroj tretej strany pod „prijateľnou“ licenciou pre nás, znova som spustil Lazarus IDE. A napísal som potrebný nástroj. Vstupom je požadovaný zoznam objektov a aké konkrétne otázky je potrebné vykonať, a ako odpoveď dostanem údaje. A to všetko vo viacvláknovom režime. Skvelé.

Po nastavení pthreads pre PHP Windows som si myslel, že všetko začne hneď, ale nebolo to tak. Po nejakom čase ladenia som si uvedomil, že pthreads zrejme fungujú, ale v našom systéme to nefungovalo. Ukázalo sa, že v práci s pthreadmi v systéme Windows existuje určitá zvláštnosť. A tak to aj bolo. Prečítal som si dokumentáciu a bolo tam napísané, že pre Windows je počet vlákien obmedzený, a pokiaľ si pamätám, implicitne. Toto sa stalo problémom. Pretože keď som začal znižovať počet vlákien, na ktorých aplikácia bežala, robila to veľmi pomaly. Znovu som otvoril IDE a do tej istej utility bola pridaná funkcia pre viacvláknové pingovanie objektov. No, tam už je tiež veľa skenovania portov. V skutočnosti potom potreba pthreads pre PHP zmizla a už sa nepoužíva. K tomuto nástroju bolo pridaných niekoľko ďalších funkcií a funguje dodnes. Potom bol zostavený inštalačný program pre Windows, ktorý zahŕňal Apache, PHP, MariaDB, samotnú PHP aplikáciu a sadu nástrojov na interakciu so systémom napísaných vo Free Pascal. Čo sa týka inštalátora, myslel som si, že tento problém rýchlo vyriešim, pretože... Toto je veľmi bežná vec a nevyhnutná pre takmer každý softvér. Buď som hľadal na zlom mieste, alebo niečo iné. Ale neustále som narážal na produkty, ktoré buď neboli dostatočne flexibilné, alebo drahé a tiež nepružné. A napriek tomu som našiel bezplatný inštalátor, v ktorom bude možné zabezpečiť akékoľvek priania. Toto je InnoSetup. Píšem o tom tu, pretože som si to musel vyhľadať pre prípad, že by som niekomu ušetril čas.

Odmietnutie doplnku v prospech vášho klienta

Predtým som napísal, že klientskou časťou bol prehliadač s „doplnkom“. Takže boli časy, keď bol Chrome aktualizovaný a rozloženie bolo trochu krivé, potom sa aktualizoval Windows a vlastná schéma uri zmizla. Naozaj som nechcel mať takéto prekvapenia vo verejnej verzii produktu. Navyše, vlastné uri začalo miznúť po každej aktualizácii systému Windows. Microsoft jednoducho vymazal všetky pobočky, ktoré nie sú jeho pobočkami v požadovanej sekcii. Prehliadač Google Chrome vám teraz tiež neumožňuje zapamätať si, či chcete otvoriť alebo neotvoriť aplikáciu z vlastného uri, a túto otázku kladie vždy, keď kliknete na objekt sledovania. Vo všeobecnosti bola potrebná normálna interakcia s lokálnym systémom používateľa, ktorú prehliadač neposkytuje. Zdá sa, že najjednoduchšou možnosťou v tejto schéme je jednoducho vytvoriť si vlastný prehliadač, ako to teraz mnohí robia cez Electron. Ale veľa vecí už bolo napísaných vo Free Pascal, vrátane serverovej časti, takže sme sa rozhodli vytvoriť klienta v rovnakom jazyku a nie vytvoriť zoologickú záhradu. Takto bol napísaný klient s prehliadačom Chromium. Potom začala získavať rôzne popruhy.

Uvoľnite

Nakoniec sme vybrali názov pre systém. Neustále sme prechádzali rôznymi možnosťami, kým prebiehal proces konverzie z lokálnej verzie na SaaS. Keďže sme pôvodne plánovali vstup nielen na domáci trh, hlavným kritériom výberu názvu bola prítomnosť neobsadenej alebo nie príliš drahej domény v zóne „.com“. Niektoré funkcie/moduly ešte neboli prenesené z lokálnej verzie na Veliam, no rozhodli sme sa, že ich vydáme s aktuálnou funkcionalitou a zvyšok doplníme ako aktualizácie. V úplne prvej verzii nebol HelpDesk, Veliam Connector, nebolo možné zmeniť prahy pre spúšťače upozornení a mnoho ďalšieho. Kúpili sme Code Sign Certificate a podpísali sme časť klienta a servera. Napísali sme webovú stránku pre produkt, začali postupy registrácie softvéru, ochrannej známky atď. Vo všeobecnosti sme pripravení začať. Mierna eufória z vykonanej práce a z toho, že možno niekto použije váš produkt, aj keď sme o tom nepochybovali. A potom prestať. Partner povedal, že nie je možné vstúpiť na trh bez upozornení cez messenger. Je to možné bez mnohých iných vecí, ale nie bez tohto. Po nejakej debate pribudla integrácia s Telegramom, čo nám vyhovovalo. Zo všetkých súčasných instant messengerov je tento jediný, ktorý poskytuje prístup k svojim API zadarmo a bez akýchkoľvek zložitých schvaľovacích procedúr. Rovnaký WhatsApp navrhuje kontaktovať poskytovateľov, ktorí účtujú dobré peniaze za používanie ich služieb; všetky listy so žiadosťou o prístup bez tesnení boli ignorované. No, Viber... Neviem, kto ho teraz používa, pretože... spam a reklama sú mimo rebríčka. Koncom decembra, po sérii interných testov a testov medzi priateľmi, bola otvorená registrácia pre všetkých a softvér bol sprístupnený na stiahnutie.

Začiatok distribúcie

Od samého začiatku sme pochopili, že potrebujeme malý tok používateľov systému, aby mohli otestovať produkt v bojovom režime a poskytnúť prvú spätnú väzbu. Viaceré zakúpené príspevky na VK priniesli svoje ovocie. Prišli prvé registrácie.

Tu treba povedať, že vstúpiť na trh, keď vaša firma nemá slávne meno, a zároveň poskytovať funkcionalitu monitoringu bez agentov, do ktorej potrebujete zadávať účty z vašich serverov a pracovných staníc, je veľmi ťažké. Toto desí veľa ľudí. Od začiatku sme chápali, že s tým budú problémy a boli sme na to pripravení technicky aj morálne. Všetky vzdialené pripojenia, napriek tomu, že RDP a SSH sú už v predvolenom nastavení šifrované, sú našim softvérom navyše šifrované pomocou štandardu AES. Všetky dáta z lokálnych serverov sa prenášajú do cloudu cez HTTPS. Účty sú uložené v šifrovanej podobe. Šifrovacie kľúče pre všetky podsystémy sú individuálne pre všetkých klientov. Pre vzdialené pripojenia sa vo všeobecnosti používajú kľúče na šifrovanie relácie.

Všetko, čo môžeme v tejto situácii urobiť, aby sa ľudia cítili pokojnejšie, je byť čo najotvorenejší, pracovať na bezpečnosti a nikdy sa neunaviť odpovedať na otázky ľudí.

Pre mnohých pohodlnosť a funkčnosť softvéru prevyšuje strach a registrujú sa. Niektorí jednotlivci vo zverejnených príspevkoch na VK napísali, že tento softvér nemožno použiť, pretože Toto je zbierka ich hesiel a vo všeobecnosti spoločnosť bez mena. Treba povedať, že tento názor mal nejeden človek. Mnoho ľudí jednoducho nechápe, že keď na server, ktorý beží ako služba, nainštalujú iný proprietárny softvér, má tiež plné práva v systéme a nepotrebujú účty, aby urobili niečo nezákonné (je jasné, že môžete zmeniť používateľ, od ktorého sa služba spúšťa, ale aj tu môžete zadať ľubovoľný účet). V skutočnosti sú obavy ľudí pochopiteľné. Inštalácia softvéru na server je bežná vec, ale zadanie účtu je trochu strašidelné a intímne, pretože dobrá polovica ľudí má rovnaké heslo pre všetky služby a vytvorenie samostatného účtu aj na skúšku je lenivé. V súčasnosti však existuje veľké množstvo služieb, ktorým ľudia dôverujú svojimi povereniami a ďalšie. A my sa snažíme stať sa jedným z nich.

Bolo veľa komentárov, ktoré hovorili, že sme to niekde ukradli. Toto nás trochu prekvapilo. Dobre, názor jednej osoby, ale takéto komentáre sa našli v rôznych publikáciách od rôznych ľudí. Najprv nevedeli, ako na to reagovať. Buď byť smutný z toho, že niektorí ľudia majú názor, že v Rusku nikto nemôže sám nič robiť, ale iba kradnúť, alebo byť rád, že si myslia, že toto sa dá len ukradnúť.

Teraz sme dokončili postup na získanie certifikátu EV Code Sign Certificate. Aby ste ho získali, musíte prejsť sériou kontrol a zaslať kopu dokumentov o spoločnosti, z ktorých niektoré musia byť overené právnikom. Získanie certifikátu EV Code Sign počas pandémie je samostatná téma na článok. Postup trval mesiac. A nebol to mesiac čakania, ale neustálych žiadostí o ďalšie dokumenty. Možno s tým pandémia nemá nič spoločné a postup trval každému tak dlho? Zdieľam.

Niektorí hovoria, že to nebudeme používať, pretože neexistuje certifikát FSTEC. Musíme vysvetliť, že ho nemôžeme získať a nezískame, pretože na získanie tohto certifikátu musí byť šifrovanie v súlade s GOST a plánujeme distribuovať softvér nielen v Rusku a používať AES.

Všetky tieto komentáre spochybňujú, že je možné propagovať produkt, ktorý vyžaduje zadávanie účtov bez toho, aby bol verejne známy. Aj keď sme vedeli, že sa nájdu aj takí, ktorí sa k tomu postavia veľmi negatívne. Po tom, čo počet registrácií presiahol tisícku, sme na to prestali myslieť. Najmä po tom, čo sa popri negatívach tých, ktorí produkt ani nevyskúšali, začali objavovať veľmi príjemné recenzie. Treba povedať, že tieto pozitívne recenzie sú najväčším motivátorom pre vývoj produktu.

Pridanie funkcie vzdialeného prístupu pre zamestnancov

Jednou z častých úloh klientov je „poskytnúť Vanyovi prístup k jeho počítaču z domu“. Vytvorili sme VPN na Mikrotiku a vytvorili účty pre používateľov. Ale toto je skutočný problém. Používatelia nemôžu sledovať pokyny a postupovať podľa nich krok za krokom, aby sa pripojili cez VPN. Rôzne verzie systému Windows. V jednom Windows je všetko dobre prepojené, v inom je potrebný iný protokol. A vo všeobecnosti to vždy súviselo s rekonfiguráciou sieťového zariadenia, ktoré fungovalo ako server VPN a nie všetci zamestnanci k nemu mali prístup, čo bolo nepohodlné.

Ale už máme vzdialené pripojenia k serverom a sieťovým zariadeniam. Prečo nepoužiť hotovú prepravu a nevyrobiť samostatnú malú pomôcku, ktorú môžete jednoducho dať používateľovi na pripojenie. Chcel som sa len uistiť, že tam používateľ nezadal nič nezrozumiteľné. Stačí jedno tlačidlo „pripojiť“. Ako však tento nástroj pochopí, kam sa má pripojiť, ak má iba jedno tlačidlo? Vznikol nápad vybudovať požadovanú aplikáciu online na našich serveroch. Správca systému klikne na tlačidlo „stiahnuť skratku“ a do nášho cloudu sa odošle príkaz na vytvorenie individuálneho binárneho súboru s pevne zapojenými informáciami na pripojenie k požadovanému serveru/počítaču prostredníctvom RDP. Vo všeobecnosti by sa to dalo urobiť. To však trvá dlho, správca by musel najskôr počkať, kým sa binárny súbor skompiluje a potom stiahne. Samozrejme, bolo by možné jednoducho pridať druhý súbor s konfiguráciou, ale toto sú už 2 súbory a pre jednoduchosť používateľ potrebuje jeden. Jeden súbor, jedno tlačidlo a žiadne inštalátory. Po malom prečítaní na Google som dospel k záveru, že ak na koniec zostaveného „.exe“ pridáte nejaké informácie, nezhorší sa to (teda takmer). Môžete tam pridať aspoň vojnu a mier a bude to fungovať ako doteraz. Bolo by hriechom to nevyužiť. Teraz môžete aplikáciu jednoducho rozbaliť na cestách priamo v samotnom klientovi, inak sa nazýva Veliam Connector, a na konci jednoducho pridať informácie potrebné na pripojenie k nej. A samotná aplikácia vie, čo s tým. Prečo som napísal „dobre skoro“ v zátvorkách trochu vyššie? Pretože za túto vymoženosť musíte zaplatiť tým, že aplikácia príde o digitálny podpis. V tejto fáze sa však domnievame, že je to malá cena za takéto pohodlie.

Licencie modulov tretích strán

Už vyššie som písal, že po rozhodnutí o sprístupnení produktu verejnosti, a to nielen pre vlastnú potrebu, sme museli tvrdo pracovať a hľadať náhrady za niektoré moduly, ktoré nám nedovolili zaradiť do nášho produktu. No po vydaní sa náhodou zistila veľmi nepríjemná vec. Veliam Server, ktorý bol na strane klienta, obsahoval MariaDB DBMS. A má licenciu GPL. Licencia GPL znamená, že softvér musí byť open source, a ak náš produkt obsahuje MariaDB, ktorá má túto licenciu, potom náš produkt musí byť pod touto licenciou. Ale našťastie je účelom tejto licencie open source, nie trestanie tých, ktorí sa omylom dopustia na súde. Ak má držiteľ autorských práv nárok, písomne ​​to oznámi porušovateľovi a ten musí porušenie odstrániť do 30 dní. Sami sme zistili svoju chybu a nedostali sme žiadne listy a okamžite sme začali zvažovať možnosti, ako problém vyriešiť. Riešenie sa ukázalo ako zrejmé – prejsť na SQLite. Táto databáza nemá žiadne licenčné obmedzenia. Väčšina moderných prehliadačov používa SQLite a množstvo ďalších programov. Našiel som na internete informáciu, že SQLite je považovaný za najrozšírenejší DBMS na svete, práve kvôli prehliadačom, ale nehľadal som dôkaz, takže je to nepresná informácia. Začal som študovať nebezpečenstvo prechodu na SQLite.

Toto sa stáva netriviálnou úlohou, keď klienti majú nainštalovaných niekoľko stoviek serverov s MariaDB a údajmi v nej. Niektoré funkcie MariaDB nie sú dostupné v SQLite. No napríklad v kóde sme použili dotazy ako

Select * FROM `table` WHERE `id`>1000 FOR UPDATE

Táto konštrukcia nielenže urobí výber z tabuľky, ale aj uzamkne údaje riadku. A tiež bolo potrebné prepísať niekoľko ďalších návrhov. No okrem toho, že sme museli prepisovať množstvo dopytov, museli sme vymyslieť aj mechanizmus, ktorý pri aktualizácii klientskeho Veliam Servera prenesie všetky dáta do nového DBMS a vymaže ten starý. Tiež transakcie v SQLite nefungovali a to bol skutočný problém. Ale po prečítaní rozľahlosti World Wide Web som bez problémov zistil, že transakcie v SQLite je možné povoliť zadaním jednoduchého príkazu pri pripájaní

PRAGMA journal_mode=WAL;

V dôsledku toho bola úloha dokončená a serverová časť klienta teraz beží na SQLite. Vo fungovaní systému sme nezaznamenali žiadne zmeny.

Nový HelpDesk

Systém HelpDesk bolo potrebné preniesť z internej verzie na verziu SaaS, avšak s určitými zmenami. Prvá vec, ktorú som chcel urobiť, bola integrácia s doménou klienta v zmysle transparentnej autorizácie používateľov v systéme. Teraz, aby sa používateľ mohol prihlásiť do HelpDesk a nechať požiadavku v systéme, jednoducho klikne na zástupcu na ploche a otvorí sa prehliadač. Používateľ nezadáva žiadne prihlasovacie údaje. Modul pre Apache SSPI, ktorý je súčasťou Veliam Server, automaticky autorizuje užívateľa pod doménovým účtom. Pre zanechanie požiadavky v systéme, keď je používateľ mimo firemnej siete, klikne na tlačidlo a do emailu mu príde link, cez ktorý sa bez hesla prihlási do systému HelpDesk. Ak je používateľ zakázaný alebo odstránený v doméne, prestane fungovať aj účet HelpDesk. Správca systému tak nemusí sledovať účty v doméne aj HelpDesk sám. Zamestnanec skončí - odpojí svoj účet v doméne a je to, neprihlási sa do systému nie z podnikovej siete, ani cez odkaz. Aby táto integrácia fungovala, musí správca systému vytvoriť jeden GPO, ktorý pridá internú lokalitu do intranetovej zóny и distribuuje skratku všetkým používateľom na pracovnej ploche.

Druhou vecou, ​​ktorú považujeme pre systémy HelpDesk za mimoriadne potrebnú, aspoň pre nás samotných, je pripojenie sa k žiadateľovi priamo z aplikácie jedným kliknutím. Navyše, pripojenia musia prejsť, ak je správca systému v inej sieti. Pre outsourcing je to povinné, pre správcov systému na plný úväzok je to tiež často veľmi potrebné. Existuje už niekoľko produktov, ktoré výborne zvládajú vzdialené pripojenia. A rozhodli sme sa pre nich urobiť integráciu. Teraz sme sa integrovali pre VNC a v budúcnosti plánujeme pridať Radmin a TeamViewer. Pomocou nášho sieťového prenosu pre pripojenia vzdialenej infraštruktúry sme zabezpečili pripojenie VNC k vzdialeným pracovným staniciam za NAT. To isté sa stane s Radminom. Teraz, aby ste sa mohli pripojiť k používateľovi, stačí kliknúť na tlačidlo „pripojiť sa k žiadateľovi“ v samotnej aplikácii. Klient VNC sa otvorí a pripojí k žiadateľovi bez ohľadu na to, či ste v rovnakej sieti alebo sedíte doma v papučiach. Po prvé, správca systému pomocou GPO musí nainštalovať VNC Server na pracovné stanice každého.

Teraz sami prechádzame na nový HelpDesk a využívame integráciu s doménou a VNC. To je pre nás veľmi výhodné. Teraz sa môžeme vyhnúť plateniu za TeamViewer, ktorý na prevádzkovanie našej služby podpory používame už viac ako tri roky.

Čo plánujeme ďalej?

Keď sme produkt vydali, nerobili sme žiadne platené tarify, ale jednoducho sme obmedzili bezplatnú tarifu na 50 monitorovacích objektov. Mysleli sme si, že päť desiatok sieťových zariadení a serverov by malo stačiť pre každého. A potom začali prichádzať požiadavky na zvýšenie limitu. Povedať, že sme boli trochu šokovaní, neznamená nič. Majú spoločnosti, ktoré majú toľko serverov, naozaj záujem o náš softvér? Pre tých, ktorí podali takéto požiadavky, sme limit bezplatne predĺžili. V odpovedi na ich požiadavku sme sa niektorých spýtali, prečo tak veľa potrebujú, či naozaj majú taký veľký počet serverov a sieťových zariadení. A ukázalo sa, že správcovia systému začali používať systém spôsobmi, ktoré sme vôbec neplánovali. Všetko sa ukázalo byť jednoduché - náš softvér začal monitorovať nielen servery, ale aj pracovné stanice. Preto existuje veľa žiadostí o rozšírenie limitov. Teraz sme už zaviedli platené tarify a limity je možné samostatne rozširovať.

Servery takmer vždy pracujú s úložnými systémami alebo lokálnymi diskami v poli RAID. A pôvodne sme pre nich vyrobili produkt. A SMART monitoring nebol pre túto úlohu zaujímavý. Ale vzhľadom na to, že ľudia prispôsobili softvér na monitorovanie pracovných staníc, objavili sa požiadavky na implementáciu SMART monitorovania. Čoskoro to implementujeme.

S príchodom Veliam Connector sa stalo zbytočné nasadzovať VPN server v podnikovej sieti alebo robiť RDGW alebo jednoducho preposielať porty na potrebné stroje na pripojenie cez RDP. Mnoho ľudí používa náš systém iba na tieto vzdialené pripojenia. Veliam Connector je k dispozícii iba pre Windows a niektorí firemní používatelia sa pripájajú z domácich notebookov so systémom MacOS k pracovným staniciam alebo terminálom v podnikovej sieti. A ukazuje sa, že správca systému je nútený kvôli viacerým užívateľom sa stále vracať k problematike preposielania či VPN. Preto teraz dokončujeme výrobu verzie Veliam Connector pre MacOS. Používatelia ich obľúbenej technológie Apple budú mať tiež možnosť pripojiť sa k podnikovej infraštruktúre jedným kliknutím.

Naozaj sa mi páči, že s veľkým počtom používateľov systému si nemusíte lámať hlavu nad tým, čo ľudia potrebujú a čo bude pohodlnejšie. Sami píšu svoje želania, takže plánov rozvoja na najbližšie obdobie je veľa.

Paralelne teraz plánujeme začať s prekladom systému do angličtiny a distribúciou do zahraničia. Zatiaľ nevieme, ako budeme produkt distribuovať mimo našej krajiny, hľadáme možnosti. Možno o tom neskôr bude samostatný článok. Možno niekto, kto čítal tento článok, bude vedieť navrhnúť požadovaný vektor, alebo sám vie a vie ako na to a ponúkne svoje služby. Ocenili by sme vašu pomoc.

Zdroj: hab.com

Pridať komentár