Design probleempje ..

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior Front end developer React

Functie Voor deze functie ben ik op zoek naar een enthousiaste front end developer die communicatief vaardig is. Jij wordt onderdeel van een enthousiast jong team dat werkt aan grote websites. Binnen jouw rol ben jij diegene die de vertaling maakt van design naar functionele code en zorg jij voor goede experience op meerdere platformen. Dit doe je natuurlijk door gebruik te maken van Javascript, HTML, CSS en React. Daarnaast wordt er gebruik gemaakt van Webcomponents en verschillende authenticatie tools. Doordat er hier gestreefd wordt naar de beste gebruikerservaringen, wordt het product constant doorontwikkeld. Hierdoor blijven ze voor op de

Bekijk vacature »

Junior .NET Developer

Dit ga je doen Als junior .NET Developer lever je met jouw oplossingen direct een bijdrage aan de bedrijfsprocessen van de klanten. Werkzaamheden waar jij je zoal mee bezig houdt zijn; Het ontwikkelen, onderhouden en optimaliseren van de draaiende platforms van de klanten; Softwareontwikkeling middels C#, .NET; Klantcontact om de wensen te bespreken en uit te werken; Optimaliseren van de (huidige) bedrijfsprocessen; De IT-afdeling bestaat uit 30 personen verdeeld over 3 teams. Het team waar je in terecht komt bestaat uit ongeveer tien man. Het is een team wat bestaat uit betrokken collega’s, waar iedereen bereidt is om elkaar te

Bekijk vacature »

Senior/Lead Python developer

Functie Samen met je team, bestaande uit een senior, 2 mediors en één junior ontwikkelaar ga je op een Agile-gebaseerde aanpak werken aan hun software. Je hebt oog voor kwaliteit, risico’s en klantbelang. Communicatie met je collega’s en waar nodig ook met klanten speelt een belangrijke rol in het bereiken van een succesvol resultaat. Als persoon ben je slim, krijg je dingen voor elkaar en ga je resultaatgericht te werk. Binnen het development team is er veel zelfstandigheid, los van de stand-up (10:00 uur) en zo nu en dan pair-programming sessies. Technieken die zij gebruiken zijn o.a. Python, Django, MySQL,

Bekijk vacature »

Software Developer C# / ASP .Net

Functie omschrijving Ben jij een software ontwikkelaar die bekend is met termen ASP .NET, C# en SQL? Lees dan snel verder! Voor een bedrijf binnen de agrarische sector zijn wij namelijk op zoek naar een zelfstandige, enthousiaste en proactieve Software Developer die open staat voor een afwisselende functie met veel uitdaging. Binnen deze organisatie ben jij als Software Developer samen met één andere collega verantwoordelijk voor de ontwikkeling en modificatie van het support en controle programma dat binnen dit bedrijf gebruikt wordt. Hierbij draag jij bij aan de vertaling van klantwensen naar effectieve softwareoplossingen. Daarnaast ben je verantwoordelijk voor: Schatten

Bekijk vacature »

Belastingdienst - Freelance Senior Cobol Applicati

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 7 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: In de applicatie ETM zijn nu de inningsvoorzieningen voor ongeveer 25 aangifte- en aanslagmiddelen opgenomen. ETM is een extern aangeschafte service en het huidige contract met leverancier Oracle loopt af op 31-12-2022. Het programma uitfaseren ETM heeft als doel om vervanging te realiseren waarmee alle nu in gebruik zijnde ETM ondersteuning wordt overgenomen in nieuwe Inningsvoorzieningen om de continuïteit van de inningsprocessen te waarborgen. Eén van de inningsvoorzieningen die voor het einde van 31-12-2022

Bekijk vacature »

SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 13382 Introductie We is looking for a HANA Developer to work for our client. The candidate has to have an experience in building Data Intensive Applications (DIA’s). The role of a HANA Developer at ASML involves working on building Data Intensive Applications in an industrial/enterprise environment. The primary responsibility is to handle data from various sources and determine the best way to structure it for use by data analysts, who will run queries and algorithms against it for predictive and prescriptive analytics through machine learning. Wat verwachten we van jou?

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

