Näytä kirjoitukset

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


Aiheet - ilkant

Sivuja: [1] 2 3 ... 14
1
Vaihtoehtoiset työpöytäympäristöt / KDE Steam Deck
« : 28.09.23 - klo:13.32 »
Redditissä on viesti, jossa kerrotaan Steam Deckistä, joka on Plasmaa käyttävä konsoli. Tulevaisuus näyttää, miten hienoja ja helppokäyttöisiä pelit ovat tällä kun tulee Qt6 ja Wayland käyttöön.

2
Yleistä keskustelua / Linux perf
« : 28.09.23 - klo:05.01 »
Lueskelin esitietoja Python versiosta 3.12. Siellä mainittiin tuki Linuix perf:ille. (Oli siellä muutakin uutta kuten geneeriset mallit/templates.) Perf on ohjelma, jolla voi tutkia Linux kernelin tehokkuutta (profilointi). Olen tähän asti tiennyt, että profilointia voi tehdä koodatulle ohejlmalle, mutta sitä voi tehdä myös Linux-ytimelle (sic!)

Linux kernelin profilointi perfillä tutorial (english).

Yleiskatsaus (english).

Perf esimerkkejä (english).

Lisää tietoa saa kun laittaa hakukoneeseen hakusanat Linux perf.

3
Laitealue / Muistin nopeuden vaikutus
« : 24.09.23 - klo:15.36 »
Jos verrataan i7-13700K ja i9-13900K tasoisia prosessoreja, niin vaikuttaako ja miten paljon, käytetäänkö keskusmuistina 2300 Mhz DDR-4 vai 7200 Mhz (clk 36) DDR-5 muistipiirejä? Ja onko eri valmistajien piireillä eroja, vaikka speksin lukemat olisivat samoja? Kysymys lienee, joutuuko prosessori odottelemaan kellojaksoja muistista saapuvalle tiedolle. Ja nyt tietysti Linux-järjestelmässä. Kohta Linux-kernelistä tulee uusi versio 6.5, jossa on optimointeja varsinkin Ryzen-prosessoreille.

4
Pythonille saa moduulin tubetone, josta on olemassa versio 0.3.3. Selosteessa sanotaan, että paketin avulla voi prosessoida videon tekstejä ja analysoida tuloksia.

No tästähän voisi sitten tekoälyn avulla luoda agentin, joka etsii itselle mielenkiintoisia videoita! Ja se voisi olla taustalla etsimässä koko ajan.

5
HSL:llä on nykyään palvelu pysäkkinäyttö, johon voi koota haluamiaan HSL:n pysäkkejä. Sivu näyttää tulevat bussit, kuten pysäkeillä olevilla näytöillä. Tuohon voi siis lisätä useamman pysäkin.

Miten sen saisi parhaiten tietokoneen näytölle. Automaattisesti käynnistyksen yhteydessä alkavaksi tottakai, mutta olisiko hyvä koodata Plasmoidi (KDE Plasma), käynnistää selain tuolla pysäkkiurlilla vai jokin muu tapa?

Tämän tarkoitus on siis auttaa tietokoneella istujaa lähtemään ajoissa pysäkille, jotta ehtii bussiin. Jättää muut tietokonejutut sitten myöhemmin tehtäväksi.

Edelleen ajatellen samassa voisi olla sähköpörssin käppyrä. Ja nuo voisi saada vaikka hotkeyllä näkyville ja piiloon.

