brief: | i18n.site އިން މިހާރު ސަރވަރލެސް ފުލް ޓެކްސްޓް ސަރޗަށް ސަޕޯޓް ކުރެއެވެ.

މި ލިޔުމުގައި ތަޢާރަފްކޮށްފައިވަނީ އިންޑެކްސްޑްޑީބީ އިން ބިލްޑް އިންވާރޓްޑް އިންޑެކްސް، ޕްރިފިކްސް ސަރޗް، ވޯޑް ސެގްމެންޓޭޝަން އޮޕްޓިމައިޒޭޝަން އަދި މަލްޓި ލެންގުއޭޖް ސަޕޯޓް ހިމެނޭ ގޮތަށް ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗް ޓެކްނޮލޮޖީ ތަންފީޒުކުރުމެވެ.

މިހާރު ހުރި ހައްލުތަކާ އަޅާބަލާއިރު، i18n.siteގެ ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗަކީ ސައިޒުން ކުޑަ އަދި އަވަސް، ޑޮކިއުމަންޓްތަކާއި ބްލޮގް ފަދަ ކުދި އަދި މެދު ސައިޒުގެ ވެބްސައިޓްތަކަށް އެކަށީގެންވާ އަދި އޮފްލައިންކޮށް ލިބެން ހުންނަ ސަރޗެކެވެ.


ޕިއުރ ފްރަންޓް އެންޑް އިންވާޓްޑް ފުލް ޓެކްސްޓް ސަރޗް

ސީކުއެންސް

އެތައް ހަފްތާއެއް ވަންދެން ތަރައްޤީ ކުރުމަށްފަހު، i18n.site (ޚުދުމުޚުތާރު ސްޓޭޓިކް markdown މަލްޓިލިންގުއަލްޓްރާންސްލޭޝަން & ވެބްސައިޓް ބިލްޑިންގ ޓޫލް) މިހާރު ސަޕޯޓް ކުރަނީ ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗަކަށެވެ.

މި ލިޔުމުގައި i18n.site ޕިއުރ ފްރަންޓް-އެންޑް ފުލް-ޓެކްސްޓް ސަރޗް ގެ ޓެކްނިކަލް އިމްޕްލިމެންޓޭޝަން ހިއްސާ ކުރާނީ ސަރޗް އިފެކްޓް ތަޖުރިބާ ކުރުމަށް i18n.site

ކޯޑް / ސޯސް :

ސަރވަރލެސް ފުލް ޓެކްސްޓް ސަރޗް ސޮލިއުޝަންތަކުގެ އޯވަރވިއުއެއް

ޑޮކިއުމަންޓް/ޕާސަނަލް ބްލޮގް ފަދަ ކުދި އަދި މެދު ސައިޒުގެ ޚުދު ސްޓޭޓިކް ވެބްސައިޓްތަކަށް، އަމިއްލައަށް ބިނާކޮށްފައިވާ ފުލް ޓެކްސްޓް ސަރޗް ބެކްއެންޑެއް ބިނާކުރުމަކީ މާ ބުރަ ކަމެއް ކަމަށާއި، ސާވިސް ފްރީ ފުލް ޓެކްސްޓް ސަރޗަކީ މާ އާންމު ގޮތެކެވެ.

ސަރވަރ ނެތް ފުލް ޓެކްސްޓް ސަރޗް ސޮލިއުޝަންތައް ފުޅާ ދެ ކެޓަގަރީއަކަށް ބަހާލެވިފައިވެއެވެ.

ފުރަތަމަ ކަމަކަށް، މިފަދަ algolia.com ތިންވަނަ ފަރާތެއްގެ ސަރޗް ސާވިސް ޕްރޮވައިޑަރުން ފުލް ޓެކްސްޓް ސަރޗަށް ފްރަންޓް އެންޑް ކޮމްޕޯނެންޓްތައް ފޯރުކޮށްދެއެވެ.

