1 website, meerdere servers

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

Bekijk vacature »

Frontend Developer

Dit ga je doen Door ontwikkelen van het online platform Deel uitmaken van verschillende ontwikkelteams Meedenken over UI/UX vraagstukken Uitdragen van Front-end binnen de organisatie Hier ga je werken Deze organisatie, gevestigd in de omgeving van Amsterdam, is een grote onderwijs instelling met meerdere vestigingen en een groot aantal studenten. Zo telt deze organisatie +/- 35.000 gebruikers. Bij deze organisatie staat jouw ontwikkeling centraal en is er veel ruimte voor eigen initiatieven. In samenwerking met jouw team ga jij de online omgeving verder ontwikkelen. In de rol van Front end Developer zal jij 50% van jouw tijd werken in het

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij recent jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een erkende werkgever in regio Waalwijk zijn wij op zoek naar een back-end developer. Kennis of ervaring met C# & SQL is een must! Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten; Je bent verantwoordelijk voor de beheer en ontwikkeling van de software; Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je brengt de aanpassingssuggesties van klanten in kaart, om ze

Bekijk vacature »

PHP Web Developer

Functie omschrijving Voor een klein softwarebedrijf in de omgeving Roosendaal, zijn wij op zoek naar een PHP web developer met een aantal jaar werkervaring. Wil jij graag werken aan in-house software projecten voor diverse klanten? Voel jij je prettige in een klein team developers, waar jouw inbreng enorm gewaardeerd wordt? Lees dan snel verder! Jouw werkzaamheden zien er als volgt uit: Je wordt verantwoordelijk voor de ontwikkeling van diverse applicaties. Dit kan de ene keer een online platform voor aanbiedingen zijn, en de andere keer een software pakket dat gebruikt wordt om interne processen te automatiseren. Het zijn stuk voor

Bekijk vacature »

Robot Programmeur

In het kort Drie redenen waarom deze vacature uniek is! Programmeren van zelflerende robots Werken op kantoor en testen in de bedrijfshal Je krijgt verantwoordelijkheid, vrijheid en je mag werken naar eigen inzicht De organisatie Hier ga je aan de slag Een bedrijf dat innovatieve robottoepassingen ontwerpt en bouwt voor onder andere de staal industrie, energie- bouw- en agrarische sector. De robots die vaak in combinatie met diverse randapparatuur geleverd worden vormen een totaaloplossing voor de klant. Dit zijn klanten over de hele wereld, van België en Duitsland tot China, India, maar ook in Nederland. Projecten waar momenteel aan wordt

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden je HBO ICT Informatica diploma in ontvangst mogen nemen? Of heb je een aantal jaar ervaring als Software Developer en ben je klaar voor een nieuw hoofdstuk in jouw carrière? Voor een gewaardeerde werkgever in de regio van Goirle zijn wij op zoek naar een junior/medior Back-end Developer met affiniteit met MS Acess. Samen met een vooruitstrevend team ben je verantwoordelijk voor het ontwikkelen van maatwerk software voor hun klanten. Je hebt kennis of ervaring van SQL en affiniteit met MS Acess. Je bent klantvriendelijk en flexibel ingesteld en vindt het leuk om klanten te

Bekijk vacature »

Ervaren Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als ervaren developer zul je hiernaast ook andere developers assisteren en waar nodig de leiding nemen in het project.

Bekijk vacature »

Medior/Senior Software Developers gezocht in de Ra

Functie Op dit moment staan er posities open voor de volgende functies: Front-end, Back-End & Fullstack software developer. Als Front-End software developer werk je met JavaScript en de bijbehorende technologieën zoals TypeScript, Angular, React, Vue en Svelte. Als Back-End software developer ben je bezig in NodeJS en doe je dit met behulp van AWS, NoSQL, REST en GraphQL. Je krijgt leuke en uitdagende opdrachten met een gemiddelde duur van anderhalf jaar. Hier werk je in een team met andere IT’ers aan het ontwikkelen en verbeteren van software. Je wordt begeleid door een accountmanager die fungeert als jouw aanspreekpunt. Het team

