C++ Rusia: faʻafefea ona tupu

Afai i le amataga o le taʻaloga e te fai mai o loʻo i ai le C ++ code o loʻo tautau i luga o le puipui, ona oʻo atu lea i le iʻuga ua noatia e fana oe i le vae.

Bjarne Stroustrup

Mai ia Oketopa 31 ia Novema 1, na faia ai le C++ Russia Piter conference i St. Petersburg - o se tasi o fonotaga tele polokalame i Rusia, faʻatulagaina e le JUG Ru Group. O failauga asiasi e aofia ai sui o le C++ Standards Committee, CppCon speakers, O'Reilly book authors, ma le tausiaina o galuega faatino e pei ole LLVM, libc++, ma le Boost. O le fonotaga e faʻatatau i le poto masani C++ atiaʻe o loʻo manaʻo e faʻalolotoina o latou tomai ma fefaʻasoaaʻi aafiaga i fesoʻotaʻiga ola. Tamaiti a'oga, tamaiti a'oga fa'au'u ma faia'oga iunivesete ua tu'uina atu i ai fa'aitiitiga manaia tele.

O le lomiga a Moscow o le konafesi o le a avanoa e asiasi i le amataga o Aperila i le tausaga a sau, ae i le taimi nei o le a taʻu atu e a matou tamaiti aoga ia te oe mea manaia na latou aʻoaʻoina i le mea mulimuli na tupu. 

C++ Rusia: faʻafefea ona tupu

Ata mai album o konafesi

E uiga ia i tatou

E toalua tamaiti aoga mai le National Research University Higher School of Economics - St. Petersburg sa galulue i lenei pou:

  • Liza Vasilenko o se 4th tausaga i lalo o le tamaititi aʻoga o loʻo aʻoaʻoina Gagana Polokalama o se vaega o le Applied Mathematics and Computer Science program. Ina ua ou masani i le gagana C ++ i loʻu tausaga muamua i le iunivesite, na ou maua ai le poto masani e galue ai e ala i galuega faataitai i le alamanuia. O loʻu tuʻinanau mo gagana faʻapolokalame i polokalame lautele ma faʻatinoga faʻapitoa na tuʻu ai lona faʻailoga i le filifilia o lipoti i le konafesi.
  • Danya Smirnov o se tamaititi aʻoga 1st tausaga o le polokalame a le matai "Polokalame ma Suʻesuʻega Faʻamaumauga". A o i ai pea i le aʻoga, sa ou tusia faafitauli o le Olimipeka i le C ++, ona tupu ai lea o le gagana e masani ona sau i gaoioiga faʻaleaʻoaʻoga ma mulimuli ane avea ma gagana autu galue. Sa ou filifili e auai i le konafesi e faaleleia atili ai lou malamalama ma aoao foi e uiga i avanoa fou.

I le nusipepa, e masani ona faʻasoa e le taʻitaʻi aʻoaʻoga faʻamatalaga e uiga i mea tau aʻoaʻoga e fesoʻotaʻi ma la tatou tomai faʻapitoa. Ia Setema na matou vaʻaia faʻamatalaga e uiga i C ++ Rusia ma filifili e lesitala e avea ma tagata faʻalogo. O le matou aafiaga muamua lenei i le auai i ia konafesi.

Faiga o konafesi

  • Lipoti

I le gasologa o aso e lua, na faitau ai e le au atamamai lipoti e 30, e aofia ai le tele o mataupu vevela: faʻaogaina faʻapitoa o gagana e foia ai faʻafitauli faʻafitauli, faʻafouina gagana fou e fesoʻotaʻi ma le tulaga fou, fetuutuunai i le C ++ mamanu ma puipuiga pe a galulue ma o latou taunuuga, faʻataʻitaʻiga o fa'ata'ita'iga mata'ina o galuega fa'atino, fa'apea fo'i ma nisi fa'amatalaga i lalo ole fa'aulufalega ole gagana. E tolu faafiafiaga na faia i le taimi e tasi, e masani ona lua i le gagana Rusia ma le tasi i le Igilisi.

  • Sone o talanoaga

Ina ua maeʻa le tautalaga, o fesili uma e leʻi fesiligia ma talanoaga e leʻi maeʻa na faʻafeiloaʻi i nofoaga faʻapitoa mo fesoʻotaʻiga ma failauga, faʻapipiʻiina i laupapa faʻailoga. O se auala lelei e fa'agata ai le va o lauga ma se talanoaga manaia.

  • Lauga Uila ma talanoaga le aloaia

