logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#226 07-04-2019 01:13:07

Maximilien LIX
Membre
Distrib. : Archlinux
(G)UI : GNOME
Inscription : 17-12-2013
Site Web

Re : Vos réalisations de fonds d'écrans.

Hello!

J'ai réécrit le script pour faire un trombi en Go
ça donne ça


package main

import (
  "fmt"
  "io"
  "io/ioutil"
  "log"
  "net/http"
  "os"
  "os/exec"
  "regexp"
)

var (
  url          = "https://debian-facile.org/img/avatars"
  outputFolder = "images-go"
)

func download(content []byte) (string, error) {
  nameByte, err := retriveImageName(content)
  imageName := string(nameByte)

  if err != nil {
    return "", fmt.Errorf("%s", err.Error())
  }

  file, err := os.Create(fmt.Sprintf("%s/%s", outputFolder, imageName))

  if err != nil {
    return "", fmt.Errorf("Unable to create file: %s", err.Error())
  }

  defer file.Close()

  endPoint := fmt.Sprintf("%s/%s", url, imageName)
  resp, err := http.Get(endPoint)

  if err != nil {
    return "", fmt.Errorf("Unable to get image: %s", err.Error())
  }

  defer resp.Body.Close()

  _, err = io.Copy(file, resp.Body)

  if err != nil {
    return "", fmt.Errorf("Unable to write downloaded content into filesystem: %s", err.Error())
  }

  return fmt.Sprintf("%s downloaded successfully from %s", imageName, endPoint), nil
}

func retriveImageName(b []byte) (string, error) {
  imgRegexp, err := regexp.Compile(`\"(.*?)\"`)

  if err != nil {
    return "", err
  }

  found := imgRegexp.Find(b)

  ok, err := regexp.Match(`.png|.gif|.jpg|jpeg`, found)

  if err != nil || !ok {
    return "", fmt.Errorf("%s is not a valid image source", string(found))
  }

  name := string(found)
  name = name[:len(name)-1]
  name = name[1:]

  return name, nil
}

func crawl(body []byte) {
  hrefRegexp, err := regexp.Compile(`href="(.*?)\"`)

  if err != nil {
    log.Printf("%s\n", err.Error())
  }

  hrefBytes := hrefRegexp.FindAll(body, -1)

  ch := make(chan string)

  defer close(ch)

  for _, href := range hrefBytes {
    go func(h []byte) {
      downloaded, err := download(h)

      if err != nil {
        ch <- err.Error()
      } else {
        ch <- downloaded
      }
    }(href)
  }

  for i := 0; i < len(hrefBytes); i++ {
    select {
    case image := <-ch:
      log.Println(image)
    }
  }
}

func main() {
  res, err := http.Get(url)

  if err != nil {
    panic(fmt.Sprintf("Unable to fetch debian facile page: %s", err.Error()))
  }

  defer res.Body.Close()

  bodyBytes, err := ioutil.ReadAll(res.Body)

  if err != nil {
    panic(fmt.Sprintf("Unable to read request body: %s", err.Error()))
  }

  crawl(bodyBytes)
  cmd := exec.Command("montage", outputFolder+"/*.jpg", outputFolder+"/*png", outputFolder+"/-title", "trombi", "trombi-go.png")
  err = cmd.Run()
  if err != nil {
    log.Fatal(err)
  }
}
 



Ça pourrait être mieux mais bon je considère ce code comme une première version.

Niveau benchmark, comparé au script bash ça donne ça:

./trombi  (go) 6,10s user 0,53s system 96% cpu 6,867 total
./trombi.sh (bash) 36,34s user 11,76s system 37% cpu 2:08,02 total



Bref, je vais améliorer certaines choses histoires de gagner un peu de temps

EDIT

Réécriture du code:

main.go


package main

import (
  "gitlab.com/df-trombi/crawler"
)

var (
  url          = "https://debian-facile.org/img/avatars"
  outputFolder = "images-go"
)

func main() {
  crawler := crawler.New().SetURL(url).SetOutputDirectory("images-go").SetFormats(".png", ".jpg", ".jpeg", ".gif")
  crawler.Crawl()
}
 



helper/helper.go


package helper

