Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2716 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  288  289  290  ..  486  487  488  489  490  491
Auteur Sujet :

les développeurs de forums, les 3/4 des forums sont down /o\

n°1176443
belgique
Posté le 15-08-2005 à 12:05:58  profilanswer
 

Reprise du message précédent :
Bah je sais pas moi, je me demandais ce qui pouvait les intéresser :D

mood
Publicité
Posté le 15-08-2005 à 12:05:58  profilanswer
 

n°1176453
docmaboul
Posté le 15-08-2005 à 12:25:37  profilanswer
 

belgique a écrit :

Je suppose que les systèmes de caches, de copy on write bit et tout ça devraient intéresser pas mal de monde ;o


 
Ben, le copy on write, dans le principe, il n'y a rien de plus simple. Il suffit de dupliquer les données avant de les modifier (et de faire les modifs sur la copie, bien évidemment). Après, on peut faire un système plus évolué afin de déterminer quand il est nécessaire de faire cette copie et quand ce n'est pas le cas, mais ça implique de se faire chier avec de la synchronisation.
 
Pour le cache, c'est assez simple. Si on fait ça avec de la shared, il faut se coder un allocateur qui va retourner des offsets mémoire relatifs à l'adresse du segment de shared (implémenter l'allocateur est la seule difficulté sérieuse). Ensuite, il faut allouer les données en cache en passant via cet allocateur. On se récupère un offset qu'il faut convertir en adresse mémoire. Ce travail (conversion offset vers adresse) est à faire en permanence. En plus clair, on n'utilise plus directement des pointeurs mais des offsets à partir desquels on déduit les pointeurs. Le coût d'un tel système réside au niveau de l'allocation et de cette indirection supplémentaire. La limite est au niveau de cette unique segment de shared (c'est un peu chiant d'en utiliser plusieurs) qu'on ne peut pas réallouer simplement et efficacement. La complexité réside au niveau de l'allocateur et de la cohérence entre le cache et le sgbd (travail en double). Par contre, le gain est énorme (pas de com réseau, pas d'IO disque, pas de cpu utilisée pour récupérer toujours les mêmes données, ...).

n°1176500
pospos
Posté le 15-08-2005 à 15:24:12  profilanswer
 

docmaboul a écrit :

Qu'est-ce que vous lui reprochez au juste?


 
Cher Docteur Maboule.
Tout d'abord j'ai hier parcouru rapidement ce topic (essentiellement les vieux messages) et je dois dire que j'ai particulierement apprécié vos interventions (surtout votre fake de fake). Je trouve votre acharnement à vouloir produire un forum totalement optimisé tout à fait rafraichissant et plaisant dans ce monde de design pattern et d'UML. :jap:  
 
Pour en revenir à votre question, je n'ai jamais lu le code d'apache, mais j'en connais l'architecture et j'ai pu comparer ses perfs à d'autres server (je parle de pages statiques uniquement).
IIS, pour ne pas le citer, se montre déjà bien plus véloce, et d'autres gros server commerciaux comme Zeus sont encore bien plsu rapide.
Pour vous donner une idée allez faire un tour sur les score de bench SPECweb99:
http://www.spec.org/web99/results/
 
Les server testés tournent rarement sous Apache. J'ai pu voir Apache sortir un score d'environ 200 (200 client simultannées avec une qualité de service donnée) sur un PIII 1ghz alors que IIS avait un score plus que doubles, et que des machins genre TUX sortaient des score de 1000.
 
Le probleme d'apache c'est sa conception totalement multithread: il pré-fork un pool de process (ou de thread dans les derniere versions, mais la situation est exactement identique mis à part le passage des descripteurs de fichier d'un thread à l'autre qui est plus simple dans ce cas, mais les perfs sont quasi identiques) et ecoute les connexions sur son thread principale, puis les balance aux autres thread (passage de fd). Il est donc tres consommateur en ressources memoire et CPU (meme si ca marche mieux avec le scheduleur en O(1) de linux 2.6) et se montre incapable de gerer un tres grand nombre de connexions simultannées puisque celles ci implique egalement un grand nombre d'immondes threads.
Zeus au contraire ainsi que d'autres fonctionnent sur un principe bien different: le thread principale gere l'ensemble des connexions avec des mecanismes de notification (epoll, kqueue, etc...) et ne recour à d'autre thread (ou process pre forkés) que pour les acces synchrones (acces disques si l'OS n'a pas d'AIO, acces base de donnée si il y a lieu) et les CGI et autres.
 
