[en] Installing SilverStripe on IIS server

UPDATE 2009-02-17: As Sigurd from Silver­Stri­pe team sta­tes in a com­ment, You sho­uld­n’t need to fol­low my „how­to” — at least if You’re using IIS 7. Sin­ce I wro­te this „how­to”, Silver­Stri­pe websi­te has been impro­ved to inc­lu­de instal­la­tion instruc­tions on IIS so ple­ase give it a try befo­re pro­ce­eding with my old instructions.

1. Install ISAPI/Rewrite. I have no idea how to do it sin­ce it was alre­ady instal­led at my pro­vi­de­r’s server, but the­re pro­ba­bly is a limi­ted free ver­sion that is enough.
2. Down­lo­ad Silver­Stri­pe archi­ve and extract it to Your server.
3. Go to Your serve­r’s URL and fill in instal­ler deta­ils as usual.
4. After rew­ri­te­test fails, cre­ate httpd.ini file in Silver­Stri­pe root direc­to­ry and make its con­tents like that (what it basi­cal­ly does with ISAPI/Rewrite is to mimic Apa­che­’s mod_rewrite):

[ISAPI_Rewrite] RewriteEngine On

RewriteCond URL (?!.*gif|.*jpg|.*png|.*swf|.*xml|.*css|.*flv|.*js|.*php).*
RewriteCond URL (?!.*\?).*
RewriteRule (.*) /sapphire/main.php\?url=$1 [I,L]

RewriteCond URL (?!.*gif|.*jpg|.*png|.*swf|.*xml|.*css|.*flv|.*js|.*php).*
RewriteCond URL .*\?.*
RewriteRule (.*)\?(.*) /sapphire/main.php\?url=$1&$2 [I,L]

5. Click „click here to pro­ce­ed any­way” link and You sho­uld be redi­rec­ted to an ugly looking „suc­cess­ful­ly instal­led” page.
6. Now edit /sapphire/core/control/Director.php file and change

$s = (isset($_SERVER[‘SSL’]) || isset($_SERVER[‘HTTPS’])) ? ‘s’ : ”;

line to

$s = (isset($_SERVER[‘SSL’]) || (isset($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] == ‘on’)) ? ‘s’ : ”;

7. Refresh the „suc­cess­ful­ly instal­led” page and if it looks pret­ty now, You know You cor­rec­tly did step 6.
8. Click „Click here to dele­te the install files.” link so You don’t have a secu­ri­ty hole.
9. Now edit /sapphire/main.php file and at the very begin­ning add the­se lines:

if (!isset($_SERVER[‘REQUEST_URI’])) {
$_SERVER[‘REQUEST_URI’] = $_SERVER[‘SCRIPT_NAME’];
}

10. Fol­lo­wing are hacks I needed to add so i18n works on IIS. If You don’t use i18n, You’ll pro­ba­bly be fine witho­ut the­se hacks. This method is in sapphire/core/i18n.php file:

pro­tec­ted sta­tic func­tion get_owner_module($name) {
if (substr($name,-3) == ‘.ss’) {
glo­bal $_TEMPLATE_MANIFEST;
$path = current($_TEMPLATE_MANIFEST[substr($name,0,-3)]);
// hacks for IIS start –>
$path = str_replace(‘\sapphire/..’, ”, $path);
$path = str_replace(‘C:’, ”, $path);
$path = str_replace(‘\’, ‘/’, $path);
$bf = Director::baseFolder();
$bf = str_replace(‘C:’, ”, $bf);
$bf = str_replace(‘\’, ‘/’, $bf);
// – end hacks
ereg($bf . ‘/([^/]+)/’,$path,$module);
} else {
glo­bal $_CLASS_MANIFEST;
$path = $_CLASS_MANIFEST[$name];
// hacks for IIS start –>
$path = str_replace(‘\sapphire/..’, ”, $path);
$path = str_replace(‘C:’, ”, $path);
$path = str_replace(‘\’, ‘/’, $path);
$bf = Director::baseFolder();
$bf = str_replace(‘C:’, ”, $bf);
$bf = str_replace(‘\’, ‘/’, $bf);
// – end hacks
ereg($bf . ‘/([^/]+)/’,$path,$module);
}
return $module[1];
}

11. Enjoy 🙂
12. If You can’t enjoy for some reason, try chec­king out this thre­ad at Silver­Stri­pe forum whe­re most of the abo­ve info is found.

Java: jak zrobić BufferedImage z grafiki SVG

SVG to przy­jem­ny, otwar­ty for­mat gra­fi­ki wek­to­ro­wej. Aby go wyko­rzy­stać w Javie, potrzeb­na będzie biblio­te­ka Batik. Żeby łatwo uzy­skać Buf­fe­re­dI­ma­ge zamiast zapi­sy­wać wyren­de­ro­wa­ne SVG do pli­ku, sko­rzy­sta­my z kla­sy któ­rej kod znaj­du­je się na jed­nej z list dyskusyjnych.

