Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Problema Service - Preturi diferite

IP Camera HikVision nu o gasesc i...

Cand devine un film clasic?

Cu mașina spre Budapesta ...
 Ridicare act de identitate cu pro...

Calorifere + incalzire in pardose...

Sfat achizitie laptop buget 1500-...

Boxe Devialet
 Mai poarta careva papuci prin oras?

Amortizoare - 2024 - gaz / ulei ?...

Calatorie Bucuresti - Timisoara, ...

Țuica are gust ciudat
 Copii nascuti in Romania

Felicitari Republica Moldova pent...

Ușa exterioara care scar5...

Decizie dificila intre doua model...
 

Backend rapid pt forumuri – mii de cereri/secunda pe hardware modest

* * * * - 6 votes
  • Please log in to reply
80 replies to this topic

#37
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,296
  • Înscris: 24.02.2007
Versiunea 1.0 se aproprie cu pasi rapizi.

Cel mai recent benchmark, pe un development machine arata cam asa:

Date de test
  • 400.000 useri
  • 800.000 topicuri
  • 10.000.000 mesaje de 400 litere in medie
  • 100 taguri
  • 200 categorii
  • ~ 6 GB evenimente pe disk

Rezultate
  • ~ 4 minute pentru importul de date de pe SSD
  • ~ 15 GB RAM consumati
  • Durata inserare mesaj nou: ~ 2.2 ms
  • Durata listare pagina de mesaje ale unui user: ~ 0.9 ms

Edited by dani.user, 05 September 2017 - 21:24.


#38
dolly_c

dolly_c

    Junior Member

  • Grup: Junior Members
  • Posts: 76
  • Înscris: 30.06.2017

View Postdani.user, on 05 septembrie 2017 - 21:23, said:

Versiunea 1.0 se aproprie cu pasi rapizi.

Cel mai recent benchmark, pe un development machine arata cam asa:

Date de test
  • 400.000 useri
  • 800.000 topicuri
  • 10.000.000 mesaje de 400 litere in medie
  • 100 taguri
  • 200 categorii
  • ~ 6 GB evenimente pe disk
Rezultate
  • ~ 4 minute pentru importul de date de pe SSD
  • ~ 15 GB RAM consumati
  • Durata inserare mesaj nou: ~ 2.2 ms
  • Durata listare pagina de mesaje ale unui user: ~ 0.9 ms

Asteptam sa vedem versiunea 1! E interesanta ideea dvs de a face un forum care poate lucra pe un pc cu hardware modest! Foarte interesanta! Va doresc spor la treaba!

#39
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,296
  • Înscris: 24.02.2007
Versiunea 0.9 e gata si aduce:
  • Throttling pentru a preveni spam masiv
  • Istoric pentru voturile userilor
  • Titlu, semantura, logo pentru useri
  • Diverse bug fixes

Liniile de cod s-au inmultit, cam 33000 acum.

Edited by dani.user, 01 October 2017 - 21:57.


#40
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,296
  • Înscris: 24.02.2007
Daca vrea cineva sa scrie vreun client, API-ul e acum in mare parte documentat.

https://github.com/d...tial/doc/API.md

#41
dolly_c

dolly_c

    Junior Member

  • Grup: Junior Members
  • Posts: 76
  • Înscris: 30.06.2017

View Postdani.user, on 19 octombrie 2017 - 20:07, said:

Daca vrea cineva sa scrie vreun client, API-ul e acum in mare parte documentat.

https://github.com/d...tial/doc/API.md
Poate nu am inteles bine. Dvs ati facut un backend, adica un forum, gazduit de github? Numit danij forum. Client ... daca merg pe sign in, ma face user pentru github. Ceva imi este neclar ...

Edited by dolly_c, 24 October 2017 - 18:15.


#42
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,296
  • Înscris: 24.02.2007
Github e un serviciu extern ce gazduieste sursa forumului.

#43
dolly_c

dolly_c

    Junior Member

  • Grup: Junior Members
  • Posts: 76
  • Înscris: 30.06.2017

View Postdani.user, on 24 octombrie 2017 - 18:16, said:

Github e un serviciu extern ce gazduieste sursa forumului.
Multumesc pentru raspuns. Asta am inteles. Dar la ce v-ati referit daca vrea cineva sa scrie un client?
O sa citesc raspunsul alta data. Va urez o seara buna!