voila un lien interessant à ce sujet: (le site entier est ineressant, et sa dietlibc pourrait d'ailleurs vous interesser)
http://bulk.fefe.de/scalable-networking.pdf
 
et bien sur la bine connue page c10k qui resume bien les differentes approches:
http://www.kegel.com/c10k.html
 
 
maintenant, quand on parle de pages dynamiques le probleme est sans doute un peu different (mais pas forcement)

n°1176507
pospos
Posté le 15-08-2005 à 15:31:26  profilanswer
 

docmaboul a écrit :

Ben, le copy on write, dans le principe, il n'y a rien de plus simple. Il suffit de dupliquer les données avant de les modifier (et de faire les modifs sur la copie, bien évidemment). Après, on peut faire un système plus évolué afin de déterminer quand il est nécessaire de faire cette copie et quand ce n'est pas le cas, mais ça implique de se faire chier avec de la synchronisation.


 
Permettez moi d'objecter.
Pour moi le copy on write consiste justement à eviter de copier des donnée tant que celles ci sont identique. Elle ne sont copiée que si elle se trouve modifiées (on write donc).
 
c'est le principe qu'utilisent la plupart des OS pour implementer le fork: l'espace memoire est partagé entre les deux process pour ce qui est de la lecture, mais des que l'un des process tente d'ecrire, la page memoire est dupliquée pour pouvoir etre mdoifiée.
 
C'est ce qui permet à apache de gerer un grand nombre de process d'un meme interpreteur (Perl ou PHP) sans pour autant avoir besoin  de n fois l'espace memoire: seules les données différentes sont dupliquées et les librairies sont toalement partagées.

n°1176632
chaced
Posté le 15-08-2005 à 18:37:37  profilanswer
 

pospos a écrit :

Cher Docteur Maboule.
Tout d'abord j'ai hier parcouru rapidement ce topic (essentiellement les vieux messages) et je dois dire que j'ai particulierement apprécié vos interventions (surtout votre fake de fake). Je trouve votre acharnement à vouloir produire un forum totalement optimisé tout à fait rafraichissant et plaisant dans ce monde de design pattern et d'UML. :jap:  
 
Pour en revenir à votre question, je n'ai jamais lu le code d'apache, mais j'en connais l'architecture et j'ai pu comparer ses perfs à d'autres server (je parle de pages statiques uniquement).
IIS, pour ne pas le citer, se montre déjà bien plus véloce, et d'autres gros server commerciaux comme Zeus sont encore bien plsu rapide.
Pour vous donner une idée allez faire un tour sur les score de bench SPECweb99:
http://www.spec.org/web99/results/
 
Les server testés tournent rarement sous Apache. J'ai pu voir Apache sortir un score d'environ 200 (200 client simultannées avec une qualité de service donnée) sur un PIII 1ghz alors que IIS avait un score plus que doubles, et que des machins genre TUX sortaient des score de 1000.
 
Le probleme d'apache c'est sa conception totalement multithread: il pré-fork un pool de process (ou de thread dans les derniere versions, mais la situation est exactement identique mis à part le passage des descripteurs de fichier d'un thread à l'autre qui est plus simple dans ce cas, mais les perfs sont quasi identiques) et ecoute les connexions sur son thread principale, puis les balance aux autres thread (passage de fd). Il est donc tres consommateur en ressources memoire et CPU (meme si ca marche mieux avec le scheduleur en O(1) de linux 2.6) et se montre incapable de gerer un tres grand nombre de connexions simultannées puisque celles ci implique egalement un grand nombre d'immondes threads.
Zeus au contraire ainsi que d'autres fonctionnent sur un principe bien different: le thread principale gere l'ensemble des connexions avec des mecanismes de notification (epoll, kqueue, etc...) et ne recour à d'autre thread (ou process pre forkés) que pour les acces synchrones (acces disques si l'OS n'a pas d'AIO, acces base de donnée si il y a lieu) et les CGI et autres.
 