Powyż­sze roz­wią­za­nie moż­na wygo­oglać, lecz oto moja war­tość doda­na 🙂 Mini­mal­na lista pli­ków .jar z Bati­ka, któ­re trze­ba dodać do pro­jek­tu by SVGRen­de­rer dzia­łał prawidłowo:

  • batik-anim.jar
  • batik-awt-util.jar
  • batik-bridge.jar
  • batik-css.jar
  • batik-dom.jar
  • batik-ext.jar
  • batik-gvt.jar
  • batik-parser.jar
  • batik-rasterizer.jar
  • batik-script.jar
  • batik-svg-dom.jar
  • batik-transcoder.jar
  • batik-util.jar
  • batik-xml.jar
  • batik.jar
  • xerces_2_5_0.jar
  • xml-apis-ext.jar

MythTv 0.21 — wreszcie coś po polsku + problem z MythVideo

Pisa­łem o MythTv już wcze­śniej, wspo­mi­na­jąc że wszyst­ko jest faj­ne, ale pol­skiej wer­sji brak. W komen­ta­rzu syskom wspo­mniał, że poświę­cił kil­ka dni na zro­bie­nie tłu­ma­cze­nia i fak­tycz­nie — wer­sja 0.21 sprzed paru dni wita użyt­kow­ni­ka pol­skim menu 🙂 Kil­ka rze­czy jest z pew­no­ścią do popra­wie­nia (Biblio­te­ka Media*** np. — co to za gwiazd­ki?) i spo­ro zosta­ło do prze­tłu­ma­cze­nia, ale idzie to w dobrą stronę.

MythTv w wer­sji 0.21 tra­fi­ło do repo­zy­to­rium back­ports w Ubun­tu, dzię­ki cze­mu nie­po­trzeb­ne się sta­ło doda­wa­nie repo­zy­to­riów „trze­cich”, takich jak te z pro­jek­tu Myth­bun­tu. Wystar­czy (uży­wa­jąc sudo) odko­men­to­wać odpo­wied­nie wpi­sy w /etc/apt/sources.list i zro­bić apt-get update.

Nie­ste­ty, bez pro­ble­mów się nie oby­ło — po apgrej­dzie ser­we­ra i klien­tów (klien­ty 0.20 nie chcą dzia­łać popraw­nie z ser­we­rem 0.21) oka­za­ło się, że wszyst­ko dzia­ła, poza słu­żą­cym do odtwa­rza­nia fil­mów DivX i podob­nych plu­gi­nem MythVi­deo. Po poszpe­ra­niu w sie­ci zna­la­złem info, że MythVi­deo zosta­ło połą­czo­ne z Myth­DVD. Nale­ża­ło więc odin­sta­lo­wać myth­dvd (apt-get remo­ve myth­dvd) żeby odblo­ko­wać moż­li­wość zainstalowania/upgrade’u mythvi­deo (apt-get install mythvi­deo). To wszyst­ko — teraz już działa 🙂

Nowości na acogitosis

Przede wszyst­kim prze­pra­sza­my wszyst­kich (czy­li dwóch) czy­tel­ni­ków za przej­ścio­we kło­po­ty z oglą­da­niem tej stro­ny zwią­za­ne z prze­nie­sie­niem hostin­gu do innej fir­my. Myślę, że pro­pa­ga­cja w DNSach już się zakoń­czy­ła, więc pro­ble­my — także.

Wraz z prze­no­si­na­mi nasta­ła tutaj naj­now­sza (2.3.2) wer­sja Word­Pres­sa, a tak­że doda­na zosta­ła obsłu­ga logo­wa­nia Ope­nID w komentarzach.

Nie­ste­ty, po prze­no­si­nach oka­za­ło się że poprzed­nia skór­ka mia­ła zako­do­wa­ne na sztyw­no ele­men­ty paska bocz­ne­go, któ­re po pro­stu pozni­ka­ły. W związ­ku z tym tym­cza­so­wa zmia­na wyglą­du ser­wi­su — tym­cza­so­wa, bo w naj­bliż­szym cza­sie posta­ram się wrzu­cić tu autor­ski skin 🙂

Jeśli znaj­dzie­cie coś, co nie dzia­ła — daj­cie znać w komen­ta­rzach. Dzi­siaj posta­ram się jesz­cze prze­tłu­ma­czyć skór­kę na język polski.

Access database (mdb file), format() function and ODBC/PHP

Can You tell a dif­fe­ren­ce between

SELECT *, format(Data_ur, "yyyy-mm-dd") AS Datur FROM Czlonkowie

and

SELECT *, format(Data_ur, 'yyyy-mm-dd') AS Datur FROM Czlonkowie

?

It turns out that when using ODBC to con­nect to Micro­soft Access data­ba­se (in an mdb file), one has to use sin­gle quotes when wri­ting func­tion para­me­ters. The first sta­te­ment runs fine from the Access itself, but when cal­led thro­ugh the ODBC (for instan­ce when using PHP and PDO) it returns emp­ty set (it doesn’t even throw an exception).

The second sta­te­ment (with sin­gle quotes) runs fine thro­ugh ODBC. Worth remembering.