6
Ilmoittauduin huvikseni 3D-tulostuskurssille. Siellä on käytössä Blender. Se on avoimen lähdekoodin ilmainen CAD-suunnitteluohjelma. Onpa kyllä hieno. Ominaisuuksia löytyy. En tosin ole aiemmin CAD-suunnitteluohjelmia käyttänyt. Kotona sitten ajattelin asentaa ohjelman. Ja sitä varten tallensin kurssilla ensimmäisen harjoitustekeleen muistitikulle. Blenderin uusin versio on 3.6.3 ja ehkä tietysti kehitysversiot vielä uudempia. Kokeilin Kubuntussa apt:llä etsiä ohjelmaa. Löytyikin versio 3.4.1. Se kelpaa minulle kun uskoakseni se on paremmin järjestelmän kanssa toimiva kuin uudempi ei pakettivarastossa oleva versio. Ja kyllähän se latasi tikulta sen harjoitustekeleen lumiukon näytölle.

Täällä on valmiita malleja Blenderille.

7
Kubuntu 23.04 -päivityksessä kävi taas niin, että nyt Chromium-selain ei anna ääntä ei FaceBookin videoista eikä YouTuben videoista. FireFoxilla äänet tulevat normaalisti. Chromiumilla ei edes Teams eikä Google Meet anna ääntä.

Olen katsonut, että Chromiumisa FaceBookilla on asetukset, että äänet tulevat normaalisti oletusasetuksilla. Kokeilin vielä Kyllä-asentoa säädölle. Ei kuulunut sittenkään. Ilmeisesti jokin muu juttu estää nyt äänet siinä selaimessa. En vain keksi, mikä.

8
Laitealue / Prosessori i5-13600K
« : 09.09.23 - klo:20.37 »
Otsikon prosessorissa i5-13600K on näytönohjainpiirit Intel® UHD Graphics 770. Kuinka ne on tuettu Linuxissa/Uvuntussa/Kubuntussa? Entä onko tukea 6P ja 8E -prosessoreille? Osaako Kubuntu jakaa kuorman hyvin noiden kesken? P-ytimien kellotaajuus on max. 5.1 GHz ja E-ytimien 3.9 GHz. Prosessorilla on tuki Intel® 700 Series / Intel 600 Series piirisarjoihin pohjautuviin emolevyihin. Onko selvää suosikkia? Prosessori on edullinen (alle 400 €)  verrattuna muihin vastaavantasoisiin. Kehuja on tullut käyttäjiltä. Esimerkiksi i7-sarjan vastaava prosessori on paljon kalliimi. Suoritustaso ei välttämättä ole suuremman hinnan arvoista.

Jimmsillä on tuolle prosessorille Bundle-tarjous. Minulla ei ole kokemusta Gigabyten emolevyistä kuin 1990-luvulta lyhyt kokemus, jota ei voi enää pitää verrokkina tänä päivänä. On toinenkin bundle-tarjous, joka pelaamattomalle käytätjälle voisi soveltua yhtä hyvin.

9
Asensin ohjeiden mukaan PyCharmiin Qt5-tuen PyCharmiin Kubuntu 23.04:ssä. Sain asennettua Qt Designerin ja PyUIC:n.

Nyt kun tein testiprojektin ja käynnistin tuon Qt Designerin, niin tulee virheilmoitus:

Lainaus
/usr/lib/x86_64-linux-gnu/qt5/bin/designer
QMetaProperty::read: Unable to handle unregistered datatype 'SelectionBehavior' for property 'QTabBar::selectionBehaviorOnRemove'
Error while reparenting!
Designer: A class name mismatch occurred when creating a widget using the custom widget factory registered for widgets of class KDialog. It returned a widget of class QDialog.

Hain Googlella tietoa tuosta virheilmoituksesta. Yksi vastaus oli tällainen. Siinä kehioitettiin luomaan Q_DECLARE_METATYPE makro.

Qt Designer -lisuke kyllä käynnistyy ja sillä voi tehdä esimeriksi main.ui tiedoston, jossa on XML:nä suunnittelun tulos. Käsitin eilen, että PyUIC tekisi siihen käytytöliittymäsuunnitteluun main.py lähdekoodin rungon. Tätä se ei tehnyt. Ja main.py oli jo olemassa. Se on konsolikäyhttöön koodattu.