.NET developer

Functie Als .NET ontwikkelaar start jij in een multidisciplinair team met 7 ontwikkelaars. Dit team is verdeeld onder Front-end ontwikkelaars en backend developers. De backend developers werken voornamelijk aan desktop applicaties in combinatie met backend systemen. Hier ga jij dus ook mee aan de slag! Hierbij wordt voornamelijk gebruik gemaakt van C# .NET, WPF, UWP, XAML en MVVM. WPF, UWP, .NET Core, Azure Devops en Entity Framework. WPF en UWP worden dan ook voornamelijk gebruikt voor de user interface van de desktop applicatie. Het development team is dan ook erg gedreven m.b.t. het ontwikkelen van vooruitstrevende en innovatieve horeca automatiseringsoplossingen.

Bekijk vacature »

C# ontwikkelaar

Functie omschrijving Werk jij graag met C# en het .NET framework in een leuk familiebedrijf? Lees dan snel verder! Jouw takenpakket hierbij is: Je gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Je gaat werken in een Microsoft omgeving (ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Daarnaast optimaliseer je de bestaande software. Bedrijfsprofiel Deze organisatie is gevestigd in de omgeving van Best en is een echt familiebedrijf. Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met

Bekijk vacature »

Freelance JAVA / C# Developer

Functieomschrijving Voor een opdrachtgever in omgeving Zoetermeer zijn wij op zoek naar ervaren JAVA of C# Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid

Bekijk vacature »

C# developer

Functie omschrijving We are looking for a dutch native speaker Ik ben op zoek naar een back-end developer, die met name kennis & ervaring heeft van de programmeertaal C#. Jij gaat aan de slag bij een topspeler in de logistieke sector, die zich behalve met logistiek, ook bezig houdt met softwareontwikkeling. Welke taken komen hierbij kijken? Je gaat desktop- en webapplicaties onderhouden en optimaliseren, waarin je werkt met o.a. C#, ASP.NET, SQL Server en T-SQL. Je hebt regelmatig klantcontact om de wensen in kaart te brengen en te evalueren over de huidige draaiende applicaties. Je implementeert nieuwe functionaliteiten toe aan

Bekijk vacature »

Laravel / PHP developer gezocht!

Functie omschrijving Wij zijn op zoek naar een Laravel PHP Developer voor een leuk bedrijf in de omgeving van Amsterdam! Je zult je bezig houden met de volgende werkzaamheden: Je gaat aan de hand van de wensen van klanten software ontwikkelen; Je bent bij het gehele proces betrokken; van A tot Z; Je hebt na de oplevering contact met de klant wanneer zij problemen ervaren; Je denkt mee over het verbeteren van de werkprocessen; Je denkt mee over softwareoplossingen; Je speelt in op de behoefte van de klant; Je houdt je bezig met het verbeteren, aanpassen en vernieuwen van de

Bekijk vacature »

Java Developer

Dit ga je doen Ontwerpen en bouwen van nieuwe functionaliteiten binnen de complexe omgeving; Proactief de processen kwalitatief en efficient inrichten; Opzetten van Unit Tests; Code Reviews; Regie nemen voor innovatieve projecten; Landschap beheren en de bijbehorende ketens hierbij in het oog houden. Hier ga je werken De organisatie is actief binnen de financiele branche en heeft een IT afdeling van circa 450 man. De organisatie voorziet de maatschappij binnen de financiele dienstverlening en is gedurende de jaren een onmisbare schakel geworden. Het is een high profile organisatie waar ze veel te maken hebben met veranderingen voortkomend uit maatschappelijke ontwikkelingen,

Bekijk vacature »

Microsoft Acess Developer