import (
  "io/ioutil"
  "net/http"
)

// GetResponseBody open, get and close request body
func GetResponseBody(response *http.Response) ([]byte, error) {
  bodyReader := response.Body

  defer response.Body.Close()

  bodyBytes, err := ioutil.ReadAll(bodyReader)

  if err != nil {
    return nil, err
  }

  return bodyBytes, nil
}
 



crawler/crawler.go


package crawler

import (
  "fmt"
  "io"
  "log"
  "net/http"
  "os"
  "os/exec"
  "regexp"

  "gitlab.com/df-trombi/helper"
)

func (c *Crawler) download(content []byte) (string, error) {
  nameByte, err := c.retriveImageName(content)
  imageName := string(nameByte)

  if err != nil {
    return "", fmt.Errorf("%s", err.Error())
  }

  file, err := os.Create(fmt.Sprintf("%s/%s", c.outputDirectory, imageName))

  if err != nil {
    return "", fmt.Errorf("Unable to create file: %s", err.Error())
  }

  defer file.Close()

  endPoint := fmt.Sprintf("%s/%s", c.url, imageName)
  resp, err := http.Get(endPoint)

  if err != nil {
    return "", fmt.Errorf("Unable to get image: %s", err.Error())
  }

  defer resp.Body.Close()

  _, err = io.Copy(file, resp.Body)

  if err != nil {
    return "", fmt.Errorf("Unable to write downloaded content into filesystem: %s", err.Error())
  }

  return fmt.Sprintf("%s downloaded successfully from %s", imageName, endPoint), nil
}

func (c *Crawler) retriveImageName(b []byte) (string, error) {
  imgRegexp, err := regexp.Compile(`\"(.*?)\"`)

  if err != nil {
    return "", err
  }

  found := imgRegexp.Find(b)

  ok, err := regexp.Match(`.png|.gif|.jpg|jpeg`, found)

  if err != nil || !ok {
    return "", fmt.Errorf("%s is not a valid image source", string(found))
  }

  name := string(found)
  name = name[:len(name)-1]
  name = name[1:]

  return name, nil
}

func (c *Crawler) crawl(body []byte) {
  hrefRegexp, err := regexp.Compile(`href="(.*?)\"`)

  if err != nil {
    log.Printf("%s\n", err.Error())
  }

  hrefBytes := hrefRegexp.FindAll(body, -1)

  ch := make(chan string)

  defer close(ch)

  for _, href := range hrefBytes {
    go func(h []byte) {
      downloaded, err := c.download(h)

      if err != nil {
        ch <- err.Error()
      } else {
        ch <- downloaded
      }
    }(href)
  }

  for i := 0; i < len(hrefBytes); i++ {
    select {
    case image := <-ch:
      log.Println(image)
    }
  }
}

// Crawler struct
type Crawler struct {
  url             string
  outputDirectory string
  formats         []string
}

// SetFormats fluent format setter for Crawler
func (c *Crawler) SetFormats(formats ...string) *Crawler {
  c.formats = formats
  return c
}

// GetFormats formats getter for Crawler
func (c *Crawler) GetFormats() []string {
  return c.formats
}

// SetURL fluent url setter for Crawler
func (c *Crawler) SetURL(url string) *Crawler {
  c.url = url
  return c
}

// SetOutputDirectory fluent outputDirectory setter for Crawler
func (c *Crawler) SetOutputDirectory(directory string) *Crawler {
  c.outputDirectory = directory
  return c
}

// GetOutputDirectory outputDirectory getter for Crawler
func (c *Crawler) GetOutputDirectory() string {
  return c.outputDirectory
}

// GetURL url getter for Crawler
func (c *Crawler) GetURL() string {
  return c.url
}

// New get new Crawler
func New() *Crawler {
  return &Crawler{}
}

func (c *Crawler) buildOutputFilePath() []string {
  var res []string
  for _, format := range c.formats {
    res = append(res, fmt.Sprintf("%s/*%s", c.outputDirectory, format))
  }
  return res
}

func (c *Crawler) buildCommand() *exec.Cmd {
  arg := c.buildOutputFilePath()
  arg = append(arg, "-title")
  arg = append(arg, "trombi")
  arg = append(arg, "trombi-go.png")
  return exec.Command("montage", arg...)
}

