Please fix this annoyingly slow forum

For everything that's not in any way related to PureBasic. General chat etc...
User avatar
mk-soft
Always Here
Always Here
Posts: 6605
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Re: Please fix this annoyingly slow forum

Post by mk-soft »

Good thing the earth is a disk. Then you can restart the server at 2 o'clock at night when everyone is asleep 8)
My Projects EventDesigner V3 / ThreadToGUI / OOP-BaseClass / Windows: Module ActiveScript
PB v3.30 / v5.75 - OS Mac Mini - VM Window Pro / Linux Ubuntu
Downloads on my OneDrive
User avatar
Piero
Addict
Addict
Posts: 1214
Joined: Sat Apr 29, 2023 6:04 pm
Location: Italy

Re: Please fix this annoyingly slow forum

Post by Piero »

Image
AZJIO
Addict
Addict
Posts: 2278
Joined: Sun May 14, 2017 1:48 am

Re: Please fix this annoyingly slow forum

Post by AZJIO »

Olli wrote: Sun Mar 01, 2026 9:48 am And please stop those ads which are very null... Look this link below, behind the photography of Brigitte Macron and a put-a-click slogan. How can I helped, and how can I help if I must also click "I do not consent" thausend times.... Near one hour lost just for one line, one link to give to KCC in the coding question...
I have no ads when "uBlock Origin" is enabled, as well as when disabled.
skywalk wrote: Tue Mar 03, 2026 5:29 am Or spinup a mirror site just for bots and redirect all non-human accounts there.
I would like to suggest it, but is it really possible?
User avatar
minimy
Addict
Addict
Posts: 899
Joined: Mon Jul 08, 2013 8:43 pm
Location: off world

Re: Please fix this annoyingly slow forum

Post by minimy »

Olli wrote: Fri Mar 06, 2026 4:17 pm The forum was in such a mode that I was bored. I coded anything stupid. Happily, Fred has decided a limit to 600 lines, that interrupted me !
@Olli, very nice code. I didn't expect that. Great!! PBbros. LOL

So in the end, the earth is not flat? :mrgreen:
If translation=Error: reply="Sorry, Im Spanish": Endif
User avatar
skywalk
Addict
Addict
Posts: 4315
Joined: Wed Dec 23, 2009 10:14 pm
Location: Boston, MA

Re: Please fix this annoyingly slow forum

Post by skywalk »

AZJIO wrote: Fri Mar 06, 2026 8:51 pm
skywalk wrote: Tue Mar 03, 2026 5:29 am Or spinup a mirror site just for bots and redirect all non-human accounts there.
I would like to suggest it, but is it really possible?
Yes, anything is possible. Rent a cloud VPS or make your own with raspberryPI and a UPS. Then redirect bots to the mirror.
Also easy to disable guest accounts.
Force a captcha for all new users.
Use bot profiles for bots!
The nice thing about standards is there are so many to choose from. ~ Andrew Tanenbaum
User avatar
idle
Always Here
Always Here
Posts: 6230
Joined: Fri Sep 21, 2007 5:52 am
Location: New Zealand

Re: Please fix this annoyingly slow forum

Post by idle »

Olli wrote: Fri Mar 06, 2026 4:17 pm The forum was in such a mode that I was bored. I coded anything stupid. Happily, Fred has decided a limit to 600 lines, that interrupted me !

Code: Select all

Global sw, sh, countDown = 300, life = 3, score = 0, coinQty = 0, trial = 1
Global Dim key.i(255)

Procedure keyb(i.i)
   Protected r, ks = KeyboardPushed(i)
   If ks And Not key(i)
      r = 1
   EndIf
   key(i) = ks
   ProcedureReturn r
EndProcedure

Procedure c31(r, g, b)
   ProcedureReturn RGB(r * 255, g * 255, b * 255)
EndProcedure

Procedure c41(a, r, g, b)
   ProcedureReturn RGBA(r * 255, g * 255, b * 255, a * 255)
EndProcedure