މިފަދަ ހިދުމަތްތައް ސަރޗް ވޮލިއުމްއަށް ބަލައިގެން ފައިސާ ދައްކަން ޖެހޭއިރު، ގިނަ ފަހަރަށް ޗައިނާގެ ބިންގަނޑުގައި ތިބި ޔޫޒަރުންނަށް ވެބްސައިޓް ކޮމްޕްލައިންސް ފަދަ މައްސަލަތަކުގެ ސަބަބުން ނުލިބެ އެވެ.

އެއީ އޮފްލައިންކޮށް ބޭނުން ނުކުރެވޭނެ، އިންޓްރާނެޓްގައި ބޭނުން ނުކުރެވޭނެ، އަދި ބޮޑެތި ލިމިޓެޝަންތަކެއް ހުރި އެއްޗެކެވެ. މި ލިޔުމުގައި މާބޮޑު ވާހަކައެއް ނުދައްކައެވެ.

ދެވަނަ ކަމަކީ ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗެވެ.

މިވަގުތު އާންމު ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗްތަކުގެ ތެރޭގައި lunrjs އަދި ElasticLunr.js ( lunrjs ސެކަންޑަރީ ޑިވެލޮޕްމަންޓަށް ބިނާކޮށް) ހިމެނެއެވެ.

lunrjs އިންޑެކްސް ބިނާކުރުމަށް ދެގޮތެއް އޮންނައިރު، މިދެގޮތުގައިވެސް އަމިއްލަ މައްސަލަތަކެއް ހުރެއެވެ.

  1. ކުރިން ބިލްޑްކޮށްފައިވާ އިންޑެކްސް ފައިލްތަކެވެ

    ސަބަބަކީ އިންޑެކްސްގައި ހުރިހާ ލިޔެކިޔުންތަކެއްގެ ލަފުޒުތައް ހިމެނޭތީ، އެއީ ސައިޒުން ބޮޑު އެއްޗެކެވެ. ކޮންމެ ލިޔުމެއް އިތުރުކުރާ ނުވަތަ ބަދަލުކުރާ ކޮންމެ ފަހަރަކު އާ އިންޑެކްސް ފައިލެއް ލޯޑްކުރަން ޖެހެއެވެ. އެއީ ޔޫޒަރުގެ ވެއިޓިން ޓައިމް އިތުރުވެ، ގިނަ ބެންޑްވިޑް ކޮންސިއުމް ކުރާނެ ކަމެކެވެ.

  2. ޑޮކިއުމަންޓްތައް ލޯޑްކޮށް ފްލައިގައި އިންޑެކްސްތައް ބިލްޑްކުރުން

    އިންޑެކްސް އެއް ހެދުމަކީ ކޮމްޕިއުޓޭޝަނަލް ގޮތުން އިންޓެންސިވް މަސައްކަތެކެވެ.


lunrjs ގެ އިތުރުން ފުލް ޓެކްސްޓް ސަރޗް ސޮލިއުޝަންތަކެއް ވެސް ހުރެއެވެ، އޭގެ ތެރޭގައި :

fusejs , ހޯދަން ބޭނުންވާ ސްޓްރިންގްތަކުގެ މެދުގައިވާ އެއްގޮތްކަން ހިސާބުކުރުން.

މި ސޮލިއުޝަންގެ ޕާފޯމަންސް އިންތިހާއަށް ދަށްވެ، ފުލް ޓެކްސްޓް ސަރޗަށް ބޭނުން ނުކުރެވޭނެ (ބަލާށެވެ Fuse.js ދިގު ސުވާލަކަށް 10 ސިކުންތަށްވުރެ ގިނަ ވަގުތު ނަގާ، އެކަން އޮޕްޓިމައިޒް ކުރާނީ ކިހިނެއް؟ ).

TinySearch goo good google