Functieomschrijving Wat ga je doen? Heb jij ongeveer 3 jaar ervaring als Software Developer, en komen de volgende kennisgebieden jou niet vreemd voor: MS Acces, C# & SQL? Vind jij het daarnaast leuk om maatwerk software te ontwikkelen voor klanten in een bijzondere branche? Lees dan snel verder! Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te

Bekijk vacature »
Remco

Remco

08/05/2008 10:38:00
Quote Anchor link
Hoi,

jammergenoeg zit ik met een probleem wat m'n hele vooruitgang belemmert. Ik weet namelijk niet hoe ik nou het beste en het netste m'n klassen kan scheiden. Hier de situatie. Je hebt een beheerder, en een deel daarvan. Zegmaar een index, en een socket. De socket klasse heeft zelf zijn eigen functies voor beheer ( lezen / schrijven / connecten ), logisch. Maar de beheerder / index heeft in 1 functie toch echt een property van de socket nodig ( de resource ). Nu kun je dit heel simpel oplossen ( getResource() ), maar ik ben bang dat dit nogal wat performance-verlies tot gevolg heeft ( zit in een while(true) loop en als je dan elke keer al die resources moet opvragen .. ).

Nu kan het ook heel simpel worden opgelost, dat de beheerder/index zelf functies heeft om naar een socket te schrijven, en dat je dan een 2e object hebt, puur om data in op te slaan. Maar dat is dan weer niet zo "OOP-conform", normaal had ik de 2e manier al lang gekozen maar ik heb mezelf voorgenomen dat ik wat moet werken aan m'n oop design skills. :P

Iemand een ideetje? :$
 
PHP hulp

PHP hulp

10/12/2024 02:19:59
 
Jacco Engel

Jacco Engel

08/05/2008 10:44:00
Quote Anchor link
Je beheer klasse je socket class laten extenden?

class beheer extends socket


Dan kun je binnen beheer met $this->functie socket functies aanroepen

Lijkt mij de gewenste oplossing
 
Danny K

Danny K

08/05/2008 12:14:00
Quote Anchor link
Als je, zoals jij zegt, je "oop design skills" wilt verbeteren, heb je natuurlijk een mooi (klein) UML diagrammetje gemaakt!
Laat die maar even zien, dan kunnen we pas een echt goed antwoord op je vraag geven!
 
Jelmer -

Jelmer -

08/05/2008 14:33:00
Quote Anchor link
Ik zou het opdelen in 3 delen: De Socket, de BeheerderHandler en de Beheerder.

De Socket is puur een OO jasje om de socket_* functies van PHP. De instantie beheert zelf de socket resource, die komt er niet buiten. Alle read & write acties gaan via de public methods.

De BeheerderHandler is specifiek voor dat wat er aan de andere kant van de socket zit. Deze klasse is als het ware de enige die dingen over de socket stuurt, die de taal spreekt die naar de andere kant moet. Alle acties die mogelijk zijn aan de andere kant zijn in dit object gerepresenteerd door public methods. Bijvoorbeeld addIets, removeIets, getIets etc. vertalen en sturen binnen de klasse iets naar de instantie van de Socket-klasse, en wachten op antwoord. Dit antwoord vertalen ze weer naar een waarde waar je in PHP wat mee kan (dictionary strings worden vertaald naar associative arrays om maar even een voorbeeld te geven) Voor de naam van de klasse zou ik trouwens [naam-van-applicatie-aan-de-andere-kant]Handler gebruiken. Ik heb bijvoorbeeld een klasse die met XBT praat, en die heet heel toepasselijk XBTHandler.

De BeheerderHandler en de Socket zijn in iedere bedenkbare applicatie herbruikbaar. Je zou ze in een PHP-GTK programmaatje kunnen gebruiken, of in een webapp. Ze bevatten dus geen presentatie, geen echo-aanroepen, geen die of exit. Ze hebben alleen methods die je aanroept en die een antwoord in de vorm van een return value teruggeven. Onopgemaakt, gewoon als pure PHP dingen. Geen strings die HTML bevatten, of tekst die door htmlentities is gehaald etc.

