[ASP] Tellers zonder database

Pagina: 1
Acties:
  • 234 views sinds 30-01-2008
  • Reageer

  • trixx
  • Registratie: Maart 2001
  • Laatst online: 06-02 13:35

trixx

-CTU- SuiZide

Topicstarter
Ik heb een redirect met een simpele teller erin die nu schrijft in een txt bestand. Is het mogelijk om een regel aan te geven in het bestand waardoor ik meerdere tellers in hetzelfde bestand kan laten schrijven.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
Set fs = CreateObject("Scripting.FileSystemObject")
Path = server.mappath("test.txt")
Set a = fs.OpenTextFile(path)
counter = CInt(a.ReadLine)
If Session("counter") = "" then
Session("counter") = counter
counter = counter + 1
a.close
Set a = fs.CreateTextFile(path, True)
a.WriteLine(counter)
End If
a.Close
Response.Redirect("http://www.tweakers.net")
%>


thx.

Life is like a box of chocolate, it makes you sick.


  • mjax
  • Registratie: September 2000
  • Laatst online: 07:53
En je vraag is (los van het feit dat het vrij zinloos is om een bestand te openen en dan weer te sluiten als een bepaalde sessie variabele al gezet is)?

[ Voor 90% gewijzigd door mjax op 22-06-2006 15:30 ]


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 15-02 21:52

TeeDee

CQB 241

Meerdere regels in het test.txt bestand.
Per regel een counter en deze uitlezen?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 30-01 09:44

Jaspertje

Max & Milo.. lief

Zou je dan niet beter een verschrikkelijk simpele XML structuur willen gebruiken?
XML:
1
2
3
4
<COUNTERS>
  <COUNTER1 id="1">12 </COUNTER>
  <COUNTER1 id="2">1</COUNTER>
</COUNTERS>

[ Voor 40% gewijzigd door Jaspertje op 22-06-2006 15:38 ]


  • trixx
  • Registratie: Maart 2001
  • Laatst online: 06-02 13:35

trixx

-CTU- SuiZide

Topicstarter
mjax schreef op donderdag 22 juni 2006 @ 15:28:
En je vraag is (los van het feit dat het vrij zinloos is om een bestand te openen en dan weer te sluiten als een bepaalde sessie variabele al gezet is)?
Sorry was het vraagteken vergeten.

Is het mogelijk om een regel aan te geven in het bestand waardoor ik meerdere tellers in hetzelfde bestand kan laten schrijven? En dan op een regel die ik aangeef. Eventueel schrijven in een excel bestand.

Life is like a box of chocolate, it makes you sick.


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 15-02 21:52

TeeDee

CQB 241

Dat zeg ik toch?

Je kan per regel 1 bepaalde counter wegschrijven.
En met het inlezen van je text bestand kan je opgeven welke regel je wil hebben.

Kijk anders eens op http://www.w3schools.com/asp/asp_ref_textstream.asp