Afai e te manaʻo e tuʻuina atu se lipoti puupuu, e mafai ona e lesitala i luga o le laupapa paepae mo le afiafi o le Uila Talanoa ma maua le lima minute o le taimi e talanoa ai i soʻo se mea i le autu o le konafesi. Mo se faʻataʻitaʻiga, o se faʻamatalaga vave i mea faʻamama mo C ++ (mo nisi e fou) poʻo se tala e uiga i se pusa i le gaosiga o galu e mafai ona faʻalogoina, ae le o vaʻaia.

O le isi faatulagaga o le talanoaga faavaega “Ma le Loto i le Loto Komiti.” I luga o le tulaga o loʻo i ai nisi o sui o le komiti faʻatulagaina, i luga o le masini faʻapipiʻi o se afi afi (faʻapitoa - e fatu ai se siosiomaga faʻamaoni, ae o le mafuaʻaga "ona o mea uma o loʻo i luga o le afi" e foliga mai e sili atu ona malie), fesili e uiga i le tulaga masani ma le vaʻaiga lautele o C ++ , e aunoa ma ni felafolafoa'iga fa'atekinisi vevela ma fa'asalalauga. Na aliali mai o le komiti o loʻo i ai foi tagata ola atonu e le o mautinoa atoatoa i se mea pe le iloa foi se mea.

Mo tagata fiafia o holivars, o le mea lona tolu na tumau pea i luga o le mataupu - le BOF session "Go vs. C++". Matou te ave se Go lover, se C++ lover, aʻo leʻi amataina le vasega latou te saunia faʻatasi 100500 slides i luga o se autu (pei o faʻafitauli i afifi i C ++ poʻo le leai o ni generics i Go), ona latou faia lea o se talanoaga olaola i latou lava ma ma le aofia, ma taumafai le aofia e malamalama i manatu e lua i le taimi e tasi . Afai e amata se holivar i fafo atu o le talaaga, e fa'alavelave le fa'afoe ma toe fa'alelei vaega. O lenei faatulagaga e fai ma vaisu: i ni nai itula talu ona amata, na'o le afa o fa'ase'e na mae'a. O le iuga sa tatau ona matua faatelevaveina.

  • Tutu le paaga

O pa’aga o le fonotaga sa fai ma sui i totonu o le maota-i luga o tulaga sa latou talanoa ai e uiga i galuega o lo’o i ai nei, ofo atu galuega fa’atino ma galuega, faia o su’ega ma tauvaga laiti, ma se’i fa’ailoga matagofie. I le taimi lava e tasi, o nisi kamupani na ofo atu e alu i le amataga o faʻatalanoaga, lea e mafai ona aoga mo i latou na o mai e le gata e faʻalogo i lipoti.

Fa'amatalaga fa'apitoa o lipoti

Sa matou faalogologo i lipoti i aso uma e lua. I nisi o taimi sa faigata ona filifili se lipoti se tasi mai lipoti tutusa - na matou malilie e vaevae ma fesuiai le malamalama na maua i taimi o malologa. Ma e ui lava i lea, e foliga mai e tele naua mea e le o iai. O iinei matou te fia talanoa ai e uiga i mea o loʻo i totonu o nisi o lipoti na matou maua e sili ona manaia

Tuusaunoaga i le C ++ e ala i le prism o faʻatonuga faʻapipiʻi, Roma Rusyaev

C++ Rusia: faʻafefea ona tupu
Fa'asolo mai презентации

E pei ona taʻu mai e le ulutala, na tilotilo Roma i le galue ma tuusaunoaga e faʻaaoga ai le LLVM e fai ma faʻataʻitaʻiga. I le taimi lava e tasi, mo i latou e le faʻaaogaina Clang ia latou galuega, e mafai lava e le lipoti ona tuʻuina atu se manatu i le auala e mafai ai ona faʻamalosia le code. E mafua lenei mea ona o le au atiaʻe o le tuʻufaʻatasia ma faletusi masani e fesoʻotaʻi ma le tasi ma le isi ma le tele o fofo manuia e mafai ona fetaui.