voila un lien interessant à ce sujet: (le site entier est ineressant, et sa dietlibc pourrait d'ailleurs vous interesser)
http://bulk.fefe.de/scalable-networking.pdf
 
et bien sur la bine connue page c10k qui resume bien les differentes approches:
http://www.kegel.com/c10k.html
 
 
maintenant, quand on parle de pages dynamiques le probleme est sans doute un peu different (mais pas forcement)


 
Tres intéressant ton post, merci!  
 
Tu connais mieux qu'Apache2 en opensource ?


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1176638
scull
MySCULL cay bon mangez en!
Posté le 15-08-2005 à 19:04:57  profilanswer
 

Ptain sa cause super technique ici   :heink:


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
n°1176643
Gnub
Posté le 15-08-2005 à 19:33:21  profilanswer
 

même si je n'en pige pas le quart, je trouve qu'il y a là-dedans quelque chose d'étonnament esthétique :o

n°1176645
skeye
Posté le 15-08-2005 à 19:36:47  profilanswer
 

Un serveur web qui gère toutes les connexions sur le même thread ça me parait bizarre...c'est typiquement le style d'applis ou le multithread parait intéressant...
Il se passe quoi sur ce genre de soft quand on passe sur une machine multiprocesseurs? :??:


---------------
Can't buy what I want because it's free -
n°1176651
pospos
Posté le 15-08-2005 à 19:43:28  profilanswer
 

chaced a écrit :

Tu connais mieux qu'Apache2 en opensource ?


 
en open source je sais pas.
Pour servir des fichier statiques tu a toujorus TUX.
La plupart de ces serveurs "de competition" open source (genre gatling, TUX, flash etc.) se contentent souvent de faire du CGI ou du fastCGI et n'ont pas de modules specialisé pour perl, php, python, etc.

n°1176653
pospos
Posté le 15-08-2005 à 19:49:04  profilanswer
 

skeye a écrit :

Un serveur web qui gère toutes les connexions sur le même thread ça me parait bizarre...c'est typiquement le style d'applis ou le multithread parait intéressant...
Il se passe quoi sur ce genre de soft quand on passe sur une machine multiprocesseurs? :??:


 
De toutes facons tu est presque obligé d'avoir des thread pour les acces disques (qui sont presques toujours bloquant) et aussi pour tes pages dynamiques. Mais le tout est de ne pas en avoir trop pour eviter de bouffer la RAM et aussi les changement de contexte permanant (passage d'une thread à l'autre) qui sont assez couteux en ressources.

mood
Publicité
Posté le 15-08-2005 à 19:49:04  profilanswer
 

n°1176668
chaced
Posté le 15-08-2005 à 20:10:34  profilanswer
 

En plus, il y a plein de déclinaison d'apache2, je présumes que chacune ont leurs avantage inconvéniant...  (perchild, prefork, threadpool, worker)


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1176674
joce
Architecte / Développeur principal
"BugHunter"
Posté le 15-08-2005 à 20:22:20  profilanswer
 

pospos a écrit :

en open source je sais pas.
Pour servir des fichier statiques tu a toujorus TUX.
La plupart de ces serveurs "de competition" open source (genre gatling, TUX, flash etc.) se contentent souvent de faire du CGI ou du fastCGI et n'ont pas de modules specialisé pour perl, php, python, etc.


quid de thttpd pour le statique ?

n°1176685
pospos
Posté le 15-08-2005 à 20:37:13  profilanswer
 

j'ai été tres dessus par thttpd: il ne gere pas le keep alive! (ou alors j'ai merdé, mais il me semble bien). Du coup il a beau se debattre comme il veut il est forcement à la ramasse.
D'apres ce que j'ai pu voir ou tester TUX est vraiment pas mauvais et gatling est vraiment bon aussi.
 
tiens en cherchant je viens de trouver ca à l'instant:
http://salinan.memoryhole.net/autobench/


Message édité par pospos le 15-08-2005 à 20:37:24
n°1176842
THE REAL S​MILEY
The Real Résistance!
Posté le 16-08-2005 à 09:19:13  profilanswer
 

Max2000 a écrit :

Aller moi je reviens avec un forum qui tient à peu près la route mais auquel il manque pas mal de fonctions :D
 
http://forum.les-potes.com
 
