Torna indietro   Hardware Upgrade Forum > Software > Programmazione

La nuova fascia media di AMD: Radeon RX 580 e Radeon RX 570
La nuova fascia media di AMD: Radeon RX 580 e Radeon RX 570
AMD aggiorna le proprie soluzioni di fascia media con le schede Radeon RX 580 e Radeon RX 570, proposte che sono basate sulla stessa architettura Polaris delle schede Radeon RX 400 vantando un lieve aumento delle frequenze di clock. Abbiamo analizzato le proposte MSI, Sapphire e Asus a confronto con 3 schede basate su GPU GeForce GTX 1060 di NVIDIA
Honor 8 Pro, la recensione del nuovo top di gamma dell'azienda
Honor 8 Pro, la recensione del nuovo top di gamma dell'azienda
Honor ha deciso di puntare in alto e dal prossimo 20 aprile venderà il nuovo Honor 8 Pro. Uno smartphone dal design elegante, con doppia fotocamera posteriore e un’autonomia da vero combattente. Ecco la nostra recensione completa.
Sony A9: la full frame professionale ora è mirrorless
Sony A9: la full frame professionale ora è mirrorless
Sony presenta la sua nuova ammiraglia: è una mirrorless con sensore Exmor RS Full Frame 35mm da 24,2 megapixel. Il sensore di tipo stacked debutta in formato così grande e mette a disposizione prestazioni da brivido in termini di velocità: raffica a 20 frame al secondo, niente blackout allo scatto e assenza di rolling shutter sono i punti di forza. Di rilievo anche il comparto autofocus, con ben 693 punti a rilevazione di fase sul sensore, con una copertura del 93% dell'inquadratura
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-04-2017, 15:49   #1
fano
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 1337
Avete mai usato Akka.net?

Sembra un sistema interessante per fare un'applicazione altamente concorrente e distribuita, cosa ne penaste? L'avete mai usato?

Questo è il sito ufficiale:
http://getakka.net
__________________
Cosmos C# Open Source Managed Operating System
Cosmos Thread Ufficiale
Cosmos Github (sorgenti e wiki)Vuoi collaborare allo sviluppo? Unisciti alla chat!
fano è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2017, 11:47   #2
coffe_killer
Senior Member
 
L'Avatar di coffe_killer
 
Iscritto dal: Dec 2011
Città: Pavia
Messaggi: 654
Quote:
Originariamente inviato da fano Guarda i messaggi
Sembra un sistema interessante per fare un'applicazione altamente concorrente e distribuita, cosa ne penaste? L'avete mai usato?

Questo è il sito ufficiale:
http://getakka.net
Ho cominciato a studiarmi il framework anche io ultimamente (anche se chiamarlo semplicemente framework dal mio punto di vista è riduttivo).
E' utile per determinati tipi di applicazioni, che abbiano bisogno di concorrenza.
Implementa l'actor model con reactive programming....penso che nel suo contesto possa essere un'ottima soluzione da studiarsi, visto che sembra che il mercato stia puntando moltissimo sulla reactive programming.
__________________
CPU: Intel Core i7 950 OC @3,7 GHZ || MOBO: Asus Rampage III Gene || PSU: Corsair RM 550 W || RAM: Kingston HyperX Fury 8GB (2x4) || SSD: Samsung 850 Evo 500 GB || VGA: Gigabyte Geforce GTX 750 || DISSI: Noctua NH-D14 || ROUTER: Asus DSL-N14U || OS: Windows 10 64 bit

@Linkedin
coffe_killer è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2017, 14:06   #3
fano
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 1337
La cosa forse più "sorprendente" è l'enorme quantità di documentazione, c'è addirittura una specie di "università":
https://petabridge.com/bootcamp

ci sono però 2 cose che non ho capito:

1. E` possibile avere uno degli Actor che è anche un elemento GUI (Winform o WPF) cioè poter avere un Actor a cui io dico "mostra questo", "mostra quello" e che mi ritorna i dati che l'utente ha tabulato? Tra gli esempi ce ne è uno che usa Winform, ma usa il thread della GUI per creare l'intero ActorSystem (quello che si farebbe nel classico Main avviene nell'UI "Main") e un Actor separato per "comandare" la GUI. Questo approccio non funziona nel mio caso: non tutte le mie / nostre applicazioni necessitano di una GUI quindi vorrei che l'applicazione partisse da linea di comando e solo se "configurata" lanci la GUI
2. Come si interopera con Entity Framework? Anche qui io penserei ad un Actor che si occupa di questo e che chiamerei con molta fantasia "Storage" Nella loro visione uno potrebbe pensare di avere un "router" e una 50ina di questi Actor, così da poter "servire" più Actor contemporaneamente ma - stranamente - Entity Framework non è thread safe (come è possibile ?)
__________________
Cosmos C# Open Source Managed Operating System
Cosmos Thread Ufficiale
Cosmos Github (sorgenti e wiki)Vuoi collaborare allo sviluppo? Unisciti alla chat!
fano è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2017, 15:56   #4
coffe_killer
Senior Member
 
L'Avatar di coffe_killer
 
Iscritto dal: Dec 2011
Città: Pavia
Messaggi: 654
Quote:
Originariamente inviato da fano Guarda i messaggi
La cosa forse più "sorprendente" è l'enorme quantità di documentazione, c'è addirittura una specie di "università":
https://petabridge.com/bootcamp

ci sono però 2 cose che non ho capito:

1. E` possibile avere uno degli Actor che è anche un elemento GUI (Winform o WPF) cioè poter avere un Actor a cui io dico "mostra questo", "mostra quello" e che mi ritorna i dati che l'utente ha tabulato? Tra gli esempi ce ne è uno che usa Winform, ma usa il thread della GUI per creare l'intero ActorSystem (quello che si farebbe nel classico Main avviene nell'UI "Main") e un Actor separato per "comandare" la GUI. Questo approccio non funziona nel mio caso: non tutte le mie / nostre applicazioni necessitano di una GUI quindi vorrei che l'applicazione partisse da linea di comando e solo se "configurata" lanci la GUI
2. Come si interopera con Entity Framework? Anche qui io penserei ad un Actor che si occupa di questo e che chiamerei con molta fantasia "Storage" Nella loro visione uno potrebbe pensare di avere un "router" e una 50ina di questi Actor, così da poter "servire" più Actor contemporaneamente ma - stranamente - Entity Framework non è thread safe (come è possibile ?)
1) Non sono così esperto di queste cose, ma penso che un actor che funga come corrispondente del presentation layer sia possibile, tipo come succede nel paradigma MVC

2) penso che anche questo sia fattibile, a patto che gli altri actor possano referenziare quello che farà da Model (più che storage).

Devo comunque studiare ancora un po' di documentazione, più che altro per capire se i punti 1 e 2 non "rompano" il paradigma degli actor
__________________
CPU: Intel Core i7 950 OC @3,7 GHZ || MOBO: Asus Rampage III Gene || PSU: Corsair RM 550 W || RAM: Kingston HyperX Fury 8GB (2x4) || SSD: Samsung 850 Evo 500 GB || VGA: Gigabyte Geforce GTX 750 || DISSI: Noctua NH-D14 || ROUTER: Asus DSL-N14U || OS: Windows 10 64 bit

@Linkedin
coffe_killer è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2017, 16:40   #5
fano
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 1337
Quote:
Originariamente inviato da coffe_killer Guarda i messaggi
1) Non sono così esperto di queste cose, ma penso che un actor che funga come corrispondente del presentation layer sia possibile, tipo come succede nel paradigma MVC
Io sono "vincolato" a che il tutto funzioni soprattutto su Linux quindi - finché Avalonia non è sufficientemente maturo - l'unica via percorribile è Winform che penso cose come "presentation layer" non le abbia nemmeno.

Questo è l'esempio di cui parlavo:
https://github.com/petabridge/akka-b...son1/README.md

