Näytä kirjoitukset

Tässä osiossa voit tarkastella kaikkia tämän jäsenen viestejä. Huomaa, että näet viestit vain niiltä alueilta, joihin sinulla on pääsy.


Viestit - Tommi S.

Sivuja: 1 2 [3] 4 5 ... 13
41
Ok. No, suunta on oikea, koska Sovellusvalikoima vie Synapticia minusta ainakin 5-0. Ja jatkossa löytyvät varmasti kaikki kilkkeet silläkin... Vielä kun keventävät sitä vähän, niin vielä parempi. Sitten menee puhtaasti 6-0 jo.
Minusta näyttäisi tilanne olevan puoliajalla Synapticin hyväksi 22 - 11.
Synaptic Features Supported in Ubuntu Software Center

Toisaalta taas Sovellusvalikoima sisältää ominaisuuksia jotka puuttuvat Synapticista, esim:
- Sovellukset järjestettynä hierarkkisiin kategorioihin
- Asennuksen voi käynnistää yhdellä klikkauksella
- Koko pakettijärjestelmää ei lukita kuin ainoastaan paketin asennuksen ajaksi
- Itsenäisten sovellusohjelmien ja muiden pakettien (kirjastot ym.) erottelu

Tässä pikaisessa ominaisuusvertailussa Synaptic on 4-0 tappiolla.

42
Tarvinneeko muuten sovelluksen sitä valitakaan - jos route ohjaa oikeaan verkkoon/koneelle?

Eikös tuo route ohjaa vain tiettyyn osoitteeseen menevät tietyn interfacen kautta? Jos tarkoitus olisi ohjata kaikki liikenne tiettyyn osoitteeseen, mutta vain jos liikenne on lähtöisin tietystä sovelluksesta, niin tuo ei taida silloin toimia.

Juuri googletin, ja jossain sanottiin että jos Firefoxin välityspalvelin-asetuksissa asettaa välityspalvelimeksi yhdyskäytävän osoitteen, niin silloin voisi ehkä ohjata kaiken Firefoxin liikenteen tiettyä kautta ulos.

43
Yleistä keskustelua / Vs: Hyökkääjän silmin
« : 10.03.11 - klo:13.46 »
Mitä ilmeisimmin en ole ainoa, joka moisen keksii, mutta haluaisin silti kertoa asiasta oikeille tahoille, jotta uhka voitaisiin arvioida ja tarvittaessa tehdä sille jotakin. Moderaattorit kenties, ja heille sitten yksityisviestit, vai miten tämä tulisi hoitaa?

Jos tuo uhka liittyy jotenkin foorumiin, esim. joku asetus on väärä, tai foorumi toimii väärin, niin silloin ehkä moderaattorit tai ylläpitäjä on oikea taho.

Mutta jos ongelma esiintyy käyttäjien koneilla, niin silloin mielestäni paras tapa olisi kertoa mikä tämä uhka on, jotta ihmiset tietäisivät siitä ja osaisivat varautua.

Sitten taas toisaalta, kerrot jo aloituksessa että et osaa ohjelmoida, eli et käytännössä osaisi toteuttaa tätä ajattelemaasi hyökkäystä, mikä saa kyllä epäilemään että keksimäsi uhka on edes todellinen.

44
Lähteet kiitos? Tuolla jauhamisella ei ole edes mitään näennäistä arvoa ellei sille ole jotain näyttöä.

Helsingin-Sanomat. Kyseessä oli artikkeli Nokian tehtaiden toiminnasta ja kustannuksista, Nokian omia tilastoja,, vuosi taisi olla 2004 ja kesällä.

Puhutaanko tässä nyt siitä Nokian N8 puhelimesta, jonka valmistus sinun mukaasi maksaa 6€ (lähteenä HS 2004), ja joka kuitenkin tuli ilmeisesti myyntiin vasta vuonna 2010?

45
Yleistä keskustelua / Vs: Soneralla on asiaa :P
« : 26.02.11 - klo:01.32 »
Se ongelma tulee jos on käytössä NAT, eli osoitteen muunnos.

Kuten mainitsin jo. Mutta ei koske vain NAT:ia. Riippuu hyvin paljon verkon rakenteesta ja asetuksista.

En tiedä mihin viittaat tuolla mainitsemisellasi, mutta esim. NAT-tauluun ei kirjata IP-osoitteita siksi että niitä ei tarvitsisi uudelleen hakea. Tuo kuulostaa pikemminkin DNS välimuistitukselta, tms.
Ja ongelma ei siis poistu sillä että modeemi näkee vain yhden yhdyskäytäväosoitteen ulkoverkkoon.