Noin 5 kuukauden kuluttua KDE vaihtaa Qt:n versioon 6. Se on toinen kysymys. Tässä haluaisi ensin saada toimimaan tuo Qt5 PyCharmissa. Katella editoidessa ohjelmakoodia se käynnistää graafisen käyttöliittymän ihan hyvin. Koodaamiseen menee työtä paljon enemmän kuin noilla automatisoiduilla kehittimillä. Onko vinkkejä, miten Qt designerin lisukkeen saisi toimimaan? Esikuva on varmasti ollut Qt Designer, joka maksaakin sitten hunajaa. Tämä lisuke on ilmainen.

10
KDE Gear 23.08 on ilmestynyt. Odottelen sitä Kubuntu 23.04:ään vielä. Tuossa Gearissa on uusia ohjelmia kuten Merkuro. Sehän toimii samankaltaisesti kuin vanha kunnon Korganizer. Onko kysymys nyt siitä, että uuden sukupolven ohjelmat syrjäyttävät vanhat? Onko vanhoissa sitten toiminnallisia puutteita tai bugeja, joita ei pystytä korjaamaan? Tuossa Gearin teksteissä oli maininta, että tulossa on sähköpostit mukaan. Mutta sehän toimii sitten kuin vanha Kontact. Tällaisen sekamelskaisen kehityksen olen havainnut aiemminkin. Tulee monta samaa tekevää ohjelmaa. Kehitys tehdään todennäköisesti toisistaan tietämättä. Nyt olisi tilaa koordinoinnille. Tästä pitäisi kirjoittaa kansainvälisillä foorumeilla. Noiden uusien ohjelmien huono puoli on, että niistä saattaa puuttua jokin tarpeellinen ominaisuus, joka on vanhassa ohjelmassa.

Tulipa sitten juttua Konqueror-selaimesta. Kokeilin ihan huvikseni, onko sitä koneellani. Ei ollut. Mutta siinä käynnistysvalikossa oli toiminto hae Konqueror. Valitsin sen. Sepä käynnisti Discoverin (ohjelmien asennus- ja päivityssovellus). Sieltä valitsin Asenna ja tuo asensi Konquerorin koneelle. Aika kätevää. Toiminee muidenkin ohjelmien kanssa.

Sitten Spectaclessa on jo ennen tuota Gear 23.08:aa mahdollisuus piirtää vapaamuotoinen alue (näytä merkintätyökalut). Piirsin vapaamuotoisesti suljetun alueen. Mutta eipä sitä saanut kopioitua minnekään (leikepöydälle). Se kopioi koko kuvan ja siinä oli piirrettynä tuo alue. Teinköhän jonkun virheen? Windowsissa tuo vapaamuotoinen alueen rajaus on ollut jo vuosia käytössä. Yritin painaa Enteriä, mutta ei se sillä valinnut aluetta. Eikä hiiren naksutteluilla. Se ottaa koko kuvan. Oikealla ei ole mitään nappia rajatulle alueelle vaan koko ruudun kuvalle, päällimmäiselle ikkunalle, jne.

11
Tein LibreOffice 7.5.5.2 8 (päivittyi Kubuntu 23.04:ään päivä pari sitten) sivun taulukon, jossa 11 saraketta. Valitsin siitä vain osan sarakkeista ja poistin loput. Vein sen sitten Vie PDF-muotoon. Siihen PDF-muotoon tuli ensimmäiselle sivulle mukaan taulukosta poistettuja sarakkeita. Ja myös sen taulukon perään tuli sivu, jossa poistettujen sarakkeiden asioita. Niissä oli tietoa, jota ei saisi julkaista. Onneksi tuli tsekattua pdf, ennen kuin vein nettiin jaettavaksi. Varoituksena laitan tänne. Tuosta voisi tehdä bugi-ilmoituksen. Sen verran mutkikas, että pitäisi antaa data myös tutkittavaksi.

