Recent posts

#1
Hei,

Vielä tuli semmoinen mieleen, että jos nuo html asiat pystyisi tuuttaamaan esim Twig templatella ulos niin kehityksessä pystyisi olemaan helposti ulkopuolinen mukana myös semmoinen joka ei osaa niinkään koodata. Nyt html:t on niin pahasti piilotettu että ainakin itsellä kestää selata oikeaa kohtaa kauan... (osaan kumminkin jotenkuten koodata, mutta en juurikaan nyky php:ta... php3 oli tuttu :))

Tarkoitan että kun html:t toisi jollain templatella ulos niin sivun kehittäjän ei tarvitsisi osata lukea php:tä vaan asiat hoituisivat {{muuttujien}} ja {% if muuttuja == muuttuja %} tyyppisesti.

Jos meinaa laittaa sivut templatella niin usein niissä on sitten varjopuolena(?) se että urlien kanssa voi olla erilaisempaa. Ei välttämättä toimi enää hakemistosta, mutta voi olla että toimii (voi olla vähän haaste - en tiedä). Tosin voi myös puntaroida että missä menee raja minkäkin suhteen. Templatessa taas voittaisi sen että siinä voisi helposti käyttää bootstrappia tai tailwindiä yms työkaluja ja eri listoista/taulukoista voisi tehdä komponentteja joita laittaa eri sivuilla ulos tyyliin {{ include "avoimet_laskut.html" data=table_data }}. Nuo esimerkit nyt on django / jinja2 tyyppistä mutta Twig lienee samankaltainen.

Kokeilin siis tuota dockerfileä ja tein sen mallilaskun ja homma toimi. Mitään syvällisempää benchmarkkia en tehny, mutta uskon että toimii. Lighttpd:n konffissa taitaa olla turha se mod_rewrite rivi. Jos tarve niin voin tuosta nginx versionki tehdä. Light tuli vaan kevyistä ekana mieleen :). Tuo palvelin nyt jääkin proxyn taakse jos meinaa julkisesti pyöritellä. Tässä tapauksessa on ihan sama onko se light, nginx vai apache. Riippuu miten paljon haluaa käyttää koneen resursseja tuohon, kaikki tekee saman tehtävän. Apache lienee raskain. Itse pyöritin pitkään nginx + php-fpm:n päällä. Uskon että pyörii vallan mainiosti raspberrypiilläkin. Tosin tietokantaa en ehkä laittaisi raspille jos haluaa luotettavuutta. Mysql palvelun voinee ostaa myös hostattuna ja jos homma pelittää niin mlinvoice:n "moottoria" voi heitellä koneesta toiseen jos tietokanta on hyvin hoidettu.

Jos meinaa tehdä enemmän tuosta "klikkaa ja laita toimimaan" (säätäen vain muutamaa ympäristömuuttujaa) niin vielä enemmän saa varmaan mennä asioita tietokantaan, kuten kaikki sähköpostiasetukset yms... oma taulu kaikille säädöt&settings_table (tuon niminen niin ulkomaalaiset käyttäjät saa tuskailla ääkkösten kanssa :))

Pikaisella silmäyksellä oot tehny ison työn koodin siistimisessä.

-Juho
#2
Moi,

Ja kiitoksia panostuksestasi tähän. Nyt tuli sellainen pläjäys painavaa asiaa, että vähän aikaa pitää sulatella. :)

Yksi puoli tuossa Dockerin pitämisessä mahdollisimman yksinkertaisena on ollut tavoite saada se toimimaan vähän jännemmissäkin ympäristöissä, esim. NAS:ssa. Mutta kun itselläni ei ole mahdollisuutta testailla kaikkia ympäristöjä, niin on jäänyt vähän tällaiseksi "toimii vissiin tarpeeksi hyvin" -tyyppiseksi ratkaisuksi.

Se on kuitenkin selvä, että olisi kivempi, jos config.php olisi paljon lyhyempi ja loput asetuksista olisi käyttöliittymän puolella. Ehkäpä joskus saan tätä parannettua.

--Ere
#3
MLInvoiceen liittyvä keskustelu / Docker ja kehitysehdotus
Last post by ioxo - 04.02.24 - klo:09:13
Hei pitkästä aikaa,

Käytin aikoinaan paljon mlinvoice ja sain sillä hyvin hoidettua firman laskut. Nykyään käytän muuta, mutta se ei vähennä arvostustani mlinvoicea kohtaan. Kiitos Erelle isosta ja kovasta panostuksesta. En usko että ohjelma olisi yhtä käyttökelpoinen ilman sinua.

