infostabil > edb.internet.* > edb.internet.webdesign.serverside.php

Arne Vajhøj (08.05.2020, 22:06)
On 5/8/2020 3:39 PM, Jan Hansen wrote:
> Arne Vajhøj skrev:
> Det er sikkert rigtigt nok, hvis man ved hvad man har med at gøre.
> Jeg aner intet om python, og ser en linie med
> def system_to_ntp_time(timestamp):
> Så er det store spørgsmål, hvad er timestamp? Er det en variabel,
> eller er det noget python, der svarer til php's time()?
> Eller måske det, som uret i hjørnet af skærmen viser, når nu det
> hedder system_to_ntp_time?
> Efter at have googlet "python timestamp" kom jeg frem til at det
> må være en variabel.


Python:

def system_to_ntp_time(timestamp):

svarer til PHP:

function system_to_ntp_time($timestamp) {

Udfra konteksten så skal det være et argumentnavn.

Arne
Bertel Lund Hansen (09.05.2020, 08:35)
Jan Hansen skrev:

> Jeg aner intet om python, og ser en linie med


> def system_to_ntp_time(timestamp):


> Så er det store spørgsmål, hvad er timestamp?


Det kan kun være en variabel. Funktioner får overført variable på
den måde.

Jeg er lidt forundret over at du er så glad for $-tegnene. De
irriterer mig til stadighed. PHP er det eneste sprog jeg har
prøvet, der mærker variable.
Martin Larsen (09.05.2020, 10:47)
On 08.05.2020 11.55, Jan Hansen wrote:

>> Men du er ikke nødt til at bruge PHP til en
>> (dynamisk) hjemmeside.


> Det er korrekt. Jeg retter mig selv:
> ... at lave hjemmeside på webhotel.


Nope!

Jeg bruger mere og mere Vue.js. Det er et javascript-framework som er
uhyre elegant, intuitivt og lækkert at arbejde med. Og tilmed meget let
at lære.

Man arbejder deklarativt, dvs. en stor del af funktionaliteten
deklareres direkte i HTML-koden. Det gør at den samlede kode bliver
koncis, letforståelig og effektiv.

Et godt eksempel er [..] som jeg har lavet som
en del af et større igangværende projekt.

Det er en samlet oversigt over arrangementer i Dansk Orienterings-Forbund.

Data fås fra en bagvedliggende JSON-fil der opdateres to gange dagligt.
Resten renderes direkte i browseren.

Prøv at kigge på HTML-koden og se hvor simpel den er. Og det er ikke
fordi den tilhørende JS-fil så omvendt er specielt indviklet:
[..]

Et par udvalgte eksempler fra koden:

<input type="search" placeholder="Filtrér på klubnavn" v-model="filter"
title="ESC sletter feltet" autofocus @dblclick="resetFilter"
@keydown.esc="resetFilter">

v-model er det datasæt elementet er bundet til. Der er tale om en
tovejsbinding. Hvis data ændrer sig, gør indholdet af inputfeltet det
også. Og omvendt.

@dblclick kalder funktionen resetFilter når man dobbeltklikker på
elementet. Det samme med @keydown.esc som kalder samme funktion. Det er
altså kun hvis man trykker Escape. Man kunne også have valgt fx
@keydown.enter, så ville den reagere på Enter osv.

resetFilter sætter bare filter="".

<div class="klub" v-for="klub in klubber">

Dette er containeren for hver klub. Denne DIV bliver gentaget for hver
klub i klubber. Det sørger Vue selv for. Inde i hver DIV vil klub
referere til den aktuelle klub i iterationen.

<a target="_blank" :href="klubUrl(klub.fbID)">{{klub.name}}</a></h1>

Dette laver en A tag hvor href sættes ud fra klubbens facebook-ID.
Teksten {{klub.name}} erstattes af Vue automatisk af klubbens navn.

Jeg har arbejdet professionelt med programmering siden 1992 eller
deromkring og jeg har været forbi mange sprog og frameworks. Vue.js er
ubetinget det der har givet mig den bedste oplevelse!

Jeg kan klart anbefale det. Det er meget let at lære og egner sig også
til helt små projekter som Kim Ludvigsens valutaomregner. Og det kan
snildt bruges drypvis til en enkelt ting på en eksisterende hjemmeside.
Jan Hansen (09.05.2020, 13:34)
Bertel Lund Hansen skrev:

> Jan Hansen skrev:
> > Jeg aner intet om python, og ser en linie med
> > def system_to_ntp_time(timestamp):
> > Så er det store spørgsmål, hvad er timestamp?

> Det kan kun være en variabel. Funktioner får overført variable på
> den måde.


Ja, det ved du. Men når man intet aner om python, er det ikke nemt
at gennemskue, når det er maskeret som noget, der ligeså godt kunne
være en del af python.

> Jeg er lidt forundret over at du er så glad for $-tegnene.

De gør det muligt at se, hvad der er variabler. Hvis variablerne har
navne, der helt åbenlyst ikke er en del af programmeringssproget,
er $ selvfølgelig ganske overflødige.

> De irriterer mig til stadighed. PHP er det eneste sprog jeg har
> prøvet, der mærker variable.


Så har du ikke leget med basic på Vic-20 eller Commodore64, der
markeres strenge med $, og heltal med %.
De er beskrevet på side 6 (36) i brugsanvisningen på
[..]
Jan Hansen (09.05.2020, 15:27)
Martin Larsen skrev:

> On 08.05.2020 11.55, Jan Hansen wrote:
> Nope!
> Jeg bruger mere og mere Vue.js. Det er et javascript-framework som er
> uhyre elegant, intuitivt og lækkert at arbejde med. Og tilmed meget let
> at lære. ....
> Data fås fra en bagvedliggende JSON-fil der opdateres to gange dagligt.
> Resten renderes direkte i browseren.


Er den events.json noget, der bliver uploaded færdigt på siden? Hvis
webserverens eneste opgave er at sende færdige filer ud, virker det
selvfølgelig, uden hverken php eller andet programmering er nødvendig.
Bertel Lund Hansen (09.05.2020, 20:21)
Jan Hansen skrev:

> De gør det muligt at se, hvad der er variabler.


Jamen, det er navnenes position der afslører deres funktion.

> Så har du ikke leget med basic på Vic-20 eller Commodore64, der
> markeres strenge med $, og heltal med %.


Jo ... det havde jeg bare glemt.
Arne Vajhøj (09.05.2020, 21:02)
On 5/9/2020 7:34 AM, Jan Hansen wrote:
> Bertel Lund Hansen skrev:
>> Jeg er lidt forundret over at du er så glad for $-tegnene.


> De gør det muligt at se, hvad der er variabler. Hvis variablerne har
> navne, der helt åbenlyst ikke er en del af programmeringssproget,
> er $ selvfølgelig ganske overflødige.


Men er $ nu det rette tegn?

:-) :-) :-)