O lea la, ina ia taulimaina se tuusaunoaga, e tatau ona e faia le tele o mea: valaau le code handling code (pe a iai) poʻo punaoa saoloto i le tulaga o loʻo i ai nei ma vili luga le faaputuga maualuga. O nei mea uma e taʻitaʻia ai le mea moni e faʻaopoopo e le tagata faʻapipiʻi faʻatonuga faʻaopoopo mo valaʻau e ono lafo ai tuusaunoaga. O le mea lea, afai e leʻo faʻatupuina le tuusaunoaga, o le polokalama o le a faia pea ni gaioiga le talafeagai. Ina ia mafai ona faʻaititia i luga ole ulu, LLVM o loʻo i ai le tele o heuristics mo le fuafuaina o tulaga e le manaʻomia ai le faʻaopoopoina o le faʻaogaina o tulafono faʻapitoa pe faʻaititia le numera o "faʻaopoopo" faʻatonuga.

E suʻesuʻe e le failauga le tusa ma le sefulu ma le lua o latou ma faʻaalia tulaga uma e lua e fesoasoani ai i le faʻavaveina o le faʻatinoina o polokalame, ma i latou e le o faʻaogaina nei metotia.

O le mea lea, o Roma Rusyaev e taʻitaʻia tamaiti aʻoga i le faʻaiuga e le mafai ona faʻatinoina i taimi uma le faʻaogaina o tulafono faʻapitoa e aunoa ma le leai, ma tuʻuina atu fautuaga nei:

  • pe a atiina ae faletusi, e aoga le lafoaia o tuusaunoaga i mataupu faavae;
  • pe afai e manaʻomia pea tuusaunoaga, o soʻo se taimi e mafai ai e aoga le faʻaopoopoina o le noexcept (ma const) modifiers i soʻo se mea ina ia mafai ai e le tagata tuʻufaʻatasia ona faʻaogaina i le tele e mafai ai.

I se tulaga lautele, na faʻamaonia e le failauga le manatu e faʻapea o tuusaunoaga e sili ona faʻaaogaina i se mea maualalo pe lafoai atoa.

O fa'ase'e lipoti o lo'o maua ile so'oga lea: [“C++ tuusaunoaga e ala i tioata o le LLVM compiler optimizations”]

Generators, coroutines ma isi faiʻai-talatala suamalie, Adi Shavit

C++ Rusia: faʻafefea ona tupu
Fa'asolo mai презентации

O se tasi o le tele o lipoti i lenei konafesi faʻapitoa i faʻafouga i le C ++ 20 na manatua pea e le gata mo lona faʻaaliga felanulanuaʻi, ae faʻapea foʻi mo lona faʻamaonia manino o faʻafitauli o loʻo i ai nei ma le faʻaogaina o le faʻaogaina o le faʻaogaina (mo le matasele, callbacks).

O loʻo faʻamamafaina e Adi Shavit mea nei: o auala o loʻo avanoa nei e alu i le aofaʻi atoa ma e le maua ai le avanoa i se tulaga vavalalata i totonu (pe latou te faia i le tulaga o le toe foʻi mai, ae faʻatasi ai ma le tele o aʻafiaga le lelei, e pei o Callback Hell) . E foliga mai o loʻo i ai iterators, ae e oʻo lava ia i latou e le o sologa lelei mea uma: e leai ni mea masani e ulufale ai ma ulufafo (amata → faaiʻuga versus rbegin → rend ma isi), e le o manino pe o le a le umi tatou te toe faʻataʻitaʻi ai? Amata ile C++20, ua fo'ia nei fa'afitauli!

Filifiliga muamua: laina. E ala i le afifiina o iterators, matou te maua ai se atinaʻe masani mo le amataga ma le faʻaiʻuga o se suʻesuʻega, ma matou maua foi le tomai e fatu. O nei mea uma e fa'afaigofie ai ona fausia fa'amaumauga uma o fa'amaumauga o paipa. Ae e le o mea uma e matua lamolemole: o se vaega o le faʻatusatusaga faʻatatau o loʻo i totonu o le faʻatinoga o se faʻamatalaga faʻapitoa, lea e mafai ona faʻalavelaveina le code e malamalama ma debug.

C++ Rusia: faʻafefea ona tupu
Fa'asolo mai презентации

Ia, mo lenei tulaga, C ++ 20 faʻaopoopo coroutines (galuega o latou amio e tutusa ma generators i Python): faʻataunuʻuina e mafai ona tolopoina e ala i le toe faʻafoʻi atu o se tau o loʻo iai nei aʻo faʻasaoina se tulaga vavalalata. O le mea lea, matou te ausia e le gata o le galulue faatasi ma faʻamatalaga e pei ona aliali mai, ae faʻapipiʻi uma ai manatu i totonu o se coroutine patino.

Ae o loʻo i ai se lago i totonu o le suauu: i le taimi nei e naʻo se vaega o loʻo lagolagoina e tagata faʻapipiʻi o loʻo i ai nei, ma e le o faʻatinoina lelei e pei ona tatou manaʻo ai: mo se faʻataʻitaʻiga, e leʻo aoga le faʻaaogaina o faʻamatalaga ma mea le tumau i coroutines. E le gata i lea, o loʻo i ai nisi faʻatapulaʻa i mea e mafai ona avea ma coroutines, ma constexpr functions, constructors/destructors, ma autu e le o aofia ai i lenei lisi.

O le mea lea, e foia ai e coroutines se vaega taua o faʻafitauli i le faigofie o le faʻaogaina o faʻamatalaga, ae o latou faʻatinoga o loʻo iai nei e manaʻomia ai le faʻaleleia.

Meafaitino:

C++ togafiti mai Yandex.Taxi, Anton Polukhin

I aʻu galuega faʻapolofesa, o nisi taimi e tatau ona ou faʻatinoina mea faʻapitoa fesoasoani: o se afifi i le va o le atinaʻe i totonu ma le API o nisi faletusi, logging poʻo le faʻasalalau. I lenei tulaga, e masani lava e leai se manaʻoga mo soʻo se faʻaopoopoga faʻaopoopo. Ae faʻafefea pe a faʻaogaina nei vaega i nisi o auaunaga sili ona lauiloa ile RuNet? I se tulaga faapena, e tatau ona e faʻagasolo terabytes i le itula o ogalaau naʻo oe! Ona taulia ai lea o millisecond uma ma o lea e tatau ai ona e faia togafiti eseese - na talanoa Anton Polukhin e uiga ia i latou.

Masalo o le faʻataʻitaʻiga sili ona manaia o le faʻatinoina o le faʻataʻitaʻiga-i-faʻatinoina (pimpl). 

#include <third_party/json.hpp> //PROBLEMS! 
struct Value { 
    Value() = default; 
    Value(Value&& other) = default; 
    Value& operator=(Value&& other) = default; 
    ~Value() = default; 

    std::size_t Size() const { return data_.size(); } 

private: 
    third_party::Json data_; 
};

I lenei faʻataʻitaʻiga, muamua ou te manaʻo e faʻaumatia faila faila o faletusi i fafo - o le a faʻapipiʻi vave, ma e mafai ona e puipuia oe lava mai feeseeseaiga igoa ma isi mea sese faapena. 

Lelei, na matou siitia atu #include i le faila .cpp: matou te manaʻomia se taʻutinoga i luma o le API afifi, faʻapea foʻi ma std::unique_ptr. O lea ua i ai a matou faʻasoa faʻamalosi ma isi mea le fiafia e pei o faʻamaumauga faʻasalalau i luga o le tele o faʻamaumauga ma faʻaitiitia faʻamaoniga. std::aligned_storage e mafai ona fesoasoani i nei mea uma. 

struct Value { 
// ... 
private: 
    using JsonNative = third_party::Json; 
    const JsonNative* Ptr() const noexcept; 
    JsonNative* Ptr() noexcept; 

    constexpr std::size_t kImplSize = 32; 
    constexpr std::size_t kImplAlign = 8; 
    std::aligned_storage_t<kImplSize, kImplAlign> data_; 
};

Pau lava le faʻafitauli: e manaʻomia ona e faʻamaonia le tele ma le faʻaogaina mo afifi taʻitasi - seʻi fai la matou pimpl template ma faʻamau , faʻaaoga nisi o mea taua ma faʻaopopo se siaki i le faʻaleagaina na matou maua mea uma saʻo: 

~FastPimpl() noexcept { 
    validate<sizeof(T), alignof(T)>(); 
    Ptr()->~T(); 
}