Ohjelmointikoodeille on olemassa "sössijä", joka tekee koodista mössöä. Tarkoitus on siis estää, että koodin nähnyt saisi mitään selvää ohjelman rakenteesta ja lauseista. Onko taulukkolaskentapohjalle olemassa tuollaista sössijää. Jos ei, niin *vink* *vink* jollekin. Ei ole kovin monimutkainen tehdä.

13
Päivitin juuri Plasma 5.27.7:n koneeseen. Tänään on todettava ilolla, että kun Plasman julkaisupäivä tulee, ei kulu vuorokauttakaan, niin se on Kubuntussa saatavana. Katselin päivitetyt versiot kinfocenteristä. Tulipa katsottua kohtaa Virta. Oikeaan ohjelman ikkunaan tuli teksti

Tälle järjestelmälle ei ole saatavilla virrankulutustietoja.

Google-haulla etsin mahdollisia selityskiä kääntäen noita sanoja englanniksi. Sainkin vastaukseksi bugiraportin 387366. Siinä puhuttiin kinfocenterin käynnistämisestä konsolissa, jolloin se antaa erinäisiä rivejä infoa tekemistään asioista. Tein niin:

Koodia: [Valitse]
$ kinfocenter
KTranscript: Loaded property map: /usr/share/locale/fi/LC_SCRIPTS/ki18n5/general.pmapc
KTranscript: Loaded module: /usr/share/locale/fi/LC_SCRIPTS/ki18n5/ki18n5.js
kf.i18n: Interpolation "$[gen %1]" in "$[gen %1] &asetukset..." failed: "Non-string return value: undefined"
kf.i18n: Interpolation "$[gen %1]" in "$[gen %1] käyttö&ohj..." failed: "Non-string return value: undefined"
kf.i18n: Interpolation "$[elat %1]" in "&Tietoa $[yleisnimi_..." failed: "Non-string return value: undefined"
kf.i18n: Interpolation "$[elat %1]" in "&Tietoa $[yleisnimi_..." failed: "Non-string return value: undefined"
kf.i18n: Interpolation "$[gen %1]" in "$[gen %1] käyttö&ohj..." failed: "Non-string return value: undefined"
kf.i18n: Interpolation "$[elat %1]" in "&Tietoa $[yleisnimi_..." failed: "Non-string return value: undefined"
kf.xmlgui: cannot find .rc file "kinfocenterui.rc" for component "kinfocenter"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/ScrollablePage.qml:200:9: QML MouseArea: Binding loop detected for property "width"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/ScrollablePage.qml:200:9: QML MouseArea: Binding loop detected for property "width"
QQmlEngine::setContextForObject(): Object already has a QQmlContext
Hspell: can't open /usr/share/hspell/hebrew.wgz.sizes.
kf.sonnet.clients.hspell: HSpellDict::HSpellDict: Init failed
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/ScrollablePage.qml:200:9: QML MouseArea: Binding loop detected for property "implicitHeight"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/ScrollablePage.qml:200:9: QML MouseArea: Binding loop detected for property "implicitHeight"
kf.i18n: Interpolation "$[elat %1]" in "Tietoa $[yleisnimi_p..." failed: "Non-string return value: undefined"
QQmlEngine::setContextForObject(): Object already has a QQmlContext
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/templates/InlineMessage.qml:265:13: QML SelectableLabel: Binding loop detected for property "implicitWidth"
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:31: Error: Cannot assign [undefined] to QObject*
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'temperature' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'energyFullDesign' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'energyFull' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'energy' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'voltage' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'energyRate' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'technology' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'serial' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'capacity' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'chargePercent' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'chargeState' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:384: TypeError: Cannot read property 'rechargeable' of null
file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/Graph.qml:56: TypeError: Cannot read property 'x' of undefined

Laitteisto:
prosessori: i5-10400F
emolevy: MSI A490 A Pro (biossia ei ole päivitetty 2 vuoden aikana)