InitSprite()
InitKeyboard()
ExamineDesktops()
sw = DesktopWidth(0)
sh = DesktopHeight(0)
OpenScreen(sw, sh, 32, "", #PB_Screen_SmartSynchronization, DesktopFrequency(0) )
CreateSprite(0, 256, 128)
TransformSprite(0, 0, 0, sw, 0, sw, sh, 0, sh)
Global Dim p.L(3, 3)   ; 4 palettes * 4 attributs * 32 bits   =             1Kbits =      128-bytes palette (4 palettes)
Global Dim s.u(63, 7)  ; 256 * 8 * 16 bits =             32Kbits =     1-kilobytes sprite (256 sprites)
Global Dim sp(255)     ;                                               2 KB
Global Dim c.a(31, 15) ; 32 columns * 16 rows * 8 bits = 4Kbits text = 512-bytes text

For palette = 0 To 3
   p(palette, 0) = RGBA(0, 0, 0, 0)
   For color = 1 To 3
      p(palette, color) = RGBA(Random(255), Random(255), Random(255), 255)
   Next
Next
For char = 0 To 63
   For charLine = 0 To 7
      s(char, charLine) = Random($FFFF)
   Next
Next

;- start

p(0, 0) = RGBA(%00000000, %00000000, %00000000, %11111111) ; décor arrière (opaque) 4 niveaux de bleus
p(0, 1) = RGBA(%00000000, %00000000, %01010101, %11111111)
p(0, 2) = RGBA(%00000000, %00000000, %10101010, %11111111)
p(0, 3) = RGBA(%00000000, %01010101, %11111111, %11111111)

p(1, 0) = RGBA(%00000000, %00000000, %00000000, %00000000) ; allié (semi opaque) transparent
p(1, 1) = RGBA(%00000000, %00000000, %01010101, %11111111) ;                     bleu
p(1, 2) = RGBA(%11111111, %00000000, %00000000, %11111111) ;                     rouge
p(1, 3) = RGBA(%11111111, %10101010, %01010101, %11111111) ;                     chair

p(2, 0) = RGBA(%00000000, %00000000, %00000000, %00000000) ; décor avant transp 
p(2, 1) = RGBA(%00000000, %01010101, %00000000, %11111111) ;             noir
p(2, 2) = RGBA(%00000000, %11111111, %00000000, %11111111) ;             vert
p(2, 3) = RGBA(%11111111, %11111111, %11111111, %11111111) ;             blanc

p(3, 0) = RGBA(%00000000, %00000000, %00000000, %00000000) ; ennemi transparent
p(3, 1) = RGBA(%01010101, %00000000, %00000000, %11111111) ;        rouge sombre
p(3, 2) = RGBA(%11111111, %01010101, %00000000, %11111111) ;        orange
p(3, 3) = RGBA(%11111111, %11111111, %00000000, %11111111) ;        jaune

For i = 0 To 7
   s(0, i) = 0
Next
s(1, 0) = %0011111111111100
s(1, 1) = %1000111111110010
s(1, 2) = %1010001111001010
s(1, 3) = %1010100000101010
s(1, 4) = %1010100000101010
s(1, 5) = %1010000101001010
s(1, 6) = %1000010101010010
s(1, 7) = %0001010101010100

s(2, 0) = %0101010100000000
s(2, 1) = %1111111101010101
s(2, 2) = %1110101011111111
s(2, 3) = %1110101010101010
s(2, 4) = %1010101010101010
s(2, 5) = %1010101010101010
s(2, 6) = %1010101001010101
s(2, 7) = %0101010100000000

s(3, 0) = %0000000000000000
s(3, 1) = %0101010101010101
s(3, 2) = %1111111111111111
s(3, 3) = %1010101010101010
s(3, 4) = %1010101010101010
s(3, 5) = %1010101010101010
s(3, 6) = %0101010101010101
s(3, 7) = %0000000000000000

s(4, 0) = %0000000101010100
s(4, 1) = %0101011111111101
s(4, 2) = %1111111010101011
s(4, 3) = %1010101010101010
s(4, 4) = %1010101010101010
s(4, 5) = %1010101010101010
s(4, 6) = %0101011010101001
s(4, 7) = %0000000101010100

s(5, 0) = %0000000001010101
s(5, 1) = %0101010111111111
s(5, 2) = %1111111110101010
s(5, 3) = %1010101010101010
s(5, 4) = %1010101010101001
s(5, 5) = %1010101010101001
s(5, 6) = %0101010110101001
s(5, 7) = %0000000001010101

s(6, 0) = %0011111111110000
s(6, 1) = %1111000000111100
s(6, 2) = %1111000000111100
s(6, 3) = %0011000000110000
s(6, 4) = %1111000000111100
s(6, 5) = %1111000000111100
s(6, 6) = %0011111111110000
s(6, 7) = %0000000000000000

s(7, 0) = %0000000000110000
s(7, 1) = %0000000000111100
s(7, 2) = %0000000000111100
s(7, 3) = %0000000000110000
s(7, 4) = %0000000000111100
s(7, 5) = %0000000000111100
s(7, 6) = %0000000000110000
s(7, 7) = %0000000000000000

s(8, 0) = %0011111111110000
s(8, 1) = %0000000000111100
s(8, 2) = %0000000000111100
s(8, 3) = %0011111111110000
s(8, 4) = %1111000000000000
s(8, 5) = %1111000000000000
s(8, 6) = %0011111111110000
s(8, 7) = %0000000000000000

s(9, 0) = %0011111111110000
s(9, 1) = %0000000000111100
s(9, 2) = %0000000000111100
s(9, 3) = %0011111111110000
s(9, 4) = %0000000000111100
s(9, 5) = %0000000000111100
s(9, 6) = %0011111111110000
s(9, 7) = %0000000000000000

s(10, 0) = %0011000000110000
s(10, 1) = %1111000000111100
s(10, 2) = %1111000000111100
s(10, 3) = %0011111111110000
s(10, 4) = %0000000000111100
s(10, 5) = %0000000000111100
s(10, 6) = %0000000000110000
s(10, 7) = %0000000000000000

s(11, 0) = %0011111111110000
s(11, 1) = %1111000000000000
s(11, 2) = %1111000000000000
s(11, 3) = %0011111111110000
s(11, 4) = %0000000000111100
s(11, 5) = %0000000000111100
s(11, 6) = %0011111111110000
s(11, 7) = %0000000000000000

s(12, 0) = %0011111111110000
s(12, 1) = %1111000000000000
s(12, 2) = %1111000000000000
s(12, 3) = %0011111111110000
s(12, 4) = %1111000000111100
s(12, 5) = %1111000000111100
s(12, 6) = %0011111111110000
s(12, 7) = %0000000000000000

s(13, 0) = %0011111111110000
s(13, 1) = %0000000000111100
s(13, 2) = %0000000000111100
s(13, 3) = %0000000000110000
s(13, 4) = %0000000000111100
s(13, 5) = %0000000000111100
s(13, 6) = %0000000000110000
s(13, 7) = %0000000000000000

s(14, 0) = %0011111111110000
s(14, 1) = %1111000000111100
s(14, 2) = %1111000000111100
s(14, 3) = %0011111111110000
s(14, 4) = %1111000000111100
s(14, 5) = %1111000000111100
s(14, 6) = %0011111111110000
s(14, 7) = %0000000000000000

s(15, 0) = %0011111111110000
s(15, 1) = %1111000000111100
s(15, 2) = %1111000000111100
s(15, 3) = %0011111111110000
s(15, 4) = %0000000000111100
s(15, 5) = %0000000000111100
s(15, 6) = %0011111111110000
s(15, 7) = %0000000000000000

s(16, 0) = %0000101010000000
s(16, 1) = %0010101010101000
s(16, 2) = %0011111101111100
s(16, 3) = %0000111111110000
s(16, 4) = %0000101010101011
s(16, 5) = %0011101010100010
s(16, 6) = %0000010101010110
s(16, 7) = %0000101000000000

s(17, 0) = %0000101010000000
s(17, 1) = %0010101010101000
s(17, 2) = %0011111101111100
s(17, 3) = %0000111111110000
s(17, 4) = %0000101010100000
s(17, 5) = %0000101011100000
s(17, 6) = %0000010101000000
s(17, 7) = %0000001010000000

s(18, 0) = %0000001010100000
s(18, 1) = %0010101010101000
s(18, 2) = %0011110111111100
s(18, 3) = %0000111111110000
s(18, 4) = %1110101010100000
s(18, 5) = %1000101010100000
s(18, 6) = %1001010101010000
s(18, 7) = %0000000010100000

s(19, 0) = %0000001010100000
s(19, 1) = %0010101010101000
s(19, 2) = %0011110111111100
s(19, 3) = %0000111111110000
s(19, 4) = %0000101010100000
s(19, 5) = %0000101110100000
s(19, 6) = %0000000101010000
s(19, 7) = %0000001010000000

s(20, 0) = %0000000101010000
s(20, 1) = %0001111111100100
s(20, 2) = %0011101010101000
s(20, 3) = %0111101111011101
s(20, 4) = %0111101110011101
s(20, 5) = %0111100101111000
s(20, 6) = %0001101111100100
s(20, 7) = %0000000101000000

s(21, 0) = %0000000000000000
s(21, 1) = %0000011111010000
s(21, 2) = %0000111010110000
s(21, 3) = %0000111111110000
s(21, 4) = %0000111110110000
s(21, 5) = %0000110101110000
s(21, 6) = %0000011111010000
s(21, 7) = %0000000101000000

s(22, 0) = %0000000000000000
s(22, 1) = %0000001010000000
s(22, 2) = %0000001111000000
s(22, 3) = %0000001111000000
s(22, 4) = %0000001111000000
s(22, 5) = %0000001111000000
s(22, 6) = %0000001010000000
s(22, 7) = %0000000000000000

s(23, 0) = %0000000000000000
s(23, 1) = %0000011111010000
s(23, 2) = %0000111010110000
s(23, 3) = %0000111010110000
s(23, 4) = %0000111010110000
s(23, 5) = %0000111001110000
s(23, 6) = %0000011111010000
s(23, 7) = %0000000101000000

s(24, 0) = %1010101010101010
s(24, 1) = %1000101111100010
s(24, 2) = %1010111010111010
s(24, 3) = %1010101010111010
s(24, 4) = %1010101111101010
s(24, 5) = %1010101010101010
s(24, 6) = %1000101111100010
s(24, 7) = %1010101010101010

s(25, 0) = %1010101010101010
s(25, 1) = %1000101010100010
s(25, 2) = %1010101010101010
s(25, 3) = %1010101010101010
s(25, 4) = %1010101010101010
s(25, 5) = %1010101010101010
s(25, 6) = %1000101010100010
s(25, 7) = %1010101010101010

s(26, 0) = %0111111110101001
s(26, 1) = %0111101010101001
s(26, 2) = %0111101010101001
s(26, 3) = %0111101010101001
s(26, 4) = %0001111010100100
s(26, 5) = %0001111010100100
s(26, 6) = %0001111010100100
s(26, 7) = %0001111010100100

s(27, 0) = %0001111010100100
s(27, 1) = %0001111010100100
s(27, 2) = %0001111010100100
s(27, 3) = %0001111010100100
s(27, 4) = %0001111010100100
s(27, 5) = %0001111010100100
s(27, 6) = %0001111010100100
s(27, 7) = %0001111010100100

s(28, 0) = %0001111010100100
s(28, 1) = %0001111010100100
s(28, 2) = %0001111010100100
s(28, 3) = %0111101010101001
s(28, 4) = %0111101010101001
s(28, 5) = %0111101010101001
s(28, 6) = %0111101010101001
s(28, 7) = %0001111010100100

s(29, 0) = %0001111010100100
s(29, 1) = %0001111010100100
s(29, 2) = %0001111010100100
s(29, 3) = %0001111010100100
s(29, 4) = %0011110101010100
s(29, 5) = %0111101010101001
s(29, 6) = %0111101010101001
s(29, 7) = %0111101001010101

S(30, 0) = %0011111011110000
S(30, 1) = %1101010101011100
S(30, 2) = %1101010100011100
S(30, 3) = %1001010001011000
S(30, 4) = %1101010001011100
S(30, 5) = %1101010001011100
S(30, 6) = %0011111011110000
S(30, 7) = %0000000000000000   

S(31, 0) = %0000000000000000
S(31, 1) = %0011000000110000
S(31, 2) = %0000110111000000
S(31, 3) = %0000011101000000
S(31, 4) = %0000110111000000
S(31, 5) = %0011000000110000
S(31, 6) = %0000000000000000
S(31, 7) = %0000000000000000   

S(30, 0) = %0000000000000000
S(30, 1) = %0000000000000000
S(30, 2) = %0010110000000000
S(30, 3) = %1011011011101000
S(30, 4) = %1000101111111010
S(30, 5) = %0000101010101001
S(30, 6) = %0000010101010100
S(30, 7) = %0011000100010011   

S(31, 0) = %0000000000000000
S(31, 1) = %0000000000000000
S(31, 2) = %0010110000000000
S(31, 3) = %1011011011101000
S(31, 4) = %1000101111111010
S(31, 5) = %0000101010101001
S(31, 6) = %0000010101010100
S(31, 7) = %0000110000001100   

For spp = 0 To 3
   For spi = 0 To 63
      i = spp << 6 | spi
      sp(i) = CreateSprite(#PB_Any, 8, 8, #PB_Sprite_AlphaBlending)
      If 1
         StartDrawing(SpriteOutput(sp(i) ) )
         DrawingMode(#PB_2DDrawing_AllChannels)
         For y = 0 To 7
            For x = 0 To 7
               c = p(spp, (s(spi, y) >> (2 * x) ) & 3)
               Box(y, x, 1, 1, c)
            Next
         Next
         StopDrawing()
      EndIf
      xA = 0
      yA = 0
      xB = sw / 32
      yB = sh / 16
      TransformSprite(sp(i), xB, yA, xB, yB, xA, yB, xA, yA)
   Next   
Next

Procedure prnb(x, y, n, ln, pal) ;    (pr)int    (n)um(b)er    (prnb)
   a$ = Right(ReplaceString(Space(ln), " ", "0") + Str(Abs(n) ), ln)
   For i = 1 To Len(a$)
      a = Asc(Mid(a$, i, 1) ) - '0' + 6 + pal << 6
      c(x + i - 1, y) = a
   Next
EndProcedure

Procedure backMode1()
   For x = 0 To 31
      For y = 0 To 15
         c(x, y) = 0
      Next
      c(x, 1) = 1
      If Abs(x - 16) > 4
         c(x, 4) = 1
      EndIf
      c(1, 2) = 5 + 128       ; green pipes
      c(1, 3) = 5 + 128
      c(1, 7) = 5 + 128
      c(1, 11) = 5 + 128
      c(0, 14) = 5 + 128
      c(31, 2) = 2 + 128
      c(31, 3) = 2 + 128
      c(31, 7) = 2 + 128
      c(31, 11) = 2 + 128
      c(31, 14) = 2 + 128
      If Abs(x - 16) > 6
         c(x, 8) = 1
      EndIf
      If Abs(x - 16) > 3
         c(x, 12) = 1
      Else
         c(x, 7) = 129 - 64
      EndIf
      c(x, 15) = 1
   Next
   c(0, 0) = 81
   c(1, 0) = 95
   prnb(5, 0, 00, 2, 3)
   c(0, 1) = 154 - 128
   For y = 2 To 11
      c(0, y) = 155 - 128
   Next
   c(0, 12) = 157 - 128
EndProcedure

torSpeedX = 1
marX = 0
marY = 670
period = 1000 / 30
Repeat
   Repeat
      clock = ElapsedMilliseconds()
      Delay(period - 1)
   Until clock > alarm
   alarm = clock + period
   ExamineKeyboard()
   ClearScreen(0)
   If keyb(#PB_Key_Tab) Or trial
      trial = 0
      mode + 1
      mode & 1
      If mode = 1
         backMode1()
      EndIf
   EndIf
   If mode = 1                   ; anims
      prnb(1, 0, life, 2, 1)
      coinCycle + 1
      coinCycle & 3
      If coinCycle = 0
         coin + 1
         coin & 3
         c(4, 0) = 212 + coin
      EndIf
      If clock > timeAlarm
         timeAlarm + 1000
         countDown - 1
         prnb(8, 0, countDown, 3, 2)
      EndIf
      hour = Val(FormatDate("%HH", Date() ) )
      minu = Val(FormatDate("%ii", Date() ) )
      prnb(12, 0, hour, 2, 0)
      prnb(14, 0, minu, 2, 0)
      prnb(17, 0, marY, 3, 2)
      prnb(24, 0, score, 8, 0)
   EndIf
   If Keyb(#PB_Key_F12)
      Blur ! 1
   EndIf
   
   SpriteQuality(Blur)
   For ty = 0 To 15
      For tx = 0 To 31
         If mode = 0
            c(tx, ty) = tx & $F | ty << 4
         EndIf
         DisplayTransparentSprite(sp(c(tx, ty) ), tx * xB, ty * yB)
      Next
   Next
   If mode = 1
      DisplaySprite(sp(156 - 128), 0, (y + 8) * yB / 8)
      If vy < 4
         vy + 1
      EndIf
      y + vy
      If y > 88
         y = 0
         vy = 0
         life - 1
      EndIf
      
      torY = 24
      torY = 14*8
      torTime ! 1
      torX - torSpeedX
      If torX < 0
         torX = sw * 8 / xB
      EndIf
      jmpX = 0 - 1 - Sin(clock * clock)
      jmpY = 0 - 1 - Cos(clock * clock) 
      DisplayTransparentSprite(sp(30 + torTime + 128), (torX) * xB / 8, (torY) * yB / 8)
      If marVX < 0
         marFlow = 2
      Else
         If marVX > 0
            marFlow = 0
         EndIf
      EndIf
      DisplayTransparentSprite(sp(16 + marTime + 64 + marFlow), marX, marY)
      marMoving = 1
      If KeyboardPushed(#PB_Key_Right)
         If marVX < 24
            marVX + 1
         EndIf
      Else
         If marVX > 0
            marVX - 1
         EndIf
         If KeyboardPushed(#PB_Key_Left)
            If marVX > 0 - 24
               marVX - 1
            EndIf
         Else
            marMoving = 0
            If marVX < 0
               marVX + 1
            EndIf
         EndIf
      EndIf
      If marY < 670
         marVY - 4
      EndIf
      If marY > 670
         marY = 670
         marVY = 0
      EndIf
      marY - marVY
      If KeyboardPushed(#PB_Key_Up)
         marVY = 16
      EndIf
      If marVX
         marTime ! marMoving
         marX + marVX
         If marX > DesktopWidth(0)
            marX - DesktopWidth(0)
         Else
            If marX < 0
               marX + DesktopWidth(0)
            EndIf
         EndIf
      EndIf
   EndIf
   FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or keyb(#PB_Key_Tab)
I wasn't expecting that 8)
User avatar
jacdelad
Addict
Addict
Posts: 2109
Joined: Wed Feb 03, 2021 12:46 pm
Location: Riesa

Re: Please fix this annoyingly slow forum

Post by jacdelad »

Piero wrote: Fri Mar 06, 2026 8:10 pm Image
This picture is leaving out the elephants and the turtle.
Good morning, that's a nice tnetennba!

PureBasic 6.30/Windows 11 x64/Ryzen 7900X/32GB RAM/3TB SSD
Synology DS1821+/2*DX517, 164TB+82TB+28TB+2TB SSD
Raspi 400/500
Post Reply