Als laatste heb je dan nog het frontend. Deze is afhankelijk van de toepassing die je maakt. Voor een webapp verwerkt hij bijvoorbeeld de aanvraag en geeft HTML terug. Deze communiceert dus met de BeheerderHandler, maar niet met de Socket.

Waarom van Socket nog een aparte klasse? Omdat je die dan eventueel zou kunnen vervangen door een andere klasse die dezelfde methods heeft. Zo zou je heel gemakkelijk je applicatie werkend kunnen krijgen met een proxy of een ssh tunnel. Je hoeft alleen maar de Socket klasse te extenden en uit te breiden zodat deze via de nieuwe weg verbinding maakt met de andere kant. Waarom dan de BeheerderHandler apart? Omdat je dan gemakkelijk herbruikbare code hebt voor later, of omdat je nu gemakkelijk een andere of nieuwere versie van het programma aan de andere kant kan installeren die een nieuw protocol hanteert. Het enige wat je in je huidige applicatie aan deze kant dan hoeft te bewerken is de Handler.
 
Remco

Remco

08/05/2008 16:13:00
Quote Anchor link
Leuk idee Jelmer, maar zover ik lees kun je dan niet meer dan 1 socket hebben. Terwijl mijn doel juist is om meerdere sockets te hebben (d.m.v. polling).

Afbeelding

Mijn idee was meer: de protocol afhandelaar maakt een socketClient instantie, en koppelt die aan de socketIndex. Deze kan dan weer met pollSockets() een socket_select() doen.

Of, de socketIndex beheeft gewoon alle sockets, en socketClient dient slechts voor opslag van de resource etc.
Gewijzigd op 01/01/1970 01:00:00 door Remco
 
Jelmer -

Jelmer -

08/05/2008 17:20:00
Quote Anchor link
Wat zit er dan aan de andere kant van de sockets? Vraagt datgene dingen op, of wil je dat ding juist vragen stellen? Is het een server of een client?
 
Remco

Remco

08/05/2008 17:46:00
Quote Anchor link
Een server, een irc server welteverstaan. Maar maakt dat uit ..? Echter kan het ook netzogoed een client zijn (ddc transfer).
Gewijzigd op 01/01/1970 01:00:00 door Remco
 
Jelmer -

Jelmer -

08/05/2008 18:35:00
Quote Anchor link
Je hebt toch maar 1 verbinding met de server? De andere verbindingen zijn met clients. Ik zou die 2 verschillende soorten verbindingen niet door elkaar gooien, maar naast elkaar laten bestaan (het mooiste zou natuurlijk zijn als het aparte processen waren zodat de een druk bestanden kan binnen halen terwijl de ander rustig verder chat)

Ik zou uitgaan van 1 algemene handler, die beheert het programma. Bij deze handler kan je subprocessen registreren. Een daarvan is bijvoorbeeld het proces dat de verbinding met de chatserver afluistert, een ander daarvan kan een direct chat via dcc zijn.

De algemene handler zorgt voor de oneindige lus, en loopt dus oneindig lang alle subprocessen af. Om de beurt wordt bijvoorbeeld $subProces->yield() aangeroepen waar dan het subproces 1 rondje mag uitvoeren. Dat kan een select_socket zijn, of een beetje bestand ophalen, of een setje chatberichten verwerken (en eventueel dus een nieuw subproces starten dat een DCC SEND aanroep verder afhandelt)

Geen idee hoe de performance is, maar ik denk dat het een mooie structuur is die makkelijk is uit te breiden en later indien nodig makkelijk is om te zetten naar echte threads zodat het ophalen van bestanden werkelijk tegelijkertijd (of iig op kernelniveau opgedeeld) gebeurt.
 
Remco

Remco