template <std::size_t ActualSize, std::size_t ActualAlignment>
static void validate() noexcept { 
    static_assert(
        Size == ActualSize, 
        "Size and sizeof(T) mismatch"
    ); 
    static_assert(
        Alignment == ActualAlignment, 
        "Alignment and alignof(T) mismatch"
    ); 
}

Talu ai o le T ua uma ona faʻamalamalamaina pe a faʻaogaina le faʻaleagaina, o lenei code o le a faʻasaʻo saʻo ma i le tuʻufaʻatasiga o le a faʻaalia ai le tele manaʻomia ma le faʻaogaina o tau e manaʻomia ona tuʻuina o ni mea sese. O le mea lea, i le tau o le tasi faʻaopoopo faʻapipiʻi faʻasolosolo, matou te faʻaumatia le vaevaega malosi o vasega afifi, natia le API i se faila .cpp faʻatasi ai ma le faʻatinoga, ma maua foi se mamanu e sili atu ona talafeagai mo le faʻaogaina e le processor.

O le faʻapipiʻiina ma le faʻavasegaina na foliga mai e le fiafia ma o le a le taʻua i lenei iloiloga.

O fa'ase'e lipoti o lo'o maua ile so'oga lea: ["C++ togafiti mai le Taxi"]

O auala fa'aonaponei mo le tausia o lau code DRY, Björn Fahller

I lenei lauga, o Björn Fahller o loʻo faʻaalia ai le tele o auala eseese e faʻafefe ai le faʻaletonu o le faʻasologa o siaki tulaga:

assert(a == IDLE || a == CONNECTED || a == DISCONNECTED);

Fa'alogo masani? E ala i le fa'aogaina o le tele o auala mamana C++ na fa'alauiloa mai i tulaga fa'ata'ita'i, e mafai ona e fa'atinoina ma le mata'utia le fa'atinoga tutusa e aunoa ma se fa'asalaga fa'atino. Fa'atusatusa:   

assert(a == any_of(IDLE, CONNECTED, DISCONNECTED));

Ina ia taulimaina se numera le tumau o siaki, e manaʻomia vave ona e faʻaogaina faʻataʻitaʻiga variadic ma faʻaaliga gaugau. Seʻi tatou manatu tatou te manaʻo e siaki le tutusa o le tele o fesuiaiga i le enum's state_type element. O le mea muamua e sau i lou mafaufau o le tusi lea o se galuega fesoasoani is_any_of:


enum state_type { IDLE, CONNECTED, DISCONNECTED };

template <typename ... Ts>
bool is_any_of(state_type s, const Ts& ... ts) { 
    return ((s == ts) || ...); 
}

O lenei i'uga vavalo e fa'anoanoa. E oʻo mai i le taimi nei e leʻo sili atu ona mafai ona faitau le code:

assert(is_any_of(state, IDLE, DISCONNECTING, DISCONNECTED)); 

Ole fa'ata'ita'iga fa'ata'ita'iga e le o tu'aiga ole a fesoasoani e fa'aleleia teisi le tulaga. Faatasi ai ma la latou fesoasoani, o le a matou faʻafeiloaʻi elemene numera o le enum i le lisi o faʻataʻitaʻiga: 

template <state_type ... states>
bool is_any_of(state_type t) { 
    return ((t == states) | ...); 
}
	
assert(is_any_of<IDLE, DISCONNECTING, DISCONNECTED>(state)); 

I le faʻaaogaina o le taʻavale i se faʻataʻitaʻiga faʻataʻitaʻiga e le o se ituaiga (C ++ 17), o le auala e faʻapipiʻi lautele i faʻatusatusaga e le gata i elemene state_type, ae faʻapea foʻi ma ituaiga muamua e mafai ona faʻaaogaina e fai ma faʻataʻitaʻiga faʻataʻitaʻiga e le o ituaiga:


template <auto ... alternatives, typename T>
bool is_any_of(const T& t) {
    return ((t == alternatives) | ...);
}

E ala i nei fa'aleleia fa'asolosolo, e maua ai le syntax lelei e mana'omia mo siaki:


template <class ... Ts>
struct any_of : private std::tuple<Ts ...> { 
// поленимся и унаследуем конструкторы от tuple 
        using std::tuple<Ts ...>::tuple;
        template <typename T>
        bool operator ==(const T& t) const {
                return std::apply(
                        [&t](const auto& ... ts) {
                                return ((ts == t) || ...);
                        },
                        static_cast<const std::tuple<Ts ...>&>(*this));
        }
};

