[["Map",1,2,9,10],"meta::meta",["Map",3,4,5,6,7,8],"astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"site\":\"https://txarli.dev/\",\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"dangerouslyProcessSVG\":false,\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"material-theme-darker\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"processor\":{\"name\":\"unified\",\"options\":{\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{}}}},\"security\":{\"checkOrigin\":true,\"allowedDomains\":[],\"csp\":false,\"actionBodySizeLimit\":1048576,\"serverIslandBodySizeLimit\":1048576},\"env\":{\"schema\":{},\"validateSecrets\":false},\"prerenderConflictBehavior\":\"warn\",\"experimental\":{\"advancedRouting\":false,\"clientPrerender\":false,\"contentIntellisense\":false,\"chromeDevtoolsWorkspace\":false,\"rustCompiler\":false,\"queuedRendering\":{\"enabled\":false}},\"legacy\":{\"collectionsBackwardsCompat\":false}}","astro-version","6.4.2","content-config-digest","f756207bb1b45114","posts",["Map",11,12,31,32,59,60,112,113,146,147,171,172,191,192,213,214,231,232,265,266,285,286,316,317,338,339,356,357],"anemoia",{"id":11,"data":13,"body":19,"filePath":20,"digest":21,"rendered":22},{"title":14,"slug":11,"description":15,"added":16,"tags":17},"Anemoia","Anemoia kontzeptuari buruzko hausnarketa bat.","2026-1-23",[18],"pertsonala","`Anemoia` hitzak, inoiz bizi ez diren garaien nostalgia sentsazioa deskribatzen du. Norberaren memorian gordeta ez dauden baina kontakizun, irudi edo erreferentzia kulturalen bidez horren parte izanaren sentsazioak ekartzen duen malenkonia leun hori da. Antza, John Koenig idazleak bere [The Dictionary of Obscure Sorrows](https://www.thedictionaryofobscuresorrows.com/) libururako sortu zuen hitz berri hura.\n\nBehin baino gehiagotan sentitu izan dut anemoia. XX. mendeko 80. hamarkadatik aurrerako irudiek pizten didate hau. Taberna mitiko batek ixten duenean, musika talde batek agur esaten duenean, aktibista historiko bati egindako elkarrizketa bat irakurtzen dudanean... Horiek guztiek, zeozer mugitzen dute nire barrenean. 1989 urtean jaio nintzen eta horren aurrekoak anemoia piztea bat dator aurreko definizioarekin. Ez da horrela 90. hamarkadarekin edo 2000 urteen hasierarekin, garai horretan bizi nintzelako. Akaso, nostalgia da sentitzen dudana. Edo garai horietan heldu izatearen anemoia sentsatzioa. Edonola ere, azkenaldian, ez dira gutxi malenkonia hori sentitzen ditudan momentuak.\n\nUste dut, nire barrenean pizten den anemoia edo nostalgia horrek, gehiago esaten duela etorkizunaz iraganaz baino. Ez naiz eroriko iraganeko edozein denbora hobea zela pentsatzearen tranpan, baina argi dago orainak eta etorkizunak ez dutela itxaropenerako lekurik uzten. Posible da, ere, ezjakintasuna egotea iraganaren idealizazio horretan. Argi daukadana da, beste pertsona batzuekin batera gure mundua amesteko lanean nagoenean, ilusioak ez duela anemoia edo nostalgiarako lekurik uzten.","posts/anemoia.md","ec867ccbba9aa702",{"html":23,"metadata":24},"\u003Cp>\u003Ccode>Anemoia\u003C/code> hitzak, inoiz bizi ez diren garaien nostalgia sentsazioa deskribatzen du. Norberaren memorian gordeta ez dauden baina kontakizun, irudi edo erreferentzia kulturalen bidez horren parte izanaren sentsazioak ekartzen duen malenkonia leun hori da. Antza, John Koenig idazleak bere \u003Ca href=\"https://www.thedictionaryofobscuresorrows.com/\">The Dictionary of Obscure Sorrows\u003C/a> libururako sortu zuen hitz berri hura.\u003C/p>\n\u003Cp>Behin baino gehiagotan sentitu izan dut anemoia. XX. mendeko 80. hamarkadatik aurrerako irudiek pizten didate hau. Taberna mitiko batek ixten duenean, musika talde batek agur esaten duenean, aktibista historiko bati egindako elkarrizketa bat irakurtzen dudanean… Horiek guztiek, zeozer mugitzen dute nire barrenean. 1989 urtean jaio nintzen eta horren aurrekoak anemoia piztea bat dator aurreko definizioarekin. Ez da horrela 90. hamarkadarekin edo 2000 urteen hasierarekin, garai horretan bizi nintzelako. Akaso, nostalgia da sentitzen dudana. Edo garai horietan heldu izatearen anemoia sentsatzioa. Edonola ere, azkenaldian, ez dira gutxi malenkonia hori sentitzen ditudan momentuak.\u003C/p>\n\u003Cp>Uste dut, nire barrenean pizten den anemoia edo nostalgia horrek, gehiago esaten duela etorkizunaz iraganaz baino. Ez naiz eroriko iraganeko edozein denbora hobea zela pentsatzearen tranpan, baina argi dago orainak eta etorkizunak ez dutela itxaropenerako lekurik uzten. Posible da, ere, ezjakintasuna egotea iraganaren idealizazio horretan. Argi daukadana da, beste pertsona batzuekin batera gure mundua amesteko lanean nagoenean, ilusioak ez duela anemoia edo nostalgiarako lekurik uzten.\u003C/p>",{"headings":25,"localImagePaths":26,"remoteImagePaths":27,"frontmatter":28,"imagePaths":30},[],[],[],{"title":14,"slug":11,"description":15,"tags":29,"added":16},[18],[],"beatles-diskografia",{"id":31,"data":33,"body":39,"filePath":40,"digest":41,"rendered":42},{"title":34,"slug":31,"description":35,"added":36,"tags":37},"The Beatles taldearen diskografia bisitatzen","Errepaso bat The Beatles taldearen diskografiari.","2026-4-16",[38],"musika","Los Delinqüentes taldeko Diego Pozo gitar-joleari [egindako elkarrizketa batean](https://www.youtube.com/watch?v=30OMn_OZN28), galdetzen zioten ea zein ziren taldearen erreferenteak. Bere erantzuna: diska bat sortzen ari zirela blokeo batera iristen zirenean, Migué, Canijo eta hirurok, The Beatles taldearen diska bat jartzen zuten. \"Zigarro\" bat egin eta, ixiltasunean, diskoa osorik entzuten zutela. Batzuetan, Migué-k, negar batean, diska kentzeko eskatzen zuela. Bestalde, Laban egindako \"Hasiera bat\" diskaren aurkezpenean, Gorka Urbizuk, diskaren sorrera prozesuan egunero The Beatles entzuten pasiran ateratzen zela kontatu zigun. Hortik denbora batera, Abbey Road estudio mitikoan single batzuk grabatu zituen.\n\nEz dakit zer duen The Beatles taldeak. Tira, jakin badakit, talde ikonikoa izan zela: John Lenon, Paul McCartney, Yellow Submarine... Baina, telebista edota irratian entzundako kanta mitikoetaz gain, ez diot inoiz gehiegi erreparatu talde horri. Bada, egoerari buelta ematea erabaki dut eta, hurrengo egunetan, bere diskografia osorik entzutea otu zait.\n\n# Diskografia entzuteko ordena\n\nEz nekien oso ongi nondik hasi bidai hau. Interneten arakatuta, Reddit-en pertsona batek zalantza bera planteatzen zuela ikusi nuen eta [erantzun honekin geratu naiz](https://www.reddit.com/r/beatles/comments/1i9twf/comment/cb2xzev/):\n\n> Listen to them chronologically, excluding Yellow Submarine, switching Abbey Road and Let It Be, and swapping out Let It Be for the superior Naked version. After that, listen through Past Master for their non-album singles and finally finish it all of with a listen to Love. \n\nBereziki interesgarria iruditzen zait taldearen eboluzioa ikustea. Gauzak horrela eta interneteko pertsona ezezagun horren jakituriari jarraituz, hau da jarraitutako ordena:\n\n1. Please Please Me\n2. With The Beatles\n3. A Hard Days Night\n4. Beatles For Sale\n5. Help!\n6. Rubber Soul\n7. Revolver\n8. Sgt. Peppers Lonely Hearts Club Band\n9. The Beatles (White Album)\n10. Let It Be... Naked\n11. Abbey Road\n12. Past Masters\n13. Love\n\n## Alternatiba irisgarriago bat\n\nReddit-en aurkitutako beste erabiltzaile batek, alternatiba bezala, [abiapuntu bezala One bilduma diska erabiltzea planteatzen du](https://www.reddit.com/r/beatles/comments/t9r40x/my_recommended_order_of_first_listening_to/). Hortik, gustokoen zaizkigun etapa edota kantei tiraka, The Beatles-en disketan murgiltzea planteatzen du. Nik bide \"luzea\" jarraitzea erabaki dudan arren, ibilbide-orri interesgarria iruditzen zait nekatzen banaiz jarraitzeko.","posts/beatles-diskografia.md","1746b2661bc590c0",{"html":43,"metadata":44},"\u003Cp>Los Delinqüentes taldeko Diego Pozo gitar-joleari \u003Ca href=\"https://www.youtube.com/watch?v=30OMn_OZN28\">egindako elkarrizketa batean\u003C/a>, galdetzen zioten ea zein ziren taldearen erreferenteak. Bere erantzuna: diska bat sortzen ari zirela blokeo batera iristen zirenean, Migué, Canijo eta hirurok, The Beatles taldearen diska bat jartzen zuten. “Zigarro” bat egin eta, ixiltasunean, diskoa osorik entzuten zutela. Batzuetan, Migué-k, negar batean, diska kentzeko eskatzen zuela. Bestalde, Laban egindako “Hasiera bat” diskaren aurkezpenean, Gorka Urbizuk, diskaren sorrera prozesuan egunero The Beatles entzuten pasiran ateratzen zela kontatu zigun. Hortik denbora batera, Abbey Road estudio mitikoan single batzuk grabatu zituen.\u003C/p>\n\u003Cp>Ez dakit zer duen The Beatles taldeak. Tira, jakin badakit, talde ikonikoa izan zela: John Lenon, Paul McCartney, Yellow Submarine… Baina, telebista edota irratian entzundako kanta mitikoetaz gain, ez diot inoiz gehiegi erreparatu talde horri. Bada, egoerari buelta ematea erabaki dut eta, hurrengo egunetan, bere diskografia osorik entzutea otu zait.\u003C/p>\n\u003Ch1 id=\"diskografia-entzuteko-ordena\">Diskografia entzuteko ordena\u003C/h1>\n\u003Cp>Ez nekien oso ongi nondik hasi bidai hau. Interneten arakatuta, Reddit-en pertsona batek zalantza bera planteatzen zuela ikusi nuen eta \u003Ca href=\"https://www.reddit.com/r/beatles/comments/1i9twf/comment/cb2xzev/\">erantzun honekin geratu naiz\u003C/a>:\u003C/p>\n\u003Cblockquote>\n\u003Cp>Listen to them chronologically, excluding Yellow Submarine, switching Abbey Road and Let It Be, and swapping out Let It Be for the superior Naked version. After that, listen through Past Master for their non-album singles and finally finish it all of with a listen to Love.\u003C/p>\n\u003C/blockquote>\n\u003Cp>Bereziki interesgarria iruditzen zait taldearen eboluzioa ikustea. Gauzak horrela eta interneteko pertsona ezezagun horren jakituriari jarraituz, hau da jarraitutako ordena:\u003C/p>\n\u003Col>\n\u003Cli>Please Please Me\u003C/li>\n\u003Cli>With The Beatles\u003C/li>\n\u003Cli>A Hard Days Night\u003C/li>\n\u003Cli>Beatles For Sale\u003C/li>\n\u003Cli>Help!\u003C/li>\n\u003Cli>Rubber Soul\u003C/li>\n\u003Cli>Revolver\u003C/li>\n\u003Cli>Sgt. Peppers Lonely Hearts Club Band\u003C/li>\n\u003Cli>The Beatles (White Album)\u003C/li>\n\u003Cli>Let It Be… Naked\u003C/li>\n\u003Cli>Abbey Road\u003C/li>\n\u003Cli>Past Masters\u003C/li>\n\u003Cli>Love\u003C/li>\n\u003C/ol>\n\u003Ch2 id=\"alternatiba-irisgarriago-bat\">Alternatiba irisgarriago bat\u003C/h2>\n\u003Cp>Reddit-en aurkitutako beste erabiltzaile batek, alternatiba bezala, \u003Ca href=\"https://www.reddit.com/r/beatles/comments/t9r40x/my_recommended_order_of_first_listening_to/\">abiapuntu bezala One bilduma diska erabiltzea planteatzen du\u003C/a>. Hortik, gustokoen zaizkigun etapa edota kantei tiraka, The Beatles-en disketan murgiltzea planteatzen du. Nik bide “luzea” jarraitzea erabaki dudan arren, ibilbide-orri interesgarria iruditzen zait nekatzen banaiz jarraitzeko.\u003C/p>",{"headings":45,"localImagePaths":54,"remoteImagePaths":55,"frontmatter":56,"imagePaths":58},[46,50],{"depth":47,"slug":48,"text":49},1,"diskografia-entzuteko-ordena","Diskografia entzuteko ordena",{"depth":51,"slug":52,"text":53},2,"alternatiba-irisgarriago-bat","Alternatiba irisgarriago bat",[],[],{"title":34,"slug":31,"description":35,"tags":57,"added":36},[38],[],"cisco-ccna-1-praktika-apunteak",{"id":59,"data":61,"body":67,"filePath":68,"digest":69,"rendered":70},{"title":62,"slug":59,"description":63,"added":64,"tags":65},"Cisco CCNA-1: Praktikarako apunteak","Cisco CCNA-1 egin ondoren, praktikarako apunte nagusiak jasotzen ditut.","2026-6-1",[66],"katxarreoa","Laneko kontuak direla eta, [Cisco CCNA-1](https://www.netacad.com/es/courses/ccna-introduction-networks?courseLang=en-US) ziurtagiria atera nuen. Bi zati ditu: test teoriko bat eta Packet Tracer simulatzaileko praktika bat. Hemen, simulatzailean erabilitako komando nagusiak jasoko ditut.\n\n# Gailuen konfigurazio orokorrak\n\n## Hasierako konfigurazioak\n\n- Gailuak ezezagun zaizkion komandoak interneten bilatzea ekiditea.\n- Host izen bat ezartzea.\n- Hasierarako mezu bat erakustea.\n\n```\nno ip domain-lookup\nhostname X\nbanner motd #Unauthorized access to this device is prohibited!#\n```\n\n## Pasahitzak\n\n- Pasahitza ezartzea konfiguraziora sartzeko.\n- Pasahitzak enkriptatuta gordetzea.\n- Pasahitzek gutxienez 10 karaktere izateko araua ezartzea.\n\n```\nenable secret ZurePasahitza\nservice password-encryption\nsecurity passwords min-length 10\n```\n\n## SSH-a konfiguratzeko\n\n- Domeinu izena ezarri, RSA gakoak sortu ahal izateko.\n- Erabiltzaile/pasahitz bat sortu.\n- VTY (Virtual Teletype) linea guztiak (16 dira) konfiguratu:\n - SSH-a besterik ez onartu (telnet ezgaitu).\n - Datubase lokaleko erabiltzaileak erabili (gure kasuan, netadmin).\n- RSA gakoak sortu 1024 biteko luzerarekin.\n\n```\nip domain-name netsec.com\nusername netadmin secret netadminPasahitza\n\nline vty 0 15\ntransport input ssh\nlogin local\nexit\n\ncrypto key generate rsa\n1024\n```\n\n## Kontsolari pasahitza ezarri\n\n- Pasahitza konfiguratu.\n- Autentikatzeko pasahitza eskatzera behartu (`login`).\n\n```\nline console 0\npassword Pasahitza\nlogin\nexit\n```\n\n## Konfigurazioa kontsolidatu\n\n```\ncopy running-config startup-config\n```\n\n# Router-aren konfigurazioa\n\n## Interfazeen konfigurazioa\nInterfaze bakoitzarekin:\n- Deskribapena sortu.\n- IP helbide eta maskara konfiguratu.\n- Interfazea piztu.\n\n```\n\ninterface g0/0/0\ndescription Connect to Subnet B\nip address \u003Cip-helbidea> \u003Cmaskara>\nno shutdown \nexit\n```\n\n# Switch-aren konfigurazioa\n\n## 1. VLAN-erako SVI (Switch Virtual Interfaze) interfazea konfiguratu\n\n- Deskribapena sortu.\n- IP helbidea eta maskara konfiguratu.\n- SVI piztu.\n- Atebiderako IP helbidea konfiguratu.\n\n```\ninterface vlan 1\ndescription Switch Subnet A\nip address \u003Cip-helbidea> \u003Cmaskara>\nno shutdown \nexit\n\nip default-gateway \u003Catebiderako-ip-helbidea>\n```\n\n## Erabiltzen ez diren portuak itzali\n\n```\nint range f0/1 - 4, f0/7 - 24, g0/1 - 2\ndescription Unused switch ports\nshutdown\nend\n```","posts/pi-hole-pivpn copy.md","bb56ebc6b1e3d1af",{"html":71,"metadata":72},"\u003Cp>Laneko kontuak direla eta, \u003Ca href=\"https://www.netacad.com/es/courses/ccna-introduction-networks?courseLang=en-US\">Cisco CCNA-1\u003C/a> ziurtagiria atera nuen. Bi zati ditu: test teoriko bat eta Packet Tracer simulatzaileko praktika bat. Hemen, simulatzailean erabilitako komando nagusiak jasoko ditut.\u003C/p>\n\u003Ch1 id=\"gailuen-konfigurazio-orokorrak\">Gailuen konfigurazio orokorrak\u003C/h1>\n\u003Ch2 id=\"hasierako-konfigurazioak\">Hasierako konfigurazioak\u003C/h2>\n\u003Cul>\n\u003Cli>Gailuak ezezagun zaizkion komandoak interneten bilatzea ekiditea.\u003C/li>\n\u003Cli>Host izen bat ezartzea.\u003C/li>\n\u003Cli>Hasierarako mezu bat erakustea.\u003C/li>\n\u003C/ul>\n\u003Cpre class=\"astro-code material-theme-darker\" style=\"background-color:#212121;color:#EEFFFF; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>no ip domain-lookup\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>hostname X\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>banner motd #Unauthorized access to this device is prohibited!#\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"pasahitzak\">Pasahitzak\u003C/h2>\n\u003Cul>\n\u003Cli>Pasahitza ezartzea konfiguraziora sartzeko.\u003C/li>\n\u003Cli>Pasahitzak enkriptatuta gordetzea.\u003C/li>\n\u003Cli>Pasahitzek gutxienez 10 karaktere izateko araua ezartzea.\u003C/li>\n\u003C/ul>\n\u003Cpre class=\"astro-code material-theme-darker\" style=\"background-color:#212121;color:#EEFFFF; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>enable secret ZurePasahitza\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>service password-encryption\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>security passwords min-length 10\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"ssh-a-konfiguratzeko\">SSH-a konfiguratzeko\u003C/h2>\n\u003Cul>\n\u003Cli>Domeinu izena ezarri, RSA gakoak sortu ahal izateko.\u003C/li>\n\u003Cli>Erabiltzaile/pasahitz bat sortu.\u003C/li>\n\u003Cli>VTY (Virtual Teletype) linea guztiak (16 dira) konfiguratu:\n\u003Cul>\n\u003Cli>SSH-a besterik ez onartu (telnet ezgaitu).\u003C/li>\n\u003Cli>Datubase lokaleko erabiltzaileak erabili (gure kasuan, netadmin).\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>RSA gakoak sortu 1024 biteko luzerarekin.\u003C/li>\n\u003C/ul>\n\u003Cpre class=\"astro-code material-theme-darker\" style=\"background-color:#212121;color:#EEFFFF; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>ip domain-name netsec.com\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>username netadmin secret netadminPasahitza\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>line vty 0 15\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>transport input ssh\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>login local\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>exit\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>crypto key generate rsa\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>1024\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"kontsolari-pasahitza-ezarri\">Kontsolari pasahitza ezarri\u003C/h2>\n\u003Cul>\n\u003Cli>Pasahitza konfiguratu.\u003C/li>\n\u003Cli>Autentikatzeko pasahitza eskatzera behartu (\u003Ccode>login\u003C/code>).\u003C/li>\n\u003C/ul>\n\u003Cpre class=\"astro-code material-theme-darker\" style=\"background-color:#212121;color:#EEFFFF; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>line console 0\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>password Pasahitza\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>login\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>exit\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"konfigurazioa-kontsolidatu\">Konfigurazioa kontsolidatu\u003C/h2>\n\u003Cpre class=\"astro-code material-theme-darker\" style=\"background-color:#212121;color:#EEFFFF; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>copy running-config startup-config\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch1 id=\"router-aren-konfigurazioa\">Router-aren konfigurazioa\u003C/h1>\n\u003Ch2 id=\"interfazeen-konfigurazioa\">Interfazeen konfigurazioa\u003C/h2>\n\u003Cp>Interfaze bakoitzarekin:\u003C/p>\n\u003Cul>\n\u003Cli>Deskribapena sortu.\u003C/li>\n\u003Cli>IP helbide eta maskara konfiguratu.\u003C/li>\n\u003Cli>Interfazea piztu.\u003C/li>\n\u003C/ul>\n\u003Cpre class=\"astro-code material-theme-darker\" style=\"background-color:#212121;color:#EEFFFF; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>interface g0/0/0\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>description Connect to Subnet B\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>ip address <ip-helbidea> <maskara>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>no shutdown \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>exit\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch1 id=\"switch-aren-konfigurazioa\">Switch-aren konfigurazioa\u003C/h1>\n\u003Ch2 id=\"1-vlan-erako-svi-switch-virtual-interfaze-interfazea-konfiguratu\">1. VLAN-erako SVI (Switch Virtual Interfaze) interfazea konfiguratu\u003C/h2>\n\u003Cul>\n\u003Cli>Deskribapena sortu.\u003C/li>\n\u003Cli>IP helbidea eta maskara konfiguratu.\u003C/li>\n\u003Cli>SVI piztu.\u003C/li>\n\u003Cli>Atebiderako IP helbidea konfiguratu.\u003C/li>\n\u003C/ul>\n\u003Cpre class=\"astro-code material-theme-darker\" style=\"background-color:#212121;color:#EEFFFF; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>interface vlan 1\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>description Switch Subnet A\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>ip address <ip-helbidea> <maskara>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>no shutdown \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>exit\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>ip default-gateway <atebiderako-ip-helbidea>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"erabiltzen-ez-diren-portuak-itzali\">Erabiltzen ez diren portuak itzali\u003C/h2>\n\u003Cpre class=\"astro-code material-theme-darker\" style=\"background-color:#212121;color:#EEFFFF; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>int range f0/1 - 4, f0/7 - 24, g0/1 - 2\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>description Unused switch ports\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>shutdown\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>end\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":73,"localImagePaths":107,"remoteImagePaths":108,"frontmatter":109,"imagePaths":111},[74,77,80,83,86,89,92,95,98,101,104],{"depth":47,"slug":75,"text":76},"gailuen-konfigurazio-orokorrak","Gailuen konfigurazio orokorrak",{"depth":51,"slug":78,"text":79},"hasierako-konfigurazioak","Hasierako konfigurazioak",{"depth":51,"slug":81,"text":82},"pasahitzak","Pasahitzak",{"depth":51,"slug":84,"text":85},"ssh-a-konfiguratzeko","SSH-a konfiguratzeko",{"depth":51,"slug":87,"text":88},"kontsolari-pasahitza-ezarri","Kontsolari pasahitza ezarri",{"depth":51,"slug":90,"text":91},"konfigurazioa-kontsolidatu","Konfigurazioa kontsolidatu",{"depth":47,"slug":93,"text":94},"router-aren-konfigurazioa","Router-aren konfigurazioa",{"depth":51,"slug":96,"text":97},"interfazeen-konfigurazioa","Interfazeen konfigurazioa",{"depth":47,"slug":99,"text":100},"switch-aren-konfigurazioa","Switch-aren konfigurazioa",{"depth":51,"slug":102,"text":103},"1-vlan-erako-svi-switch-virtual-interfaze-interfazea-konfiguratu","1. VLAN-erako SVI (Switch Virtual Interfaze) interfazea konfiguratu",{"depth":51,"slug":105,"text":106},"erabiltzen-ez-diren-portuak-itzali","Erabiltzen ez diren portuak itzali",[],[],{"title":62,"slug":59,"description":63,"tags":110,"added":64},[66],[],"dyndns-kaxeroa",{"id":112,"data":114,"body":119,"filePath":120,"assetImports":121,"digest":123,"rendered":124},{"title":115,"slug":112,"description":116,"added":117,"tags":118},"Proiektutxoak zure etxean ostatzeko bi modu","Nola lortu, IP finkorik ez duzunean, domeinu batek zure etxeko zerbitzaritxo batera apuntatzea?","2025-11-8",[66],"Jende guztiak ez du zerbitzari dedikatu bat kontratatuta, baina edonork izan dezake katxarreo bat egiteko grina. Batzuetan gertatzen da proiektutxo bat montatu duzula (webgunetxo bat, web aplikazio bat, zerbitzu bat...) eta etxeko saretik internet bidez lagunei, familiari, kolektibo bati, etab. erakutsi nahi diezula. Igual `.com` domeinutxo bat erosi duzu eta guzti, total, ez dira horren garestiak. Momentu horretan, arazo bat izango duzu: zure internet hornitzaileak ez dizu IP finko bat ematen eta ezinezkoa egingo zaizu munduari erakustea.\n\nEgoera hau gertatzen denean, hainbat aukera daude. Lehenengoa, internet hornitzaileak IP finkoa emateko aukerak aztertzea da. Askotan, ez dute aukera hau ematen edo kobratu egingo dizute. Ez baduzu horretan sartu nahi zure jostailutxoa erabiltzeko, horratx nik kasu hauetan erabili izan ditudan beste bi aukera.\n\n## Ngrok: tunel bat zure aplikaziora\n\n[ngrok](https://ngrok.com/) tresnak tunel seguruak sortzen ditu zure makina eta webaren artean. Esate baterako, Raspberry Pi batean web aplikazio bat jarri baduzu, aukera ematen dizu web aplikazio horretara apuntatuko duen url publiko bat lortzeko. Gaur gaurkoz, kontua irekita, ezer ordaindu gabe url bat sortzeko aukera ematen du (hori bai, ezin da zuk nahi duzuna izan, berak ausaz sortuko du `xxx-xxx.ngrok-free.ap` url bat).\n\nLehenengo hilabeteetan, Fosil.eu azpiegitura autogestionatura migratu aurretik, [laba.eus](https://laba.eus) webgunearen backend-a horrela zerbitzatzen genuen nire etxean zegoen Raspberry Pi batetik. Oso ongi funtzionatzen du gauza basikoetarako, ea ez den azkar [kakazten](https://eu.wikipedia.org/wiki/Kakazte_(Internet)). Muga nagusia, makina batean proiektu bakarra izan dezakezula da, ez baitu portu ezberdinekin jolasteko aukerarik ematen.\n\n## Behin-behineko DynDNS sistema moduko bat\n\nSistema hau xinplea da: garapenerako API bat duen erregistradore bat baliatu, zure zerbitzaritik `cron` bidez IP publikoa eguneratzen joateko. Nik _script_ bat sortu nuen eta orduro egiten dut eguneraketa hori. Modu honetan, nire hornitzaileak esleitu didan IP helbidea aldatuko balu, orria erorita egongo den eperik luzeena ordu betekoa izango da.\n\n![Konexioaren bloke diagrama. Ezkerrean zerbitzaria azaltzen da eta gezi batzuek https://api.apify.org URLra apuntatzen dute, \"IP publikoa lortu\" mezuarekin. Azpian, zerbitzaritik gezi batzuek IONOSen API-a koadrora apuntatzen dute, \"Berritu bada, IONOS eguneratu\" mezuarekin.](../assets/dyndns-kaxeroa/dyndns-kaxeroa.svg)\n\nErregistradoreari dagokionez, denetarik aurkitu dut: APIrik eskaintzen ez duten erregistradoreak, API ziztrin bat erabiltzeko extra bat kobratzen dutenak... Zin dagit ez dudala komisiorik jasoko honekin, baina nik [IONOS](https://www.ionos.es/) erabili dut domeinu izenak erregistratzeko. Arrazoia: [eskaintzen duten APIa](https://developer.hosting.ionos.es/docs/dns) doakoa dela eta ederki dokumentatuta dagoela.\n\nAutomatizatu aurretik, zure domeinuari `A` DNS erregistro bat sortu beharko diozu. Zure IP helbide publikoa sar dezakezu, edo `1.1.1.1` IP helbidea, total, aurrerago modu automatikoan jarriko diozu dagokion helbidea eta oso polita izango da funtzionatzen duela ikustea :).\n\n### IONOS-en IP helbidea modu automatikoan eguneratzeko\n\nLehen esan bezala, _script_ bat sortu dut IONOS-ekin nire IP helbide publikoa eguneratzeko. Horretarako, lehen pausoa [zure _API key_-ak eskuratzea izango da](https://developer.hosting.ionos.es/). Honek bi kode emango dizkizu: publikoa eta sekretua (sekretua ongi gorde beharko duzu).\n\nBehin _API key_ hauek lortuta, bigarren pausua eguneratuta mantendu nahi duzun erregistroaren identifikadoreak aurkitzea izango da. Horretarako, [IONOSek eskaintzen duen Swagger dokumentazioa](https://developer.hosting.ionos.es/docs/dns) baliatu dezakezu. Honen bidez, bi datu lortu beharko dituzu:\n\n1. Zure domeinuaren zonalde identifikadorea: `/v1/zones` _endpointean_. Aurrerago ikusiko duzun kodean `ZONALDE_IDENTIFIKADOREA` balio honekin aldatu.\n2. Zonalde horretan, zure erregistroak hartzen duen identifikadorea: `/v1/zones` _endpointean_. Aurrerago ikusiko duzun kodean, `ERREGISTRO_IDENTIFIKADOREA_ balio honekin aldatu.\n\nLortutako datu hauekin, hurrengo _script_ hau sortu beharko duzu zure ekipoan.\n\n```bash\n#!/bin/env bash\n\nip=$(curl -s https://api.ipify.org)\ncurrent_file=\"./current_ip\"\n\nif [ -f \"$current_file\" ]; then\n read -r old_ip \u003C \"$current_file\"\nelse\n old_ip=\"\"\nfi\n\nif [ \"$old_ip\" = \"$ip\" ]; then\n echo \"${ip} IP helbidea konfiguratuta dago\"\n exit 0\nfi\n\nprintf '%s\\n' \"$ip\" > \"$current_file\"\n\ncurl -X 'PUT' \\\n 'https://api.hosting.ionos.com/dns/v1/zones/ZONALDE-IDENTIFIKADOREA/records/ERREGISTRO_IDENTIFIKADOREA' \\\n -H 'accept: application/json' \\\n -H 'X-API-Key: KEY_PUBLIKOA.KEY_SEKRETUA' \\\n -H 'Content-Type: application/json' \\\n -d @- \u003C\u003CEOF\n{\n \"disabled\": false,\n \"content\": \"$ip\",\n \"ttl\": 3600,\n \"prio\": 0\n}\nEOF\n```\n\n_Script_ honek, hurrengo ekintzak egiten ditu:\n\n1. Zure IP helbide publikoa lortzen du.\n2. Iada helbide hori kargatu duen aztertzen du, `current_ip` fitxategia erabiliz.\n3. Fitxategian IP helbide hori ikusi badu, exekuzioa itxiko du. Bestela, IP helbidea eguneratuko du.\n\n### Segurtasunaren inguruko hainbat ohar\n\nEstrategia hau erabilitzeak, zure router-eko portuak irekitzera behartuko zaitu. Egiten ari zarena badakizu, ongi dago behin-behineko aukera bezala eta pixkatxo bat jolasteko, baina proiektua \"serioagoa\" bada edo epe luzerako martxan izan nahi baduzu, gomendagarriena ostatzeko zerbitzari dedikatu bat lortzea dela uste dut. Edonola ere, behin-behineko aukera honetan segurtasuna pixkatxo bat hobetzeko, Linux makina batean bazaude, `ufw` (firewall xinple bat) eta `fail2ban` (eraso posibleak blokeatzeko) erabiltzea gomendatuko nuke.","posts/dyndns-kaxeroa.md",[122],"../assets/dyndns-kaxeroa/dyndns-kaxeroa.svg","7110039ebd2c88a6",{"html":125,"metadata":126},"\u003Cp>Jende guztiak ez du zerbitzari dedikatu bat kontratatuta, baina edonork izan dezake katxarreo bat egiteko grina. Batzuetan gertatzen da proiektutxo bat montatu duzula (webgunetxo bat, web aplikazio bat, zerbitzu bat…) eta etxeko saretik internet bidez lagunei, familiari, kolektibo bati, etab. erakutsi nahi diezula. Igual \u003Ccode>.com\u003C/code> domeinutxo bat erosi duzu eta guzti, total, ez dira horren garestiak. Momentu horretan, arazo bat izango duzu: zure internet hornitzaileak ez dizu IP finko bat ematen eta ezinezkoa egingo zaizu munduari erakustea.\u003C/p>\n\u003Cp>Egoera hau gertatzen denean, hainbat aukera daude. Lehenengoa, internet hornitzaileak IP finkoa emateko aukerak aztertzea da. Askotan, ez dute aukera hau ematen edo kobratu egingo dizute. Ez baduzu horretan sartu nahi zure jostailutxoa erabiltzeko, horratx nik kasu hauetan erabili izan ditudan beste bi aukera.\u003C/p>\n\u003Ch2 id=\"ngrok-tunel-bat-zure-aplikaziora\">Ngrok: tunel bat zure aplikaziora\u003C/h2>\n\u003Cp>\u003Ca href=\"https://ngrok.com/\">ngrok\u003C/a> tresnak tunel seguruak sortzen ditu zure makina eta webaren artean. Esate baterako, Raspberry Pi batean web aplikazio bat jarri baduzu, aukera ematen dizu web aplikazio horretara apuntatuko duen url publiko bat lortzeko. Gaur gaurkoz, kontua irekita, ezer ordaindu gabe url bat sortzeko aukera ematen du (hori bai, ezin da zuk nahi duzuna izan, berak ausaz sortuko du \u003Ccode>xxx-xxx.ngrok-free.ap\u003C/code> url bat).\u003C/p>\n\u003Cp>Lehenengo hilabeteetan, Fosil.eu azpiegitura autogestionatura migratu aurretik, \u003Ca href=\"https://laba.eus\">laba.eus\u003C/a> webgunearen backend-a horrela zerbitzatzen genuen nire etxean zegoen Raspberry Pi batetik. Oso ongi funtzionatzen du gauza basikoetarako, ea ez den azkar \u003Ca href=\"https://eu.wikipedia.org/wiki/Kakazte_(Internet)\">kakazten\u003C/a>. Muga nagusia, makina batean proiektu bakarra izan dezakezula da, ez baitu portu ezberdinekin jolasteko aukerarik ematen.\u003C/p>\n\u003Ch2 id=\"behin-behineko-dyndns-sistema-moduko-bat\">Behin-behineko DynDNS sistema moduko bat\u003C/h2>\n\u003Cp>Sistema hau xinplea da: garapenerako API bat duen erregistradore bat baliatu, zure zerbitzaritik \u003Ccode>cron\u003C/code> bidez IP publikoa eguneratzen joateko. Nik \u003Cem>script\u003C/em> bat sortu nuen eta orduro egiten dut eguneraketa hori. Modu honetan, nire hornitzaileak esleitu didan IP helbidea aldatuko balu, orria erorita egongo den eperik luzeena ordu betekoa izango da.\u003C/p>\n\u003Cp>\u003Cimg __ASTRO_IMAGE_=\"{"src":"../assets/dyndns-kaxeroa/dyndns-kaxeroa.svg","alt":"Konexioaren bloke diagrama. Ezkerrean zerbitzaria azaltzen da eta gezi batzuek https://api.apify.org URLra apuntatzen dute, \\"IP publikoa lortu\\" mezuarekin. Azpian, zerbitzaritik gezi batzuek IONOSen API-a koadrora apuntatzen dute, \\"Berritu bada, IONOS eguneratu\\" mezuarekin.","index":0}\">\u003C/p>\n\u003Cp>Erregistradoreari dagokionez, denetarik aurkitu dut: APIrik eskaintzen ez duten erregistradoreak, API ziztrin bat erabiltzeko extra bat kobratzen dutenak… Zin dagit ez dudala komisiorik jasoko honekin, baina nik \u003Ca href=\"https://www.ionos.es/\">IONOS\u003C/a> erabili dut domeinu izenak erregistratzeko. Arrazoia: \u003Ca href=\"https://developer.hosting.ionos.es/docs/dns\">eskaintzen duten APIa\u003C/a> doakoa dela eta ederki dokumentatuta dagoela.\u003C/p>\n\u003Cp>Automatizatu aurretik, zure domeinuari \u003Ccode>A\u003C/code> DNS erregistro bat sortu beharko diozu. Zure IP helbide publikoa sar dezakezu, edo \u003Ccode>1.1.1.1\u003C/code> IP helbidea, total, aurrerago modu automatikoan jarriko diozu dagokion helbidea eta oso polita izango da funtzionatzen duela ikustea :).\u003C/p>\n\u003Ch3 id=\"ionos-en-ip-helbidea-modu-automatikoan-eguneratzeko\">IONOS-en IP helbidea modu automatikoan eguneratzeko\u003C/h3>\n\u003Cp>Lehen esan bezala, \u003Cem>script\u003C/em> bat sortu dut IONOS-ekin nire IP helbide publikoa eguneratzeko. Horretarako, lehen pausoa \u003Ca href=\"https://developer.hosting.ionos.es/\">zure \u003Cem>API key\u003C/em>-ak eskuratzea izango da\u003C/a>. Honek bi kode emango dizkizu: publikoa eta sekretua (sekretua ongi gorde beharko duzu).\u003C/p>\n\u003Cp>Behin \u003Cem>API key\u003C/em> hauek lortuta, bigarren pausua eguneratuta mantendu nahi duzun erregistroaren identifikadoreak aurkitzea izango da. Horretarako, \u003Ca href=\"https://developer.hosting.ionos.es/docs/dns\">IONOSek eskaintzen duen Swagger dokumentazioa\u003C/a> baliatu dezakezu. Honen bidez, bi datu lortu beharko dituzu:\u003C/p>\n\u003Col>\n\u003Cli>Zure domeinuaren zonalde identifikadorea: \u003Ccode>/v1/zones\u003C/code> \u003Cem>endpointean\u003C/em>. Aurrerago ikusiko duzun kodean \u003Ccode>ZONALDE_IDENTIFIKADOREA\u003C/code> balio honekin aldatu.\u003C/li>\n\u003Cli>Zonalde horretan, zure erregistroak hartzen duen identifikadorea: \u003Ccode>/v1/zones\u003C/code> \u003Cem>endpointean\u003C/em>. Aurrerago ikusiko duzun kodean, `ERREGISTRO_IDENTIFIKADOREA_ balio honekin aldatu.\u003C/li>\n\u003C/ol>\n\u003Cp>Lortutako datu hauekin, hurrengo \u003Cem>script\u003C/em> hau sortu beharko duzu zure ekipoan.\u003C/p>\n\u003Cpre class=\"astro-code material-theme-darker\" style=\"background-color:#212121;color:#EEFFFF; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#545454;font-style:italic\">#!/bin/env bash\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#EEFFFF\">ip\u003C/span>\u003Cspan style=\"color:#89DDFF\">=$(\u003C/span>\u003Cspan style=\"color:#FFCB6B\">curl\u003C/span>\u003Cspan style=\"color:#C3E88D\"> -s\u003C/span>\u003Cspan style=\"color:#C3E88D\"> https://api.ipify.org\u003C/span>\u003Cspan style=\"color:#89DDFF\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#EEFFFF\">current_file\u003C/span>\u003Cspan style=\"color:#89DDFF\">=\u003C/span>\u003Cspan style=\"color:#89DDFF\">\"\u003C/span>\u003Cspan style=\"color:#C3E88D\">./current_ip\u003C/span>\u003Cspan style=\"color:#89DDFF\">\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#89DDFF;font-style:italic\">if\u003C/span>\u003Cspan style=\"color:#89DDFF\"> [\u003C/span>\u003Cspan style=\"color:#89DDFF\"> -f\u003C/span>\u003Cspan style=\"color:#89DDFF\"> \"\u003C/span>\u003Cspan style=\"color:#EEFFFF\">$current_file\u003C/span>\u003Cspan style=\"color:#89DDFF\">\"\u003C/span>\u003Cspan style=\"color:#89DDFF\"> ];\u003C/span>\u003Cspan style=\"color:#89DDFF;font-style:italic\"> then\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#82AAFF\"> read\u003C/span>\u003Cspan style=\"color:#C3E88D\"> -r\u003C/span>\u003Cspan style=\"color:#C3E88D\"> old_ip\u003C/span>\u003Cspan style=\"color:#89DDFF\"> <\u003C/span>\u003Cspan style=\"color:#89DDFF\"> \"\u003C/span>\u003Cspan style=\"color:#EEFFFF\">$current_file\u003C/span>\u003Cspan style=\"color:#89DDFF\">\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#89DDFF;font-style:italic\">else\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#EEFFFF\"> old_ip\u003C/span>\u003Cspan style=\"color:#89DDFF\">=\u003C/span>\u003Cspan style=\"color:#89DDFF\">\"\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#89DDFF;font-style:italic\">fi\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#89DDFF;font-style:italic\">if\u003C/span>\u003Cspan style=\"color:#89DDFF\"> [\u003C/span>\u003Cspan style=\"color:#89DDFF\"> \"\u003C/span>\u003Cspan style=\"color:#EEFFFF\">$old_ip\u003C/span>\u003Cspan style=\"color:#89DDFF\">\"\u003C/span>\u003Cspan style=\"color:#89DDFF\"> =\u003C/span>\u003Cspan style=\"color:#89DDFF\"> \"\u003C/span>\u003Cspan style=\"color:#EEFFFF\">$ip\u003C/span>\u003Cspan style=\"color:#89DDFF\">\"\u003C/span>\u003Cspan style=\"color:#89DDFF\"> ];\u003C/span>\u003Cspan style=\"color:#89DDFF;font-style:italic\"> then\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#82AAFF\"> echo\u003C/span>\u003Cspan style=\"color:#89DDFF\"> \"${\u003C/span>\u003Cspan style=\"color:#EEFFFF\">ip\u003C/span>\u003Cspan style=\"color:#89DDFF\">}\u003C/span>\u003Cspan style=\"color:#C3E88D\"> IP helbidea konfiguratuta dago\u003C/span>\u003Cspan style=\"color:#89DDFF\">\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#82AAFF\"> exit\u003C/span>\u003Cspan style=\"color:#F78C6C\"> 0\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#89DDFF;font-style:italic\">fi\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#82AAFF\">printf\u003C/span>\u003Cspan style=\"color:#89DDFF\"> '\u003C/span>\u003Cspan style=\"color:#C3E88D\">%s\\n\u003C/span>\u003Cspan style=\"color:#89DDFF\">'\u003C/span>\u003Cspan style=\"color:#89DDFF\"> \"\u003C/span>\u003Cspan style=\"color:#EEFFFF\">$ip\u003C/span>\u003Cspan style=\"color:#89DDFF\">\"\u003C/span>\u003Cspan style=\"color:#89DDFF\"> >\u003C/span>\u003Cspan style=\"color:#89DDFF\"> \"\u003C/span>\u003Cspan style=\"color:#EEFFFF\">$current_file\u003C/span>\u003Cspan style=\"color:#89DDFF\">\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFCB6B\">curl\u003C/span>\u003Cspan style=\"color:#C3E88D\"> -X\u003C/span>\u003Cspan style=\"color:#89DDFF\"> '\u003C/span>\u003Cspan style=\"color:#C3E88D\">PUT\u003C/span>\u003Cspan style=\"color:#89DDFF\">'\u003C/span>\u003Cspan style=\"color:#EEFFFF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#89DDFF\"> '\u003C/span>\u003Cspan style=\"color:#C3E88D\">https://api.hosting.ionos.com/dns/v1/zones/ZONALDE-IDENTIFIKADOREA/records/ERREGISTRO_IDENTIFIKADOREA\u003C/span>\u003Cspan style=\"color:#89DDFF\">'\u003C/span>\u003Cspan style=\"color:#EEFFFF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C3E88D\"> -H\u003C/span>\u003Cspan style=\"color:#89DDFF\"> '\u003C/span>\u003Cspan style=\"color:#C3E88D\">accept: application/json\u003C/span>\u003Cspan style=\"color:#89DDFF\">'\u003C/span>\u003Cspan style=\"color:#EEFFFF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C3E88D\"> -H\u003C/span>\u003Cspan style=\"color:#89DDFF\"> '\u003C/span>\u003Cspan style=\"color:#C3E88D\">X-API-Key: KEY_PUBLIKOA.KEY_SEKRETUA\u003C/span>\u003Cspan style=\"color:#89DDFF\">'\u003C/span>\u003Cspan style=\"color:#EEFFFF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C3E88D\"> -H\u003C/span>\u003Cspan style=\"color:#89DDFF\"> '\u003C/span>\u003Cspan style=\"color:#C3E88D\">Content-Type: application/json\u003C/span>\u003Cspan style=\"color:#89DDFF\">'\u003C/span>\u003Cspan style=\"color:#EEFFFF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C3E88D\"> -d\u003C/span>\u003Cspan style=\"color:#C3E88D\"> @-\u003C/span>\u003Cspan style=\"color:#89DDFF\"> <<\u003C/span>\u003Cspan style=\"color:#89DDFF\">EOF\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C3E88D\">{\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C3E88D\"> \"disabled\": false,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C3E88D\"> \"content\": \"\u003C/span>\u003Cspan style=\"color:#EEFFFF\">$ip\u003C/span>\u003Cspan style=\"color:#C3E88D\">\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C3E88D\"> \"ttl\": 3600,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C3E88D\"> \"prio\": 0\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#C3E88D\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#89DDFF\">EOF\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>\u003Cem>Script\u003C/em> honek, hurrengo ekintzak egiten ditu:\u003C/p>\n\u003Col>\n\u003Cli>Zure IP helbide publikoa lortzen du.\u003C/li>\n\u003Cli>Iada helbide hori kargatu duen aztertzen du, \u003Ccode>current_ip\u003C/code> fitxategia erabiliz.\u003C/li>\n\u003Cli>Fitxategian IP helbide hori ikusi badu, exekuzioa itxiko du. Bestela, IP helbidea eguneratuko du.\u003C/li>\n\u003C/ol>\n\u003Ch3 id=\"segurtasunaren-inguruko-hainbat-ohar\">Segurtasunaren inguruko hainbat ohar\u003C/h3>\n\u003Cp>Estrategia hau erabilitzeak, zure router-eko portuak irekitzera behartuko zaitu. Egiten ari zarena badakizu, ongi dago behin-behineko aukera bezala eta pixkatxo bat jolasteko, baina proiektua “serioagoa” bada edo epe luzerako martxan izan nahi baduzu, gomendagarriena ostatzeko zerbitzari dedikatu bat lortzea dela uste dut. Edonola ere, behin-behineko aukera honetan segurtasuna pixkatxo bat hobetzeko, Linux makina batean bazaude, \u003Ccode>ufw\u003C/code> (firewall xinple bat) eta \u003Ccode>fail2ban\u003C/code> (eraso posibleak blokeatzeko) erabiltzea gomendatuko nuke.\u003C/p>",{"headings":127,"localImagePaths":141,"remoteImagePaths":142,"frontmatter":143,"imagePaths":145},[128,131,134,138],{"depth":51,"slug":129,"text":130},"ngrok-tunel-bat-zure-aplikaziora","Ngrok: tunel bat zure aplikaziora",{"depth":51,"slug":132,"text":133},"behin-behineko-dyndns-sistema-moduko-bat","Behin-behineko DynDNS sistema moduko bat",{"depth":135,"slug":136,"text":137},3,"ionos-en-ip-helbidea-modu-automatikoan-eguneratzeko","IONOS-en IP helbidea modu automatikoan eguneratzeko",{"depth":135,"slug":139,"text":140},"segurtasunaren-inguruko-hainbat-ohar","Segurtasunaren inguruko hainbat ohar",[122],[],{"title":115,"slug":112,"description":116,"tags":144,"added":117},[66],[122],"hay-algo-de-negocio-en-tu-codigo",{"id":146,"data":148,"body":154,"filePath":155,"assetImports":156,"digest":158,"rendered":159},{"title":149,"slug":146,"description":150,"added":151,"tags":152},"Hay algo de negocio en tu código: (algunas) ideas para la entrega de valor","Biko2 enpresako blogean idatzitako artikulu bat.","2019-11-19",[153],"biko2egunak","*_Oharra: Honako hau, Biko2 enpresan lan egiten nuenean haien blogean idatzitako artikulu bat da. [Iturria (funtzionatzen duen arte)](https://blog.biko2.com/actualidad-biko/hay-algo-de-negocio-en-tu-codigo-algunas-ideas-para-la-entrega-de-valor/)._*\n\n---\n\n![Shaun Tan ilustratzailearen \"The Arrival\" liburuan oinarritutako nik egindako marrazki bat. Eraikin handi batzuk ikusten dira eta, behean, familia bat (aita, ama eta alaba) kale erdian. Eraikinen artean, olagarroen tentakulo batzuk daude.](../assets/hay-algo-de-negocio-en-tu-codigo/arrival.jpg)\n\nEs sábado por la mañana y Miren, frontend developer, entra a clase en nuestro Curso de Desarrollo de Software. El plan del día no es el esperado en un curso que promete ser técnico: Rubén y yo dinamizaremos una sesión sobre definición de historias de usuario. Como es habitual en la Biko School, abrimos boca con una introducción teórica para, acto seguido, poner en práctica lo aprendido.\n\nEmpezamos explicando que, para hacer bien nuestro trabajo, es fundamental un profundo conocimiento del negocio. En vez de limitarnos a ejecutar una solución, debemos participar en la definición de esta. Para ello, es necesaria una conversación entre las personas implicadas en el proyecto, desde perfiles de negocio hasta perfiles de desarrollo. Una conversación que se da en el dominio del problema, ahí donde solo se habla de las necesidades de la persona que utiliza nuestro software. Una vez entendidas estas necesidades es cuando pasamos al dominio de la solución, donde se definen y dibujan formularios, tablas y llamadas al API.\n\nEsta conversación sobre las necesidades debe estar exenta de ambigüedades. Tenemos que huir de sinónimos, jergas y motes. El «bueno, ya me has entendido» no nos vale. Si surge un concepto de negocio, consensuamos una definición para este. Si surge una nueva palabra para referirnos a ese concepto de negocio, la descartamos o sustituimos la que teníamos. Nunca utilizamos la misma palabra para dos conceptos, ni dos palabras para un mismo concepto. De esta manera propiciamos el lenguaje ubicuo, pilar en el desarrollo de software.\n\n¿Cuántas veces has visto parar un desarrollo por no tener claro qué ocurre en un escenario concreto? ¿Cuántas mañanas has perdido entre emails, llamadas y chats para aclarar una duda? ¿Te ha tocado ejercer de aguafiestas al tener que decir que un diseño es demasiado costoso (si no imposible) de implementar? ¿Has ejecutado una solución creyendo que podía haber sido mejor, sin tener posibilidad de cambiarla? Miren hace un gesto de complicidad. Lo ha vivido, ha estado ahí. Lo ha sufrido.\n\nAquello que Miren ha sufrido tiene nombre: aprendizaje accidental. El aprendizaje accidental es aquel que ocurre sin esperarlo, cuando todo debería estar claro. Nos frena, nos hace ser ineficientes y genera frustración en el equipo. Contra el aprendizaje accidental tenemos el aprendizaje deliberado, aquel que ocurre cuando todas las personas implicadas en el proyecto se alinean para entender cuál es la necesidad que se quiere cubrir. Solo así podemos sacar partido al verdadero potencial del equipo. Solo así podremos centrarnos en la entrega de valor.\n\nEl tiempo avanza, las transparencias se terminan y toca ponerse manos a la obra. Antes de eso, queda ver cómo llevar a la práctica estos principios de los que hemos hablado. Explicamos que, en uno de nuestros proyectos en Biko, nos está funcionando el enfoque [Specification by Example](https://en.wikipedia.org/wiki/Specification_by_example#:~:text=Specification%20by%20example%20(SBE)%20is,examples%20instead%20of%20abstract%20statements.) que llevamos a cabo en talleres de Example Mapping. Explicamos en qué consisten (nota del autor: daría para otro post).\n\nArrancamos la práctica: Miren y su equipo harán un taller de Example Mapping para una aplicación en la que Rubén y yo asumimos el rol de negocio. No olvidemos los principios de los que hemos hablado: dominio del problema, evitar las ambigüedades y aprendizaje deliberado. Miren los tiene apuntados en su cuaderno, empiezan las conversaciones.\n\nDurante el ejercicio, ocurre algo que Rubén y yo no esperamos. En el taller, el equipo de Miren descubre que nuestro planteamiento permite a algunas personas generar gastos de miles de euros. La idea con la que veníamos no solo no es la mejor posible, sino que puede hundirnos. Menos mal que Miren ha sabido evitarlo, proponiendo una nueva regla que hará que esto no ocurra. Como negocio nos parece bien, muchas gracias y adelante, buen trabajo.\n\nMiren todavía no ha encendido su portátil. En ese momento entiende que, con un bolígrafo y un papel, ha aportado más valor del que hubiera aportado en mil líneas de código. Descubre que, su perfil de frontend developer, va mucho más allá de ejecutar una solución, de implementar un diseño. Su trabajo no es el código, el código es un resultado de su trabajo. Su responsabilidad es entender el negocio y hacerlo suyo.\n\nNosotros también nos llevamos una lección. Han pillado a Rubén y Aitor, ¿cómo puede ser? Bueno, no pasa nada, siempre podemos darle una vuelta para futuras ediciones del curso. Aunque, pensándolo mejor, creo que está bien así.\n\n## Si quieres profundizar en el tema\n\nPuedes [buscarme en Twitter](https://twitter.com/aitorcurrutia) o [buscar a Rubén](https://twitter.com/rubenbpv), gran conocedor de este enfoque. También te recomiendo [el libro «The BDD Books - Discovery» escrito por Gáspár Nagy y Seb Rose](https://leanpub.com/bddbooks-discovery). Lectura interesante, llena de ejemplos prácticos y anécdotas vividas por los autores.","posts/hay-algo-de-negocio-en-tu-codigo.md",[157],"../assets/hay-algo-de-negocio-en-tu-codigo/arrival.jpg","20fbafd03b9cf167",{"html":160,"metadata":161},"\u003Cp>\u003Cem>\u003Cem>Oharra: Honako hau, Biko2 enpresan lan egiten nuenean haien blogean idatzitako artikulu bat da. \u003Ca href=\"https://blog.biko2.com/actualidad-biko/hay-algo-de-negocio-en-tu-codigo-algunas-ideas-para-la-entrega-de-valor/\">Iturria (funtzionatzen duen arte)\u003C/a>.\u003C/em>\u003C/em>\u003C/p>\n\u003Chr>\n\u003Cp>\u003Cimg __ASTRO_IMAGE_=\"{"src":"../assets/hay-algo-de-negocio-en-tu-codigo/arrival.jpg","alt":"Shaun Tan ilustratzailearen \\"The Arrival\\" liburuan oinarritutako nik egindako marrazki bat. Eraikin handi batzuk ikusten dira eta, behean, familia bat (aita, ama eta alaba) kale erdian. Eraikinen artean, olagarroen tentakulo batzuk daude.","index":0}\">\u003C/p>\n\u003Cp>Es sábado por la mañana y Miren, frontend developer, entra a clase en nuestro Curso de Desarrollo de Software. El plan del día no es el esperado en un curso que promete ser técnico: Rubén y yo dinamizaremos una sesión sobre definición de historias de usuario. Como es habitual en la Biko School, abrimos boca con una introducción teórica para, acto seguido, poner en práctica lo aprendido.\u003C/p>\n\u003Cp>Empezamos explicando que, para hacer bien nuestro trabajo, es fundamental un profundo conocimiento del negocio. En vez de limitarnos a ejecutar una solución, debemos participar en la definición de esta. Para ello, es necesaria una conversación entre las personas implicadas en el proyecto, desde perfiles de negocio hasta perfiles de desarrollo. Una conversación que se da en el dominio del problema, ahí donde solo se habla de las necesidades de la persona que utiliza nuestro software. Una vez entendidas estas necesidades es cuando pasamos al dominio de la solución, donde se definen y dibujan formularios, tablas y llamadas al API.\u003C/p>\n\u003Cp>Esta conversación sobre las necesidades debe estar exenta de ambigüedades. Tenemos que huir de sinónimos, jergas y motes. El «bueno, ya me has entendido» no nos vale. Si surge un concepto de negocio, consensuamos una definición para este. Si surge una nueva palabra para referirnos a ese concepto de negocio, la descartamos o sustituimos la que teníamos. Nunca utilizamos la misma palabra para dos conceptos, ni dos palabras para un mismo concepto. De esta manera propiciamos el lenguaje ubicuo, pilar en el desarrollo de software.\u003C/p>\n\u003Cp>¿Cuántas veces has visto parar un desarrollo por no tener claro qué ocurre en un escenario concreto? ¿Cuántas mañanas has perdido entre emails, llamadas y chats para aclarar una duda? ¿Te ha tocado ejercer de aguafiestas al tener que decir que un diseño es demasiado costoso (si no imposible) de implementar? ¿Has ejecutado una solución creyendo que podía haber sido mejor, sin tener posibilidad de cambiarla? Miren hace un gesto de complicidad. Lo ha vivido, ha estado ahí. Lo ha sufrido.\u003C/p>\n\u003Cp>Aquello que Miren ha sufrido tiene nombre: aprendizaje accidental. El aprendizaje accidental es aquel que ocurre sin esperarlo, cuando todo debería estar claro. Nos frena, nos hace ser ineficientes y genera frustración en el equipo. Contra el aprendizaje accidental tenemos el aprendizaje deliberado, aquel que ocurre cuando todas las personas implicadas en el proyecto se alinean para entender cuál es la necesidad que se quiere cubrir. Solo así podemos sacar partido al verdadero potencial del equipo. Solo así podremos centrarnos en la entrega de valor.\u003C/p>\n\u003Cp>El tiempo avanza, las transparencias se terminan y toca ponerse manos a la obra. Antes de eso, queda ver cómo llevar a la práctica estos principios de los que hemos hablado. Explicamos que, en uno de nuestros proyectos en Biko, nos está funcionando el enfoque \u003Ca href=\"https://en.wikipedia.org/wiki/Specification_by_example#:~:text=Specification%20by%20example%20(SBE)%20is,examples%20instead%20of%20abstract%20statements.\">Specification by Example\u003C/a> que llevamos a cabo en talleres de Example Mapping. Explicamos en qué consisten (nota del autor: daría para otro post).\u003C/p>\n\u003Cp>Arrancamos la práctica: Miren y su equipo harán un taller de Example Mapping para una aplicación en la que Rubén y yo asumimos el rol de negocio. No olvidemos los principios de los que hemos hablado: dominio del problema, evitar las ambigüedades y aprendizaje deliberado. Miren los tiene apuntados en su cuaderno, empiezan las conversaciones.\u003C/p>\n\u003Cp>Durante el ejercicio, ocurre algo que Rubén y yo no esperamos. En el taller, el equipo de Miren descubre que nuestro planteamiento permite a algunas personas generar gastos de miles de euros. La idea con la que veníamos no solo no es la mejor posible, sino que puede hundirnos. Menos mal que Miren ha sabido evitarlo, proponiendo una nueva regla que hará que esto no ocurra. Como negocio nos parece bien, muchas gracias y adelante, buen trabajo.\u003C/p>\n\u003Cp>Miren todavía no ha encendido su portátil. En ese momento entiende que, con un bolígrafo y un papel, ha aportado más valor del que hubiera aportado en mil líneas de código. Descubre que, su perfil de frontend developer, va mucho más allá de ejecutar una solución, de implementar un diseño. Su trabajo no es el código, el código es un resultado de su trabajo. Su responsabilidad es entender el negocio y hacerlo suyo.\u003C/p>\n\u003Cp>Nosotros también nos llevamos una lección. Han pillado a Rubén y Aitor, ¿cómo puede ser? Bueno, no pasa nada, siempre podemos darle una vuelta para futuras ediciones del curso. Aunque, pensándolo mejor, creo que está bien así.\u003C/p>\n\u003Ch2 id=\"si-quieres-profundizar-en-el-tema\">Si quieres profundizar en el tema\u003C/h2>\n\u003Cp>Puedes \u003Ca href=\"https://twitter.com/aitorcurrutia\">buscarme en Twitter\u003C/a> o \u003Ca href=\"https://twitter.com/rubenbpv\">buscar a Rubén\u003C/a>, gran conocedor de este enfoque. También te recomiendo \u003Ca href=\"https://leanpub.com/bddbooks-discovery\">el libro «The BDD Books - Discovery» escrito por Gáspár Nagy y Seb Rose\u003C/a>. Lectura interesante, llena de ejemplos prácticos y anécdotas vividas por los autores.\u003C/p>",{"headings":162,"localImagePaths":166,"remoteImagePaths":167,"frontmatter":168,"imagePaths":170},[163],{"depth":51,"slug":164,"text":165},"si-quieres-profundizar-en-el-tema","Si quieres profundizar en el tema",[157],[],{"title":149,"slug":146,"description":150,"tags":169,"added":151},[153],[157],"hello-world",{"id":171,"data":173,"body":179,"filePath":180,"digest":181,"rendered":182},{"title":174,"slug":171,"description":175,"added":176,"updated":177,"tags":178},"Kaixo, Mundua!","Horrela hasten dira proiektu guztiak frikion unibertsoan.","2025-11-3","2025-11-4",[18],"Kaixo, Mundua! Horrela hasten dira proiektu guztiak frikion unibertsoan. Nik nire proiektu hau horrela hasiko dut eta esdakitpero dut, gerora, jarraipena ematea. Nire blogarekin nator, edo nire interneteko txokoarekin, edo nire lorategi digitalarekin. Edonola ere, korporazio teknokapitalisten atzaparretatik urrun mantenduz, nire pedradak, katxarreoak, eta abar luze bat partekatzeko asmoz sortu dut blog hau.\n\nEz dakit nora joango den proiektutxo hau eta zein izango den bere etorkizuna, baina bidezkoa da nondik datorren adieraztea. Izan ere, [Cassidy Williamsen](https://cassidoo.co/) bloga ezaguna nuen eta, [Astron](https://astro.build) egina zegoela eta MIT lizentzia erabiltzen zuela ikusi nuenean, software librearen printzipioei men eginez, fork bat egin eta nire beharretara egokitu nuen. Ez dut uste hau irakurriko duzunik, Cassidy, baina eskerrik asko! 💚","posts/hello-world.md","9df26a0b44f9746c",{"html":183,"metadata":184},"\u003Cp>Kaixo, Mundua! Horrela hasten dira proiektu guztiak frikion unibertsoan. Nik nire proiektu hau horrela hasiko dut eta esdakitpero dut, gerora, jarraipena ematea. Nire blogarekin nator, edo nire interneteko txokoarekin, edo nire lorategi digitalarekin. Edonola ere, korporazio teknokapitalisten atzaparretatik urrun mantenduz, nire pedradak, katxarreoak, eta abar luze bat partekatzeko asmoz sortu dut blog hau.\u003C/p>\n\u003Cp>Ez dakit nora joango den proiektutxo hau eta zein izango den bere etorkizuna, baina bidezkoa da nondik datorren adieraztea. Izan ere, \u003Ca href=\"https://cassidoo.co/\">Cassidy Williamsen\u003C/a> bloga ezaguna nuen eta, \u003Ca href=\"https://astro.build\">Astron\u003C/a> egina zegoela eta MIT lizentzia erabiltzen zuela ikusi nuenean, software librearen printzipioei men eginez, fork bat egin eta nire beharretara egokitu nuen. Ez dut uste hau irakurriko duzunik, Cassidy, baina eskerrik asko! 💚\u003C/p>",{"headings":185,"localImagePaths":186,"remoteImagePaths":187,"frontmatter":188,"imagePaths":190},[],[],[],{"title":174,"slug":171,"description":175,"tags":189,"added":176,"updated":177},[18],[],"lorategi-digitalak",{"id":191,"data":193,"body":198,"filePath":199,"digest":200,"rendered":201},{"title":194,"slug":191,"description":195,"added":196,"tags":197},"Lorategi digitalak","Nire lorategi digitalei buruzko ikuspegia.","2026-1-24",[18],"Lorategi digital guztiek daukate lorategi digitalei buruzko sarrera bat. Lorategiaren analogiari jarraituz, esan daiteke sarrera hau belarra dela. Edo lurra, batzuetan emankorra, bestetan antzua, baina ezinbestekoa. Nik neuk mugimendu honi buruzko apunte batzuk jarri nahiko nituzke, inspiragarria suertatzen zaidalako eta honen parte izan nahi dudalako.\n\nLorategi digitalen testuinguru bat emateko, oso interesgarria da [Maggie Appletonek idatzitako artikulu hau](https://maggieappleton.com/garden-history). Funtsean, lorategi digital bat gure mobidak interneten jartzeko modu bat da. Blog baten antza du, baina hauekin duen ezberdintasun nagusia kaosa eta fintze faltan dago. Ideia da apunteak botatzen joatea (ereitea) eta, nahi dugun heinean, hauetara bueltatzea eta lantzen joatea. Algoritmoen eta biralizazioaren garaiari erantzun bat bezala ulertu daiteke. \n\n## Bidean aurkitutako hainbat lorategi digital\n\nHauek dira niretzat inspiragarri diren lorategi digital batzuk:\n\n- [Maggie Appleton](https://maggieappleton.com)\n- [Heydon Pickering](https://heydonworks.com/) \n- [Cassidy Williams](https://cassidoo.co/)\n- [Karlos G. Liberal (patxangas)](https://www.karlosgliberal.com/)","posts/lorategi-digitalak.md","1afc8dce4813ef1e",{"html":202,"metadata":203},"\u003Cp>Lorategi digital guztiek daukate lorategi digitalei buruzko sarrera bat. Lorategiaren analogiari jarraituz, esan daiteke sarrera hau belarra dela. Edo lurra, batzuetan emankorra, bestetan antzua, baina ezinbestekoa. Nik neuk mugimendu honi buruzko apunte batzuk jarri nahiko nituzke, inspiragarria suertatzen zaidalako eta honen parte izan nahi dudalako.\u003C/p>\n\u003Cp>Lorategi digitalen testuinguru bat emateko, oso interesgarria da \u003Ca href=\"https://maggieappleton.com/garden-history\">Maggie Appletonek idatzitako artikulu hau\u003C/a>. Funtsean, lorategi digital bat gure mobidak interneten jartzeko modu bat da. Blog baten antza du, baina hauekin duen ezberdintasun nagusia kaosa eta fintze faltan dago. Ideia da apunteak botatzen joatea (ereitea) eta, nahi dugun heinean, hauetara bueltatzea eta lantzen joatea. Algoritmoen eta biralizazioaren garaiari erantzun bat bezala ulertu daiteke.\u003C/p>\n\u003Ch2 id=\"bidean-aurkitutako-hainbat-lorategi-digital\">Bidean aurkitutako hainbat lorategi digital\u003C/h2>\n\u003Cp>Hauek dira niretzat inspiragarri diren lorategi digital batzuk:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://maggieappleton.com\">Maggie Appleton\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://heydonworks.com/\">Heydon Pickering\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://cassidoo.co/\">Cassidy Williams\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://www.karlosgliberal.com/\">Karlos G. Liberal (patxangas)\u003C/a>\u003C/li>\n\u003C/ul>",{"headings":204,"localImagePaths":208,"remoteImagePaths":209,"frontmatter":210,"imagePaths":212},[205],{"depth":51,"slug":206,"text":207},"bidean-aurkitutako-hainbat-lorategi-digital","Bidean aurkitutako hainbat lorategi digital",[],[],{"title":194,"slug":191,"description":195,"tags":211,"added":196},[18],[],"mamihlapinatapai",{"id":213,"data":215,"body":219,"filePath":220,"digest":221,"rendered":222},{"title":216,"slug":213,"description":217,"added":196,"tags":218},"Mamihlapinatapai","Yagan hizkuntzako hitz honek hainbat sekretu gordetzen ditu.",[18],"`Mamihlapinatapai` hitza, Suaren lurraldeko uharteetako [Yagan hizkuntzako](https://eu.wikipedia.org/wiki/Yagan_hizkuntza) hitz bat da. Berezitasun bat du, izan ere, Guiness munduko errekorren liburuan azaltzen da. Munduko hitzik laburrena da. Hau da, gutxirekin gehien esaten duena. Itzultzen oso zaila omen da, baina ni, itzultzailea ez naizen arren, [gaztelerako Wikipediatik](https://es.wikipedia.org/wiki/Mamihlapinatapai) itzultzen saiatuko naiz:\n\n> Bi pertsonen arteko begirada, bakoitzak espero duenean besteak biek nahi duten ekintza bat hastea, baina bietako inor hastera animatzen ez denean.\n\n2022ko otsailaren 16an hil zen, 93 urterekin, [Cristina Calderón](https://eu.wikipedia.org/wiki/Cristina_Calder%C3%B3n). Hau izan da Yagan hizkuntzak izan duen azken hiztuna. Bere ahizpa Ursula 2003an hil zenetik, ez zuen norekin hizkuntza horretan hitz egin. Ezin zion inori mamihlapinatapai esan, berarengandik kilometro batzuetara Emelinda Acuñak ere hitz egiten zuen arren. Edonola ere, Emelinda 2012an zendu zen eta, 2022 arte, Cristina izan zen hiztun bakarra.","posts/mamihlapinatapai.md","e77d929bc69ad40d",{"html":223,"metadata":224},"\u003Cp>\u003Ccode>Mamihlapinatapai\u003C/code> hitza, Suaren lurraldeko uharteetako \u003Ca href=\"https://eu.wikipedia.org/wiki/Yagan_hizkuntza\">Yagan hizkuntzako\u003C/a> hitz bat da. Berezitasun bat du, izan ere, Guiness munduko errekorren liburuan azaltzen da. Munduko hitzik laburrena da. Hau da, gutxirekin gehien esaten duena. Itzultzen oso zaila omen da, baina ni, itzultzailea ez naizen arren, \u003Ca href=\"https://es.wikipedia.org/wiki/Mamihlapinatapai\">gaztelerako Wikipediatik\u003C/a> itzultzen saiatuko naiz:\u003C/p>\n\u003Cblockquote>\n\u003Cp>Bi pertsonen arteko begirada, bakoitzak espero duenean besteak biek nahi duten ekintza bat hastea, baina bietako inor hastera animatzen ez denean.\u003C/p>\n\u003C/blockquote>\n\u003Cp>2022ko otsailaren 16an hil zen, 93 urterekin, \u003Ca href=\"https://eu.wikipedia.org/wiki/Cristina_Calder%C3%B3n\">Cristina Calderón\u003C/a>. Hau izan da Yagan hizkuntzak izan duen azken hiztuna. Bere ahizpa Ursula 2003an hil zenetik, ez zuen norekin hizkuntza horretan hitz egin. Ezin zion inori mamihlapinatapai esan, berarengandik kilometro batzuetara Emelinda Acuñak ere hitz egiten zuen arren. Edonola ere, Emelinda 2012an zendu zen eta, 2022 arte, Cristina izan zen hiztun bakarra.\u003C/p>",{"headings":225,"localImagePaths":226,"remoteImagePaths":227,"frontmatter":228,"imagePaths":230},[],[],[],{"title":216,"slug":213,"description":217,"tags":229,"added":196},[18],[],"musika-bilduma-streameatu",{"id":231,"data":233,"body":238,"filePath":239,"digest":240,"rendered":241},{"title":234,"slug":231,"description":235,"added":236,"tags":237},"Gure musika bilduma gure sarean streameatzeko proposamen bat","Sareetan azaltzen den #despotify mugimendua jarraitzeko modu bat, Navidrome eta Metadata Remote erabilita.","2026-1-8",[66],"Etxean, denbora daramagu musika [Qobuz](https://www.qobuz.com/es-es/discover) plataformaren bidez entzuten. Kalitate ona eskaintzen du, artistak ongi tratatzen dituela dirudi, ez du adimen artifizial generatiboak sortutako musikarik sartzen eta, batez ere, [jabeek ez dute genozidioan inbertitzen](https://www.berria.eus/kultura/euskal-herriko-162-musika-taldek-utzi-dute-spotify-musikariak-palestinarekin-egitasmoarekin-bat-eginda_2150132_102.html). Edonola ere, [#despotify](https://redesnuestras.net/2024/12/31/una-propuesta-para-convertir-en-proposito-de-ano-nuevo-despotify/) ideiarekin kutsatuta, aurrekoan etxean alternatiba propio bat montatzeko aukerak aztertzen egon nintzen. Ikasteko asmoz edo, Qobuz [kakazten denean](https://teknopata.eus/2024/02/kakaztea-enshittification-1-zer-da), prest egoteko.\n\nHau egiteko, Raspberry Pi gailu bat erabili dut eta, zerbitzari aldean erabilitako software guztiak, Docker edukiontzietan sartu ditut. Hurrengo lerroetan nik frogatutako *stack*-ean sakonduko dut, baina, laburbilduz, hauek dira erabilitako aplikazioak (guztiak *Open Source* proiektuak dira):\n\n- [Navidrone](https://www.navidrome.org/): Raspberry Pi-an dagoen musika streaming bidez zerbitzatzeko.\n- [Metadata Remote](https://github.com/wow-signal-dev/metadata-remote): Musika bilduma ordenatzeko eta disken karatulak sartzeko.\n- [Chora](https://github.com/CraftWorksMC/Chora): Musika bilduma mugikorretik gozatzeko.\n\n## Navidrome: musika zerbitzaria\n\nNavidromeren funtzio nagusia, zerbitzari batean daukagun musika bilduma web nabigatzaile baten bidez entzutea da. Honetaz gain, [Subsonic API](https://www.subsonic.org/pages/api.jsp)-a baliatuta, gure musika bilduma edozein gailutan entzuteko aukera ematen du.\n\nInstalatzeko, lehen esan bezala, [Docker edukiontziaren](https://www.navidrome.org/docs/installation/docker/) estrategia jarraitu dut. Hau horrela egin dut, nire Raspberry Pi honetan hainbat zerbitzu dauzkadalako eta, modu honetan, guztia enkapsulatuta mantendu dezakedalako. Docker bidezko instalazioa, sistema hau pixkatxo bat manejatzen baduzu, oso erraza da. Kontutan izan beharreko gauza nagusia, zure musika liburutegia non dagoen apuntatzea da. Beste guztia, Docker irudiak egingo du.\n\n## Metadata Remote: bildumaren kudeaketa\n\nTontakeri bat badirudi ere, hau izan da buruhauste gehien ekarri didana. Navidromek, [fitxategien metadatuak erabiltzen ditu kanta eta diska guztien informazioa erakusteko](https://www.navidrome.org/docs/usage/library/). Hau da, Navidromek ez du zure bilduma ordenatuta mantentzeko aukerarik ematen. Honek, fitxategien metadatuak kudeatzeko sistema bat bilatzera behartzen gaitu.\n\nHelburu hau betetzeko hainbat aplikazio interesgarri daude, baina, nik aurkitutako guztiek behintzat, lokalean dauden fitxategiekin besterik ez dute funtzionatzen. Sareetan ikusitako hainbat aukera frogatu ondoren, [Metadata Remote](https://github.com/wow-signal-dev/metadata-remote) topatu nuen. Aplikazio honek, Github errepositorioaren README-ak ongi azaltzen duen bezala, zerbitzari bateko fitxategien metadatuak web nabigatzaile baten bidez kudeatzeko aukera ematen du.\n\n## Gure musika bilduma edonora eramateko\n\nGaur egun, gure musika etxean eskuragarri izatea, ez da nahikoa. Lanera biderako autobusean, kotxean, kalean, etab. mugikorrean entzun ahal izatea ia ezinbestekoa da pertsona askorentzat. Horretarako, bi gauza lortu beharko ditugu: mugikorretik etxeko sarera konektatzea eta mugikorrean gure liburutegia entzuteko aplikazio bat izatea.\n\n### Sarerako konexioa\n\nBeste sarrera batean azaltzen nuen bezala, [nire Raspberry Pi zerbitzarian VPN bat konfiguratu nuen, PiVPN baliatuta](/post/pi-hole-pivpn). Honi esker, nire mugikorrean VPN hau aktibatzen dudanean, nire sareko zerbitzu guztiak erabili ditzaket, etxean banego bezala.\n\n### Mugikorrerako aplikazioa\n\nPosible da mugikorreko web nabigatzailetik, Navidrome zerbitzarira jotzen dugunean, gure musika mugikorretik entzutea. Hala ere, erosoagoa da beti musika entzuteko aplikazio natibo bat erabiltzea, kontrolak eskura izateko, edota mugikorra blokeatzerakoan entzuten jarraitzeko. \n\nNavidromek, bere webgunean, [bezero zerrenda bat eskaintzen du](https://www.navidrome.org/apps/). Hauetatik, Android mugikorrentzako ospetsuena [Symfonium](https://symfonium.app/) da. Onartu beharra dago, nire ustez behintzat, Symfonium dela aplikazio garbiena eta aukera gehien ematen duena, baina, bere \"arazo\" nagusia, ordaintzera behartzen duela da. Oker ez banago, 5-6 € ordaintzearekin bizitza osorako lizentzia eskuratu dezakegu, beraz, ez da oso garestia. Nire musika entzuteko modu bakarra sarrera honetan azaldutakoa balitz, dudarik gabe ordainduko nuke.\n\nEdonola ere, akaso gauza kulturala da, baina asko kostatzen zait aplikazioengatik ordaintzea. Horregatik, alternatiba batzuk aztertu nituen. Doako Open Source aplikazio interesgarri asko aurki daitezke, baina, niri gehien konbentzitu didana, [Chora](https://github.com/CraftWorksMC/Chora) da. Xinplea da, interfaze garbi batekin eta, batez ere, Play Store-an dago. Honek, asko errazten du nire bilduma gertuko edonork entzutea.","posts/musika-bilduma-streameatu.md","7e478b45c52415e5",{"html":242,"metadata":243},"\u003Cp>Etxean, denbora daramagu musika \u003Ca href=\"https://www.qobuz.com/es-es/discover\">Qobuz\u003C/a> plataformaren bidez entzuten. Kalitate ona eskaintzen du, artistak ongi tratatzen dituela dirudi, ez du adimen artifizial generatiboak sortutako musikarik sartzen eta, batez ere, \u003Ca href=\"https://www.berria.eus/kultura/euskal-herriko-162-musika-taldek-utzi-dute-spotify-musikariak-palestinarekin-egitasmoarekin-bat-eginda_2150132_102.html\">jabeek ez dute genozidioan inbertitzen\u003C/a>. Edonola ere, \u003Ca href=\"https://redesnuestras.net/2024/12/31/una-propuesta-para-convertir-en-proposito-de-ano-nuevo-despotify/\">#despotify\u003C/a> ideiarekin kutsatuta, aurrekoan etxean alternatiba propio bat montatzeko aukerak aztertzen egon nintzen. Ikasteko asmoz edo, Qobuz \u003Ca href=\"https://teknopata.eus/2024/02/kakaztea-enshittification-1-zer-da\">kakazten denean\u003C/a>, prest egoteko.\u003C/p>\n\u003Cp>Hau egiteko, Raspberry Pi gailu bat erabili dut eta, zerbitzari aldean erabilitako software guztiak, Docker edukiontzietan sartu ditut. Hurrengo lerroetan nik frogatutako \u003Cem>stack\u003C/em>-ean sakonduko dut, baina, laburbilduz, hauek dira erabilitako aplikazioak (guztiak \u003Cem>Open Source\u003C/em> proiektuak dira):\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://www.navidrome.org/\">Navidrone\u003C/a>: Raspberry Pi-an dagoen musika streaming bidez zerbitzatzeko.\u003C/li>\n\u003Cli>\u003Ca href=\"https://github.com/wow-signal-dev/metadata-remote\">Metadata Remote\u003C/a>: Musika bilduma ordenatzeko eta disken karatulak sartzeko.\u003C/li>\n\u003Cli>\u003Ca href=\"https://github.com/CraftWorksMC/Chora\">Chora\u003C/a>: Musika bilduma mugikorretik gozatzeko.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"navidrome-musika-zerbitzaria\">Navidrome: musika zerbitzaria\u003C/h2>\n\u003Cp>Navidromeren funtzio nagusia, zerbitzari batean daukagun musika bilduma web nabigatzaile baten bidez entzutea da. Honetaz gain, \u003Ca href=\"https://www.subsonic.org/pages/api.jsp\">Subsonic API\u003C/a>-a baliatuta, gure musika bilduma edozein gailutan entzuteko aukera ematen du.\u003C/p>\n\u003Cp>Instalatzeko, lehen esan bezala, \u003Ca href=\"https://www.navidrome.org/docs/installation/docker/\">Docker edukiontziaren\u003C/a> estrategia jarraitu dut. Hau horrela egin dut, nire Raspberry Pi honetan hainbat zerbitzu dauzkadalako eta, modu honetan, guztia enkapsulatuta mantendu dezakedalako. Docker bidezko instalazioa, sistema hau pixkatxo bat manejatzen baduzu, oso erraza da. Kontutan izan beharreko gauza nagusia, zure musika liburutegia non dagoen apuntatzea da. Beste guztia, Docker irudiak egingo du.\u003C/p>\n\u003Ch2 id=\"metadata-remote-bildumaren-kudeaketa\">Metadata Remote: bildumaren kudeaketa\u003C/h2>\n\u003Cp>Tontakeri bat badirudi ere, hau izan da buruhauste gehien ekarri didana. Navidromek, \u003Ca href=\"https://www.navidrome.org/docs/usage/library/\">fitxategien metadatuak erabiltzen ditu kanta eta diska guztien informazioa erakusteko\u003C/a>. Hau da, Navidromek ez du zure bilduma ordenatuta mantentzeko aukerarik ematen. Honek, fitxategien metadatuak kudeatzeko sistema bat bilatzera behartzen gaitu.\u003C/p>\n\u003Cp>Helburu hau betetzeko hainbat aplikazio interesgarri daude, baina, nik aurkitutako guztiek behintzat, lokalean dauden fitxategiekin besterik ez dute funtzionatzen. Sareetan ikusitako hainbat aukera frogatu ondoren, \u003Ca href=\"https://github.com/wow-signal-dev/metadata-remote\">Metadata Remote\u003C/a> topatu nuen. Aplikazio honek, Github errepositorioaren README-ak ongi azaltzen duen bezala, zerbitzari bateko fitxategien metadatuak web nabigatzaile baten bidez kudeatzeko aukera ematen du.\u003C/p>\n\u003Ch2 id=\"gure-musika-bilduma-edonora-eramateko\">Gure musika bilduma edonora eramateko\u003C/h2>\n\u003Cp>Gaur egun, gure musika etxean eskuragarri izatea, ez da nahikoa. Lanera biderako autobusean, kotxean, kalean, etab. mugikorrean entzun ahal izatea ia ezinbestekoa da pertsona askorentzat. Horretarako, bi gauza lortu beharko ditugu: mugikorretik etxeko sarera konektatzea eta mugikorrean gure liburutegia entzuteko aplikazio bat izatea.\u003C/p>\n\u003Ch3 id=\"sarerako-konexioa\">Sarerako konexioa\u003C/h3>\n\u003Cp>Beste sarrera batean azaltzen nuen bezala, \u003Ca href=\"/post/pi-hole-pivpn\">nire Raspberry Pi zerbitzarian VPN bat konfiguratu nuen, PiVPN baliatuta\u003C/a>. Honi esker, nire mugikorrean VPN hau aktibatzen dudanean, nire sareko zerbitzu guztiak erabili ditzaket, etxean banego bezala.\u003C/p>\n\u003Ch3 id=\"mugikorrerako-aplikazioa\">Mugikorrerako aplikazioa\u003C/h3>\n\u003Cp>Posible da mugikorreko web nabigatzailetik, Navidrome zerbitzarira jotzen dugunean, gure musika mugikorretik entzutea. Hala ere, erosoagoa da beti musika entzuteko aplikazio natibo bat erabiltzea, kontrolak eskura izateko, edota mugikorra blokeatzerakoan entzuten jarraitzeko.\u003C/p>\n\u003Cp>Navidromek, bere webgunean, \u003Ca href=\"https://www.navidrome.org/apps/\">bezero zerrenda bat eskaintzen du\u003C/a>. Hauetatik, Android mugikorrentzako ospetsuena \u003Ca href=\"https://symfonium.app/\">Symfonium\u003C/a> da. Onartu beharra dago, nire ustez behintzat, Symfonium dela aplikazio garbiena eta aukera gehien ematen duena, baina, bere “arazo” nagusia, ordaintzera behartzen duela da. Oker ez banago, 5-6 € ordaintzearekin bizitza osorako lizentzia eskuratu dezakegu, beraz, ez da oso garestia. Nire musika entzuteko modu bakarra sarrera honetan azaldutakoa balitz, dudarik gabe ordainduko nuke.\u003C/p>\n\u003Cp>Edonola ere, akaso gauza kulturala da, baina asko kostatzen zait aplikazioengatik ordaintzea. Horregatik, alternatiba batzuk aztertu nituen. Doako Open Source aplikazio interesgarri asko aurki daitezke, baina, niri gehien konbentzitu didana, \u003Ca href=\"https://github.com/CraftWorksMC/Chora\">Chora\u003C/a> da. Xinplea da, interfaze garbi batekin eta, batez ere, Play Store-an dago. Honek, asko errazten du nire bilduma gertuko edonork entzutea.\u003C/p>",{"headings":244,"localImagePaths":260,"remoteImagePaths":261,"frontmatter":262,"imagePaths":264},[245,248,251,254,257],{"depth":51,"slug":246,"text":247},"navidrome-musika-zerbitzaria","Navidrome: musika zerbitzaria",{"depth":51,"slug":249,"text":250},"metadata-remote-bildumaren-kudeaketa","Metadata Remote: bildumaren kudeaketa",{"depth":51,"slug":252,"text":253},"gure-musika-bilduma-edonora-eramateko","Gure musika bilduma edonora eramateko",{"depth":135,"slug":255,"text":256},"sarerako-konexioa","Sarerako konexioa",{"depth":135,"slug":258,"text":259},"mugikorrerako-aplikazioa","Mugikorrerako aplikazioa",[],[],{"title":234,"slug":231,"description":235,"tags":263,"added":236},[66],[],"oscilloscope-music",{"id":265,"data":267,"body":273,"filePath":274,"digest":275,"rendered":276},{"title":268,"slug":265,"description":269,"added":270,"updated":271,"tags":272},"Oscilloscope Music","Oscilloscope Music musika generoa aurkitu nuenekoa.","2026-1-21","2026-1-22",[18],"Asteazken arratsalde lasai bat zen. Hurrengo egunerako bazkaria prestatu ondoren eta laneko kontu batzuk amaituta, fedibertsoan paseotxo bat eman nuen. Halako batean, hurrengo post-a topatu nuen Mastodon-en, [`#genuary`](https://genuary.art/) mugimendua kuxkuxeatzen ari nintzela.\n\n\u003Cdiv style=\"display:flex; justify-content:center;width:100%;\">\n\u003Cblockquote class=\"mastodon-embed\" data-embed-url=\"https://chaos.social/@kbob/115934481990210933/embed\" style=\"background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; width: 100%; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;\"> \u003Ca href=\"https://chaos.social/@kbob/115934481990210933\" target=\"_blank\" style=\"align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;\"> \u003Csvg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"32\" height=\"32\" viewBox=\"0 0 79 75\">\u003Cpath d=\"M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z\" fill=\"currentColor\"/>\u003C/svg> \u003Cdiv style=\"color: #787588; margin-top: 16px;\">Post by @kbob@chaos.social\u003C/div> \u003Cdiv style=\"font-weight: 500;\">View on Mastodon\u003C/div> \u003C/a> \u003C/blockquote> \u003Cscript data-allowed-prefixes=\"https://chaos.social/\" async src=\"https://chaos.social/embed.js\">\u003C/script>\n\u003C/div>\n\n\nNire burua untxi-gordeleku batean ikusi nuen. Izan ere, [\"Oscilloscope Music\"](https://oscilloscopemusic.com/watch/n-spheres) genero audiobisuala topatu nuen. Ideia xinplea da: osziloskopioan irudi interesgarriak sortuko duen musika konposatzea. Aurrerago jarritako webgunean, horrela definitzen da:\n\n> Oscilloscope Music is audiovisual music, where the visuals are drawn by the sound. In order to get the closest possible correlation between image and sound, the exact same signal that is connected to the left and right speakers is also connected to an analog oscilloscope's X and Y inputs, producing complex lissajous images.\n\n_Oscilloscope Music_ webgune hartan musika estilo hau egiteko software-a, paper-ak eta erreferentziak aurkitu daitezke. Honatx adibide bat. Pentsa bideoan ikusten dena osziloskopio bat dela:\n\n\u003Ciframe width=\"100%\" height=\"400px\" src=\"https://www.youtube-nocookie.com/embed/R9jOWIhZZCE?si=cLjXRuw72D2Jmt9h\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen>\u003C/iframe>\n\nHonen atzean dauden esfortzu eta sormenak txundituta utzi naute. Gainera, nire elektronika ingeniaritza garaietara eramaten naute, osziloskopioaren aurrean orduak pasatzen nituen garaietara. Bonus bezala, izugarria iruditu zait albuma 3.5\" diskete formatuan saltzen dutela ikustea.","posts/oscilloscope-music.md","3ea9d862aa6661df",{"html":277,"metadata":278},"\u003Cp>Asteazken arratsalde lasai bat zen. Hurrengo egunerako bazkaria prestatu ondoren eta laneko kontu batzuk amaituta, fedibertsoan paseotxo bat eman nuen. Halako batean, hurrengo post-a topatu nuen Mastodon-en, \u003Ca href=\"https://genuary.art/\">\u003Ccode>#genuary\u003C/code>\u003C/a> mugimendua kuxkuxeatzen ari nintzela.\u003C/p>\n\u003Cdiv style=\"display:flex; justify-content:center;width:100%;\">\n\u003Cblockquote class=\"mastodon-embed\" data-embed-url=\"https://chaos.social/@kbob/115934481990210933/embed\" style=\"background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; width: 100%; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;\"> \u003Ca href=\"https://chaos.social/@kbob/115934481990210933\" target=\"_blank\" style=\"align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;\"> \u003Csvg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"32\" height=\"32\" viewBox=\"0 0 79 75\">\u003Cpath d=\"M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z\" fill=\"currentColor\">\u003C/path>\u003C/svg> \u003Cdiv style=\"color: #787588; margin-top: 16px;\">Post by @kbob@chaos.social\u003C/div> \u003Cdiv style=\"font-weight: 500;\">View on Mastodon\u003C/div> \u003C/a> \u003C/blockquote> \u003Cscript data-allowed-prefixes=\"https://chaos.social/\" async src=\"https://chaos.social/embed.js\">\u003C/script>\n\u003C/div>\n\u003Cp>Nire burua untxi-gordeleku batean ikusi nuen. Izan ere, \u003Ca href=\"https://oscilloscopemusic.com/watch/n-spheres\">“Oscilloscope Music”\u003C/a> genero audiobisuala topatu nuen. Ideia xinplea da: osziloskopioan irudi interesgarriak sortuko duen musika konposatzea. Aurrerago jarritako webgunean, horrela definitzen da:\u003C/p>\n\u003Cblockquote>\n\u003Cp>Oscilloscope Music is audiovisual music, where the visuals are drawn by the sound. In order to get the closest possible correlation between image and sound, the exact same signal that is connected to the left and right speakers is also connected to an analog oscilloscope’s X and Y inputs, producing complex lissajous images.\u003C/p>\n\u003C/blockquote>\n\u003Cp>\u003Cem>Oscilloscope Music\u003C/em> webgune hartan musika estilo hau egiteko software-a, paper-ak eta erreferentziak aurkitu daitezke. Honatx adibide bat. Pentsa bideoan ikusten dena osziloskopio bat dela:\u003C/p>\n\u003Ciframe width=\"100%\" height=\"400px\" src=\"https://www.youtube-nocookie.com/embed/R9jOWIhZZCE?si=cLjXRuw72D2Jmt9h\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen>\u003C/iframe>\n\u003Cp>Honen atzean dauden esfortzu eta sormenak txundituta utzi naute. Gainera, nire elektronika ingeniaritza garaietara eramaten naute, osziloskopioaren aurrean orduak pasatzen nituen garaietara. Bonus bezala, izugarria iruditu zait albuma 3.5” diskete formatuan saltzen dutela ikustea.\u003C/p>",{"headings":279,"localImagePaths":280,"remoteImagePaths":281,"frontmatter":282,"imagePaths":284},[],[],[],{"title":268,"slug":265,"description":269,"tags":283,"added":270,"updated":271},[18],[],"raspberry-pi-emulazioa",{"id":285,"data":287,"body":292,"filePath":293,"digest":294,"rendered":295},{"title":288,"slug":285,"description":289,"added":290,"tags":291},"Bideojokoak Raspberry Pi batean","Nola erabili Raspberry Pi gailu bat bideojokoak emulatzeko.","2026-1-25",[66],"_Oharra: WIP bat da hau, oso berde dago._\n\n---\n\nBikotea eta biok pote bat hartzen ari ginela, bigarren eskuko denda baten lehioan gelditu ginen. Bertan, hainbat bideo-kontsola \"retro\" zeuden salgai. Fantaseatzen hasi ginen, zeinen dibertigarria izango zen gaztetako bideojokoetara jostatzea. Etxeko kajoi batean _Raspberry Pi Model 3B+_ bat neukanez, emuladore bat instalatzea otu zitzaigun.\n\n## Raspberry Pi-rako emuladoreak\n\n\"Bitxeatzen\" hasi nintzenean, Raspberry Pi-an aintzinako bideojokoetara jolasteko ekosistema oparoa dagoela ikusi nuen. Polita da hau ikustea, baina, zer aukeratu? Ikusi nuenetik, hauek izan ziren, niretzat, aukerarik aipagarrienak.\n\n### RetroPie\n\n[RetroPie](https://retropie.org.uk/) izan zen nire lehen aukera, izan ere, hau zen ezagutzen nuen bakarra. Uste dut proiektu hau aitzindari izan dela kontu honekin eta, aspaldi, lankide batzuengandik izan nuen honen berri. Arazo handi bat du: 2022tik ez dela eguneratu.\n\n### Batocera\n\n[Batocera](https://batocera.org/) jokoen emulaziora bideratutako Linux distribuzio bat da. Nahikotxo eguneratzen da, interfaze ederra du eta oso erabilia da. Azkenean, hau da aukeratutako distribuzioa.\n\n## ROM-ak eskuratzeko\n\n- [/r/roms Megathread](https://r-roms.github.io/)","posts/raspberry-pi-emulazioa.md","eb0a102850424195",{"html":296,"metadata":297},"\u003Cp>\u003Cem>Oharra: WIP bat da hau, oso berde dago.\u003C/em>\u003C/p>\n\u003Chr>\n\u003Cp>Bikotea eta biok pote bat hartzen ari ginela, bigarren eskuko denda baten lehioan gelditu ginen. Bertan, hainbat bideo-kontsola “retro” zeuden salgai. Fantaseatzen hasi ginen, zeinen dibertigarria izango zen gaztetako bideojokoetara jostatzea. Etxeko kajoi batean \u003Cem>Raspberry Pi Model 3B+\u003C/em> bat neukanez, emuladore bat instalatzea otu zitzaigun.\u003C/p>\n\u003Ch2 id=\"raspberry-pi-rako-emuladoreak\">Raspberry Pi-rako emuladoreak\u003C/h2>\n\u003Cp>“Bitxeatzen” hasi nintzenean, Raspberry Pi-an aintzinako bideojokoetara jolasteko ekosistema oparoa dagoela ikusi nuen. Polita da hau ikustea, baina, zer aukeratu? Ikusi nuenetik, hauek izan ziren, niretzat, aukerarik aipagarrienak.\u003C/p>\n\u003Ch3 id=\"retropie\">RetroPie\u003C/h3>\n\u003Cp>\u003Ca href=\"https://retropie.org.uk/\">RetroPie\u003C/a> izan zen nire lehen aukera, izan ere, hau zen ezagutzen nuen bakarra. Uste dut proiektu hau aitzindari izan dela kontu honekin eta, aspaldi, lankide batzuengandik izan nuen honen berri. Arazo handi bat du: 2022tik ez dela eguneratu.\u003C/p>\n\u003Ch3 id=\"batocera\">Batocera\u003C/h3>\n\u003Cp>\u003Ca href=\"https://batocera.org/\">Batocera\u003C/a> jokoen emulaziora bideratutako Linux distribuzio bat da. Nahikotxo eguneratzen da, interfaze ederra du eta oso erabilia da. Azkenean, hau da aukeratutako distribuzioa.\u003C/p>\n\u003Ch2 id=\"rom-ak-eskuratzeko\">ROM-ak eskuratzeko\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://r-roms.github.io/\">/r/roms Megathread\u003C/a>\u003C/li>\n\u003C/ul>",{"headings":298,"localImagePaths":311,"remoteImagePaths":312,"frontmatter":313,"imagePaths":315},[299,302,305,308],{"depth":51,"slug":300,"text":301},"raspberry-pi-rako-emuladoreak","Raspberry Pi-rako emuladoreak",{"depth":135,"slug":303,"text":304},"retropie","RetroPie",{"depth":135,"slug":306,"text":307},"batocera","Batocera",{"depth":51,"slug":309,"text":310},"rom-ak-eskuratzeko","ROM-ak eskuratzeko",[],[],{"title":288,"slug":285,"description":289,"tags":314,"added":290},[66],[],"sayagata-bueltan-da",{"id":316,"data":318,"body":323,"filePath":324,"digest":325,"rendered":326},{"title":319,"slug":316,"description":320,"added":321,"tags":322},"Bueltan da sayagata proiektua","Sayagata proiektua berriro ere martxan jarri dut.","2026-1-4",[66],"Oker ez banago, 2018ko [Pamplona Software Crafters](https://pamplonaswcraft.com/) jardunaldian izan zen. Karlos g. liberalek, sareetan [patxangas](https://mastodon.eus/@patxangas@mastodon.social) ezizena hartzen duenak, arte generatiboari buruzko saio bat antolatu zuen, non [`p5js`](https://p5js.org/) erreminta erakutsi zigun. Honek unibertso bat ireki zidan, izan ere, alor teknologikoa (zehazki, nik hainbeste maite nuen programazioa) alor artistiko eta sortzailearekin uztartzeko aukera ematen zuen.\n\nHortik aurrera, nire kabuz, `p5js` erremintarekin jolasten hasi nintzen. Hainbat froga egin ondoren, motibazio guztiarekin, [sayagata](https://github.com/Txarli/sayagata) proiektua sortu nuen. [Sayagata](https://commons.wikimedia.org/wiki/Category:Sayagata), patroiak sortzeko japoniar tradizio bat da. Patroien kontzeptua gustoko nuen eta, hitzaren sonoritateak, maitemindu ninduen. Ez nion buelta askorik eman...\n\nEdonola ere, denbora luzez Github-en lotan egon ondoren, Sayagata proiektua berriz ere altxatu dut [sayagata.txarli.dev](https://sayagata.txarli.dev) URL-an. Bertan, ausazko nabigazio baten bitartez, nik sortutako patroi batzuk ikus daitezke. Patroi hauetako batzuk, [George Nees](https://en.wikipedia.org/wiki/Georg_Nees) edo [Vera Molnár](https://en.wikipedia.org/wiki/Vera_Moln%C3%A1r) artista generatiboen obretan *\"inspiratuta\"* daude. Beste batzuk, [Genuary](https://genuary.art/) taldeko jendeak proposatutako *prompt*-etan oinarritzen dira.\n\n## Etorkizunerako ildoak\n\nBehin hau martxan jarrita, hurrengoa egitea gustatuko litzaidake:\n\n- Interfazea hobetzea, batez ere, patroi ezberdinen arteko nabigazioa ahalbidetuz.\n- Patroi gehiago egitea. Hemen da Genuary 2026, ea zeozer egiten dudan!\n- Funtzionatzen duena ukitzea maite dudanez, tripak pixka bat eguneratzea gustatuko litzaidake. [Gatsby](https://www.gatsbyjs.com/) bertsio zahar bat erabiltzen du eta [Astro](https://astro.build/)-ra migratzea gustatuko litzaidake, patroi berriak sortzea errazteko.","posts/sayagata-bueltan-da.md","df0552f2fdc887fb",{"html":327,"metadata":328},"\u003Cp>Oker ez banago, 2018ko \u003Ca href=\"https://pamplonaswcraft.com/\">Pamplona Software Crafters\u003C/a> jardunaldian izan zen. Karlos g. liberalek, sareetan \u003Ca href=\"https://mastodon.eus/@patxangas@mastodon.social\">patxangas\u003C/a> ezizena hartzen duenak, arte generatiboari buruzko saio bat antolatu zuen, non \u003Ca href=\"https://p5js.org/\">\u003Ccode>p5js\u003C/code>\u003C/a> erreminta erakutsi zigun. Honek unibertso bat ireki zidan, izan ere, alor teknologikoa (zehazki, nik hainbeste maite nuen programazioa) alor artistiko eta sortzailearekin uztartzeko aukera ematen zuen.\u003C/p>\n\u003Cp>Hortik aurrera, nire kabuz, \u003Ccode>p5js\u003C/code> erremintarekin jolasten hasi nintzen. Hainbat froga egin ondoren, motibazio guztiarekin, \u003Ca href=\"https://github.com/Txarli/sayagata\">sayagata\u003C/a> proiektua sortu nuen. \u003Ca href=\"https://commons.wikimedia.org/wiki/Category:Sayagata\">Sayagata\u003C/a>, patroiak sortzeko japoniar tradizio bat da. Patroien kontzeptua gustoko nuen eta, hitzaren sonoritateak, maitemindu ninduen. Ez nion buelta askorik eman…\u003C/p>\n\u003Cp>Edonola ere, denbora luzez Github-en lotan egon ondoren, Sayagata proiektua berriz ere altxatu dut \u003Ca href=\"https://sayagata.txarli.dev\">sayagata.txarli.dev\u003C/a> URL-an. Bertan, ausazko nabigazio baten bitartez, nik sortutako patroi batzuk ikus daitezke. Patroi hauetako batzuk, \u003Ca href=\"https://en.wikipedia.org/wiki/Georg_Nees\">George Nees\u003C/a> edo \u003Ca href=\"https://en.wikipedia.org/wiki/Vera_Moln%C3%A1r\">Vera Molnár\u003C/a> artista generatiboen obretan \u003Cem>“inspiratuta”\u003C/em> daude. Beste batzuk, \u003Ca href=\"https://genuary.art/\">Genuary\u003C/a> taldeko jendeak proposatutako \u003Cem>prompt\u003C/em>-etan oinarritzen dira.\u003C/p>\n\u003Ch2 id=\"etorkizunerako-ildoak\">Etorkizunerako ildoak\u003C/h2>\n\u003Cp>Behin hau martxan jarrita, hurrengoa egitea gustatuko litzaidake:\u003C/p>\n\u003Cul>\n\u003Cli>Interfazea hobetzea, batez ere, patroi ezberdinen arteko nabigazioa ahalbidetuz.\u003C/li>\n\u003Cli>Patroi gehiago egitea. Hemen da Genuary 2026, ea zeozer egiten dudan!\u003C/li>\n\u003Cli>Funtzionatzen duena ukitzea maite dudanez, tripak pixka bat eguneratzea gustatuko litzaidake. \u003Ca href=\"https://www.gatsbyjs.com/\">Gatsby\u003C/a> bertsio zahar bat erabiltzen du eta \u003Ca href=\"https://astro.build/\">Astro\u003C/a>-ra migratzea gustatuko litzaidake, patroi berriak sortzea errazteko.\u003C/li>\n\u003C/ul>",{"headings":329,"localImagePaths":333,"remoteImagePaths":334,"frontmatter":335,"imagePaths":337},[330],{"depth":51,"slug":331,"text":332},"etorkizunerako-ildoak","Etorkizunerako ildoak",[],[],{"title":319,"slug":316,"description":320,"tags":336,"added":321},[66],[],"sobre-developers-y-buenas-personas",{"id":338,"data":340,"body":344,"filePath":345,"digest":346,"rendered":347},{"title":341,"slug":338,"description":150,"added":342,"tags":343},"Sobre developers y (buenas) personas","2020-2-18",[153],"*_Oharra: Honako hau, Biko2 enpresan lan egiten nuenean haien blogean idatzitako artikulu bat da. [Iturria (funtzionatzen duen arte)](https://blog.biko2.com/actualidad-biko/sobre-developers-y-buenas-personas/)._*\n\n---\n\nDurante el proceso de selección de Biko, entre los nervios e incertidumbre que caracterizan una entrevista de trabajo, alguien me preguntó: «¿Cuál es el mayor reto al que te has enfrentado en tu carrera?» Buena pregunta, aunque me pilló por sorpresa. No recuerdo bien qué contesté, además de balbucear una lista de funcionalidades, tecnologías e infraestructuras con las que había trabajado hasta esa fecha.\n\nPese a todo, pasé el proceso de selección. Entré en un proyecto interesante, ilusionado por las aventuras que me esperaban. Iba aterrizando, conociendo al equipo, familiarizándome con el negocio y la tecnología. Poco a poco cogía soltura y llegó el momento de asumir el que para mí prometía ser el mayor reto: buscar la manera de hacer testing en el proyecto.\n\nAlgunas personas del equipo acordamos que dedicaría un tiempo a analizar cómo lo haríamos. Empecé a entender la teoría: preguntaba a gente, leía libros, buscaba vídeos… Me iba empapando. Compartía con el equipo, pero había gente que no me seguía, sentía que no mostraba interés. ¿Acaso no entendían la importancia del testing? Mi frustración crecía y empecé a bombardear al equipo con recursos sobre el tema. No importaba si los leían, tampoco preguntaba, había que «motivar a la gente». Creía que ayudaba cuando, en realidad, solo presionaba a personas que tenían otras inquietudes en ese momento.\n\nLlegó el momento de saltar del plano teórico al práctico. Entendí la tecnología y herramientas necesarias, buscando la configuración para aplicarlas a nuestro proyecto. Con ayuda, conseguimos montar la infraestructura adecuada. Ahí estaba, era una realidad, podíamos hacer tests en el proyecto. Pero había gente que no los hacía y seguía sin entender qué pasaba. ¿No veían el esfuerzo que había hecho? Lo tenían todo a favor y había gente que no metía un test. En mi afán por aplicar las buenas prácticas que leía en los libros (y buscando un reconocimiento) aumentaba la crispación dentro del equipo y me distanciaba de él.\n\nAlgunas personas del equipo estaban motivadas y, poco a poco, iba subiendo el número de tests. Había gente que sentía que se quedaba atrás, pero con ver crecer ese número me bastaba. Cada nuevo test era un logro, me jactaba de tirar del carro y ser un líder. Yo seguía sin escuchar, empujando, mejorando el proyecto a toda costa, presionando al equipo. No entendía que mi tarea era estar al servicio de las necesidades del resto, respetando la diversidad dentro del equipo.\n\nTengo suerte de formar parte de un gran equipo que, gracias a la atención a la mejora continua, supo pararme los pies. Una persona me dijo algo que me apunté: «En desarrollo de software el reto no es la tecnología, sino las personas». Cientos de tests más tarde lo veo claro: el código lo aguanta todo, basta con meterle horas, probar, fallar y volver a empezar. Las personas no, las personas merecen atención, respeto y cariño.\n\nSi hoy me peguntaran: «¿Cuál es el mayor reto al que te has enfrentado en tu trabajo?» No dudaría, aunque igual sorprendería con una respuesta nada técnica. No hablaría de proyectos, funcionalidades o infraestructuras. Hablaría de la vez que descubrí que esto va de personas y, para mejorar como developer, se empieza por mejorar como compañero. De nada valen las buenas prácticas si no hay empatía, entendimiento y respeto a la diversidad. Contaría ese momento en el que vi que, el equipo que trabaja bien, es el que trabaja feliz. Diría que mi mayor reto fue descubrir todo esto, aunque tenga toda la vida para resolverlo.","posts/sobre-developers-y-buenas-personas.md","9f6ec73a2f1df66e",{"html":348,"metadata":349},"\u003Cp>\u003Cem>\u003Cem>Oharra: Honako hau, Biko2 enpresan lan egiten nuenean haien blogean idatzitako artikulu bat da. \u003Ca href=\"https://blog.biko2.com/actualidad-biko/sobre-developers-y-buenas-personas/\">Iturria (funtzionatzen duen arte)\u003C/a>.\u003C/em>\u003C/em>\u003C/p>\n\u003Chr>\n\u003Cp>Durante el proceso de selección de Biko, entre los nervios e incertidumbre que caracterizan una entrevista de trabajo, alguien me preguntó: «¿Cuál es el mayor reto al que te has enfrentado en tu carrera?» Buena pregunta, aunque me pilló por sorpresa. No recuerdo bien qué contesté, además de balbucear una lista de funcionalidades, tecnologías e infraestructuras con las que había trabajado hasta esa fecha.\u003C/p>\n\u003Cp>Pese a todo, pasé el proceso de selección. Entré en un proyecto interesante, ilusionado por las aventuras que me esperaban. Iba aterrizando, conociendo al equipo, familiarizándome con el negocio y la tecnología. Poco a poco cogía soltura y llegó el momento de asumir el que para mí prometía ser el mayor reto: buscar la manera de hacer testing en el proyecto.\u003C/p>\n\u003Cp>Algunas personas del equipo acordamos que dedicaría un tiempo a analizar cómo lo haríamos. Empecé a entender la teoría: preguntaba a gente, leía libros, buscaba vídeos… Me iba empapando. Compartía con el equipo, pero había gente que no me seguía, sentía que no mostraba interés. ¿Acaso no entendían la importancia del testing? Mi frustración crecía y empecé a bombardear al equipo con recursos sobre el tema. No importaba si los leían, tampoco preguntaba, había que «motivar a la gente». Creía que ayudaba cuando, en realidad, solo presionaba a personas que tenían otras inquietudes en ese momento.\u003C/p>\n\u003Cp>Llegó el momento de saltar del plano teórico al práctico. Entendí la tecnología y herramientas necesarias, buscando la configuración para aplicarlas a nuestro proyecto. Con ayuda, conseguimos montar la infraestructura adecuada. Ahí estaba, era una realidad, podíamos hacer tests en el proyecto. Pero había gente que no los hacía y seguía sin entender qué pasaba. ¿No veían el esfuerzo que había hecho? Lo tenían todo a favor y había gente que no metía un test. En mi afán por aplicar las buenas prácticas que leía en los libros (y buscando un reconocimiento) aumentaba la crispación dentro del equipo y me distanciaba de él.\u003C/p>\n\u003Cp>Algunas personas del equipo estaban motivadas y, poco a poco, iba subiendo el número de tests. Había gente que sentía que se quedaba atrás, pero con ver crecer ese número me bastaba. Cada nuevo test era un logro, me jactaba de tirar del carro y ser un líder. Yo seguía sin escuchar, empujando, mejorando el proyecto a toda costa, presionando al equipo. No entendía que mi tarea era estar al servicio de las necesidades del resto, respetando la diversidad dentro del equipo.\u003C/p>\n\u003Cp>Tengo suerte de formar parte de un gran equipo que, gracias a la atención a la mejora continua, supo pararme los pies. Una persona me dijo algo que me apunté: «En desarrollo de software el reto no es la tecnología, sino las personas». Cientos de tests más tarde lo veo claro: el código lo aguanta todo, basta con meterle horas, probar, fallar y volver a empezar. Las personas no, las personas merecen atención, respeto y cariño.\u003C/p>\n\u003Cp>Si hoy me peguntaran: «¿Cuál es el mayor reto al que te has enfrentado en tu trabajo?» No dudaría, aunque igual sorprendería con una respuesta nada técnica. No hablaría de proyectos, funcionalidades o infraestructuras. Hablaría de la vez que descubrí que esto va de personas y, para mejorar como developer, se empieza por mejorar como compañero. De nada valen las buenas prácticas si no hay empatía, entendimiento y respeto a la diversidad. Contaría ese momento en el que vi que, el equipo que trabaja bien, es el que trabaja feliz. Diría que mi mayor reto fue descubrir todo esto, aunque tenga toda la vida para resolverlo.\u003C/p>",{"headings":350,"localImagePaths":351,"remoteImagePaths":352,"frontmatter":353,"imagePaths":355},[],[],[],{"title":341,"slug":338,"description":150,"tags":354,"added":342},[153],[],"un-enfoque-pragmatico-de-nuestros-tests-del-frontend",{"id":356,"data":358,"body":362,"filePath":363,"assetImports":364,"digest":366,"rendered":367},{"title":359,"slug":356,"description":150,"added":360,"tags":361},"Un enfoque pragmático de nuestros test del frontend","2020-6-10",[153],"*_Oharra: Honako hau, Biko2 enpresan lan egiten nuenean haien blogean idatzitako artikulu bat da. [Iturria (funtzionatzen duen arte)](https://blog.biko2.com/actualidad-biko/un-enfoque-pragmatico-de-nuestros-tests-del-frontend/)._*\n\n---\n\n![Nik egindako marrazki bat. Eraikin bat atzean ikusten dela, bambuzko andamio batzuen detallea dago.](../assets/enfoque-pragmatico-test/marrazkia.jpg)\n\nResulta difícil decir nada que no se haya dicho ya en torno a los beneficios del testing. En Biko, tenemos un compromiso con las buenas prácticas y tenemos clara la responsabilidad de testar nuestras aplicaciones. En este post no vengo a decirte [por qué debes hacer test](https://www.youtube.com/watch?v=vlorWIlPgY0&t), vengo a hablar del enfoque que estamos dando a nuestros test en los desarrollos frontend.\n\nComo software crafters, nuestro oficio es solucionar problemas. No nos limitamos a ejecutar soluciones, entendemos y hacemos nuestro el dominio del problema de negocio que se quiere afrontar. Participamos de forma proactiva en el análisis y diseño de funcionalidades, siempre con un compromiso claro por la entrega de valor.\n\nComo software crafters, en nuestro afán por crear código mantenible, tenemos la responsabilidad de volcar en nuestra base de código todo ese conocimiento que hemos adquirido. No nos limitamos a implementar interfaces, ni nos limitamos a implementar llamadas a un API. Buscamos expresar la intención y motivación que subyace a aquellas soluciones de interfaz que estamos implementando. Aquí es donde iniciamos ese proceso creativo en el que, utilizando el código como materia, vamos moldeando todo aquel conocimiento que tenemos sobre el negocio.\n\nEl testing no está exento de este principio: debe estar basado en nuestro conocimiento del negocio. Cuando hacemos un test del frontend, debemos ser capaces de simular la interacción de la persona al otro lado de la aplicación, expresando su intención y motivación. Debemos hablar el lenguaje de nuestro negocio. No nos limitamos a comprobar que ese input recibe ocho dígitos y una letra, comprobamos que una usuaria introduce su DNI para emitir facturas. No comprobamos que recibimos un dato del API, comprobamos que un usuario consulta los siniestros de su póliza.\n\nPara alcanzar este objetivo, es fundamental que nuestros test cubran la interacción con la interfaz de usuario. De nada sirve hacer test unitarios de las capas de nuestra aplicación si no somos capaces de hacer click en el mismo botón que verá la persona que la utilice. A esta persona no le importan nuestros repositorios, servicios de dominio o servicios de aplicación. Esta persona lo único que verá serán botones, campos de formularios o tablas. Si no somos capaces de cubrir esto, estaremos perdiendo una parte importante del potencial de nuestros test.\n\n## Entendido, pero... ¿Cómo lo conseguimos?\n\nEn Biko desarrollamos nuestros proyectos frontend (principalmente) en TypeScript y React, utilizando Jest como framework de test. Este framework nos facilita testar todo nuestro core, pero está limitado a la hora de hacer test de nuestras vistas (algo que, como se ha dicho antes, resulta fundamental en un proyecto front). Aquí es donde entra en juego la herramienta React Testing Library.\n\nReact Testing Library es una librería de utilidades que extiende de DOM Testing Library y nos permite renderizar una interfaz de usuario para interactuar con el DOM. Se basa en un principio: «cuanto más se parezcan tus test a cómo se usa tu software, más confianza te darán». Cuando lo lees parece obvio, pero es un salto cualitativo en el enfoque que damos a los test de nuestra interfaz. No testamos detalles de implementación de nuestros componentes, sino que actuamos directamente sobre el DOM, del mismo modo que lo hará quien use nuestro software.\n\nUtilizando esta librería junto a Jest, tenemos la capacidad de hacer test de nuestras vistas de forma agnóstica a la implementación. Mockeando los colaboradores como en cualquier pieza de nuestra aplicación, buscamos elementos del DOM (por texto o label, igual que lo haría cualquiera que navegue la web) e interactuamos con ellos comprobando que la respuesta obtenida es la adecuada. Esto nos permite cubrir con test las reglas de negocio en la capa de entrega e incluso, por qué no, desarrollar interfaces de usuario mediante TDD.\n\n## En conclusión\n\nReact Testing Library aumenta de forma considerable la fiabilidad de nuestros test del frontend. Nos permite abstraernos de los detalles de implementación y tener unos test lo más parecido posibles a la manera en la que se utilizará nuestro software. Gracias a este principio, obtenemos una batería de test más robusta y que expresa más intención. Esto último nos lleva a un código más mantenible y, como software crafters, pocas cosas nos hacen más felices que una base de código mantenible.\n\n## Si quieres saber más\n\nSi quieres seguir investigando, añado un vídeo y un artículo que pueden resultarte interesantes. Además, si tienes inquietudes sobre testing, buenas prácticas y entrega de valor, siempre puedes buscarnos en redes sociales (a Biko o a mí mismo), nos encantará conocerte.\n\n- Un vídeo: [The Pragmatic Frontend Tester](https://www.youtube.com/watch?v=XjFeUUZm50g) ([Adriá Fontcuberta](https://twitter.com/afontq))\n- Un artículo: [No pierdas el tiempo escribiendo tests](https://blog.koalite.com/2017/11/no-pierdas-el-tiempo-escribiendo-tests/) ([Juan María Hernández](https://twitter.com/gulnor))","posts/un-enfoque-pragmatico-de-nuestros-tests-del-frontend.md",[365],"../assets/enfoque-pragmatico-test/marrazkia.jpg","6610027e4c92bf2e",{"html":368,"metadata":369},"\u003Cp>\u003Cem>\u003Cem>Oharra: Honako hau, Biko2 enpresan lan egiten nuenean haien blogean idatzitako artikulu bat da. \u003Ca href=\"https://blog.biko2.com/actualidad-biko/un-enfoque-pragmatico-de-nuestros-tests-del-frontend/\">Iturria (funtzionatzen duen arte)\u003C/a>.\u003C/em>\u003C/em>\u003C/p>\n\u003Chr>\n\u003Cp>\u003Cimg __ASTRO_IMAGE_=\"{"src":"../assets/enfoque-pragmatico-test/marrazkia.jpg","alt":"Nik egindako marrazki bat. Eraikin bat atzean ikusten dela, bambuzko andamio batzuen detallea dago.","index":0}\">\u003C/p>\n\u003Cp>Resulta difícil decir nada que no se haya dicho ya en torno a los beneficios del testing. En Biko, tenemos un compromiso con las buenas prácticas y tenemos clara la responsabilidad de testar nuestras aplicaciones. En este post no vengo a decirte \u003Ca href=\"https://www.youtube.com/watch?v=vlorWIlPgY0&t\">por qué debes hacer test\u003C/a>, vengo a hablar del enfoque que estamos dando a nuestros test en los desarrollos frontend.\u003C/p>\n\u003Cp>Como software crafters, nuestro oficio es solucionar problemas. No nos limitamos a ejecutar soluciones, entendemos y hacemos nuestro el dominio del problema de negocio que se quiere afrontar. Participamos de forma proactiva en el análisis y diseño de funcionalidades, siempre con un compromiso claro por la entrega de valor.\u003C/p>\n\u003Cp>Como software crafters, en nuestro afán por crear código mantenible, tenemos la responsabilidad de volcar en nuestra base de código todo ese conocimiento que hemos adquirido. No nos limitamos a implementar interfaces, ni nos limitamos a implementar llamadas a un API. Buscamos expresar la intención y motivación que subyace a aquellas soluciones de interfaz que estamos implementando. Aquí es donde iniciamos ese proceso creativo en el que, utilizando el código como materia, vamos moldeando todo aquel conocimiento que tenemos sobre el negocio.\u003C/p>\n\u003Cp>El testing no está exento de este principio: debe estar basado en nuestro conocimiento del negocio. Cuando hacemos un test del frontend, debemos ser capaces de simular la interacción de la persona al otro lado de la aplicación, expresando su intención y motivación. Debemos hablar el lenguaje de nuestro negocio. No nos limitamos a comprobar que ese input recibe ocho dígitos y una letra, comprobamos que una usuaria introduce su DNI para emitir facturas. No comprobamos que recibimos un dato del API, comprobamos que un usuario consulta los siniestros de su póliza.\u003C/p>\n\u003Cp>Para alcanzar este objetivo, es fundamental que nuestros test cubran la interacción con la interfaz de usuario. De nada sirve hacer test unitarios de las capas de nuestra aplicación si no somos capaces de hacer click en el mismo botón que verá la persona que la utilice. A esta persona no le importan nuestros repositorios, servicios de dominio o servicios de aplicación. Esta persona lo único que verá serán botones, campos de formularios o tablas. Si no somos capaces de cubrir esto, estaremos perdiendo una parte importante del potencial de nuestros test.\u003C/p>\n\u003Ch2 id=\"entendido-pero-cómo-lo-conseguimos\">Entendido, pero… ¿Cómo lo conseguimos?\u003C/h2>\n\u003Cp>En Biko desarrollamos nuestros proyectos frontend (principalmente) en TypeScript y React, utilizando Jest como framework de test. Este framework nos facilita testar todo nuestro core, pero está limitado a la hora de hacer test de nuestras vistas (algo que, como se ha dicho antes, resulta fundamental en un proyecto front). Aquí es donde entra en juego la herramienta React Testing Library.\u003C/p>\n\u003Cp>React Testing Library es una librería de utilidades que extiende de DOM Testing Library y nos permite renderizar una interfaz de usuario para interactuar con el DOM. Se basa en un principio: «cuanto más se parezcan tus test a cómo se usa tu software, más confianza te darán». Cuando lo lees parece obvio, pero es un salto cualitativo en el enfoque que damos a los test de nuestra interfaz. No testamos detalles de implementación de nuestros componentes, sino que actuamos directamente sobre el DOM, del mismo modo que lo hará quien use nuestro software.\u003C/p>\n\u003Cp>Utilizando esta librería junto a Jest, tenemos la capacidad de hacer test de nuestras vistas de forma agnóstica a la implementación. Mockeando los colaboradores como en cualquier pieza de nuestra aplicación, buscamos elementos del DOM (por texto o label, igual que lo haría cualquiera que navegue la web) e interactuamos con ellos comprobando que la respuesta obtenida es la adecuada. Esto nos permite cubrir con test las reglas de negocio en la capa de entrega e incluso, por qué no, desarrollar interfaces de usuario mediante TDD.\u003C/p>\n\u003Ch2 id=\"en-conclusión\">En conclusión\u003C/h2>\n\u003Cp>React Testing Library aumenta de forma considerable la fiabilidad de nuestros test del frontend. Nos permite abstraernos de los detalles de implementación y tener unos test lo más parecido posibles a la manera en la que se utilizará nuestro software. Gracias a este principio, obtenemos una batería de test más robusta y que expresa más intención. Esto último nos lleva a un código más mantenible y, como software crafters, pocas cosas nos hacen más felices que una base de código mantenible.\u003C/p>\n\u003Ch2 id=\"si-quieres-saber-más\">Si quieres saber más\u003C/h2>\n\u003Cp>Si quieres seguir investigando, añado un vídeo y un artículo que pueden resultarte interesantes. Además, si tienes inquietudes sobre testing, buenas prácticas y entrega de valor, siempre puedes buscarnos en redes sociales (a Biko o a mí mismo), nos encantará conocerte.\u003C/p>\n\u003Cul>\n\u003Cli>Un vídeo: \u003Ca href=\"https://www.youtube.com/watch?v=XjFeUUZm50g\">The Pragmatic Frontend Tester\u003C/a> (\u003Ca href=\"https://twitter.com/afontq\">Adriá Fontcuberta\u003C/a>)\u003C/li>\n\u003Cli>Un artículo: \u003Ca href=\"https://blog.koalite.com/2017/11/no-pierdas-el-tiempo-escribiendo-tests/\">No pierdas el tiempo escribiendo tests\u003C/a> (\u003Ca href=\"https://twitter.com/gulnor\">Juan María Hernández\u003C/a>)\u003C/li>\n\u003C/ul>",{"headings":370,"localImagePaths":380,"remoteImagePaths":381,"frontmatter":382,"imagePaths":384},[371,374,377],{"depth":51,"slug":372,"text":373},"entendido-pero-cómo-lo-conseguimos","Entendido, pero… ¿Cómo lo conseguimos?",{"depth":51,"slug":375,"text":376},"en-conclusión","En conclusión",{"depth":51,"slug":378,"text":379},"si-quieres-saber-más","Si quieres saber más",[365],[],{"title":359,"slug":356,"description":150,"tags":383,"added":360},[153],[365]]