Tietenkin modeemi voi seota ihan mistä syystä tahansa, jos on seotakseen, eikä sillä ole välttämättä mitään tekemistä minkään välimuistin täyttymisen kanssa. Pelkästään se että modeemi välillä jumittaa ei siis tarkoita että olisi kyse juuri reititystaulun täyttymisestä.

46
Sinä et edes käytä mitään aikaa ottamaan selvää mitä oikeasti on tapahtunut hyvitysmaksun osalta ja miksi se on otettu käyttöön vaan ryntäsit heti kirjoittamaan nopeasti kuinka 1961 laki käsittelisi yksityistä musiikin kopiointia vaikka sitä ei ollut...

Sinä siis esitit että sisällön kopioiminen kovalevylle oli laitonta ennen kuin kovalevyille asetettiin hyvitysmaksu, mikä siis on ihan selvää puppua.
Esitit myös että "kansalaisaktivistit" ajoivat hyvitysmaksujärjestelmän käyttöönottoa jotta yksityinen kopiointi saatiin laillistettua, mikä myös on selvää puppua, jonka huomaa esim. siitä että yksityinen kopiointi saatiin laillistettua vuosikymmeniä ennen kuin "kansalaisaktivistit" saivat hyvitysmaksujärjestelmän käyttöön.

Puppua, puppua, puppua.

Sinun kohdallasi näyttää menneen kallis yhteiskunnan maksama koulutus melkolailla hukkaan.

47
Yleistä keskustelua / Vs: Soneralla on asiaa :P
« : 24.02.11 - klo:22.17 »
Mutta huomasit oikein että jos on vain yksi osoite nähtävillä niin ongelmia ei tule. Silloin vain lähiverkon koko olisi rajoitus ja... mitä nyt yhteen kotitalouteen koneita yleensä keskimäärin mahtuu (1-3) niin ongelmia ei tule todellakaan.

Juu ei, tästähän ei ole kyse ollenkaan.

Se ongelma tulee jos on käytössä NAT, eli osoitteen muunnos. Jos kotona on useampia koneita jotka ovat yhteydessä ulkoverkkoon saman modeemin kautta, niin silloin ne näkyvät ulkoverkkoon pelkästään yhdellä IP-osoitteella. Tällöin eri koneet ja koneilla pyörivät sovellukset täytyy erotella antamalla niille oma porttinumero ulkoverkkoon päin, ja näitä porttinumeroiden ja sisäverkon IP-osoitteiden (ja porttinumeroiden) välisiä vastaavuuksia se reititin kirjaa niihin "välimuisteihinsa".

Ongelmia voi tulla silloin jos nuo vastaavuustaulut eivät koskaan vanhene, ja kun käynnistät Firefoxin tänään niin se arpoo itselleen porttinumeron x, ja huomenna porttinumeron y, ja kun kuluu tarpeeksi monta päivää niin niitä porttinumeroita on reitittimen taulut täynnä. Mutta käsittääkseni ongelma on melko teoreettinen, ja korjautuu esim. sillä että irrottaa purkista virtajohdon ja kytkee uudelleen.

48
Juurikin hyvitysmaksun ansiosta yksityinen kopiointi on sallittua että jokaisesta kopiosta saa korvauksen. Ilman hyvitysmaksua != oikeutta yksityiseen kopiointiin.

Vuonna 1961 tekijänoikeuslain §11 sanoi "Julkistetusta teoksesta saa valmistaa muutamia kappaleita yksityistä käyttöä varten. Siten valmistettua kappaletta ei ole lupa käyttää muuhun tarkoitukseen."
Lähde: http://www.finlex.fi/fi/laki/alkup/1961/19610404

Hyvitysmaksujärjestelmä otettiin Suomessa käyttöön vuonna 1984
Lähde: http://www.hyvitysmaksu.fi/fin/hyvitysmaksu_suomessa.html

Yksityinen kopiointi oli siis sallittua jo vuosia ennen kuin mitään hyvitysmaksuja oltiin edes keksitty. Tuo puppu mitä suollat ei perustu mihinkään todelliseen, vaan se on puhtaasti puolueellisen etujärjestön markkinointitekstiä. "Hyvitysmaksu mahdollistaa yksityisen kopioinnin" on suoraan Teoston markkinointimateriaalista. Lakikirjasta sitä ei löydy, eikä mistään muualtakaan missä asiat esitetään todenmukaisesti.

Kirjoita lyhempiä kirjoituksia ja käytä säästynyt aika asioista selvää ottamiseen niin vältyt tällaisilta kiusallisilta kömmähdyksiltä.

49
Muokkailin tuosta peranin koodista ratkaisun joka toimii testiversiossa ainakin siihen pisteeseen että enää ei jouduta WGET-nappulasta www.fi:osoitteeseen. En tiedä miten se käyttäytyy tositilanteessa, ja alkaako se lataamaan, jne., mutta sitä voi nyt kokeilla. Laitoin koko korjatun skriptin taas siihen aiempaan viestiini.