Bekijk vacature »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! Voor een opdrachtgever in omgeving Moordrecht zijn wij op zoek naar een programmeur. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op

Bekijk vacature »

Software Programmeur

Functie omschrijving Ben jij op zoek naar een organisatie waar je samen met een team werkt aan iets moois en waar je naast hard werken ook hard kunt lachen? Dan ben je hier aan het juiste adres! Voor een informeel IT-bedrijf in omgeving Wassenaar zijn wij op zoek naar versterking. Ben jij op zoek naar een nieuwe uitdaging als Software Programmeur lees dan snel verder! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed

Bekijk vacature »

Robot Programmeur

Een verantwoordelijke baan met leuke uitdagingen. Heb jij ervaring met het programmeren van robots? Kan jij goed samenwerken met collega's die verschillende specialisaties hebben? Ben je oplossingsgericht, analytisch en flexibel? Ga dan aan de slag als Robot Programmeur bij Gibas in Nijkerk! Als Robot Programmeur kom je te werken bij Gibas. Dat betekent dat je gegarandeerd meewerkt aan unieke oplossingen in productieprocessen. Bij elk project moet er opnieuw geëngineerd en geprogrammeerd worden. Dat maakt jouw werk uitdagend! Voordat je robots gaat programmeren komt er het volgende bij kijken: De opdracht gaat van de afdeling Sales naar de afdeling Operations door

Bekijk vacature »

Front End Developer React Vue

Dit ga je doen Meewerken aan de implementaties en ontwikkeling van nieuwe functionaliteiten van de webapplicaties; Ontwikkelen met o.a. React en Vue en HTML/CSS, ook krijg je in verband met de samenwerking ook affiniteit met de backend Ruby on Rails; Ontwikkeling aan de front end voor de koppelingen tussen de diverse systemen; Ontwerpen van interfaces en een bijdrage leveren aan de gebruikerservaring; Zorgdragen voor hoge kwaliteit van code en jezelf (en anderen) blijven verbeteren; Als Senior Front End Developer begeleid je zelf ook FE-development projecten, hierin leid je de projecten en pak jij het initiatief op (bv integratieprojecten). Hier ga

Bekijk vacature »

Senior Front-End Developer

Als Senior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Senior Front-End Developer bij Coolblue? Als Senior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Senior Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Nadenken

Bekijk vacature »

Senior .NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Pagina: 1 2 volgende »

Ozzie PHP

Ozzie PHP

18/04/2015 18:17:22
Quote Anchor link
Hallo allemaal,

Ik vraag me iets af. Stel ik maak een website en op die website kan ik fotoalbums plaatsen. Nu is de server waar die website op staat slechts 10 mb (dit is slechts even als voorbeeld). Nu is na een paar albums die server dus al vol.

Ik kan nu (grofweg) 2 dingen doen. Ik vergroot de capaciteit op de server naar 20 mb, maar dan heb ik over een tijdje hetzelfde probleem. Nu vraag ik me af of het mogelijk is om servers "bij te prikken". Dus stel, de eerste 10 mb zijn vol, dan hang ik er een nieuwe server bij, waardoor ik dus 20 mb heb. Maar nu komt het. Ik heb maar 1 website url, en die kan niet bij 2 servers terecht komen. De servers moeten dus met elkaar "praten". Server 1 moet dus tegen server 2 zeggen dat hij een fotoalbum nodig heeft wat op server 2 staat. Volgens mij zijn hier hardwarematige oplossingen voor, maar wat ik me vooral afvraag is of je hier in je code op de een of andere manier rekening mee moet houden. Of gaat dat allemaal hardwarematig en merk je er eigenlijk helemaal niks van dat je met 2 servers werkt?
 
PHP hulp

PHP hulp

27/04/2024 16:50:22
 
Thomas van den Heuvel

Thomas van den Heuvel

18/04/2015 20:04:53
Quote Anchor link
Zijn de foto's voor iedereen vrij op te vragen?
 
Ozzie PHP

Ozzie PHP

18/04/2015 21:12:17
Quote Anchor link
>> Zijn de foto's voor iedereen vrij op te vragen?