(faudrais mettre à jour le premier post s'il vous plait :o)


 :o


---------------
༼ つ ◕_◕ ༽つ
n°1177156
drasche
Posté le 16-08-2005 à 15:51:42  profilanswer
 

question regexp :o
 
Pour interpréter les puces, j'ai:
 

Code :
  1. #((\[\*\](.*?)(\r)?\n)+)#si


(pour le bloc)
 

Code :
  1. /(\[\*\])(.*?)(\r)?\n/


(pour chaque élément de la liste)
 
Mais quand la liste ne finit pas par un retour chariot, le dernier élément de la liste n'est pas interprété. J'ai tenté différents moyens mais il me semble me rappeler qu'il existe une expression pour exprimer la fin d'une chaîne mais je ne me rappelle plus :/
 
Une idée? :??:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1177159
pospos
Posté le 16-08-2005 à 15:55:18  profilanswer
 

oui, c'est $
en perl ca serait comme ca:
 

Code :
  1. /(\[\*\])(.*?)(?:\r?\n|$)/


 
le (?: ) sert à faire un bloque non capturant, je sais pas si c'est pareil en php


Message édité par pospos le 16-08-2005 à 15:56:34
n°1177170
drasche
Posté le 16-08-2005 à 16:06:42  profilanswer
 

les regexps que j'emploie sont celles compatibles Perl mais je ne vois pas l'utilité du ?: ici :??:  Parce que quand je l'enlève, je ne vois aucune différence [:joce]
 
En tout cas c'était bien le $ qui manquait, merci :jap:
 
J'ai donc ceci qui fonctionne nickel maintenant :)

Code :
  1. #((\[\*\](.*?)(?:\r?\n|$)+))#si
  2. /(\[\*\])(.*?)(\r?\n|$)/


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1177197
lorill
Posté le 16-08-2005 à 16:31:51  profilanswer
 

c'est pas beau

n°1177213
drasche
Posté le 16-08-2005 à 16:37:33  profilanswer
 

Les regexps? Entièrement d'accord :D


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1177226
pospos
Posté le 16-08-2005 à 16:48:14  profilanswer
 

l'interet du (?: ) c'est que le bloque ne va pas etre capturé (et stocké) donc tu gagne en vitesse.
Pour ce qui est de la beauté, je trouve ca plus beau que les 15 lignes d'instructions que ca remplace...

n°1177242
drasche
Posté le 16-08-2005 à 16:56:05  profilanswer
 

Vitesse? [:cupra]
Je suis capable d'en foutre partout! [:twixy]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1177264
pospos
Posté le 16-08-2005 à 17:11:07  profilanswer
 

si tu veux gagner en vitesse, je te conseil aussi d'eviter les truc genre ".*?", c'est tres couteux pour le moteur regexp. Mieux vaut definir exactement ce que l'on veut matcher.
 
dans on cas par exemple, mieux vaut faire ca (d'ailleurs les parenthese ne servaient à rien si tu ne voulais rien capturer) :
/\[\*\][^\r\n]*/
 
et du coup meme plus besoin du $

n°1177269
drasche
Posté le 16-08-2005 à 17:13:44  profilanswer
 

ben je me sers des regexps pour faire du search & replace intelligent donc j'ai besoin de faire des captures :spamafote: (si j'ai bien compris [:twixy])


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1177278
pospos
Posté le 16-08-2005 à 17:29:43  profilanswer
 

Mais tu capturais aussi le "[ *]" alors??
 
ha ben alors si c'est le bloque entre le [ *] et le retour ligen (ou la fin) qui t'interesse ca donne /\[\*\](^\r\n])/ et pi voila (moi je trouve ca joli les regexp...)


Message édité par pospos le 16-08-2005 à 17:30:29
n°1177316
drasche
Posté le 16-08-2005 à 18:14:08  profilanswer
 

tiens oui c'est vrai c'est con en fait [:joce]
Je vais modifier ça illico :jap:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1177369
joce
Architecte / Développeur principal
"BugHunter"
Posté le 16-08-2005 à 19:21:05  profilanswer
 

pospos a écrit :

Mais tu capturais aussi le "[ *]" alors??
 
ha ben alors si c'est le bloque entre le [ *] et le retour ligen (ou la fin) qui t'interesse ca donne /\[\*\](^\r\n])/ et pi voila (moi je trouve ca joli les regexp...)


[^\r\n] ca match "non \r" OU "non \n" et pas "non \r\n" donc
 
/\[\*\](.+?)\r?(\n|$)/
c'est pas équivalent à  
/\[\*\][^\r\n]+)/  
 
a priori :??:
 
Edit : ok on s'en fout en fait, ca fait ce qu'on veut :D


Message édité par joce le 16-08-2005 à 19:22:28
n°1177392
e-deby
Posté le 16-08-2005 à 20:14:14  profilanswer
 

X2board 2.2  [:yaisse2]  [:yaisse2]


---------------
Pour les sudistes :)
n°1177394
chaced
Posté le 16-08-2005 à 20:15:50  profilanswer
 


 
Félicitation pour ton forum, c'est du bon boulot ;)  
 


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1177398
e-deby
Posté le 16-08-2005 à 20:17:47  profilanswer
 

merchi :)


---------------
Pour les sudistes :)
n°1177405
chaced
Posté le 16-08-2005 à 20:25:02  profilanswer
 

Question con, tu utilises quoi de Smarty sur ton forum ?


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1177409
e-deby
Posté le 16-08-2005 à 20:28:51  profilanswer
 

