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.


Aiheet - Mistofelees

Sivuja: [1] 2 3 ... 9
1
Yleistä keskustelua / Firefoxin pahus !
« : 10.01.23 - klo:23.59 »
Olin juuri bookkaamassa lentoa Hevonkuuseen. Pankkikortin tunnarit syötetty ja lentofirman sivu kuittasi, että odotahan hetki.
JA SILLOIN PAMAHTI !
FireFox nollasi sivut ja ilmoitti, että nyt päivitetään.
Ei mitään kysymystä siitä sopisiko tämä minulle. Ei mitään mahdollisuutta palata maksun käsittelyyn.
Mene suoraan kotipesään käymättä vankilan kautta.
No, poikkeaahan tämä M¤Wintoosan tavoista, joka kysyy Yes, No, Cancel, Retry ja tekee vasta sitten jotain typerää.

Koko sirkus piti aloittaa alusta. Lentofirma oli tietenkin tapansa mukaisesti nostanut hintaansa muutamalla kympillä.
Naputi-naputi-naputi ja puoli tuntia myöhemmin oli lippu ulostumassa printteriltä ja kotiserverin kovalevyllä PDF-tiedostona.

2
Yleistä keskustelua / ? Terminologiaa ?
« : 31.12.22 - klo:01.20 »
Nyt hävettää, mutta on pakko kysyä:

Mitä on ARRAY Suomeksi ?

Aikoinaan sitä kutsuttiin nimellä 'vektori'.
Joku käytti nimitystä 'ryhmä', joku jopa 'paririvi'.
'Taulukko' ei oikein ole sama asia, kuin ARRAY, 'Taulukko' on 'Table'

Itse olen muutaman vuosikymmenen  käyttänyt dokumentoinnissa jokseenkin pelkkää Englantia, mutta nyt pitäisi vääntäää dokumenttia myös Suomeksi.

3
Yleistä keskustelua / Kotiserveri
« : 16.12.22 - klo:12.33 »
Jäin taas miettimään, miten ihmiset tulevat toimeen ilman kotiserveriä.
'Äly' laitteiden ohjaus kierrätetään Kiinan kautta, missä niiltä kerätään kotiverkkosi salasanat. Jos Kiinalainen firma kaatuu, jää laite mykkänä  käteen.
Kotiverkon serveriin liitetty laite on turvallisempi ja toimii ilman Kijnalaista firmaa.

Serverin nettisivuille voi lisätä graafeja lämpötiloista, sähkön ja veden  kulutuksesta. Mikäli käytössä olisi oikea reititin, voisi VPN-ohjelmaa käyttäen käyriä katsella vaikka itse olisi ulkomailla. Samoin voisi omia serverillä olevia dokumenttejä hakea kännykällä, vaikka läppäri olisi kotona kaapissa virrattomana.

Kotiserverillä valokuvien lajittelu ja käsittely olisi helpompaa ja mukavampaa, kuin M$ ja Kuukkelin pilvilevyillä. Tosin tarvittavat kuvankäsittely- ja esittelyohjelmat puuttuvat, koska ei ole ollut asiakkaita

Datan varmuuskopiointi ei jäisi sen varaan, että 'asiat ovat omalla läppärillä'.
Omat datat ja valokuvat eivät katoaisi aina läppärin kilahtaessa.
Kevyimmillään kotiserveri on korttipakan kokoinen laite kirjahyllyn nurkassa.. mikäli levytilan tarve kasvaa, siihen voi liittää pari kovalevyä, jolloin kokonaisuus on taskukirjan kokoluokkaa.

Jos kotiserverit yleistyisivät, niille luotaisiin ohjelmia, joita osaisivat hekin käyttää, joilla on vihreä jauhopeukalo keskellä kumpaakin vasenta kättä.

Nykyisin serverit ovat nörttien lahja nörteille. Miina ja Manu ja PK-yritykset on unohdettu (tässäkin) kokonaan.

4
-" Jos haluat toimivan ja juuri päivitetyn serverin, sinulla pitää olla kaksi konetta".
Pakko ilmeisesti uskoa ja hankkia toinen serveri pääserverin rinnalle.