Se miten tuo toimi ennen oli että se ensin loi ne WGET-linkit JQuery-komennolla, ja laittoi jokaisen linkin osoittamaan väliaikaisesti osoitteeseen www.fi, ja sitten heti perään se etsi ne juuri luomansa nappulat ja vaihtoi osoitteet oikeaksi. Tämä jälkimmäinen vaihe oli lakannut toimimasta. Nyt korjatussa versiossa koko homma tehdään yhdellä kerralla, ja puhtaalla JavaScriptillä ilman JQueryä.

50
Tein tuosta debugfileestä itselleni testisivun jolla olen nyt tuota skriptiä kokeillut.

Jos ne JavaScriptin pätkät siitä Python-skriptistä suoraan kopioi Chromiumin JavaScript-konsoliin, niin ne toimivat ihan niin kuin pitääkin, eli WGET-logot ilmestyvät, ja niissä on jokaisessa linkki www.fi:hin, ja seuraava skriptin pätkä muuttaa tuon linkin osoittamaan siihen varsinaiseen tallenteeseen. Ongelma näyttää siis olevan siinä miten tuo Python-skripti ja sen luoma QtWebKit-selain käsittelevät JavaScriptiä.

Siinä Python-skriptissä on tällaiset rivit:
Koodia: [Valitse]
def loadFinished(self, ok):
url1 = unicode(self.web.url().toString())

self.web.page().mainFrame().evaluateJavaScript("$('table[class=tablemain]').css('width', '100%')")
self.web.page().mainFrame().evaluateJavaScript("$('td[class=footerinfo]').parent().remove()")

if url1.find("http://www.saunavisio.fi/tvrecorder/ready.sl", 0) != -1:
self.web.page().mainFrame().evaluateJavaScript("$('img[alt=Katso]').attr('src', '" + png_vlc + "')")
self.web.page().mainFrame().evaluateJavaScript("$('a[class=movetip]').parent().css('width', '95px')")
self.web.page().mainFrame().evaluateJavaScript("$('a[href$=view=true]').p... blah blah ... piirretään WGET-logot ...)")

js = "var row = document.getElementsByTagName ... blah blah ... muutetaan www.fi oikeaksi osoitteeksi ...}"
self.web.page().mainFrame().evaluateJavaScript(js)

Tuota viimeistä riviä ei päästä suorittamaan, ja siitä ongelma johtuu. QtWebKitin Javascript hyytyy jotenkin ennen tuota, tai jotain muuta outoa tapahtuu. Kokeilin tuota niin että laitoin tuonne js-muuttujaan sekaan yhden alert('heippa') JavaScript-komennon, ja huomasin että kun yhden noista ylemmistä self.web.page().mainFrame().evaluateJavaScript -riveistä kommentoi pois, niin alin rivi toimi, ja kun taas kommentoi yhden pois niin alin rivi ei toiminut, ja kun taas kommentoi yhden pois niin taas toimi. Ihan kuin tuo suostuisi suorittamaan vain parillisen tai parittoman määrän noita JavaScript-komentoja tai jotain. Tai sitten se tukehtuu tuohon JQueryyn.

En ehdi tänään selvittää enempää. Palaan asiaan ehkä huomenna, tai viimeistään ylihuomenna. Laitoin liitteeksi oman "testiympäristöni" jos joku haluaa kokeilla. Tuon paketin kun purkaa johonkin hakemistoon ja komentaa "python sauna_testi.py" niin pitäisi päästä näkemään sen lataussivun.

[ylläpito on poistanut liitteen]

51
Tuota on vaikea ratkoa koska ei näe sitä HTML-koodia jota se skripti yrittää muokata, niin ei tiedä että missä se skripti menee pieleen. Siksi ehdotankin että teet skriptiin seuraavan muutoksen, joka tallentaa jokaisen käydyn sivun HTML-koodin tiedostoon nimeltä debugfile, ja sitten käyt sellaisella sivulla jossa on tuollainen wget-tallennuslinkki ja laitat sen syntyneen debugfilen tänne keskusteluun, niin päästään näkemään miltä sen sivun rakenne näyttää.

Lisää siis tuohon skriptiin rivin 82 jälkeen seuraavat rivit:
Koodia: [Valitse]
debugfile = open("debugfile", 'a')
debugfile.write("\n\n\n\n" + url1 + "\n##########################################\n\n\n\n")
debugfile.write(self.web.page().mainFrame().toHtml())
debugfile.close()

Siellä skriptissä on siis tällainen kohta:
Koodia: [Valitse]
def loadFinished(self, ok):
url1 = unicode(self.web.url().toString())

