Inloggen

Gebruikersnaam:
Wachtwoord:
 
 
Registreren

Heb je nog geen TaZrum account? Registreer je dan nu en log in om de hele site te kunnen gebruiken!



Algemeen Programmeertopic



1 2 4 6 8 9 10
Twilight

Avatar niet gevonden
Intrepid Traveler

Status: Offline
Posts: 31523
Geslacht: Man

31-10-2014 19:54:46
Ik snap OOP in Javascript niet helemaal geloof ik. Of ik zie iets over het hoofd. In ieder geval werkt dit wel:

Quote:
<script>

var dx = 850;
var x = 0;
var y = 450;

function init() {
b = document.getElementById("box1");

moveIt();
}

window.requestAnimFrame = (function() {
return window.requestAnimationFrame OR
window.webkitRequestAnimationFrame OR
window.mozRequestAnimationFrame OR
window.oRequestAnimationFrame OR
window.msRequestAnimationFrame OR
function (/* function */ callback, /* DOMElement */ element)
{
window.setTimeout(callback, 1000 / 60);
};
})();

function moveIt() {
x += (dx - x) * 0.15;

b.style.left = x + "px";
b.style.top = y + "px";

requestAnimFrame(moveIt, b);

}


</script>

</head>

<body onload="init()">

<div style="width:50px;height:50px;background:blue;position:absolute;" id="box1"></div>


</body>


Maar dit niet:

Quote:
<script>


function init() {
b = document.getElementById("box1");

moveIt(b, 0, 850, 0, 450);
}

window.requestAnimFrame = (function() {
return window.requestAnimationFrame OR
window.webkitRequestAnimationFrame OR
window.mozRequestAnimationFrame OR
window.oRequestAnimationFrame OR
window.msRequestAnimationFrame OR
function (/* function */ callback, /* DOMElement */ element)
{
window.setTimeout(callback, 1000 / 60);
};
})();

function moveIt(theobject, x, endx, y, endy) {
x += (endx - x) * 0.15;
y += (endy - y) * 0.15;

theobject.style.left = x + "px";
theobject.style.top = y + "px";

requestAnimFrame(moveIt(theobject, x, endx, y, endy), b);

}


</script>

</head>

<body onload="init()">

<div style="width:50px;height:50px;background:blue;position:absolute;" id="box1"></div>


</body>


Heb lijkt ook alsof mijn browser veel meer moeite heeft met de tweede code. Want het laden duurt iets langer, en het object komt wel op de juiste coördinaten terecht. Maar ik zie de animatie alleen niet.

(Heb OR even neergezet voor dubbel |, want TaZrum maakt dan lange verticale lijnen, merkte ik. )
Twilight

Avatar niet gevonden
Intrepid Traveler

Status: Offline
Posts: 31523
Geslacht: Man

24-06-2015 15:19:02
Stel: Ik maak dynamisch content aan en plaats dat in drie kolommen naast elkaar. Dus bij elk derde item gebruik ik HTML om een nieuwe regel te beginnen. Dit lukt mij allemaal wel. Maar soms kan het voorkomen dat de content niet precies per drie is, maar dat er op de laatste regel 2 items staan. Ik wil dan graag iets doen dat laatste item wat in de tweede kolom staat. Maar wat is een manier om die te vinden? Ik ben nu bezig met HTML en Craft/Twig, ik weet niet of iemand hier daar ervaring mee heeft. Daarom stel ik de vraag zonder specifieke programmeertaal. Ik denk ook dat het per taal niet zo veel zal verschillen hoe je zoiets als dit moet benaderen...

Weet iemand dit?
(Ondertussen ga ik zelf ook nog dingen proberen)
TaZ

Avatar niet gevonden
Mojitodrinker

Status: Offline
Posts: 17850
Geslacht: Man

25-06-2015 13:29:35
Als je weet hoeveel items er in totaal zijn, kan je normaliter met de % (modulus) operator uitvinden of het aantal mooi een drietal is. En zo niet, hoeveel elementen er dan nog op de laatste regel overblijven.

9 % 3 = 0
10 % 3 = 1
11 % 3 = 2
12 % 3 = 0
etc...
Twilight