Ajattelin hiukan auttaa, mikäli panoksestani on hyötyä. Kuukauden verran olen tykästynyt dockeriin ja huomannut sen erittäin käteväksi. Siispä tein uuden Dockerfilen, joka on hiukan pienempi. Huomasin että originaali on vajaa 900 Mt ja alpinella pääsin vajaa 200 Mt.

Liiteenä Dockerfile ja lighttpd.mlinvoice, joka sisältää konfin lighttpd:lle. Homman sai aika helposti ja nopeasti käyntiin, mutta hiukan harmaita hiuksia aiheutti puutteellinen dokumentointi, mutta samaan hengenvetoon en ole syyttämässä dokumentointia... itse en jaksaisi tuotakaan määrää tehdä dokumentointiin :).

- mbstring oli hyvä vinkki, ilman sitä homassa olisi mennyt vähän pitempään
- session oli se joka aiheutti murhetta...
- lopuksi ympäristömuuttujat, joihin esitän vaihtoehtoratkaisua

Sain omalla koneellani dockerin rakennettua, käynnnistettyä, ja asennettua. Se mitä tuohon jäin kaipaamaan on kyseiset ympäristömuuttujat  (tai vastaavilla nimittyksillä) ja config.php.sample kikkailun voisi siirtää unholaan... Mitä olen pienissä projekteissa nähnyt niin admin salasana ekaksi annetaan ja vasta ohjelmaan kirjautuneena voit muuttaa sen tietoja. Koko asennuksen voisi tehdä siten, että config.php tiedoston yläosaan syötetään halutut muuttujat ja sen jälkeen mennään "brute forcella" eteenpäin tai vaihtoehtoisesti config lukee tarvittavat ympäristömuuttujat jolloin systeemin tiedostoihin ei tarvitsisi koskea lainkaan. Lopuksi / dokumentoinnissa annetaan vinkki että admin salasana on nimda ja sen voi käydä vaihtamassa Menu -> sieltä -A täältä. Jos tuota haluaa käyttää webhotellista niin tuon filen voi käydä hyvin ekaksi läpi, jonka jälkeen tietää mitä tapahtuu ja odottaa vain sormet ristissä että milloin login ilmestyy ruudulle.

Dockerin puolesta tuohon config.php:hen voisi tehdä jotain seuraavaa


// ohje php:n sisälle kuinka muutat tietoja mikäli tarve...
// jos heittää dokkeriin niin php:tä ei koskaan nää ja osaa tuskin kiinnostaa
// onko php, ruby, javascript vai millä tehty jos homma toimii...
$run_in_docker = false / false  // onko tälle muuttujalle lopuksi edes tarvetta?
$db_server = $_ENV["DB_SERVER"] || 'localhost'
$db_user = $_ENV["DB_USER] || 'mlinvoice'

tai sitten jotain
$db_server = array($_ENV["DB_SERVER"], "localhost")

if ($run_in_docker) {
 $dbserver = $db_server[0];
}
jne...

Tällöin Dockerfilessä ei tarvitsisi luoda www-käyttäjää (ja muuttaa hakemiston oikeuksia) sitä varten että config.php.sample muutetaan config.php:ksi ja homman saisi toimimaan myös siten, että dockeria käytettäessä (tai muuten jossa halutaan syöttää tiedot ympäristömuuttujan kautta) asioihin pystyisi vaikuttamaan.

Config.php / setup.php voisi tehdä tietokantaan tarkistuksen tyyliin 'select * from mlinvoice.version; jos mätsää niin jatketaan käyttöä, muussa tapauksessa kerrotaan että ero on tai ei löydy koko ohjelmaa tietokannasta. Joko kyllä / ei jatketaanko tai sitten teksti että "ota yhteys järjestelmävalvojaan jne... :)"

Tämä mahdollistaisi myös hyvin sen, että jos tietokanta pysyy samana niin dockeria / ohjelmaa voi siirtää helposti koneelta toiselle tekemättä oikeastaan mitään muuta asetusta kuin muutaman ympäristömuuttujan säätäminen ja homma pelittää taas...

Jos joku miettii miten tuon dockerin saa käyntiin niin seuraavasta voinee olla vinkkiä:

tekee hakemiston, johon laittaa Dockerfilen ja lighttpd:mlinvoicen. Oletettuna docker asennettuna.
Dockerfile hakee automaattisesti labs.fi:n tietopalveluista vakaan jakelun. Ellei Ere muuta sijaintia :)