self.web.page().mainFrame().evaluateJavaScript("$('table[class=tablemain]').css('width', '100%')")
self.web.page().mainFrame().evaluateJavaScript("$('td[class=footerinfo]').parent().remove()")
niin tuohon tyhjän rivin tilalle laitetaan nuo ylempänä olevat rivit jotka alkavat 'debugfile'.

Se debugfile siis sisältää kaikkien sivujen koodin jossa on käyty. Ne sivut on eroteltu sellaisella ##### viivalla, ja jos luulet osaavasi erottaa sen lataussivun sieltä tiedostosta niin voit laittaa pelkän sen koodin, ei tarvitse koko debugfileä.

Muokkasin tuon muutoksen myös siihen edellisen viestini pitkään koodiin, josta koko skriptin voi kopioida kerralla.

Jos sinne samalle lataussivulle pääsee myös esim. Firefoxilla, niin sekin riittäisi että ottaa Firefoxista Näytä->Sivun lähdekoodi ja kopioi sen lähdekoodin tänne keskusteluun. En yhtään tiedä miten tuo saunalahtisysteemi toimii.

52
Jäljempänä tulevaan skriptiin on lisätty debugfilen luomistoiminto

Jäljempänä tuleva skripti on ratkaisuehdotus ongelmaan, mutta sitä ei ole vielä testattu ja varmistettu toimivaksi


HUOM! Tämän viestin lopussa on korjattu skripti jonka pitäisi ratkaista kyseinen ongelma

Ihan ensimmäiseksi huomautan että tuossa skriptissä on JavaScriptiä Python skriptin seassa, ja se ongelma vaikuttaisi olevan siinä JavaScriptissä. Jos otsikoksi vaihtaisi esim. "JavaScript/Python osaajan taitoja kaivataan" niin voisi houkutella enemmän asiantuntevia neuvojia paikalle.

...Mutta katsotaan jos tämä hoituisi ilman enempiä asiantuntijoita. Katsoin tuota hieman ja minulle tulee mieleen pari vaihtoehtoa miksi se ei toimi.

Ensimmäinen olisi että tuo "Katso tallenne" -nappula on jotenkin muuttunut, eikä sen HTML title -attribuutti ole enää ihan prikulleen 'Katso tallenne', niinkuin koodi olettaa. Tämän vian korjaamiseksi täytyy riviltä 98 seuraava koodipätkä:
Koodia: [Valitse]
if (link[ii].title == 'Katso tallenne') {var wget = link[ii].href + '&wget=true';}\n\muuttaa tällaiseksi:
Koodia: [Valitse]
if (link[ii].title.indexOf('Katso') != -1) {var wget = link[ii].href + '&wget=true';}\n\eli kokeile etsiä tuo ensimmäinen rivi koodista ja muuttaa se tuon alemman mukaiseksi. Onnistuu ihan leikkaamalla ja liimaamalla ja tekstieditorilla.

Tuo korjaus ei siis enää luota siihen että linkin title on 'Katso tallenne', vaan se vain katsoo että linkistä löytyy ylipäätään tuo sana 'Katso'.

Toinen mahdollisuus on että noiden elementtien järjestys on muuttunut. Tuon vian korjaamiseen täytyisi seuraavat rivit (alkaen riviltä 97):
Koodia: [Valitse]
for (var ii = 0; ii < link.length; ii++) {\n\
if (link[ii].title == 'Katso tallenne') {var wget = link[ii].href + '&wget=true';}\n\
if (link[ii].href == 'http://www.fi/') {link[ii].href = wget;}\n\
}\n\
muuttaa tällaisiksi:
Koodia: [Valitse]
for (var ii = 0; ii < link.length; ii++) {\n\
if (link[ii].title == 'Katso tallenne') {var wget = link[ii].href + '&wget=true';}\n\
}\n\
for (var ii = 0; ii < link.length; ii++) {\n\
if (link[ii].href == 'http://www.fi/') {link[ii].href = wget;}\n\
}\n\

En oikein itse pysty tämän toimivuutta testaamaan, joten en voi olla varma toimiiko tämä tai tuliko minulle jotain kirjoitusvirheitä tms., joten kokeile näitä ja raportoi takaisin miten onnistui.




Tässä nyt kokonainen skripti, jonka pitäisi toimia. Tämän voi kopioida ja tallentaa .py -päätteiseen tiedostoon, ja sen jälkeen kyseisen tiedoston voi suorittaa.
Koodia: [Valitse]
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