[ Voor 9% gewijzigd door TeeDee op 22-06-2006 17:08 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 15-02 17:57
Wat voor dingen wil je tellen?
Kun je neit de Application scope gebruiken?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
frickY schreef op donderdag 22 juni 2006 @ 18:11:
Kun je neit de Application scope gebruiken?
Die ben je ook doodleuk kwijt als je je server reboot of IIS restart of...

Maar @TS: Waarom maak je er niet een functie / Sub van ofzo?

ASP:
1
2
3
4
5
6
7
Private Sub UpdateCounter(ID)
  'Open File
  'Ga naar regel "ID"
  'Lees stand
  'Hoog 1 op
  'Sluit
End Sub


Makkelijker zou zijn om een XML-etje te gebruiken...


Zoiets: (effe vlug geflansd)

ASP:
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
31
32
33
34
<%
Option Explicit

Dim NewValue

NewValue = UpdateCounter(request.querystring("id"))
Response.Redirect "someurl.bla" & NewValue

Private Function UpdateCounter(ID)
    Dim oDoc, oCounter, oRoot, lVal, sFile

    Set oDoc = Server.CreateObject("MSXML.DomDocument")       'Get XML Document Object

    sFile = Server.MapPath("data.xml")                        'Default file
    oDoc.Load sFile                                           'Load file
    lVal=0                                                    'Default value

    Set oRoot = oDoc.SelectSingleNode("/counters")            'Get root of file
    If not oRoot is Nothing then                              '"Valid" counter file?
        Set oCounter = oRoot.SelectSingleNode("counter[@id='" & ID & "']")    'Get Counter node
        If oCounter is Nothing then                           'Found node?
            Set oCounter = oDoc.CreateElement("counter")      'Create counter node
            oCounter.SetAttribute("id") = ID                  'Set ID attribute
            oCounter.NodeTypedValue = lVal                    'Set default value
            oRoot.AppendChild oCounter                        'Add node to root
        End if
        lVal = Clng(oCounter.NodeTypedValue)                  'Get value
        lVal = lVal + 1                                       '+1
        oCounter.NodeTypedValue = lVal                        'Save to node
        oDoc.Save sFile                                       'Save to file
    end if
    UpdateCounter = lVal                                      'Return new value for this node
End Function
%>


Effe bestandje (data.xml) in zelfde map zetten met de volgende inhoud:
code:
1
<counters/>


Nieuwe ID's worden autmagisch aangemaakt en meteen opgehoogd... Deze functie geeft als bonus de nieuwe "tellerstand" terug, mocht je er nog iets mee willen doen ofzo.

[ Voor 156% gewijzigd door RobIII op 22-06-2006 18:34 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 15-02 21:52

TeeDee

CQB 241

RobIII je bent te goed voor de wereld.
alleen leert de TS er nu niks van

Heart..pumps blood.Has nothing to do with emotion! Bored


  • trixx
  • Registratie: Maart 2001
  • Laatst online: 06-02 13:35

trixx

-CTU- SuiZide

Topicstarter
Thx.

Ik weet genoeg. Gooi maar op slot.

Life is like a box of chocolate, it makes you sick.


  • bastv
  • Registratie: September 2005
  • Laatst online: 15-02 20:14
ASP:
1
2
Application("Teller") = Application("Teller") + 1  
Response.Write Application("Teller")  


kan het nog simpeler ?

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Uhhh reset de teller dan niet als de App Pool gerecycled wordt :?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 30-01 09:44

Jaspertje

Max & Milo.. lief

kenneth schreef op vrijdag 23 juni 2006 @ 09:10:
Uhhh reset de teller dan niet als de App Pool gerecycled wordt :?
Als de server gerestart wordt ja... dan ben je alles kwijt

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:49

gorgi_19

Kruimeltjes zijn weer op :9

@RobIII

Moet je oDoc niet expliciet op Nothing zetten?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Jaspertje schreef op vrijdag 23 juni 2006 @ 09:52:
[...]

Als de server gerestart wordt ja... dan ben je alles kwijt
Okay dan, dat dacht ik ook al, maar omdat bastv zo zeker van z'n zaak leek ... if it's too simple to be true ... :+

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Verwijderd

Ik ben een leek wat ASP betreft: werkt dit ook correct met meerdere threads?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
gorgi_19 schreef op vrijdag 23 juni 2006 @ 10:10:
@RobIII

Moet je oDoc niet expliciet op Nothing zetten?
In principe wel, en dat geldt eig'k voor ieder object, maar voor zover ik weet doet IIS6 dat tegenwoordig (met betere "garbage collection") beter dan IIS5, waar dat inderdaad aan te raden was.
Hoewel ik het (inderdaad) zelf nog steeds overal doe, laat ik het meestal weg in de "quick'n'dirty" voorbeeldjes die bij mij dan ook onder de noemer "flansen" vallen ;) Tevens wordt "het voorbeeld" hier niet korter/leesbaarder op en vind ik het maar overkill voor zo'n loos dingetje ;)

Als je het helemaal netjes doet geef je de objecten meteen vrij als je ze niet meer nodig hebt in de juiste volgorde (dus oCounter, oRoot, oDoc):

ASP:
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
31
32
33
34
35
36
37
<%
Option Explicit

Dim NewValue

NewValue = UpdateCounter(request.querystring("id"))
Response.Redirect "someurl.bla" & NewValue

Private Function UpdateCounter(ID)
    Dim oDoc, oCounter, oRoot, lVal, sFile

    Set oDoc = Server.CreateObject("MSXML.DomDocument")       'Get XML Document Object

    sFile = Server.MapPath("data.xml")                        'Default file
    oDoc.Load sFile                                           'Load file
    lVal=0                                                    'Default value

    Set oRoot = oDoc.SelectSingleNode("/counters")            'Get root of file
    If not oRoot is Nothing then                              '"Valid" counter file?
        Set oCounter = oRoot.SelectSingleNode("counter[@id='" & ID & "']")    'Get Counter node
        If oCounter is Nothing then                           'Found node?
            Set oCounter = oDoc.CreateElement("counter")      'Create counter node
            oCounter.SetAttribute("id") = ID                  'Set ID attribute
            oCounter.NodeTypedValue = lVal                    'Set default value
            oRoot.AppendChild oCounter                        'Add node to root
        End if
        lVal = Clng(oCounter.NodeTypedValue)                  'Get value
        lVal = lVal + 1                                       '+1
        oCounter.NodeTypedValue = lVal                        'Save to node
        oDoc.Save sFile                                       'Save to file
    end if
    Set oCounter = Nothing
    Set oRoot = Nothing
    Set oDoc = Nothing
    UpdateCounter = lVal                                      'Return new value for this node
End Function
%>


Je zou impliciet ook kunnen volstaan met alleen het vrijgeven van oDoc, maar dan vertrouw je dus IMHO wél op de "garbage collection" voor oRoot en oCounter (die dan hun "parent object" kwijt zijn) en niet voor oDoc ;)

