Please fix this annoyingly slow forum
Re: Please fix this annoyingly slow forum
Good thing the earth is a disk. Then you can restart the server at 2 o'clock at night when everyone is asleep 
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
PB v3.30 / v5.75 - OS Mac Mini - VM Window Pro / Linux Ubuntu
Downloads on my OneDrive
Re: Please fix this annoyingly slow forum
I have no ads when "uBlock Origin" is enabled, as well as when disabled.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 would like to suggest it, but is it really possible?skywalk wrote: Tue Mar 03, 2026 5:29 am Or spinup a mirror site just for bots and redirect all non-human accounts there.
Re: Please fix this annoyingly slow forum
@Olli, very nice code. I didn't expect that. Great!! PBbros. LOLOlli 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 !
So in the end, the earth is not flat?
If translation=Error: reply="Sorry, Im Spanish": Endif
Re: Please fix this annoyingly slow forum
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
Re: Please fix this annoyingly slow forum
I wasn't expecting thatOlli 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)
Re: Please fix this annoyingly slow forum
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
PureBasic 6.30/Windows 11 x64/Ryzen 7900X/32GB RAM/3TB SSD
Synology DS1821+/2*DX517, 164TB+82TB+28TB+2TB SSD
Raspi 400/500