#################### HUOMIO HUOMIO HUOMIO ####################
#
# Testattu Python 2.6.2 ja sitä vastaavalla PyQt4 paketilla
#
#
# Windows asennus, ohjelmat asennettu oletusasetuksin
# Python http://python.org/ftp/python/2.6.2/python-2.6.2.msi
# PyQt4  http://www.riverbankcomputing.com/static/Downloads/PyQt4/PyQt-Py2.6-gpl-4.5.4-1.exe
#
#
# Linux asennus
# sudo apt-get install python-qt4
# Linuxissa scripti pitää tallentaa muodosssa Western (ISO-8859-15) jotta selaimen alt="Siirrä tallenne" näkyy oikein
#
#
# Mac OS asennus
# Varmaankin toimii, joku vois testailla
#
#
# Konfigurointi
# Muuta username ja password
# Muuta kohtien # WINDOWS ASETUKSET tai # LINUX ASETUKSET jälkeisiä rivejä (vlc, wget, directory)
#
#
#################### HUOMIO HUOMIO HUOMIO ####################


import os, sys
from PyQt4 import QtCore, QtGui, QtWebKit
if os.name == 'nt': import subprocess


username  = ''
password  = ''

if os.name == 'nt':
# WINDOWS ASETUKSET
vlc       = '"C:\\Program Files\\VideoLAN\\VLC\\vlc.exe"  --sub-language fi --vout-filter deinterlace --deinterlace-mode blend '
wget      = '"c:\\apu\\wget.exe" -t0 -c -S --progress=dot:mega -owget.log '
directory = 'c:\\video\\saunavisio\\'
else:
# LINUX ASETUKSET
vlc       = 'vlc --sub-language fi --vout-filter deinterlace --deinterlace-mode blend '
wget      = 'wget -t0 -c -S --progress=dot:mega -owget.log '
directory = 'video/saunavisio/'


png_vlc = "data:image/png;base64,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"

png_wget = "data:image/png;base64,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"


if directory != '':
if os.path.isfile(directory) == False:
if os.path.isdir(directory) == False:
os.makedirs(directory)


class SaunaBrowser(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.resize(1016, 734)
screen = QtGui.QDesktopWidget().screenGeometry()
size =  self.geometry()
self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2)
self.setWindowTitle("SaunaBrowser")

self.web = QtWebKit.QWebView(self)
self.web.setZoomFactor(1.0)
QtCore.QObject.connect(self.web, QtCore.SIGNAL("loadFinished(bool)"), self.loadFinished)
self.web.load(QtCore.QUrl("http://www.saunavisio.fi/tvrecorder/index.sl?username=" + username + "&password=" + password))

layout = QtGui.QVBoxLayout(self)
layout.setMargin(0)
layout.addWidget(self.web)


def loadFinished(self, ok):
url1 = unicode(self.web.url().toString())

self.web.page().mainFrame().evaluateJavaScript("$('table[class=tablemain]').css('width', '100%')")
self.web.page().mainFrame().evaluateJavaScript("$('td[class=footerinfo]').parent().remove()")

if url1.find("http://www.saunavisio.fi/tvrecorder/ready.sl", 0) != -1:
self.web.page().mainFrame().evaluateJavaScript("$('img[alt=Katso]').attr('src', '" + png_vlc + "')")
self.web.page().mainFrame().evaluateJavaScript("$('a[class=movetip]').parent().css('width', '95px')")

js = """
var row = document.getElementsByTagName('tr');
if(!done) {
for (var i = 0; i < row.length; i++) {
var length = row[i].className.length;
if (row[i].className.substring(length, length - 11) == 'programview') {
var link = row[i].getElementsByTagName('a');
for (var ii = 0; ii < link.length; ii++) {
if (link[ii].title == "Katso tallenne" ) {
var wget = link[ii].href + '&wget=true';
var parent = link[ii].parentNode;
var child = document.createElement('a');
child.href=wget;
child.title=wget;
var image = document.createElement('img');
image.border = '0';
image.alt = "Lataa";
image.setAttribute('src', """ + chr(34) + png_wget + chr(34) + """);
child.appendChild(image);
parent.appendChild(child);
}
}
}
}
}
var done=true;
"""
self.web.page().mainFrame().evaluateJavaScript(js)

if url1.find("http://www.saunavisio.fi/tvrecorder/program.sl?programid=", 0) != -1:
if url1.find("view=true", 0) != -1:
html = unicode(self.web.page().mainFrame().toHtml())
html = str(html.encode("utf-8"))

self.web.page().mainFrame().evaluateJavaScript("$('object').remove()")

i1 = html.find("doGo('", 0)
if i1 != -1:
i2 = html.find("'", i1 + 7)
if i2 != -1:
url2 = chr(34) + html[i1 + 6:i2] + chr(34)
url2 = url2.replace("tvmedia11.saunalahti.fi", "tvmedia12.saunalahti.fi")
self.web.load(QtCore.QUrl("http://www.saunavisio.fi/tvrecorder/ready.sl"))