Het is overigens wel 1 van de redenen waarom ik nog steeds met "Hungarian Notation" werk voor de niet-strong-typed languages in non-intelligente IDE's (ik gebruik Homesite). Zo zie je lekker snel welke variabelen objecten zijn en vrijgegeven dienen te worden en ken je niet zomaar een object toe aan een variabele die geen object hoort te/kan bevatten.

[ Voor 130% gewijzigd door RobIII op 23-06-2006 18:18 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • trixx
  • Registratie: Maart 2001
  • Laatst online: 06-02 13:35

trixx

-CTU- SuiZide

Topicstarter
Ben al zover dat ik enkele links nu kan verwerken. Alleen het volgende. Ik heb soms meerdere links op dezelfde pagina die geteld moeten worden. Als ik dat doe dan schrijft hij alleen de eerste die aangeklikt wordt. Hoe kan ik ervoor voor zorgen dat dit niet gebeurt?

Ik verwijs per links naar een aangemaakt asp. dus bv. tweakers.asp die ververst dan weer naar de juiste website of pagina. In de asp waarnaar ik link staat er nu dit.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
fp = Server.MapPath("tweakers.txt")
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile(fp)
ct = Clng(a.ReadLine)
if Session("ct") = "" then
Session("ct") = ct
ct = ct + 1
a.close
Set a = fs.CreateTextFile(fp, True)
a.WriteLine(ct)
end if 
a.Close
Response.Redirect("http://www.tweakers.net")
%>

Life is like a box of chocolate, it makes you sick.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
trixx schreef op donderdag 29 juni 2006 @ 12:37:
Ben al zover dat ik enkele links nu kan verwerken. Alleen het volgende. Ik heb soms meerdere links op dezelfde pagina die geteld moeten worden. Als ik dat doe dan schrijft hij alleen de eerste die aangeklikt wordt. Hoe kan ik ervoor voor zorgen dat dit niet gebeurt?

Ik verwijs per links naar een aangemaakt asp. dus bv. tweakers.asp die ververst dan weer naar de juiste website of pagina. In de asp waarnaar ik link staat er nu dit.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
fp = Server.MapPath("tweakers.txt")
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile(fp)
ct = Clng(a.ReadLine)
if Session("ct") = "" then
Session("ct") = ct
ct = ct + 1
a.close
Set a = fs.CreateTextFile(fp, True)
a.WriteLine(ct)
end if 
a.Close
Response.Redirect("http://www.tweakers.net")
%>
Hmmm, als je het mij vraagt ben je compleet verkeerd bezig. Waarom zet je die functie (mijne) niet in een redirect.asp en pass je niet gewoon een ID? Met een select-case kun je in die redirect.asp de juiste URL pakken en redirecten en met dat ID wordt automatisch de juiste teller opgehoogd....

[edit]
Als we toch aan het voorkauwen zijn:


ASP:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<%
Option Explicit

Dim lNewValue, lID, sURL

lID = ParseLong(request.querystring("id"),-1)
lNewValue = UpdateCounter(lID)  'In lNewValue wordt de nieuwe tellerwaarde opgeslagen (mocht je er nog iets mee willen doen)

Select case lID
  case 1: sURL = "http://www.google.com"
  case 2: sURL = "http://www.tweakers.net"
  case 3: sURL = "http://www.somesite.org"
  case 4: ... 'etc etc
  case else:
    sURL = "http://www.mysite.com/unknownredirect.asp"
End Select
Response.Redirect sURL
  
Private Function UpdateCounter(ID)
    Dim oDoc, oCounter, oRoot, lVal, sFile

    Set oDoc = Server.CreateObject("MSXML.DomDocument")       'Get XML Document Object

    sFile = Server.MapPath("data.xml")                        'Default file
    oDoc.Load sFile                                           'Load file
    lVal=0                                                    'Default value

    Set oRoot = oDoc.SelectSingleNode("/counters")            'Get root of file
    If not oRoot is Nothing then                              '"Valid" counter file?
        Set oCounter = oRoot.SelectSingleNode("counter[@id='" & ID & "']")    'Get Counter node
        If oCounter is Nothing then                           'Found node?
            Set oCounter = oDoc.CreateElement("counter")      'Create counter node
            oCounter.SetAttribute("id") = ID                  'Set ID attribute
            oCounter.NodeTypedValue = lVal                    'Set default value
            oRoot.AppendChild oCounter                        'Add node to root
        End if
        lVal = Clng(oCounter.NodeTypedValue)                  'Get value
        lVal = lVal + 1                                       '+1
        oCounter.NodeTypedValue = lVal                        'Save to node
        oDoc.Save sFile                                       'Save to file
    end if
    Set oCounter = Nothing
    Set oRoot = Nothing
    Set oDoc = Nothing
    UpdateCounter = lVal                                      'Return new value for this node
End Function

Public Function ParseLong(lngNumber, lngDefValue)
    ParseLong = lngDefValue
    On error resume next
    if (Len(lngNumber)>0) and isNumeric(lngNumber) then ParseLong = Clng(lngNumber)
End Function
%>


Nu kun je 'm aanroepen met <a href="redirect.asp?id=1">somelink</a> om naar google te gaan, en daarmee het ID variëren voor andere sites. Helemaal mooi zou het natuurlijk zijn als je die links uit een DB haalt ofzo (then again; dan had je die tellers ook net zo goed in een DB kunnen bijhouden :P ).

De "ParseLong" functie zorgt ervoor dat de queryvariabele "id" altijd (geldige long of niet) wordt omgezet in een long en anders naar een default value (-1 in dit geval). De select case vangt alle geldige ID's en anders wordt er geredirect naar een pagina (unknownredirect.asp) die je kunt gebruiken om aan de gebruiker te vertellen dat je het ID ('de link') niet kent.

Mooier kan ik het niet voor je maken... ;)

