Archive for the ‘WWW’ Category

Zde je ukázka editace httpd.conf, ve které jsou vytvořeny 2 virtualhosty na stejném serveru pro 2 domény. Každý virtualhost může obsahovat virtuální adresáře, ve kterých se specifikuje chování adresáře, např. Options +Indexes umožní listování v adresáři.

Pomocí alias /virtuální_adresář /cesta_na_disku se vytvoří virtuální adresář.

Hosts

Mohu editovat soubor c:\WINDOWS\system32\drivers\etc\hosts. V něm zadat např.:

127.0.0.1 www.example1.com example1.com

S takovým zápisem je zajištěno, že se při zadání domén www.example1.com a example1.com provede poždavek na 127.0.0.1 a ne na veřejné adresy k www.example1.com a example1.com.

Ukázka virtualhostu

ServerName=host
DirectoryIndex= seznam indexových souborů v pořadí oddělených mezerou
<Directory…> = adresář, který bude mít nějaké vlastnosti. tento adresář lze udělat virtuálním přes zápis Alias /adresář /cesta_na_disku

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<VirtualHost *:80>
  ServerName www.example1.com
  DocumentRoot c:/download/zf-tutorial/public
  ErrorLog logs/www.example1.com-error_log
  CustomLog logs/www.example1.com-access_log common
  DirectoryIndex index.php
 
  <Directory c:/download/zf-tutorial/public>
      AllowOverride All
      Allow from All
      Options +Indexes FollowSymLinks
  </Directory>
 
</VirtualHost>
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
<VirtualHost *:80>
  ServerName net08
  DocumentRoot c:/development
  ErrorLog logs/net08-error_log
  CustomLog logs/net08-access_log common
  DirectoryIndex index.php
  Alias /web c:/Development/phpcore/
  Alias /pokus c:/Download/pokus/
 
    <Directory c:/Development>
      AllowOverride All
      Order allow,deny
      Allow from all
      Options +Indexes
    </Directory>
 
    <Directory c:/Development/phpcore>
      Order allow,deny
      Allow from all
      Options +Indexes
    </Directory>
 
    <Directory c:/Download/pokus>
      Order allow,deny
      Allow from all
      Options +Indexes
    </Directory>
 
</VirtualHost>
Share

PHP umožňuje nastavit výchozí hodnotu pro parametr do funkce(nebo metody). Zápis:

1
function foo($param=20)

způsobí že po zavolání funkce bez předaného parametru

1
foo();

bude ve funkci mít proměnná $param hodnotu 20.

Toto ovšem nebude fungovat v případě, že se zavolá funkce např. takto:

1
foo(null);

Parametr se předá, ovšem obsahuje null, což bude obsahovat i $param.

Ukázka situací, jak záleží na pořadí při předávání parametrů do funkce:

Zde se naplní první parametr(ne až druhý):

1
2
3
4
5
function foo($param1=10,$param2){
   echo "$param1: ".$param1."<br />";
   echo "$param2: ".$param2."<br />";
}
foo(20);

vrátí:
$param1: 20
$param2:

Zde je vidět že při volání s jedním parametrem se druhý doplní jeho výchozí hodnotou:

1
2
3
4
5
function foo2($param1,$param2=20){
   echo "$param1: ".$param1."<br />";
   echo "$param2: ".$param2."<br />";
}
foo2(10);

vrátí:
$param1: 10
$param2: 20

V tomto volání se do $param1 předá null. Není tedy brána výchozí hodnota 10.

1
2
3
4
5
function foo3($param1=10,$param2){
   echo "$param1: ".$param1."<br />";
   echo "$param2: ".$param2."<br />";
}
foo3(null,20);

vrátí:
$param1:
$param2: 20

Výsledkem je tedy to, že parametry s výchozí hodnotou by vždy měli být v posloupnosti psány až za parametry, které výchozí hodnotu neobsahují.

Share
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
--Název aplikace z níž je vykonáván aktuální sql dotaz:
select APP_NAME()
--Microsoft SQL Server Management Studio - Query
 
--Vrací kódovou stránku hodnoty collation
select Collationproperty('Czech_CI_AI','codepage')
--1250
 
--Funkce parsename vrací objekt z cesty oddělený tečkou:
--Získává data z cesty: server.databáze.schema.tabulka
select parsename('dbo.books',1)
--books
select parsename('dbo.books',2)
--dbo
 
--Vrací název aktuálně přihlášeného DB uživatele
select Current_User
select USER_NAME()
 
--Vrací název loginu
select SUSER_NAME()
 
--Vrací rozdílné délky řetězců. Len() vrací bez whitespaces:
select LEN('text    ')
--4
select dataLENgth('text    ')
--8
 
--vrací seznam podporovaných collation
select * from fn_Helpcollations()
 
--Číslo klientského PID procesu, který posílá požadavek na SQL server
select Host_Id()
--1912
 
--Jméno klientské stanice vysílající požadavek na SQL Server
select Host_Name()
--HONZA
 
--Vrací nastavení serverových vlastností
select Serverproperty('IsSingleUser')
--0
 
--Vrací nastavení vlastností aktuální relace
select Sessionproperty('ARITHABORT')
--1
 
--Vrací kdy byly naposledy aktualizovány statistiky pro index
--První parametr je číslo tabulky, druhý je číslo indexu
SELECT name AS index_name,
STATS_DATE(object_id, index_id) AS statistics_update_date
FROM sys.indexes
WHERE object_id = OBJECT_ID('books');
 
--Zjistí vlastnosti o daném objektu. jestli je tabulka, pohled, cizí klíč apod.
select Objectproperty(OBJECT_ID('books'),'istable')
--1
 
--Varcí údaje o datovém typu:
SELECT TYPEPROPERTY( 'int', 'PRECISION');
--10 - je v tomto případě maximální délka vkládaného čísla
 
--Funkce checksum vrací hash dané hodnoty. je lepší použít hashBytes + MD5. U checksum může docházet k větším kolizím.
--Funkce checksum má zajímavost - v případě order by CHECKSUM(*) jsou výsledky seřazeny podle toho, jak jdou sloupce v definici tabulky za sebou.
select * from books
order by CHECKSUM(*)
 
--Funkce columns_updated a update() se používají v after trigerech ke zjištění zda byl záznam vložen/změněn
Share

Pokud se v PHP kódu objeví fatal error, tak IIS7 z bezpečnostních důvodů potlačí výpis této hlášky do prohlížeče s odpovědí 200. Místo toho pošle Internal server error 500.

Řešením je nainstalovat IIS Admin Pack z adresy http://blogs.msdn.com/carlosag/archive/2008/05/13/IISAdminPackTechnicalPreview2Released.aspx

Poté se na serverové úrovni objeví Configuration editor, ve kterém se vybere sekce system.webserver/httErrors. V ní položka Existingresponse a změní se na hodnotu Passtrough. Poté se IIS 7 v tomto směru chová stejně jako IIS6.

Share

Při instalaci 64 bit verze SSMS dochází na Windows 2008 k chybě 29506. Řešením je spustit příkazový řádek z menu start jako Správce. Poté instalace proběhne v pořádku.

Share