Edited by dolly_c, 24 October 2017 - 18:31.


#44
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,674
  • Înscris: 06.03.2016

View Postdolly_c, on 24 octombrie 2017 - 18:28, said:


Multumesc pentru raspuns. Asta am inteles. Dar la ce v-ati referit daca vrea cineva sa scrie un client?
O sa citesc raspunsul alta data. Va urez o seara buna!
Prin client mai poți înțelege şi interfață grafică în cazul de față (chiar dacă nu e o interfață grafică, dar ca idee)
Backend-ul face toată munca grea: lucrează cu baza de date, oferă răspunsuri la cereri etc. , iar clientul trimite cereri către backend şi apoi afişează diverse chestii în funcție de răspuns.

Iau spre exemplu chiar forumul acesta. Dacă dau pe profilul tau să văd detalii despre tine (spre exemplu),  clientul trimite o cerere către backend, apoi backend-ul caută informatii într-un loc specific în baza de date (un tabel cu toți utilizatorii) după ID-ul atribuit ție ca user(ID care este menționat tot de către client), trimite un răspuns către client, apoi clientul afişează răspunsurile într-o altă pagină cu layout specific.

Ceva mai uşor de înțeles:

Client: Backend, caută-mi si mie informații despre utilizatorul cu ID-ul 991592.
Backend: OK, utilizatorul cu ID-ul xxxxxx are e-mail-ul: [email protected], şi-a creat contul pe data de 20.09.2017 etc.
Clientul primeşte răspunsul, apoi îl afişează formatat frumos într-o pagină HTML. (asta e cea mai simplă metodă)

Practic pe client nu îl interesează in ce mod face backend-ul rost de acele informații, pe el îl interesează doar un răspuns cu care poate lucra.

View Postdolly_c, on 24 octombrie 2017 - 18:13, said:


Poate nu am inteles bine. Dvs ati facut un backend, adica un forum, gazduit de github? Numit danij forum. Client ... daca merg pe sign in, ma face user pentru github. Ceva imi este neclar ...
Termenul "backend" nu are nici o legătură cu termenul "forum".
Github e o platformă care găzduieşte codul sursă al proiectului. @dani.user nu a făcut un forum, ci un backend pentru forum. O platformă forum este alcătuită din backend + frontend. Dacă unul dintre componentele acestea importante lipeşte,  atunci nu putem vorbi de o platformă forum.

#45
dolly_c

dolly_c

    Junior Member

  • Grup: Junior Members
  • Posts: 76
  • Înscris: 30.06.2017

View Postred46, on 24 octombrie 2017 - 20:07, said:

Prin client mai poți înțelege şi interfață grafică în cazul de față (chiar dacă nu e o interfață grafică, dar ca idee)
Backend-ul face toată munca grea: lucrează cu baza de date, oferă răspunsuri la cereri etc. , iar clientul trimite cereri către backend şi apoi afişează diverse chestii în funcție de răspuns.

Iau spre exemplu chiar forumul acesta. Dacă dau pe profilul tau să văd detalii despre tine (spre exemplu),  clientul trimite o cerere către backend, apoi backend-ul caută informatii într-un loc specific în baza de date (un tabel cu toți utilizatorii) după ID-ul atribuit ție ca user(ID care este menționat tot de către client), trimite un răspuns către client, apoi clientul afişează răspunsurile într-o altă pagină cu layout specific.

Ceva mai uşor de înțeles:

Client: Backend, caută-mi si mie informații despre utilizatorul cu ID-ul 991592.
Backend: OK, utilizatorul cu ID-ul xxxxxx are e-mail-ul: [email protected], şi-a creat contul pe data de 20.09.2017 etc.
Clientul primeşte răspunsul, apoi îl afişează formatat frumos într-o pagină HTML. (asta e cea mai simplă metodă)

Practic pe client nu îl interesează in ce mod face backend-ul rost de acele informații, pe el îl interesează doar un răspuns cu care poate lucra.


