Elixir

652 readers
4 users here now

founded 2 years ago
MODERATORS
26
27
28
29
 
 

Elixir is a dynamically-typed functional language running on the Erlang Virtual Machine, designed for building scalable and maintainable ...

30
 
 

Published: Tail-Recursive & Body-Recursive Function Performance Across Elixir & BEAM versions – what’s the impact of the JIT?

Watch me go through @elixir and erlang versions from 1.6 @ OTP 21 up to 1.16 @ OTP 26 and marvel at our performance gains.

https://pragtob.wordpress.com/2024/01/08/tail-recursive-body-recursive-function-performance-across-elixir-beam-versions-whats-the-impact-of-the-jit/

31
6
submitted 2 years ago* (last edited 2 years ago) by stifle867@programming.dev to c/elixir@programming.dev
 
 

This only comes around once a year and is a great time to pick up some of their great courses using promo code 2023THANKS.

  • Elixir & OTP ~~$149~~ down to $89
  • Phoenix LiveView ~~$129~~ down to $77
  • Full-Stack GraphQL with Phoenix ~~$99~~ down to $59
32
 
 

at https://hexdocs.pm/open_api_spex/3.2.0/readme.html there's a definition of a module User

defmodule MyApp.Schemas do
  alias OpenApiSpex.Schema

  defmodule User do
    @behaviour OpenApiSpex.Schema
    @derive [Jason.Encoder]
    @schema %Schema{
      title: "User",
      description: "A user of the app",
      type: :object,
      properties: %{
        id: %Schema{type: :integer, description: "User ID"},
        name:  %Schema{type: :string, description: "User name"},
        email: %Schema{type: :string, description: "Email address", format: :email},
        inserted_at: %Schema{type: :string, description: "Creation timestamp", format: :datetime},
        updated_at: %Schema{type: :string, description: "Update timestamp", format: :datetime}
      },
      required: [:name, :email],
      example: %{
        "id" => 123,
        "name" => "Joe",
        "email" => "joe@gmail.com"
      }
      "x-struct": __MODULE__
    }
    def schema, do: @schema
    defstruct Map.keys(@schema.properties)
  end

In order to avoid re-describing it like that for Open API Specs whilst having already done so for Ecto, is it possible to combine the two definitions in a single module somehow? That is, my Ecto schema User would serve its purpose for Open API Specs too. With some required tweaks.

And if I do combine them, won't this mess up with the methods of the 2 modules and other things?

33
 
 

Djot is a markdown alternative, created by John MacFarlane, creator of Pandoc and spec author of CommonMark. It aims to fix many of the little issues Markdown has, and does a pretty good job of it, imo.

34
 
 

In a third-party project, in the models, I've encountered functions like this:

  def changeset(model \\ %__MODULE__{}, params) do
    model
    |> cast(params, @required_fields ++ @optional_fields)
    |> validate_required(@required_fields)
  end

How can a function have a default argument which is both a) first and b) followed by a mandatory one?

What's interesting, they work properly.

35
36
 
 

@axelson demoing a 7-color e-ink display powered by @elixir and @NervesProject. Super cool!

#MyElixirStatus #ElixirConf2023

37
38
39
40
41
 
 

I was wondering if there were any BDD/TDD projects or tutorials that anyone could recommend?

I'm currently learning elixir and when I was learning rust, I really enjoyed a tutorial called pngme. It has test cases and a specification but left you to implement everything else. Link to pngme: https://picklenerd.github.io/pngme_book/introduction.html

Does anyone know of any similar projects but for elixir?

Thanks in advance

42
43
 
 
44
45
46
 
 

Against the Grain: tricky situations and how to get ourselves out of them by making some atypical choices: learn from
@sasajuric at #CodeBEAMEurope 2023 🙌https://codebeameurope.com/

#codebeam #myelixirstatus #elixirinaction #elixirlang @elixir

47
48
49
50
view more: ‹ prev next ›