ma come ti diceva a me non andrebbe bene creare la GUI quando parte l'applicazione: non sempre ho la GUI

Quote:
Originariamente inviato da coffe_killer Guarda i messaggi
2) penso che anche questo sia fattibile, a patto che gli altri actor possano referenziare quello che farà da Model (più che storage).
Cosa intendi con "Model"? Le classi Entity Framework che rappresentano le tabelle / viste del Database?
Spero di sì se no per il mio uso è poco utile, direi che in ogni caso deve essere solo 1 Actor a "parlare" con il DB gli altri devono inviarli Messaggi tipo "Fai questo", "Dammi questo"...

Stasera ci gioco ancora un po'
__________________
Cosmos C# Open Source Managed Operating System
Cosmos Thread Ufficiale
Cosmos Github (sorgenti e wiki)Vuoi collaborare allo sviluppo? Unisciti alla chat!
fano è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2017, 20:50   #6
coffe_killer
Senior Member
 
L'Avatar di coffe_killer
 
Iscritto dal: Dec 2011
Città: Pavia
Messaggi: 654
Quote:
Originariamente inviato da fano Guarda i messaggi
Io sono "vincolato" a che il tutto funzioni soprattutto su Linux quindi - finché Avalonia non è sufficientemente maturo - l'unica via percorribile è Winform che penso cose come "presentation layer" non le abbia nemmeno.

Questo è l'esempio di cui parlavo:
https://github.com/petabridge/akka-b...son1/README.md

ma come ti diceva a me non andrebbe bene creare la GUI quando parte l'applicazione: non sempre ho la GUI



Cosa intendi con "Model"? Le classi Entity Framework che rappresentano le tabelle / viste del Database?
Spero di sì se no per il mio uso è poco utile, direi che in ogni caso deve essere solo 1 Actor a "parlare" con il DB gli altri devono inviarli Messaggi tipo "Fai questo", "Dammi questo"...

Stasera ci gioco ancora un po'
Sisi intendo quello per Model.
Dai giocaci un po' e fammi sapere

Se non hai sempre la GUI allora l'actor che dovrebbe rappresentarla penso si possa interrogare solo a tua scelta. Non hai bisogno della GUI, non lo richiami, altrimenti sì. Penso che si possa fare con questo paradigma in qualche modo, mi stupirei non si potesse fare.
__________________
CPU: Intel Core i7 950 OC @3,7 GHZ || MOBO: Asus Rampage III Gene || PSU: Corsair RM 550 W || RAM: Kingston HyperX Fury 8GB (2x4) || SSD: Samsung 850 Evo 500 GB || VGA: Gigabyte Geforce GTX 750 || DISSI: Noctua NH-D14 || ROUTER: Asus DSL-N14U || OS: Windows 10 64 bit

@Linkedin
coffe_killer è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2017, 08:46   #7
fano
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 1337
Quote:
Originariamente inviato da coffe_killer Guarda i messaggi
Sisi intendo quello per Model.
Dai giocaci un po' e fammi sapere
Per ora non ho provato ad usare Entity Framework, ma mi sembra che l'approccio messaggi dovrebbe funzionare in questo modo:

1. Con Ask() chiedo al Actor Storage di eseguire uno Statement (Select, Insert, Update...)
2. Storage analizza il messaggio ed esegue la query corrispondente con LINQ si "crea" dal nulla l'oggetto e lo si spara come risposta
3. Il Processo richiedente "ritorna" da Ask() che è una chiamata sincrona e procede a fare qualcosa con i dati ottenuti

Mi confermi che Entity Framework non è thread safe vero?
Quindi 2 Actor non possono richiedere di fare Insert nemmeno su 2 tabelle separate nello stesso istante?