aika = ""
i1 = html.find("<b>Aika</b>: ", 0)
if i1 != -1:
i2 = html.find("<br>", i1 + 14)
if i2 != -1:
aika = html[i1 + 13:i2]
vvvv = aika[6:10]
kk = aika[3:5]
pp = aika[0:2]
hh = aika[11:13]
mm = aika[14:16]
aika = vvvv + kk + pp + "_" + hh + mm

ohjelma = "tunnistamaton"
i1 = html.find("<b>Ohjelma</b>: ", 0)
if i1 != -1:
i2 = html.find("<br>", i1 + 17)
if i2 != -1:
ohjelma = html[i1 + 16:i2]

if aika != "":
ohjelma = aika + "_" + ohjelma + ".ts"
else:
ohjelma = ohjelma + ".ts"

ohjelma = ohjelma.replace(chr(32), "_")     #  
ohjelma = ohjelma.replace(chr(34), "")      # "
ohjelma = ohjelma.replace(chr(40), "")      # (
ohjelma = ohjelma.replace(chr(41), "")      # )
ohjelma = ohjelma.replace(chr(42), "")      # *
ohjelma = ohjelma.replace(chr(47), "")      # /
ohjelma = ohjelma.replace(chr(58), "")      # :
ohjelma = ohjelma.replace(chr(60), "")      # <
ohjelma = ohjelma.replace(chr(62), "")      # >
ohjelma = ohjelma.replace(chr(63), "")      # ?
ohjelma = ohjelma.replace(chr(92), "")      # \
ohjelma = ohjelma.replace(chr(124), "")     # |
if os.name == 'nt': ohjelma = ohjelma.decode('utf-8').encode('latin1')

if url1.find("wget=true", 0) != -1:
if os.name == 'nt':
subprocess.Popen(wget + url2 + " -O" + directory + ohjelma)
else:
os.system(wget + url2 + " -O" + directory + ohjelma + "&")
else:
if os.name == 'nt':
subprocess.Popen(vlc + url2)
else:
os.system(vlc + url2 + "&")


app = QtGui.QApplication(sys.argv)
saunabrowser = SaunaBrowser()
#saunabrowser.show()
saunabrowser.showMaximized()
sys.exit(app.exec_())

53
Jep, tämä ainakin toimii. Pelkäsinkin, että tarvitaan paria apusaraketta.

Ei niitä apusarakkeita ihan välttämättä tarvita, ne IF-lauseet voisi periaatteessa laittaa sisäkkäin, mutta itse ainakin pilkon kaiken mahdollisen erillisiin soluihin ja sarakkeisiin, sillä siten kaavat on usein helpompi ymmärtää ja muokata, ja apusoluissa näkee miten laskutoimituksen välivaiheet suoritetaan, jolloin mahdolliset bugit kaavojen eri osissa on mahdollista havaita.

Tuo max-min systeemi on OpenOfficessa seuraava:
Solussa A1 on pisteet, solussa B1 on ab+x kaavan tulos, ja solussa C1 on
Koodia: [Valitse]
=MAX( MIN(5; B1) ; 0)Tuonkin voisi tehdä siten että tekee MIN-funktion omassa sarakkeessaan, ja MAX-funktion omassaan. Tuon B1-solun kaavan voi myös suoraan laittaa tuonne MIN-funktion argumentiksi, jos haluaa päästä mahdollisimman vähillä sarakkeilla, mutta se mitä aiemmin sanoin pätee...

54
Tuota yhtälöryhmää on mielestäni vaikeaa ajatella yhtälöryhmänä, koska se oikeastaan sisältää epäyhtälöitä.

Mutta OpenOfficen taulukkolaskennassa on funktio nimeltä IF, joka ottaa kolme argumenttia, ja jolla ainakin voi tehdä tuollaisia ehdollisia lausekkeita.

IF funktion muoto on tällainen:
IF(ehto; tulos_jos_ehto_tosi; tulos_muussa_tapauksessa)
Pari esimerkkiä:
IF(1=1; 5; 7) antaa soluun arvoksi 5 (sillä 1=1 on tosi)
IF(1=2; 5; 7) antaa soluun arvoksi 7

Jos esim. oppilaan pistemäärä on solussa A1, niin soluun B1 tehdään tuo ax+b kaava
Sitten soluun C1 tehdään kaava =IF(B1<0; 0; B1), jolloin C1 soluun kaikki nollaa pienemmät tulokset ovat vain nollia, ja muut tulokset kopioidaan sellaisenaan.
Lisäksi soluun D1 tehdään kaava =IF(C1>5; 5; C1), jolloin D1 soluun kaikki viitosta suuremmat tulokset ovat vain viitosia, ja muut tulokset kopioidaan sellaisenaan.

Eli tehdään kaksi saraketta joista ensimmäisessä suodatetaan pois nollaa pienemmät arvot, ja toisessa suodatetaan pois viitosta suuremmat arvot. Sitten viimeisessä sarakkeessa voi tehdä vaikka tasalukuun pyöristyksen.