Suoritin tänään distro-upgraden serveriin.
Tulos oli jokseenkin odotettu.
Systeemi nousee pystyyn. Kaikki tähän asti testaamani toimii (ainakin pääsin kirjautumaan)

MUTTA:
Kaikki php:tä sisältävät webbisivut ovat rikki :(

Ei ole ensimmäinen kerta. PHP on ollut varsinainen riesa näiden päivitysten kanssa. Esimerkiksi 'split'-komennon korvaaminen 'explodella' aiheutti minulle parin viikon ylimääräiset työt firman servereiden päivityksessä.
Järkevä ylläpitäjä olisi linkittänyt splitin explodeen php:n ytimessä, jolloin asiakkaille ei olisi aiheutunut niin paljoa kiroamista.
Sain tämän korjattua tekemällä scriptin, mutta työtä oli silti paljon, koska servereitä oli lauma.

Ilmeisesti vika ei tälää kertaa ole PHP:ssä, vaan Apache2:ssa.
Etsimiseen menee taas hel*ti aikaa.

5
Yleistä keskustelua / Arduino IDE 2.0 ?
« : 14.11.22 - klo:19.15 »
Miten tuon Arduinon uuden IDE:n saa asennettua Linuxiin ?
Arduinon omilla sivuilla oleva ohje on pahasti vajaa.
Latasin heidän ZIP-pakettinsa ja levitin sen omaan hakemistoonsa.
Sieltä löytyy ohjelma 'arduino-ide', joka kyllä lähtee pyörimään, mutta ainakaan kahden tunnin odottelulla ei ole tapahtunut mitään muuta kuin että mustalla ruudulla supistelee Arduinon pöllönkuva.
Meinasin mennä kysymään Arduinon forumilta, jolla olen ennenkin asioinut, mutta nyt siellä vaaditaan kaksisuuntaista mielialahäiriötä, jota varten pitäisi ladata jotain lisäohjelmia kännykkään. Pitäköön tunkkinsa.

6
Onkohan kenelläkään valmiina dokumentoitua ohjelmanpätkää, joka laskisi CRC-16 X-25 tarkistussumman?
(mieluiten C tai php, mutta muukin käy)

Olen nyt haaskannut muutamia tunteja katsellen netistä tälläistä, mutta kaikki ovat huonosti dokumentoituja. Ei mitään selitystä siitä, missä muodossa data pitäisi tajoilla ja missä muodossa se tulee ulos.
Dokumentoinnissa on myös unohdettu kertoa, onko CRC-16 CCIT:lle, Kermitille, X-25:lle ...

Netissä olleet selitykset itse laskenta-algoritmista ovat olleet kovasti risti-riitaisia. 

7
Laite (GT06 GPS tracker) lähettää binääristä dataa 30 sek välein n. 40 tavua kerrallaan.
Tämä data pitäisi saada kaapattua talteen ja muokattua seuraavan ohjelman käyttöön.
Saan datan tiedostoon loitsulla
Koodia: [Valitse]
[b]nc -kl 9998 |od -An -tu1 > /tmp/tracker.tmp[/b]
Nyt pitäisi vielä saada tuolle kaapatulle datalle tehtyä pari muokkausta ennenkuin seuraava ryöppy tulee.
- Ilmeisesti komentoriville ei pysty pipe:n perään lisäämään erillistä komentoa ? Ainakaan itse en onnistunut.
- Tein putken päähän bash scriptin, jossa on pari riviä. Tulkki ei kuitenkaan suostu suorittamaan, kuin ensimmäisen näistä riveistä
Koodia: [Valitse]
[b] #!/bin/bash
od -An -tu1 $1
echo "Hello"[/b]

Tuokin on outoa, että vaikka ohjaan datan tulostumaan tiedostoon '>', kirjoitus ei ala puhtaalta pöydältä, vaan ikäänkuin olisin käyttänyt '>>'.

Onko ajatuksia ?

8
Onko niin, että Linuxin omilla työkaluilla ei pysty käsittelemään I2C-piiriä, jossa on enemmän sisäisiä osoitteita, kuin 256 ?
Itse haluaisin käyttää EEPROM:a Raspberryssä.

Olen nyt pari viikkoa vääntänyt tämän kanssa ja viimein löytyi smbus:n dokumentti, jossa sanotaan, että osoite on 8-bittinen:
https://www.kernel.org/doc/Documentation/i2c/smbus-protocol
-" Comm  (8 bits): Command byte, a data byte which often selects a register on the device.
Data  (8 bits): A plain data byte. Sometimes, I write DataLow, DataHigh for 16 bit data.
Count (8 bits): A data byte containing the length of a block operation."

i2c-dev.h headerissa osoitteet on määritelty '__u8', mikä ilmeisesti tarkoittaa 8-bittistä osoitetta.

Kirjoittamalla osoitteen High-8 Comm-byteen ja Low-8 Datan ensimmäiseksi tavuksi sain jotain aikaan, mutta kokeilut ovat kesken ja toimivuus huono.

Olenkin ihmetellyt, miksi kaikki netissä olevat esimerkit ovat vain 256 tavulle, samaten kaikki kehutut apuohjelmat, joilla pitäisi hallita muistipiirejä, esim I2Ctools:n I2Ctransfer ja I2Cset

9
Väänsin C:llä kaksi ohjelmaa EEPROM:n komentamiseen. Kohteena FM24C64 FRAM muisti.
Toisella kirjoitetaan merkkijono EEPROM:lle ja toisella luetaan ja tyhjennetään.
Nämä ovat osa omaa GPS-tracker-rakennelmaa, eivätkä sinänsä täysin yleiskäyttöisiä, mutta ehkä niistä saa vinkkiä johonkin muuhun kehittelyyn, vaikkeivat kovin kaunista koodia olekaan.
Nämä toimivat ainakin omassa kokoonpanossani kuten pitääkin.

Paketissa on myös ohjelma GPS:n $GPRMC-lauseen lukemiseen, sekä 4-riviselle LCD:lle tulostamiseen.

KORJAUS:
Kuvittelin jo kaiken olevan hyvin, koska kaikki testit näyttivät vihreää.
I2C:n kirjoittamisessa löytyikin ongelma. ohjelma kirjoittaa kaiken ensimmäiselle 256 tavulle ja kiertyy aina alkuun.
Kirjoitusrutiini käyttää siis vain alempaa 8 bittiä osoitteessa.:
- Mikään ja yksikään netistä löytämäni ohjeet eivät kerro, miten EEPROM:lle kirjoitetaan, jos muistin koko on suurempi, kuin 256 tavua.

WiringPi ja OrangePi ovat parhaillaan tutkinnassa.
Tätä menoa kirjoitan kohta oman low-level-paketin, jolei muuta ratkaisua löydy.

Pidätelkää hengitystä ;(

10
Olen kirjoitellut ohjelmistopakettia, joka veneessä ja matkailuautossa kerää esim paikkatietoa, esittää sen paikallisesti kulkuneuvon serverin omilla nettisivuilla ja lähettää kotiserverille. Vekottimessa on näyttölaitteena 4x20 I2C LCD.

Data lähetetään LCD:lle omatekoisella C-kielisellä ohjelmalla (  ./LCDtulosta clr "$D $T UTC"@1,1 "LAT: $lat"@2,1 "LON: $lon"@3,1 )
GPS:ää luetaan omatekoisella C-kielisellä ohjelmalla, joka printtaa $GPRMC -lauseen.

Sitten alkoivat ongelmat.
Systeemi kaatui ja kone meni jumiin epäsäännöllisesti 5min - 12h ajon jälkeen. BASH:n rajallisilla työkaluilla syyn löytäminen oli todella hankalaa.
Epäilin jo muistikortteja, prosessoria ja virtalähdettäkin.

Tämä auttoi hieman, tällä pääsi näkemään, missä kone kaatui:
trap 'echo "Vika rivillä $LINENO" >> /home/bin/i2cLCD/testi.txt' ERR
samaten pitkin scriptiä sirotellut echo "Ax">>/home/bin/i2cLCD/testi.txt -lauseet

'timeout' GPS:ää kutsuvalla rivillä auttoi selviämään GPS:n jumeista

Lopullinen ratkaisu suorastaan hävettää.
- Pistetään GPS työntämään tulostuksensa tiedostoon (tiedosto tietenkin tmpfs:llä !)
- Ajetaan C-ohjelmia taustalla ('&'), jotta niistä saadaan puristettua PID
- Pistetään scripti odottamaan GPS-ohjelman kypsymistä
- Haetaan tiedostosta rivi ja jatketaan

Kaikkine roskineenkin scriptin pyörähdykseen menee n. 2 sek, joten LCD:lle tulostuskin voidaan pistää taustalle '&'. I2C LCD:n ruudun täyttämiseen menee n. 1 sek.

Scripti ja C-ohjelmat itsessään ovat niin pitkät, etten viitsi niitä pistää tähän, mutta tässä on tarjolla mekanismi, jolla GPS:n lukeminen tuntuu onnistuvan
Koodia: [Valitse]
      timeout 3 /home/bin/i2cLCD/gps >$TMPFILE &
      pid=$!
      wait $pid
      read uline < $TMPFILE

Seuraava murhe on siinä, mitä tapahtuu, kun PID:n arvo kasvaa yli naapurin aidan. Osaako systeemi aloittaa PID-laskurin nollasta, vai tuleeko overflow ?

11

En löydä mistään tietoa C:n kielletyista komentoriviargumenteista.
'$' argumentin ensimmäisenä merkkinä ei toimi.
Jos '$' on keskellä sanaa, se ja loppusana katoavat

Onko joku temppu, jolla C:n saisi hyväksymään dollarimerkin komentorivillä ?
'$GPRMC ' on selkeämpi parametri, kuin 'GPRMC'


12
Kirjoitin Bash:lla kevyen scriptin, joka kutsuu toistuvasti C:llä kirjoitettua ohjelmaa 'GPS'
'GPS lukee sarjaportissa olevan GPS:n lähettämää tekstivirtaa, poimii siitä $GPRMC-lauseen, tulostaa sen ja poistuu.

Scripti pyörii 5 - 20 kierrosta. jonka jälkeen se jämähtää.
Vika on kirjoittamassani 'GPS'-ohjelmassa ja tarkemmin sen lukulauseessa
int n = read(fd, &line, sizeof(line));

Onko jotain tapaa, millä näkisi, mikä on vikana ? muistin ylivuotoja, tms

Olen kirjoittanut tuon GPS ainakin sata kertaa uudestaan eri rakenteilla

Scripti on vain testausta varten:
Koodia: [Valitse]
#!/bin/bash
lkm=0
while true; do
   ./gps;   lkm=$((lkm+1));   echo "lkm=$lkm"
done

13
Miten Linuxin saa siirtymään voimakkaimmalle reitittimelle ?

Tarkoitus on kasata kannettava Linux-kokoonpano, jota siirretään eri reitittimien vaikutusalueelle.
Reitittimet, niiden SSID ja salasanat ovat tiedossa, joten ne voisi kirjoittaa listaan, josta kone valitsisi parhaan.

Missä yleensäkin on kirjattuna käytetyn reitittimen tiedot ?
Jollei löydy mitään valmista, voisin keittää kasaan oman scriptin.

14
ONGELMA RATKESI SAMAN TIEN. Minulla oli kirjoitusvirhe runuser-komennossa.
Jätän tämän kuitenkin tänne varoittavaksi esimerkiksi ;)

crontab kutsuu lyhyttä scriptiä, joka ensin muokkaa hieman dataa ja paiskaa sen sitten serverille, jossa se liitetään (append) lokitiedoston loppuun.
Scripti kutsuu wiringop:n ohjelmia, jotka vaativat rootin oikeudet
Scp käyttää käyttäjätunnusta, joka on sama molemmissa koneissa.
SCP:n tunnistautumisessa käytetään public keytä.
SCP-komento toimii ilman salasanaa, jos sitä ajetaan käyttäjän oikeuksin.
Kun scriptiä ajetaan roottina, ohjelma kysyy käyttäjän salasanaa.
Scriptiä on pakko ajaa roottina, koska LCDtulosta sisältää kutsuja wiringop ohjelmiin.

Miten bash scriptin sisällä saisi tuon scp-rivin ajettua ilman salasanakyselyä ?

Tiivistelmä scriptistä:
Koodia: [Valitse]
#!/bin/bash
declare -a arr
NowC=$(date +"%H:%M")
IP=$(hostname -I)
IP=$(echo -n "${IP//[[:space:]]/}")
while true; do
   IFS="," read -r osoite line < /dev/ttyACM0
   if [[ $osoite == '$GPRMC' ]]; then
       uline=${line%?}
       set -f; IFS=','; arr=($uline)
      break
   fi
done
$(/home/bin/wiringop/i2cLCD/LCDtulosta clr $NowC@1,10 "LAT: ${arr[2]}"@2,1 $IP@4,1)
runuser -l -c "echo $uline | ssh luuseri@omaserveri 'cat - >> /home/luuseri/Sijainti/vaunu.txt' "

Tuo LCDtulosta on omatekemä C-kielinen ohjelma, joka tulostaa annetut merkkijonot LCD:lle annettuihin kohtiin. Ohjelma kutsuu wiringop -kirjastoja. Koneena on OrangePi Lite.

15
Ubuntu tietokoneissa / Onedrive, tilin vaihto?
« : 07.02.21 - klo:17.30 »
Minulla on käytössä kaksi 1TB levyaluetta M$ Onedrivessä, Käyttäjät minä@HOTMAIL.com ja minä@GMAIL.com, sekä tuore OneDrive v2.4.9-0~202012270043~ubuntu20.04.1.

Asensin ja configuroin OneDriven käyttäjälle minä@GMAIL.com. Tiedostot menevät kuitenkin synkronoinnissa minä@HOTMAIL.com levyalueelle.

Kuinka saisin vaihdettua OneDriven kohdelevyalueen / käyttäjän ?

16
Minulla on ollut Ubuntu-servereitä niin kauan, kuin niihin on saanut Apachen, joten tausta on tuttu.
Nyt päivitin kotipalvelimella Ubuntu 19.04 -> 20.04 ja sain ihan uuden ongelman.

Ulkoinen laite lähettää http POST -viestin serverissä olevalle server2.php-ohjelmalle, joka tallettaa datan valoloki.txt-tiedostoon.
Toinen PHP-vebbisivu tekee datasta phplot:lla kuvan selaimelle pyydettäess.

Kaikki toimii hetken hyvin, Sitten päivitys pysähtyy.
valoloki.txt-tiedoston omistajaksi on muuttunut roo:root ja permissioniksi 644, eikä tuo server2.php pysty kirjoittamaan tiedostoon.

Olen nyt kokeillut www-data:www-data 777 -omistajaa ja oikeuksia, mutta ne korvautuvat joka kerta, kun ohjelma on pyörähtänyt muutaman kerran.
Ohjelmissa ei ole mitään miniuun tekemääni, jmikä muuttaisi asetuksia.

MITÄ IHMETTÄ ?

17
Multimedia ja grafiikka / ? Gimp select ?
« : 26.10.20 - klo:13.15 »
Olen aloittelija GIMP:n kanssa, vaikka ollut IT-profina 40v ja käyttänyt kymmeniä muita kuvankäsittelyohjelmia..

Latasin kuvan ja tein sille flip horisontal.
Nyt en pysty valitsemaan kuvassa mitään, koska aina, kun vien kursorin kuvan päälle ja klikkaan vasemmalla, kuva kääntyy.
Kuvan ympärilla on virtaava katkoviiva, joka kai tarkoittaa, että se on valittu.

Jos suljen GIMP:n ja käynnistän uudestaan ja lataan minkä tahansa kuvan, ohjelma tekee samaa.
Miten tästä tilasta pääsee pois?

18
Kun kotona on lauma servereitä ja Arduino-peräisiä mitta- ja valvontalaitteita, alkoi harmittaa niiden kutsuminen IP-osoitteella.
Pistin Raspin DNS-serveriksi. Reititin saa olla nyt vielä DHCP-serverinä jonkin aikaa. Tosin käyttämäni Zyxelin karvalakki on jo nyt käynyt rajalliseksi.
 Kolmen päivän askartelun jälkeen homma lähti toimimaan. Linux, Win ja Arduino löytävät lelut nimellä. Applea en vielä ole päässyt kokeilemaan.

Netistä löytämäni ohjeet ovat hauskoja. Osa niistä jopa vei asiaa hieman eteenpäin.
Jos asia kiinnostaa, voin koittaa raapia kasaan jonkinlaiset dokumentit.

Hauskinta olisi tehdä Arduinosta local DNS-palvelin, johon osoitekirjan voisi tarjota SD-kortilla, mutta se on toinen tarina. Pitää ensin kaivella esille DNS-protokollasta lisää tietoa. Ainakaan Kuukkeli ei löytänyt yhtään valmista projektia.

19
Yleistä keskustelua / Ohjelmointikielistä
« : 04.04.20 - klo:11.35 »
Seuraava, joka kehittää taas uuden ohjelmointikielen voisi tehdä mukaan yhden fiitserin

Kun yhteenkuuluvat rakenteet paketoidaan sulkumerkkien sisään, voisi näihin sulkumerkkeihin lisätä myös tunnisteen. Vaikkapa vain numeron tai merkkisarjan, joka noudattaisi muuttujien nimeämiskäytäntöjä.
Fiksu IDE pystyisi ylläpitämään numerointia käsin koskematta ja ilmoittamaan virheistä lennossa.

Ohjelman kasvaessa ja sisäkkäisten rakenteiden määrän kasvaessa on vaikea enää tunnistaa, mikä loppusulku liittyy mihinkin alkusulkuun.

Ehdotukseni esimerkin muodossa:

void setup() asetukset{
       WiFi.begin()
}asetukset
for( ; ; ) 1{
    for( ; ; ) 2a{ plapla }2a
    for ( ; ; ) 3{
            plaplapla
    }3
}1

Joku jo ehdottikin, että sulut merkittäisiin väreillä. No ei kiitos näin värisokeiden puolesta. Eikä kukaan muutenkaan erota kymmeniä värejä toisistaan. Ei varsinkaan mv-laserilla paperille tulostettuna.
Joku hehkutti, että monet IDE:t korostavat loppusulun, kun vie kursorin alkusulun päälle. Ei ole tainnut ko henkilö koskaan kirjoittaa yhtä kuvaruutua pidempää ohjelmaa.
Sulkumerkkien korvaaminen sisennyksillä on suoraan p*stä. Se toimii kyllä, jos editoit koodia koko ajan samalla editorilla samassa koneessa, mutta tuo ongelmia koneelta toisella vaihtaessa.

20
Käyttäisin udp:tä esp8266-01 ja RasPin väliseen tiedonkeruuseen, koska se on varsin kevyt protokolla myös toteutettavaksi.
Vastaan tuli outo vika:
Jos lähetän esp:ltä jotain, nc jää edelleen odottamaan, eikä päätä yhteyttä.
Kokeilin tätä ristiin rastiin raspin, kotiserverien, läppärin ja  esp:n välillä ja aina sama juttu: yhteys jää roikkumaan.
Pitäisikö viestin loppuun ujuttaa joku loppumerkki. Mikä ja miten ?

Linuxilla lähetys komentoriviltä:
    echo "dataa" > /dev/udp/192.168.0.2/9999

esp:llä lähetys (arduino):
     Udp.beginPacket("192.168.0.2", localUdpPort);
    Udp.println(AllData);
    Udp.endPacket();

Linuxilla vastaanotto:
    nc -klu 9999

man:n mukaan nc:n parametri -k jättää komennon odottamaan seuraavaa pakettia. Jos sen jättää pois, ei tilanne muutu, vaan nc tulostaa omille riveilleen kaiken, mitä toiselta koneelta lähetetään, eikä systeemi koskaan palaa komentokehotteeseen:
    nc -lu 9999
Tämä pistää epäilemään, että nc ei saa kaipaamaansa loppumerkkiä.

Ajatuksia, ehdotuksia ?

Sivuja: [1] 2 3 ... 9