08/05/2008 19:59:00
Quote Anchor link
Heb je verstand van sockets? In een eerder project van me had ik precies de opzet die je noemt, een klasse voor irc protocol, andere voor dcc, en weer eentje die een socket voorstelt. Op een gegeven moment wordt dat traag-as-hell en is je bot niet meer vooruit te branden. Je hebt blockende, en non-blockende sockets. Logischerwijs blockt de 1e en wacht totdat de actie is voltooid, en doet de 2e dat niet. Jammergenoeg heeft dat meer zorg nodig, en als je dan elke socket bijlanges gaat (pollen) gaat dat nogal wat cpu-cycles vreten.
 
Jelmer -

Jelmer -

08/05/2008 20:05:00
Quote Anchor link
Ik was uitgegaan van non-blocking sockets. Met usleep kan je je cpu cycles drukken. Een simpel testje wat ik ooit gedaan heb met pcntl_fork en socket_accept (voor iedere verbinding die er gemaakt wordt forkte ik m'n script zodat iedere socket door een apart child process werd afgehandeld) en een usleep(200) in de while-lus koste me ongeveer 1% processorkracht. Maar volgens mij kan je die usleep nog wel wat opvoeren, 200 microseconden is heel weinig.
 
Remco

Remco

09/05/2008 09:51:00
Quote Anchor link
Het kan wel, wat je zei, maar met socket_select kan het zó veel efficienter. Je kunt met die functie alles controleren.

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
readfds:

    * If listen has been called and a connection is pending, accept will succeed.
    * Data is available for reading (includes OOB data if SO_OOBINLINE is enabled).
    * Connection has been closed/reset/terminated.

writefds:

    * If processing a connect call (nonblocking), connection has succeeded.
    * Data can be sent.

exceptfds:

    * If processing a connect call (nonblocking), connection attempt failed.
    * OOB data is available for reading (only if SO_OOBINLINE is disabled).


Je kunt lezen dat je met een simpele functie precies weet wat een socket kan, en al heeft gedaan. Het is dan zeer onlogisch om de heletijd te loopen en gewoon de functies aanroepen en hopen dat er wat gebeurt. (Van de Windows documentatie .. )
Gewijzigd op 01/01/1970 01:00:00 door Remco
 
Jelmer -

Jelmer -

09/05/2008 10:23:00
Quote Anchor link
Wel als sockets de enige gebeurtenissen genereren, niet als er ook andere gebeurtenissen moeten kunnen gebeuren, zoals bijvoorbeeld gebeurtenissen op basis van een timer, of van een bepaalde system status.

Ook is het probleem met socket_select dat het een array van socket-resources wil, en ook slechts socket-resources teruggeeft. Je zal dus op basis van de socket-resource moeten achterhalen wel proces - of het nu chatten of toch bestanden binnentrekken was - achterhalen, en dat maakt een echt mooie OO aanpak inderdaad lastig.

Op basis van socket_select een systeem maken, hmm, ik denk dat ik het het zo zou doen:
De opperhandler wordt een SocketList die de main() lus beheert, en daarin socket_select constant aanroept en veranderde sockets afhandelt.

Bij deze opperhandler kan je processen registreren, en deze processen hebben allemaal 2 dingen in gemeen: een method om de Socket-instantie(s) op te vragen, en een method die wordt aangeroepen wanneer hun socket weer wakker wordt, wanneer er weer werk te doen is.

De Socket-instanties hebben met elkaar in gemeen dat ze een state hebben. Ze lezen, of ze schrijven. (of als je nog een exception-state wilt gebruiken, doe je die er ook bij) Op basis van deze state kan de opperhandler bepalen in welke array de socket moet. Verder kunnen de socket-instanties hun resource via een public method weggeven aan de opperhandler. En dit is waar het OO gezien lelijk wordt.

De opperhandler verbindt op basis van de resources (key) de sockets & hun processen (value) aan elkaar, en vergelijkt deze bij een antwoord van socket_select weer zodat hij weet welke processen een schop moeten hebben.
 
Remco

Remco

09/05/2008 12:55:00
Quote Anchor link
Je kunt heel simpel een uniek id genereren op basis van het resource id, die kun je opvragen met intval( $resource );
 



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.