Mi chiedo se varrebbe la pena di usare NHibernate o qualche cos'altro il fatto di non poter usare i thread col DB è il punto debole dell'applicazione "distribuita" che usiamo ora fatta in C: sqlite non è thread safe e quindi abbiamo una sola applicazione che si occupa di "serializzare" (nel senso che li esegue in serie ) tutti i comandi verso il DB questo ci è quasi sempre andato bene finché abbiamo avuto la necessità di fare INSERT di 100'000 righe tutte in una botta e lì ci siamo potuti scordare con il C solo di provare ad allocare un json con 100'000 elementi e poi trasferirlo allo Storage per fare la INSERT: il resto dell'applicazione era bloccato!
A quel punto - con la coda tra le gambe - abbiamo dovuto fare kludge piuttosto orrendi database "privato" dell'applicazione che poveraccia si deve caricare 100'000 righe e fare 100'000 INSERT e poi quando ha finito comando "ATTACH" allo Storage... uno schifo

Quote:
Originariamente inviato da coffe_killer Guarda i messaggi
Se non hai sempre la GUI allora l'actor che dovrebbe rappresentarla penso si possa interrogare solo a tua scelta. Non hai bisogno della GUI, non lo richiami, altrimenti sì. Penso che si possa fare con questo paradigma in qualche modo, mi stupirei non si potesse fare.
Sì funziona!

Ecco come ho fatto:

Codice:
        [STAThread] //optional
        protected static bool StartUILoop()
        {
            Application.Run();
            return true;
        }

        protected override void PreStart()
        {
            /* Let's start an Empty UI Application, the true Application will load the page with "Loading..." */
            //Task mytask = Task.Run(() => Application.Run());

            Task mytask = Task.Run(() =>
                StartUILoop()
            );
        }
Quando poi ricevo un comando (in questo caso carica la form di Login) faccio semplicemente:

Codice:
           var form = new LoginForm();
           form.ShowDialog();
Ero rimasto "bloccato" (in tutti i sensi) perché il metodo più ovvio form.Show() mi dava una GUI morta manco disegnata tutta, non attiva e pure "rotellante", in futuro a richiesta del resto dei processi dovrò caricare anche:

1. MessageBox
2. Menu
3. Scrivere su uno o più field di una "pagina" caricata
4. Far ritornare tutti i dati di input inseriti dall'utente (sono un po' sorpreso che non esista un metodo di "Form" che lo faccia automaticamente!)

Devo studiare se si riesce a caricare un elemento GUI dato il nome e poi sono a cavallo
__________________
Cosmos C# Open Source Managed Operating System
Cosmos Thread Ufficiale
Cosmos Github (sorgenti e wiki)Vuoi collaborare allo sviluppo? Unisciti alla chat!

Ultima modifica di fano : 19-04-2017 alle 08:49.
fano è offline   Rispondi citando il messaggio o parte di esso
Old 20-04-2017, 09:25   #8
fano
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 1337
In realtà funzionava sì, ma ShowDialog() blocca l'Actor finché non viene chiusa la form!
Visto che - per ora - manco la chiudevo funzionava finché non ho implementato la chiusura pulita e l'Actor "UI" non voleva uscire! Che fessacchiotto

Peccato che ora sono fregato:

1. Ho provato a fare una Dialog Async viene mostrata correttamente e l'Actor può fare altro nel frattempo, ma quando premo "OK" sulla Dialog l'Actor viene fatto secco e il parent riceve l'evento da un Actor di sistema "DeadLetter" e sì e muore pure lui
2. Ho provato a far girare l'Actor nello stesso contesto della GUI alla fine sembrava pure che ci fossi riuscito, ma la GUI manco appare e mi becco un orripilante eccezione:

Quote:
20/04/2017 02:01:13.092|Error|OneForOneStrategy|Configuration problem while creating [akka://Sesamo/user/Manager/UIActor] with dispatcher [akka.actor.synchronized-dispatcher] and mailbox []
Boh chissà cosa vuole dire?

Sto sbagliando strada è evidente non posso "manipolare" così l'UI thread di Windows facendolo partire in un momento "a caso", quando muore l'Actor lo ricreerebbe, se ne ho 2 di GUI dovrei farne 2? Non credo sia permesso / corretto
__________________
Cosmos C# Open Source Managed Operating System
Cosmos Thread Ufficiale
Cosmos Github (sorgenti e wiki)Vuoi collaborare allo sviluppo? Unisciti alla chat!
fano è offline   Rispondi citando il messaggio o parte di esso
Old 20-04-2017, 14:15   #9
coffe_killer
Senior Member
 
L'Avatar di coffe_killer
 
Iscritto dal: Dec 2011
Città: Pavia
Messaggi: 654
Quote:
Originariamente inviato da fano Guarda i messaggi
In realtà funzionava sì, ma ShowDialog() blocca l'Actor finché non viene chiusa la form!
Visto che - per ora - manco la chiudevo funzionava finché non ho implementato la chiusura pulita e l'Actor "UI" non voleva uscire! Che fessacchiotto

Peccato che ora sono fregato:

1. Ho provato a fare una Dialog Async viene mostrata correttamente e l'Actor può fare altro nel frattempo, ma quando premo "OK" sulla Dialog l'Actor viene fatto secco e il parent riceve l'evento da un Actor di sistema "DeadLetter" e sì e muore pure lui
2. Ho provato a far girare l'Actor nello stesso contesto della GUI alla fine sembrava pure che ci fossi riuscito, ma la GUI manco appare e mi becco un orripilante eccezione:



Boh chissà cosa vuole dire?

Sto sbagliando strada è evidente non posso "manipolare" così l'UI thread di Windows facendolo partire in un momento "a caso", quando muore l'Actor lo ricreerebbe, se ne ho 2 di GUI dovrei farne 2? Non credo sia permesso / corretto
Ma in realtà, se non ho capito male, bisognerebbe avere un unico actor che espone le GUI, e se morisse sarebbe un evento atipico, e l'applicazione dovrebbe crashare.
Anche perchè morendo l'actor, si perderebbero i puntamenti alle GUI che ha creato.
Ripeto, sto andando molto ad intuito.
__________________
CPU: Intel Core i7 950 OC @3,7 GHZ || MOBO: Asus Rampage III Gene || PSU: Corsair RM 550 W || RAM: Kingston HyperX Fury 8GB (2x4) || SSD: Samsung 850 Evo 500 GB || VGA: Gigabyte Geforce GTX 750 || DISSI: Noctua NH-D14 || ROUTER: Asus DSL-N14U || OS: Windows 10 64 bit

@Linkedin
coffe_killer è offline   Rispondi citando il messaggio o parte di esso
Old 20-04-2017, 16:22   #10
fano
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 1337
Il problema è che Windows trova "anormale" fare un'Applicazione senza GUI infatti l'entry point di Winform è "Application", un applicazione command line te la fa fare ma un "ibrido" è - evidentemente - un anti pattern!

Di fatto il modo corretto è quello consigliato da mamma Microsoft Application.Run() è l'ultima istruzione nel Main() (che infatti ti blocca) farlo partire dentro l'Actor è un'anti pattern:

https://github.com/akkadotnet/akka.net/issues/2624

nella visione AKKA poteva non essere un problema anche se crashava la GUI la loro filosofia è "let it crash" bastava metterci un una SuperVision strategy per far ripartire la GUI, fare Application.Exit() nello stop e poi rifare poco dopo Application.Run() chissà come avrebbe gradito!

Un po' mi rompe il "giochino" questo...
__________________
Cosmos C# Open Source Managed Operating System
Cosmos Thread Ufficiale
Cosmos Github (sorgenti e wiki)Vuoi collaborare allo sviluppo? Unisciti alla chat!
fano è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2017, 08:51   #11
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3274
Quote:
Originariamente inviato da fano Guarda i messaggi
Il problema è che Windows trova "anormale" fare un'Applicazione senza GUI infatti l'entry point di Winform è "Application", un applicazione command line te la fa fare ma un "ibrido" è - evidentemente - un anti pattern!
Non credo proprio che sia Windows, ma semmai il modello WinForm, non c'è nessun problema ad avviare una GUI da un software "console". Di conseguenza la GUI la fai partire solo se ti serve. Però rimane una incongruenza di base o è una GUI o e una console, una console può far partire una GUI, una GUI può attaccarsi alla console, una terza via che mi risulti non esiste (e non riesco nemmeno ad immaginarmela). Questo per lo meno in Win32 (ad esempio con Qt è possibile), in .Net non saprei.

Non ho capito però la tua esigenza, vorresti scrivere un codice unico e fare in modo che funzioni sempre a prescindere se sia una console o una GUI?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2017, 12:02   #12
fano
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 1337
La mia applicazione sarebbe modulare quindi alcuni "Actor" esisterebbero sempre, ma altre cose no per esempio se l'applicazione richiede un operatore che faccia cose e/o visualizzare un Interfaccia di altro tipo allora un UIActor esiste altrimenti non c'è nessun GUI, analogamente al caso in cui se ho una stampante faccio partire un PrinterActor che apre la seriale altrimenti - la seriale - resta bella chiusa

Comunque l'eccezione che ottengo non la capisco proprio ora dovrei farlo come "piace a Windows":

1. Faccio Application.Run() nel Main (lancio però un task perché se no non posso fare altro)
2. Creo l'ActorSystem
3. Creo gli Actor quelli che "esistono sempre"
4. Uno di questi Actor che è il manager / supervisore dei dispositivi crea l'Actor che dovrà interfacciarsi con la GUI avendo l'accortezza di crearla nello stesso thread

... e non va una fava! La creazione dell'Actor fallisce miseramente con la coda tra le gambe:

Quote:
Configuration problem while creating [akka://Sesamo/user/Manager/UIActor] with dispatcher [akka.actor.synchronized-dispatcher] and mailbox []
Ho è un baco loro o mi sono perso qualche cosa...

In questo lungo week end farò altre prove sarà qualche sciocchezza di sicuro
__________________
Cosmos C# Open Source Managed Operating System
Cosmos Thread Ufficiale
Cosmos Github (sorgenti e wiki)Vuoi collaborare allo sviluppo? Unisciti alla chat!
fano è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


La nuova fascia media di AMD: Radeon RX 580 e Radeon RX 570 La nuova fascia media di AMD: Radeon RX 580 e Ra...
Honor 8 Pro, la recensione del nuovo top di gamma dell'azienda Honor 8 Pro, la recensione del nuovo top di gamm...
Sony A9: la full frame professionale ora è mirrorless Sony A9: la full frame professionale ora è...
Facebook F8: realtà virtuali, aumentate e un Messenger sempre più smart Facebook F8: realtà virtuali, aumentate e un Mes...
Sennheiser PXC 480: musica e silenzio in mobilità. La nostra recensione Sennheiser PXC 480: musica e silenzio in mobilit...
Apple e l'ambiente, l'obiettivo è...
Annunciati i requisiti di sistema per la...
Prey: un trailer ci porta in vista guida...
CPU Intel Skylake-X e Kaby Lake-X al deb...
Apple crea litri di sudore artificiale p...
Come registrare lo schermo del tuo iPhon...
Honor cerca recensori per provare il nuo...
I primi PC con processori ARM non arrive...
Huawei Mate 9 Pro, prestazioni e design ...
Ulefone Future, smartphone privo di corn...
Pirateria online, condannato a 8 mesi di...
Da MasterCard le nuove carte di credito ...
PS4 Slim in offerta a soli €199 per il w...
Litografia EUV, il prossimo anno i primi...
Phishing irriconoscibile su Chrome, Fire...
Avant Browser
Chromium
Zoom Player Free
AIDA64 Extreme Edition
Process Lasso
Cpu-Z
Iperius Backup
Firefox Portable
Google Chrome Portable
K-Lite Codec Pack Update
K-Lite Mega Codec Pack
K-Lite Codec Pack Full
K-Lite Codec Pack Standard
ZoneAlarm Antivirus + Firewall
Firefox 53
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:47.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Served by www3v