Tässä vielä koko juttu selvennyksenä:
   A   B             C               D
1  12  =A1*(1/3)-4   =IF(B1<0;0;B1)  =IF(C1>5;5;C1)
2  23  =A2*(1/3)-4   =IF(B2<0;0;B2)  =IF(C2>5;5;C2)
2  28  =A3*(1/3)-4   =IF(B3<0;0;B3)  =IF(C3>5;5;C3)


55
Nyt ulkoiset kiintolevyt kuuluvat hyvitysmaksujen piiriin mikä tarkoittaa että niihin saa itse säilöä tai kopioida laillisesti hankittujen tekijänoikeudenalaiset materiaalit. Eli nyt voi mennä kaverin luokse ja kopioida hänen ostamansa musiikkilevyn tai elokuvan (jos hän niin sallii ja lakia ei rikota mm. lukumäärältä) ilman että se olisi laitonta.

Samoin on myös laillista tallentaa digiboxista nauhoituksia ulkoiselle kiintolevylle ja jopa myös kopioida niitä vaikka sellaiselle josta siirtää kopiot taas vaikka mökin digiboxille. (Juu, ihmiset ovat tehneet sitä aiemmin mutta se on ollut laitonta).

Ei, asia ei ole näin. Yksityiseen käyttöön kopiointi on sallittua, ihan riippumatta siitä maksetaanko kovalevystä hyvitysmaksua vai ei, ja se on ollut sitä koko ajan, vaikka kovalevyistä ei olekaan hyvitysmaksua maksettu. Runoteoksiakin saa yksityisesti kopioida kynällä paperille ihan laillisesti, vaikka kynästä tai paperista ei olisikaan maksettu hyvitysmaksua.

Toinen asia on sitten se, että jos levyllä tai muulla on kopiosuojaus, niin siltä ei saa kopioida sisältöä, ei edes yksityiseen käyttöön, eikä edes silloin jos hyvitysmaksu on maksettu.

Hyvitysmaksu ei mahdollista yksityistä kopiointia, vaan sen on vain tarkoitus kattaa tästä kopioinnista oletettavasti syntyviä tappioita.

56
Yleistä keskustelua / Vs: OpenOffice.org maksulliseksi
« : 28.12.10 - klo:14.06 »
Taidatpa Tommi olla väärässä. Ei Oraclen tarvi jakaa Openofficea maksuttomasti kellekään eikä Oraclen kehitysversiot siitä tarvi olla avoimia muiden käytettäviksi, ei. Openoffice on nyt Oraclen tuotemerkki eikä se muiden käytettävissä ilman Oraclen lupaa.

Ei kerran avoin lähdekoodin ohjelma ole välttämättä ikuisesti avointa lähdekoodia.
Omistaja eli lähdekoodin haltia päättää avoimuudesta just niinkuin itse tykkää - ei kuitenkaan takautuvasti...

No joo, kun nyt ajattelen niin periaatteessa kyllä, Oracle voisi ihan hyvin laittaa OpenOffice.orgin suljetuksi, ja samalla lakkaisi ottamasta vastaan ulkopuolisten ilmaiseksi tekemää kehitystyötä ja alkaisi itse vastaamaan koko Open Office kehityksestä. Mutta jos siis periaatteena on se, että annetaan muiden tehdä työt lähdekoodipalkkiolla ja sitten myydään toimistopakettia kilpailijaa edullisempaan hintaan, niin kyllä silloin on pakko pitää vapaat lisenssit käytössä. Ja sama vanha lisenssi näyttää edelleen OpenOffice.orgilla olevan käytössä.

Siksi porukka perusti säätiön jatkamaan Openofficen vapaan version kehitystä Libreoffice-nimellä, koska Openoffice meni Oraclelle. Libreofficen kehitys jatkuu siitä Sun Microsystemsin aikaisesta Openofficeversiosta eteen päin ihan omia latujaan. Eikä siihen saa ottaa mitään Openofficen uudempien kehitysversion ominaisuuksia ellei siis Oracle anna lupaa.

LibreOffice perustettiin käsittääkseni siksi että jo pidemmän aikaa ihmiset olivat olleet tyytymättömiä Sunin toimintaan OpenOffice.org:in kanssa, ja nyt sattui olemaan hyvä tilaisuus. Oracle sai Sunin haltuunsa vuoden 2010 helmikuun alussa, ja OpenOffice.orgin versio 3.3 beta julkaistiin vuoden 2010 elokuussa, ja tähän Oraclen aikaiseen beta-versioon LibreOffice perustuu. Joku OpenOffice.org kehittäjä kirjoitti blogissaan että jatkaa mieluummin OpenOffice.org kehittäjänä kuin lähtee LibreOfficeen, sillä todennäköisesti kaikki OpenOffice.orgiin tulevat ominaisuudet otetaan myös LibreOfficeen, mutta toisinpäin tuskin tulee tapahtumaan.

