Hack2o page d'acceuil

Page wiki de travail de conception et déploiement d’une page d’accueil pour hack2o.eu. Voir aussi Hack2O.eu - #38 by XavCC

Les Besoins

  • Une page légère (~ 512KB max / hors carte géographique embarquée)
  • Accessibilité
  • Multilangues
  • Pas de javascript
  • pas de cdn
  • un lien vers espace « news / blog »
  • Licence
  • CGU
  • Données personnelles
  • Suggestion de couleurs pour la page (hex) 02394a ; 043565 ; 5158bb ; f26df9 ; eb4b98
  • …/robot.txt et …/security.txt

Les fonctionnalités

La technique

Backend

Frontend

Pour moi il faudrait utiliser un générateur de site statique (je penche pour Serum en ce moment) et un Discourse derrière. Je suis d’accord pour faire une page légère, et même bien moins que 512KB. Pour l’instant on est à 670 byes :slight_smile: donc on pourrait viser 32KB. Une page d’accueil qui charge vite c’est indispensable.

J’vais testé Serum, ai pas touché Erlang et Elixir depuis 2018 :scream_cat:

Ah, y’a du .js Serum/new.ex at 4181c549f9dbe4d93e3959a94e3216e054075a9c · Dalgona/Serum · GitHub

    [
      "assets/css",
      "assets/images",
      "assets/js",
      "includes",
      "media",
      "pages",
      "posts",
      "templates"
    ]

Je pense que c’est optionnel

j’ai un mix.exs

defmodule Website.MixFile do
  use Mix.Project

  def project do
    [
      app: :website,
      version: "~> 0.1.0",
      elixir: "~> 1.14",
      start_permanent: Mix.env == :prod ,
      deps: deps()
    ]
  end

  def application do
    [
      applications: [:serum]
    ]
  end

  def deps do
    [
      {:serum, ">= 1.1.0 or < 2.0.0"},
      {:serum_theme_essence, "~> 1.1.0"},
    ]
  end
end

Et toute l’après-midi il m’a rendu fou avec :scream_cat: (sans trouver l’origine du problème, ni des modifications apportant une résolution des conflit)

$ mix do deps.get, deps.compile
Resolving Hex dependencies...
Resolution completed in 0.433s
New:
  certifi 2.9.0
  combine 0.10.0
  cowboy 2.9.0
  cowlib 2.11.0
  earmark 1.4.4
  expo 0.4.1
  file_system 0.2.10
  floki 0.30.1
  gettext 0.22.1
  hackney 1.18.1
  html_entities 0.5.2
  idna 6.1.1
  metrics 1.0.1
  microscope 1.4.0
  mime 1.6.0
  mimerl 1.2.0
  parse_trans 3.3.1
  ranch 1.8.0
  serum 1.5.1
  serum_theme_essence 1.1.0
  ssl_verify_fun 1.1.6
  timex 3.7.11
  tzdata 1.1.1
  unicode_util_compat 0.7.0
** (Mix) Invalid requirement any for app serum

avec

$ mix hex.info serum                                                                           1 ↵
Yet another static website generator written in Elixir

Config: {:serum, "~> 1.5"}
Releases: 1.5.1, 1.5.0, 1.4.1, 1.4.0, 1.3.0, 1.2.0, 1.1.0, 1.1.0-pre.0, ...

Licenses: MIT
Links:
  GitHub: https://github.com/Dalgona/Serum
  Website: http://dalgona.github.io/Serum

Je commence mal dans Elixir

Ah zut. Je vais tâcher de jeter un coup d’œil demain et te passer ma config…

From Lucy https://yip.pe/

  1. it’s the designer’s fault, never the user’s fault

  2. there’s no such thing as “newbies” or “dummies”. There’s a variety of people with different motives, backgrounds and experiences. The belief in this simplistic dichotomy of “smart” vs “dumb” creates heirarchies that allow emotional toddlers to believe they are geniuses on the basis of knowing how to code in C

  3. developers, and power users deserve good UI too. we shouldn’t measure expertise on the basis of the amount of suffering we are willing to endure.

  4. every configuration switch is a failure to make a design decision.

there are a bunch of exceptions here for accessibility; but mostly, configuration isn’t freedom, it’s pointless busywork that makes documentation harder, and troubleshooting a nightmare

Convention over configuration ← Rails

Mais bon, moi ce que je préfère, c’est éditer des fichiers Markdown et faire git push pour les mettre en ligne. Cet après-midi je vais jeter un oeil à ces static website managers qui sont censés marcher tout seuls. J’en ai besoin pour éviter de faire un autre lesoiseaux.io.git que je suis pratiquement le seul à savoir bouger.

Je suis sur Debian 12 (bookworm, AKA testing).
J’ai installé elixir (version 1.14.0) et les dépendances d’Erlang.

Ensuite :

mix archive.install hex serum_new
mix serum.new /srv/www/hack2o_eu
cd /srv/www/hack2o_eu
mix deps.get
mix deps.compile
mix serum.server

Aucune erreur jusque là.

Mon mix.exs :

defmodule Hack2oEu.MixFile do
  use Mix.Project

  def project do
    [
      app: :hack2o_eu,
      version: "0.1.0",
      elixir: "~> 1.14",
      start_permanent: Mix.env == :prod,
      deps: deps()
    ]
  end

  def application do
    [
      applications: [:serum]
    ]
  end

  defp deps do
    [
      {:serum, "~> 1.5"}
    ]
  end
end

Alors soit le theme_essence est brûlé, soit il te manque des headers. Ou bien tu as plusieurs versions d’elixir installées ?

Si tu veux on se fait une session rapide quand tu as un moment.

Bon, je suis passé à la phase suivante qui consiste à ajouter la ligne {:serum_theme_essence, "~> 1.0"} et là, :boom: ça foire exactement comme pour toi.

Sur cette ligne j’ai defp deps do. Pas sûr que cela change quoi que ce soit… L’erreur est la même avec ou sans le p. defp définit une fonction privée, donc mieux vaut probablement le conserver.

@XavCC, dans la série WTF, je te présente : , override: true

  defp deps do
    [
      {:serum, "~> 1.5", override: true},
      {:serum_theme_blaze, "~> 1.1"}
    ]
  end

(Le thème Blaze fait partie des trucs que j’ai essayé, cela ne devrait pas changer grand chose à l’affaire. Mais le override vire l’erreur…)

Moi pas comprendre

Cf. elixir - (Mix) Hex dependency resolution failed - Stack Overflow

1 Like