Geen idee. Maakt dat wat uit? :)

Dit is puur een voorbeeld hè. De vraag is eigenlijk of je 1 website kunt "uitsmeren" over meerdere servers, en zo ja ... of je daar dan in de code op de een of andere manier rekening mee moet houden.
 
Thomas van den Heuvel

Thomas van den Heuvel

18/04/2015 21:57:26
Quote Anchor link
Je kunt media toch prima op een andere domein stallen?

vanaf domein A: <img src="http://domein.B/whatever.jpg" />

Mijn vraag is in die zin relevant dat je misschien een soort van laag moet schrijven om de afbeeldingen te ontsluiten voor specifieke gebruikers.

Volgens mij bestaat er ook hosting waarbij diskruimte etc. automatisch bijgeschaald kan worden? Maakt Microsoft niet al tijden reclame met zo'n platform (Azure?)?

Al gezocht op media server oplossingen?
 
Ozzie PHP

Ozzie PHP

18/04/2015 22:06:38
Quote Anchor link
>> vanaf domein A: <img src="http://domein.B/whatever.jpg" />

Maar dat is dus wat ik juist niet bedoel. Ik bedoel een hardware matige oplossing, die "weet" dat fotoalbum 9 op server 1 staat en fotoalbum 10 op server 2.

Ander voorbeeld dan. Stel ik maak één site, maar mijn profiel staat op server 1 en jouw profiel staat op server 2. Als ik surf naar www.eenofanderesite.nl/ozzie dan weet ie automatisch dat ie op server 1 moet kijken, en als ik surf naar www.eenofanderesite.nl/thomas, dan weet ie automatisch dat die gegevens op server 2 staan. Maar dus zonder dat ik dit in de code aangeef.
 
- Ariën  -
Beheerder

- Ariën -

18/04/2015 22:37:57
Quote Anchor link
Volgens mij kan je meerdere (file)servers binnen een netwerk met elkaar koppelen zodat je /mnt/fileserver1 /mnt/fileserver2 hebt. Ik heb geen idee op welke manier dit precies gaat, hoewel een symlink mij iets te simpel lijkt.
 
Ozzie PHP

Ozzie PHP

18/04/2015 22:45:34
Quote Anchor link
Tja, ik ben ook wel benieuwd hoe dat werkt, maar eigenlijk zou ik dus willen weten of zoiets kan zonder dat je er in de code rekening mee hoeft te houden. Ik meen me vaag iets te herinneren van load balancers of iets dergelijks maar misschien heeft dat hier helemaal niks mee te maken.

Ander voorbeeld. Denk aan Facebook of een Instagram. Ik neem aan dat niet alle content op 1 fysieke server staat, maar dat alles is verspreid over meerdere servers. Stel nu Pietje logt in op Facebook. Hoe weet de server die de request ontvangt dan waar de server met map "pictures/pietje23532" te vinden is?
 
- Ariën  -
Beheerder

- Ariën -

18/04/2015 22:51:25
Quote Anchor link
Ik zou zou haast denken dat de URL's eerst via een rewriterule via PHP gaan, waarna gekeken wordt op welke server ze staan, maar ik vraag me af of dat wel goed performance heeft.
 
Ozzie PHP

Ozzie PHP

18/04/2015 22:57:17
Quote Anchor link
Mja, kweet het ook niet eigenlijk :-/

Ik heb ooit een docu over Instagram of Facebook gezien en daar staan echt miljarden foto's op de servers. Dat gaat met een paar miljoen per uur. Dat kan nooit allemaal op 1 server, maar hoe weet men dan waar er plek vrij is? Ik hoop dat iemand dit eens kan toelichten. Lijkt me wel erg interessant.
 
Bart V B

Bart V B

19/04/2015 07:02:22
Quote Anchor link
Dat klopt dat dat load balance heet.
Hoe dat ongeveer werkt kan je hier lezen: http://tweakers.net/reviews/301/loadbalancing-bij-tweakers-punt-net.html
Misschien niet de meest nieuwe tekst maar het plaatje maakt het wel duidelijk.
 
Ozzie PHP

Ozzie PHP