57
Yleistä keskustelua / Vs: OpenOffice.org maksulliseksi
« : 27.12.10 - klo:10.47 »
Jos sama yritys tuottaa sekä ilmaista, että kaupallista versiota, eikä versioiden ero rajoitu mm. tukeen. Niin silloin on luonnollisesti olemassa melkoinen riski siihen, ettei ilmaisen version kehittämiseen tahdo löytyä intressejä. Eli siinä mielessä MySQL ja OpenOffice.org ovat molemmat riskisektorissa. Käsittääkseni myös monet ennen OpenOfficen parissa työskennelleet ovat loikanneet LibreOfficen puolelle.

Toivottavasti kuitenkin tuli selväksi että "Oracle Open Office" ei ole "OpenOffice.org", vaikka käynnistysruudussa vilahtaakin Oraclen logo, ja OpenOffice.org ei ole muuttunut tai muuttumassa maksulliseksi.

Oracle Open Office perustuu OpenOffice.org:iin, ja OpenOffice.org:ia jaellaan GNU projektin vapaalla lisenssillä, joten jos Oracle haluaa kehittää omaa Oracle Open Officeaan niin he tulevat kyllä pakosti samalla kehittäneeksi myös OpenOffice.orgia, elleivät sitten halua kirjoittaa koko softaa alusta asti uusiksi. Tämä lisensointi myös mahdollisti LibreOfficen syntymisen.

Sinänsä kyllä ihan kaikki on riskisektorissa paitsi verot ja kuolema. Minä päivänä hyvänsä esimerkiksi tunnettu kumisaapasvamistaja voi luopua maksullisista kumisaapastuotteistaan ja ryhtyä valmistamaan kännyköitä.

58
Yleistä keskustelua / Vs: OpenOffice.org maksulliseksi
« : 22.12.10 - klo:20.46 »
Mun OpenOffice.orgista ladatussa OpenOffice.orgissa lukee kyllä ihan selvästi punaisella tekstillä Oracle aina kun sen käynnistän. Hmm, mitähän tuosta sitten pitäisi ajatella. Ehkä siitä on Oracle ja Oracle versiot?

Siitä pitäisi ajatella ehkä sitä että Oracle omistaa OpenOffice.org:in. Ennen Oraclea sen omisti yhtiö nimeltä Sun, ja silloin tuossa aloitusruudussa luki Oraclen tilalla Sun. Tähän tyyliin: http://marketing.openoffice.org/3.0/splashvote/

Eli ennenvanhaan siitä oli "Sun versio", nykyään on "Oracle versio". Kummassakin tapauksessa on kyse ohjelmistosta nimeltä "OpenOffice.org", eikä ohjelmistosta nimeltä "Oracle Open Office". Samalla tavalla myös "Helsingin Sanomat" ja "Ilta-Sanomat" ovat eri tuote, vaikka niillä on vähän samankuuloinen nimi, ja ne ovat molemmat saman yhtiön omistuksessa.

59
Yleistä keskustelua / Vs: OpenOffice.org maksulliseksi
« : 22.12.10 - klo:18.47 »
Minusta näyttää siltä että tämän ketjun otsikko on virheellinen, nimittäin se ei ole OpenOffice.org -niminen tuote joka on maksullinen, vaan se on OpenOffice.org:iin perustuva, mutta kuitenkin eri tuote, nimeltään Oracle Open Office, joka on maksullinen.

OpenOffice.org != Oracle Open Office

Wikipedian pikaisen selaamisen jälkeen näyttää siltä että tuo Oracle Open Office on muuten sama kuin OpenOffice.org, mutta se sisältää joitain ylimääräisiä plugareita ja fontteja ja asiakirjapohjia ym.

Oraclen esitteessä sanotaan näin:
"This leading open stanards–based office suite is built upon the open source, downloadable OpenOffice.org."

60
Yleistä keskustelua / Vs: Linux saa lisää nopeutta
« : 08.12.10 - klo:21.05 »
Sellaista on ilmennyt tämän bash-paikan kanssa että välillä jollain sivulla on ilmeisesti joku flash-juttu joka alkaa imeä resursseja niin paljon että koko työpöytä hidastuu, eli hiiren kursori liikkuu hieman nykien, ym. Tämä loppuu heti kun sulkee selaimesta tietyn välilehden jolla näyttäisi olevan jokin flashillä tehty valokuvaesitys tms. Kun katsoo hidastumisen aikana järjestelmän valvonnasta että mikä prosessi resursseja käyttää niin siellä on päällimmäisenä Xorg.

Sivuja: 1 2 [3] 4 5 ... 13