// Crawl url
func (c *Crawler) Crawl() {
  // get pointeur of Response object
  res, err := http.Get(c.url)

  if err != nil {
    panic(fmt.Sprintf("Unable to fetch debian facile page: %s", err.Error()))
  }

  // open, get and close response body
  bodyBytes, err := helper.GetResponseBody(res)

  if err != nil {
    panic(fmt.Sprintf("Unable to read request body: %s", err.Error()))
  }

  c.crawl(bodyBytes)

  cmd := c.buildCommand()
  err = cmd.Run()

  if err != nil {
    log.Fatal(err)
  }
}
 




C'est un peu plus propre smile

PS: ouais je sais que l'utilisation de getter/setter en go n'est pas vraiment une bonne pratique, on va dire que j'ai mes réflexes de dev java..

Dernière modification par Maximilien LIX (08-04-2019 21:24:03)

Hors ligne

#227 07-04-2019 10:11:28

tophechris94
Membre
Lieu : val de marne ( 94)
Distrib. : debian unstable
Noyau : 5.10.0-8-686-pae
(G)UI : openbox
Inscription : 08-07-2016
Site Web

Re : Vos réalisations de fonds d'écrans.

Salut a tous , un fond d écran debian facile tongue
1554628235-debian-facile.png

sparkylinux-ver-fluxbox-icewm=> https://mega.nz/file/jJ8hiJBD#rhy5o3GzC … RFSeokkwFo
je viens en paix , pas taper sur la tete .

Hors ligne

#228 21-08-2021 17:11:06

Yal
Membre
Distrib. : Debian GNU/Linux 11
Noyau : 5.10.0-8
(G)UI : Xfce
Inscription : 16-07-2021
Site Web

Re : Vos réalisations de fonds d'écrans.

Hello,

Je n'ai pas trouvé de topic plus récent, mais je me dis que c'est pas plus mal de poster ça ici. Au cas où ça intéresserait quelqu'un(e), j'ai mis en ligne une poignée de wallpapers dédiés à Debian (et à Xfce),

Screenshot-2021-08-21-17-53-06.jpg

Si vous vous posez encore la question, naaaan je ne suis pas graphiste... tongue lol

Les images sont dispo sur mon Git, sur Codeberg. Le dossier SVG contient les originaux modifiables dans Inkscape (ou autre), le dossier PNG contient une version finale de chaque image en 2580x1440 qui s'affichera sans déformation sur les écrans 16:9, quoi (genre 1920x1080). Une des images est en mode portrait (vertical) et en 1920x1080 pour coller à mon second écran qui est orienté comme ça.

En dehors de ca j'ai d'autres wallpapers accumulés depuis des années et dont je ne suis pas l'auteur, je sais donc pas si j'ai le droit de les partager. N'hésitez pas à partager les vôtres: y a personne qui a fait de nouveaux wallapers Debian depuis le dernier post dans ce topic ? wink

Hors ligne

#229 21-08-2021 18:03:29

arpinux
CA Debian-Facile
Lieu : Montréal d'aude
Distrib. : nakeDeb
Noyau : Linux 6.1 amd64
(G)UI : sway - i3wm - fluxbox
Inscription : 30-06-2016
Site Web

Re : Vos réalisations de fonds d'écrans.

^^ merci beaucoup pour ces fonds d'écran !
trop classe pour XFCE !!
je me permets ... on pourrait te les piquer pour les coller dans la prochaine DFiso Bullseye ?? smile

nous sommes tous différents ... c'est notre point commun ...
Association Debian-Facile - Les cahiers du débutant - ISO Debian-Facile - 3hg - nakeDeb
GNU/Linux©2006-2024

Hors ligne

#230 21-08-2021 19:32:54

Yal
Membre
Distrib. : Debian GNU/Linux 11
Noyau : 5.10.0-8
(G)UI : Xfce
Inscription : 16-07-2021
Site Web

Re : Vos réalisations de fonds d'écrans.

arpinux a écrit :

^^ merci beaucoup pour ces fonds d'écran !
trop classe pour XFCE !!
je me permets ... on pourrait te les piquer pour les coller dans la prochaine DFiso Bullseye ?? smile



