elixir-type_check
mint
Our great sponsors
elixir-type_check | mint | |
---|---|---|
5 | 3 | |
510 | 1,328 | |
- | 1.2% | |
5.9 | 7.5 | |
10 months ago | 2 months ago | |
Elixir | Elixir | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
elixir-type_check
-
Elixir and Phoenix can do it all
Use this until the one built into the language is ready. It has incredibly low performance impact too.
-
Do people actually use @spec? Do you find it useful?
I'm using type check so I'm using @spec!. But basically the same thing. It's great and it can catch nils when I don't expect there to be any. Great to ensure null safety even if the language itself doesn't support it. Just this alone is killer feature for me.
-
What is the Elixir language used for ?
Because Elixir has TypeScript types build in. It has strong types in runtime. 42 != "42", try doing this in TypeScript. Plus there's a library for runtime type checking. https://github.com/Qqwy/elixir-type_check
- TypeCheck: Fast and flexible runtime type-checking for your Elixir projects
mint
-
Unpacking Elixir: Resilience
One example is HTTP libraries.
For instance, take Mint (https://github.com/elixir-mint/mint):
> Mint is different from most Erlang and Elixir HTTP clients because it provides a process-less architecture.
Mint is a low-level library which doesn't make attempt to manage processes (including HTTP pooling).
In contrast, Finch (which builds on top of Mint) includes pool management:
https://github.com/elixir-mint/mint#connection-management-an...
It can take someone a bit off guard when they realise that the library they use provide a "default pool" they were not aware of, and that it can become a bottleneck etc.
-
How to implement a disk cache plugin for Elixir's Req HTTP client?
> no error checking at all
Functions that raise always end in `!` in Elixir, or at least they should. Most have alternatives that return error tuples instead which you can pattern match on (this is what I recommend). You can read the docs for `get/2` (as opposed to `get!/2` which raises) here: https://hexdocs.pm/req/Req.html#get/2.
A common pattern is for the `!` version to call the version that doesn't raise, check the result, and raise on error, which is the case here: https://github.com/wojtekmach/req/blob/9de30de0df481ee557ccc...
> and if "body" is JSON, how do you even get the raw body, or can you?
You would set `decode: false` when calling `get!/2: https://hexdocs.pm/req/Req.html#new/1. You can also set this as configuration with https://hexdocs.pm/req/Req.html#default_options/1.
As a closing note I'll mention that Req is intended to be a very high-level, scripting-friendly requests library, similar to Requests in Python. If you don't want conveniences like Req provides, you can either turn them off or use something different, like Finch (which Req is based on, https://github.com/sneako/finch). Other than Req and Finch I'm personally only familiar with HTTPoison, which is significantly older than all of the libraries derived from Mint (like Finch and Req, https://github.com/elixir-mint/mint) but still works. There are many others though, like Gun and Tesla and such.
- ElixirのHTTPクライアントでお天気情報を取得したい(2022年)
What are some alternatives?
hammox - 🏝 automated contract testing via type checking for Elixir functions and mocks
finch - Elixir HTTP client, focused on performance
real world example app - Exemplary real world application built with Elixir + Phoenix
gun - HTTP/1.1, HTTP/2, Websocket client (and more) for Erlang/OTP.
StreamData - Data generation and property-based testing for Elixir. 🔮
Crawly - Crawly, a high-level web crawling & scraping framework for Elixir.
Drab - Remote controlled frontend framework for Phoenix.
http_proxy - http proxy with Elixir. wait request with multi port and forward to each URIs
exp - Elixir library to statically inline expressions at compile time
lhttpc - What used to be here -- this is a backwards-compat user and repo m(
re - Elixir library for writing readable regexes in functional style
ivar - Ivar is an adapter based HTTP client that provides the ability to build composable HTTP requests.