Pieniä kysymyksiä ohjelmoinnista

Liittynyt
03.07.2018
Viestejä
347
Käytetäänkö yrityksissä vielä nettisivujen ja -appiksien tekemisessä typescriptiä ?
Sehän oli hieno juttu aikoinaan, mutta onko nykyisin enää muuta kuin taakka ?
 

nnaku

I'm object-oriented!
Liittynyt
28.11.2016
Viestejä
779
Käytetäänkö yrityksissä vielä nettisivujen ja -appiksien tekemisessä typescriptiä ?
Sehän oli hieno juttu aikoinaan, mutta onko nykyisin enää muuta kuin taakka ?
Aikoinaan.... Taitaa TypeScriptin ajat olla vasta tulossa. Sen verran kovasti kerää kiinnostusta ja käyttäjiä tällä hetkellä ympärillee.

1591901837875.png
 
Liittynyt
17.10.2016
Viestejä
14 550
Käytetäänkö yrityksissä vielä nettisivujen ja -appiksien tekemisessä typescriptiä ?
Sehän oli hieno juttu aikoinaan, mutta onko nykyisin enää muuta kuin taakka ?
Totta kai käytetään. Varmaan fronttipuolella yksi käytetyimmistä tekeistä. Miksi se olisi taakaksi muuttunut?
 
Liittynyt
16.10.2016
Viestejä
543
Totta kai käytetään. Varmaan fronttipuolella yksi käytetyimmistä tekeistä. Miksi se olisi taakaksi muuttunut?
Bäkkärillä myös erittäin suosittu. Nyt Denon myötä vaan mylly kasvaa. Veikkaan että lähitulevaisuudessa muuta kirjoitetakaan kuin TypeScriptiä jos JS pitää kirjoittaa.
 

Hessu

Tukijäsen
Liittynyt
29.10.2016
Viestejä
4 420
Käytetäänkö yrityksissä vielä nettisivujen ja -appiksien tekemisessä typescriptiä ?
Sehän oli hieno juttu aikoinaan, mutta onko nykyisin enää muuta kuin taakka ?
Kyllä se näissä js kikkareissa kulkee hyvin mukana. Vaikka pieniä häröyksiä tuossakin on niin pidän silti edelleen parempana kuin perus JS ihan pelkästään tuon kunnon tyypityksen takia. Enemmän hyötyä kuin haittaa ainakin isoissa code baseissa. Sitten pienemmät jutut on varmaan tekijästä enemmän kiinni.
 
Liittynyt
03.07.2018
Viestejä
347
Tarvis jonkinlaisen välimuistin
Data haetaan php:lla mysql-tietokannasta ja se on jokaiselle käyttäjälle sama.
Päivitys pitää saada triggeröityä erillisestä napista tai muuten vaikka 15min välein automaattisesti.

Haasteena on että tiedostocachea ei voi käyttää koska google app engine ei tue tiedostojen kirjoittamista.

mikä olisi simppeli vaihtoehto ? Tiedostoja on n. 5kpl ja ne ovat muutam kt-luokkaa, muotoiltu tietokannasta haettuna jsoniksi php-getterillä
 
Liittynyt
17.01.2018
Viestejä
1 998
Tarvis jonkinlaisen välimuistin
Data haetaan php:lla mysql-tietokannasta ja se on jokaiselle käyttäjälle sama.
Päivitys pitää saada triggeröityä erillisestä napista tai muuten vaikka 15min välein automaattisesti.

Haasteena on että tiedostocachea ei voi käyttää koska google app engine ei tue tiedostojen kirjoittamista.

mikä olisi simppeli vaihtoehto ? Tiedostoja on n. 5kpl ja ne ovat muutam kt-luokkaa, muotoiltu tietokannasta haettuna jsoniksi php-getterillä
Ehkä mysql query cache (PHP: Caching queries - Manual), phpFastCache tai zend_cache.
Ensimmäinen saattaa toimia riippuen googlen toteutuksesta, toisista ei ole kokemusta mutta kannattaa kokeilla toimiiko.
 
Liittynyt
17.10.2016
Viestejä
1 122
Edit: ehkä väärä paikka kysyä, niin poistetaan täältä
 
Viimeksi muokattu:
Liittynyt
10.07.2017
Viestejä
2 162
Työpaikan Intranetissä eräässä listauksessa on "hakukone". Haluaisin hakea ko. listauksesta esim. pelkkiä numeroita regexp haulla seuraavasti:
Koodi:
^[0-9]{2,4}
Eli numeroita ja merkkijonon pituus 2-4 merkkiä. Tuossa hakukoneessa on kuitenkin jo itsessään haku ja siellä , (comma) merkki katkoo haun eri kenttiin, joten tuo edellä mainittu haku ei toimi.

Onko regex haussa mahdollista syöttää tuo pilkku tuonne jotenkin muuten tai huijata hakusivua ettei kyseessä ole pilkku, vaan hakuehtoon kuuluva merkintä.

Regexp haku toimii tuossa hakukoneessa kyllä, eli pelkkiä numeroita hakemalla toimii
Koodi:
^[0-9]*
 
Liittynyt
18.10.2016
Viestejä
505
Työpaikan Intranetissä eräässä listauksessa on "hakukone". Haluaisin hakea ko. listauksesta esim. pelkkiä numeroita regexp haulla seuraavasti:
Koodi:
^[0-9]{2,4}
Eli numeroita ja merkkijonon pituus 2-4 merkkiä. Tuossa hakukoneessa on kuitenkin jo itsessään haku ja siellä , (comma) merkki katkoo haun eri kenttiin, joten tuo edellä mainittu haku ei toimi.

Onko regex haussa mahdollista syöttää tuo pilkku tuonne jotenkin muuten tai huijata hakusivua ettei kyseessä ole pilkku, vaan hakuehtoon kuuluva merkintä.

Regexp haku toimii tuossa hakukoneessa kyllä, eli pelkkiä numeroita hakemalla toimii
Koodi:
^[0-9]*
Hakusivun toimintaa tuntematta pilkun suojaamiseen on vaikea antaa neuvoja, mutta miten olisi yksinkertaisesti toistomerkinnän purku?
Koodi:
^[0-9][0-9][0-9]?[0-9]?
 
Liittynyt
17.10.2016
Viestejä
5 658
Työpaikan Intranetissä eräässä listauksessa on "hakukone". Haluaisin hakea ko. listauksesta esim. pelkkiä numeroita regexp haulla seuraavasti:
Koodi:
^[0-9]{2,4}
Eli numeroita ja merkkijonon pituus 2-4 merkkiä. Tuossa hakukoneessa on kuitenkin jo itsessään haku ja siellä , (comma) merkki katkoo haun eri kenttiin, joten tuo edellä mainittu haku ei toimi.

Onko regex haussa mahdollista syöttää tuo pilkku tuonne jotenkin muuten tai huijata hakusivua ettei kyseessä ole pilkku, vaan hakuehtoon kuuluva merkintä.

Regexp haku toimii tuossa hakukoneessa kyllä, eli pelkkiä numeroita hakemalla toimii
Koodi:
^[0-9]*
Tuntematta taustalla olevaa hakumoottoria, testaisin ainakin jos kenoviiva (\) pilkun edessä auttaisi.
 
Liittynyt
10.07.2017
Viestejä
2 162
@Kaitzschu @edup Hyviä vinkkejä. Pitää testailla. Tuo toistomerkinnän purku toimii vaan huonosti sitten pidemmissä hauissa, kun yhdistellään numero ja kirjainhakuja, mutta pitää ottaa huomioon.
 
Liittynyt
20.06.2017
Viestejä
1 854
Ehkä nämä sopii tänne vaikkei ole suoraan ohjelmointia..

1) Verkosta löytyy vaikka kuinka monta deploy-ohjetta kuinka GitHubista saa koodit webpalvelimelle mutta kaikki tuntuvat olevan hieman erilaisia. Olisiko suositella varmatoimista ja helposti käyttöön otettavaa?

2) Tarkoitus olisi lisätä kirjaudu Googlella/Facebookilla/jne. -tyylinen toiminto. Valmiita kirjastoja löytyy paljon, esim. hello.js, passport.js ja auth0, eihän näistä osaa valita kun on ensimmäistä kertaa asialla, onkohan noissa käytännön eroja vai valitsee vain yhden?
 
Viimeksi muokattu:
Liittynyt
17.10.2016
Viestejä
14 550
Verkosta löytyy vaikka kuinka monta deploy-ohjetta kuinka GitHubista saa koodit webpalvelimelle mutta kaikki tuntuvat olevan hieman erilaisia. Olisiko suositella varmatoimista ja helposti käyttöön otettavaa?
Kerrotko vielä, millainen palvelin on kyseessä ja millaista koodia siellä pitäisi ajaa? Eli onko kyseessä vaikkapa staattiset webbisivut, jotka pitäisi saada vain siirrettyä palvelimelle GitHubista. Ja homma toimii muutoin, mutta et tiedä, miten sivujen siirron saisi toteutettua (ja automatisoitua esim. kun pushaat commitin masteriin)?
 
Liittynyt
20.06.2017
Viestejä
1 854
Kerrotko vielä, millainen palvelin on kyseessä ja millaista koodia siellä pitäisi ajaa? Eli onko kyseessä vaikkapa staattiset webbisivut, jotka pitäisi saada vain siirrettyä palvelimelle GitHubista. Ja homma toimii muutoin, mutta et tiedä, miten sivujen siirron saisi toteutettua (ja automatisoitua esim. kun pushaat commitin masteriin)?
Palvelin on Linux, ohjelmistovalikoima yllättävän rajoittunut, mutta ehkä voi asentaa jos joku perustyökalu puuttuu, cPanel-ympäristö josta saa tarvittaessa komentorivin auki. Kyseessä on ns. websovellus jonka frontend pari HTML-sivua, nämä linkkaavat Javascript-tiedostoja ja backend perinteinen PHP. Taustalla on myös MySQL mutta siitä ei versioida kuin rakenne eikä se muutu kuin poikkeustapauksissa joten automaatiota ei tarvita.

Pari henkilöä koodaa paikallisesti ja testatut muutokset voidaan julkaista internetissä olevalle palvelimelle. Ihmiset kun on erilaisia niin automatisoitu olisi parempi kuin luottaa siihen että pushin jälkeen käydään tekemässä pull eikä vain tule ladattua omaa tiedostoa sftp:llä palvelimelle / muokattua tiedostoa editorilla sftp:n yli, pahimmillaan push unohtaen.