Jævnfør den klassiske [..] ...

Arne
Bertel Lund Hansen (09.05.2020, 21:17)
Arne Vajhøj skrev:

> Jævnfør den klassiske [..] ...


Smukt - især exit() => brexit()
Martin Larsen (10.05.2020, 00:47)
On 09.05.2020 15.27, Jan Hansen wrote:

> Er den events.json noget, der bliver uploaded færdigt på siden? Hvis
> webserverens eneste opgave er at sende færdige filer ud, virker det
> selvfølgelig, uden hverken php eller andet programmering er nødvendig.


Ja, JSON-filen bliver uploadet til serveren automatisk via ftp. Filen
bliver genereret på min Raspberry Pi af et NodeJS script. Men den kunne
komme hvorsomhelst fra.

Og du har ret, webserverens opgave er bare at sende de færdige filer ud.
Sitet kan faktisk køre direkte i browseren fra de statiske filer på min
harddisk.
Krabsen (10.05.2020, 08:21)
Den 08-05-2020 kl. 20:30 skrev Arne Vajhøj:
> On 5/8/2020 5:55 AM, Jan Hansen wrote:
> Du kan godt få web hoteller med andre sprog.
> Men de er normalt dyrere.
> tænke lidt fremad.
> Eksempel:
> Den gamle mysql extension forsvandt i 7.x, men erstatningerne
> havde været klar i et årti, og de sidste år inden 7.x kom
> på gaden var mysql extension dokumenteret som deprecated. Det
> er ikke rettidig omhu at vente til den forsvandt i 7.x