މިހާރު ހުރި ހައްލުތަކުގެ އުނިކަންތަކުގެ ސަބަބުން، i18n.site އާ ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗް ސޮލިއުޝަނެއް ތަރައްޤީކުރިއިރު، މިއީ ތިރީގައިވާ ސިފަތައް ހުންނަ ސޮލިއުޝަނެއް :

  1. މަލްޓި ލެންގުއޭޖް 6.9KB gzip އަޅާކިޔުމަށްޓަކައި lunrjs ގެ ސައިޒަކީ 25KB ) އެވެ.
  2. indexedb އަށް ބިނާކޮށް އިންވާޓްޑް އިންޑެކްސް އެއް ބިލްޑް ކުރާއިރު، މިއީ މަދު މެމޮރީ ނަގާ އަދި އަވަސް އިންޑެކްސްއެކެވެ.
  3. ލިޔެކިޔުންތައް އިތުރު/ބަދަލުކުރާއިރު، ހަމައެކަނި އިތުރުކުރެވޭ ނުވަތަ ބަދަލުކުރެވޭ ލިޔެކިޔުންތައް އަލުން އިންޑެކްސް ކުރެވޭތީ، ހިސާބުކުރާ މިންވަރު މަދުވެއެވެ.
  4. ޕްރިފިކްސް ސަރޗް އަށް ސަޕޯޓް ކުރާއިރު، މިއީ ޔޫޒަރ ޓައިޕް ކުރަމުން ދަނިކޮށް ރިއަލް ޓައިމްގައި ސަރޗް ނަތީޖާ ދައްކާލެވޭނެ އެއްޗެކެވެ.
  5. އޮފްލައިންކޮށް ލިބެން ހުރެއެވެ

ތިރީގައި މިވަނީ i18n.site ފަންނީ ތަންފީޒުކުރުމުގެ ތަފްސީލު ތަފްސީލުކޮށް ތަޢާރަފްކުރެވިފައެވެ.

މަލްޓިލިންގުއަލް ވޯޑް ސެގްމެންޓޭޝަން

ވޯޑް ސެގްމެންޓޭޝަންގައި ބޭނުންކުރަނީ ބްރައުޒާގެ ނެޓިވް ވޯޑް ސެގްމެންޓޭޝަން Intl.Segmenter ކަމަށާއި، ހުރިހާ މެއިންސްޓްރީމް ބްރައުޒާތަކުންވެސް މި އިންޓަރފޭސްއަށް ސަޕޯޓްކުރެއެވެ.

ލަފުޒު ސެގްމެންޓޭޝަން coffeescript ކޯޑް ތިރީގައި މިވަނީއެވެ

SEG = new Intl.Segmenter 0, granularity: "word"

seg = (txt) =>
  r = []
  for {segment} from SEG.segment(txt)
    for i from segment.split('.')
      i = i.trim()
      if i and !'|`'.includes(i) and !/\p{P}/u.test(i)
        r.push i
  r

export default seg

export segqy = (q) =>
  seg q.toLocaleLowerCase()

އެތެރެ:

އިންޑެކްސް ބިލްޑިންގ

IndexedDB ގައި 5 އޮބްޖެކްޓް ސްޓޯރޭޖް ޓޭބަލް އުފެއްދިއެވެ :

ޑޮކިއުމަންޓް url އަދި ވަރޝަން ނަންބަރު ver ގެ އެރޭ އިން ޕާސްކޮށް، ތާވަލް doc ގައި ޑޮކިއުމަންޓް ހުރިތޯ ހޯދާށެވެ. ހަމައެއާއެކު، ޕާސް ނުކުރެވި ހުރި ލިޔެކިޔުންތަކުގެ އިންވާޓް އިންޑެކްސް ނައްތާލާށެވެ.

މިގޮތަށް އިންކްރިމެންޓަލް އިންޑެކްސިންގ ހާސިލްކޮށް، ހިސާބުކުރުމުގެ މިންވަރު މަދުކުރެވިދާނެއެވެ.

ފްރަންޓް އެންޑް އިންޓަރެކްޝަންގައި ، ފުރަތަމަ ފަހަރަށް ލޯޑް ކުރާއިރު ލެގް progress + css އިންޑެކްސްގެ ލޯޑިންގ ޕްރޮގްރެސް ބާރ / .

އިންޑެކްސްޑްޑީބީ ހައި ކޮންކަރެންޓް ރައިޓިންގ

މި މަޝްރޫޢު idb އެސިންކްރޮނަސް އެންކެޕްސުލޭޝަންގެ މައްޗަށް ބިނާކޮށް IndexedDB

އިންޑެކްސްޑްޑީބީ ރީޑްސް އަދި ރައިޓްސް އަކީ އެސިންކްރޮނަސް އެއްޗެކެވެ. އިންޑެކްސް އުފައްދާއިރު، އިންޑެކްސް އުފެއްދުމަށްޓަކައި ޑޮކިއުމަންޓްތައް އެއްފަހަރާ ލޯޑް ކުރެވޭނެއެވެ.

ވާދަވެރި ލިޔުމުގެ ސަބަބުން ޕާޝިއަލް ޑޭޓާ ގެއްލުމުން ސަލާމަތްވުމަށްޓަކައި ތިރީގައިވާ coffeescript ކޯޑަށް ރިފަރކޮށް، ވާދަވެރި ލިޔުންތައް އިންޓަސެޕްޓް ކުރުމަށްޓަކައި ކިޔެވުމާއި ލިޔުމާއި ދެމެދު ing ކެޝް އެއް އިތުރުކުރެވިދާނެއެވެ.

pusher = =>
  ing = new Map()
  (table, id, val)=>
    id_set = ing.get(id)
    if id_set
      id_set.add val
      return

    id_set = new Set([val])
    ing.set id, id_set
    pre = await table.get(id)
    li = pre?.li or []

    loop
      to_add = [...id_set]
      li.push(...to_add)
      await table.put({id,li})
      for i from to_add
        id_set.delete i
      if not id_set.size
        ing.delete id
        break
    return

rindexPush = pusher()
prefixPush = pusher()

ޕްރެސިޝަން އެންޑް ރިކޯލް އެވެ

މި ސަރޗްގައި ފުރަތަމަ ސެގްމެންޓް ކުރާނީ ޔޫޒަރ އެންޓަރ ކުރާ ކީވޯޑްސް އެވެ.

ލަފުޒު ސެގްމެންޓޭޝަންގެ ފަހުން N ލަފުޒު ހުރިކަމަށް ގަބޫލުކުރާއިރު 1 އަނބުރާ ލިބޭއިރު، N-2 N-1 ކީވޯޑް ހިމެނޭ ނަތީޖާތައް އަނބުރާ ލިބޭނެއެވެ.

ފުރަތަމަ ދައްކާ ސަރޗް ނަތީޖާތަކުން ސުވާލުގެ ޞައްޙަކަން ކަށަވަރުވެ، އޭގެ ފަހުން ލޯޑް ކުރެވޭ ނަތީޖާތަކުން (ލޯޑް މޯރ ބަޓަންއަށް ފިތާލުމުން) ރިކޯލް ރޭޓް ކަށަވަރުވެއެވެ.

ލޯޑް އޮން ޑިމާންޑް

ރެސްޕޮންސް ސްޕީޑް ރަނގަޅު ކުރުމަށްޓަކައި، ސަރޗް އިން އޮން-ޑިމާންޑް ލޯޑިންގ ތަންފީޒު ކުރުމަށް yield ޖަނަރޭޓަރ ބޭނުންކޮށް، ނަތީޖާއެއް ސުވާލު ކުރާ limit ފަހަރަކު ރިޓަރން ކުރެއެވެ.

yield ފަހުން އަލުން ހޯދާ ކޮންމެ ފަހަރަކު IndexedDB ގެ ކިއުއަރީ ޓްރާންސެކްޝަނެއް އަލުން ހުޅުވަން ޖެހޭކަން ފާހަގަކޮށްލެވެއެވެ .

ޕްރިފިކްސް ރިއަލް ޓައިމް ސަރޗް

ޔޫޒަރ ޓައިޕް ކުރަމުން ދަނިކޮށް ސަރޗް ނަތީޖާ ދެއްކުމަށްޓަކައި، މިސާލަކަށް wor ޖަހާއިރު، words އަދި work ފަދަ wor ގެ ކުރިން 3 ޖަހާފައިވާ ލަފުޒުތައް ފެންނާނެއެވެ.

ސަރޗް ކާރނަލް އިން ލަފުޒު ސެގްމެންޓޭޝަނަށްފަހު އެންމެ ފަހު ލަފުޒަށް prefix ޓޭބަލް ބޭނުންކޮށްގެން އޭގެ ކުރިން ޖަހާފައިވާ ހުރިހާ ލަފުޒުތައް ހޯދައި، ތަރުތީބުން ހޯދާނެއެވެ.

