Hehkulamppu

May 14th, 2009

Tutustu vuonna 1901 sytytettyyn hehkulamppuun osoitteessa: http://www.centennialbulb.org/.
Lampun teho vaivaiset 4W ja joukko vuosien ajan joukko lamppuharrastajia on kuvannut lamppua verkkokameralla todistaakseen lampun kuolemaa.

1.9.2009 lähtien hehkulamppujen poistuminen EU:ssa alkaa. Toivottavasti tästä hehkulamppu muutoksesta tulee jotain. Ottaen huomioon että kesä/talvi aikaakin perusteltiin aikoinaan sähkön säästöllä ja mitenkäs kävikään.

Luokittelematon ,

Ohjelmointikielten suosiot

April 29th, 2009

Eri ohjelmointi kielten suosiota voi ihmetellä täältä: TIOBE Programming Community Index.

TOP-lista lasketaan eri hakukoneiden tulosten perusteella. TOP 10 näyttää mielenkiintoiselta. Koska lista näyttää että Java hallitsisi suvereenisesti 19% osuudella. Toisella sijalla tulisi C 15% osuudella. C# olisi vasta 4% osuudessa sijalla 7.

Listan tulosta ei oikein voida soveltaa kaupalliseen ohjelmistotuotantoon. C kielen osuus on liian suuri, eihän nykyään C käytetä kuin joissakin vanhoissa CE järjestelmissä ja sulautetuissa laitteissa. Mietin että miksi hakukoneet sitten antavat niin paljon tuloksia C kielelle. Taitaa olla niin että Linuxin vapaan lähdekoodin ohjelmistot sotkevat tuota listaa tai se että C:tä on yleensä ainakin pari kurssia jokaisessa yliopistossa.

Pientä omaa tilastointia, Googlen hakutulosten määrästä:

  • c programming - 39M
  • c# programming - 3M
  • java programming - 19M
  • php programming - 22M
  • powershell programming 1,4M

Hmm… no tutkimus jatkuu.

Ohjelmointi

Valintalaatikot

April 15th, 2009

Tuli testailtua kuinka valintalaatikot toimivat WPF:n alla. Kuusi ensmmäistä on normaaleja valintalaatikoita. Viimeisen on muutettu XML tyyleillä ja oikealla puolella oleva musiikki valinta on oikeastaan listbox. Listbox jossa on valintalaatikot värjää taustan harmaaksi. Eikä pelkästään tekstejä. Kuten listbox kontrolli tekee.

checkboxes

XAML osuus, jossa määritellään käytännössä kaksi eri tyyliä (alin valintalaatikko ja listbox):

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
 
