Redigerer
Hjelp:Dynamisk meny
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
[[Fil:Skjermdump-adaptiv-menu.png|thumb|right|Eksempel på dynamisk meny.]] '''Dynamisk meny''' er en tilleggsfunksjon som gjør venstremargen adaptiv slik at mye brukte sider legges til. Dette forutsetter at de aktuelle sidene er lagt i egne kategorier som følger navngivingen til ''portletene'' i ''panelet''. Når dette er gjort vil det lages ekstra lenker til de enkelte sidene når de er aksessert tilstrekkelig mange ganger, først som lenker i ekstra menyer og deretter som lenker i den ordinære venstremargen. Når det finnes ekstramenyer vil det legges inn en hellip (…) oppe til høyre i den aktuelle ordinære menyen. De dynamiske oppføringene kommer i tillegg til venstremargens ordinære oppføringer, som i denne sammenhengen er statiske. Både de statiske og dynamiske oppføringene kan manipuleres via styling, typisk slik at enkelte elementer legges til eller fjernes på bakgrunn av brukernes gruppetilhørighet. Generelt bør ting som er overflødig for flest mulig slås av med en gang og så overstyres via styling. Hvis det blir for mye regler som overstyrer hverandre på samme elementet så kan det bli flikker. Det er ikke helt enkelt å overstyre de dynamiske oppføringene da de mangler enkle identifikatorer. Det er ikke lagt arbeid i dette da manipulering av disse lenkene gir lite ekstra brukeropplevelse. Hvis det er nødvendig bør det være nokså enkelt å lage en identifikator basert på sidenavnet eller artikkelid. Bruk av tilleggsfunksjonen vil ikke gi ekstra serverlast. ==Algoritme== det er to forskjellige algoritmer som brukes i to alternative implementasjoner. Den ene baserer seg på [[:en:Least frequently used|least frequently used]] og den andre på [[:en:Least Recently Used|least recently used]]. Begge modellene er modifisert så de gir noe bedre resultat for det som oppfattes som cache'ens hode. ===Least frequently used=== Denne løsningen tar lar aktuelle kandidater stå på prøve i et tidsrom, egentlig et antall steg i en pipeline, og innenfor denne tiden beregnes det hvor hyppig oppføringen brukes. Hyppighet beregnes dels utfra hvor langt kandidaten er ut i pipeline'en, og dels utfra en eksponentielt avtagende funksjon. De kandidatsidene som brukes ofte og for kort tid siden vil derfor vektes opp. Metoden er derfor en variant av LFU-Ageing. En fordel med metoden var at det var mulig å sette absoluttverdier for hvor hyppig en oppføring skulle være brukt før den ble tatt med. Dette ville i teorien gi en følelse av at når noe ble tatt med så var det fordi oppføringen var viktig. En tilsvarende, men lavere verdi ble brukt for sidemenyens undermeny. Metoden viste seg å gi relativt hyppige endringer i hva som var plassert i venstremargen og tidvis en følelse av at noe en var vandt med at var der plutselig forsvant. Spesielt var dette påtakelig når det bare var en eller noen få oppføringer der og de plutselig ble borte. Dette gir en negativ brukeropplevelse. ===Least recently used=== Etter en omskriving ble det implementert en løsning med Least recently used. Metoden baserer seg på en kort pipeline hvor oppføringer forkastes om de ruller ut av pipelinen. De som er i pipelinen vil kunne promoteres til pipelinens hode hvis de blir aksessert på nytt. Når de aksesseres inkrementeres en teller i dem, og denne telleren brukes for å sortere ut de viktigste oppføringene. Fordi det ikke er noen klar maksimalverdi på telleren så brukes de ''N'' første kandidater i sidemenyen. Et ytterligere antall ''M'' sorteres ut og plasseres i sidemenyens undermeny. Metoden har gitt noe mer stabile resultater, og ikke minst etablerer den noen oppføringer i venstramargen tidlig. Det gjør at brukeren får en følelse av at noe skjer på et tidlig tidspunkt, noe som gir en positiv brukeropplevelse. ==Registrering av kandidater for LFU== For å legge lenker til portletten som har tittelen «Prosjekt» så brukes dennes ''id'' i navnet til en ny kategori. I dette tilfellet er ikke navnet på portleten forberedt for lokalisering og dens id stemmer overens med tittelen, den heter ''p-prosjekt''. Innledningen på navnet fjernes og brukes så til å lage [[:Kategori:Sidebar prosjekt]]. Navnet kan brukes på litt forskjellige former, men innledningen «Sidebar» må være med. Kategoriene plasseres i foreldrekategorien [[:Kategori:Sidebar]] slik at det er lettere å finne frem blant dem. Disse kategoriene er skjulte da de ikke er spesielt nyttig for andre enn de som setter opp denne navigeringen. Det er satt opp noen slike kategorier som dekker de mest aktuelle av portletene. I tillegg til sider som er nokså opplagte, slik som Tinget, Torget og Oraklet så kan også spesialsider legges i slike kategorier, men da med litt endring i de aktuelle scriptene. ==Registrering av kandidater for LRU== Denne metoden bruker bestemte navnerom som kilde for kandidater til de enkelte portlet'ene. Det er derfor ikke nødvendig med ytterligere konfigurering. ==Eksempler på overstyring av statiske lenker== ;Override visibility for ordinary users Override for all users for elements that shall e removed. The element identified by <code>#n-portal</code> is an example of an element that will be removed. The identifier is reused from the definitions in [[Mediawiki:Sidebar]]. <source lang="css"> .portal #n-portal { display: none; } </source> ;Override visibility for patrol Override spesific for patrollers. Because this has an added class identifying one of the users groups it has a slightly higher weight in the cascade. This will make it override the settings for the ordinary users. <source lang="css"> .patrol .portal #n-portal { display: none; } </source> ;Override visibility for sysops Override spesific for sysops. This adds the <code>!important</code> clause which gives it even more weight in the cascade than definitions for the patrollers. <source lang="css"> .sysop .portal #n-portal { display: none !important; } </source> ==Diverse== Tilleggsfunksjonen er laget slik at den støtter draktene «vector», «monobook» og «modern». Den vil ikke fungere for andre skin, men vil heller ikke gi feilmelding. Tilleggsfunksjonen bruker «web storage», noe som gjør at en må ha en relativt moderne nettleser om den skal fungere. Funksjonen er testet på Firefox 5.0/Ubuntu (ok), Google Chromium 12/Ubuntu (issues - graphical artifacts), Opera 11.50/Ubuntu (ok), IE9/Win7 (ok), Google Chromium 12/Win7 (ok), Opera 11.50/Win7 (ok), Safari 5.0.5/Win7 (ok). ==Forbedringer== Muligens burde løsningen skifte mellom strategier på bakgrunn av hva brukeren gjør, det vil si at den burde skifte til LFU når brukeren redigerer. Det vil ranke opp artikler det arbeides med. Hvordan artikler listet etter to forskjellige strategier skal flettes sammen er litt uklart. Kanskje kan en ha en egen portlet for «under arbeid» og kun bruke en alternativ algoritme på denne. ==Se også== * [[MediaWiki:Gadget-dynamic-sidebar.css]] * [[MediaWiki:Gadget-dynamic-sidebar.js]] [[Kategori:Tilleggsfunksjoner]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Denne siden er medlem av 1 skjult kategori:
Kategori:Sider som bruker utgåtte source-tagger
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Hjelp
Diskusjon
norsk bokmål
Visninger
Les
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon