Frá tímaritsþema til verkefnaframkvæmdar
Viðeigandi þjónustu- og tæknisíður fyrir greinina
Í mörgum fyrirtækjum hafa Delphi Unternehmensanwendungen starfað áreiðanlega árum saman: gagnasöfnun nær framleiðslu, skipulag (Disposition), lagerhald, sendingar, þjónusta, gæðatrygging eða stjórnsýslulegir kjarnaferlar. Slík kerfi eru sjaldan „falleg“, en þau eru oft gríðarlega verðmæt – vegna þess að þau endurspegla ferla sem ekki hægt er að pressa inn í staðlaða hugbúnaðarlausn. Einmitt þess vegna er Delphi í atvinnulífinu ennþá viðeigandi: ekki sem tískubylgja, heldur sem stöðug undirstaða fyrir sérsniðið fyrirtækjahugbúnað sem varð til undir tímapressa og óx síðan yfir ár.
Fyrir IT-stjórn og rekstrarstjórn vaknar sjaldnar spurningin „Delphi: já eða nei?“, heldur: Hvernig viðhalda ég kerfinu þannig að það sé rekstrarfært, öruggt og auðvelt að breyta, án þess að lama reksturinn með stórfelldri endurbyggingu (Big Bang)? Þessi grein flokkað venjuleg Delphi-umhverfi og sýnir raunhæfar leiðir til nútímavæðingar – með áherslu á rekstur, gögn, viðmót, viðhaldshæfni, öryggi og flutning. Engar innri rafeindir frameworks, heldur með skýrum ákvörðunum sem skipta máli í daglegum rekstri.
Af hverju Delphi haldast í fyrirtækjum – og hvers vegna það ekki endilega er ókostur
Mörg Delphi-forrit voru byggð á tímum þegar skjáborðsforrit (VCL, þ.e. klassíska Windows-viðmótið) var hraðasta leiðin til að stafræna ferla. Úr urðu kerfi með mikilli sérfræðirökfræði, náin gagnatengsl við gagnagrunn og mörg „smá“ undantekningartilvik sem í heild styðja reksturinn. Þetta skýrir langlífi þeirra: viðskiptafræðin er prófuð – ekki með unit-prófum heldur með mörg ára rekstri í framleiðslu.
Áhætta felst iðulega ekki í Delphi sem tungumáli, heldur í tengdum þáttum: gamlir gagnaaðgangar (t.d. BDE, die Borland Database Engine), 32‑bita háðir hlutir, úrelt dulkóðun, óskýrar viðmótsskiptalínur, skortur á observability (monitoring/logging), óskýrar aðgangsstýringarlíkön eða skortur á uppfærslu- og patch-stefnu. Ef þessir jaðarþættir eru nútímavæddir getur Delphi-forrit haldið áfram að vera mjög áreiðanlegur byggingarhluti í stafrænum fyrirtækjalausnum.
Algengar upphafsstöður: Svo líta Delphi Unternehmensanwendungen í raunveruleikanum út
Sá sem tekur við eða á að stöðugleika tryggja fyrir Delphi-landslag finnur oft blönduform. Fyrir áætlunargerð og fjármál er gagnlegt að nefna upphafsstöðuna skýrt:
- Monólítískur skjáborðsklienti með beinum gagnagrunnsaðgangi (oft sögulega þróað, að hluta með „Fat Client“-rökfræði).
- Client-Server með þjónustum: Windows- og Linux-Services eða Linux-daemon sér um bakgrunnsverkefni (innflutningar, útflutningar, prentkeyrslur, tölvupóst, áætlanagerð).
- Hybrid: Skjáborð er áfram leiðandi, auk þess REST-API fyrir gáttir eða þriðju aðila tengingar (REST = HTTP-grunnuð viðmót sem skilar yfirleitt gögnum sem JSON).
- Fjölmargar gagnaveitur: SQL Server/PostgreSQL auk eldri kerfa (Firebird, Paradox-skrár, DBF, Access).
- Terminalserver/RDS eða Virtual Desktop Infrastructure (VDI) fyrir miðlægan rekstur, að hluta með tengingu við ytri tól (skönnarar, vogir, merkjaprentun).
Hver þessara útgáfa getur virkað – en áherslur í endurnýjun eru mismunandi. Desktop-monólítur þarf gjarnan fyrst aðskilnað og skýrari tengi. Þjónustulandslag krefst hreinnar rekstrarstjórnunar, útgáfustýringar og eftirlits. Í blönduðum tilfellum verður gagnastefna og tengistrategía að miðlægum áhrifavaldi.
Endurnýjun án Big Bang: Ákvörðunarfræði fyrir IT og ákvarðendur
Helsta spurningin er: Hvað þarf að ná stöðugleika í til skamms tíma, og hvað má endurnýja skref fyrir skref? Almenn endurbygging ber í sér miklar áhættur: samsíða vinnu við faglegar kröfur, tvöfalt viðhald, flutningargluggar og oft vanmetnar „jaðarvirkni“ (sérprentarar, leiðréttingarlotur, neyðarferlar). Á sama tíma má ekki loka augunum fyrir raunverulegum hindrunum (t.d. BDE, ópatchanlegar háðir, ekki endurskoðanlegt öryggi).
Í framkvæmd reynist tripartít vegakort gagnlegt:
- Stöðugleikavinna: byggingarferli, endurframkallanlegar útgáfur, hreint skráningarhald, prófanir á Backup/Restore, skjótan ávinning í öryggi.
- Aftengja: skýr lög (t.d. Layer-3-arkitektúr: UI, viðskiptalógík, gagnaaðgangur), skilgreina viðmót, nútímavæða gagnaaðgang.
- Útvíkka: REST-APIs, gáttir, nýir klientar, nýjir gagnagrunnar, fjölpallalausnir, margleigugeta – þar sem það er faglega og fjárhagslega réttlætanlegt.
Lykillinn er að hvert stig skili rekstrarfærum áfanga og framkalli ekki eingöngu undirbúningsverk. Síðan helst ferilgetan og breytingar verða stjórnanlegar.
Delphi endurnýjun: Hvar liggja í raun stærstu áhætturnar
Hugtakið „endurnýjun“ er oft notað of almennt. Fyrir rekstur eru yfirleitt fimm áhættusvæði sem skera úr:
1) Gagnaaðgangur og driflaraumhverfi (BDE, ODBC, úreltir Clients)
BDE-Ablösung er klassík: Svo lengi sem Borland Database Engine er í framleiðsluþjónustu skapast árekstrar við nýlegar Windows-útgáfur, drifla, réttindastýringar og öryggisbáslínur. Auk þess verður reksturinn brothættur vegna þess að íhlutir eru ekki lengur í viðhaldi. Hér er BDE-Ablösung mit nativer Anbindung gjarnan pragmatiskt endurnýjunarskref: nútímaleg gagnaaðgangslag í Delphi, sem tengir mismunandi gagnagrunna snyrtilega og gerir drifla-/pooling‑mál léttari í meðhöndlun.
Það sem skiptir máli fyrir IT: BDE-Ablösung er ekki bara „að skipta um drifil“. Dæmigerðar eftirvinnur eru aðlögun SQL‑dialekta, skilgreining viðskiptamarka (viðskipti = samfelldar gagnabreytingar sem annaðhvort eru technar í heild eða alls ekki), villumeðhöndlun, stöfunarmengi/Unicode og frammistöðugreining.
2) 32‑Bit‑háðir og 64‑Bit‑yfirfærslan
Yfirfærslan í 64‑bita kerfi bilar sjaldan vegna Delphi sjálfrar, heldur vegna ytri íhluta: umbúðir prentadrifla, eldri COM/ActiveX‑bókasöfn, sérhæfð vélbúnaðar‑SDK eða úreltir gagnagrunnsklientar. Fyrir áætlanagerð er nauðsynlegt að gera skrá yfir háðir: Hvaða DLL‑skrár eru hlaðnar? Hvaða íhlutir eru ekki 64‑bita hæfir? Er til staðgengill eða er hægt að færa virkni yfir í sértækan feril (t.d. sem þjónusta)?
Rökrétt nálgun er að innleiða 64‑bita fyrst þar sem það skilar rekstrarlegum ávinningi (minnisþörf, stór gagnamagni, kröfur nútíma vettvangs) – og tímabundið innkapsla 32‑bita fyrir jaðareiginleika frekar en að loka öllu viðskiptavinaforritinu.
3) Unicode-flutningur og gagnasamræmi
Unicode þýðir: textar eru ekki lengur vistaðir í staðbundnum kóðasettum heldur í samræmdu táknasetti (venjulega UTF‑16/UTF‑8 eftir lagi). Í eldri Delphi-umsóknum á þetta við um gömul gagnasvæði, útflutningssnið, prentsniðmát og viðmót. Vandamál koma oft fyrst fram í daglegri notkun: sértákn í nöfnum, alþjóðlegar heimilisföng, vörutextar, innihald tölvupósta.
Fyrirtækjum er mikilvægt að skoða þetta enda-til-enda: kollation gagnagrunns, innflutning/útflutning (CSV, XML, JSON), EDI-snið, PDF-framleiðsla, SMTP/IMAP og einnig birtingu í notendaviðmóti. Unicode-flutningur er framkvæmanlegur, en hann krefst prófunar með raunverulegum gögnum og skýrra viðtökuskilyrða.
4) Viðmót og samþættingar (REST, ERP, DMS, Identity)
Mörg Delphi-kerfi eru aðskilin kerfi („eyjur“), vegna þess að beinn gagnagrunnsaðgangur var sögulega hraðasta leiðin. Í dag þarf hreinar samþættingar: ERP, DMS, CRM, Portal, vélatenging. Hér hefur reynst vel að úthýsa samþættingar‑rökfræði í REST-þjónustur eða bakgrunnsþjónustu. Delphi REST-API und REST-Server er ekki markmið í sjálfu sér, heldur rekstrarbyggingareining: útgáfu‑stýrðir endapunktar, skýr auðkenning, stýrð skráning (logging) og takmörkuð deiling gagna.
Að auki skiptir auðkenning máli: SAML 2.0 (single sign‑on milli fyrirtækisauðkenningar og umsóknar) eða OAuth2/OpenID Connect, allt eftir umhverfi. Ákvörðunin snertir ekki aðeins umsóknina heldur líka rekstur, endurskoðanleika og ferla við útskráningu (offboarding).
5) Rekstur: Updates, Monitoring, Recovery
Umsókn er í fyrirtækinu aðeins eins góð og rekstur hennar. Dæmigerðar veikleikar: handvirkar uppsetningar, skortur á rollback‑stefnu, lítill sem enginn telemetría og óljós ábyrgðarskipting við truflanir. Nútímavæðing þýðir hér ekki „Cloud“, heldur: endurtekningarhæf dreifing (reproduzierbare Deployments), rekjanleg stilling og mælanleg kerfisheilsa.
Arkitektúr sem hjálpar í daglegu starfi: Layer-3, skýr mörk, færri aukaverkanir
Þegar Delphi-verkefni vaxa yfir ár, blandast oft saman viðmótslógík, viðskiptareglur og gagnaaðgangur. Það gerir breytingar áhættusamar: nýtt svið í dialogi leiðir skyndilega til aukaverkana í innflutningum eða skýrslum. Layer-3-arkitektúrinn (framsetning, viðskipta‑lógík, gagnaaðgangur) er hér minna kenning og meira hagnýt tæki til að gera breytingar reiknanlegar.
Mikilvæg er þá stefna háðra tengsla: Viðmótið má kalla viðskiptaaðgerðir en viðskiptalógíkin ætti ekki að vita hvað hnöppunum er nefnt. Gagnaaðgangur skilar hlutum/gögnum en tekur ekki ákvarðanir um faglegar reglur. Þetta auðveldar:
- markvissa prófun viðskiptareglna án þess að þurfa að ræsa viðmót,
- skref‑fyrir‑skref endurnýjun gagnaaðgangs (t.d. frá BDE til BDE-Ablosung mit nativer Anbindung),
- samhliða rekstur margra viðmóta (skjáborðsviðmót og Portal),
- stöðugri útgáfur þar sem aukaverkanir minnka.
Fyrir ákvörðunaraðila er þetta kostnaðarrök: ekki vegna þess að arkitektúrinn sé „fagur“, heldur vegna þess að hann gerir viðhald auðveldara að áætla.
Nútímavæða gagnagrunna: FireDAC, PostgreSQL, SQL Server – og hvað það þýðir fyrir rekstur
Ákvarðanir um gagnagrunna í Delphi-fyrirtækjaforritum eru oft mótaðar af sögunni. Í rekstri skiptir hæst: afritun/endurheimt (Backup/Restore), eftirlit (Monitoring), HA/Failover, öryggisplástrar (Security-Patching) og aðgangsstýring. Gagnaaðgangur ætti að samræmast þessum kröfum.
FireDAC sem staðlunarlag
FireDAC getur þjónað sem tæknilegt staðlunarlag, því stjórnun tenginga, parameterbinding, transaction-höndlun og val á driver verða samfelldari. Fyrir rekstur mikilvægt: Connection Pooling (endurnýting tenginga), Timeouts og skýr flokkun villna (t.d. „Deadlock“, „Timeout“, „Unique Constraint“).
PostgreSQL í framleiðslu með Delphi: tækifæri og gildrur
PostgreSQL er oft valið þegar opnir staðlar, góð SQL-færni og sterkar rekstrarmöguleikar eru áskildir. Algeng atriði við flutning eru:
- Gagnategundir: dagsetning/tími, Boolean, UUID, JSONB – nota þær hreint í gagnalíkani fremur en að vista allt sem texta.
- Einangrun viðskipta: samkvæmni vs. samhliða framkvæmd; mikilvægt við bókunarlogík og lotuvinnslu.
- Index-stefna: frammistaða kemur sjaldan af „meiri CPU“, heldur af viðeigandi indexum og hreinum fyrirspurnum.
Fyrir kerfisstjóra skiptir það máli að forritið þurfi ekki „Superuser“-réttindi, heldur gangi fyrir lágmarkshlutverkum. Þetta er lykilatriði fyrir endurskoðun og öryggisskoðanir.
Nútímavæða tengingu við SQL Server
Í mörgum umhverfum er SQL Server staðalval. Þá snýst málið síður um flutning en um hreina notkun: parametríseraðar fyrirspurnir (til að verja gegn SQL-Injection), skynsamleg einangrun, notkun Stored Procedures þar sem stjórnun krefst þess, og skýr aðgreining milli umsóknar-innskráningar og admin-innskráninga. Í framkvæmd er einnig gagnlegt að skoða collations (röðun/stafasamanburður), því þau skipta máli við Unicode-efni og samanburð (t.d. stór/stafsmisræmi).
REST-API bæta við: gera samþættingar mögulegar án þess að „opna“ gagnagrunninn
Þegar vefportalar, farsímaferlar eða þriðju aðilar eiga að tengjast er beinn aðgangur að gagnagrunninum yfirleitt slæmasta lausnin: erfitt að halda útgáfum, áhættusamt fyrir gagn heilindi og lítið hægt að endurskoða. Ein REST-API skapar stýrt samþættingarlag. Hún skilgreinir hvaða gögn eru aðgengileg, í hvaða formi og með hvaða reglum.
Fyrir rekstur og öryggi eru fjögur atriði ákvarðandi:
- Auðkenning: byggð á tokenum, æskilegt er að tengja við miðlægar auðkenningar (t.d. via SAML 2.0/OIDC í forstigs-Gateway, eftir arkitektúr).
- Valdheimildir: réttindaskoðun á faglegum hlutum, ekki aðeins „notandi má nota endpoint“.
- Útgáfustýring: endapunktar eða payload-útgáfur, svo Portal og Backend geti verið deployuð óháð hvor annarri.
- Takmörkun (Rate Limits) og skráning (Logging): vernd gegn misnotkun og áreiðanleg greining við truflunum.
Í mörgum fyrirtækjanetum keyra slíkar þjónustur aftan við Reverse Proxy (t.d. nginx). Þá þarf meðhöndlun á Forwarded-hausum að vera rétt (raunveruleg Client-IP, HTTPS-uppgötvun, réttar URL-basar), annars passa ekki logs, redirects og öryggisreglur. Þetta er ekki smáatriði heldur mikilvægt fyrir atvikagreiningu og compliance.
Windows-Service und Linux-Services: Hintergrundprozesse richtig betreiben
Delphi er í fyrirtækjum notað ekki aðeins fyrir skjáborðsviðskiptavini heldur einnig fyrir þjónustur: gagnaflutninga/innflutninga, scheduler, póstsendingu, PDF-sköpun og tengingarvinnslu. Fyrir rekstur skiptir máli að þjónusta sé ekki „einhvern veginn í gangi“, heldur að hægt sé að ræsa, stöðva og fylgjast með henni á stjórnlegan hátt.
Gátlisti fyrir þjónustuhæfar Delphi-íhluti
- Ytri stillingar: engar „fastar“ slóðir/hýsar í tvíundarskrá; stillingar sem skrá eða umhverfisbreytur, með skýrri skjölun.
- Hrein lokun: ljúka gangandi verkefnum á öruggan hátt eða hætta þeim hreint, svo engar hálffullgerðar færslur myndist.
- Idempotens: endurtekin keyrsla verkefnis má ekki skapa tvöfaldar bókanir (Idempotenz = sami kall, sama niðurstaða).
- Skráning með tengingu: fyrir hvert verk/viðskipti eitt auðkenni, svo loggar megi sameina yfir marga íhluti.
- Eftirlit: heilsu-endapunktar eða að auki athugunarhæfir mælikvarðar (t.d. „síðasta keyrsla“, „villutíðni“, „biðrað“).
Við Linux-Services (t.d. sem daemon undir systemd) bætast pakkaun, aðgangsstýring og skráarkerfisuppbygging við matslistann. Ákveðinn þáttur er að þjónustuaðild hafi lágmarksréttindi og að Secrets (Passwörter, Tokens) liggi ekki sem hreint texta í dreifingu. Fer eftir umhverfi getur þurft Secret-Store eða að minnsta kosti öruggan stillingarslóð.
Öryggi og samræmi: Hvað þarf venjulega að uppfæra í Delphi-forritum
Mörg eldri kerfi eru virk í rekstri, en öryggismat var „á sínum tíma“ gert öðruvísi. Nú eru kröfur skýrari: patchability, rekjanleiki, dulkóðun og aðgangsstýring. Dæmigerðar aðgerðir með hátt ábatagreiðslu/áhættuhlutfalli eru:
- Dulkóðun í flutningi: TLS fyrir þjónustur og API-samskipti; engar ódulkóðaðar HTTP-leiðir á innra neti „af vana“.
- Lykilorða- og secret-meðhöndlun: engin lykilorð í INI-skrám án verndar; ef mögulegt er, miðstýrð auðkenning og token.
- Audit-Logging: hver framkvæmdi hvaða viðkvæmu aðgerð (grunnupplýsingar, samþykktir, útflutningur), með tímastimpil og auðkenni.
- Aðgangsstýrikerfi: móta hlutverk og réttindi faglega; aðskilja stjórnandaaðgerðir; skoða aðgreiningu leigjenda.
- Dulritun pragmatiskt rétt: engar heimagerðar aðferðir; nota staðlaðar lausnir eins og AES (samhverf) og nútímaleg hash-föll, auk heilleikavarnar.
Mikilvægt: öryggi er ekki aðeins kóði. Það snertir einnig rekstur (aðgangsréttindi á þjónustum, varðveisla skráninga, dulkóðun afrita) og ferla (viðbrögð við atvikum, reglulegar uppfærslur, úrelding/afnám íhluta).
Skipuleggja flutning: Frá „vöxnu kerfi“ í vettvang sem má stýra með vegakorti
Ef Delphi-forrit á að halda áfram sem hluti af stefnu þarf það vegakort sem tengir tæknilega og skipulagslega þætti. Hagnýtt ferli byrjar með gagnsæi:
1) Tæknileg stöðumat sem kortleggur rekstur og áhættu
- Íhlutasafn (Delphi-útgáfur, þriðju aðila bókasöfn, drifarar, þjónustur, uppsetningarforrit)
- Gagnagrunnar og gagnastraumar (innflutningur/útflutningur, lotuvinnsla, skýrslugerðir)
- Tengi (skrá, TCP/IP, REST, SOAP, tölvupóstur, ERP/DMS/CRM)
2) Skilgreina markmynd, en ekki ofhlaða hana
Markmynd er gagnleg ef hún einfaldar ákvarðanatöku. Hún ætti að lýsa hvernig útgáfur verða til í framtíðinni, hvernig viðmót líta út, hvernig gagnaaðgangur er staðlaður og hvernig eftirlit með rekstri er til staðar. Hún þarf ekki að þýða „allt upp á nýtt“. Oft nægir markmynd með þremur til fimm leiðarlínum: t.d. FireDAC sem staðall, REST fyrir samþættingar, þjónustur með eftirliti, auðkenningartenging og skýr lagskipting.
3) Framkvæmd í afmörkuðum verkpakka
Nútímavæðingarplokkar ættu að vera faglega og tæknilega afmörkuð: „BDE fjarlægð og staðlaður gagnaaðgangur“, „REST-API fyrir portal-use-cases“, „64‑Bit-Client plús samhæfingarbúnt“, „styrkja þjónusturekstur“. Hver pakki þarf samþykktarskilyrði: mælanleg stöðugleiki, skilgreind frammistöðukröfur og skjalfestir rekstrarferlar.
C# og Delphi sameina: þegar portalar og þjónustur myndast við hlið skjáborðskerfis
Í mörgum fyrirtækjum er Delphi fest í kjarna kerfisins, á meðan portalar eða nýir samþættingarþjónustur verða frekar til í C#/.NET. Þetta er ekki mótsögn svo lengi sem arkitektúrinn aðskilur skýrt: Delphi getur haldið ferli-næmu skjáborðskerfi stöðugu í rekstri, á meðan C# Portale eða C# Services mæta nútíma vefkröfum. Ákvarðandi er sameiginlegt samskiptamál kerfanna: skýr gagnasamningar, samkvæm auðkenni, rekjanlegar útgáfur viðmóta og heildstætt eftirlit yfir kerfismörk.
Fyrir IT-stjórn er þetta oft hagkvæmasta leiðin: núverandi virðisþróun helst aðgengileg, á meðan nýjar rásir koma til án þess að krefjast algjarrar kerfisflutnings.
Hvað þið ættuð að undirbúa innanhúss: skjölun, rekstrarleiðbeiningar, þekkingarfærsla
Delphi-kerfi eru oft rekin af fáum einstaklingum. Þetta er áhætta sem hægt er að draga úr með yfirgripsmiklum, en hagnýtum aðgerðum. Sérstaklega áhrifaríkt er:
- Rekstrarleiðbeiningar: þjónustur, port/ tengipunktar, stillingar, Cron/Scheduler, algengar truflanir, endurheimtarskref.
- Release-tilkynningar: hvað breytist, hvaða DB-migreringar fara fram, hvernig er afturför möguleg?
- Viðmótaskrá: endapunktar/format, skráaskipti, tengiliðir, útgáfur.
- Yfirlit gagnalíkans: miðlægar töflur/einingar, lyklar, leigukerfislógík, arkívering.
Þetta er ekki skjalavæðing, heldur grunnur fyrir áætlananlegan rekstur, hraðari viðbrögð við incidents og minni háð einstaklingum.
Niðurstaða: Delphi fyrirtækjaforrit eru ekki vandamálið – það eru skortur á nútímavæðingarleiðum
Delphi-fyrirtækjaforrit geta verið traustur og hagkvæmur kjarni fyrir ferli-næmar hugbúnaðarlausnir yfir árabil. Áhersluatriðið er sjaldan forritunarmálið sjálft, heldur samanlagðar afleiðingar arfleifðar þrýstings, óskýrra viðmóta, skorts á rekstrarstyrkingu og vanræktrar öryggisráðstafana. Sá sem skipuleggur stöðugleika, aftengingu og útvíkkun sem stýrt vegkort forðast áhættusaman „Big Bang“ — og fær samt REST-samþættingar, 64‑Bit-hæfni, hreinan gagnaaðgang og rekstur sem mætir nútíma kröfum.
Ef þið viljið tæknilega flokka Delphi-umhverfið ykkar og setja upp traustan nútímavæðingarveg fyrir gagnaaðgang, viðmót og rekstur, hafið samband við okkur:
Næsta skref
Þegar úr málinu verður raunverulegt verkefni ber að skoða arkitektúr, núverandi kerfi og rekstur snemma saman.
Við styðjum ekki aðeins við einstakar spurningar, heldur einnig þegar úr kóðabútum, eldri kerfum eða gáttahugmyndum þarf að verða traust fyrirtækjaverkefni.
- Núverandi staða, markmynd og tæknileg áhætta eru metin saman.
- REST, gagnaaðgangur, gáttir og innleiðing eru ekki skildir eftir til síðar.
- Það sést snemma hvaða leið er fjárhagslega og rekstrarlega sjálfbær.