އެންޓި ޝޭކް ފަންކްޝަން debounce އަކީ ވެސް ފްރަންޓް އެންޑް އިންޓަރެކްޝަންގައި (ތިރީގައިވާ ގޮތަށް ތަންފީޒު ކުރެވޭ) ބޭނުންކޮށްގެން ޔޫޒަރ އިންޕުޓް ޓްރިގަރ ކުރާ ސަރޗްތަކުގެ ފްރީކުއެންސީ މަދުކޮށް، ހިސާބުކުރުމުގެ މިންވަރު މަދުކުރުމަށެވެ.

export default (wait, func) => {
  var timeout;
  return function(...args) {
    clearTimeout(timeout);
    timeout = setTimeout(func.bind(this, ...args), wait);
  };
}

އޮފްލައިންކޮށް ލިބެން ހުރެއެވެ

އިންޑެކްސް ޓޭބަލްގައި އަސްލު ލިޔުން ރައްކާކޮށްފައި ނުވާއިރު، ހަމައެކަނި ލަފުޒުތައް ރައްކާކޮށްފައި ހުރުމުން ރައްކާކުރާ މިންވަރު މަދުވެއެވެ.

ސަރޗް ނަތީޖާތައް ހައިލައިޓް ކުރުމަށް އަސްލު ޓެކްސްޓް އަލުން ލޯޑް ކުރަން ޖެހޭއިރު، service worker އެއްގޮތް ކުރުމުން ތަކުރާރުކޮށް ނެޓްވޯކް ރިކުއެސްޓް ކުރުމުން ސަލާމަތްވެވޭނެއެވެ.

ހަމައެއާއެކު، service worker ހުރިހާ ލިޔުންތަކެއް ކެޝް ކުރާތީ، ޔޫޒަރ ސަރޗެއް ކުރުމުން، ސަރޗް ހިމެނޭ ގޮތަށް މުޅި ވެބްސައިޓް އޮފްލައިންކޮށް ލިބެން ހުރެއެވެ.

މާކްޑައުން ޑޮކިއުމަންޓްތަކުގެ ޑިސްޕްލޭ އޮޕްޓިމައިޒޭޝަން

i18n.site ގެ ޕިއުރ ފްރަންޓް އެންޑް ސަރޗް ސޮލިއުޝަން MarkDown ޑޮކިއުމަންޓަކަށް އޮޕްޓިމައިޒް ކުރެވިފައިވެއެވެ.

ސަރޗް ނަތީޖާ ދައްކާއިރު ޗެޕްޓަރުގެ ނަން ފެންނާނެ ކަމަށާއި ކްލިކް ކުރުމުން ޗެޕްޓަރ ނެވިގޭޓް ވާނެ ކަމަށް ވެސް ވިދާޅުވިއެވެ.

ޚުލާޞާކޮށްލާށެވެ

އިންވާޓްޑް ފުލް ޓެކްސްޓް ސަރޗް ތަންފީޒުކޮށްފައިވަނީ ޚުދު ފްރަންޓް އެންޑްގައި، އެއްވެސް ސަރވަރެއް ބޭނުން ނުވާނެއެވެ. ލިޔެކިޔުންތަކާއި އަމިއްލަ ބްލޮގް ފަދަ ކުދި އަދި މެދުފަންތީގެ ވެބްސައިޓްތަކަށް ވަރަށް އެކަށީގެންވެއެވެ.

i18n.site އޯޕަން ސޯސް އަމިއްލައަށް ތަރައްޤީކޮށްފައިވާ ޕިއުރ ފްރަންޓް އެންޑް ސަރޗް، ސައިޒުން ކުޑަ އަދި އަވަސް ރެސްޕޮންސް، މިހާރު ބޭނުންކުރާ ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗްގެ އުނިކަންތައްތައް ހައްލުކޮށް، ޔޫޒަރ އެކްސްޕީރިއަންސް ރަނގަޅުކޮށްދެއެވެ.