boeken brengen geen wijsheid!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior/Senior Front-end Developers gezocht (Utrech

Functie Het team bestaat uit 10+ gespecialiseerde (veel senior) front-end ontwikkelaars en ontwerpers die werken aan projecten voor klanten van verschillende groottes (kan twee jaar bezig zijn met 1 klant). Je helpt klanten met ingewikkelde front-end vraagstukken, hierbij kun je denken aan: UX/UI design, CI/CD, architectuur en integratie met back-end systemen. De werkzaamheden verricht je op locatie bij de klant, dit is vaak in de Randstad. De organisatiestructuur is plat en er heerst een informele sfeer, zo kun je met vragen dus terecht bij de directie. Er wordt veel nadruk gelegd op het bevorderen van persoonlijke ontwikkeling door middel van

Bekijk vacature »

Developer Full Stack

Functie omschrijving Developer gezocht! Ben jij een enthousiaste developer die graag wil bijdragen aan ontwikkelingen binnen een mooie organisatie? Solliciteer dan snel. Wij zijn op zoek naar een Full Stack Developer uit de regio Nijkerk die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een SaaS applicatie. Je moet beschikken over beheersing van zowel de Nederlandse als Engelse taal aangezien je samen met de klant gaat werken. Bedrijfsprofiel Je komt te werken binnen een echt familiebedrijf dat al sinds 1925 actief is binnen de FMCG branche. Het bedrijf heeft 40 medewerkers en er heerst een platte communicatiestructuur waarbij

Bekijk vacature »

Full stack developer

Functie Binnen een ontzettend stimulerende werkomgeving kom jij te werken in een software team van 14 developers. Met ontzettend stimulerend bedoel ik een modern pand, wat voorzien is van alle nodige soft- en hardware, zodat jij jouw werk goed kan uitvoeren. Daarnaast zitten ze in een bos, waardoor je in een groene omgeving rustig kunt werken. Het team bestaat uit front end, back end en full stack developers. Jij krijgt dus de keuze hier waar jij jezelf het liefst op zou richten, maar de voorkeur gaat uit naar back end. Er wordt hier Scrum (agile) gewerkt in multidisciplinaire teams met

Bekijk vacature »

Ervaren C#.NET programmeur

Functieomschrijving Voor een moderne werkgever in regio Prinsenbeek zijn wij op zoek naar een ervaren C#.NET programmeur die graag de uitdaging aangaat. Je houdt je bezig met het ontwikkelen van maatwerk webapplicaties voor diverse klanten, waarbij complexe processen optimaal worden ondersteund. Verder ziet jouw takenpakket er als volgt uit: Ontwikkelen en onderhouden van C#.NET-applicaties; Schrijven van hoogwaardige, herbruikbare codes; Schrijven van technische documentatie en gebruikershandleidingen; Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen; Troubleshooten en oplossen van bugs in softwaretoepassingen; Werken met databases en dataopslagoplossingen; Implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens. Bedrijfsprofiel

Bekijk vacature »

Full stack developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Lead Front-end developer

Functie Hun huidige applicatie worden ontwikkeld in o.a. React, Redux, TypeScript. Ze werken graag met de nieuwste technieken en tooling en zoeken ook developers die hier proactief op zoek naar gaan. Als senior/lead developer ben je een kartrekker in het team. Naast het meedenken over bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Zo kun je bijvoorbeeld 1 dag in de week met 2 collega’s bezig zijn om samen met hen te kijken naar hun ontwikkeling, doelstellingen en uiteraard de gewenste begeleiding hierin. Hiernaast sta je als

Bekijk vacature »

Junior PHP ontwikkelaar

Functie Wij hebben onlangs onze eerste collega’s aangenomen, waardoor ons development team momenteel uit 4 personen bestaat. We bouwen onze software op basis van een PHP-framework (wat op zichzelf een Symfony framework is). Qua ontwikkeling focussen wij ons op 3 focus velden; – API-ontwikkeling/ Component Creatie – Implementatie – Framework ontwikkeling; het toevoegen van nieuwe functionaliteit of interne microservices Onze senior software engineer focust zich momenteel op de laatste twee punten, maar wij komen handen te kort op het eerste veld. Daarom zijn wij op zoek naar een enthousiaste junior software engineer die graag de kneepjes van het vak wil

Bekijk vacature »

Back-end Developer Java

Dit ga je doen Het (door)ontwikkelen van een zelfgebouwde applicatie in Java, Spring Framework, SQL, HTML, CSS en Javascript; End-to-end beheer m.b.t. de applicatie en koppelen van applicaties binnen het landschap; Ontwikkelen van rapportages voor de interne organisatie; Ontwikkelen van aanvullende functionaliteiten m.b.t. de applicatie; Uitvoeren van testen en code reviews. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die medische gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen en verbeteren van de kwaliteit van de zorg in heel Nederland.

Bekijk vacature »

App Developer

Samen werken aan een gezonder Nederland en toekomstbestendige zorg voor iedereen. Dat is de impact die jij kan hebben als App Developer bij VGZ. Wil jij een bijdrage leveren aan een maatschappij waarin iedereen zich thuis voelt? Bekijk dan de vacature. Uit onderzoek van Computable is VGZ verkozen tot ‘beste niet-ICT werkgever voor ICT’ers van Nederland’ Hoe ook jij het verschil maakt Als App developer werk jij aan het belangrijkste communicatiekanaal van VGZ, namelijk de App! Als App developer bij VGZ maak je onderdeel uit van een van onze App-teams. Met een goede mix van kennis en ervaring zet je

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »

Fullstack Webdeveloper .NET Azure Big Data SaaS

Bedrijfsomschrijving Deze klant van ons is recentelijk onderdeel geworden van een grote moederorganisatie, ze zijn dé partij als het gaat om software maken voor ambitieuze ondernemers, ze maken maatwerk software. Vanuit het fantastisch vormgegeven hightech gebouw te Rotterdam centrum werken ze met zo'n 40 medewerkers aan hoogwaardige software gericht op financiële data, betaalinformatie, maar ook backoffice software. De software wordt webbased, desktop en mobile aangeboden en er worden zeer moderne ontwikkeltechnieken toegepast. Je moet dan denken aan patroonherkenning, Big Data, Machine Learning en OCR. Als Developer, ongeacht je niveau, ga je hier te maken krijgen met de allerleukste kant van

Bekijk vacature »

Ervaren Full-Stack PHP Developer

Functieomschrijving Gezocht! Ervaren PHP Developer! Voor een organisatie in de regio Harderwijk zoeken wij een ervaren PHP Developer die het IT team van dit bedrijf gaat versterken. We zijn op zoek naar een enthousiaste en breed georiënteerde IT-er die het innovatieve bedrijf nog een stap verder kan brengen. Voor deze functie zoeken wij iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je werkt samen met een externe ontwikkelpartij en kunt hun dus uitdagen op het geleverde werk. Het schrijven van concepten aan de AI en hardware kant valt onder je verantwoordelijkheden. Het bedrijf noemt zichzelf een

Bekijk vacature »

Social Media Specialist

Social Media Specialist locatie: Rotterdam (Zuid Holland) Wij zoeken op korte termijn een nieuwe collega, een social media specialist/ adviseur sociale media (24 uur), voor ons sprankelende team Communicatie van CJG Rijnmond. Onze focus ligt op het informeren en binden van onze in- en externe klanten en stakeholders en het versterken van onze naamsbekendheid en zichtbaarheid. Dat doen we in nauwe samenwerking met elkaar. Over de functie Ons team bestaat uit 7 communicatieprofessionals met ieder een eigen expertise. Als lid van het online team ben je verantwoordelijk voor het ontwikkelen, uitvoeren en analyseren van onze socialemediastrategie. Ook stel je campagnes

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Software Ontwikkelaar PHP gezocht! Wij zijn op zoek naar een ervaren PHP Software Ontwikkelaar om het team van onze opdrachtgever te versterken! De ideale kandidaat zal fungeren als verlengstuk van klanten en complexe technische vraagstukken met enthousiasme benaderen. Naast het werken met de nieuwste technologieën, ben je in staat om aan meerdere projecten tegelijkertijd te werken. Als je deze uitdaging aangaat, werk je nauw samen met front-end developers en draag je bij aan het realiseren van grote veranderingen bij klanten. Het bedrijf zoekt iemand die zichzelf graag uitdaagt en altijd streeft naar het leveren van de beste resultaten.

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 »
Peter Arendse

Peter Arendse

13/03/2008 12:36:00
Quote Anchor link
Beste allemaal,

IK ben bezig met een nieuwsberichten systeempje voor de website van de voetbalvereniging.
Ik vond in het boek "PHP 4 en 5 zonder stress" de uitleg over een systeem.
Nu staan er wel veel meer fouten in deze boeken, maar nu zit ik er wel mee.
Er wordt gebruik gemaakt van een create tabel zoals hier onder, maar phpmyadmin geeft hier een opmerking bij(maar maakt de tabel wle aan).
Wat is er fout aan de volgende code, deze komt rechtstreeks uit het boek:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
CREATE TABLE news(
news_ID int(11)  NOT NULL auto_increment,
news_header varchar(120) Not Null,
news_main text NOT NULL,
news_datetime datetime DEFAULT '0000-00-00 00:00:00'NOT NULL,
PRIMARY KEY (news_ID),
KEY news_ID (news_ID),
UNIQUE news_ID_2 (news_ID)
);


Opmerking phpmyadmin:
PRIMARY en INDEX sleutels behoren niet beide ingesteld te zijn voor de kolom `news_ID`
 
PHP hulp

PHP hulp

24/12/2024 00:48:37
 
Frank -

Frank -

13/03/2008 12:56:00
Quote Anchor link
Tja, het is inderdaad wat brak. Hier worden 3 indexen gebruikt daar waar je slechts 1 index nodig hebt. Een primary key is namelijk een index met een unique-constraint. Een aparte unique is dus overbodig, evenals nogmaals een index. Een index is namelijk al een index, ja toch?

Tip: Gebruik nooit een DEFAULT samen met een NOT NULL. Dat is tegenstrijdig, NOT NULL eist een waarde en DEFAULT eist geen waarde, stelt dan zelf een waarde in. Wat wil je nu? Verplicht wat eigenlijk niet verplicht is, dat werkt niet.
 
Arjan Kapteijn

Arjan Kapteijn

13/03/2008 12:57:00
Quote Anchor link
Een primary 'auto-increment' is per definitie toch een index en uniek?
 
Frank -

Frank -

13/03/2008 13:10:00
Quote Anchor link
Arjan Kapteijn schreef op 13.03.2008 12:57:
Een primary 'auto-increment' is per definitie toch een index en uniek?
Wel een index, niet uniek:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
CREATE TABLE test (
  id int(11) NOT NULL,
  auto int(11) NOT NULL auto_increment,
  PRIMARY KEY  (id),
  KEY auto (auto)
) ENGINE=InnoDB;

Je kunt nu gerust dubbele waardes invoeren in de kolom 'auto', dat is geen enkel probleem:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
INSERT INTO test(id, auto) VALUES (1,4);
INSERT INTO test(id, auto) VALUES (2,4);
INSERT INTO test(id, auto) VALUES (3,4);

De auto_increment wordt zelfs niet gebruikt!

Edit: De auto_increment wordt overigens wel opgehoogd, ook al gebruik je hem niet... Het blijft een bijzonder ding, dat MySQL!
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Niek Kasius

Niek Kasius

13/03/2008 15:41:00
Quote Anchor link
Tip: Gebruik nooit een DEFAULT samen met een NOT NULL. Dat is tegenstrijdig, NOT NULL eist een waarde en DEFAULT eist geen waarde, stelt dan zelf een waarde in. Wat wil je nu? Verplicht wat eigenlijk niet verplicht is, dat werkt niet.

wat bedoel je daarmee? pgFrank!

dit is het resultaat als je dat doet.
SQL-query:

CREATE TABLE `gboek` (

`id` int( 3 ) NOT NULL AUTO_INCREMENT ,
`titel` varchar( 40 ) NOT NULL '',
`naam` varchar( 40 ) NOT NULL '',
`bericht` text NOT NULL '',
`datum` varchar( 20 ) NOT NULL '',
`ip` varchar( 20 ) NOT NULL '',
PRIMARY KEY ( `id` )
) TYPE = MYISAM ;


MySQL retourneerde:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''',
`naam` varchar(40) NOT NULL '',
`bericht` text NOT NULL '',
`datum`' at line 3
 
Frank -

Frank -

13/03/2008 15:44:00
Quote Anchor link
@Niek: Wat doen al die quotes '' in jouw query? die horen daar niet te staan en zorgen ook voor de foutmelding.

En waarom wederom de blunder om een datum in een VARCHAR te zetten?

Tip: Duik eens in de handleiding, daar staat die ook allemaal in.
 
Peter Arendse

Peter Arendse

13/03/2008 18:49:00
Quote Anchor link
Snik, nu weet ik nog de juiste tabel niet.
Of zou die van mij, ondanks de brakheid toch moeten werken?
Ik vraag het maar even, voordat ik zo het halve boek heb over getypt en het script werkt niet!
 
Joren de Wit

Joren de Wit

13/03/2008 18:57:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
CREATE TABLE news
(
    news_id int(11) NOT NULL auto_increment,
    news_header varchar(120) NOT NULL,
    news_main text NOT NULL,
    news_datetime datetime NOT NULL,
    PRIMARY KEY (news_ID)
);

Dit is een prima query om je nieuws tabel aan te maken.
 
Frank -

Frank -

13/03/2008 18:59:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
CREATE TABLE news(
  news_ID int  NOT NULL auto_increment,
  news_header varchar(120) Not Null,
  news_main text NOT NULL,
  news_datetime datetime DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (news_ID)
);


Edit: ;)
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Peter Arendse

Peter Arendse

13/03/2008 19:01:00
Quote Anchor link
Toppie Blanche en Frank,

Even mijn administratie afmaken van vandaag en ik ga er direkt mee aan het werk.
Ik ben een website aan het maken voor de voetbalvereniging en heb al veel dingen gebruikt die we hier behandeld hebben.
Zo heb ik het gastenboek gemaakt met de leerstof van mijn online reserveringsscript van een tijdje geleden!
zie www.rcz.nu
Gewijzigd op 01/01/1970 01:00:00 door Peter Arendse
 
Frank -

Frank -

13/03/2008 19:05:00
Quote Anchor link
Offtopic: Ik probeerde nog even als default datum de functie NOW() aan te roepen (dus de datum van vandaag als default), maar dat slikt MySQL weer eens niet. Het is niet eens een bug van PhpMyAdmin, die verdacht ik daar eerst van.

Het blijft behelpen met MySQL...
 
Peter Arendse

Peter Arendse

13/03/2008 22:30:00
Quote Anchor link
Alles gaat voorspoedig(inclusief wat onbenulligheden van mij zelf) maar nu stuit ik op het volgende.
Volgend het boek haal ik de nieuws records op de volgende manier uit de db en dat werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$mysql_id
=mysql_connect($dbhost,$dbuser,$dbpass)
or die("kan geen verbinding maken met de de database: ".mysql_error());
mysql_select_db($db, $mysql_id);
$news_SQL = "SELECT
news_ID,
news_header,
news_main,
DATE_FORMAT(news_datetime , '%d %m %Y') AS datum_NL,
DATE_FORMAT(news_datetime , '%H:%i') AS tijd_NL
FROM
news
ORDER BY
news_datetime
DESC"
;
$news_result = mysql_query($news_SQL);
?>

<?php
while($news = mysql_fetch_array($news_result)){

if(strlen($news['news_main']) > 100){
$news['news_main'] = substr($news['news_main'], 0, 80) . ">>>
<a href=nieuws/news.php?news_ID="
. $news['news_ID'] . "><b>lees verder</b></a>";
}


?>


Als ik nu op de link "lees verder" klik, krijg ik de volgende fout:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/htdocs/rczy/nieuws/news.php on line 19

terwijl ik de volgende code toch echt teken voor teken uit het oek heb over getypt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$mysql_id
=mysql_connect($dbhost,$dbuser,$dbpass)
or die("kan geen verbinding maken met de de database: ".mysql_error());
mysql_select_db($db, $mysql_id);
$news_SQL = "SELECT
news_ID,
news_header,
news_main,
DATE_FORMAT(news_datetime , '%d %m %Y') AS datum_NL,
DATE_FORMAT(news_datetime , '%H:%i') AS tijd_NL
FROM
news
WHERE
news_ID=$news_ID"

;
$news_result = mysql_query($news_SQL);
$news = mysql_fetch_array($news_result);
?>


Wat gaat er mis?
 
Henk PHP

Henk PHP

13/03/2008 22:42:00
Quote Anchor link
De variabel $news_result is niet geldig om te fetchen dus waarschijnlijk is de query mislukt.
Als je van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$news_result = mysql_query($news_SQL);

dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$news_result = mysql_query($news_SQL) or die(mysql_error());

maakt dan krijg je de foutmelding waarom het niet lukt.

Maar hoe kom je $news_ID?
Ik gok je dat je $_GET['news_ID'] wilt gebruiken.
Dan moet je query zoiets worden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
$news_SQL = "SELECT
news_ID,
news_header,
news_main,
DATE_FORMAT(news_datetime , '%d %m %Y') AS datum_NL,
DATE_FORMAT(news_datetime , '%H:%i') AS tijd_NL
FROM
news
WHERE
news_ID= '" . mysql_real_escape_string($_GET['news_ID']) . "'"
;


De mysql_real_escape_string zorgt dat mensen niet met je query kunnen gaan kloten (er kunnen btw nog wel wat meer controles op).

Beetje raar dat dat niet in het boek staat trouwens...
Gewijzigd op 01/01/1970 01:00:00 door Henk PHP
 
Peter Arendse

Peter Arendse

13/03/2008 22:53:00
Quote Anchor link
Het nieuws systeem wordt alleen gebruikt door de webmasters van de site om bijvoorbeeld afgelastingen te melden of andere weterigheidjes te melden.
Het is geen gastenboek.
IK heb je code uitgevoerd en het script geeft nu de volgende melding:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 10

Op lijn 10 staat bij mij:

news_main,
 
Henk PHP

Henk PHP

13/03/2008 23:01:00
Quote Anchor link
Sorry foutje I guess.
Try this:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
$news_ID = $_GET['news_ID'];
$news_SQL = "SELECT
news_ID,
news_header,
news_main,
DATE_FORMAT(news_datetime , '%d %m %Y') AS datum_NL,
DATE_FORMAT(news_datetime , '%H:%i') AS tijd_NL
FROM
news
WHERE
news_ID = '" . mysql_real_escape_string($news_ID) . "'"
;
Gewijzigd op 01/01/1970 01:00:00 door Henk PHP
 
Frank -

Frank -

13/03/2008 23:01:00
Quote Anchor link
Echo de query eens, dan wordt het een stuk duidelijker. Ik vermoed trouwens dat $news_ID leeg is, kijk daar eerst eens naar.
 
Peter Arendse

Peter Arendse

13/03/2008 23:09:00
Quote Anchor link
Sorry Frank, maar het is al gelukt op de manier die Henk voorstelde.
IK vind het wel verschrikkelijk vervelend dat ik uit een boek met zoveel fouten moet proberen om de tecnieken onder de knie te krijgen.
Het is geschreven door Jochen Franke en heet php4 zonder stress, maar ik zit gvd te zweten achter mijn toetsenbord oomdat niets lukt!!!!
 
Joren de Wit

Joren de Wit

14/03/2008 09:14:00
Quote Anchor link
@Peter: je hoeft dat boek natuurlijk niet per se te gebruiken, je kunt het natuurlijk ook op de brandstapel gooien ;-)

Op internet zijn ook genoeg tutorials en voorbeelden te vinden waar je je voordeel mee zou kunnen doen. Dus ga niet alleen af op de informatie in je boek, maar probeer dat ook te staven aan de hand van beschikbare voorbeelden.
 



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.