Když jsem začal psát své stránky (podotýkám, že je opravdu píši - tj. nepoužívám žádný generátor stránek - od toho mne odradil pohled na "source" dokumentu několikrát opravovaného nějakým generátorem), rozhodl jsem se použít vlastnost JavaScriptu - last Modified. Zdálo se mi, že je to ideální prostředek, jak zjistit, kdy byla ta která stránka naposledy opravena.
Na štěstí jsen se rozhodl stránky ještě "verzovat" - což ovšem dělám ručně a sem-tam na to zapomenu.
Po několikaletém provozu svých web-stránek jsem však zjistil, že používání vlastnosti lastModified
je většinou spíš ke škodě než k užitku:
a) ftp programy a file-mamagery při uploadování mění datum
uploadovaného dokumentu,
b) některé web-servery nepodporují tuto vlastnost,
c) různé prohlížeče používají různé formáty data; v případě, že
web-server neposílá tuto hodnotu, často používají aktuálmí čas počítače
Proto jsem se rozhodl všechny své stránky postupně opravit tak, že datum poslední
modifikace budu vkládat ručně ve formátu:
- anglický název měsíce
- dvojmístné pořadové číslo dne v měsícist/nd/th
- čtyřmístné číslo roku
- hh:mm
- rozdíl od UTC ve tvaru (UTC+hh:mm)
- např.: March 11th, 2004 20:40:00 (UTC + 01:00)
Více k problematice lastModified viz
http://www.merlyn.demon.co.uk
, zvláště pak
http://www.merlyn.demon.co.uk/js-date3.htm
a
http://www.merlyn.demon.co.uk/last-mod.htm
Dále se problematikou GMT (Greenwich Mean Time) a UTC (atomic clock time) zabývají tyto stránky:
http://www.dxing.com/utcgmt.htm
,
http://wwp.greenwichmeantime.com/home.htm
a
http://www.worldtimezone.com
Přehledná tabulka používaných časů je např. na :
http://www.timeanddate.com/library/abbreviations/timezones/index.html
Abych si usnadnil práci a nezapomněl na vložení data poslední změny dokumentu, napsal jsem
jednoduchy batch-file, který vždy spustím po jakékoliv opravě.
Nelíbilo se mi generování pracovního scriptu, ale problémy s použitím (volatile) proměnných nastavených
pomocí wsh (vbs) scriptů (nemožnost použít takto nastavenou proměnnou v otevřeném okně příkazového řádku)
mě donutily se této zásady vzdát.
Jedná se o sekvenci příkazů cmd.exe a programu "reg.exe" ver.: 3.0, který je součástí instalace Windows XP.
Dále je použit cygwinový (freeware) program sed. Tento batch-file funguje bez problémů v systému
Windows XP Pro cz. V jiných systémech jsem jej nezkoušel. Pro jinou (nečeskou) lokalizaci by bylo
pravděpodobně nutno upravit nastavení proměnných použitých pro datum a čas.
@ ECHO OFF SETLOCAL ECHO.%*|FIND "?">nul IF NOT ERRORLEVEL 1 SET ERR=0 FOR /F "TOKENS=2,3*" %%A IN ('ver') DO SET OS=%%A_%%B IF NOT "%OS%"=="Windows_XP" IF NOT "%OS%"=="Windows_2000" SET ERR=1&&GOTO E00 sed.exe --help>nul 2>&1 IF ERRORLEVEL 1 SET ERR=2&&GOTO E00 IF "%1"=="" SET ERR=3&&GOTO E00 IF NOT EXIST %1 IF NOT EXIST ~%1 SET ERR=4&&GOTO E00 IF NOT EXIST ~%1 FINDSTR /C:"MY_DATUM" %1>nul IF ERRORLEVEL 1 SET ERR=5&&GOTO E00 if EXIST ~%1 FINDSTR /C:"MY_DATUM" ~%1>nul IF ERRORLEVEL 1 SET ERR=5&&GOTO E00 IF NOT EXIST ~%1 REN %1 ~%1&&ECHO.&&ECHO Soubor "%1" byl prejmenovan na "~%1"&&ECHO. FOR /F "TOKENS=1,2,3,4 DELIMS=. " %%A IN ('DATE /T') DO ( SET DAY=%%B SET MONTH=%%C SET YEAR=%%D ) FOR /F "TOKENS=1,2 DELIMS=:" %%A IN ('time /T') DO ( SET HOUR=%%A SET MINUTE=%%B ) FOR /F "TOKENS=1,2,3 SKIP=1" %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\ControlSET001\Control\TimeZoneInformation" /v ActiveTimeBias') DO SET BIAS=%%C SET /A BIAS=%BIAS% IF "%DAY:~0,1%"==" " SET DAY:~0,1=0 IF "%DAY:~1,1%"=="1" SET SFFX=st&&GOTO L01 IF "%DAY:~1,1%"=="2" SET SFFX=nd&&GOTO L01 IF "%DAY:~1,1%"=="3" SET SFFX=rd&&GOTO L01 SET SFFX=th :L01 IF "%MONTH%"=="01" SET MONTH=January&&GOTO L02 IF "%MONTH%"=="02" SET MONTH=February&&GOTO L02 IF "%MONTH%"=="03" SET MONTH=March&&GOTO L02 IF "%MONTH%"=="04" SET MONTH=April&&GOTO L02 IF "%MONTH%"=="05" SET MONTH=May&&GOTO L02 IF "%MONTH%"=="06" SET MONTH=June&&GOTO L02 IF "%MONTH%"=="07" SET MONTH=July&&GOTO L02 IF "%MONTH%"=="08" SET MONTH=August&&GOTO L02 IF "%MONTH%"=="09" SET MONTH=September&&GOTO L02 IF "%MONTH%"=="10" SET MONTH=October&&GOTO L02 IF "%MONTH%"=="11" SET MONTH=November&&GOTO L02 IF "%MONTH%"=="12" SET MONTH=December&&GOTO L02 :L02 IF "%BIAS%"=="-60" SET TZ=UTC + 01:00&&GOTO L03 IF "%BIAS%"=="-120" SET TZ=UTC + 02:00&&GOTO L03 IF "%BIAS%"=="-180" SET TZ=UTC + 03:00&&GOTO L03 IF "%BIAS%"=="-240" SET TZ=UTC + 04:00&&GOTO L03 IF "%BIAS%"=="-300" SET TZ=UTC + 05:00&&GOTO L03 IF "%BIAS%"=="-360" SET TZ=UTC + 06:00&&GOTO L03 IF "%BIAS%"=="-420" SET TZ=UTC + 07:00&&GOTO L03 IF "%BIAS%"=="-480" SET TZ=UTC + 08:00&&GOTO L03 IF "%BIAS%"=="-560" SET TZ=UTC + 09:00&&GOTO L03 IF "%BIAS%"=="-600" SET TZ=UTC + 10:00&&GOTO L03 IF "%BIAS%"=="-660" SET TZ=UTC + 11:00&&GOTO L03 IF "%BIAS%"=="-720" SET TZ=UTC + 12:00&&GOTO L03 IF "%BIAS%"=="+60" SET TZ=UTC - 01:00&&GOTO L03 IF "%BIAS%"=="+120" SET TZ=UTC - 02:00&&GOTO L03 IF "%BIAS%"=="+180" SET TZ=UTC - 03:00&&GOTO L03 IF "%BIAS%"=="+240" SET TZ=UTC - 04:00&&GOTO L03 IF "%BIAS%"=="+300" SET TZ=UTC - 05:00&&GOTO L03 IF "%BIAS%"=="+360" SET TZ=UTC - 06:00&&GOTO L03 IF "%BIAS%"=="+420" SET TZ=UTC - 07:00&&GOTO L03 IF "%BIAS%"=="+480" SET TZ=UTC - 08:00&&GOTO L03 IF "%BIAS%"=="+560" SET TZ=UTC - 09:00&&GOTO L03 IF "%BIAS%"=="+600" SET TZ=UTC - 10:00&&GOTO L03 IF "%BIAS%"=="+660" SET TZ=UTC - 11:00&&GOTO L03 IF "%BIAS%"=="+720" SET TZ=UTC - 12:00&&GOTO L03 :L03 SET DATUM1=%MONTH% %DAY% SET DATUM2= %YEAR%, %HOUR%:%MINUTE% (%TZ%) sed.exe -e "s/MY_DATUM/%DATUM1%<SUP>%SFFX%<\/SUP> %DATUM2%/g" "~%1">%1 GOTO END :E00 :: CLS ECHO. ECHO ======================================================================== ECHO Batchfile: DATHTML.bat ECHO Version: 5.0 ECHO Written: 30.03.2004 ECHO Updated: - ECHO Author: Jiri Libal sr. ECHO ------------------------------------------------------------------------ ECHO Purpose: nastaveni hodnoty "Last-updated" v souborech "*.html" ECHO OS: Windows XP PRO cz ECHO Parameters: nazev souboru "file_name" ECHO ------------------------------------------------------------------------ ECHO Programs used: sed.exe (http://www.cygwin.com) ECHO Variables used: DATUM1 ECHO DATUM2 ECHO DAY ECHO MONTH ECHO YEAR ECHO HOUR ECHO MINUTE ECHO BIAS ECHO TZ ECHO SFFX ECHO Generated files: _filename (If not exists) ECHO ------------------------------------------------------------------------ ECHO Example of using: DATHTML my.html ECHO ------------------------------------------------------------------------ ECHO For timezones see for ex.: ECHO http://www.timeanddate.com/library/abbreviations/timezones/ ECHO ======================================================================== GOTO E0%ERR% :E01 ECHO. ECHO ======================================================================== ECHO !!! Batch-file funguje jen v OS "Windows XP" !!! ECHO ======================================================================== ECHO. GOTO :END :E02 ECHO. ECHO ======================================================================== ECHO !!! Program "sed.exe" neni nainstalovan nebo k nemu neexistuje cesta!!! ECHO ======================================================================== ECHO. GOTO :END :E03 ECHO. ECHO ======================================================================== ECHO !!! Je nutno zadat parametr %%1 (jmeno souboru, napr: "my.html") !!! ECHO ======================================================================== ECHO. GOTO :END :E04 ECHO. ECHO ======================================================================== ECHO !!! Soubor "%1" ani "~%1" v aktualnim adresari neexistuje !!! ECHO ======================================================================== ECHO. GOTO :END :E05 ECHO. ECHO ======================================================================== ECHO !!! Soubor "%1" ("~%1") Neobsahuje hledany retezec (MY_DATUM) !!! ECHO ======================================================================== ECHO. GOTO :END :END ENDLOCAL REM ========================================================================
Cygwinový program sed.exe je možno získat jako freeware přímo z oficiálních stránek cygwinu. Pro jehoho správnou funkci jej stačí nakopírovat spolu s knihovnou cygwin1.dll do jakéhokolov adresáře, který je uveden v proměnné %PATH%.
Version: 3.5 | Last updated: April 20th 2004, 17:28 (UTC + 02:00) | Author: Jiří Líbal sr. |