19/04/2015 14:56:26
Quote Anchor link
Dankjewel Bart. Zo'n loadbalancer setup is dus een dure aangelegenheid zie ik. Voor de wat kleinere websites kun je dan dus beter gewoon je servercapaciteit opschroeven in plaats van met meerdere servers te werken?

Waar ik wel nog steeds benieuwd naar ben, is of je er in de code rekening mee moet houden. Dus stel jouw Facebook-foto's staan ergens op een server in de wereld in een mapje bartvb345345/pictures/. Hoe weet de primaire server die de request ontvangt dan op welke server jouw foto's zijn opgeslagen? Regelt de hardware dat? Of moet je daar in je code instructies voor geven? Dit laatste lijkt me namelijk haast ondoenlijk.
 
Yoop Overmaat

Yoop Overmaat

19/04/2015 15:01:18
Quote Anchor link
Zoiets is te doen onder php als dit, het is een afgeleide van het Linux/Unix verhaal genaamd df -h of diskfree human readable;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
// $df contains the number of bytes available on "/"
$df = disk_free_space("/");

// On Windows:
$df_c = disk_free_space("C:");
$df_d = disk_free_space("D:");
?>
 
Ozzie PHP

Ozzie PHP

19/04/2015 15:29:11
Quote Anchor link
Thanks Yoop, maar is dat ook noodzakelijk om in je code te regelen? Dat is eigenlijk mijn vraag. Of regelt de hardware dit automatisch? Laat ik het anders vragen: kan hardware simuleren dat er maar 1 server is, terwijl het er in werkelijkheid honderden zijn? Kan je met hardware "faken" dat die honderden afzonderlijke servers als 1 server worden behandeld? Dus stel je wilt foto's ophalen uit het mapje yoopovermaat/pictures, dat die hardware dan automatisch ziet, aha ... dat mapje staat op server 68 in het serverpark in Los Angeles.
 
Ward van der Put
Moderator

Ward van der Put

19/04/2015 17:16:51
Quote Anchor link
Je kunt verschillende scenario's volgen.
Deze slideshare noemt de belangrijkste inclusief voor- en nadelen:

http://www.slideshare.net/nixnutz/load-balancing-for-php-and-mysql
 
Ozzie PHP

Ozzie PHP

19/04/2015 20:03:46
Quote Anchor link
Thanks Ward, nogal technisch allemaal terwijl ik eigenlijk maar 1 vraag heb, en dat is of je er in de code rekening mee moet houden, of is alles via de hardware te regelen?

Laat ik de vraag nog eens wat interessanter stellen. Stel je begint met een hele kleine website, en die website wordt dusdanig groot dat je met meerdere servers wilt gaan werken. Moet je dan al je PHP code gaan aanpassen?
 
Aad B

Aad B

19/04/2015 20:14:32
Quote Anchor link
==>> De servers moeten dus met elkaar "praten". Server 1 moet dus tegen server 2 zeggen dat hij een fotoalbum nodig heeft wat op server 2 staat.

In geval van Linux of Unix servers kan je storage op NFS protocol koppelen. Hier al eerder genoemd, mounten van de storage van server B op server A. Je moet dan wel root rechten hebben op beide servers. Heb je dat niet dan beland je in andere meer knullige oplossingen die feitelijk geen oplossing zijn. Het Network File System, of kortweg NFS, is een netwerkbestandssysteem dat oorspronkelijk werd ontworpen door Sun Microsystems in 1984 voor hun eigen Unix-werkstations. NFS maakt het mogelijk om bestanden op te vragen over het netwerk op dezelfde manier als men dit zou doen voor bestanden op de lokale schijf. NFS bestaat enkel uit een bestandssysteem en heeft niets te maken met procesbeheer of geheugenbeheer.

==>>Laat ik de vraag nog eens wat interessanter stellen. Stel je begint met een hele kleine website, en die website wordt dusdanig groot dat je met meerdere servers wilt gaan werken. Moet je dan al je PHP code gaan aanpassen?