<Window x:Class="WPFCheckboxs.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Checkbox demo" Height="231" Width="281" Loaded="Window_Loaded" WindowStyle="ToolWindow" AllowsTransparency="False" Opacity="1" Visibility="Visible">
    <Window.Resources>
        <Style x:Key="CheckBoxListStyle" TargetType="ListBox">
            <Style.Resources>
                <Style TargetType="ListBoxItem">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="ListBoxItem">
                                <Grid Margin="2">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition />
                                    </Grid.ColumnDefinitions>
                                    <CheckBox IsChecked="{Binding IsSelected,
                                                                    RelativeSource={RelativeSource TemplatedParent},
                                                                    Mode=TwoWay}" />
                                    <ContentPresenter Grid.Column="1" Margin="2,0,0,0" />
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Style.Resources>
            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate>
                        <WrapPanel Orientation="Vertical"  />
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="Background" Value="Transparent" />
        </Style>
 
        <!-- SimpleStyles: CheckBox -->        
        <Style x:Key="sCheckBox" TargetType="CheckBox">
            <Setter Property="SnapsToDevicePixels" Value="true"/>
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="Template">
            <Setter.Value>
            <ControlTemplate TargetType="{x:Type CheckBox}">
            <BulletDecorator Background="Transparent">
            <BulletDecorator.Bullet>
                <Border x:Name="Border"  Width="13" Height="13" 
                CornerRadius="0" Background="#C0C0C0"
                BorderThickness="1" BorderBrush="#404040">
                <Path Width="7" Height="7" x:Name="CheckMark"
                SnapsToDevicePixels="False" Stroke="#404040"
                StrokeThickness="2" Data="M 0 0 L 7 7 M 0 7 L 7 0" />
                </Border>
            </BulletDecorator.Bullet>
                <ContentPresenter Margin="4,0,0,0" VerticalAlignment="Center"
                HorizontalAlignment="Left" RecognizesAccessKey="True"/>
            </BulletDecorator>
 
            <ControlTemplate.Triggers>
                            <Trigger Property="IsChecked" Value="false">
                                <Setter TargetName="CheckMark" Property="Visibility" Value="Collapsed"/>
                            </Trigger>
                            <Trigger Property="IsChecked" Value="{x:Null}">
                                <Setter TargetName="CheckMark" Property="Data" Value="M 0 7 L 7 0" />
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter TargetName="Border" Property="Background" Value="#808080" />
                            </Trigger>
                            <Trigger Property="IsPressed" Value="true">
                                <Setter TargetName="Border" Property="Background" Value="#E0E0E0" />
                                <Setter TargetName="Border" Property="BorderBrush" Value="#606060" />
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter TargetName="Border" Property="Background" Value="#EEEEEE" />
                                <Setter TargetName="Border" Property="BorderBrush" Value="#AAAAAA" />
                                <Setter Property="Foreground" Value="#888888"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
 
    <Grid Width="262">
        <CheckBox Height="16" Margin="12,12,0,0" Name="checkBox1" VerticalAlignment="Top" HorizontalAlignment="Left" Width="120">Default</CheckBox>
        <CheckBox Height="16" Margin="12,34,0,0" Name="checkBox2" VerticalAlignment="Top" HorizontalAlignment="Left" Width="120" IsChecked="True">Checked</CheckBox>
        <CheckBox Height="16" Margin="12,56,0,0" Name="checkBox3" VerticalAlignment="Top" HorizontalAlignment="Left" Width="120" IsEnabled="False">Disabled</CheckBox>
        <CheckBox Height="16" Margin="12,78,0,0" Name="checkBox4" VerticalAlignment="Top" HorizontalAlignment="Left" Width="120" IsEnabled="False" IsChecked="True">Disabled checked</CheckBox>
        <CheckBox Margin="12,100,35,0" Name="checkBox5" Height="16" VerticalAlignment="Top" IsThreeState="True" OverridesDefaultStyle="False" IsEnabled="True" IsChecked="True">Three states</CheckBox>
        <CheckBox Margin="12,0,130,47" Name="checkBox6" FlowDirection="RightToLeft" Height="24" VerticalAlignment="Bottom">Flow direction</CheckBox>
 
            <ListBox SelectionMode="Multiple" Margin="0,12,12,23"
               Style="{StaticResource CheckBoxListStyle}" IsEnabled="False" HorizontalAlignment="Right" Width="80" ToolTip="This is actually listbox" Name="checkboxlist">
                <ListBoxItem>Blues</ListBoxItem>
                <ListBoxItem>Classical</ListBoxItem>
                <ListBoxItem IsSelected="True">Country</ListBoxItem>
                <ListBoxItem>Dance</ListBoxItem>
                <ListBoxItem>Jazz</ListBoxItem>
                <ListBoxItem IsSelected="True">Pop</ListBoxItem>
                <ListBoxItem>R&amp;B</ListBoxItem>
                <ListBoxItem IsSelected="True">Rock</ListBoxItem>
            </ListBox>
        <CheckBox Style="{StaticResource sCheckBox}" Name="checkBox7" Height="16"  VerticalAlignment="Bottom" Margin="12,0,122,25" IsThreeState="True" Checked="checkBox7_Checked" Unchecked="checkBox7_Unchecked">Stylised check box</CheckBox>
    </Grid>
</Window>

C# osuus, ei oikein mitään ihmeellistä. Jos haluaa oletus arvon 3 tilassa olevan valintaruutuun niin määrittely arvona toimii null.Sitä ei pysty asettaan Visual studion valikoitten kautta suoraan:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
 
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            checkBox5.IsChecked = null;
        }
 
        private void checkBox7_Checked(object sender, RoutedEventArgs e)
        {
            checkboxlist.IsEnabled = true;
        }
 
        private void checkBox7_Unchecked(object sender, RoutedEventArgs e)
        {
            checkboxlist.IsEnabled = false;
        }
    }

Ohjelmointi , , ,

PowerShell: Excel -> PDF

April 12th, 2009