Eli kysymys/ongelma on että joku ohje näyttäisi toimivan ilman apuja, saaden GitHubin avaaman urlin palvelimelta jolloin palvelin tekee mitä tekee, joku toinen suositteli ulkopuolista palvelua väliin. Sen sijaan että itse kävisi edes parin toiminnan kunnolla läpi niin tapaus on niin perus että varmasti porukalla on kokemusta eri tavoista.
 

nnaku

I'm object-oriented!
Liittynyt
28.11.2016
Viestejä
779
@evakko GitHub action ja joku tämmönen: ssh deploy - GitHub Marketplace

Kannattaa tutustua Dockeriin ja kontteihin jolla julkaisu, ajaminen, testailu ja devailu hoituu vähä nykyaikaisemmin.
Ja sitten jos pelkkä rsync on liian yksinkertainen niin Jenkins tai joku muu CI/CD putkityökalu on se mitä tässä varmaan haetaan.

Jenkis ottaa komentoja vastaa mm. GitHub webhookkeilla.
 
Liittynyt
17.10.2016
Viestejä
14 550
@evakko, Github Actions ja rsync tosiaan ovat näppärä tapa saada koodi puskettua serverille GitHubista. Eikä maksa (normaalisti) mitään. Eli opettele GitHub workflow:n perusrakenne (triggerit, jobit ja stepit) ja se, miten rsync toimii. Jälkimmäisen voit testata ensin omalta koneelta toimivaksi. Tyypillisesti menee esim näin:

Koodi:
rsync -a source/path user@myhost.fi:/target/path
Tuolle pitää sitten antaa yksityinen avain GitHub Secretsin kautta. On myös mahdollista luoda kontti ja puskea se sitten palvelimelle.

PS. Mä suhtaudun vähän varauksella satunnaisiin ei-virallisiin Actioneihin. En ihan tuosta vain käyttäisi missään oikeassa tuotannossa.
 
Liittynyt
20.10.2016
Viestejä
779
Millainen rivi pitää lisätä minisat1.c koodiin rivin solver *s; yläpuolelle (arvelisin että siihen kohtaan?), jotta se kirjoittaisi tuon objekti *P :n tiedostoksi käyttäen wrcnf.c :ssä olevaa
glp_write_cnfsat :ia ?

Tarvisin tätä ehkä kerran elämässä, joten output-tiedoston nimi voisi olla mikä hyvänsä blaablaa.cnf , eikä ole väliä kuinka kamalalta koodi näyttää ... en osaa itse c:tä ja tämä asia pitäisi vain hoitaa pois alta, jotta pääsee eteenpäin.

Käännän tämän ./configure;make ja en asenna mitään make install :illa vaan ajelen sen syntyneen binäärin sieltä minne se käännössä ilmestyy ja jos se pulauttaa sopivan huuhaa.cnf :in niin olisi hyvä ... en tarvi sorsia enkä käännettyjä asioita sen jälkeen.


pätkä fileestä minisat1.c

Koodi:
int glp_minisat1(glp_prob *P)
{     /* solve CNF-SAT problem with MiniSat solver */
      solver *s;
      GLPAIJ *aij;
      int i, j, len, ret, *ind;
      double sum;
#if 0 /* 04/IV-2016 */
      /* check problem object */
      if (P == NULL || P->magic != GLP_PROB_MAGIC)
         xerror("glp_minisat1: P = %p; invalid problem object\n",
            P);
#endif

pätkä fileestä wrcnf.c

Koodi:
int glp_write_cnfsat(glp_prob *P, const char *fname)
{     /* write CNF-SAT problem data in DIMACS format */
      glp_file *fp = NULL;
      GLPAIJ *aij;
      int i, j, len, count = 0, ret;
      char s[50];
#if 0 /* 04/IV-2016 */
      if (P == NULL || P->magic != GLP_PROB_MAGIC)
         xerror("glp_write_cnfsat: P = %p; invalid problem object\n",
            P);
#endif
      if (glp_check_cnfsat(P) != 0)
      {  xprintf("glp_write_cnfsat: problem object does not encode CNF-"
            "SAT instance\n");
         ret = 1;
         goto done;
      }
      xprintf("Writing CNF-SAT problem data to '%s'...\n", fname);
      fp = glp_open(fname, "w");
      if (fp == NULL)
      {  xprintf("Unable to create '%s' - %s\n", fname, get_err_msg());
         ret = 1;
         goto done;
      }
      xfprintf(fp, "c %s\n",
         P->name == NULL ? "unknown" : P->name), count++;
      xfprintf(fp, "p cnf %d %d\n", P->n, P->m), count++;
      for (i = 1; i <= P->m; i++)
      {  len = 0;
         for (aij = P->row[i]->ptr; aij != NULL; aij = aij->r_next)
         {  j = aij->col->j;
            if (aij->val < 0.0) j = -j;
            sprintf(s, "%d", j);
            if (len > 0 && len + 1 + strlen(s) > 72)
               xfprintf(fp, "\n"), count++, len = 0;
            xfprintf(fp, "%s%s", len == 0 ? "" : " ", s);
            if (len > 0) len++;
            len += strlen(s);
         }
 
Viimeksi muokattu:
Liittynyt
17.01.2018
Viestejä
1 998
Millainen rivi pitää lisätä minisat1.c koodiin rivin solver *s; yläpuolelle (arvelisin että siihen kohtaan?), jotta se kirjoittaisi tuon objekti *P :n tiedostoksi käyttäen wrcnf.c :ssä olevaa
glp_write_cnfsat :ia ?

Tarvisin tätä ehkä kerran elämässä, joten output-tiedoston nimi voisi olla mikä hyvänsä blaablaa.cnf , eikä ole väliä kuinka kamalalta koodi näyttää ... en osaa itse c:tä ja tämä asia pitäisi vain hoitaa pois alta, jotta pääsee eteenpäin.

Käännän tämän ./configure;make ja en asenna mitään make install :illa vaan ajelen sen syntyneen binäärin sieltä minne se käännössä ilmestyy ja jos se pulauttaa sopivan huuhaa.conf :in niin olisi hyvä ... en tarvi sorsia enkä käännettyjä asioita sen jälkeen.


pätkä fileestä minisat1.c

Koodi:
int glp_minisat1(glp_prob *P)
{     /* solve CNF-SAT problem with MiniSat solver */
      solver *s;
      GLPAIJ *aij;
      int i, j, len, ret, *ind;
      double sum;
#if 0 /* 04/IV-2016 */
      /* check problem object */
      if (P == NULL || P->magic != GLP_PROB_MAGIC)
         xerror("glp_minisat1: P = %p; invalid problem object\n",
            P);
#endif

pätkä fileestä wrcnf.c

Koodi:
int glp_write_cnfsat(glp_prob *P, const char *fname)
{     /* write CNF-SAT problem data in DIMACS format */
      glp_file *fp = NULL;
      GLPAIJ *aij;
      int i, j, len, count = 0, ret;
      char s[50];
#if 0 /* 04/IV-2016 */
      if (P == NULL || P->magic != GLP_PROB_MAGIC)
         xerror("glp_write_cnfsat: P = %p; invalid problem object\n",
            P);
#endif
      if (glp_check_cnfsat(P) != 0)
      {  xprintf("glp_write_cnfsat: problem object does not encode CNF-"
            "SAT instance\n");
         ret = 1;
         goto done;
      }
      xprintf("Writing CNF-SAT problem data to '%s'...\n", fname);
      fp = glp_open(fname, "w");
      if (fp == NULL)
      {  xprintf("Unable to create '%s' - %s\n", fname, get_err_msg());
         ret = 1;
         goto done;
      }
      xfprintf(fp, "c %s\n",
         P->name == NULL ? "unknown" : P->name), count++;
      xfprintf(fp, "p cnf %d %d\n", P->n, P->m), count++;
      for (i = 1; i <= P->m; i++)
      {  len = 0;
         for (aij = P->row[i]->ptr; aij != NULL; aij = aij->r_next)
         {  j = aij->col->j;
            if (aij->val < 0.0) j = -j;
            sprintf(s, "%d", j);
            if (len > 0 && len + 1 + strlen(s) > 72)
               xfprintf(fp, "\n"), count++, len = 0;
            xfprintf(fp, "%s%s", len == 0 ? "" : " ", s);
            if (len > 0) len++;
            len += strlen(s);
         }
Tietämättä mitä muuta tiedostoissa on ja missä on main() ja onko header- tiedostoja niin saattaa olla että riittää lisätä minisat1.c tiedoston alkuun (ennen funktiomäärityksiä, #include- rivien jälkeen) rivi
Koodi:
extern int glp_write_cnfsat(glp_prob *, const char *);
Tämä kertoo kääntäjälle että "koodi löytyy jostain muualta" ja se pitää olla olemassa linkkausvaiheessa (todennäköisesti jos molemmat tiedostot ovat mukana käännöksessä).

ja funktion sisään itse kutsu
Koodi:
 glp_write_cnfsat(P, "toedoston nimi tähän");
Ei siisti mutta pikafiksinä pitäisi toimia. Takeita ei ole kun on vain pikkupätkä koodeista näkyvissä ja kirjoittaa muistista ;)
 
Liittynyt
20.10.2016
Viestejä
779
Lisäsin vain tuon

glp_write_cnfsat(P, "tiedoston nimi tähän");

rivin tuonne minisat1.c koodiin, käänsin ja ajoin ... ajossa ruudulle tuli "writing huuhaa.cnf" ja siellä se huuhaa file oli levyllä !!!! Ja se on ehjä ja on nyt ajossa jo seuraavassa systeemissä !!!

KIITOS ERITTÄIN PALJON !!!

(muok/lisäys)

... ja juu tämä ei liity työhön tai tällä ei tienata rahaa. Halusin vain kokeilla, onnistuisiko nyky-softilla parin asian ratkaiseminen, jotka ei onnistuneet joskus 5 vuotta sitten. Tässä oli inputtina yksi .lp ongelmatiedosto, jonka sain nyt vinkkisi avulla konvertoitua Glpk:lla cnf-muotoon, jota sitten ajelen top-1 softalla jonka nimi on MapleLCMDistChronoBT
 
Viimeksi muokattu:
Liittynyt
17.01.2018
Viestejä
1 998
Lisäsin vain tuon

glp_write_cnfsat(P, "tiedoston nimi tähän");

rivin tuonne minisat1.c koodiin, käänsin ja ajoin ... ajossa ruudulle tuli "writing huuhaa.cnf" ja siellä se huuhaa file oli levyllä !!!! Ja se on ehjä ja on nyt ajossa jo seuraavassa systeemissä !!!

KIITOS ERITTÄIN PALJON !!!

(muok/lisäys)

... ja juu tämä ei liity työhön tai tällä ei tienata rahaa. Halusin vain kokeilla, onnistuisiko nyky-softilla parin asian ratkaiseminen, jotka ei onnistuneet joskus 5 vuotta sitten. Tässä oli inputtina yksi .lp ongelmatiedosto, jonka sain nyt vinkkisi avulla konvertoitua Glpk:lla cnf-muotoon, jota sitten ajelen top-1 softalla jonka nimi on MapleLCMDistChronoBT
En ole koskaan kuullutkaan .lp- tiedostoista, glpk:sta tai maplejne softasta.

Pakko kysyä mitä nuo oikeasti ovat ja tekevät?
 
Liittynyt
20.10.2016
Viestejä
779
Glpk on lineaari/kokonaisluku-solveri ja yksi sen probleematiedostojen formaatti on .lp
Jotkut probleemat ovat liian vaikeita näille solvereille, joten on kehitetty satisfiability-solvereita, joiden ongelmatiedoston formaatti .cnf, jotka pystyvät ratkaisemaan selvästi nopeammin samantyylisiä probleemia. Ongelmana on se, ettei oikein mikään (?) softa osaa konvertoida noita lp:stä cnf:iin päin.

Glpk:ssa on koodattu tuollainen cnf export, mutta se ei oikeastaan koskaan toimi ja softan kehitäjä on kai siirtynyt toisiin hommiin. Löysin vuodelta 2012 keskustelun, missä joku pyysi kehittäjältä tuota. Kehittäjä antoi vain vihjeen, että sorki koodia siitä ja siitä kohdasta, niin saat sen cnf:in ulos. Nyt vuonna 2020 törmäsin itse tuohon ongelmaan ja löysin tuon 8v vanhan keskustelun ...

Tuossa on esimerkki vaikkapa Sudokun probleematiedostosta. Laitoin siihen param givens:iin sen erään suomalaisen tekemän maailman vaikeimman sudokun

Koodi:
param givens{1..9, 1..9}, integer, >= 0, <= 9, default 0;
/* the "givens" */

var x{i in 1..9, j in 1..9, k in 1..9}, binary;
/* x[i,j,k] = 1 means cell [i,j] is assigned number k */

s.t. fa{i in 1..9, j in 1..9, k in 1..9: givens[i,j] != 0}:
     x[i,j,k] = (if givens[i,j] = k then 1 else 0);
/* assign pre-defined numbers using the "givens" */

s.t. fb{i in 1..9, j in 1..9}: sum{k in 1..9} x[i,j,k] = 1;
/* each cell must be assigned exactly one number */

s.t. fc{i in 1..9, k in 1..9}: sum{j in 1..9} x[i,j,k] = 1;
/* cells in the same row must be assigned distinct numbers */

s.t. fd{j in 1..9, k in 1..9}: sum{i in 1..9} x[i,j,k] = 1;
/* cells in the same column must be assigned distinct numbers */

s.t. fe{I in 1..9 by 3, J in 1..9 by 3, k in 1..9}:
     sum{i in I..I+2, j in J..J+2} x[i,j,k] = 1;
/* cells in the same region must be assigned distinct numbers */

/* there is no need for an objective function here */

solve;

for {i in 1..9}
{  for {0..0: i = 1 or i = 4 or i = 7}
      printf " +-------+-------+-------+\n";
   for {j in 1..9}
   {  for {0..0: j = 1 or j = 4 or j = 7} printf(" |");
      printf " %d", sum{k in 1..9} x[i,j,k] * k;
      for {0..0: j = 9} printf(" |\n");
   }
   for {0..0: i = 9}
      printf " +-------+-------+-------+\n";
}

data;

/* These data correspond to the example above. */

param givens : 1 2 3 4 5 6 7 8 9 :=
           1   8 . . . . . . . .
           2   . . 3 6 . . . . .
           3   . 7 . . 9 . 2 . .
           4   . 5 . . . 7 . . .
           5   . . . . 4 5 7 . .
           6   . . . 1 . . . 3 .
           7   . . 1 . . . . 6 8
           8   . . 8 5 . . . 1 .
           9   . 9 . . . . 4 . . ;

end;
Ja Glpk ratkaisee tämän samantien kun painaa enteriä

$ glpsol --math sudoku-hardest.mod

GLPSOL: GLPK LP/MIP Solver, v4.65
Parameter(s) specified in the command line:
--math sudoku-hardest.mod
Reading model section from sudoku-hardest.mod...
Reading data section from sudoku-hardest.mod...
85 lines were read
Generating fa...
Generating fb...
Generating fc...
Generating fd...
Generating fe...
Model has been successfully generated
GLPK Integer Optimizer, v4.65
513 rows, 729 columns, 3105 non-zeros
729 integer variables, all of which are binary
Preprocessing...
240 rows, 254 columns, 1016 non-zeros
254 integer variables, all of which are binary
Scaling...
A: min|aij| = 1.000e+00 max|aij| = 1.000e+00 ratio = 1.000e+00
Problem data seem to be well scaled
Constructing initial basis...
Size of triangular part is 165
Solving LP relaxation...
GLPK Simplex Optimizer, v4.65
240 rows, 254 columns, 1016 non-zeros
0: obj = 0.000000000e+00 inf = 9.700e+01 (66)
82: obj = 0.000000000e+00 inf = 1.828e-13 (0)
OPTIMAL LP SOLUTION FOUND
Integer optimization begins...
Long-step dual simplex will be used
+ 82: mip = not found yet >= -inf (1; 0)
+ 163: >>>>> 0.000000000e+00 >= 0.000000000e+00 0.0% (2; 1)
+ 163: mip = 0.000000000e+00 >= tree is empty 0.0% (0; 5)
INTEGER OPTIMAL SOLUTION FOUND
Time used: 0.0 secs
Memory used: 1.3 Mb (1353273 bytes)
+-------+-------+-------+
| 8 1 2 | 7 5 3 | 6 4 9 |
| 9 4 3 | 6 8 2 | 1 7 5 |
| 6 7 5 | 4 9 1 | 2 8 3 |
+-------+-------+-------+
| 1 5 4 | 2 3 7 | 8 9 6 |
| 3 6 9 | 8 4 5 | 7 2 1 |
| 2 8 7 | 1 6 9 | 5 3 4 |
+-------+-------+-------+
| 5 2 1 | 9 7 4 | 3 6 8 |
| 4 3 8 | 5 2 6 | 9 1 7 |
| 7 9 6 | 3 1 8 | 4 5 2 |
+-------+-------+-------+
Model has been successfully processed
 
Liittynyt
17.10.2016
Viestejä
2 305
Liittyen tähän keskusteluun tuolla uutispuolella:
Unohdin alkuperäiseltä listaltani muuten yhden asian:
x87-liukulukujen ylimääräiset bitit. x87 käsittelee lukuja sisäisestä 80-bittisinä. Modernimmat prosessorit tyypillisesti 64-bittisinä + pari ylimääräistä bittiä ennen pyöristystä.

Jotta saadaan tismalleen sama tulos kuin x87lla niin x87n emulointi on hyvin hidasta.

Onneksi toki hyvin harva softa enää käyttää x87aa vaan suurin osa laskee vähintään SSE2lla, jossa on laskentatarkkuus on maksimissaan 64 bittiä (+ ne pari pyöristysapubittiä)
Tein tuollaisen ohjelman, jolla voi yrittää havainnollistaa liukulukujen tarkkuusongelmia (ja toisaalta kyseisen esimerkin - x(n+1)=x(n)*(4-x(n)) - ominaisuuksia).

floats.c
Koodi:
#include <stdio.h>

#include "floats_sse.h"

int main(void) {

    printf("float: %llu \ndouble: %llu \nlong double: %llu \n", (unsigned long long)sizeof(float), (unsigned long long)sizeof(double), (unsigned long long)sizeof(long double));
   
    float xf = 0.5f;
    double xd = 0.5;
    long double  xld = 0.5l;
    float xf_sse = 0.5f;
    double xd_sse = 0.5;
   
    unsigned int n = 0;
    do {
        printf("%i:  %.12f     %.12f     %.12f     %.12f     %.12Lf\n", n, xf, xf_sse, xd, xd_sse, xld);
       
        xf = xf*(4.0f-xf);
        xd = xd*(4.0-xd);
        xld = xld*(4.0l-xld);
        xf_sse = iterate_float_sse(xf_sse);
        xd_sse = iterate_double_sse(xd_sse);
       
        n++;
       
    } while (n<=500);

    return 0;
}
floats_sse.h
Koodi:
float iterate_float_sse(float);
double iterate_double_sse(double);
floats_sse.c:
Koodi:
float iterate_float_sse(float x){

    return x*(4.0f-x);
   
}

double iterate_double_sse(double x){

    return x*(4.0-x);
   
}
ja kääntäminen:
Koodi:
gcc -std=c99 -Wall -pedantic -m32 -mfpmath=387 -c -o floats32.o floats.c
gcc -std=c99 -Wall -pedantic -m32 -mfpmath=sse -c -o floats_sse32.o floats_sse.c
gcc -m32 -o floats32.bin floats32.o floats_sse32.o

Mutta jäin miettimään, onko tuo nyt tehty niin, että tarkkuusongelmat syntyvät "siellä missä pitääkin" eli muuttujien tyypit, kääntäjän asetukset ym. ovat joka kohdassa järkevät? Tulokset ovat ainakin joka menetelmällä eri näköisiä niin kuin pitääkin. :smoke: 32-bittiseksi/64-bittiseksi kääntäminen (-m32/-m64) taas ei vaikuta tuloksiin. Käännetty koodi näyttäisi mielestäni joten kuten sellaiseslta, mitä tavoittelinkin.

floats.png
(kuvaan mahtui juuri sopivasti kaikki mielenkiintoinen)


300 ensimmäistä iteraatiota:
Koodi:
0:  0.500000000000     0.500000000000     0.500000000000     0.500000000000     0.500000000000
1:  1.750000000000     1.750000000000     1.750000000000     1.750000000000     1.750000000000
2:  3.937500000000     3.937500000000     3.937500000000     3.937500000000     3.937500000000
3:  0.246093750000     0.246093750000     0.246093750000     0.246093750000     0.246093750000
4:  0.923812866211     0.923812866211     0.923812866211     0.923812866211     0.923812866211
5:  2.841821193695     2.841821193695     2.841821253067     2.841821253067     2.841821253067
6:  3.291337013245     3.291337013245     3.291336977885     3.291336977885     3.291336977885
7:  2.332448720932     2.332448720932     2.332448809547     2.332448809547     2.332448809547
8:  3.889477729797     3.889477729797     3.889477789031     3.889477789031     3.889477789031
9:  0.429873913527     0.429873913527     0.429873684760     0.429873684760     0.429873684760
10:  1.534704089165     1.534704089165     1.534703354189     1.534703354189     1.534703354189
11:  3.783499717712     3.783499479294     3.783499031397     3.783499031397     3.783499031397
12:  0.819128751755     0.819129586220     0.819131205004     0.819131205004     0.819131205004
13:  2.605543136597     2.605545282364     2.605548889005     2.605548889005     2.605548889005
14:  3.633317470551     3.633314847946     3.633310543024     3.633310543024     3.633310543024
15:  1.332274079323     1.332282662392     1.332296670046     1.332296670046     1.332296670046
16:  3.554141998291     3.554153680801     3.554172263168     3.554172263168     3.554172263168
17:  1.584642648697     1.584606289864     1.584548576399     1.584548576399     1.584548576400
18:  3.827478170395     3.827448368073     3.827400114628     3.827400114628     3.827400114628
19:  0.660323560238     0.660432457924     0.660608821057     0.660608821057     0.660608821056
20:  2.205266952515     2.205558776855     2.206031269770     2.206031269770     2.206031269766
21:  3.957865476608     3.957745552063     3.957551115877     3.957551115877     3.957551115878
22:  0.166762769222     0.167232349515     0.167993628729     0.167993628729     0.167993628723
23:  0.639241278172     0.640962779522     0.643752655621     0.643752655624     0.643752655600
24:  2.148335695267     2.153017759323     2.160593140864     2.160593140873     2.160593140809
25:  3.977996587753     3.976585626602     3.974209843107     3.974209843105     3.974209843125
26:  0.087529495358     0.093109257519     0.102495495378     0.102495495389     0.102495495308
27:  0.342456579208     0.363767683506     0.399476654940     0.399476654981     0.399476654675
28:  1.252549767494     1.322743773460     1.438325021917     1.438325022048     1.438325021069
29:  3.441318035126     3.541323900223     3.684521218996     3.684521219143     3.684521218043
30:  1.922602295876     1.624320626259     1.162388262753     1.162388262258     1.162388265963
31:  3.994009494781     3.858865261078     3.298406577626     3.298406576796     3.298406583003
32:  0.023926135153     0.544619917870     2.314140359176     2.314140361333     2.314140345215
33:  0.095132082701     1.881868720055     3.901315834736     3.901315833382     3.901315843508
34:  0.371478229761     3.986044883728     0.384998096580     0.384998101732     0.384998063224
35:  1.347916841507     0.055625718087     1.391768851951     1.391768868589     1.391768744211
36:  3.574787616730     0.219408661127     3.630054870543     3.630054890783     3.630054739482
37:  1.520043969154     0.829494476318     1.342921119019     1.342921053035     1.342921546294
38:  3.769642114639     2.629916906357     3.568247344169     3.568247257456     3.568247905675
39:  0.868366777897     3.603204727173     1.540600267506     1.540600539482     1.540598506346
40:  2.719406366348     1.429734587669     3.788951885785     3.788952135676     3.788950267629
41:  3.482454538345     3.674797296524     0.799651150347     0.799650256262     0.799656939951
42:  1.802328586578     1.195054054260     2.559162639136     2.559160492708     2.559176538192
43:  3.960926055908     3.352061986923     3.687337142994     3.687339543395     3.687321599136
44:  0.154769003391     2.171928405762     1.152893365873     1.152885265296     1.152945821089
45:  0.595122575760     3.970440626144     3.282410350418     3.282396626247     3.282499217989
46:  2.026319503784     0.117363736033     2.355423693141     2.355458892990     2.355195755858
47:  3.999307394028     0.455680698156     3.873673998354     3.873648975394     3.873835975020
48:  0.002769944258     1.615077972412     0.489345747891     0.489439517005     0.488738738719
49:  0.011072104797     3.851835012436     1.717923730585     1.718207027214     1.716089400152
50:  0.044165827334     0.570707082748     3.920432978233     3.920592720489     3.919394771294
51:  0.174712687731     1.957121729851     0.311937176115     0.311323602006     0.315923711930
52:  0.668326199055     3.998161315918     1.150443902619     1.148372022860     1.163887055959
53:  2.226644992828     0.007351355627     3.278254437403     3.274729788552     3.300915144807
54:  3.948632001877     0.029351379722     2.366065593260     2.375063966179     2.307619786012
55:  0.202833324671     0.116544015706     3.865995981431     3.859327021274     3.905370067254
56:  0.770191967487     0.452593564987     0.518058997282     0.542903027960     0.369564906813
57:  2.487572193146     1.605533361435     1.803850864464     1.876868414072     1.341681406905
58:  3.762273311615     3.844396114349     3.961525516629     3.984838612547     3.566616629986
59:  0.894392788410     0.598202943802     0.152417647615     0.060415682143     1.545712334652
60:  2.777632713318     2.034965038300     0.586439451156     0.238012673923     3.793622717112
61:  3.395287275314     3.998777389526     2.001846574752     0.895400662742     0.782917548659
62:  2.053173303604     0.004888947122     3.999996590162     2.779860304130     2.518710306637
63:  3.997172594070     0.019531887025     0.000013639342     3.391817906043     3.730939617789
64:  0.011301629245     0.077746048570     0.000054557180     2.062842916419     1.003848039570
65:  0.045078791678     0.304939746857     0.000218225745     3.996050767856     3.007681271731
66:  0.178283065557     1.126770734787     0.000872855359     0.015781332142     2.984578454602
67:  0.681347429752     3.237470626831     0.003490659561     0.062876278123     3.030605266733
68:  2.261155366898     2.468666553497     0.013950453539     0.247551686142     2.937852784182
69:  3.931797981262     3.780351638794     0.055607199002     0.928924907255     3.120432155203
70:  0.268156558275     0.830348014832     0.219336635426     2.852798145702     2.744631785587
71:  1.000718235970     2.631914138794     0.829237982064     3.272735322687     3.445523503893
72:  3.001435995102     3.600684404373     2.629316297358     2.380144798384     1.910461799692
73:  2.997125864029     1.437809467316     3.603960997880     3.855489932262     3.991982910686
74:  3.005739927292     3.683941841125     1.427309117280     0.557157111275     0.032004083536
75:  2.988487243652     1.164339900017     3.672025152849     1.918204398455     0.126992072782
76:  3.022892951965     3.301671981812     1.204331888239     3.993309479568     0.491841304578
77:  2.953690052032     2.305649995804     3.366912255927     0.026717318665     1.725457349423
78:  3.090475320816     3.906578063965     2.131550884597     0.106155459542     3.924626333014
79:  2.810863494873     0.364960074425     3.982694364762     0.413352856576     0.295813478268
80:  3.342500448227     1.326644420624     0.068923055942     1.482550842265     1.095748299148
81:  2.197692632675     3.546592235565     0.270941836129     3.732246369159     3.182328861506
82:  3.960917711258     1.608052492142     1.010357865950     0.999322516536     2.602098463249
83:  0.154801726341     3.846377134323     3.020608446513     2.998644574087     3.637477440553
84:  0.595243334770     0.590891480446     2.958358398907     3.002709014646     1.318667631680
85:  2.026658773422     2.014413356781     3.081549179244     2.994574631948     3.535786203879
86:  3.999289274216     3.999792337418     2.830251372877     3.010821301485     1.641360735974
87:  0.002842397895     0.000830607198     3.310682657836     2.978240296464     3.871377878299
88:  0.011361512356     0.003321738914     2.282110970449     3.043045922373     0.497944836613
89:  0.045316964388     0.013275922276     3.920413400352     2.912055203821     1.743830286143
90:  0.179214224219     0.052927438170     0.312012371747     3.168155305184     3.934377077703
91:  0.684739172459     0.208908438683     1.150697766865     2.635413182971     0.258185321259
92:  2.270088911057     0.791990995407     3.278685716792     3.596250086906     0.966081624921
93:  3.927052021027     2.540714263916     2.364962837671     1.451985660052     2.931012793674
94:  0.286470502615     3.707628011703     3.866802127119     3.699680283212     3.133215178016
95:  1.063816666603     1.084006547928     0.515049818185     1.111086934862     2.715823360315
96:  3.123560667038     3.160955905914     1.794922957527     3.209833562627     3.487596916827
97:  2.737611532211     2.652181386948     3.957943406651     2.536302750741     1.787055413047
98:  3.455929279327     3.574659347534     0.166457616354     3.712379359548     3.954654602887
99:  1.880269885063     1.520447969437     0.638122327373     1.067756928996     0.179325383411
100:  3.985664606094     3.770029783249     2.145289204799     3.130922856564     0.685143940509
101:  0.057136073709     0.866994559765     3.978891046969     2.721013492500     2.271153542821
102:  0.225279763341     2.716298580170     0.083990224226     3.480139543632     3.926475756216
103:  0.850368082523     3.486916303635     0.328906539139     1.809186931376     0.288691160713
104:  2.678346395493     1.789079904556     1.207446645068     3.963590372842     1.071422056579
105:  3.539846181870     3.955512762070     3.371859179586     0.144312847681     3.137743002992
106:  1.628873705864     0.175969839096     2.118002391384     0.556425192718     2.705540859143
107:  3.862265348434     0.672913968563     3.986075435628     1.916091775781     3.502212096079
108:  0.531967759132     2.238842725754     0.055504363997     3.992959409908     1.743358818393
109:  1.844881296158     3.942954063416     0.218936721565     0.028112790458     3.934135303904
110:  3.975938081741     0.224929511547     0.827813598210     0.111660832843     0.259120626194
111:  0.095668695867     0.849124729633     2.625979039457     0.434175189780     0.969339005856
112:  0.373522281647     2.675486087799     3.608150242160     1.548192663699     2.937737915150
113:  1.354570269585     3.543718576431     1.413852798641     3.795870130864     3.120647602491
114:  3.583420515060     1.616932988167     3.656431458339     0.774850473069     2.744148951032
115:  1.492779493332     3.853259801865     1.256234823825     2.499008636661     3.446242338678
116:  3.742727279663     0.565428078175     3.446813362709     3.750990380537     1.908383097816
117:  0.962901651859     1.942003488541     1.906731093486     0.934032687266     3.991606343234
118:  2.924427032471     3.996636390686     3.991300911078     2.863713688182     0.033504173590
119:  3.145434617996     0.013443123549     0.034720681541     3.253998664847     0.132894164710
120:  2.687979459763     0.053591776639     0.137677200437     2.427487348563     0.513915799828
121:  3.526684284210     0.211495026946     0.531753790229     3.817254566819     1.791553749999
122:  1.669235110283     0.801249980927     1.844253067494     0.697585839377     3.956550160860
123:  3.890594482422     2.562998294830     3.975742893015     2.303717354209     0.171911468037
124:  0.425652503967     3.683032989502     0.096440020701     3.907755768752     0.658092319306
125:  1.521430015564     1.167400002480     0.376459405212     0.360467926793     2.199283776494
126:  3.770970821381     3.306777477264     1.364115937076     1.311934580925     3.960285976426
127:  0.863662362099     2.292332649231     3.595651458519     3.526565979072     0.157278890627
128:  2.708736658096     3.914541721344     1.453896422926     1.669596311538     0.604378913071
129:  3.497692346573     0.334529995918     3.701770883107     3.890833402651     2.052241781719
130:  1.756917595863     1.226209759712     1.103975861410     0.424749043419     3.997270796243
131:  3.940911054611     3.401248693466     3.197140743064     1.518584423791     0.010909366476
132:  0.232864275575     2.036502122879     2.566854041296     3.768239042984     0.043518451626
133:  0.877231359482     3.998667478561     3.678676495866     0.873330686869     0.172179950872
134:  2.739390611649     0.005328310188     1.182045222225     2.730616258848     0.659073868004
135:  3.453301429749     0.021284848452     3.330949981516     3.466199882307     2.201917108531
136:  1.887914896011     0.084686346352     2.228572146703     1.850257905123     3.959229481283
137:  3.987437009811     0.331573605537     3.947754773751     3.977577305022     0.161419839673
138:  0.050094131380     1.216353416443     0.206251341329     0.089188002662     0.619622994054
139:  0.197867110372     3.385898113251     0.782465749515     0.348797510831     2.094559321454
140:  0.752317070961     2.079286336899     2.517610348896     1.273530339762     3.991058534726
141:  2.443287372589     3.993713617325     3.732079526715     3.472241832754     0.035685911294
142:  3.803496360779     0.025106012821     0.999900513133     1.832503985890     0.141470160913
143:  0.747400879860     0.099793739617     2.999801016369     3.971945085257     0.545866837223
144:  2.430995464325     0.389216184616     3.000397927667     0.111432580730     1.885496744912
145:  3.814242839813     1.405375480652     2.999203986319     0.433313102870     3.986889004574
146:  0.708522915840     3.646421670914     3.001591393724     1.545492166362     0.052272083502
147:  2.332087039948     1.289295673370     2.996814680019     3.793422629162     0.206355963293
148:  3.889718294144     3.494899272919     3.006360493699     0.783635273210     0.782841069584
149:  0.428964763880     1.765276193619     2.987238556721     2.520456851421     2.518524138108
150:  1.531848311424     3.944904804230     3.025360032123     3.729124665809     3.731132718199
151:  3.780833959579     0.217345297337     2.948636804526     1.010127890092     1.003179511981
152:  0.828630387783     0.822142243385     3.100088213100     3.020153206027     3.006348914666
153:  2.627893209457     2.612651109695     2.789805923399     2.959287436233     2.987261861950
154:  3.605750083923     3.624658584595     3.376206603363     3.079767614686     3.025314015938
155:  1.421566724777     1.360484480858     2.106055384860     2.834101898276     2.948731168721
156:  3.665415048599     3.591019630432     3.988752255342     3.304274023292     3.099909169498
157:  1.226392745972     1.468656539917     0.044864466871     2.298869272166     2.790199818854
158:  3.401531934738     3.717674016953     0.177445047096     3.910677158155     3.375584246283
159:  2.035708189011     1.049595952034     0.678293443647     0.349312797304     2.107767981379
160:  3.998724937439     3.096732378006     2.253091778892     1.275231758856     3.988386062189
161:  0.005098624621     2.797178030014     3.935944551457     3.474710996630     0.046320867691
162:  0.020368503407     3.364507198334     0.252118693684     1.825227476420     0.183137847979
163:  0.081059135497     2.138120174408     0.944910939030     3.969454565001     0.699011920553
164:  0.317665964365     3.980922698975     2.886787073421     0.121248716395     2.307430017138
165:  1.169752240181     0.075945258141     3.213608686413     0.470293614354     3.905486784563
166:  3.310688734055     0.298013329506     2.527153956262     1.659998373715     0.369120113857
167:  2.282094955444     1.103241443634     3.722108706397     3.884398894124     1.340230796974
168:  3.920422554016     3.195824146271     1.034341603350     0.449040807826     3.564704598739
169:  0.311977207661     2.570004701614     3.067503860980     1.594525584210     1.551699518686
170:  1.150579094887     3.675094604492     2.860435506793     3.835590498140     3.799026678454
171:  3.278484106064     1.194058060646     3.259650738651     0.630607523140     0.763503010211
172:  2.365478277206     3.350457668304     2.413280016617     2.124764244318     2.471075194243
173:  3.866425514221     2.176264047623     3.829199627865     3.984433883340     3.778088161369
174:  0.516455829144     3.968930959702     0.654028721419     0.062022162653     0.838402490400
175:  1.799096703529     0.123310878873     2.188361317234     0.244241901953     2.650691225692
176:  3.959637880325     0.478037953377     3.964520014170     0.917313501142     3.576600928807
177:  0.159819379449     1.683631539345     0.140661113926     2.827789945191     1.514329511284
178:  0.613735258579     3.899911165237     0.542858906733     3.314763806641     3.764124176390
179:  2.078269958496     0.390337556601     1.876739834313     2.271396132748     0.887865890277
180:  3.993873834610     1.408986806870     3.984806931555     3.926344139130     2.763157721990
181:  0.024467131123     3.650703430176     0.060541444452     0.289198257641     3.417590291367
182:  0.097269885242     1.275178194046     0.238500511313     1.073157398340     1.990437765821
183:  0.379618108273     3.474633455276     0.897119551356     3.140962791749     3.999908563678
184:  1.374362468719     1.825456142426     2.783654715999     2.698203907845     0.000365736929
185:  3.608577728271     3.969534397125     3.385885286093     3.512511303071     0.001462813954
186:  1.412477731705     0.120934255421     2.079321973791     1.712309558084     0.005849115991
187:  3.654817581177     0.469111919403     3.993708024474     3.917234209630     0.023362251807
188:  1.261578798294     1.656381726265     0.025128313148     0.324212985424     0.092903212419
189:  3.454734086990     3.881926774979     0.099881820472     1.191737881779     0.362981842797
190:  1.883748769760     0.458351612091     0.389550903828     3.346712348248     1.320171552987
191:  3.986485719681     1.623320221901     1.406453708639     2.186365851076     3.537833282631
192:  0.053874485195     3.858112573624     3.647702800012     3.965267769553     1.635068794831
193:  0.212595477700     0.547417640686     1.285075482833     0.137722593957     3.866825215494
194:  0.805185079575     1.890004515648     3.488882934754     0.531922862941     0.514963614796
195:  2.572417259216     3.987900733948     1.783227606598     1.844749519646     1.794666934622
196:  3.672338485718     0.048250671476     3.953009729459     3.975897288350     3.957838332262
197:  1.203284025192     0.190674558282     0.185752996640     0.095829905892     0.166869064724
198:  3.365243673325     0.726341426373     0.708507810799     0.374136252706     0.639630974135
199:  2.136109828949     2.377793788910     2.332047925232     1.356567075234     2.149396113467
200:  3.981474161148     3.857271909714     3.889744175349     3.585994071327     3.977680801281
201:  0.073760151863     0.550541043282     0.428866951734     1.484622805716     0.088778648244
202:  0.289600044489     1.899068832397     1.531540944646     3.734386347612     0.347232944593
203:  1.074532032013     3.989812850952     3.780546113457     0.991903997219     1.268361060560
204:  3.143509149551     0.040644817054     0.829655537852     2.983742449177     3.464704462295
205:  2.692386865616     0.160927265882     2.630293839920     3.032250793688     1.854640838132
206:  3.520600318909     0.617811501026     3.602729675358     2.934458298930     3.978870714061
207:  1.687774658203     2.089555025101     1.431257587726     3.126787687561     0.084070697032
208:  3.902515411377     3.991979837418     3.676532068480     2.730349507162     0.329214906028
209:  0.380435109138     0.032016325742     1.189240223357     3.466589597388     1.208477169762
210:  1.377009510994     0.127040252090     3.342668584577     1.849114952832     3.373491609212
211:  3.611882925034     0.492021799088     2.197241071989     3.977233702541     2.113520799425
212:  1.401833415031     1.726001739502     3.961095959520     0.090546885535     3.987113028098
213:  3.642196655273     3.924924850464     0.154102637552     0.353988803661     0.051381813564
214:  1.303190112114     0.294664323330     0.592662927309     1.290647141528     0.202887163489
215:  3.514456033707     1.091830253601     2.019402363830     3.496818522177     0.770385452848
216:  1.706422924995     3.175227642059     3.999623548278     1.759534311667     2.488048065432
217:  3.913812398911     2.618839979172     0.001505665173     3.942176252734     3.761809085828
218:  0.337322115898     3.617037057877     0.006020393664     0.227951403315     0.896028745093
219:  1.235502243042     1.385191202164     0.024045329515     0.859843770986     2.781247468340
220:  3.415543079376     3.622010231018     0.095603140188     2.700043773440     3.389652393213
221:  1.996237754822     1.369082808495     0.373272600339     3.509938715268     2.068866226037
222:  3.999985933304     3.601943254471     1.353757967192     1.720085076134     3.995257442911
223:  0.000056266588     1.433777809143     3.582371235032     3.921647635397     0.018947736507
224:  0.000225063181     3.679392337799     1.496101274543     0.307270365372     0.075431929309
225:  0.000900202082     1.179641366005     3.746086074483     1.134666384051     0.296037741275
226:  0.003599998076     3.327011823654     0.951183420498     3.251197733109     1.096512620842
227:  0.014387032017     2.239039659500     2.899983782561     2.434504232663     3.183710555703
228:  0.057341139764     3.942860126495     3.190029191127     3.811206071798     2.598829320317
229:  0.226076558232     0.225294530392     2.583830524265     0.719532565483     3.641403445128
230:  0.853195607662     0.850420475006     3.659141918936     2.360403149143     1.305794730321
231:  2.684839725494     2.678466796875     1.247248092829     3.870109570088     3.518079043549
232:  3.530994653702     3.539682865143     3.433364566251     0.502690195865     1.695436017536
233:  1.656055331230     1.629376649857     1.945466020216     1.758063350440     3.907240780586
234:  3.881701946259     3.862638235092     3.997026045049     3.941466657600     0.362432604871
235:  0.459197789431     0.530578792095     0.011886975396     0.230707217428     1.318373026410
236:  1.625928521156     1.840801239014     0.047406601401     0.869603049538     3.535384668875
237:  3.860070466995     3.974655866623     0.187379019749     2.722202734387     1.642593918583
238:  0.540137887001     0.100734211504     0.714405181955     3.478423210444     3.872260892966
239:  1.868802666664     0.392789453268     2.347245963817     1.814264810821     0.494639148669
240:  3.982787370682     1.416874289513     3.879420240613     3.965502439501     1.733888707281
241:  0.068554244936     3.659964323044     0.467779559175     0.136800160317     3.929184779887
242:  0.269517302513     1.244518399239     1.652300520718     0.528486357405     0.278246085051
243:  1.005429625511     3.429247617722     3.879105072107     1.834647599658     1.035563456356
244:  3.010829687119     1.957251191139     0.468964127981     3.972658583701     3.069862153285
245:  2.978223323822     3.998172760010     1.655929158590     0.108618112150     2.855394972969
246:  3.043079137802     0.007305621170     3.881615256092     0.422674554314     3.268299440219
247:  2.911985874176     0.029169112444     0.459524028043     1.512044438391     2.391416529940
248:  3.168281793594     0.115825615823     1.626933779824     3.761899369895     3.846793100090
249:  2.635117769241     0.449886888266     3.860821595363     0.895710610364     0.589355245461
250:  3.596625328064     1.597149372101     0.537342990229     2.780544943937     2.010081376492
251:  1.450787544250     3.837711334229     1.860634471768     3.390749590495     3.999898365848
252:  3.698365688324     0.622817039490     3.980577249541     2.065815576538     0.000406526278
253:  1.115553975105     2.103367090225     0.077313758602     3.995668309885     0.001625939850
254:  3.217755317688     3.989315271378     0.303277617137     0.017307996921     0.006501115719
255:  2.517071962357     0.042624749243     1.121133155493     0.068932420925     0.025962198371
256:  3.732636690140     0.168682128191     3.227593069627     0.270978005047     0.103174757740
257:  0.997970104218     0.646274864674     2.493015255405     1.010482940969     0.402054000327
258:  2.995936155319     2.167428255081     3.756935957938     3.020855989887     1.446568582129
259:  3.008111238480     3.971967697144     0.913176039703     2.957853047913     3.693713665714
260:  2.983711719513     0.111343398690     2.818813679325     3.082517538604     1.131334018574
261:  3.032311201096     0.432976245880     3.329544158550     2.828155778614     3.245419412714
262:  2.934333562851     1.544436573982     2.232312330466     3.314158006348     2.448930486436
263:  3.127020835876     3.792462110519     3.946030981114     2.272988734351     3.798461418348
264:  2.729824066162     0.787079572678     0.212963420546     3.925477150917     0.765536526713
265:  3.467356920242     2.528824090958     0.806500263694     0.292537741295     2.476099933120
266:  1.846863627434     3.720345020294     2.575558379437     1.084572635098     3.773328853683
267:  3.976549148560     1.040413022041     3.668732551860     3.161992739588     0.855304776695
268:  0.093253463507     3.079192876816     1.215331670363     2.649772873145     2.689672845743
269:  0.364317655563     2.835342645645     3.384295612465     3.577795213325     3.524351365845
270:  1.324543237686     3.302202701569     2.083725657311     1.510562264810     1.676352913447
271:  3.543758153915     2.304268121719     3.992990014308     3.760450703372     3.895252563366
272:  1.616810798645     3.907420873642     0.027990802869     0.900813320998     0.408017721056
273:  3.853166103363     0.361745595932     0.111179726432     2.791788644704     1.465592423527
274:  0.565775394440     1.316122531891     0.432357974158     3.373070742117     3.714408542208
275:  1.942999839783     3.532311677933     1.542498478814     2.114676737142     1.060803350404
276:  3.996751070023     1.652020931244     3.790692358113     3.986849245958     3.117909653387
277:  0.012985164300     3.878910541534     0.793420878596     0.052430073834     2.750278006864
278:  0.051772043109     0.469695180655     2.544166823793     0.206971382696     3.437082912417
279:  0.204407826066     1.658167243004     3.703882467883     0.785048377527     1.934792702839
280:  0.775848746300     3.883150100708     1.096784535641     2.523892555051     3.995748008397
281:  2.501453638077     0.453745692968     3.184201824943     3.725536590762     0.016989886979
282:  3.748544216156     1.609097599983     2.597666037802     1.022523473942     0.067670891658
283:  0.942593097687     3.847195386887     3.642795307258     3.044539641006     0.266104217054
284:  2.881890535355     0.587869226933     1.301223578451     2.908936938366     0.993605413882
285:  3.222269058228     2.005886793137     3.511711512687     3.173833642074     2.987169937033
286:  2.506058454514     3.999965429306     1.714728302411     2.622114580736     3.025495515418
287:  3.743904829025     0.000138281583     3.918620058555     3.612973448436     2.948358947858
288:  0.958795964718     0.000553107180     0.318897070912     1.398316654641     3.100615306018
289:  2.915894269943     0.002212122781     1.173892941811     3.637977151918     2.788645948159
290:  3.161137580872     0.008843597956     3.317547128410     1.317030849795     3.378037568452
291:  2.651759624481     0.035296183079     2.264069564418     3.533553139869     2.101012459934
292:  3.575209379196     0.139938905835     3.930267265148     1.648214767199     3.989796482938
293:  1.518715381622     0.540172755718     0.274068285097     3.876247149983     0.040709956487
294:  3.768365144730     1.868904352188     1.021159715494     0.479696632180     0.161182525391
295:  0.872884690762     3.982813835144     3.041871697428     1.688677669795     0.618750295071
296:  2.729611158371     0.068449296057     2.914503366100     3.903078406716     2.092149252634
297:  3.467667579651     0.269111871719     3.163683593393     0.378292577893     3.991508515239
298:  1.845951914787     1.004026293755     2.645840494469     1.370065037083     0.033893833731
299:  3.976269245148     3.008036375046     3.582890055704     3.603181942495     0.134426542958
300:  0.094359867275     2.983862638474     1.494459071553     1.429807659259     0.519635676379
 
Liittynyt
23.10.2016
Viestejä
658
Koitan ottaa MongoDB Atlasissa olevasta tietokannasta dumppia komennolla
Koodi:
mongodump --host DB-shard-0/DB-shard-00-00-jomgh.mongodb.net:27017,DB-shard-00-01-jomgh.mongodb.net:27017,DB-shard-00-02-jomgh.mongodb.net:27017 --ssl --username admin --password PASSWORD --authenticationDatabase admin --db DB --verbose
Jostain syystä dumppi ei kuitenkaan tule pihalle. Tuo komento on suoraan Atlaksen "Command Line Tools"-valikosta sillä erotuksella, että käytän tuota --verbose-tägiä.

Komennon output on
Koodi:
2020-07-06T14:04:30.414+0200    WARNING: ignoring unsupported URI parameter 'replicaset'
2020-07-06T14:04:32.199+0200    dumping up to 0 collections in parallel
Eli jostain syystä mitään ei vaan löydy. Apuja tähän?
 
Liittynyt
23.10.2016
Viestejä
658
Mulla on parissa projektissa käytössä GitHub Action, joka testaa, buildaa, pushaa buildin GitHubiin ja deployaa serverille. Tuo actioni ajetaan joka kerta, kun pushaan masteriin. Tämä on mielestäni huono tapa, koska jos pushaan GitHubiin jotain, mikä ei aiheuta muutoksia buildatussa koodissa, niin tuo actioni feilaa.

Olisiko fiksua pitää buildattu koodi kokoaan poissa GitHubista ja hoittaa actionissa ainoastaan testaus ja deployment ja tehdä buildi serverillä? Tässä mun virityksessä on käytössä vielä sellainen hienous, että deployaan serverille ainoastaan buildatun koodin enkä koko repoa. Tästä seuraa se, että joudun käyttämään git subtreetä, joka aiheuttaa omat ongelmansa.

Opettelin käyttämään Dockerfileä buildpackien sijaan dokkun kanssa, joten nyt voisin heittää vaan koko repon sellaisenaan servulle ja tehdä kaikki build/deployment-stepit siellä.

Useimmiten repoissa on aina se buildattu koodi myös GitHubissa, mutta tässä uudessa ratkaisussa sitä ei enää olisi. Voiko tuosta olla jotain haittaa? Itse en ole vielä huomannut buildatusta koodista GitHubissa vielä mitään hyötyä.
 
Liittynyt
17.10.2016
Viestejä
14 550
Mulla on parissa projektissa käytössä GitHub Action, joka testaa, buildaa, pushaa buildin GitHubiin ja deployaa serverille. Tuo actioni ajetaan joka kerta, kun pushaan masteriin. Tämä on mielestäni huono tapa, koska jos pushaan GitHubiin jotain, mikä ei aiheuta muutoksia buildatussa koodissa, niin tuo actioni feilaa.
Mä en ihan tajunnut, että miksi action feilaa. Mutta siis, miksi suotta sitä buildia pitäisi repossa säilyttää? En myös keksi sille mitään erityistä tarvetta. Buildaa ja deployaa ja siinä se? Repossa on vain lähdekoodi, jonka perusteella buildataan. Muutenkin tuntuu oudolta, että push triggeröi actionin, joka triggeröi pushin. Joku musta aukko tuosta vielä syntyy.
 
Liittynyt
23.10.2016
Viestejä
658
Mä en ihan tajunnut, että miksi action feilaa. Mutta siis, miksi suotta sitä buildia pitäisi repossa säilyttää? En myös keksi sille mitään erityistä tarvetta. Buildaa ja deployaa ja siinä se? Repossa on vain lähdekoodi, jonka perusteella buildataan. Muutenkin tuntuu oudolta, että push triggeröi actionin, joka triggeröi pushin. Joku musta aukko tuosta vielä syntyy.
Tässä pätkä actionista:
Koodi:
      - name: Create production bundle
        run: |
          mkdir -p ./dist
          cp -r ./backend/build/. ./dist
          cp -r ./frontend/build/. ./dist/client
          rm -r ./backend/build/
          rm -r ./frontend/build/
          cp ./backend/package.json ./dist/package.json
          cp ./backend/package-lock.json ./dist/package-lock.json
          cp ./backend/Procfile ./dist/Procfile
      - name: Commit production bundle
        run: |
          git config --global user.name '${{ secrets.USERNAME }}'
          git config --global user.email '${{ secrets.USERNAME }}@users.noreply.github.com'
          git add .
          git commit -m "Automated production bundle creation"
Ongelma on siis se, että jos muokkaan vaikka pelkästään readme.md:tä, niin tuon buildatun dist-hakemiston sisältö ei muutu ja tuo commit feilaa.

Tämä ongelma ei tosin siis ole ongelma, jos en vaan pushaa tota takaisin originiin (GitHubiin), koska silloin dist-kansio on aina uutta sisältöä. Olen elänyt siinä käsityksessä, että myös buildattu on hyvä pitää osana repoa. Näin taidettiin opettaa Full Stack Open -kurssilla.
 
Liittynyt
17.10.2016
Viestejä
14 550
Tämä ongelma ei tosin siis ole ongelma, jos en vaan pushaa tota takaisin originiin (GitHubiin), koska silloin dist-kansio on aina uutta sisältöä. Olen elänyt siinä käsityksessä, että myös buildattu on hyvä pitää osana repoa. Näin taidettiin opettaa Full Stack Open -kurssilla.
Olisiko ehkä liittynyt siihen, että se deployaaminen tapahtui siellä nimenomaan gitin avulla? Eli koko repo puskettiin herokuun, joten repossa oli oltava kaikki. Mutta jos deployaaminen tehdään toisin, niin sitten tilanne on eri.

Ja sitten voi miettiä, onko hyvä tai huono, että frontti ja bäkki ovat samassa repossa. Voiko deployata vain toisen helposti, pitääkö aina deployata kummatkin, ja miten Github Actionit tämä vaatimukset sitten toteuttavat.
 
Liittynyt
13.11.2016
Viestejä
1 516
Olen elänyt siinä käsityksessä, että myös buildattu on hyvä pitää osana repoa. Näin taidettiin opettaa Full Stack Open -kurssilla.
Olisin tuosta säännöstä hyvin pitkälti täysin vastakkaista mieltä - buildeja nimenomaan ei pitäisi säilyttää repossa.

Gitti soveltuu parhaiten lähdekoodin tai muun vastaavan säilömiseen, huonommin binäärin. Hyvä käytäntö on pitää commit ID / versio / branch osana kontin nimeä, jolloin on aina mahdollista löytää kutakin pakettia vastaavat koodit (jos tarvitsee tehdä esim. hotfixejä tai muuta).
 
Liittynyt
12.06.2018
Viestejä
342
Olisin tuosta säännöstä hyvin pitkälti täysin vastakkaista mieltä - buildeja nimenomaan ei pitäisi säilyttää repossa.

Gitti soveltuu parhaiten lähdekoodin tai muun vastaavan säilömiseen, huonommin binäärin. Hyvä käytäntö on pitää commit ID / versio / branch osana kontin nimeä, jolloin on aina mahdollista löytää kutakin pakettia vastaavat koodit (jos tarvitsee tehdä esim. hotfixejä tai muuta).
Ei tuo binäärien säilöminen/julkaisu git:ssäkään ole enää nykyään välttämättä synti kaikissa tilanteissa. Mm. Githubilla on asiasta ohjekin nykyään. Ja Git LFS hoitaa isojeb tiedostojen säilömisen nätimmin, jos sitä huomaa käyttää.

Toki, kyllähän toi edelleen aika hyvä peukalosääntä gitin kanssa on, että ei binääreitä sinne. Mutta nyt säännölle on sentään jo poikkeuksia :) .
 
Liittynyt
13.11.2016
Viestejä
1 516
Ei tuo binäärien säilöminen/julkaisu git:ssäkään ole enää nykyään välttämättä synti kaikissa tilanteissa. Mm. Githubilla on asiasta ohjekin nykyään. Ja Git LFS hoitaa isojeb tiedostojen säilömisen nätimmin, jos sitä huomaa käyttää.

Toki, kyllähän toi edelleen aika hyvä peukalosääntä gitin kanssa on, että ei binääreitä sinne. Mutta nyt säännölle on sentään jo poikkeuksia :) .
Git lfs on kieltämättä ihan hyvä tuohon, mutta silti väittäisin että tuo on lähtökohtaisesti huono idea koska koodin sisältöä on vaikea saada pysymään synkassa binäärien kanssa. Äkkiseltään näkisin että käy näin, tilanteessa jossa buildijärjestelmä tekee binäärit ja pushaa ne sisään:
  1. Haarassa on koodin versio 1 ja binääri versio 1
  2. PR mergetään => haarassa koodin versio 2, binääri versio 1
  3. Automaatio buildaa ja commitoi uuden binäärin => haarassa koodin versio 2, binääri versio 2
Käytännössä kaikissa noissa välicommiteissa (#2) olisi siten vanhentunut binääri suhteessa koodeihin. Kaippa tuohon olisi mahdollista kikkailla joku mekanismi jossa "merge pull request" todellisuudessa buildaa binäärit ja päivittää git amendilla kuhunkin branchissa olevaan committiin sisään nuo uudet binäärit ja vasta sitten tekee mergen.

Väittäisin että on paljon helpompi seurata binäärien ja koodin yhteiseloa ihan vaan sillä, että koodeista buildataan artifaktit sellaisella nimeämiskäytännöllä että on helppo löytää kutakin artifaktia vastaavat koodit.
 
Liittynyt
12.06.2018
Viestejä
342
Git lfs on kieltämättä ihan hyvä tuohon, mutta silti väittäisin että tuo on lähtökohtaisesti huono idea koska koodin sisältöä on vaikea saada pysymään synkassa binäärien kanssa. Äkkiseltään näkisin että käy näin, tilanteessa jossa buildijärjestelmä tekee binäärit ja pushaa ne sisään:
  1. Haarassa on koodin versio 1 ja binääri versio 1
  2. PR mergetään => haarassa koodin versio 2, binääri versio 1
  3. Automaatio buildaa ja commitoi uuden binäärin => haarassa koodin versio 2, binääri versio 2
Käytännössä kaikissa noissa välicommiteissa (#2) olisi siten vanhentunut binääri suhteessa koodeihin. Kaippa tuohon olisi mahdollista kikkailla joku mekanismi jossa "merge pull request" todellisuudessa buildaa binäärit ja päivittää git amendilla kuhunkin branchissa olevaan committiin sisään nuo uudet binäärit ja vasta sitten tekee mergen.

Väittäisin että on paljon helpompi seurata binäärien ja koodin yhteiseloa ihan vaan sillä, että koodeista buildataan artifaktit sellaisella nimeämiskäytännöllä että on helppo löytää kutakin artifaktia vastaavat koodit.
Juu ihan totta. En ajatellutkaan asiaa tuolta kantilta, että binäärit olisi nimenomaan samassa repositoryssä koodin kanssa ja juuri tuollaisia ongelmiahan siitä tulisi.

Kaikenlaista viritelmää olen kyllä nähnyt build-binäärien säilömisessä; on archivoitu Jenkinsiin, tuupattu nfs-verkkolevylle, tuupattu scp:llä repo-palvelimelle ja jaettu nginx:llä, tuupattu nexukseen, tuupattu versionhallintaan(svn/git). Aika karseita viritelmiä välillä :).
 
Liittynyt
23.10.2016
Viestejä
658
En enää pysty joostain syystä yhdistämään VPS:ään SSH:n kautta. Ubuntu-serveri kysyy root-salasanaa. Root-salasanaa ei pitäisi edes olla käytössä, koska kun loin serverin, niin syötin Hetznerin palvelussa sinne jo valmiiksi SSH-avaimet.

Tämä setuppi on toiminut moitteetta viimeiset pari viikkoa, mutta eilen kun koitin yhdistää, niin yhtäkkiä tuo kysyy salasanaa. Pääsen Hetznerin Rescue-ominaisuudella käsiksi serverin tiedostojärjestelmään mounttaamalla serverin levyn Rescue-serveriin. Tuota kautta pääsen ilmeisesti lisäämään jotenkin uuden SSH-avaimen manuaalisesti? Mihin se pitää laittaa? Jos olen käsittänyt oikein, niin root-käyttäjän kansiossa pitäisi olla .ssh-hakemisto, jossa ne sallitut avaimet on authorized_keys-tiedostossa, mutta tuota hakemistoa ei siellä ole.
 
Liittynyt
12.06.2018
Viestejä
342
En enää pysty joostain syystä yhdistämään VPS:ään SSH:n kautta. Ubuntu-serveri kysyy root-salasanaa. Root-salasanaa ei pitäisi edes olla käytössä, koska kun loin serverin, niin syötin Hetznerin palvelussa sinne jo valmiiksi SSH-avaimet.

Tämä setuppi on toiminut moitteetta viimeiset pari viikkoa, mutta eilen kun koitin yhdistää, niin yhtäkkiä tuo kysyy salasanaa. Pääsen Hetznerin Rescue-ominaisuudella käsiksi serverin tiedostojärjestelmään mounttaamalla serverin levyn Rescue-serveriin. Tuota kautta pääsen ilmeisesti lisäämään jotenkin uuden SSH-avaimen manuaalisesti? Mihin se pitää laittaa? Jos olen käsittänyt oikein, niin root-käyttäjän kansiossa pitäisi olla .ssh-hakemisto, jossa ne sallitut avaimet on authorized_keys-tiedostossa, mutta tuota hakemistoa ei siellä ole.
Yleensä ei kai kannattaisi sallia rootille ssh-loginia. Mutta asiaan: "locate authorized_keys", näet onko jossain moinen tiedosto. Avain voi olla myös sshd_config-tiedostossa. Kun avaat ssh yhteyttä, niin lisäämällä vivun "-v", saat näkyville debug-logia. "-vvvv":llä saat sitä vielä tarkemmalla tasolla. Pääsynhallinta saattaa olla jotenkin viritelty myös pamd:in kautta, mikä saattaa olla vähän syheröistä selviteltävää. Omituista että se on tolleen lauennut, tai no, automaattipäivityksillähän noi nykyään taitaa olla oletuksena ja kaikkea voi sitten tapahtua.
 

nnaku

I'm object-oriented!
Liittynyt
28.11.2016
Viestejä
779
En enää pysty joostain syystä yhdistämään VPS:ään SSH:n kautta. Ubuntu-serveri kysyy root-salasanaa. Root-salasanaa ei pitäisi edes olla käytössä, koska kun loin serverin, niin syötin Hetznerin palvelussa sinne jo valmiiksi SSH-avaimet.

Tämä setuppi on toiminut moitteetta viimeiset pari viikkoa, mutta eilen kun koitin yhdistää, niin yhtäkkiä tuo kysyy salasanaa. Pääsen Hetznerin Rescue-ominaisuudella käsiksi serverin tiedostojärjestelmään mounttaamalla serverin levyn Rescue-serveriin. Tuota kautta pääsen ilmeisesti lisäämään jotenkin uuden SSH-avaimen manuaalisesti? Mihin se pitää laittaa? Jos olen käsittänyt oikein, niin root-käyttäjän kansiossa pitäisi olla .ssh-hakemisto, jossa ne sallitut avaimet on authorized_keys-tiedostossa, mutta tuota hakemistoa ei siellä ole.
Ekana tulis mieleen että eihän clientilta ole yksityinen avain (private key) hukassa?
 
Viimeksi muokattu:
Liittynyt
23.10.2016
Viestejä
658
Yleensä ei kai kannattaisi sallia rootille ssh-loginia. Mutta asiaan: "locate authorized_keys", näet onko jossain moinen tiedosto. Avain voi olla myös sshd_config-tiedostossa. Kun avaat ssh yhteyttä, niin lisäämällä vivun "-v", saat näkyville debug-logia. "-vvvv":llä saat sitä vielä tarkemmalla tasolla. Pääsynhallinta saattaa olla jotenkin viritelty myös pamd:in kautta, mikä saattaa olla vähän syheröistä selviteltävää. Omituista että se on tolleen lauennut, tai no, automaattipäivityksillähän noi nykyään taitaa olla oletuksena ja kaikkea voi sitten tapahtua.
Tolla -v tägillä tulee tällasta infoa:

Koodi:
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug1: Connecting to SERVER_IP [SERVER_IP] port 22.
debug1: Connection established.
debug1: identity file C:\\Users\\Utente-006/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_ed25519-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_xmss type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.7
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 pat OpenSSH* compat 0x04000000
debug1: Authenticating to SERVER_IP:22 as 'root'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:AFAWFJKLDFJADKLGJ/AIxFSI890
debug1: Host 'SERVER_IP' is known and matches the ECDSA host key.
debug1: Found key in C:\\Users\\Utente-006/.ssh/known_hosts:6
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: pubkey_prepare: ssh_get_authentication_socket: No such file or directory
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:SDOKFDFFDSFd/7G/ADFDFBadasdasGxkrfFdsfjsfsdf9FDrIA4 C:\\Users\\Utente-006/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: C:\\Users\\Utente-006/.ssh/id_dsa
debug1: Trying private key: C:\\Users\\Utente-006/.ssh/id_ecdsa
debug1: Trying private key: C:\\Users\\Utente-006/.ssh/id_ed25519
debug1: Trying private key: C:\\Users\\Utente-006/.ssh/id_xmss
debug1: Next authentication method: password
debug1: read_passphrase: can't open /dev/tty: No such file or directory
root@SERVER_IP's password:
Minkähän takia tuo heittää tämän virheen:
Koodi:
debug1: identity file C:\\Users\\Utente-006/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
Tuo tiedosto on kuitenkin olemassa ja myöhemmässä vaiheessa tuo sen saman tiedoston löytääkin.

Selviääkö tuosta logista jotain oleellista? Varmaan tuolle lopun passphrase-virheelle tarvis tehä jotain. Mun ssh-avaimet on määritelty ilman passphrasea, jos tuo liittyy samaan asiaan.

EDIT: Lisätään sen verran, että olen yhdistänyt serveriin kahdelta eri Windows-koneelta aikaisemmin ongelmitta ja nyt homma ei toimi kummaltakaan. Molempiin koneisiin on asennettu tässä viime päivinä uusimmat Windowsin päivitykset. Liekö noilla jotain tekemistä asian kanssa?
 
Liittynyt
12.06.2018
Viestejä
342
Tolla -v tägillä tulee tällasta infoa:

Koodi:
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug1: Connecting to SERVER_IP [SERVER_IP] port 22.
debug1: Connection established.
debug1: identity file C:\\Users\\Utente-006/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_ed25519-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_xmss type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Utente-006/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.7
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 pat OpenSSH* compat 0x04000000
debug1: Authenticating to SERVER_IP:22 as 'root'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:AFAWFJKLDFJADKLGJ/AIxFSI890
debug1: Host 'SERVER_IP' is known and matches the ECDSA host key.
debug1: Found key in C:\\Users\\Utente-006/.ssh/known_hosts:6
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: pubkey_prepare: ssh_get_authentication_socket: No such file or directory
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:SDOKFDFFDSFd/7G/ADFDFBadasdasGxkrfFdsfjsfsdf9FDrIA4 C:\\Users\\Utente-006/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: C:\\Users\\Utente-006/.ssh/id_dsa
debug1: Trying private key: C:\\Users\\Utente-006/.ssh/id_ecdsa
debug1: Trying private key: C:\\Users\\Utente-006/.ssh/id_ed25519
debug1: Trying private key: C:\\Users\\Utente-006/.ssh/id_xmss
debug1: Next authentication method: password
debug1: read_passphrase: can't open /dev/tty: No such file or directory
root@SERVER_IP's password:
Minkähän takia tuo heittää tämän virheen:
Koodi:
debug1: identity file C:\\Users\\Utente-006/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
Tuo tiedosto on kuitenkin olemassa ja myöhemmässä vaiheessa tuo sen saman tiedoston löytääkin.

Selviääkö tuosta logista jotain oleellista? Varmaan tuolle lopun passphrase-virheelle tarvis tehä jotain. Mun ssh-avaimet on määritelty ilman passphrasea, jos tuo liittyy samaan asiaan.

EDIT: Lisätään sen verran, että olen yhdistänyt serveriin kahdelta eri Windows-koneelta aikaisemmin ongelmitta ja nyt homma ei toimi kummaltakaan. Molempiin koneisiin on asennettu tässä viime päivinä uusimmat Windowsin päivitykset. Liekö noilla jotain tekemistä asian kanssa?
Tuossa logissa näkyy "Offering public key"-rivi, jonka jälkeen pitäisi näkyä "Server accepts" tms, mutta nyt login mukaan siirryttän kokeilemaan muita avainvaihtoehtoja. Voisit vilkaista serverin päästä logeja hakemistosta /var/log/auth/ - josko siellä näkyisi syytä.
 
Liittynyt
23.10.2016
Viestejä
658
Tuossa logissa näkyy "Offering public key"-rivi, jonka jälkeen pitäisi näkyä "Server accepts" tms, mutta nyt login mukaan siirryttän kokeilemaan muita avainvaihtoehtoja. Voisit vilkaista serverin päästä logeja hakemistosta /var/log/auth/ - josko siellä näkyisi syytä.
Hmm... Tuosta logista selvisi ainakin, että Kiinasta koitetaan brute forcettaa servun passua.

Sain homman toimimaan. Loin rootille .ssh kansion ja sen alle authorized_keys-tiedoston ja laitoin sinne tarvittavat avaimet. Poistin myös kommentin sshd_config-tiedoston
Koodi:
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2
riviltä.
 
Viimeksi muokattu:
Liittynyt
17.10.2016
Viestejä
14 550
Silti olisi kiinnostavaa tietää, miksi tuo lopetti toimintansa. Oliko kyseessä joku käyttäjän kämmi vai automaattinen päivitys vai mikä.
 
Liittynyt
17.01.2018
Viestejä
1 998
Ettei vahingossa olisi tiedostojen oikeudet menneet väärin serverillä?
Muistaakseni ssh ei suostu käyttämään jos muilla on liikaa oikeuksia.
 
Liittynyt
23.10.2016
Viestejä
658
En tosiaan keksi mikä meni vikaan. Ne ssh-avaimet oli asetettu serveriä luodessa Hetznerin palvelussa. En tiedä kuuluuko niitten mennä oletuksena sinne root/.ssh/authorized_keys polkuun vai jonnekin muualle.

Tuo .ssh kansio sieltä kuitenkin puuttui kokonaan. Olen kyllä root-kansiossa tehnyt hommia ja poistellut kansioitakin, mutta silti tuntuu oudolta, että olisin vahingossa huomaamatta poistanut .ssh:n.
 
Liittynyt
17.10.2016
Viestejä
14 550
Olen kyllä root-kansiossa tehnyt hommia ja poistellut kansioitakin, mutta silti tuntuu oudolta, että olisin vahingossa huomaamatta poistanut .ssh:n.
Ehkä vielä oudompaa olisi, että joku päivitys sen tekisi automaattisesti. Toivotaan siis, että sinä olit syyllinen :D
 
Liittynyt
12.06.2018
Viestejä
342
En tosiaan keksi mikä meni vikaan. Ne ssh-avaimet oli asetettu serveriä luodessa Hetznerin palvelussa. En tiedä kuuluuko niitten mennä oletuksena sinne root/.ssh/authorized_keys polkuun vai jonnekin muualle.

Tuo .ssh kansio sieltä kuitenkin puuttui kokonaan. Olen kyllä root-kansiossa tehnyt hommia ja poistellut kansioitakin, mutta silti tuntuu oudolta, että olisin vahingossa huomaamatta poistanut .ssh:n.
"history"-komennolla näet toki komentohistorian, jos vielä kiinnostaa selvitellä/varmistella syytä ongelmalle. :)

Hetznerilläkin näytti olevan suositus/ohje, millä tehdään uusi rajoitetumpi käyttäjä ja disabloidaan root-login. Täälläkin varmaan moni suosittelisi tätä toimenpidettä.
 
Liittynyt
06.11.2016
Viestejä
1 749
Miten pystyisin säilömään mongodb tietokannassa vain uusinta dataa? Rss syötteitä on tarkoitus puskea tuonne kantaan.

Node.js + mongoose on käytössä, joten jos suoraan jotain vinkkiä miten tuo hoidettaisiin mongoosea käyttäen.
 
Toggle Sidebar

Statistiikka

Viestiketjut
237 484
Viestejä
4 163 909
Jäsenet
70 414
Uusin jäsen
O&G

Hinta.fi

Ylös Bottom