[ Voor 78% gewijzigd door RobIII op 29-06-2006 13:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • trixx
  • Registratie: Maart 2001
  • Laatst online: 06-02 13:35

trixx

-CTU- SuiZide

Topicstarter
Oke. Erg bedankt voor het compleet voorkauwen. Mag ik graag zien. Jammer alleen dat het bij mij niet werkt. De link gaat nergens heen.....

Life is like a box of chocolate, it makes you sick.


Verwijderd

trixx schreef op donderdag 29 juni 2006 @ 13:46:
Oke. Erg bedankt voor het compleet voorkauwen. Mag ik graag zien. Jammer alleen dat het bij mij niet werkt. De link gaat nergens heen.....
Ja, je mag zelf ook wel even debuggen?? Wat gaat er precies fout?

  • trixx
  • Registratie: Maart 2001
  • Laatst online: 06-02 13:35

trixx

-CTU- SuiZide

Topicstarter
Ik geef aan dat de links nergens heen gaat.... dan lijkt mij dat wel duidelijk. Er gebeurt verder niks als ik naar de redirect.asp?id=1 link.

Life is like a box of chocolate, it makes you sick.


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 15-02 21:52

TeeDee

CQB 241

Ja, maar debug dan eens even.
In plaats van een response.redirect sURL plaats je een response.write sURL of iets dergelijks.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • trixx
  • Registratie: Maart 2001
  • Laatst online: 06-02 13:35

trixx

-CTU- SuiZide

Topicstarter
TeeDee schreef op donderdag 29 juni 2006 @ 14:05:
Ja, maar debug dan eens even.
In plaats van een response.redirect sURL plaats je een response.write sURL of iets dergelijks.
Had ik al gedaan. Sorry niet gemeld. Maar dan is er een mooie error page

Life is like a box of chocolate, it makes you sick.


Verwijderd

trixx schreef op donderdag 29 juni 2006 @ 14:11:
[...]


Had ik al gedaan. Sorry niet gemeld. Maar dan is er een mooie error page
response.write drukt alleen een string af?? 8)7