Termenul "backend" nu are nici o legătură cu termenul "forum".
Github e o platformă care găzduieşte codul sursă al proiectului. @dani.user nu a făcut un forum, ci un backend pentru forum. O platformă forum este alcătuită din backend + frontend. Dacă unul dintre componentele acestea importante lipeşte,  atunci nu putem vorbi de o platformă forum.
Acum am deschis un pic aici. Multumesc pentru lamuriri, red46. Lucrurile mi-au devenit clare acum. Foarte clar ati explicat, ca un adevarat profesor. Am inteles foarte bine. Vad ca si lui dani.user i-au placut explicatiile dvs foarte clare. Multumesc mult de tot!

#46
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,296
  • Înscris: 24.02.2007

View Postred46, on 01 septembrie 2018 - 09:17, said:

Backend-ul nu poate fi compilat pentru ARM? Am încercat să-l compilez pe un RPi3, însă primeam erori. (deși am instalat toate librăriile necesare)
O să încerc din nou și postez aici erorile.

Singura restrictie ar fi sa fie little endian (mai mult din comoditate, sa evit cateva conditii in codul de persistenta). Poate e mai vechi compilatorul folosit si nu stie chiar toate "bunatatiile" din C++17 folosite pe ici pe colo.

#47
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,674
  • Înscris: 06.03.2016
/home/pi/Forum/src/LibHttp/private/StreamingConnection.cpp: In constructor ‘Http::StreamingConnection::StreamingConnection(Http::IConnectionManager&, boost::asio::ip::tcp::socket&&)’:
/home/pi/Forum/src/LibHttp/private/StreamingConnection.cpp:24:51: error: ‘boost::asio::ip::tcp::socket’ {aka ‘class boost::asio::basic_stream_socket<boost::asio::ip::tcp>’} has no member named ‘get_io_context’; did you mean ‘io_control’?
	 : socket_{std::move(socket)}, strand_{socket_.get_io_context()}, connectionManager_(connectionManager)
												   ^~~~~~~~~~~~~~
												   io_control
/home/pi/Forum/src/LibHttp/private/StreamingConnection.cpp:24:106: error: no matching function for call to ‘boost::asio::io_service::strand::strand(<brace-enclosed initializer list>)’
ket)}, strand_{socket_.get_io_context()}, connectionManager_(connectionManager)
																			   ^
In file included from /usr/include/boost/asio.hpp:100,
				 from /home/pi/Forum/src/LibHttp/./IConnectionManager.h:21,
				 from /home/pi/Forum/src/LibHttp/./StreamingConnection.h:21,
				 from /home/pi/Forum/src/LibHttp/private/StreamingConnection.cpp:19:
/usr/include/boost/asio/strand.hpp:96:12: note: candidate: ‘boost::asio::io_service::strand::strand(boost::asio::io_service&)’
   explicit strand(boost::asio::io_service& io_service)
			^~~~~~
/usr/include/boost/asio/strand.hpp:96:12: note:   conversion of argument 1 would be ill-formed:
/usr/include/boost/asio/strand.hpp:86:19: note: candidate: ‘constexpr boost::asio::io_service::strand::strand(const boost::asio::io_service::strand&)’
class io_service::strand
				   ^~~~~~