kontinkääntö:
$ docker build -t mli:1 .

verkon luonti
$ docker network create mli

Tässä ei ole tietokantaa mukana vaan se pyörii omana palveluna
docker pull mariadb:latest (veikkaus, run käynnistää pullauksen, jos ei löydy koneelta)

$ docker run -d --name db --network=mli mariadb:latest

mariadb:n ja mlinvoicen on oltava samassa verkossa. DB voi olla useammassakin verkossa.
DB:n porttia ei tarvi bindata hostille vaan sen voi pitää dockerin sisällä (turvallisempi).
Ainoastaan mlinvoicen portti otetaan ulos, tässä tapauksessa 8089 omalla koneella kun dockerin
sisällä se on 80.

Käynnistys esim. (tosin ympäristömuuttujilla ei tee vielä mitään :)
docker run -d -e DB_HOST=db -e DB_USERNAME=mlinvoice -e DB_PASSWORD=mlinvoice -e DB_NAME=mlinvoice -e SECRET_KEY_32=elitism-establish-sevenfold  --name mli --network=mli -p 8089:80 mli:1

Tuon dockerin voi laittaa sitten nginx tai apachen tai vastaavan proxyn taakse jos haluaa.

Sori jos tuli ylimääräisiä kirjaimia kun näppäimistö tekee kuolemaa ja tulee välistä tupla t yms juttuja :).

- Juho Vähäkangas

Edit:
Jäi liittämättä nuo litteet :). Olkaapa hyvät. Dokerin käyttö onistuu siis ilman noita environment asetuksia. Ne ovat käytännössä turhia, mutta tuossa on jonkinlainen aihio niiden käyttöön.
You cannot view this attachment.. You cannot view this attachment. 
#4
Tervehdys!

Pitkästä aikaa alkaa uusi versio olla loppusuoralla, mutta kaipaisi toki laajempaakin testausta. Versiossa 2.2.0 merkittävimmät muutokset ovat uusi hakutoiminto ja aloitussivun muokkaus. Tarkemmat tiedot ja linkit lyhyisiin ohjeisiin löytyvät muutoslokista. Ja asennuspaketti on automaattipäivitettävissä beta-kanavalta (jos asetettu config.php:ssa) ja ladattavissa Asennus-sivulta.

t. Ere
#5
No niinpä olikin, kiitos!
#6
Moi,

Helpoiten tuo onnistuu vaihtamalla tekstin käännös tyhjäksi. Eli tee lang-hakemistoon esim. suomea varten invoice_fi-FI.local.ini ja lisää siihen rivi:

FormInvoiceNumber = ''
#7
Moi, onko mahdollista saada viitenumero-kohdasta laskun numero pois (eli paikasta missä sanotaan "Viitenumero on aina mainittava maksettaessa" ja sen yläpuolella olevan laskun numero pois, koska se on jo laskun otsikkotiedoissa)? Voin tarvittaessa muokata suoran lähdekoodejakin. Kiitos.
#8
Kaivelin tätä sen verran, että Firefoxissa voi vääntää päälle tuon asetuksen, että käytetään käyttiksen päiväys- ym. asetuksia, seuraavasti:

  • Siirry osoitteeseen about:config
  • Etsi asetus intl.regional_prefs.use_os_locales
  • Säädä asetus true:ksi esim. tuplaklikkaamalla sitä

Aiheesta on kolme vuotta vanha tiketti: https://bugzilla.mozilla.org/show_bug.cgi?id=1684602
#9
Olet oikeassa, kyllä se toimii. Nyt tajusin kun kokeilin lisää. Minua hämää, kun siinä on kaksi kalenteria, ja ne järjestelmä pitää ne peräkkäisinä kuukausina.

Esimerkiksi kun valitsen 1. 1. 2023 -- 15. 6. 2023, valittuani tammikuu vasemmanpuoleiseen kalenteriin vaihtuu oikeanpuoleiseen helmikuu. Kun vaihdan oikeanpuoleiseen kesäkuu, katoaa näkyvistä vasemmanpuoleiseen valitsemani 1. tammikuuta. Tämä sai minut luulemaan välin aloituspäivää ei ole valittuna.

Mikäli minä olen ainoa jolle tämä oli liian vaikeaa, ei tarvitse tehdä mitään.
#10
Ei siinä mitään sen ihmeempää pitäisi olla kuin että klikkaa alkupäivää, sitten loppupäivää ja lopuksi Valmis-nappulaa. Jos ei toimi, niin tarvitsisin ainakin tiedon käytetystä selaimesta.

--Ere