Wednesday, May 28. 2008
To get the external authentication to work with vrdp you need to do one symlink:
cd /lib
sudo ln -sf libpam.so.0 libpam.so
<a href="http://forums.virtualbox.org/viewtopic.php?t=5264&sid=a2ad49cf8e24105f612d56d578d61370">source</a>
Wednesday, May 28. 2008
According to Googled sources Fedora 9 contains a newer version of X that is a development version which Nvidia does not support. Also according to Googled sources there is a Beta release that can be made to work, provided that two conditions are met:
- Your X-server is started with -ignoreABI
- And your Modules-section in xorg.conf contains Disable "glx"
There also is a freshrpm that might do the trick, I tried it without adding Disable "glx" and it did not work for me. So I did some hand standing to get it erased and did the following instead.
First condition is a bit challenge as the X-server is started from gdm. Which means that gdm should pass the -ignoreABI flag to the server. I don't know if it possible by tweaking with gdm-configuration somehow but I found this with some more Googling. Download the gdm source rpm and install it but do not build it. Under /usr/src/redhat/SOURCES you will find file called gdm-2.22.0-ignoreABI.patch. I verified it's contents to see that it doesn't drink my coffee or steal my lunch if applied. Then I did something that Fedora Cookbook probably frowns upon,
cd
sudo yumdownloader --source gdm
sudo rpm -ivh gdm gdm-2.22.0-5.fc9.src.rpm
Idea behind of this was to get the newest source of the gdm package. I changed the directory to /usr/src/redhat/SPECS and did sudo rpmbuild -bp gdm.spec to get patched gdm source. Again I did this to see if -ignoreABI was already present in the code. It was not, so I added it to the gdm.spec. This meant changing three lines in the spec file:
- Release-line, I added .5 before the %{?dist} to get a newer version of the rpm that was already installed
- Added Patch6: -line between Patch5: and Patch99: lines, containing: "Patch5: gdm-2.22.0-fix-pam-mkhomedir.patch"
- Added %patch6-line between patch5 and patch6 lines, containing: "%patch6 -p1 -b .ignoreABI"
Then it was simply sudo rpmbuild -ba gdm.spec and upgrading from RPMS/i386/gdm-2.22.0-5.5.fc9.i386.rpm and RPMS/gdm-user-switch-applet-2.22.0-5.5.fc9.i386.rpm.
Then I rebooted to single user and installed the beta-version as root. I tweaked to xorg.conf on /etc/X11 and got X up and working. The disable "glx"-line is necessary to make nvidia-tools to run. Without it they will crash. Unfortunately the same line gives headache to nvidia-settings, it is unable to parse it, so you have to hand merge it's proposed changes to your xorg.conf. Here is mine:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 1.0 (buildmeister@builder57) Wed Apr 2 00:14:06 PST 2008
# Xorg configuration created by system-config-display
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" RightOf "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerFlags"
Option "Xinerama" "0"
EndSection
Section "Module"
Disable "glx"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# keyboard added by rhpxl
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "fi"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Dell"
ModelName "Seiko"
HorizSync 30.0 - 75.0
VertRefresh 60.0
Option "dpms"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor1"
VendorName "Dell"
ModelName "1908FP"
HorizSync 31.0 - 83.0
VertRefresh 56.0 - 76.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Videocard0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Quadro NVS 140M"
BusID "PCI:1:0:0"
Screen 0
EndSection
Section "Device"
Identifier "Videocard1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Quadro NVS 140M"
BusID "PCI:1:0:0"
Screen 1
EndSection
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
Option "TwinView" "1"
Option "TwinViewXineramaInfoOrder" "DFP-0"
Option "metamodes" "CRT: nvidia-auto-select +0+0, DFP: nvidia-auto-select +1280+0"
# Option "TwinView" "0"
# Option "metamodes" "DFP: nvidia-auto-select +0+0"
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Videocard1"
Monitor "Monitor1"
DefaultDepth 24
Option "TwinView" "0"
Option "metamodes" "CRT: nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Sunday, May 4. 2008
After a week of being "happy" user of Ubuntu 8.04 I'm ready to list the reasons why you should install it too:
- The almost working webcam will not work at all
- Java will give you more headache, for example O3spaces assistant will not work and running java applets will steal your audio until you kill the browser.
- Bluetooth will stop working unless you downgrade your bluetooth packages. Of course this has to be done again after next upgrade.
- Audio capture doesn't work with Skype
- You will have Firefox 3 beta 5 as your default browser, which almost works and almost has support for all the plugins you are used to
- There are more installable packages than before and more DEAD ON INSTALL ones too.
Ubuntu to 8.04 Hardly Working - a.k.a. how to make vista look great again!
Ten days for salvation. It is time to switch back.
Wednesday, February 20. 2008
select
extract(month from koska) as kuukausi,
extract(year from koska) as vuosi,
sum(lkm) as lkm,
kommentti as tili,
laji
from spam
group by
extract(year from koska),
extract(month from koska),
kommentti,
laji
order by vuosi, kuukausi;
Sunday, January 27. 2008
sudo iptables -N LIMIT_SSH
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j LIMIT_SSH
sudo iptables -A LIMIT_SSH -m recent --set --name SSH
sudo iptables -A LIMIT_SSH -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP
sudo iptables -A LIMIT_SSH -j ACCEPT
sudo service iptables save
Perustuu Sebastienin blogaukseen aiheesta.
Debianissa palomuurisäännöt saa talteen roottina komennolla:
iptables-save > /etc/firewall.conf
mutta jotta ne tulisivat ladatuiksi bootin yhteydessä, on oltava tiedosto: /etc/network/if-up.d/iptables, jossa on rivit:
#!/bin/sh
iptables-restore < /etc/firewall.conf
Monday, November 12. 2007
Installing is not possible, as far as I know, with the bundled jre and not possible with FC 8 bundled jre Ice-tea. You should download and install Sun's jdk to install. You can find very thorough and good instructions from Mauriat Miranda how to do that. You do not have to set the Sun's kit as the default but you can if you wish.
After installing Sun's java you have to do a slight modification to it due a problem with a xcb. If you scroll down a bit on that problem entry you'll find the workaround. In my case it meant following:
cd /usr/java/latest/jre/lib/i386
sudo sed -i 's/XINERAMA/FAKEEXTN/g' xawt/libmawt.so
sudo sed -i 's/XINERAMA/FAKEEXTN/g' headless/libmawt.so
Then I was able to successfully install Zend Neon Beta with following command:
./ZendStudioNeon-BETA.bin LAX_VM /usr/java/latest/bin/java
NOTE: The second BETA installed without any LAX_VM addition. And you should also take a peek at the comments (kommentit).
Sunday, October 28. 2007
Ubuntu 7.0.4 näytti niin mukavalta ja tuntui toimivan mukavasti sekä telkkarikoneessa että töissä työasemassa, että otin ja asensin uusimman (7.10) sen kunniaksi kotiläppäriin. Se mikä ensin näytti voitolta on nyt osoittautunut häviöksi, aika isoksi sellaiseksi. Pieni kiusa on, että virtuaalikonsolit eivät toimi ja buuttaaminen koostuu reippaasta kolmesta minuutista mustaa ruutua. Iso kiusa on, että kone hyytyy epäsäännöllisin ajoin 30-90 sekunniksi totaalisesti. Toinen pieni kiusa on, että en saa virtual boxissa toimimaan Nokian PC-suitea ja koska se ei toimi, olen edelleen tilanteessa, jossa en pääse eroon dualbootista, enkä siten toisaalta tarvitse virtualboxia. Suite on sitä mieltä, että puhelimeni on tuntematon. Tämä johtunee joko siitä, että windows-asennus virtual boxiin on kikkailtu tai sitten siitä, että usb-tuki on jollakin tapaa rikkipoikkisärki. Hyytymisen veikkaan johtuvan siitä, että ääniajurit ovat rikkipoikkisärki ja elän toivossa, että vaihteeksi Fedora-sarjassa olisi paremmin koottu kerneli. FC6:ssa oli, FC7:ssa ei...
Se mitä hain ubuntusta ohitse FC6:sen, toteutui osittain: amarok toimii ja ytimessä on suoraan sekä langallisen että langattoman ajurit. Myös OO, Firefox ja Thunderbird ovat riittävän uusia versioita jo valmiiksi. Ja paketteja on huomattavasti enemmän suoraan synapticilla haettavan kuin Fedoralla, tosin tässä taas pätee se minkä aiemminkin olen todennut, määrä ei korvaa laatua. Osa paketeista on huonosti koottu - eivät toimi sillä kombinaatiolla sälää mitä minulla on asennettuna, toistaiseksi sentään mikään uusi ei vielä ole poistanut mitään vanhaa tai rikkonut jotakin.
Tosin tähän tilanteeseen pääsy vei puolitoista päivää, kun telkkarikoneen perusasennus ja työtyöaseman perusasennus veivät vain nelisen tuntia. Saa sitten nähdä paljonko tuhraantuu kasin kanssa tapellessa. Pitäisi varmaan hakea testireleasen live ja katsoa buuttaako se lainkaan.
Virtual Boxin usb-ongelma ei ilmeisesti ole kone- eikä distribuutio eikä windows-asennuskohtainen vaan jokin sarjaa "gotcha"-oleva ongelma. Samaan seinään törmään FC8:n rawhidella ja Dellin D830 läppärillä. Asentuu, puhelin löytyy mutta nokia sanoo, että puhelin on tuntematon.
Saturday, August 25. 2007
Ilmeisesti maailmalla on liikenteessä uusi hyökkäys, jolla on tarkoitus käydä serendipity-blogien kimppuun. Tänä aamuna noin 6.20 alkaen on web-palvelimme kimppuun hyökännyt 481 yksittäistä ip-osoitetta tähän mennessä ja aiheuttanut melkoista kuormaa. Vastaiskumme ei ole toistaiseksi ollut järin tehokas, vaan puolittain manuaalinen. Pudotimme palomuurilla kaiken liikenteen näistä 481 hostista. Nämä 481 hostia olivat generoineet liikennettä noin 32000 pyynnön edestä kuormittaen koko koneen siten, että sivustojen käyttö oli lievästi sanottuna tahmeaa. Veikkaan, että joku muu web-hotellipalvelin olisi tästä kuormasta jo kyykähtänyt. Erittäin kivaa on myös ajatella mitä hyökkäys tekisi budjetillemme, jos maksaisimme jokaisesta pyynnöstä tai siirretystä tavusta.
Pudottamiseen käytetty algoritmi on seuraava:
- grepataan trackbackit apachen logista, cutilla napataan oikeat kentät logista
- syötetään php-filtterille, joka katsoo onko edellinen trackback pyyntö tullut 61 sekunnin sisällä, jos on kasvatetaan osumalaskuria yhdellä
- jos osumalaskuri on viisi, asetetaan palomuurisääntö
jos hyökkäys jatkuu, harkitsen prosessin automatisointia seuraavasti:
tail -f /var/apache2/access.log|grep "type=trackback&" access.log|cut -f1,4 -d' ' |/usr/bin/php trackkill.php|sudo bash
Automatisoinnissa on kaksi ikävää pointtia, jätettävä taas yksi prosessi pyörimään taustalle screenin sisään sekä huolehdittava siitä, että automatisointi alkaa alusta login kuoltua. Php-koodi on tässä:
#!/usr/bin/php
<?php
$blockem=array();
$interval=61;
$hits=5;
$monthnames = array('Jan'=>1, 'Feb'=>2, 'Mar'=>3, 'Apr'=>4, 'May'=>5, 'Jun'=>6, 'Jul'=>7,
'Aug'=>8, 'Sep'=>9, 'Oct'=>10, 'Nov'=>11, 'Dec'=>12 );
$input=fopen('php://stdin',"r");
$dropped=array();
while(!feof($input)) {
$rivi=fgets($input,512);
if(!strlen($rivi)) {
continue;
}
list($ip,$timestamp)=explode(' ',$rivi);
// echo "$ip:$timestamp\n";
// Timestamp: [25/Aug/2007:15:30:53
$timestamp=substr($timestamp,1);
$timestamp=str_replace('/',':',$timestamp);
// echo "$timestamp\n";
list($day,$month,$year,$hour,$minutes,$seconds)=explode(':',$timestamp);
$seconds=substr($seconds,0,strlen($seconds)-2);
// echo "|$day-$month-$year $hour:$minutes:$seconds|\n";
$month=$monthnames[$month];
// echo $month;
$timestamp=mktime($hour,$minutes,$seconds,$month,$day,$year);
// echo $timestamp;
if(@is_null($blockem[$ip])) {
$blockem[$ip]['last_hit']=$timestamp;
$blockem[$ip]['hits']=1;
} else {
if(($timestamp-$blockem[$ip]['last_hit'])<=61) {
$blockem[$ip]['last_hit']=$timestamp;
$blockem[$ip]['hits']++;
} else {
$blockem[$ip]['hits']=1;
$blockem[$ip]['last_hit']=$timestamp;
}
}
if($blockem[$ip]['hits']=$hits) {
if(@is_null($dropped[$ip])) {
$dropped[$ip]=true;
echo "iptables -I INPUT -s $ip -j DROP\n";
}
}
}
fclose($input);
?>
Saturday, August 4. 2007
Linux Journalin elokuun viikkokirjeessä oli hauska vihje koskien virtuaalisen koskettimiston ja timidity-midi-palvelimen yhdistämisestä. Ikävä kyllä ohjeet sellaisenaan eivät ihan tuota voittoa. Pienellä pähkäilyllä ja konsultoimalla googlea löysin sivun Linuxin ALSA-äänistä ja keksin oikeat loitsut:
timidity -Os -iA &
vkeybd &
cat /proc/asound/seq/clients
aconnect 129:0 128:0
Eli käynnistetään timidity alsa-sekvensseriasiakkaana ja työnnetään äänet ALSAlla pihalle. Käynnistetään virtuaalikoskettimisto. Selvitetään mitkä ovat portit, tässä 129:0 on virtuaalikoskettimisto ja 128:0 on timidity. Ja johan soi.
Valitettavasti tämä johti välittömästi epämusikaalisen ihmisen musiikkivietin heräämiseen ja seuraava ääni minkä kuuli oli lompakon kirkuminen sen kevetessä midi-interfacen summan verran, kun pienellä googlaamisella löysi linux-ajurit. Nyt sitten odotellaan sitä, että postiin putkahtaa paketti. Midi-koskettimistoja on meillä kaksikin kappaletta. Aikanaan halvin mahdollinen Casio, jossa on midi-liitäntä ja vaimokkeen M1. Eiköhän näillä jotakin kivaa saada aikaiseksi. Ainakin muksuilla tulee olemaan hauskaa.
Saturday, July 21. 2007
Teoriassa käyttäjät voisi tunnistaa suoraan käyttäen sererendipityn omaa mekanismia ja vain vaatia, että kommentoijat ovat tietyn ryhmän jäseniä. Tarvitaan siis pätkä, jolla käyttäjä voi rekisteröityä blogiin. Ja sitäkään ei tarvita, kun Garvinilla on sellainen plugini valmiina. Joten riittää siis ainoastaan keskittyä varsinaisen arvostelutoiminnallisuuden luomiseen.
Kahvin maisteluun löytyvät hyvät ohjeet mokkamestarilta. Kahvissa katsellaan:
- Kahvia haistellaan: jauhettuna, vesitettynä ja kuori rikottuna
- Kahvin makua arvioidaan, kuinka puhdasta, hapokasta tai makeaa se on
- Kahvin rakennetta arvioidaan, minkälainen suuntuntuma on kyseessä
- Kahvia maistellaan, miltä se kokonaisuutena maistuu ja minkälaisen jälkimaun se jättää
- Kokonaisarvio
Kahvissa minua kiinnostavia ominaisuuksia ovat:
- Valmistaja/Maahantuoja
- Papu/merkki
- Hinta
- Jauhatus
Koffilla on yksinkertaiset ohjeet oluen maisteluun. Perusteellisemmat löytyvät: [ http://www.mallastupa.com/abc/arviointi.html Mallastuvalta] Oluessa katsellaan:
- Nuuhkitaan ja arvioidaan tuoksua
- Maku, suun takaosassa, Oluelle tyypillisiä makuja ovat katkeruus ja makeus. Virheetön olut maistuu maltaalta, humalalta, eri alkoholeilta ja estereiltä. Humalan katkeruus tuntuu vain kielen takaosassa ja makeus kielen kärjessä.
- Rakenne, suuntuntuma
- Jälkimaku
Oluessa kiinnostavia ominaisuuksia ovat:
- Panimo/Maahantuoja/Pullottaja
- Nimi
- Hinta
- Tyyppi
Viskin maistelemiseen hyvät ohjeet löytyvät Viskikaapilta.
- Väri ja ulkonäkö
- Tuoksu
- Suuntuntuma
- Etumaku ja jälkimaku
Viskissä kiinnostavia ominaisuuksia ovat:
- Tislaamo/Pullottaja/Maahantuoja
- Nimi
- Hinta
- Ikä
- Tyyppi
Itse maisteluun liittyviä asioita:
- Ajankohta
- Osa-arviot, kvantitatiiviset ja kvalitatiiviset
- Kokonaisarvio, kvantitatiivinen ja kvalitatiivinen
- Arvioija
Arvioihin liittyviä kiinnostavia tekijöitä
- Arvioiden lukumäärä
- Keskiarvot
Pienehkön arpomisen jälkeen päädyin kahteen tauluun:
- kippis_product, joka sisältää tuotetiedot
- kippis_tasting, joka sisältää arviotiedot
- Ja itse blogi-entryyn tulevat sitten kuvat ja yleiset höpinät aiheesta.
Ruotsalaisella on muuten pahuksen hyvät viskisivut. Ensimmäinen versio valmis, siihen meni 12h 33minuuttia ja 53 sekuntia.
Sunday, June 10. 2007
Yhden ison teknisen katastrofin takia Ihanitsen jatkoa vanhalla palveluntarjoajalla on jouduttu miettimään ja mietinnän tuloksena päädyimme siirtämään foorumin toiselle palvaluntarjoajalle. Yllättävää kyllä uusi palveluntarjoaja on myös halvempi. Siirtämisessä on muutamia huomioimisen arvoisia asioita:
- Nimipalvelut ovat olleet "omilla" nimipalvelimilla, uuden tarjoajan kanssa siirrämme nimipalvelut palveluntarjoajalle
- Siirron aikana palvelut ovat hetken aikaa tarjolla sekä uudella että vanhalla palvelimella. Ensimmäisessä siirtovaiheessa käyttäjien pääsy vanhalle palvelimelle on estettävä ja toisessa vaiheessa käyttäjät on ohjattava uudelle palvelimelle
- Palvelujen sijoittelua halutaan muuttaa. Foorumi siirtyy uuteen kohtaan hakemistohierarkiassa ja saa samalla oman suoran verkko-osoitteen.
Siirtäminen tapahtuu seuraavasti:
| Toimenpide |
Aloitettu |
Valmis |
Kommentti |
| Otetaan talteen nykyiset ip-osoitteet ja hallintatunnukset. Varmistetaan oma pääsy ip-osoitteella. |
19.20 |
19.35 |
- |
| Selvitetään tulevat ip-osoitteet ja hallintatunnukset. Varmistetaan oma pääsy ip-osoitteella. |
19.35 |
19.54 |
| Estetään .htaccess-tiedostolla muiden kuin erittäin teknisen ylläpidon pääsy foorumille, jotta foorumista voidaan tehdä kopio. |
19.54 |
19.59 |
| Estetään .htaccess-tiedostolla muiden kuin erittäin teknisen ylläpidon pääsy tulevalle koneelle, jottei keskeneräiseen kopioon saada vieraita. |
19.59 |
20.02 |
| Vaihdetaan nimipalvelimet |
20.02 |
20.07 |
| Perustetaan foorum.ihanitse.com alidomain. |
20.07 |
20.14 |
| Ohjataan sähköpostit oikeaan paikkaan. |
20.14 |
20.17 |
| Dumpataan foorumin kanta ja kopioidaan se uudelle palvelimelle. |
20.17 |
20.24 |
| Dumpataan drupalin kanta ja kopioidaan se erroriin turvaan. |
20.20 |
20.21 |
| Tarrataan foorumin tiedostot ja kopioidaan ne uudelle palvelimelle. |
20.21 |
20.26 |
| Tarrataan drupalin tiedostot ja kopioidaan ne erroriin turvaan. |
20.21 |
20.26 |
| Luodaan foorumin kanta ja kantakäyttäjä. |
20.26 |
20.31 |
| Palautetetaan foorumin kanta. |
20.31 |
20.41 |
Jätetty tukipyyntö Louhelle. Kantakäyttäjällä ei ole Lock-tables oikeuksia! |
| Luodaan drupalin kanta ja kantakäyttäjä. |
Ei palauteta drupalia |
| Palautetaan drupalin kanta. |
Ei palauteta drupalia |
| Puretaan tiedostot ja siirretään ne oikeisiin hakemistoihinsa. Korjataan kantakäyttäjä ja kannan nimi |
20.42 |
20.58 |
| Luodaan uuden tuotannon www.ihanitse.com-hakemistoon uudelleenohjaus foorumi.ihanitse.com:iin |
20.58 |
21.10 |
| Testataan |
21.10 |
21.12 |
| Poistetaan uuden tuotannon .htaccess |
21.12 |
21.13 |
| Korjataan vanhan tuotannon .htaccess tekemään redirect/rewrite uuteen osoitteeseen |
21.13 |
21.18 |
| Luodaan varmistusskripta kannoille ja sisällöille |
21.18 |
21.31|Varmistaminen paikalliselle levylle ajastetusti ei onnistu, koska crontab on poistettu. Aina voi kikkailla ssh:lla ja ajastaa muualta. |
| Testaan varmistusskripta |
| Luodaan toiselle koneelle skripta, joka tarkistaa onko palvelu pystyssä ja ovatko varmistukset onnistuneet |
| Testataan tarkistusskripta |
Saturday, May 26. 2007
Ihanitsen phpbb_topics-taulussa on useassa viestissä väärä topic_poster topicille. Oikeat id:t voisi hakea phpbb_posts-taulusta seuraavalla logiikalla:
SELECT poster_id FROM phpbb_posts WHERE topic_id=väärin order by post_time asc limit 0,1
Ja väärän id:n saisi korjattua
update phpbb_topics set topic_poster=oikea poster id where topic_id=väärin
Eli oletetaan, että oikea topicin postittaja on se henkilö, joka on ajallisesti luonut ensimmäisen viestin. Pitäisi siis tehdä ohjelma, joka toimii seuraavasti:
Lue väärät topic_id:t tekstitiedostosta, yksi id riviäkohden
Kutakin väärää topic_id:tä kohden
Hae oikea poster_id phpbb_posts-taulusta
Päivitä phpbb_topics-taulu
Jos tekisi ensin ohjelman, joka hakee ja tulostaa väärät id:t ja tulostaa ruudulle update-komennon ja kun sen näyttää hyvältä, otetaan kannasta varmuuskopio ja poistetaan päivityskomennon tulostus. Ja tietenkään teerillä ei ole pearia, eikä komentorivi-php:ta, joten ensin oli pakko nysvätä pear väliaikaiseen hakemistoon. Ja tietenkään en saa pearin kantaosuutta toimimaan oikein, joten lopulta päädyin kirjoittamaan suoraan mysql-komennoilla.
Eli:
<?PHP
require_once('PEAR/MDB2.php');
$numerot=file('numerot.txt');
$link = mysql_connect('kone', 'käyttäjä', 'salasana')
or die('Could not connect: ' . mysql_error());
mysql_select_db('kanta') or die('Could not select database');
foreach($numerot as $numero) {
echo "Käsittelen $numero<br/>";
$q="SELECT * FROM phpbb_posts WHERE topic_id=$numero order by post_time asc limit 0,1";
$result = mysql_query($q) or die('Query $q failed: ' . mysql_error());
$rivi=mysql_fetch_array($result, MYSQL_ASSOC);
$q = "UPDATE phpbb_topics set topic_poster=".$rivi['poster_id'];
$q.=" WHERE topic_id=$numero";
$result = mysql_query($q) or die("Query $q failed: " . mysql_error());
}
mysql_close($link);
?>
30.05.2007 valitettavasti myös kannan viite-eheys, se sellainen juttu mitä oikeat tietokannat harrastavat, on rikki. Joten tarvitaan lisää paikkokoodia.
mysql_select_db('kanta) or die('Could not select database');
$q="select ug.group_id as ugid, g.group_id as gid from phpbb_user_group as ug left outer join phpbb_groups as g
on (ug.group_id=g.group_id) where g.group_id is NULL order by
ug.group_id asc;";
$result = mysql_query($q) or die('Query $q failed: '.mysql_error());
$rivi=mysql_fetch_array($result, MYSQL_ASSOC);
while($rivi) {
print_r($rivi);
$q = "update phpbb_user_group set group_id=10250 where group_id=";
$q.=$rivi['ugid'].";";
$mysql_query($q) or die('Query $q failed: '.mysql_error());
echo "$q<br/>";
$rivi=mysql_fetch_array($result, MYSQL_ASSOC);
}
mysql_close($link);
Ja tämä ei tuottanut voittoa, koske kyse oli käyttäjien omien ryhmien puuttumisesta. Ratkaisu oli lopulta muuttaa toolkitin koodia siten, että se salli vajaana palautuneiden käyttäjien tietojen niittamisen.
Saturday, May 19. 2007
Pelin säännöt on siirretty tänne. Tämä merkintä jää historialliseksi versioksi sekä kulutetun ajan seuraamista varten.
Johdanto
Yhteiset asiat on kolmesta viiteen pelaajalle tarkoitettu neuvottelu, juonittelu ja optimointipeli. Pelissä pelaaja ohjaa valitsemansa puolueen nousevaa poliittista tähteä ja tämän neljää avustajaa. Pelaajan tavoite on saada hahmonsa puolue suurimmaksi puolueeksi eduskunnassa ja oma hahmonsa puolueensa äänikuninkaaksi/kuningattareksi. Saavuttaakseen tämän päämärän pelaaja edistää valitsemansa puolueen vaaliteemoja (pro-teemat) ja yrittää estää valitsemansa puolueen vastustamia asioita (anti-teemat) toteutumasta. Tämä tapahtuu äänestämällä teemojensa puolesta eduskunnan äänestyksissä ja anti-teemojansa vastaan. Pelaajien puolueilla ei ole yksin yksinkertaista enemmistöä eduskunnassa, joten yhteistyö toisten pelaajien kanssa on välttämätöntä. Omien teemojen läpimenoa voi lisäksi avittaa ja vastustajien teemojen läpimenoa kampittaa lobbaamalla.
Puolueet
Pelissä on viisi puoluetta: siniset, keltaiset, mustat, vihreät ja punaiset. Kullakin puolueella on kolme voimakasta poliittista keulakuvaa, joista yksi on aina pelaajan hahmo ja kaksi ovat pelin mekaniikan ohjastuksessa. Kullakin puolueella on kaksi puolustamaansa vaali-teemaa (pro) ja kaksi vastustamaansa (anti) teemaa.
Siniset suhtautuvat nihkeästi uskonnon ja poliitikan sotkemiseen toisiinsa. Siniset katsovat, että ympäristö toimii ihmisen ehdoilla ei ympäristön ihmisen ehdoilla. Tärkeintä maalle on voimakas taloudelinen kasvu ja yritystoiminnan tukeminen. Sinisten mielestä itsenäinen valtio tarvitsee uskottavat puolustusvoimat. Sinisiä tukee elinkeinoelämä.
Keltaiset ovat sitä mieltä, että koulussa pitäisi opettaa muitakin vaihtoehtoja kuin evoluutiota. Ihmisten tulisi enemmän keskittyä henkisiin asioihin kuin taloudellisen omaisuuden haalimiseen. Keltaiset katsovat, että ihmisen pitäisi suojella Luojan luomaa ja elää niin kuin Luoja on tarkoittanut. Keltaisia tukee kirkko.
Mustat katsovat, että uskoville ja hyville ihmisille kuuluu taloudellisesti vauras tulevaisuus. Mustat ovat sitä mieltä, että Luoja on luonut maan ihmisen viljeltäväksi sovussa ja rauhassa. Mustia tukee maaseudun kehitys- ja sivistysliitto.
Vihreät näkevät, että vain sivistyksen ja koulutuksen kautta ihminen oppii arvostamaan luonnon monimuotoisuutta ja ymmärtää ekologisen vastuunsa ympäristöstä. Vihreät katsovat, että taloutta ei saa kasvattaa puhtaan tulevaisuuden kustannuksella ja sotateollisuus on yksi pahimpia ekologisia katastrofeja. Vihreitä tukee luonnonsuojeluliitto.
Punaiset katsovat, että vain sivistyksen ja koulutuksen kautta ihminen oppii tuntemaan yhteiskunnallisen vastuunsa, mutta katsovat että ne, jotka eivät tätä tajua ovat uhka, jota vastaan on kyettävä puolustautumaan. Uskonto ja taloudellisen varauden tavoittelu harhauttavat ihmisen pois olennaisesta. Punaisia tukee ammattiyhdistysliike.
Pelin alkuvalmistelut:
- Kukin pelaaja valitseee puolueensa tai ne arvotaan pelaajien kesken
- Kullakin puolueella on eduskunnassa neljäkymmentä paikkaa
- Kunkin puolueen kannatus on kasvanut 20% edellisistä vaaleista
- Kunkin pelaajan kannatus puolueen sisällä on kasvanut 20%, puolueen ensimmäisen virtuaaliehdokkaan on kasvanut 30% ja toisen 35%
- Kunkin pelaajan vaalikassassa on rahaa 10.000 €
- Äänestyskortit sekoitetaan ja pannaan kuvapuoli alaspäin niille varattuun paikkaan pelilaudalle. Kullekin pelaajalle jaetaan neljä äänestyskorttia käsikorteiksi. Näitä ei tarvitse näyttää muille pelaajille.
- Mediapelikortit sekoitetaan ja pannaan kuvapuoli alaspäin niille varattuun paikkaan pelilaudalla. Kullekin pelaajalle jaetaan yksi mediapelikortti käsikortiksi. Tätä ei tarvitse näyttää muille pelaajille.
- Sovitaan pelattava kierrosmäärä: 12 kierrosta, 10 kierrosta vai 8 kierrosta. Kierroslaskuri asetetaan sovittuun kohtaan. Kierroslaskuri kertoo montako kierrosta pelataan ennen vaaleja.
Pelin kulku
- Tarkistetaan käsikoot. Kullakin pelaajalla saa olla kädessään korkeintaan neljä äänestyskorttia ja kaksi mediapelikorttia. Pelajaat poistavat kädestään valitsemiaan kortteja kierrätyspakkoihin kuvapuoli alaspäin kunnes kortteja on kädessä sallittu määrä.
- Määritetään vuorojärjestys kannatuksen kasvun perusteella. Suurimman kasvun omaava puolue toimii ensin. Mikäli yksi tai useampi puolue on tasoissa, pelaajat joko sopivat keskinäisen järjestyksen, tai mikäli sopimukseen ei päästä, arvotaan järjestys nopalla.
- Pelaajat voivat pelata kädestään kuvapuoli alaspäin eteensä äänestyskortteja haluamansa määrän kierrosjärjestyksessä. Kutakin pelattua korttia kohden saa halutessaan nostaa yhden uuden kortin äänestyspakasta. Kun kortit on pelattu voivat pelaajat "ostaa" äänestyskortteja käteensä kierrosjärjestyksessä. Kortin voi ostaa joko maksamalla 10.000€ tai siirtämällä yhden hahmoistaan tekemään kierroksen loppuun lakivalmistelutöitä. Mikäli kortit loppuvat kesken, sekoitetaan kierrätyspakka ja kierrätyspakasta tulee uusi äänestyspakka.
- Kun kaikki kortit on ostettu, käännetään äänestykset näkyviin ja alkaa "lobbauksen" valmisteleminen. Kukin pelaaja saa kierrosjärjestyksessä asettaa yhden tiiminsä jäsenen tekemään töitä johonkin viidestä tukiryhmästä. Mikäli pelaajia on vähemmän kuin viisi, niin pelin pelaamat loput puolueet asettavat omat hahmonsa oman tukiryhmänsä töihin ja mikäli tukiryhmä on täynnä jättävät asettamatta. Lobbauksen valmistelu jatkuu, kunnes kaikki ovat asettaneet haluamansa määrän hahmoja tukiryhmiin tai kaikki tukiryhmät ovat tulleet täyteen.
- Käänteisessä kierrosjärjestyksessä aloitetaan äänestysten käsittely. Vuorossa oleva pelaaja valitsee edessään olevista äänestyksistä yhden ja joko ilmoittaa sen tulevan käsittelyyn tai jättävänsä sen pöydälle. Kukin pöydälle jättäminen maksaa joko 1% kannatuksen kasvua tai 10.000€. Jos äänestys jää pöydälle, vuoro siirtyy seuraavalle. Mikäli äänestys tulee käsittelyyn toimitaan seuraavasti:
- Kukin pelaaja saa halutessaan käänteisessä vuorojärjestyksssä minuutin puheenvuoron, jonka aikana hän kertoo miksi muiden pitäisi äänestää niin kuin hän ehdottaa. Mahdollisia puheessa tehtyjä lupauksia ei tarvitse pitää.
- Lobataan. Katsotaan kenellä on eniten kunkin puolueen tukiryhmän työntekijöitä. Jos puolueen tukiryhmässä on eniten puolueen omia työntekijöitä tai työntekijät menevät tasan on puolueella kaikki 40 ääntä. Jos tukiryhmässä on enemmistö jonkun toisen puolueen työntekijöitä saa tämän toisen puolueen pelaaja päätää onko puolueella täydet 40 ääntä käytössään vai vain puolet - tukiryhmä järjestää puolelle kansanedustajista vaihtoehtoista toimintaa tukiryhmän piikkiin. Tukiryhmien enemmistöjä laskettaessa ovat pelaajien omat hahmot 2 äänen arvoisia!
- Äänestetään. Puolue äänestää joko 20 äänellä (20 poissa) tai 40 äänellä. Vaihtoehdot ovat kaikille äänestykssä mukana oleville äänille poissa, jaa ja ei. Äänestäminen tapahtuu käänteisessä kierrosjärjestyksessä. Jos enemmistö annetuista äänistä on jaa, toimitaan äänestyskortin ohjeiden mukaisesti, muutoin kortti siirretään kierrätyspakkaan ja mitään ei tapahdu.
Äänestysten käsittely päättyy kun joko kaksi äänestystä on mennyt lävitse tai kaikki äänestyskortit on käsitelty. Kaikki pöydälle jääneet äänestykset siirretään kierrätyspakkaan.
Työnteon hedelmät. Pelaajat ottavat hahmonsa pois tukiryhmistä. Kustakin omassa tukiryhmässä työskennelleestä - ei omasta hahmostaan - pelaaja saa 10.000€ ja 1% kannatuksen kasvua lisää omalle puolueelleen. Oman puolueensa tukiryhmässä työskennelleestä omasta hahmostaan pelaaja saa 10.000€, 1% kannatuksen kasvua itselleen ja 1% kannatuksen kasvua omalle puolueelleen. Kustakin toisen puolueen tukiryhmässä työskennelleestä - ei omasta hahmostaan - pelaaja saa 20.000€ ja -1% kannatuksen kasvua omalle puolueelleen. Toisen puolueen tukiryhmälle työskennelleestä omasta hahmostaan pelaaja saa 20.000€ ja -1% kannatuksen kasvua itselleen ja -1% kannatuksen kasvua omalle puolueelleen.
Mediapelikorttien ostaminen. Pelaajat voivat ostaa kierrosjärjestyksessä haluamansa määrän mediapelikortteja, kukin kortti maksaa 10.000€ kappale.
Kannatus ja raha
Henkilökohtaista kannatuksen kasvua voi vaihtaa rahaksi koska vain. 1% kannatuksen kasvua on 10.000€. Kannatuksen kasvu ei voi laskea alle 1%-yksikön ja rahat eivät voi laskea alle nollan.
Mediapelikortit
Mediapelikortteja saa pelata milloin vain. Pelatut kortit käsitellään välittömästi ja pelattu kortti siirretään kierrätyspinoon. Mediapelikortteja on seuraavanlaisia:
- +20.000€ rahaa valitulle puolueelle 7kpl
- -10.000€ rahaa pois valitulta puolueelta 7kpl
- -1% kannatuksen kasvua pois valitulta puolueelta 7kpl
- -2% kannatuksen kasvua pois valitulta hahmolta 5kpl
- -1% kannatuksen kasvua pois valitulta puolueelta ja -2% kannatuksen kasvua pois valitulta hahmolta 5kpl
- Vaihda kahden hahmon paikkaa tukiryhmissä 5kpl
- Poista yksi hahmo tukiryhmäst 7kpl
- Puolet valitun puolueen kansanedustajista on poissa äänestyksestä, 5 kpl
- Kaikki valitun puolueen kansanedustajat ovat poissa äänestyksestä, 2 kpl
Esimerkki mediapelikortista:
Nokia jakaa osinkoa. Puolueen sijoitukset tuottava 20.000€.
Toinen esimerkki mediapelikortista:
Salarakas jäi kiinni rattijuopumuksesta. -2% kannatusta pois valitulta hahmolta.
Äänestyskortit
Äänestyskortteja on kolmenlaisia
- +1/-1 Yhtä teemaa kannattavien puolueiden kannatus kasvaa yhden prosenttiyksikön ja toista teemaa vastustavien puolueiden kannatus laskee yhden prosenttiyksikön. 2 kpl kutakin mahdollista kombinaatiota, yhteensä 40 kpl.
- +2/-1 Yhtä teemaa kannattavan puolueen kannatus kasvaa kaksi prosenttiyksikköä ja toista teemaa vastustavan puolueen kannatus laskee yhden prosenttiyksikön. 1kpl kutakin mahdollista kombinaatiota, yhteensä 20 kpl
- +1/+1 Teemaa ajavan puolueen kannatus nousee yhden prosenttiyksikön ja äänestyksen pelanneen pelaajan hahmon kannatus nousee yhden prosenttiyksikön. 1kpl kullekin teemalle, yhteensä 5kpl.
- -1/+1 Teemaa ajavan puolueen kannatus laskee yhden prosenttiyksikön ja pelanneen hahmon kannatus nousee yhden prosenttiyksikön.
Äänestyskortissa on seuraavat tiedot:
- +X prosenttiyksikköä kannatusta lisää seuraaville puolueille: luettelo puolueista
- -X prosenttiyksikköä kannatusta pois seuraavilta puolueilta: luettelo puolueista
- +X prosenttiyksikköä kannatusta hahmolle
- Tieto siitä miten pelimekaniikan ohjaamat puolueet äänestävät.
Esimerkki äänestyskortista:
Teollisuuden energian kulutus on kasvanut. Tarvitaan yksi ydinvoimalan lisää. Ehdotamme, että myönnämme luvan ydinvoimalan rakentamiseksi. +1 prosenttiyksikköä: siniset ja mustat. -1 prosenttiyksikköä: keltaiset ja vihreät.
Siniset ja mustat äänestävät: jaa. Punaiset äänestävät: poissa. Keltaiset ja vihreät äänestävät: ei.
Toinen esimerkki:
Tarvitsemme ohjelmistopatentteja. Ehdotan, että otamme käyttöön amerikalaisen patenttilainsäädännön. -1 prosenttiyksikköä: siniset,mustat. +1 prosenttiyksikköä ehdottajalle. Siniset, punaiset, mustat, keltaiset ja vihreät äänestävät: ei.
Pelin päättyminen ja voittopisteet
Sovitun kierrosmäärän tultua täyteen katsotaan voittopisteet seuraavasti: 3 voittopistettä puoluelle, jonka kannatus on kasvanut eniten, 2 voittopistettä puolueelle jonka kannatus on kasvanut toiseksi eniten ja yksi voittopistettä puolueelle, jonka kannatus on kasvanut kolmansiksi eniten. Tasatilanteet ratkotaan rahalla, se kumman puoleen kassassa on enemmän rahaa sijoittuu ensin ja mikäli rahatkin ovat tasan arvotaan keskinäinen järjestys. Tämän jälkeen kukin pelaaja saa lisäksi voittopisteitä seuraavasti, 3 pistettä, mikäli hänen kannatuksensa kasvu on suurempi kuin kahden muun puolueensa edustajan. 1 pistettä mikäli pelaajan hahmo on puolueen toiseksi suosituin. Tasatilanteet lasketaan pelaajan tappioksi. Mikäli voittopisteet ovat tämän jälkeen tasan katsotaan uudestaan puolueiden rahatilannetta, rikkaampi puolue voittaa. Mikäli tämäkään ei auta, on syntynyt tasapeli.
Vähemmän pelaajia kuin viisi
Pelin mekaniikka on suunniteltu siten, että peli itse pelaa puoluieta, joita pelaajat eivät pelaa. Mekaniikan pelaamat puolueet ovat suoraselkäisiä, ne eivät neuvottele äänestyksistä vaan äänestävät kuten äänestyskorteissa on kerrottu, eivätkä ne käytä likaista mediapeliä.
Pelin komponentit
- Pelilauta.
- Kannatusmittarit: yksi kullekin puolueelle ja kunkin puoleen mittari jakautuu neljään kohtaan. Puolueen yleinen kannatus, pelaajan tiimin kannatus, virtuaalipelaaja 1 ja virtuaalipelaaja 2.
- Rahamittari. Kukin askel 10.000 euroa.
- Viisi tukiryhmää, jossa kussakin paikka neljälle pelinappulalle.
- Paikka lakiehdotuskorteille ja lakiehdotuskorttien kierrätyspinolle
- Paikka mediapelikorteille ja mediapelikorttien kierrätyspinolle
- Kierroslaskuri
- Valmistelurinki
70 äänestyskorttia
50 mediapelikorttia
2 kpl 10-sivuinen noppa
Viisi erilaista puoluekorttia, jossa on puolueen puolueen pro- ja anti-teemat, kierrosjärjestys, lobbarivaikutukset ja rahan ja suosion vaihtosuhde
4+1 kappaletta poliitikkohahmoja, viidellä eri värillä
7 mittarikuutiota, viittä eriä väriä
Kierrosmerkki
Vuoromittari
Friday, April 6. 2007
Debian does not rotate its system logs with logrotate but with a script Ian Murdock has written at the beginning of the distribution. This script is run every sunday at 06.47 from system cron.weekly. If you are tailing log/authlog, it has the unfortunate effect of leaving the sshguard reading an empty descriptor. If Debian used logrotate (which it does with other logfiles) this could be avoided by "doing copy on truncate" which is about as old mantra for doing that as is Debian distribution itself. I have tried the "|exec /usr/local/sbin/sshguard" on the syslog configuration but it does not work for the Sarge I'm running and I'm buggered if I know why.
My current solution is to run another weekly script from the cron as soon as the sysklogd-script has finished. I hope it will do the trick.
#!/bin/sh
function startGuard {
tail -n0 -f /var/log/auth.log | /usr/local/sbin/sshguard
}
running=`ps xauw|grep sshguard|grep -v grep|grep -v sshguard.sh`
if [ -n "$running" ]; then
echo "Running, killing it"
/usr/bin/killall sshguard
sleep 30
/usr/bin/killall -9 sshguard
fi
startGuard &
I will know after next Sunday morning as soon as somebody tries to brute ssh the server again. Now I know. It works.
Sunday, March 18. 2007
Nyt tuli miltei mitta täyteen. load-view ei toimi niin kuin sen pitäisi vaan se laskee lävitse ajettuna validation sivulta, eikä missään logissa näy virheilmoituksia. Debuggaaminen on vähän hankalaa.
Jos yksinkertaisesti tekisi pientä refaktorointia tässä vaiheessa ja lukisi hivenen lisää manuaalia. Periaatteessa tässä olisi paikka moniperinnälle, mutta kun PHP ei sitä tue. Sen sijaan PHP kyllä tukee hierarkista perintää, voit periyttää luokan, joka on perinyt luokan.
Toisin sanoen, voisi katsoa mitä yhteistä on tähän mennessä koodannut controllereihin, modeleihin ja viewhin ja viedä ne omaan classiinsa. Vaihtoehtoja lienee kolme, joita voisi yrittää:
- Luo omat classit libraries-hakemistoon, jotka laajentavat perusclassia
- Luo omat classit libraries-hakemistoon, jotka perivät perusclassin
- Luo omat classit libraries-hakemistoon, jotka tekevät yhteiset asiat ja ladataan classien lataamisella
Tietty voisi myös työntää tavaraa controllers-hakemistoon, mutta se ei taida olla hyvä ajatus. Jos kokeilisi tuota vaihtoehtoa numero kaksi ensin, siten, että tylysti requirella vetäisi oman luokkansa sisälle. Requiren polku on silloin:
system/application/libraries/luokka.php
Saman luokan voi tämän jälkeen kiskoa sisään myös load->libraryllä.
|