Stelling: Veel programmeurs kunnen niet echt programmeren!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$document = preg_replace ("/[\/]*([^?]*)\?.*/", "\\1", $_SERVER['REQUEST_URI']);
$x = $_GET['x'];
$y = $_GET['y'];
if ($x == 0) {
echo "Greatest common divisor: $y";
exit;
}
$rest = $y % $x;
$address = "http://{$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']}";
header ("Location: $address/$document?x=$rest&y=$x");
?>
$document = preg_replace ("/[\/]*([^?]*)\?.*/", "\\1", $_SERVER['REQUEST_URI']);
$x = $_GET['x'];
$y = $_GET['y'];
if ($x == 0) {
echo "Greatest common divisor: $y";
exit;
}
$rest = $y % $x;
$address = "http://{$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']}";
header ("Location: $address/$document?x=$rest&y=$x");
?>
Ben jij beter dan de meeste "programmeurs"?!
Bewijs het tegendeel dat wij denken dat veel programmeurs niet echt kunnen programmeren door ons beknopt te vertellen wat hierboven gebeurt. Stuur je antwoord naar [email protected] en maak kans op een TOP stageplaats waar je nog veel meer leert!
Kunt u wat meer vertellen over deze stageplaats?
Zinloos variabelen overschrijven. Geen controle of de $_GET waarden wel bestaan.. dit gaat je gegarandeerd 2 notices opleveren wanneer ze niet bestaan..
Code (php)
1
2
3
4
2
3
4
<?php
$rest = $y % $x;
$address = "http://{$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']}";
?>
$rest = $y % $x;
$address = "http://{$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']}";
?>
Mooi voorbeeld waarom je variabelen buiten de quotes moet halen. Erg onoverzichtelijk dit en een grote fout gevoeligheid.
Een redirect naar de huidige pagina om wederom te kijken of de deling 0 oplevert? Lijkt me niet helemaal de bedoeling zo. Is veel beter op te lossen met een recursieve functie.
Ik ben van mening dat de programmeur van dit script niet echt kan programeren. Ik neem aan dat jullie op zoek zijn naar een vervanger van deze persoon?
Desalniettemin, sorry, geen interesse
Bedrijfsomschrijving
Voor een leuke en nuttige stageplaats waar je veel kan leren moet je bij MimicMe zijn. Wij ontwikkelen een realtime online render engine. De belangrijkste toepassing daarvan is online kleding passen. Mimic Media is gevestigd in Amsterdam en werkt met een jong team aan unieke 3D solutions.
1) Afstudeerstage
Voor het uitrollen van nieuwe concepten die gebruik maken van de unieke MimicMe-technologie zijn wij op zoek naar een creatief en technisch brein. Je hebt kennis in PHP, HTML, CSS, AJAX, en Javascript. Interesse en aanleg voor design en vormgeving zijn een pré. Uiteraard moet je ook het huidige web 2.0 in de vingers hebben. Voor je afstudeeronderzoek zal jij verantwoordelijk zijn voor het ontwikkelen van een nieuwe website die gebruik maakt van nieuwe technologie. Neem alvast een kijkje op onze website www.mimicme.nl om een indruk te krijgen wat wij doen. Voor jouw afstudeeronderzoek zou je kunnen denken aan bijvoorbeeld het toepassen van MimicMe voor nieuwe doelgroepen (bijvoorbeeld jonge kinderen, zwangere vrouwen etc.) Hierbij staan innovatie en web2.0 centraal. Dit is een afstudeeropdracht waarbij jij jezelf kan onderscheiden en gebruik kan maken van onze specialismen. Alles op het gebied van real-time serverside renderen en 3D doen wij in-house. De vraag is dus of jij creatief genoeg bent om deze opdracht aan te kunnen?
2) Stageplaats
Naast de afstudeerplek bieden we ook een 'gewone' stageplek aan:
Voor het implementeren van MimicMe bij grote Europese online retailers en voor het programmeren en onderhouden van nieuwe en bestaande functionaliteiten is Mimic Media op zoek naar een creatief en technisch brein. Je hebt uitgebreide kennis en HTML, CSS, AJAX, en Javascript. Interesse en aanleg voor design en vormgeving zijn een pré.
Wil je voor een van deze stageplekken in aanmerking komen, dan dien je dus eerst je skills te tonen door bovenstaand script foutloos uit te leggen.. Succes!
Even kijken wat welke functie doet, en dan even beetje logica hebben, over wat het script dan al wel niet doet, bewijst nog niet dat je echt kan programmeren.
Laat dan iemand een script schrijven die de torens van Hanoi oplost ofzo, (dit is ook niet zo heel moeilijk)
Of een die het Unieke getal vind
Deze heeft 2 voorwaarden:
1. ieder cijfer van 1 t/m 9 komt 1 keer voor.
2. ieder getal is deelbaar door zijn eigen positie (dus eerste cijfer deelbaar door 1, eerste 2 cijfers deelbaar door 2.......eerste 9 cijfers deelbaar door 9)
Of een magisch vierkant oplosser.
Dit zijn allemaal dingen die veel meer met programmeren te maken hebben, dan met het kennen van een taaltje.
Iedereen kan een script schrijven wat het één en ander uitrekent, maar het moeilijk van het programmeren is juist de algoritmiek achter iets te zoeken, de "competentie" (zoals dat tegenwoordig vaak genoemd word) om dat te kunnen, dat is veel belangrijker voor een programmeur dan een paar functies uit je hoofd te leren.
[email protected], want als het goede antwoord er al onder staat heeft het geen zin meer.
ten tweede: uit je antwoord blijkt dat je het script totaal niet hebt begrepen.
@ PHP Newbie, ten eerste: antwoorden mailen naar ten tweede: uit je antwoord blijkt dat je het script totaal niet hebt begrepen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
/**
* @author Nico Kaag
* @copyright 2008
*/
error_reporting(E_ALL);
function Grootste_Deler($x, $y)
{
if ($x == 0) echo "Greatest common divisor: ". $y;
else Grootste_Deler($y % $x, $x);
}
Grootste_Deler($_GET['x'], $_GET['y']);
?>
/**
* @author Nico Kaag
* @copyright 2008
*/
error_reporting(E_ALL);
function Grootste_Deler($x, $y)
{
if ($x == 0) echo "Greatest common divisor: ". $y;
else Grootste_Deler($y % $x, $x);
}
Grootste_Deler($_GET['x'], $_GET['y']);
?>
Hier zit overigens ook geen foutcontrole or what so ever in. maar dit zou toch een iets nettere oplossing zijn vind ik zelf.
Edit:
Even een verkorte versie hiervan gemaakt, dit is dus eigenlijk alles wat het doet.
Even een verkorte versie hiervan gemaakt, dit is dus eigenlijk alles wat het doet.
Gewijzigd op 01/01/1970 01:00:00 door Nicoow Unknown
Code (php)
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
27
28
29
30
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
27
28
29
30
<?php
// error_reporting altijd aan (ala SanThe)
error_reporting(E_ALL);
ini_set("display_errors", 1);
// ontvang de X en Y-gegevens en beveilig die
if(isset($_GET['x']) AND is_numeric($_GET['x']) AND isset($_GET['y']) AND is_numeric($_GET['y']))
{
// ontvang bestanden en int die (afhankelijk van gebruik...)
$getallen['x'] = intval($_GET['x']);
$getallen['y'] = intval($_GET['y']);
}
else
{
// mist de input-gegevens
echo '<p>Ik mis gegevens</p>';
}
// als de waarden in $getallen niet nul zijn
if (min($getallen) > 0)
{
echo '<p>Grootste gemene deler: ' . max($getallen) . '</p>';
}
// bereken restwaarde
$getallen['rest'] = $getallen['y'] % $$getallen['x'];
// vernieuw pagina met vernieuwde gegevens
header ('Location: ?x=' . $getallen['rest'] . '&y=' . $getallen['y']);
?>
// error_reporting altijd aan (ala SanThe)
error_reporting(E_ALL);
ini_set("display_errors", 1);
// ontvang de X en Y-gegevens en beveilig die
if(isset($_GET['x']) AND is_numeric($_GET['x']) AND isset($_GET['y']) AND is_numeric($_GET['y']))
{
// ontvang bestanden en int die (afhankelijk van gebruik...)
$getallen['x'] = intval($_GET['x']);
$getallen['y'] = intval($_GET['y']);
}
else
{
// mist de input-gegevens
echo '<p>Ik mis gegevens</p>';
}
// als de waarden in $getallen niet nul zijn
if (min($getallen) > 0)
{
echo '<p>Grootste gemene deler: ' . max($getallen) . '</p>';
}
// bereken restwaarde
$getallen['rest'] = $getallen['y'] % $$getallen['x'];
// vernieuw pagina met vernieuwde gegevens
header ('Location: ?x=' . $getallen['rest'] . '&y=' . $getallen['y']);
?>
Aldus mijn versie:
- controle op de $_GET (isset/is_numeric en intval())
- alles vernederlands
- commentaar erbij
- variabelen buiten de quotes
- beter inspringen
- correcte html erbij (mist wel een header etc)
- error_reporting
- foutafhandeling
- alles in 1 array
- geen gekloot meer met die refresh (bestand mag index.php heten)
- bij de header wel de Y-waarde bij Y vermelden (er stond $x)
- geen exit() gebruiken
Ik vind de oplossing van Nico beter, maar ik wilde me iets meer aan het script houden.
Mijn vraag is echter... wat wil je nou eigenlijk?
Maar waar het goed voor moge zijn, god mag het weten =P
Maar ik kon alleen zien wat het betekente, geen idee ervan hebbende dat zoiets ook een naam had, die ik achteraf ook scheen te weten =þ
waar het goed voor moge zijn?? om goede van slechte programmeurs te onderscheiden. En inmiddels gaat dat hard, want het juiste antwoord heb ik nog steeds niet ontvangen. En lees de opdracht goed: wat gebeurt er in bovenstaand script. Dat moet uitgelegd worden door een potentiele kandidaat. Dit is mijn laatste reactie op het forum, voortaan alleen serieuze communicatie via persoonlijke mail.
Dus dat je het juist antwoord nog niet hebt ontvangen, licht hoogst waarschijnlijk aan jou.
Voor de rest is al aangegeven dat jou script niet deugd, en dat je er dan zelf over gaat lopen zeuren dat het niet begrepen word, dan heb ik de slechte programmeur al gevonden.
En als jij echt zo'n goede programmeur ben, stuur mij morgen dan even een mail met de oplossing van de 3 vraag stukken hier ergens boven.
Dan zal ik wel eens even gaan beoordelen of jij een goede programmeur bent.
(En wees alsjeblieft niet zo zielig om het van internet af te halen)
Ojah, het magisch 4 is voor een vierkant van 4 bij 4 (dus van 16) en de torens van Hanoi moet op het aantal schijfen werken dat ik ingeef (40 is genoeg, want daarna krijg ik momenteel nog een stack overflow (C#). dus dat is niet zo erg opzich, (of je wilt er heel erg lang over gaan doen =þ)
Veel succes en Plezier ermee
Dus laten we het maar op de 'ouderwetse' manier doen en hou je aan de criteria die hier op het forum gelden.
Anders zal ik helaas het topic moeten sluiten.
SanThe.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Code (php)
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
27
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
27
<?php
error_reporting(E_ALL);
/**
* @author Robert Deiman
* @copyright 2008
*/
// haal de naam van het bestand op wat gebruikt wordt. (kan ook met php_self)
$document = preg_replace ("/[\/]*([^?]*)\?.*/", "\\1", $_SERVER['REQUEST_URI']);
// zinloos variabelen kopiëren, en niet controleren of ze wel bestaan. ISSET gebruiken is hier zeker wel op zijn plaats, maar ook het zinloos kopiëren -> do not do that
$x = $_GET['x'];
$y = $_GET['y'];
//wanneer x gelijk is aan 0, dan is y de grootste gemene deler. (stel y= 9, y/9 =1 en 0/9=0)
if ($x == 0) {
echo "Greatest common divisor: $y";
exit;
}
//waneer x ongelijk is aan 0, dan deel je $y door $x en onhoud wat er overblijft. Dat neem je mee naar de volgende URL, waar de gehele controle opnieuw plaats vindt. -> Is $x gelijk aan 0, dan hou je bij $y de grootste gemene deler over.
$rest = $y % $x;
$address = "http://{$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']}";
header ("Location: $address/$document?x=$rest&y=$x");
?>
error_reporting(E_ALL);
/**
* @author Robert Deiman
* @copyright 2008
*/
// haal de naam van het bestand op wat gebruikt wordt. (kan ook met php_self)
$document = preg_replace ("/[\/]*([^?]*)\?.*/", "\\1", $_SERVER['REQUEST_URI']);
// zinloos variabelen kopiëren, en niet controleren of ze wel bestaan. ISSET gebruiken is hier zeker wel op zijn plaats, maar ook het zinloos kopiëren -> do not do that
$x = $_GET['x'];
$y = $_GET['y'];
//wanneer x gelijk is aan 0, dan is y de grootste gemene deler. (stel y= 9, y/9 =1 en 0/9=0)
if ($x == 0) {
echo "Greatest common divisor: $y";
exit;
}
//waneer x ongelijk is aan 0, dan deel je $y door $x en onhoud wat er overblijft. Dat neem je mee naar de volgende URL, waar de gehele controle opnieuw plaats vindt. -> Is $x gelijk aan 0, dan hou je bij $y de grootste gemene deler over.
$rest = $y % $x;
$address = "http://{$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']}";
header ("Location: $address/$document?x=$rest&y=$x");
?>
Je krijgt toch wel een aantal warnings zo, maar het antwoord lijkt mij wel duidelijk. Ik ga je hier maar niet over mailen lijkt me.. 't is gewoon niet goed/ netjes gescript.
Maar dan komt mijn vraag... Wat is jou of jou baas zijn definitie van goed programmeren? kijkend naar dit topic en de code kan ik heel arrogant wel denken en zeggen dat ik het beter kan.
Ben niet te beroerd om je te helpen. En heb nogwel een KvK registratie.
Maar dat wil jij denk ik allemaal niet betalen en multinationals wel...
EDIT:
Ik programmeer al 10 jaar vrij intensief! Jij ?
Gewijzigd op 01/01/1970 01:00:00 door Lode
Overbeeke schreef op 23.12.2008 21:41:
@ PHP Newbie, ten eerste: antwoorden mailen naar [email protected], want als het goede antwoord er al onder staat heeft het geen zin meer.
ten tweede: uit je antwoord blijkt dat je het script totaal niet hebt begrepen.
ten tweede: uit je antwoord blijkt dat je het script totaal niet hebt begrepen.
Deze reactie slaat natuurlijk nergens op. Ik leg namelijk helemaal niet uit wat het script doet, ik vertel je alleen wat er verkeerd is aan het script.
Edit: Een PM die net zo goed even hier gepost had mogen worden.
Ontvanger SanThe
Afzender Overbeeke
Verstuurd op 24.12.2008 08:29
Onderwerp RE: reactie op Stelling....
ho ho, ik zeg helemaal niet dat men niet serieus is. Het is alleen zo dat dit een vacature is en als allemaal mensen zich ermee gaan bemoeien die niet eens voor stageplaats in aanmerking komen, heeft het totaal geen zin voor ons als bedrijf. En dus is dat geen serieuze communicatie, dat is wat ik zei. De vacature zou als een uitdaging moeten worden ervaren. Als er inhoudelijk over het script wordt gediscussieerd dan moet dat maar op een andere plek. En op je vraag of ik wel serieus ben, ga ik niet eens op in.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Maar ik vind dat als iemand als "serieus" bedrijf wil overkomen, om "serieuze" mensen te zoeken voor een stageplek, dan mag je ook wel een "serieuze" vacature plaatsen.
Wil je echt een goede programmeur, moet je gewoon vragen of hij een stukje pseudo code wil schrijven.
Dat is veel moeilijker, en veel meer toonaangevend dan een beetje een taaltje kennen.
Een echt programmeur hoeft er geen moeite mee te hebben om in een andere taal te gaan scripten, natuurlijk duurt het even voordat het snel gaat, maar als jij goede pseudo code schrijft, of i.i.g. bedenkt, heb je alleen nog maar de juiste syntaxis nodig.
Maar voor de rest vind ik dit heel veel, behalve een uitdaging.
Ik heb me ermee bemoeid, en ik kom best in aanmerking voor een stageplek, alleen momenteel nog niet, nog 2,5 jaar, en dan had je me alsnog kunnen aannemen, helaas dat t van mij niet meer hoeft =þ
Verwijder het topic even, santhe
p.s. Ik ben op dit moment aan het afstuderen, over een paar weken klaar en vervolgens moet ik een half jaar wachten totdat ik naar de universiteit mag. Als je echt een interessant voorstel had gedaan dan had ik daar best naar willen kijken.
Gewijzigd op 01/01/1970 01:00:00 door Arjan Kapteijn
Overbeeke schreef op 24.12.2008 22:22:
Verwijder het topic even, santhe
Gesloten.