Avatar niet gevonden
Intrepid Traveler

Status: Offline
Posts: 31523
Geslacht: Man

25-06-2015 13:54:30
Oh wat cool! Die operator is me niet echt bekend, dus daar is ie voor. Handig.
En dank u!
Mirielle

Avatar niet gevonden
Kitty nooo

Status: Offline
Posts: 21843
Geslacht: Vrouw

29-01-2016 14:38:26
Ik heb hier een vrij simpel stukje Python. Het passed wat variabelen naar Neuron (software om neuronen mee te modelleren) en roept dan via Neuron het simulatiescript (geschreven in hoc) aan. Dat script genereert zijn eigen outputfiles, dus Python hoeft geen info meer van de processen te ontvangen.

Ik krijg het alleen voor geen meter parallelized. Wat er nu gebeurt is dat er telkens één core 100% actief wordt, die voert een complete simulatie uit, en dan start er een willekeurige andere core met de volgende simulatie. Ik vermoed dat al mijn Python workers gewoon dezelfde sessie van Neuron aanroepen en dat het daarom serieel wordt uitgevoerd. Enig idee hoe ik dit kan oplossen? Ik kan wel Neuron meerdere keren starten vanuit verschillende terminals, dus het is in theorie mogelijk om meerdere sessies te draaien. Ik heb al wat dingen geprobeerd met subprocess.Popen en subprocess.call maar dat levert niet echt iets op.

Thanks in advance!


import numpy
from neuron import h
from multiprocessing.dummy import Pool as ThreadPool

pool = ThreadPool(6) #set pool size

varlist = []
for dend in range(100, 1500, 150):
for input in range(1, 11, 1):
varlist.append([dend, float("{0:.2f}".format(numpy.divide(input, float(100))))]) #making this a single list so it gets properly divided over CPUs

def run_simulations(dendinput, tstop=150):
#set hoc variables
hoccmd = 'pythondend = {}'.format(dendinput[0])
h(hoccmd)

hoccmd = 'pythoninput = {}'.format(dendinput[1])
h(hoccmd)

hoccmd = 'pythontstop = {}'.format(tstop)
h(hoccmd)

h.xopen("runShort.hoc") #start simulations

pool.map_async(run_simulations, varlist)
pool.close()
pool.join()


Deze post is 2 keer aangepast, waarvan de laatste aanpassing is gedaan door TaZ op 01-02-2016 13:51:06.
TaZ

Avatar niet gevonden
Mojitodrinker

Status: Offline
Posts: 17850
Geslacht: Man

01-02-2016 13:48:55
Ziet er logisch uit. Het enige dat ik me kan bedenken is dat "dend" ziet dat er al een instance draait, en die inderdaadl wil hergebruiken. Misschien is er een command-line argument o.i.d. om meerdere instances te maken.

ThreadPool map_async lijkt me voldoende, ik denk niet dat je zelf met threads en subprocesses hoeft te fiddlen.

[add]
Wacht, dat maakt geen sense, want "dend" is een variabele, geen programmanaam.

[add]
Misschien heb je hier wat aan: https://stackoverflow.com/questions/26432411/multiprocessing-dummy-in-python

Deze post is 2 keer aangepast, waarvan de laatste aanpassing is gedaan door TaZ op 01-02-2016 14:00:46.
Mirielle

Avatar niet gevonden
Kitty nooo

Status: Offline
Posts: 21843
Geslacht: Vrouw

02-02-2016 08:21:33
Ahh, thanks! Ik ga eens wat meer lezen over de global interpreter lock.

[add] Maar het vinden van een command om meerdere instances te maken zou eigenlijk ideaal zijn. Ik heb gisteren de hele dag bughunted om er vervolgens achter te komen dat Neuron niet het hele netwerk opnieuw initialized tenzij het in een nieuwe instance draait, dus zelfs zonder parallelization zal ik uiteindelijk iets met meerdere instances moeten doen. In elk geval goed om te weten dat er niet iets belachelijk mis is met mijn code, en in welke richting ik het ongeveer moet zoeken.
1 2 4 6 8 9 10