- Esimerkiksi sed-komennolla voi muokkailla tekstitiedostojen sisältöjä.
sed -i 's/timeout=10/timeout=30/' grub.cfg
Yllä oleva komento etsii tekstiä timeout=10 tiedostosta grub.cfg ja korvaa sen tekstillä timeout=30. -i-valitsin tekee muutokset suoraan alkuperäiseen tiedostoon. - Tarton rauhansopimuksessa "vähäisiä poikkeuksia lukuun ottamatta vanha Venäjän valtion omaisuus Suomen alueella katsottiin siirtyneeksi Suomelle".
Mitähän nuo poikkeukset ovat? - Jalat maassa oleva analyyttinen tyyppi. ATK-ihmiselle kelpaa.
- Hienosäädetty versio: https://pastebin.com/kyA3BsHU
Tuo edellinen ei ottanut loppuprinttauksissa huomioon kaarevuuden mahdollista äärettömyyttä ja siksi pyöristysfunktio päättyi virheeseen. - Hyvä tietää, toimiiko tuo eri käyttiksillä?
Laitoin "kaarevuus.py"-koodin Pastebiniin: https://pastebin.com/BdThZ2qG
Tulostelee esimerkiksi alla olevan tapaisia:
mint@mint-xfce:~$ python3 kaarevuus.py helsinki tampere
Helsinki (60.1674086, 24.9425683)
Tampere (61.4980214, 23.7603118)
Välimatka: 161.3 km
Kaarevuus: 2041 m
mint@mint-xfce:~$ python3 kaarevuus.py rautatieasema,helsinki länsisatama,helsinki
Rautatieasema,Helsinki (60.170435, 24.9406728)
Länsisatama,Helsinki (60.1595545, 24.9146468240679)
Välimatka: 1.9 km
Kaarevuus: 0 m
mint@mint-xfce:~$ python3 kaarevuus.py helsinki "washington dc"
Helsinki (60.1674086, 24.9425683)
Washington Dc (38.8950092, -77.0365625)
Välimatka: 6933.3 km
Kaarevuus: 7352230 m
mint@mint-xfce:~$ - Minulla on raakile tehtynä Pythonilla. Se käy siis netistä paikkojen koordinaatit Geocoderin https://geocoder.readthedocs.io/ avulla ja laskee kaarevuuden, jos pisteiden etäisyys on alle maapallon säde * pii / 2.
Voin tehdä sen valmiimmaksi, jos osaat käyttää Pythonia.
Geocoderin saa (Linuxissa) Pythoniin komennolla "sudo pip install geocoder". - Saisikohan tuolla tavalla toimimaan millä sain E5776:n?
https://keskustelu.suomi24.fi/t/15376889/huaweii-e5776-usb-johdolla-nettiin - Ja jos haluaa sen suoraan päivämäärien erosta, niin korvaa DATEDIF/PVMERO-funktioissa ensimmäisen parametrin arvolla 0, ja laittaa toiseen ko. päivämääräeron.
Esimerkiksi jos solussa A1 on päivämäärien erotus, niin:
=DATEDIF(0;A1;"y") &" vuotta,"&DATEDIF(0;A1;"ym") &" kuukautta," &DATEDIF(0;A1;"md") &" päivää" - Alla olevassa linkissä on kaava, josta saat kenties muokattua haluamasi.
https://exceljet.net/formula/get-days-months-and-years-between-dates
Esimerkiksi jos A1 sisältää alkupäivän ja B1 loppupäivän, niin funktio olisi:
=DATEDIF(A1;B1;"y") &" vuotta,"&DATEDIF(A1;B1;"ym") &" kuukautta," &DATEDIF(A1;B1;"md") &" päivää"
DATEDIF-funktion suomenkielinen nimi on PVMERO. - Ja rivit
int c;
int oc = '\0';
voi poistaa ja muuttaa rivin
while ((c = getchar()) != ESC)
muotoon
while ((getchar()) != ESC)
Kopioimassa koodissa tulostettiin näppäimiltä painettuja merkkejä, ja siksi tarvittiin apumuuttujia. - Oikealla+C-kielellä+tuo+onkin+vähän+monimutkaisempaa.+Copy–paste-koodausta+muutamalla+muutoksella:
----
#include+<stdio.h>
#include+<termios.h>
#include+<unistd.h>
#include+<fcntl.h>
#include+<stdlib.h>
#define+ESC+27
static+void+err_exit(const+char+*msg);
int+main(void)
{
int+c;
int+oc+=+'\0';
struct+termios+staryTermios,+novyTermios;
int+oflags,+nflags;
if+(tcgetattr(STDIN_FILENO,+&staryTermios)+!=+0)
err_exit("tcgetattr()+failed");
novyTermios+=+staryTermios;
novyTermios.c_lflag+&=+~(ICANON);
if+(tcsetattr(STDIN_FILENO,+TCSANOW,+&novyTermios)+!=+0)
err_exit("tcsetattr()+failed+to+set+standard+input");
oflags+=+fcntl(STDIN_FILENO,+F_GETFL);
if+(oflags+<+0)
err_exit("fcntl()+F_GETFL+failed");
nflags+=+oflags;
nflags+|=+O_NONBLOCK;
if+(fcntl(STDIN_FILENO,+F_SETFL,+nflags)+==+-1)
err_exit("fcntl()+F_SETFL+failed");
while+((c+=+getchar())+!=+ESC)
{
printf("Moi!\n");
}
if+(tcsetattr(STDIN_FILENO,+TCSANOW,+&staryTermios)+!=+0)
err_exit("tcsetattr()+failed+to+reset+standard+input");
putchar('\n');
return+0;
}
static+void+err_exit(const+char+*msg)
{
fprintf(stderr,+"%s\n",+msg);
exit(1);
} - Minulla on 4G-reititin, jonka kanssa oli vähän ongelmia saada toimimaan se USB-väylän kautta. Parilla komennolla se kuitenkin onnistui. Tein komennosta skripitin, joka ajetaan aina koneen käynnistyksen yhteydessä, joten netti toimii nyt automaattisesti.
- Joku selaimen lisäosa (esim. NoScript) saattaa blokata jonkun yhteyden. Jos mikään muu ei auta, niin kokeile ladata viestit esimerkiksi Thunderbirdin avulla. Sillä saat siirrettyä ne myös omalle koneellesi paikallisiin kansioihin, ja halutessasi vaikka toiselle sähköpostipalvelimelle.
- Jos A1 sisältää nimen "John Smith", niin funktiohässäkkä
=CONCATENATE(TRIM(RIGHT(SUBSTITUTE(A1; " "; REPT(" "; 100)); 100));", ";LEFT(A1;1);".")
palauttaa "Smith, J."
Suomenkielisessä Excelissä joutuu etsimään ehkä funktioille käännösnimet. - Eli tarkoitus on saada siis soluissa olevat pilkku-välilyönti -yhdistelmällä erotellut merkkijonot omiin soluihinsa?
Alla oleva makro pilkkoo valituissa soluissa olevat em. tavalla. Muuttuja "pilkkoja" sisältää merkkijonon, jonka perusteella solujen arvot erotellaan toisistaan. Tässä tapauksessa siis ", " eli pilkku ja välilyönti.
Makro toimii niin että ensin käydään silmukassa läpi kuinka monta arvoa on tulossa yhteensä ja varataan sen kokoinen VBA-merkkijonotaulukko. Seuraavaksi kopioidaan toisessa silmukassa jokaisesta solusta mahdolliset alimerkkijonot aikaisemmin varattuun taulukkoon. Viimeiseksi avataan uusi työkirja, jonka A-sarakkeen riveille kopioidaan arvot varatusta koontitaulukosta.
==========================================
Sub pilkkoja()
Dim tulokset As Workbook
Dim pilkottuja As Integer
Dim pilkotut() As String
Dim apulista() As String
Dim pilkkoja As String
pilkkoja = ", "
If Selection.Count > 0 Then
pilkottuja = 0
For Each solu In Selection
apulista = Split(solu.Text, pilkkoja)
If UBound(apulista) > 0 Then
pilkottuja = pilkottuja UBound(apulista) 1
End If
Next
If pilkottuja > 0 Then
ReDim pilkotut(pilkottuja)
pilkottuja = 0
For Each solu In Selection
apulista = Split(solu.Text, pilkkoja)
If UBound(apulista) > 0 Then
For Each elementti In apulista
pilkotut(pilkottuja) = elementti
pilkottuja = pilkottuja 1
Next
End If
Next
pilkottuja = 0
Set tulokset = Workbooks.Add
Set tulokset = ActiveWorkbook
For Each elementti In pilkotut
tulokset.Worksheets(1).Range("A1").Offset(pilkottuja, 0) = elementti
pilkottuja = pilkottuja 1
Next
tulokset.Worksheets(1).Range("A1:" & Cells(pilkottuja - 1, 1).Address).Select
End If
End If
End Sub - Kokeilin tuota VirtualBoxin Host-only -tyyppisellä verkkokortilla ja ainakin PuTTY 0.67:n kanssa näyttäisi copy-paste toimivan. Ubuntu Serverille ei tarvittu muuta kuin "sudo apt-get install openssh-server".
Ubuntu Server näytti saavan ip:n 192.168.56.101, joten isännästä PuTTYllä yhteys siihen. Hiiren vasemmalla maalataan ja keskinapilla kopioidaan leikepöydälle. Keskinapilla myös liitetään leikepöydältä.
login as: ubuntu
[email protected]'s password:
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
0 pakettia voidaan päivittää.
0 päivitystä on turvallisuuspäivityksiä.
Last login: Wed Apr 4 18:30:32 2018 from 192.168.56.1 - Pitäisi sen onnistua kun asentaa vaan ensin SSH-serverin sille Ubuntu Serverille. Verkkoasetukset on oltava tietysti myös kunnossa.
- Käytä etänä GUI-koneelta esimerkiksi SSH:n avulla.
- Voi olla ettei Excel osaa muuntaa tuota ehtoa suoraan. Libre Calcissa näytti toimivan:
=SUMIF(A1:A10;"<"&C1;B1:B10)
Tätä voisi kokeilla:
=SUMIF(A1:A10;CONCATENATE("<";TEXT(C1;"0"));B1:B10)
Tuo siis yhdistää merkkijonoksi (ehdoksi) "<" ja tekstiksi muutetun kokonaisluvun solusta C1. Saattaa olla että pelkkä ketjutusfunktiokin riittää.
CONCATENATE taitaa olla suomenkielisessä KETJUTA, ja TEXT varmaankin TEKSTI. - GParted-ohjelmalla voi tehdä levylle oman XFS-osion tv-käyttöön, ja sitten toisen osion vaikka NTFS-muotoon. Molemmat näkyvät kyllä televisiossakin, mutta tv tallentaa vain tuolle XFS-osiolle. NTFS-osiota voi käyttää puolestaan myös Windowsilla.