Löysin pienen skriptin joka konvertoi Excel taulukon PDF:ksi. PowerShellin avulla. Tämähän toimii vain 2007 officessa johon asennettu .pdf vienti lisäosa. Mutta tästä voisi jatko kehittää jotain…

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# --
$ExcelFile = ‘C:\Excel\file.xls’
$Destination = ‘C:\file.pdf’

# Microsoft.Office.Interop.Excel.XlFixedFormatType
$xlTypePDF = 0
$xlTypeXPS = 1

# Microsoft.Office.Interop.Excel.XlFixedFormatQuality
$xlQualityStandard = 0
$xlQualityMinimum = 1

$readOnly = $true
$save = $false

$xl = new-object -c excel.application

# open workbook read-only
$wb = $xl.workbooks.Open($ExcelFile,$null,$readOnly)

$XlFixedFormatType = $xlTypePDF
$XlFixedFormatQuality = $xlQualityStandard

# export to PDF fixed format
$wb.ExportAsFixedFormat($XlFixedFormatType, $Destination,`
$XlFixedFormatQuality)

# close workbook without saving
$wb.close($save)

# cleanup
$xl.quit()
$xl, $wb | % {
[void][Runtime.InteropServices.Marshal]::releaseComObject($_)
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

Tietokoneet , ,

PowerShell vinkkejä

March 28th, 2009

Julkaistaan muutama PowerShell vinkki. Kyseiseen ohjelmaan jää jumiin kuin mummo hedelmäpeliin. Tottai jokainen itseään kunnioittava IT henkilö tarkistaa Slashdotin komentoriviltä.

powershell

1. Skriptit ajoon

Set-ExecutionPolicy Unrestricted 

Tai Set-ExecutionPolicy RemoteSigned. Tietysti tietoturva on hyvä tapa. Mutta kuka jaksaa allekirjoittaa skriptejä, että ne voisi ajaa.

2. Slashdot uutisotsikot

([xml] (new-object System.Net.WebClient).DownloadString("http://rss.slashdot.org/Slashdot/slashdot")).RDF.Item| select title

3. Adminille erivärinen konsoli

Luo ja tallenna tiedostoon Dokumentit/WindowsPowershell/profile.ps1

$wid=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$prp=new-object System.Security.Principal.WindowsPrincipal($wid)
$adm=[System.Security.Principal.WindowsBuiltInRole]::Administrator
$IsAdmin=$prp.IsInRole($adm)
if ($IsAdmin)
{
  (get-host).UI.RawUI.Backgroundcolor="DarkRed"
  clear-host
}

4. PowerShell laskimena

Komentoriville voi kirjoittaa suoraan laskutoimituksen. Tosin potenssiin korotusmerkkiä ei ole.

PS> [math]::pow(8,3)

5. Tekstin pituus

PS>"Does this text fit into varchar(50) column?".length
43

Tietokoneet , ,

ScreenPainter

March 26th, 2009

Eilen haukuttiin toisten softia  ja tänään fix:sataan omia.

ScreenPainter:i on kasvanut versioon 1.1. Uudet jutut on lueteltu alla.

  • Värivalintaa on korjattu.
  • Alueen valinta on muuttunut enemmän Vista tyyppiseksi.
  • Kuvaruudusta voi nyt kopioida leikepäydälle osan talteen. Eli kuvaruudun kaappaus ominaisuus.
  • Itsetehdyt värien automaattinen tallennus ja lataus.

Tässä esimerkissä luodaan korostettu alue käyttäen ScreenPaint:eria.

Tietokoneet ,

Tietotekniikka kehittyy vai kehittyykö?

March 25th, 2009

Ainakin HP Deskjet 5740 x64 ajureissa on taantumus päässyt tapahtumaan. Ovat menneen poistamaan värikasettien puhdistamisoperaation. Samoin muste tasot ovat hukkuneet. Joko tämä on kavala juoni, jolla käyttäjät saadaan ostamaan lisää muste kasetteja. Tai suunnittelu on pohtinut, ettei tätä elintärkeää ominaisuutta tarvita.

Mustesuihku tulostimien värikaseteilla on ikävä tapa tukkeutua jos tulostin seisoo pari viikkoa käyttämättömänä. Tähän pulmaan auttaa puhdistustoiminto joka jynssää mustekasetit taas auki. Voisi sanoa että tärkein ominaisuus yksityiskäytössä, heti varsinaisen tulostamisen jälkeen.

Mutta ei siinä vielä mitään, itse tulostaminenkin ontuilee. Vaikuttaa siltä että uudet ajurit sylkäisevät paperin liian aikaisin pois. Word dokumentti joka tulostu Windows 2000 mainiosti ei tulostanut Vistassa. Ongelmana tässä on alatunniste josta jää tulostus puuttumaan vaikka mitä rasteja kokeilisi.

Tietokoneet

SameGame

March 12th, 2009

Koko päivä on mennyt kummallisessa sählineissä.  Mutta lopputulos kun dvd-asemaa ja kovalevyjä on revitty ja asennettu, tiedostoja etsitty ja siirrelty, niin nyt on puhdas Windows Vista x64 asennus. Lopputulos: puolet tiedostoista on eksynyt jonnekin aikojen saatossa, muutama oheislaite ei vielä toimi ja kun koettaa soittaa mp3:ia niin kone menee lukkoon. Mutta eiköhän se tästä.

Hukkuneet tiedostot on mysteeri, vaikka kuinka säännöllisesti koettaa kopioida niitä tuonne erilliselle kovalevylle niin osa on kadonnut taivaan tuuliin. Samalla kun pengoin vanhoja tiedosto varastoja, niin ajattelin että vanhalla peli projektilta (vuodelta 2006) voisi ilahduttaa lukijoita.

Same Game on pieni pulmapeli jossa tarkoituksena on poistaa kaikki palikat. Palikoita voi poistaa jos kaksi samantyyppistä palikkaa on vierekkäin. Sitä enemmän pisteitä saa mitä enemmän palikoita saa kerralla pois. Mitään teknisiä muutoksia en jaksanut ruveta tekemään. Päivitin asennus paketin kääntäen sen uusimmalla NSIS asennus ohjelmalla.

 

Imuroi: SameGame.exe

Tietokoneet ,

Fallen Sword

February 28th, 2009

Fallen Sword on fantasia aiheinen nettiroolipeli. Tekninen toteutus ei ole paras mahdollinen mutta pelinä se on vaikea. Vaikeus tasosta voisi kertoa sen että eräs peelaaja osti pelissä käytettävää peli rahaa 250€:lla (noin 2000 fsp). Että pääsee hyvään alkuun. Eikä esimerkki ollut vielä sieltä kaikkin äärimmäisestä päästä.

Maailmalla vallova talaus kriisi ei ole ainakaan heijastunut pelin kaupankäyntiin millään tavalla.  Luulisi että hinnat laskisivat jollakin tavalla. Myös todellisen rahan ja virtuaalirahan ero on kasvanut aikojen myötä entistä enemmän, elikkä käytännössä pelissä on jatkuva inflaatio.

Loppujen lopuksi se voi johtua siitä että peliä ei pysty pelaamaan läpi.  Vaan siihen pystytään generoimaan uusia seikkailtavia alueita sopivaan tahtiin.  Tästä seuraa se että täytyy ostaa aina uusia varusteita ja lopputuloksena on että on jatkuvassa raha pulassa.

Virtuaalinen talous tuntuu heijastelevan omaa maailman taloutta omassa pienessä mittakaavassaan.  Tosin tässä taloudessa on oikeastaan vieläkin vähemmän rikkaita henkilöitä.  Peli on ovelasti rakennettu sillain että oikeastaan mikään raha summa ei tunnu riittävän. Tällä hetkellä oikeastaan todella rikkaat henkilöt ovat pelissä kaikkein korkeimmalle tasolle päässeitä, mutta korkealle tasolle pääsee oikeastaan vain uhraamalla oikeata rahaa.

Virtuaalinen maailma on rakentunut niin että jokainen aktiivinen pelaaja koittaa hommata vähäsiä roposia kaikkein mahdollisin keinoin. Voidaankin todeta että kaupankäynti eri muodoissa kukoistaa.

Täytyykin tarkkailla tilannetta tuleeko myös virtuaaliseen maailmaan talouskriisi.

Luokittelematon ,

Sormenjäljet

February 27th, 2009

Olen koittanut kaivaa taustatietoa sormenjälkien tunnistuksesta, tästä linkkilista:

Tässä hyödyllillisimmät jota löysin, linkkejä saa ehdottaa kommentteihin.

Ohjelmointi, Tietokoneet ,