[ Voor 10% gewijzigd door Verwijderd op 29-06-2006 14:24 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
trixx schreef op donderdag 29 juni 2006 @ 14:11:
[...]


Had ik al gedaan. Sorry niet gemeld. Maar dan is er een mooie error page
je hebt die "case 4..." ook weggehaald slimmerik? ;)
En als 'ie dan nog een error geeft dan zet je "friendly http errors" in je explorer uit en kijk je wat de exacte melding (en regelnummer) is van de ASP.

Komaan, we (ik) hebben het je compleet voorgekauwd, een béétje moeite mag je zelf ook wel doen...

[ Voor 36% gewijzigd door RobIII op 29-06-2006 14:37 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 15-02 21:52

TeeDee

CQB 241

RobIII schreef op donderdag 29 juni 2006 @ 14:36:
[...]
je hebt die "case 4..." ook weggehaald slimmerik? ;)
Lijkt me inderdaad wel handig :)

stom dat ik die niet zag. denk dat onderbewust ik zulke meuk al weghaal ofzo

offtopic:
RobIII, nog +/- 3 weekjes toch? Waar kunnen we de kaarten en gelukwensen naar toe zenden?

[ Voor 19% gewijzigd door TeeDee op 29-06-2006 14:39 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Stiegl
  • Registratie: Mei 2004
  • Laatst online: 02-02 14:39
Ik vind de oplossing met een XML file eigenlijk behoorlijk omslachtig voor het doel dat het dient. Volgens mij wil TS gewoon het volgende:

schijf file
code:
1
a.writeline(Join(arrCounters, ","))

lees file
code:
1
arrCounters = Split(a.readline(), ",")

of zoiets, dus gewoon opslaan in een komma gescheiden string.

Gezeul met DOMdocumenten lijkt me hier een beetje overkill

[ Voor 12% gewijzigd door Stiegl op 29-06-2006 14:56 ]

Uit onderzoek is gebleken dat 85% van alle statistieken niet klopt


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
TeeDee schreef op donderdag 29 juni 2006 @ 14:37:
[...]

Lijkt me inderdaad wel handig :)

stom dat ik die niet zag. denk dat onderbewust ik zulke meuk al weghaal ofzo