Ohjelmisto:
Kubuntu 34.04
Plasma 5.27.7

Tässä nyt ihmettelen, että onko tuo virrankulutuksen näytön toimimaan saaminen mahdollista yksinkertaisin toimenpitein tällekin koneelle. Ne tiedot on nykyaikaa varsinkin, jos se on niin herkkä, että pystyy profiloimaan tietokoneen käyttöä säästäväiseen suuntaan.

14
1990-luvulla kuulin, että Linux osaa hyödyntää moniytimisyyttä paremmin kuin Windows. Nyt on Inteliltä tulossa uusi 14. sukupolven Raptor Lake Refresh -prosessorit. Esimerkin i9-14900K:ssa on 24 corea ja 32 threadia (8P + 16E). Miten on yleensä, osaako käyttöjärjestelmät jakaa työkuormaa optimaalisella tavalla noille P- ja E-ytimille? Nehän ovat erilaisia. Ja erityisesti nyt Linux, miten se osaa? Vai onko sillä koneen ostajan kannalta suurta merkitystä normaalioloissa?

15
Tein taulukkoa, jossa sarakkeessa A tekstiä, B kokonaislukuja ja C tekstiä, joka on aikaleima. Rivejä parisataa. Halusin lajiltella sarakkeen B mukaan. Asetin sarakkeen tietotuupiksi Luku. Tein lajittelun nousevassa järjesteyksessä valikosta useammalla kriteerillä, mutta en lisännyt sinne mitään B-sarakkeen lisäksi.

Taulukossa on nyt sarakkeessa B lukuja (esimerkki): 1, 2, 3, 5, 51, 530, 6, 7... Siis lajittelu toimii kuin merkkijonolajittelu silti, vaikka sarake on merkitty kokonaisluvuiksi. Pitää tehdä bugi-ilmoitus kunhan saan selville, miten Libre Officen kehittäjille se tehdään.

16
Kubuntu 23.04:ssä on yövalo (ja myös päivävalo) toiminto, joka asettaa näytön valaistuksen vähän punertavaksi. Tämä aktivoituu kuitenkin kun tallentaa jostain sovelluksesta jotain tiedostoon. Esimerkiksi sovelluksessa Kate kun tallentaa kirjoitetun tekstin. Ja monesti kellonaika on niin paljon, että siirtyminen yövalaistukseen on iso ero. Tämä lienee bugi, että se ei ala tasaisesti liukumaan kohti yövalaistusta. Päivävaloa en ole testaillut. Tämäkin tullut esille normaalissa käytössä, ei erityisemmin testattu.