template <class ... Ts>
any_of(Ts ...) -> any_of<Ts ... >;
 
assert(any_of(IDLE, DISCONNECTING, DISCONNECTED) == state);

I lenei faʻataʻitaʻiga, o le toesega taʻiala e tuʻuina atu le faʻataʻitaʻiga faʻataʻitaʻiga o loʻo manaʻomia i le tagata faʻapipiʻi, lea e iloa ituaiga o finauga faufale. 

E le gata i lea - sili atu ona manaia. Ua aʻoaʻo e Bjorn pe faʻafefea ona faʻasalalau le faʻasologa o tulafono mo tagata faʻatusatusa i tua atu o ==, ona sosoo ai lea ma gaioiga faʻapitoa. I luga o le ala, o foliga e pei o le no_unique_address attribute (C++20) ma faʻataʻitaʻiga faʻataʻitaʻiga i galuega lambda (C++ 20) o loʻo faʻamatalaina e faʻaaoga ai faʻataʻitaʻiga o le faʻaoga. (Ioe, o le taimi nei o le lambda syntax e sili atu ona faigofie ona manatua - o taiga sosoo e fa o puipui o ituaiga uma.) O le fofo mulimuli e faʻaaoga ai galuega e pei o faʻamatalaga faufale e faʻamafanafanaina ai loʻu agaga, ae le o le taʻua o le faʻaaliga tuple i tu ma aga sili a lambda. fa'atatauga.

I le faaiuga, aua nei galo e faʻapupulaina:

  • Manatua o lambdas e constexpr e leai se totogi; 
  • Se'i o tatou fa'aopoopo i luma lelei ma va'ai i lana fa'asologa mataga e fa'atatau i le fa'amaufa'ailoga i le lambda tapuni;
  • Se'i o tatou tu'uina atu i le tu'ufa'atasia le tele o avanoa mo fa'ata'ita'iga fa'atasi ai ma tulaga fa'apea; 
  • Sei o tatou vaʻaia le faʻaogaina o mea sese e sili atu ona malamalama i faʻataʻitaʻiga faʻafetai i faʻamatalaga faʻafoʻi faʻatatau o lambdas. Ole mea lea ole a fa'amalosia ai le tagata tu'ufa'atasi e fai nisi siaki a'o le'i ta'ua moni le galuega fa'ata'ita'i - ile la'asaga ole siaki ituaiga. 

Mo fa'amatalaga, fa'amolemole va'ai i meafai a'oa'oga: 

O tatou lagona

O la matou uluai auai i le C++ Rusia sa manatua pea mo lona malosi. Na ou maua le lagona o le C ++ Rusia o se mea faamaoni, lea o le laina i le va o aʻoaʻoga ma fesoʻotaʻiga ola e toetoe lava a le iloa. O mea uma lava, mai le lagona o failauga e o'o i tauvaga mai pa'aga o le fa'afiafiaga, e fa'aosofia ai talanoaga vevela. O mea o loʻo i totonu o le fonotaga, e aofia ai lipoti, e aofia ai le lautele lautele o mataupu e aofia ai C ++ faʻafouga, suʻesuʻega faʻataʻitaʻiga o galuega tetele ma mafaufauga faʻavae fausaga. Ae o le a le fetaui le le amanaiaina o le vaega lautele o le mea na tupu, lea e fesoasoani e foia pa puipui gagana e le gata i le C++.

Matou te faʻafetai i le faʻatulagaina o konafesi mo le avanoa e auai ai i se faʻalavelave faʻapea!
Atonu na e vaʻai i le faʻasalalauga 'post e uiga i le taimi ua tuanaʻi, taimi nei ma le lumanaʻi o C++ Rusia i luga o le blog JUG Ru.

Faafetai mo le faitau, ma matou te faamoemoe o le matou toe faamatalaina o mea na tutupu na aoga!

puna: www.habr.com

Faʻatau talimalo faʻatuatuaina mo nofoaga ma DDoS puipuiga, VPS VDS servers 🔥 Fa'atau le 'upega tafa'ilagi talimalo fa'atuatuaina ma le puipuiga DDoS, 'au'aunaga VPS VDS | ProHoster