offtopic:
RobIII, nog +/- 3 weekjes toch? Waar kunnen we de kaarten en gelukwensen naar toe zenden?
offtopic:
3 a 4 weekjes inderdaad (de meningen lopen uiteen van de dokter die een eerste 'voorspelling' deed, toen de echo-mevrouw en uiteindelijk de kraam-dinges-dame... hoe dan ook, we verwachten de kleine rond 26/30 juli ongeveer
The Cheese schreef op donderdag 29 juni 2006 @ 14:49:
Ik vind de oplossing met een XML file eigenlijk behoorlijk omslachtig voor het doel dat het dient. Volgens mij wil TS gewoon het volgende:

schijf file
code:
1
a.writeline(Join(arrCounters, ","))

lees file
code:
1
arrCounters = Split(a.readline(), ",")

of zoiets, dus gewoon opslaan in een komma gescheiden string.

Gezeul met DOMdocumenten lijkt me hier een beetje overkill
Je wil niet weten hoeveel valkuilen ik hierin zie ;)

[ Voor 33% gewijzigd door RobIII op 29-06-2006 15:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Stiegl
  • Registratie: Mei 2004
  • Laatst online: 02-02 14:39
RobIII schreef op donderdag 29 juni 2006 @ 14:59:
Je wil niet weten hoeveel valkuilen ik hierin zie ;)
Zeker wel hoor, of het moet in het zoiets zitten...
Ik bedoel niet dat hij letterlijk mijn code moet overnemen, het is gewoon ff kort en snel beschreven hoe het volgens mij makkelijker kan.
Wat is het gevaar volgens jou?

edit: Uiteraard moet je natuurlijk wel een paar testen inbouwen zoals, bestaat mijn file, is mijn string gevuld, hoe lang is mijn array...

[ Voor 16% gewijzigd door Stiegl op 29-06-2006 15:11 ]

Uit onderzoek is gebleken dat 85% van alle statistieken niet klopt


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
The Cheese schreef op donderdag 29 juni 2006 @ 15:09:
edit: Uiteraard moet je natuurlijk wel een paar testen inbouwen zoals, bestaat mijn file, is mijn string gevuld, hoe lang is mijn array...
Ja, en dan ben je met een DOM toch net zo makkelijk af?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Stiegl
  • Registratie: Mei 2004
  • Laatst online: 02-02 14:39
RobIII schreef op donderdag 29 juni 2006 @ 23:18:
[...]

Ja, en dan ben je met een DOM toch net zo makkelijk af?
Want dan hoef je die testen niet te doen? 8)7

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim a
Dim fs
Dim Line
Dim Counters

Set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists("read.txt") Then
    Set a = fs.OpenTextFile("read.txt")
else
    Set a = fs.CreateTextFile("read.txt")
end if
If Not a.AtEndOfStream Then
    Line = a.ReadLine
    If Line <> "" Then Counters = Split(Line, ",")
End If

a.close

For i = 0 to Ubound(Counters)
    //Doe iets met Counters(i)
Next


Effe snel de read actie uitgeschreven, waarschijnlijk is dit al behoorlijk overdreven, omdat je er volledig zelf voor verantwoordelijk bent of de file er is of niet, je zou het dus ook gewoon met een generieke foutafhandeling kunnen doen als de file niet bestaat of niet correct is.

[ Voor 62% gewijzigd door Stiegl op 30-06-2006 08:35 ]

Uit onderzoek is gebleken dat 85% van alle statistieken niet klopt


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
The Cheese schreef op vrijdag 30 juni 2006 @ 08:21:
[...]

Want dan hoef je die testen niet te doen? 8)7

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim a
Dim fs
Dim Line
Dim Counters

Set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists("read.txt") Then
    Set a = fs.OpenTextFile("read.txt")
else
    Set a = fs.CreateTextFile("read.txt")
end if
If Not a.AtEndOfStream Then
    Line = a.ReadLine
    If Line <> "" Then Counters = Split(Line, ",")
End If

a.close

For i = 0 to Ubound(Counters)
    //Doe iets met Counters(i)
Next


Effe snel de read actie uitgeschreven, waarschijnlijk is dit al behoorlijk overdreven, omdat je er volledig zelf voor verantwoordelijk bent of de file er is of niet, je zou het dus ook gewoon met een generieke foutafhandeling kunnen doen als de file niet bestaat of niet correct is.
Dat begint er al op te lijken, maar to be honest zie ik niet in waarom dit "korter" of "sneller" of "beter" zou zijn. Erger: als je een teller wil resetten kun je tussen een heleboel cijfertjes de juiste gaan zoeken... Daarbij schrijf je 'm nog steeds niet volledig uit met dezelfde functionaliteit als in mijn voorbeeld, en is mijn voorbeeld overdreven netjes (alles op Nothing zetten e.d.). Je zult hooguit een paar regels code sparen, maar dat vind ik niet opwegen tegen het verschil in gebruiksvriendelijkheid...