17
Huomasin Redditissä keskustelun ALT + ASCII code on Kubuntu. Kun avasin Systeemiasetukset, niin siellä on näppäimille ainakin viisi eri tasoa asetteluja (siis millainen merkki / kuva näppäimestä tulee. Tuollaisessa määrässä menee sekaisin kirjoittaessaan. Onko mahdollista saada siihen simutaanisena näppäimistökuva näytölkle ja sen hetkinen vaihtoehtoinen merkki / kuvake. Ja aina kun vaihtaa sitä tasoa, se toisi sen asettelun merkit / kuvat. Muutoin tuo on kyllä aika mukavakäyttöinen ominaisuus. On Gnomessakin.

18
Onko mahdollista, että KDE Discover päivittäisi myös snapin?

Tuli Discoverista muuten virheilmoitus:
Koodia: [Valitse]
Aborted due to failure (Error pulling from repo: While pulling runtime/org.freedesktop.Platform.GL.nvidia-525-125-06/x86_64/1.4 from remote flathub: Opening content object acf84d9af18fec85cbc4bd34b03e027e751b74ea59fd61a77e128a92d7393ca2: Opening content object acf84d9af18fec85cbc4bd34b03e027e751b74ea59fd61a77e128a92d7393ca2: Couldn't find file object 'acf84d9af18fec85cbc4bd34b03e027e751b74ea59fd61a77e128a92d7393ca2')

Onkohan tuo virheilmoitus sen verran väliaikainen, ettei kannata ilmoittaa KDE:n bugijärjestelmään?

19
Eilen tai tänään 28.6.2023 tehty Kubuntu 23.04 järjestelmäpäivityksen jälkeen kone ei enää boottaakkan normaalisti. Konsoliin tulee ilmoitus out of memory. Ja varmasti 32 GB ram muistia pitäisi riittää. Onneksi siinä sai avattua valikon, josta pystyi käynnistämään kaksi pykälää vanhemmalla kernelillä. Sillä kone boottasi ok. Kuinka tuosta pitäisi selvitä? Tuli mieleen levykuvien ottaminen, joka on jäänyt tietenkin aiemmin tekemättä. Varmasti tämä boottaamattomuus on jollekin muulle tapahtunut. Odottelenko vain uudempaa kernelin versiota? Voin tietysti ottaa valokuvan ruudulta, jos joku siitä hyötyy. Tällaista ei ole vuosikymmeneen tapahtunut.


20
Noin 5 vuotta sitten jäi yhden ohjelman kehitys kesken sattuneista syistä. Siinä on pallot ja kädet -mallilla sanottuna joukko palloja, joilla on eri määriä käsiä pituudeltaan 0 - 3. Käden pituus 0 tarkoittaa, että toinen pallo on samassa klusterissa. Käden pituus 1 tarkoittaa, että toinen pallo on ensimmäisen vieruskaverina (etäisyydellä 1). Käden pituus 2 tarkoittaa sitä, että välissä on yksi pallo, johon alkuperäisestä pallosta on etäisyys 1 ja siitä välissä olevasta pallosta on etäisyys 1 kohdepalloon. Näin syntyy palloverkosto pallojen klustereista.
 Klustereiden välimatka on aina 1, jotta pallomeri on ristiriidaton. Verkostoon tuodaan aina yksi pallo lisää ja sillä on niitä käsiä. Pallo liitetään verkkoon edellämainituilla säännöillä. Verkostoon (pallomereen) voi toki jäädä jonnekin pallo, jolla on kahden tai kolmen yksikön yksikön käsi vailla kohdepalloa. Sellainen jää odottamaan uutta pallolisäystä verkostoon. Yhden yksikön etäisyys ilman kohdepalloa on kuitenkin kiinni verkostossa sen yhden yhteyden kautta. Toivottavasti tämä kuvaus oli kyllin selkeä. Tätä geneeristä mallinnusta voi käyttää moneen sovellukseen. Minulle tulee muutama muukin sovellus mieleen kuin se, josta tämä on peräisin.

Jos tällaisesta on olemassa ohjelmoinnin suunnittelumalli, niin kertokaa! Jos onnsitun ratkaisemaan tuon, yksi harrasteryhmä saanee mukavan ja tehokkaan työkalun. Se tekee sekunnissa sen työn, johon ihmiseltä menee tyypillisesti monta tuntia. Ja monesti sen verran, että viisas ihminen jättää tekemättä homman.

Tässä on yksi kuva: Pallomeri. (Ihmisen mitokondrion dna-haploryhmän mutaatioiden klusterit ja näytteiden vanhimmat tunnetut äitilinjan äidit)

Opetellessani Pythonia tein tietorakenteet tupletteina. Siitä oli iso etu kun python tallensi koko verkon yhdellä käskyllä JSON-muotoiseksi tiedostoksi. Sitten kun vaihdoin tietorakenteet olio-ohjelmoinnin luokiksi, niin sepä ei enää mennytkään automaattisesti. Tämä ei tuohon mallinnukseen kuulu, mutta kerronpa vain.

Sivuja: [1] 2 3 ... 14