Bien entendu. J'en serais ravi smile

Edit: je ne sais pas si tu comptes utiliser les SVG pour cela, mais dans ce cas ils risquent de be pas être utilisables directement: y a plein de de choses qui "dépassent" des bords de la page... J'en suis encore à apprendre à utiliser Inkscape et, ben, j'avance doucement wink

Et si tu as besoin de plus de formats pour les PNG, fais-moi signe.

Dernière modification par Yal (21-08-2021 19:35:58)

Hors ligne

#231 25-08-2021 17:25:41

Yal
Membre
Distrib. : Debian GNU/Linux 11
Noyau : 5.10.0-8
(G)UI : Xfce
Inscription : 16-07-2021
Site Web

Re : Vos réalisations de fonds d'écrans.

Pour les amateurs/trices, j'ai ajouté quelques variations colorées:

preview.jpg

@arpinux: ils sont bien entendu tous à la disposition de DF si l'idée tient toujours, et de tout le monde qui le souhaite en fait wink

La majorité est proposée en version paysage et portrait (sauf les derniers dans l'aperçu), en PNG et en SVG (modifiables dans Inkscape). Il sont toujours hébégergé chez Codeberg, un Git pas prise de tête et sans Microsoft tongue

Dernière modification par Yal (25-08-2021 17:44:24)

Hors ligne

#232 25-08-2021 19:43:11

seb95
Membre
Distrib. : openSUSE Tumbleweed et Debian 12
(G)UI : GNOME, Xfce et KDE
Inscription : 19-02-2017
Site Web

Re : Vos réalisations de fonds d'écrans.

Magnifique!!!

Hors ligne

#233 25-08-2021 20:23:03

Yal
Membre
Distrib. : Debian GNU/Linux 11
Noyau : 5.10.0-8
(G)UI : Xfce
Inscription : 16-07-2021
Site Web

Re : Vos réalisations de fonds d'écrans.

Merci wink

Hors ligne

#234 25-08-2021 21:37:40

SuShY
CA Debian-Facile
Lieu : Chartres
Distrib. : Debian Sid x86_64
Noyau : Linux > 6.0.0-2-amd64
(G)UI : i3WM - 4.21-1
Inscription : 06-01-2018
Site Web

Re : Vos réalisations de fonds d'écrans.

Très sympa, merci !

Hors ligne

#235 27-08-2021 12:32:06

Herve33
Membre
Lieu : Mérignac 33
Distrib. : Debian 12 Xfce
Inscription : 21-09-2016

Re : Vos réalisations de fonds d'écrans.

Oui super beaux !!! merci.gif

Acer Aspire 5733 - Debian 12 Xfce

Hors ligne

#236 03-09-2021 01:17:43

arpinux
CA Debian-Facile
Lieu : Montréal d'aude
Distrib. : nakeDeb
Noyau : Linux 6.1 amd64
(G)UI : sway - i3wm - fluxbox
Inscription : 30-06-2016
Site Web

Re : Vos réalisations de fonds d'écrans.

et hop, merci Yal big_smile
fonds ajoutés dans DFiso-Bullseye. https://debian-facile.org/git/ProjetsDF … 8624ebcab9
j'ai juste renommé pour ajouter "*-par-Yal-CC-BY" et j'ai ajouté la licence dans le fichier général de DFiso https://debian-facile.org/git/ProjetsDF … abf3ed77c7

merci encore wink

nous sommes tous différents ... c'est notre point commun ...
Association Debian-Facile - Les cahiers du débutant - ISO Debian-Facile - 3hg - nakeDeb
GNU/Linux©2006-2024

Hors ligne

#237 03-09-2021 19:56:41

Yal
Membre
Distrib. : Debian GNU/Linux 11
Noyau : 5.10.0-8
(G)UI : Xfce
Inscription : 16-07-2021
Site Web

Re : Vos réalisations de fonds d'écrans.

Merci à toi! Je ne m'attendais pas à les voir apparaitre sur l'ISO (très content de trouver le PinkFlamingo dans ta sélection, btw) wink

En espérant que fournir les SVG (voir sur le repo git) encourage d'autres à en faire et à les partager : y a jamais assez de wallpapers tongue

@Herve33: merci wink

Dernière modification par Yal (03-09-2021 19:57:17)

Hors ligne

#238 13-02-2024 22:10:32

TyZef
Membre
Lieu : Clan d'Eau.
Distrib. : ~ Debian 12 noDE ~ inspired by nakeDeb ~
Noyau : Linux 6.1.0-18-amd64
(G)UI : OB3
Inscription : 09-05-2013

Re : Vos réalisations de fonds d'écrans.

file-R5a8fcbe588d0d41587035d3d4dde00b8
file-R6ef31ce97c4987cff3a8ae919259171f

« De deux choses lune, l’autre c’est le soleil » - Barbara Prévert.

Hors ligne

#239 13-02-2024 22:19:50

arpinux
CA Debian-Facile
Lieu : Montréal d'aude
Distrib. : nakeDeb
Noyau : Linux 6.1 amd64
(G)UI : sway - i3wm - fluxbox
Inscription : 30-06-2016
Site Web

Re : Vos réalisations de fonds d'écrans.

^^ j'aime beaucoup le thème de couleur du conky et ta banane/lune/hamac smile
tu as chopé un theme color particulier ?

nous sommes tous différents ... c'est notre point commun ...
Association Debian-Facile - Les cahiers du débutant - ISO Debian-Facile - 3hg - nakeDeb
GNU/Linux©2006-2024

Hors ligne

#240 13-02-2024 22:33:19

TyZef
Membre
Lieu : Clan d'Eau.
Distrib. : ~ Debian 12 noDE ~ inspired by nakeDeb ~
Noyau : Linux 6.1.0-18-amd64
(G)UI : OB3
Inscription : 09-05-2013

Re : Vos réalisations de fonds d'écrans.

https://www.nordtheme.com/

c'était obligé que tu aimes ! haha ! sans nakeDeb je n'aurais peut être jamais découvert ce merveilleux thème !

tu remarqueras que mon avatar chelou est lui aussi en Nord, c'est le drapeau du pays du Léon ou le nord ouest finistère...

« De deux choses lune, l’autre c’est le soleil » - Barbara Prévert.

Hors ligne

#241 13-02-2024 22:35:38

TyZef
Membre
Lieu : Clan d'Eau.
Distrib. : ~ Debian 12 noDE ~ inspired by nakeDeb ~
Noyau : Linux 6.1.0-18-amd64
(G)UI : OB3
Inscription : 09-05-2013

Re : Vos réalisations de fonds d'écrans.

je me suis basé sur cette image:

file-R118b58bff96271de93bdb436c8dca5de

« De deux choses lune, l’autre c’est le soleil » - Barbara Prévert.

Hors ligne

#242 13-02-2024 22:42:54

TyZef
Membre
Lieu : Clan d'Eau.
Distrib. : ~ Debian 12 noDE ~ inspired by nakeDeb ~
Noyau : Linux 6.1.0-18-amd64
(G)UI : OB3
Inscription : 09-05-2013

Re : Vos réalisations de fonds d'écrans.

La Bretagne dans tout ses états !

800px-France_Pays_bretons_map.svg.png

« De deux choses lune, l’autre c’est le soleil » - Barbara Prévert.

Hors ligne

#243 14-02-2024 05:49:07

TyZef
Membre
Lieu : Clan d'Eau.
Distrib. : ~ Debian 12 noDE ~ inspired by nakeDeb ~
Noyau : Linux 6.1.0-18-amd64
(G)UI : OB3
Inscription : 09-05-2013

Re : Vos réalisations de fonds d'écrans.

une précision pour mon avatar, je l'ai choisis car j'aime beaucoup le drapeau du Léon. mais ça s'arrête là, donc rien avec les comtés et évêchés...

1024px-Banniel_Bro_Leon.svg.png

Dernière modification par TyZef (14-02-2024 05:50:58)


« De deux choses lune, l’autre c’est le soleil » - Barbara Prévert.

Hors ligne

#244 14-02-2024 09:01:30

TyZef
Membre
Lieu : Clan d'Eau.
Distrib. : ~ Debian 12 noDE ~ inspired by nakeDeb ~
Noyau : Linux 6.1.0-18-amd64
(G)UI : OB3
Inscription : 09-05-2013

Re : Vos réalisations de fonds d'écrans.

On m'a demandé la version Dracula, Dracula que Thuban-PRX m'a fait découvrir, sur le forum de nakeDeb(uh uh!):
file-Rdd2542e3b3ec32cc7b9a9afa6a4ee31d
Par contre je ne suis pas content de la répartition des couleurs, je l'ai fait à la "va vite!!!"

« De deux choses lune, l’autre c’est le soleil » - Barbara Prévert.

Hors ligne

#245 14-02-2024 09:18:57

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Vos réalisations de fonds d'écrans.

hello
tu utilises pas caca-utils pour faire ce genre de fond?

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#246 14-02-2024 12:58:23

TyZef
Membre
Lieu : Clan d'Eau.
Distrib. : ~ Debian 12 noDE ~ inspired by nakeDeb ~
Noyau : Linux 6.1.0-18-amd64
(G)UI : OB3
Inscription : 09-05-2013

Re : Vos réalisations de fonds d'écrans.

oh non non, but big up to http://caca.zoy.org/

j'utilise: https://www.asciiart.eu/image-to-ascii

et aussi parfois: http://www.patorjk.com/software/taag/#p … mething%20
ps: une fois ton exemple tapé, n'hésite pas à cliquer sur [Test All] pour avoir la totalité des propositions

« De deux choses lune, l’autre c’est le soleil » - Barbara Prévert.

Hors ligne

#247 14-02-2024 13:37:13

lagrenouille
CA Debian-Facile
Lieu : Toulouse
Distrib. : bookworm
Noyau : d'olive
(G)UI : xfce4 et awesome
Inscription : 28-03-2012
Site Web

Re : Vos réalisations de fonds d'écrans.

@Tyzef
pas besoin d'aller sur les sites
tu peux faire ça en  console, avec les paquets caca-utils et figlet
jp2a c'est bien aussi

Ce à quoi l'on a pas accès par l'expérience vécue, on a pas d'oreilles pour l'entendre ..Nietzsche
Cela dit, bien que toute notre connaissance s’amorce avec l’expérience, il n’en résulte pas pour autant qu’elle découle dans sa totalité de l’expérience.  E.Kant
une compréhension insane est elle forcément irrationnel ? ..lagrenouille

Hors ligne

#248 14-02-2024 20:11:12

TyZef
Membre
Lieu : Clan d'Eau.
Distrib. : ~ Debian 12 noDE ~ inspired by nakeDeb ~
Noyau : Linux 6.1.0-18-amd64
(G)UI : OB3
Inscription : 09-05-2013

Re : Vos réalisations de fonds d'écrans.

ah... je me plongerai dessus, merci beaucoup lagrenouille o/

« De deux choses lune, l’autre c’est le soleil » - Barbara Prévert.

Hors ligne

#249 14-02-2024 20:18:59

TyZef
Membre
Lieu : Clan d'Eau.
Distrib. : ~ Debian 12 noDE ~ inspired by nakeDeb ~
Noyau : Linux 6.1.0-18-amd64
(G)UI : OB3
Inscription : 09-05-2013

Re : Vos réalisations de fonds d'écrans.

J'avais aussi fais celui-ci il y a longtemps:
file-Re1abaa4c887af65b6eed3dba51be7702
Par amour pour le thème Nord.

« De deux choses lune, l’autre c’est le soleil » - Barbara Prévert.

Hors ligne

#250 14-02-2024 21:32:54

arpinux
CA Debian-Facile
Lieu : Montréal d'aude
Distrib. : nakeDeb
Noyau : Linux 6.1 amd64
(G)UI : sway - i3wm - fluxbox
Inscription : 30-06-2016
Site Web

Re : Vos réalisations de fonds d'écrans.

^^ oh comme il va finir dans le nakedlook celui-là !! merci tyzef big_smile

nous sommes tous différents ... c'est notre point commun ...
Association Debian-Facile - Les cahiers du débutant - ISO Debian-Facile - 3hg - nakeDeb
GNU/Linux©2006-2024

Hors ligne

Pied de page des forums