Og der findes et værktøj der konverterer koden mySql -> mySqlI
I mine tilfælde har det konverteret i omegnen af 99% af kommandoerne..
Arne Vajhøj (10.05.2020, 16:20)
On 5/10/2020 2:21 AM, Krabsen wrote:
> Den 08-05-2020 kl. 20:30 skrev Arne Vajhøj:
> Og der findes et værktøj der konverterer koden mySql -> mySqlI
> I mine tilfælde har det konverteret i omegnen af 99% af kommandoerne..


Kan det konvertere fra escape & streng konkatanering til
prepare?

Arne
Krabsen (11.05.2020, 08:35)
Den 10-05-2020 kl. 16:20 skrev Arne Vajhøj:
> On 5/10/2020 2:21 AM, Krabsen wrote:
> Kan det konvertere fra escape & streng konkatanering til
> prepare?


Keine Ahnung ;-)

Jeg ved blot at den har konverteret alle mine mySql kald uden problemer.
Strengmanipulationer laver jeg som regel for sig, inden jeg opbygger
Sql-kaldet..

Men prøv..

* MySQLConverterTool
* Andrey Hristov <andrey>, Ulf Wendel <ulf.wendel>
* @copyright 1997-2006 The PHP Group
Arne Vajhøj (11.05.2020, 15:34)
On 5/11/2020 2:35 AM, Krabsen wrote:
> Den 10-05-2020 kl. 16:20 skrev Arne Vajhøj:
> Keine Ahnung  ;-)
> Jeg ved blot at den har konverteret alle mine mySql kald uden problemer.
>  Strengmanipulationer laver jeg som regel for sig, inden jeg opbygger
> Sql-kaldet..
> Men prøv..
> * MySQLConverterTool
> * Andrey Hristov <andrey>, Ulf Wendel <ulf.wendel>
> * @copyright  1997-2006 The PHP Group


Jeg fandt en nyere udgave af det her:

[..]

Det laver bare en 1:1 oversættelse fra mysql_ kald til
matchende mysqli_ kald.

Det omskriver ikke til at bruge prepare.

Jeg vil ikke anbefale at bruge et sådant værktøj.

Kode der bruger mysql extension bør omskrives til
mysqli eller PDO extension med brug af prepare.

(eller ORM hvis det giver mening i konteksten)

Arne
Martin Larsen (11.05.2020, 15:42)
On 11.05.2020 15.34, Arne Vajhøj wrote:

> Kode der bruger mysql extension bør omskrives til
> mysqli eller PDO extension med brug af prepare.


Jeg synes PDO er rart at arbejde med. Bedre end mysqli.
Jan Hansen (16.05.2020, 17:38)
Bertel Lund Hansen skrev:

> På siden
> [..]
> kan man bestille IP-ranges for f.eks. Danmark. Listen bliver vist
> i den blå firkant til højre med en knap nedenunder der får
> indholdet kopieret til clipboard.


Der er nu stadigvæk ikke liv, når jeg eller
[..] prøver.
Men [..] og
[..]
siger der er liv, så jeg må åbenbart være banned på den side.

Men er deres data så præcise, så det kan bruges? Jeg kan se på
[..] at der er 2 "Unknown country code"
Maxmind og ip2location siger samstemmende, at
109.232.2.118 = Iran
193.36.116.142 = Danmark

Jeg har forsøgt at sætte en banned_intervals.inc.php sammen ud
fra ip2location's data, [..]
klik på de lande, der skal bannes og tryk på knappen.
Ligner output din fil?
Koden er selvfølgelig til at se med
[..]