In dit geval moet je echt gaan load balancen en met de juiste load balancing hoef je GEEN code aan te passen. Hierbij kan je denken aan een hardware loadbalancer op poort 80/433 die de load naar verschillende apache servers delegeert. De onderliggende storage kan via NFS lopen maar ook op andere redundante manieren zoals Business Continuity and Data Protection van EMC. Hetzelfde geldt grofweg voor MySQL maar komt iets meer bij kijken qua beheer.
Gewijzigd op 19/04/2015 21:35:56 door Aad B
 
Yoop Overmaat

Yoop Overmaat

19/04/2015 21:21:18
Quote Anchor link
Ozzie PHP op 19/04/2015 15:29:11:
Thanks Yoop, maar is dat ook noodzakelijk om in je code te regelen? Dat is eigenlijk mijn vraag. Of regelt de hardware dit automatisch? Laat ik het anders vragen: kan hardware simuleren dat er maar 1 server is, terwijl het er in werkelijkheid honderden zijn? Kan je met hardware "faken" dat die honderden afzonderlijke servers als 1 server worden behandeld? Dus stel je wilt foto's ophalen uit het mapje yoopovermaat/pictures, dat die hardware dan automatisch ziet, aha ... dat mapje staat op server 68 in het serverpark in Los Angeles.


Jup dat zul je in je code moeten regelen maar zo heel erg veel werk is het niet. Je hebt allereerst een toegangspunt nodig. Main entrance waar je je afbeelding upload.

Vanaf hier krijg je te maken met het df -h verhaal.

-> verbinding databases
-> query (welke server = het minst bezet qua schijfruimte) schrijf hem daar weg
-> wegschrijven van het plaatje in een directory
-> Adres van het plaatje wegschrijven in een database id, naam, serveradres
-> Opvragen van het plaatje via een link in html -> link -> php-> query....
 
Aad B

Aad B

19/04/2015 22:24:28
Quote Anchor link
@Yoop: Op een x moment is server A bezet qua schijfruimte en blijf je dan voor elke foto dan nog deze procedure uitvoeren of verander je dan je code weer omdat server A volledig bezet qua schijfruimte??
 
Ozzie PHP

Ozzie PHP

19/04/2015 22:41:04
Quote Anchor link
Yoop, wat Aad zegt is wat ik bedoelde. Dat lijkt me ook veel handiger. In je code maakt het dan niet uit op welke server iets staat. De code moet enkel zeggen: sla plaatje x op in map "pictures", en die load balancer die moet dan bepalen op welke server dat plaatje wordt gezet en waar het moet worden opgehaald.

Aad, beschrijf ik het bovenstaande zo goed? Klopt het wat ik zeg? Ik heb er zelf geen kaas van gegeten, maar het is fijn om te weten dat als ik ooit een site hebt die uit de klauwen groeit, ik niet alle code hoef aan te passen. Waarschijnlijk moet ik dan wel een expert inhuren om zo'n load balancer in te stellen :)
 
John D

John D

20/04/2015 09:38:52
Quote Anchor link
@Ozzie: Een load balancer plaats je doorgaans aan de voorkant, een load balancer (hardware) verdeelt het verkeer (http/https) over meerder apache servers (hardware). De apache servers spreken een gezamenlijke grote storage (disks/disk array) aan en slaan daar de plaatjes centraal op (storage server). De MySQL data wordt op zich weer bediend door een separate MySQL server met eigen storage (disks).

In jouw eerdere voorbeeld/vraag (server A server B) is het zinvol om een storage koppeling met een NFS mount te realiseren.
Gewijzigd op 20/04/2015 09:40:40 door John D
 
Ivo P

Ivo P

20/04/2015 09:41:24
Quote Anchor link
maar heb je het over een server die te klein wordt voor je site, of over een goedkoop hostingpakketje?

20MB, wat je als voorbeeld aanhaalt, is namelijk niet zo heel erg veel.

Had je het over 1TB wat niet voldoende is, is het wat anders. Want een server met maar 20MB aan boord: dat was iets uit de jaren 90.

En als je 20MB vol is, is het gewoon tijd voor een wat groter hostingpakket. Of gaat het erom dat de hosting voor 20MB gratis/1euro is?
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.