ben le moteur de template :D
il est utilisé pour l'affichage de toutes les pages du forum et pour la construction des mails envoyés


---------------
Pour les sudistes :)
n°1177414
chaced
Posté le 16-08-2005 à 20:31:47  profilanswer
 

ha ok :D bon d'un coté, pourquoi réinventer la roue :D


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1177419
e-deby
Posté le 16-08-2005 à 20:36:06  profilanswer
 

Ben Smarty possède tous les avantages :  
 
- approche full objet
- bonnes performances (plus de 700 online en heure de pointe sur les forums 01net, ca tourne)
- complet et extensible
- seule méthode propre de rendu, selon moi, que le moteur de template.


Message édité par e-deby le 16-08-2005 à 20:37:21

---------------
Pour les sudistes :)
n°1177421
masklinn
í dag viðrar vel til loftárása
Posté le 16-08-2005 à 20:36:41  profilanswer
 

Si des gens s'amusent avec les regex JS
http://www.cuneytyilmaz.com/prog/jrx/
[:pingouino]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1177422
drasche
Posté le 16-08-2005 à 20:37:19  profilanswer
 

masklinn a écrit :

Si des gens s'amusent avec les regex JS
http://www.cuneytyilmaz.com/prog/jrx/
[:pingouino]


Rigole pas, j'en connais :sweat:
 
e-deby: bon boulot :jap:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1177423
e-deby
Posté le 16-08-2005 à 20:38:40  profilanswer
 

masklinn a écrit :

Si des gens s'amusent avec les regex JS
http://www.cuneytyilmaz.com/prog/jrx/
[:pingouino]


ca déchire  [:pingouino]


---------------
Pour les sudistes :)
n°1177426
masklinn
í dag viðrar vel til loftárása
Posté le 16-08-2005 à 20:45:25  profilanswer
 

drasche a écrit :

Rigole pas, j'en connais :sweat:
 
e-deby: bon boulot :jap:


Ben je le fais, le pingouino c'était pour l'idée de créer un interpréteur/débugger "As You Type" de regex JS [:pingouino]
 
D'habitude je debug avec Kodos et j'adapte au JS [:pingouino]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1177554
THE REAL S​MILEY
The Real Résistance!
Posté le 17-08-2005 à 09:13:40  profilanswer
 

drasche a écrit :

Rigole pas, j'en connais :sweat:


moi :o  
les URL et les emails sont cliquables grâce au JS :D


Message édité par THE REAL SMILEY le 17-08-2005 à 09:13:51

---------------
༼ つ ◕_◕ ༽つ
n°1177697
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-08-2005 à 11:12:01  profilanswer
 

pospos a écrit :

j'ai été tres dessus par thttpd: il ne gere pas le keep alive! (ou alors j'ai merdé, mais il me semble bien). Du coup il a beau se debattre comme il veut il est forcement à la ramasse.


 
Tiens pourtant c'est ce qu'utilise ce forum-ci pour les images (forum-images.hardware.fr)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1177743
pospos
Posté le 17-08-2005 à 11:40:11  profilanswer
 

une machine rien que pour ca? Elle doit se trouner les pouces!
 
En fait d'apres ce que je vois il y a des patchs qui circulent pour ajouter le keep alive à thttpd.
 
Mais on dirait que cette verison la n'est pas patchée: je vient de faire le test avec telnet en HTTP/1.1 et il envoi un "Connection: close"...


Message édité par pospos le 17-08-2005 à 11:40:46
n°1177811
skylight
Made in France.
Posté le 17-08-2005 à 12:35:34  profilanswer
 

I made a choice.
V5 de mon forum :  
pour les utilisateurs, JS non obligatoire
pour administrer le forum, JS obligatoire :o
 
 
pas de chichis, là où les gens qui ont le JS désactivé ne représentent que 2%.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  288  289  290  ..  486  487  488  489  490  491

Aller à :
Ajouter une réponse
 

Sujets relatifs
question avec les forums phpbb2[php] trouver la premier place ou inserer un enregistrement (résolu)
Forums phpBBQui connait l'algo du Passticket et sa mise en place en VB ?
[Merise] Mise en place d'un MCDFocus mal placé....
[Blabla/Prog] Les développeurs foromeurs sont-ils des feignasses?Mise en place d'un formulaire CGI
forums création de site internetJava - Mise en place d'une api (Servlet)
Plus de sujets relatifs à : les développeurs de forums, les 3/4 des forums sont down /o\


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)