teleren/devto huggingface dataset:
RFC 準拠的な JSON 形式について
Tags: json
Published: 2020-01-21 03:10:47


## 目的

そもそもトップレベルで true や false そして null を書いたとしても JSON なのかを知りたい。

## 結論

最新の RFC では、なんでもよくなってた。

## RFC読んでみる

もともと RFC が出たのが 2006 年のお話。そこでは JSON-text は Object か Array がトップレベルと明記されてる。

- [RFC 4627 - The application/json Media Type for JavaScript Object Notation (JSON)](https://tools.ietf.org/html/rfc4627)

```
JSON-text = object / array
```

で、話は 2014 年へ。4627 が Obsolete されている。

- [RFC 7159 - The JavaScript Object Notation (JSON) Data Interchange Format](https://tools.ietf.org/html/rfc7159)

```
JSON-text = ws value ws

value = false / null / true / object / array / number / string
```

何でも良くなってる。
Erlang VM 上でユニークな数値を生成する
Tags: erlang
Published: 2020-01-21 03:09:19


Erlang/OTP 18.x から erlang:now/0 が使えなくなった。では Erlang VM 上でのユニークな値をどうやって生成するのか。

## 方法

erlang:unique_integer/0,1 を使用する。

```
Erlang/OTP 18 [erts-7.2.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Eshell V7.2.1  (abort with ^G)
1> erlang:unique_integer([positive, monotonic]).
1
2> erlang:unique_integer([positive, monotonic]).
2
```

このまま +1 ずつ加算されていく。この値はメモリが許す限り増えていく。

erlang:unique_integer/1 で positive と monotonic を指定することで、 Erlang VM 上で保証される連番が生成される。これは様々なプロセスから生成したとしてもユニークが保証されている。もちろん Erlang VM 上で、なので複数ノードとかでは保証されない。

## もっと詳しく知りたい

詳細はこれを読めば良い。

[Erlang/OTP 18 の新しい時刻関連 API とタイムワープモード - Qiita](http://qiita.com/tatsuya6502/items/6d440218811e3a4f0d2c)
私的な 2015 年 Erlang/OTP 振り返り
Tags: erlang
Published: 2020-01-21 03:07:03

## Erlang/OTP 18 系のリリース

[Erlang Programming Language Erlang/OTP 18.0 has been released](http://www.erlang.org/news/88)

- ライセンスが APL 2.0 へ
- スケジューラー周りが整理されパフォーマンスが良くなった
- 18.0 がバイナリーメモリーリークを持っているというオチ。
- ets:update_counter/4 、デフォルト値取れるようになったの本当に大きい
- 時間が整理された、これで時間がクソということもなくなった
- map が実験的リリースじゃなくなった

## rebar3

[rebar3](https://www.rebar3.org/)

色々頑張って出てきて、そろそろ移行できそうだなーという感じ。rebar お疲れ様。

## DTLS 1.0/1.2 の実装

Erlang で 1 から DTLS 実装してみたけど、動いて良かった。gen_fsm って意外に使えるんだなと思ったり。思ってるより実装すればできるもんだという自信がついた。

ただ TLS と混在させたり 1.0 と 1.2 を混在させたりするのは死ぬ。ツライ。

## Elixir

いろいろなところで流行っていて良い感じ。Elixir が流行ると Erlang へのフィードバックも増えるのは嬉しい。

自分が使うことはないが、このままの勢いで頑張っていって欲しい。

## crypto の EVP 対応

crypto の AES-CBC 以外は AES-NI に非対応なので、色々パッチを送ってもらったが、 19 で一通り EVP 対応になるようだ。よかった。

## relx

皆 relx を使うようになったようだ。rebar3 や relx のテンプレートエンジンは @soranoba 氏が書いてるというのを皆もっと知った方がいい。

## RabbitMQ 3.6.0 リリース

Cowboy 作者が手を入れて TCP は非同期なアンドキュメントライブラリから ranch へ。
そしてビルドは erlang.mk になった。とても素晴らしい事だ。

## Erlang の限界

**１プロセスの性能という面で Erlang の限界と向き合った一年だった**

Erlang の場合性能は I/O 周りか、プロセスキューのどちらかが課題になることがほとんどだろう。もちろん暗号であれば CPU 問題もあるが、まぁそれは置いておく。

その辺を考えて Golang や Rust を検討はしていたのだが、結局のところ単体の性能（暗号やコーデック、演算処理以外）を考えるのであればそもそも分散させてしまった方が良い。

単体の性能を求めるのであれば Golang を頑張る、ただ Erlang で分散させた方が現実的なのではないかというオチまではたどり着いた。

Docker と Consul を組み合わせたりしてクラスタリングをうまく簡単に作る仕組みを作っていった方が良いのではないか。

もちろん 1 プロセスの性能が遅すぎてつらくなるというのは今後もでてくるだろう。そのときは苦労して Golang でリライト、その課題をあきらめるかという選択肢をとることにする。

## Issue Tracker の公開

http://bugs.erlang.org/secure/Dashboard.jspa

今まで非公開だったのが公開された。これは大きな一歩だ。

## これからの Erlang

19 系では公式なパッケージマネージャーが入る。 rebar や erlang.mk とどううまくやっていくのか気になる。

18.3 は 2016 年の四月頃、19 は 2016 年の 夏頃と考えて良いだろう。

長期的な視点がまずある。

- Error Logging は今のちょっとしょぼいところから脱却
- Erlang Node の 100 以上で動かす話
- cross コンパイルや embedded コンパイルの話
	- クロスコンパイルは早く来て欲しい ... すでに来ているがさくっとできない

長期的な視点だと課題である性能にやはり注目している。

- JIT
- I/O 部分

Erlang に足りないというか、求めるのが難しいのはわかっているがパフォーマンスだ。Erlang がかなり不満なく早くなるとなれば、もう Erlang でいいよねになることは間違いない。

性能に少しでも貢献できるように勉強していかねばならないと思っている。
Mnesia の dirty_update_counter/3 を使う
Tags: erlang
Published: 2020-01-21 02:57:46


mnesia に カウンターを扱う関数があるので使って見たメモ。

- レコードが無ければ作ってくれる
- 加算後の値を返してくれる

```
$ erl
Erlang/OTP 17 [erts-6.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Eshell V6.1  (abort with ^G)
1> mnesia:start().
ok
2> rd(store, {key, value}).
store
3> mnesia:create_table(store, []).
{atomic,ok}
4> mnesia:dirty_update_counter(store, <<"spam">>, 1).
1
5> mnesia:dirty_update_counter(store, <<"spam">>, 1).
2
6> mnesia:dirty_update_counter(store, <<"spam">>, 1).
3
7> mnesia:dirty_update_counter(store, <<"spam">>, 1).
4
8> mnesia:dirty_read(store, <<"spam">>).
[#store{key = <<"spam">>,value = 4}]
9> mnesia:dirty_update_counter(store, <<"egg">>, 1).
1
10> mnesia:dirty_read(store, <<"egg">>).
[#store{key = <<"egg">>,value = 1}]
10> timer:tc(fun() -> mnesia:dirty_update_counter(store, <<"spam">>, 1) end).
{45,6}
```

シングルノードであれば 45 マイクロセカンドと高速です。ただ ets だと一桁台なので、カウンターの性能に引っ張られる可能性もありますね。
gproc で指定したプロセスに登録されているキー一覧を取得する
Tags: erlang
Published: 2020-01-21 02:57:20


gproc:info/2 を使う。

```
Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false] [dtrace]

Eshell V5.10.4  (abort with ^G)
1> application:start(gproc).
ok
2> gproc:add_local_property(<<"abc">>, 1).
true
3> gproc:info(self(), gproc).
{gproc,[{{p,l,<<"abc">>},1}]}
```
負荷試験サービス調べてみた
Published: 2020-01-21 02:55:54


## 目的

世の中の負荷試験サービスがどれくらいあって、どんな感じなのかちょっと調べてみた。

## 海外

- [JMeter Load Testing Cloud](http://blazemeter.com/)
- [Performance and Load Testing from the Cloud - Blitz by Spirent](https://www.blitz.io/)
- [On Demand Load Testing for Developers & Testers | Load Impact](http://loadimpact.com/)
- [Application Load Testing Tools for API Endpoints with loader.io](https://loader.io/)
- [HTTP API Performance analysis with StormForger Load Testing](https://stormforger.com/)
- [Oracle Testing-as-a-Service](http://www.oracle.com/technetwork/oem/cloud-mgmt/testing-as-a-service--1905801.html)
- [Apica | Advanced Load Testing Solutions. Flexible Load Testing Service Plans](https://www.apicasystem.com/load-testing/)
- [RedLine13 | (Almost) Free Load Testing in the Cloud](https://www.redline13.com/)
- [Cloud Based Load Testing Tools | LoadStorm](http://loadstorm.com/)
- [Cloud Load Testing for Everyone with JMeter and Gatling | Flood IO](https://flood.io/)
- [Load Testing Cloud Tool for APIs, Websites and Performance Testing for Applications](https://loadfocus.com/)
- [Cloud Testing with CloudTest | Cloud Based Load Testing | SOASTA](http://www.soasta.com/products/cloudtest/)
- [Load and Performance Testing from the Cloud](http://www.neotys.com/introduction/neoload-cloud-testing.html)
- [Loadster - Load & Stress Testing Software for High-Performance Web Apps](http://www.loadsterperformance.com/)

## 国内

- [SOASTA CloudTest ～負荷テストを手軽に～ | バーチャルコミュニケーションズ](http://cloudtest.vccorp.net/img/img_main.jpg)

- [JMeter互換 Webサイト負荷テスト クラウドサービス](http://www.enterprise-cloudservices.com/)
- [負荷検証プラン | ナレコムクラウド](http://kc-cloud.jp/service04.html)
- [無料パフォーマンステスト | 負荷テスト](https://catmdes.com/features/performance-test/)

## わかったこと

海外では完全なレッドオーシャンだということがわかった ... 。国内でもちらほら。

負荷試験ツールだけだと嬉しくなくて結局モニタリングツールも欲しくなる。

儲かってるかどうかがまったくわからないのがツライ。
Javscript Async Reduce
Tags: javascript, typescript
Published: 2020-01-21 02:53:00

`Array.reduce` is a pretty powerful function but I wanted to share a technique that I have found useful, serial execution of `async` functions.

```js
const asyncs = [asyncFn, asyncFn1, asyncFn2, ...];

//Simple execution with no results
await asyncs.reduce((promise, asyncFn) => promise.then(asyncFn),
  Promise.resolve());

//Save results to an array
const asyncResults = await asyncs.reduce((promise, asyncFn) => 
  promise.then(results =>
    asyncFn()
      .then(newResult => [...results, newResult])), 
  Promise.resolve([]));

```

Hope you found this helpful. If you got any other reduce use cases please let me know by leaving a comment.
Pock an awesome utility for the Mac Touchbar
Tags: productivity, macos
Published: 2020-01-21 02:51:30

I'm on a Mac and I honestly have no use for the Dock. I actually hide it for an eternity so it never appears by running the following command.

`defaults write com.apple.Dock autohide-delay -float 1000000`

I use Alfred and that basically gives me all I really need in terms of opening apps and then I can use <kbd>⌘</kbd> + <kbd>TAB</kbd> to switch apps.

I also do not really use the touch bar except for mapping it to function keys (<kbd>F1</kbd> - <kbd>F12</kbd>) when I have a browser open or VS Code.

![Keyboard preferences for mapping function keys in touch bar for certain apps](https://thepracticaldev.s3.amazonaws.com/i/5xj2scviq8o2kivnyhy0.png)

Having said that, I came across a very interesting project a few weeks ago called Pock that lets you put the Dock into the touch bar. This combined with "permanently" hiding the Dock makes the touch bar more useful for me. If I'm honest, it's just to see if I have a Slack notification, but that alone is worth it.

![Pock in action](https://thepracticaldev.s3.amazonaws.com/i/qyf7zba4vejkjcjvd6lu.jpg)

{%github https://github.com/pigigaldi/Pock %}

Photo by [ian dooley](https://unsplash.com/@sadswim?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/productivity?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
Looking for a Ruby on Rails Developer for a project!
Tags: career
Published: 2020-01-21 02:48:15

Welcome!

Thank you for stopping by, 
First off I'll like to tell a little about myself. My name is Tim I'm currently 23-years of age. For the past 3 years or so I've been working for a Debt Collection Agency and at the same time learning ruby on rails. 

I hit me a couple of weeks ago to set out on building my own debt collection app. 

For the 3 years in debt collections, we used a horrible outdated software solution, my boss asked me to look around for other options but I just couldn't find anything worth the money and time.

Fast forward to today. I'm starting off by putting together a basic flow chart. I would also to mention that I would consider myself a decent web designer "image below"

If this sounds like something you'd like to be part of, let me know!


Disclaimer! 
This is not a paid position.
Erlang/OTP の public_key モジュールを使って Android のアプリ内課金情報のデジタル署名の検証を行う
Tags: erlang
Published: 2020-01-21 02:31:30


- PublicKey は priv などどこかにある前提
- 署名は base64 でエンコードされて送られてくる前提
- データは JSON を jsonx:decode(RawSignedData, [{format, proplist}]) でデコードされている前提

```erlang

-include_lib("public_key/include/public_key.hrl"). 

-spec public_key(binary()) -> #'RSAPublicKey'{}.
public_key(Filename) ->
    {ok, RawPublicKey} = file:read_file(Filename),
    [PemEntryPublicKey] = public_key:pem_decode(RawPublicKey),
    public_key:pem_entry_decode(PemEntryPublicKey).


-spec verify(binary(), binary(), #'RSAPublicKey'{}) -> boolan().
verify(SignedData, Signature, PublicKey) when is_binary(SignedData) ->
    RawSignature = base64:decode(Signature),
    RawSignedData = jsonx:encode(SignedData),
    public_key:verify(RawSignedData, sha, RawSignature, PublicKey).

```
Go Notes: Example Tests
Tags: go
Published: 2020-01-21 02:25:49

---
title: Go Notes: Example Tests
published: true
description: Example tests in Go are a good form of documentation
tags: go
---

Go's [Example Tests](https://golang.org/pkg/testing/#hdr-Examples) are a great tool for documenting the expectations of our code. They are conveniently integrated with _godocs_, making the docs have more context and actual runnable examples. These tests provide a quick overview of what the code is supposed to be doing in a manner that is easily digestible for the reader without needing to understand the inner workings.

## What are Example Tests?
In Example Tests, we print out the result of a function that we want to test, and we indicate the expected output as comments:

```go
func ExampleTest() {
    fmt.Println("Hello World!")
    // Output:
    // Hello World!
}
```

If we can't determine the order of the output of a test, we can use `Unordered output` instead of `Output`:

```go
func ExampleUnorderedTest() {
    unordered := afunc()
    fmt.Println(unordered)

    // Unordered output:
    // d
    // c
    // a
    // b

}

```

## Naming Conventions
The Go community seems to have settled on two naming conventions for the example file names. Both conventions can be found in the standard library. The first one follows the pattern `xxx_example_test.go`. This can bee seen in the example tests for `stringer`: [https://github.com/golang/go/blob/master/src/fmt/stringer_example_test.go](https://github.com/golang/go/blob/master/src/fmt/stringer_example_test.go).

The second pattern is `example_xxx_test.go`. This pattern is prevalent in the `sort` package of the standard library: [https://github.com/golang/go/tree/master/src/sort](https://github.com/golang/go/tree/master/src/sort).


 # Summary
Example tests are a useful tool for documenting our code. They are kept relevant because they are run as tests and are embedded in the "godocs" for easy consumption.
Mirror Download with wget
Tags: linux, archive
Published: 2023-01-06 01:43:50

---
title: Mirror Download with wget
published: true
date: 2020-01-21 02:18:12 UTC
tags: Linux,Archive
canonical_url: https://brandonrozek.com/blog/mirrordownload/
---

This post will describe downloading a `centos` repo using `wget`. Though the ideas in this blog post can apply to any mirror with packages exposed via http.

```
wget \
  --accept rpm,bz2,gz,xml,asc \
  --recursive \
  --no-parent \
  --no-host-directories \
  --cut-dirs=4 \
  http://mirror.centos.org/centos/8/BaseOS/x86_64/os/ 

```

Here are what the options mean…

| Option | Meaning |
| --- | --- |
| `--accept` | Comma separated by which extensions to allow downloading |
| `--recursive` | Follow links |
| `--no-parent` | Only follow links that are sub-directories of the current one |
| `--no-host-directories` | Exclude creating a folder indicating the hostname |
| `--cut-dirs=N` | Don’t make folders for a depth of `N` subdirectories. Notice in the example `centos`, `8`, `BaseOS`, `x86_64`, `os` is a list of 5 subdirectories so `N`=5 |
How do I write a technical reference?
Tags: help
Published: 2020-01-21 02:04:43

I've written personal references for people before. It's not hard. What I'm struggling with is how to write a technical one for someone who's volunteering to do some programming work for a not-for-profit charity. Do I just list the stuff he's done, how long he's been doing it for and how good he is at it, or is there some more standardized way? 

Maybe I can get him to list the things that he knows and how well he knows them, but that seems like cheating. I'm his supervisor -- I'm supposed know what he knows and how well he knows it. Dot-points doesn't seem right somehow, but that's the direction I'm going at the moment.

__LATER__

Did find [this](https://www.thebalancecareers.com/software-engineer-reference-letter-2071819) after a Google search. Sort of answers my question, though the not-for-profit also wants me to go into detail about the volunteer's skills so it sort of doesn't answer it too.
First  (Blog-wannabe)  articles of the year
Published: 2020-01-21 01:02:16

---
title: First  (Blog-wannabe)  articles of the year
published: true
description: articles about overcoming struggles and accepting who you are
Tags: discuss, challenges, mental health
---

Ok, finally got my blogs posted, got two done still short one :slightly_smiling_face:

My goal is to write a blog a week to get better at writing.


Next two will be technical blogs :slightly_smiling_face:

https://medium.com/@thenewmona/dealing-with-lifes-adversities-while-trying-to-change-22e1f4829dfa

https://medium.com/@thenewmona/my-illness-and-disability-does-not-define-my-ability-1b9c8a8d70f4
Your Dream Product
Published: 2020-01-21 00:54:46

Everyone loves a good shortcut, hack or automation in their lives. Whether it's coding, health, social or personal life, there's always room for another app to make something easier.

So that's what I'm here to ask you about: an app that would make a specific aspect of your life so much better!

What are some apps that would be awesome to have in your life, but aren't available right now? Doesn't matter if it seems impossible, just write them down in the comments!

Thanks in advance for your reply!
Git e Github, qual a diferença?
Tags: github, git, beginners, opensource
Published: 2020-01-21 00:39:53

Primeiramente, olá!

Segundamente...

## O que é o Git?

![](https://i.giphy.com/media/dXICCcws9oxxK/giphy.gif)

Ele é um Sistema de Controle de Versão Distribuída (Source Control Management - **SCM**), foi criado por **Linus Torvalds** em 2005 para auxiliar no desenvolvimento do Linux

## Mas o que é um SCM e o que ela tem a ver com o git?

Durante o desenvolvimento do software queremos saber:

- O que mudou e quando?
- Por que mudou?
- Quem fez a mudança?
- Podemos reproduzir esta mudança?

Assim um SCM vem resolver esses problemas permitindo as seguintes ações:

- Identificação
- Documentação
- **Controle**
- Auditoria

Isso tanto para o código fonte quanto para o manual do usuário e documentações essenciais. Irei focar na parte de Controle agora e como ela é importante.

## Controle de Versão

### Problema exemplo: 

Você precisa editar um código que está no seu Dropbox. Assim você faz o download do arquivo, faz as alterações necessárias e salva o arquivo no Dropbox. 

Até agora nenhum problema, vamos ver o que acontece caso você esteja trabalhando em equipe agora. 

Seu amigo decidiu que irá editar o código. **Vocês baixam o mesmo arquivo juntos**. Você edita e salva no Dropbox, seu colega tambem edita e salva no Dropbox e **acaba sobrescrevendo seu código**. Você acaba de perder informações valiosas da sua modificação, pois seu amigo baixou a versão antiga junto com você e isso sobrescreveu seu código.

O controle de versão resolve esse problema, ele faz o '**merge**' (junção) entre as alterações. Assim, quando você tem duas alterações elas são modificadas para ficarem coerentes no seu arquivo.

Vale dizer que o Git é um sistema distribuído, assim você tem o respositório no servidor e cada pessoa que estiver desenvolvendo o código terá uma cópia da pasta do mesmo, não precisando estar conectado no servidor para fazer modificações.

Então o Git é isso, um SCM distribuído que salva a vida de muito programador ao tornar o processo bem mais seguro, rápido e eficiente principalmente para programar em grupos.

Ok, eu entendi o que é o Git e o que ele faz, mas...

## O que é o Github?

Bom, Github é um servidor de repositórios Git, uma espécie de rede social para códigos também. Ele é um serviço recente, criado em 2008 ele possui mais de 10 milhões de usuários e +10 milhões de repositórios.

## Resumindo

Git é o sistema de versionamento de código. Github é o servidor onde estarão armazenados os códigos e uma rede social.

Caso haja interesse, posso fazer um artigo explicando os principais comandos do github como o commit, pull, push, entre outros. Posso falar também de gitflow, uma parte essencial para o desenvolvimento em grupos.

Bom, por enquanto é isso galera. Espero que tenham gostado, qualquer sugestão só deixar nos comentários!

![](https://i.giphy.com/media/jpoDZOyEg38F4cFFMi/giphy.gif)
Git and Github, what's the difference?
Tags: github, git, opensource, beginners
Published: 2020-01-21 00:38:18

First, hello!

Second...

## What is git?

![](https://media.giphy.com/media/dXICCcws9oxxK/giphy.gif)

Git is a **Source Control Management (SCM)**, it was created in 2005 by **Linus Torvalds** to help with Linux development.

## But what is a SCM and what it has to do with git?

During the software development we want to know:

- What has changed and when?
- Why it changed?
- Who did the change?
- How can we reproduce this change?
- ~~Spare change?~~

In this case, SCM came to solve this problems with the following actions:

- Identification
- Documentation
- **Control**
- Audit

This actions not only for the source code but also for the user's guide and the code documentation.

I will focus now on the Control part and why it's important.

## Version Control

### Problem example: 

You need to edit a code that is in your Dropbox. So you download the file, make the necessary changes and save the file to Dropbox.

So far no problem, let's see what happens if you're working as a team now.

Your friend has decided that he will edit the code. **You download the same file together**. You edit and save in Dropbox, your colleague also edits and saves in Dropbox and **ends up overwriting your code**. You have just lost valuable information about your modification, as your friend downloaded the old version with you and it overwrote your code.

Version control solves this problem, it does the **merge** between changes. So, when you have two changes they are modified to be consistent in your file.

It is worth mentioning that Git is a distributed system, so you have the repository on the server and each person who is developing the code will have a copy of its folder, without having to be connected to the server to make changes.

So Git is this, a distributed SCM that saves the life of a lot of programmers by making the process much safer, faster and more efficient, especially for programming in groups.

Okay, I understand what Git is and what it does, but ...

## What is Github then?

Well, Github is a Git repository server, a kind of social network for code too. It is a recent service, created in 2008 and it has more than 10 million users and +10 million repositories. It's the most used site to open source projects.

## Summing up

Git is the code versioning system. Github is a server for the codes and a social network for programmers.

If you are interested, I can make an article explaining the main commands of github such as commit, pull, push, among others. I can also talk about gitflow, an essential part of group development.

Well, that's it for now guys. I hope you enjoyed, any suggestions just leave in the comments!

Seeya!

![](https://media.giphy.com/media/jpoDZOyEg38F4cFFMi/giphy.gif)
Chain of responsibility pattern
Tags: patterns
Published: 2020-01-21 00:10:36

This article is a couple of thoughts around specific patterns and specifically the chain of responsibility pattern. As the title obviously states. I think some basic knowledge around certain patterns is required.

In a way it's a bit of a philosophical article.

If you look up what is the recipe for making a chain of responsibility, the most common one, include the following ingredients (if you don't mind my cooking references) :

* Decouples receiver and handler
* Passes the request along a chain of objects

The key idea behind this pattern is to give the opportunity to more than one object to handle a specific request.

Personally I believe, that these attributes are incomplete when describing this pattern, and they are a few rogue attributes that mutate this pattern to a certain degree, those are among others:

* define a chain in the Handler
* define the chain in the Concrete Handler
* the order of the chain does not affect the outcome
* it is acceptable in some cases to let a single object to be handled by more than one object

The last one is a hazy line between the chain of responsibility and visitor pattern.

and if you suddenly add state to each operation in the chain then you start throwing mud at the water and make the line between chain of responsibility and memento (or even orchestration) patterns even more indistinguible.

State is the key here. Chain of responsibility does not have a state whereas memento and orchestration do.