Dat het FSO wat lichter is als een MSXML.DomDocument, daar kan ik inkomen. Maar is dat anno 2006 nog een issue? Ik zal de laatste zijn die "te royaal" omspringt met beschikbaar geheugen of cpu-cycles, maar je kunt het ook overdrijven.

En welke testen mis je dan in mijn code? Ik zie er geen? (hooguit een "abs(parselong(...))" om negatieve ID's te vangen ofzo.

[ Voor 22% gewijzigd door RobIII op 30-06-2006 11:56 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Stiegl
  • Registratie: Mei 2004
  • Laatst online: 02-02 14:39
RobIII schreef op vrijdag 30 juni 2006 @ 11:53:
[...]

Dat begint er al op te lijken, maar to be honest zie ik niet in waarom dit "korter" of "sneller" of "beter" zou zijn. Erger: als je een teller wil resetten kun je tussen een heleboel cijfertjes de juiste gaan zoeken... Daarbij schrijf je 'm nog steeds niet volledig uit met dezelfde functionaliteit als in mijn voorbeeld, en is mijn voorbeeld overdreven netjes (alles op Nothing zetten e.d.). Je zult hooguit een paar regels code sparen, maar dat vind ik niet opwegen tegen het verschil in gebruiksvriendelijkheid...

Dat het FSO wat lichter is als een MSXML.DomDocument, daar kan ik inkomen. Maar is dat anno 2006 nog een issue? Ik zal de laatste zijn die "te royaal" omspringt met beschikbaar geheugen of cpu-cycles, maar je kunt het ook overdrijven.

En welke testen mis je dan in mijn code? Ik zie er geen? (hooguit een "abs(parselong(...))" om negatieve ID's te vangen ofzo.
Wat gebeurt er als de file niet bestaat? En wat betreft dat zoeken, jij gebruikt toch ook hard-coded ID's? Ik gebruik dan hard-coded indexen.

Maar goed, het is eigenlijk allemaal lood om oud ijzer, mijn punt is gewoon dat het een wat omslachtige oplossing (en zwaarder) dan strikt noodzakelijk is.
Mocht je honderden concurrent bezoekers verwachten op je pagina, dan zal de mijne betere responstijden geven. Ik zeg niet dat jou oplossing fout is, ik laat alleen een alternatief zien.

[ Voor 11% gewijzigd door Stiegl op 30-06-2006 12:45 ]

Uit onderzoek is gebleken dat 85% van alle statistieken niet klopt


Verwijderd

The Cheese schreef op vrijdag 30 juni 2006 @ 12:43:
Mocht je honderden concurrent bezoekers verwachten op je pagina, dan zal de mijne betere responstijden geven. Ik zeg niet dat jou oplossing fout is, ik laat alleen een alternatief zien.
Misschien betere response tijden, maar volgens mij geen accurate telling. Tenzij readfile blocked.

  • Stiegl
  • Registratie: Mei 2004
  • Laatst online: 02-02 14:39
Verwijderd schreef op vrijdag 30 juni 2006 @ 13:01:
[...]

Misschien betere response tijden, maar volgens mij geen accurate telling. Tenzij readfile blocked.
Hmm, interessant, ik denk dat je met deze responstijden je niet echt druk hoeft te maken over file-locking, maar goed.
Maar als de file wel gelocked wordt in de XML oplossing dan zal deze toch een error geven of niet?

Uit onderzoek is gebleken dat 85% van alle statistieken niet klopt


Verwijderd

The Cheese schreef op donderdag 29 juni 2006 @ 15:09:
[...]
edit: Uiteraard moet je natuurlijk wel een paar testen inbouwen zoals, bestaat mijn file, is mijn string gevuld, hoe lang is mijn array...
En concurrency...
Pagina: 1