/usr/include/boost/asio/strand.hpp:86:19: note:   conversion of argument 1 would be ill-formed:
/home/pi/Forum/src/LibHttp/private/StreamingConnection.cpp: In member function ‘void Http::StreamingConnection::startReading()’:
/home/pi/Forum/src/LibHttp/private/StreamingConnection.cpp:34:18: error: ‘post’ is not a member of ‘boost::asio’
	 boost::asio::post(strand_, [this]()
				  ^~~~
/home/pi/Forum/src/LibHttp/private/StreamingConnection.cpp:34:18: note: suggested alternative: ‘posix’
	 boost::asio::post(strand_, [this]()
				  ^~~~
				  posix
src/LibHttp/CMakeFiles/Http.dir/build.make:230: recipe for target 'src/LibHttp/CMakeFiles/Http.dir/private/StreamingConnection.cpp.o' failed
make[2]: *** [src/LibHttp/CMakeFiles/Http.dir/private/StreamingConnection.cpp.o] Error 1
CMakeFiles/Makefile2:140: recipe for target 'src/LibHttp/CMakeFiles/Http.dir/all' failed
make[1]: *** [src/LibHttp/CMakeFiles/Http.dir/all] Error 2
Makefile:94: recipe for target 'all' failed
make: *** [all] Error 2


GCC 8.1.0
Boost 1.61

#48
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,296
  • Înscris: 24.02.2007
E de la boost, au mai facut schimbari in API-ul asio. Incearca o versiune mai noua (1.66+)

Edited by dani.user, 01 September 2018 - 12:56.


#49
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,674
  • Înscris: 06.03.2016
Asta e eroarea despre care vorbeam:
[ 25%] Building CXX object src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/private/CommandHandler.cpp.o
In file included from /home/pi/Forum/src/LibForumServiceEndpoints/../LibForumData/EntityCollection.h:21,
				 from /home/pi/Forum/src/LibForumServiceEndpoints/../LibForumData/Repository.h:21,
				 from /home/pi/Forum/src/LibForumServiceEndpoints/./CommandHandler.h:21,
				 from /home/pi/Forum/src/LibForumServiceEndpoints/private/CommandHandler.cpp:19:
/home/pi/Forum/src/LibForumServiceEndpoints/../LibForumData/AuthorizationPrivileges.h: In function ‘Forum::Authorization::PrivilegeDurationIntType Forum::Authorization::calculatePrivilegeExpires(Forum::Authorization::PrivilegeDurationIntType, Forum::Authorization::PrivilegeDurationIntType)’:
/home/pi/Forum/src/LibForumServiceEndpoints/../LibForumData/AuthorizationPrivileges.h:480:56: error: static assertion failed: PrivilegeDurationIntType should be at least 64-bit wide
		 static_assert(sizeof(PrivilegeDurationIntType) >= 8, "PrivilegeDurationIntType should be at least 64-bit wide");
					 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/build.make:62: recipe for target 'src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/private/CommandHandler.cpp.o' failed
make[2]: *** [src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/private/CommandHandler.cpp.o] Error 1
CMakeFiles/Makefile2:259: recipe for target 'src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/all' failed
make[1]: *** [src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/all] Error 2
Makefile:94: recipe for target 'all' failed
make: *** [all] Error 2


Am actualizat Boost la versiunea 1.67.0 .

Edited by red46, 01 September 2018 - 19:46.


#50
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,296
  • Înscris: 24.02.2007
Corectat pe branchul initial.

Tot acolo se gaseste si o prima documentatie de instalare/configurare a serviciilor.

#51
alexandrupope

alexandrupope

    Active Member

  • Grup: Members
  • Posts: 1,053
  • Înscris: 21.08.2018

View Postred46, on 01 septembrie 2018 - 19:46, said:

Asta e eroarea despre care vorbeam:
[ 25%] Building CXX object src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/private/CommandHandler.cpp.o
In file included from /home/pi/Forum/src/LibForumServiceEndpoints/../LibForumData/EntityCollection.h:21,
				 from /home/pi/Forum/src/LibForumServiceEndpoints/../LibForumData/Repository.h:21,
				 from /home/pi/Forum/src/LibForumServiceEndpoints/./CommandHandler.h:21,
				 from /home/pi/Forum/src/LibForumServiceEndpoints/private/CommandHandler.cpp:19:
/home/pi/Forum/src/LibForumServiceEndpoints/../LibForumData/AuthorizationPrivileges.h: In function ‘Forum::Authorization::PrivilegeDurationIntType Forum::Authorization::calculatePrivilegeExpires(Forum::Authorization::PrivilegeDurationIntType, Forum::Authorization::PrivilegeDurationIntType)’:
/home/pi/Forum/src/LibForumServiceEndpoints/../LibForumData/AuthorizationPrivileges.h:480:56: error: static assertion failed: PrivilegeDurationIntType should be at least 64-bit wide
		 static_assert(sizeof(PrivilegeDurationIntType) >= 8, "PrivilegeDurationIntType should be at least 64-bit wide");
					 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/build.make:62: recipe for target 'src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/private/CommandHandler.cpp.o' failed
make[2]: *** [src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/private/CommandHandler.cpp.o] Error 1
CMakeFiles/Makefile2:259: recipe for target 'src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/all' failed
make[1]: *** [src/LibForumServiceEndpoints/CMakeFiles/ForumServiceEndpoints.dir/all] Error 2
Makefile:94: recipe for target 'all' failed
make: *** [all] Error 2


Am actualizat Boost la versiunea 1.67.0 .

Super

#52
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,674
  • Înscris: 06.03.2016
../../src/LibHttp/libHttp.so: undefined reference to `__atomic_fetch_sub_8'
../../src/LibHttp/libHttp.so: undefined reference to `__atomic_load_8'
../../src/LibHttp/libHttp.so: undefined reference to `__atomic_fetch_add_8'
collect2: error: ld returned 1 exit status
test/HttpTests/CMakeFiles/HttpTests.dir/build.make:131: recipe for target 'test/HttpTests/HttpTests' failed
make[2]: *** [test/HttpTests/HttpTests] Error 1
CMakeFiles/Makefile2:605: recipe for target 'test/HttpTests/CMakeFiles/HttpTests.dir/all' failed
make[1]: *** [test/HttpTests/CMakeFiles/HttpTests.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....



#53
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,296
  • Înscris: 24.02.2007
Progrese.

Am pus sa linkuie atomic. Pana acum n-a fost nevoie sa-i cer asta explicit.

#54
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,674
  • Înscris: 06.03.2016
[ 68%] Linking CXX executable ForumApp
/usr/bin/ld: CMakeFiles/ForumApp.dir/Application.cpp.o: undefined reference to symbol 'pthread_getspecific@@GLIBC_2.4'
//lib/arm-linux-gnueabihf/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
src/ForumApp/CMakeFiles/ForumApp.dir/build.make:129: recipe for target 'src/ForumApp/ForumApp' failed
make[2]: *** [src/ForumApp/ForumApp] Error 1
CMakeFiles/Makefile2:490: recipe for target 'src/ForumApp/CMakeFiles/ForumApp.dir/all' failed
make[1]: *** [src/ForumApp/CMakeFiles/ForumApp.dir/all] Error 2
Makefile:94: recipe for target 'all' failed
make: *** [all] Error 2


EDIT: Rezolvat prin adăugarea "-lpthread" sub "target_link_libraries" în CMakeLists.txt .


OK, acum primesc alte erori:
[ 73%] Building CXX object test/ForumServiceTests/CMakeFiles/ForumServiceTests.dir/UserTests.cpp.o
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp: In member function ‘void Users_can_be_retrieved_by_name_even_if_using_a_different_normalization_form::test_method()’:
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:402:73: error: narrowing conversion of ‘-61’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
	 const char nameFormC[] = { 72, -61, -87, 108, -60, -71, -57, -84, 0 };
																		 ^
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:402:73: error: narrowing conversion of ‘-87’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:402:73: error: narrowing conversion of ‘-60’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:402:73: error: narrowing conversion of ‘-71’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:402:73: error: narrowing conversion of ‘-57’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:402:73: error: narrowing conversion of ‘-84’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:403:99: error: narrowing conversion of ‘-52’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
rmD[] = { 72, 101, -52, -127, 108, 76, -52, -127, 79, -52, -88, -52, -124, 0 };
																			  ^
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:403:99: error: narrowing conversion of ‘-127’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:403:99: error: narrowing conversion of ‘-52’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:403:99: error: narrowing conversion of ‘-127’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:403:99: error: narrowing conversion of ‘-52’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:403:99: error: narrowing conversion of ‘-88’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:403:99: error: narrowing conversion of ‘-52’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
/home/pi/FastForum/Forum/test/ForumServiceTests/UserTests.cpp:403:99: error: narrowing conversion of ‘-124’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
test/ForumServiceTests/CMakeFiles/ForumServiceTests.dir/build.make:101: recipe for target 'test/ForumServiceTests/CMakeFiles/ForumServiceTests.dir/UserTests.cpp.o' failed
make[2]: *** [test/ForumServiceTests/CMakeFiles/ForumServiceTests.dir/UserTests.cpp.o] Error 1
CMakeFiles/Makefile2:550: recipe for target 'test/ForumServiceTests/CMakeFiles/ForumServiceTests.dir/all' failed
make[1]: *** [test/ForumServiceTests/CMakeFiles/ForumServiceTests.dir/all] Error 2
Makefile:94: recipe for target 'all' failed
make: *** [all] Error 2


Edited by red46, 04 September 2018 - 11:25.


Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate