save
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 297 KiB |
After Width: | Height: | Size: 297 KiB |
After Width: | Height: | Size: 297 KiB |
After Width: | Height: | Size: 2.3 MiB |
After Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 543 KiB |
After Width: | Height: | Size: 1.3 MiB |
2
.orgids
|
@ -1,2 +1,2 @@
|
||||||
|
|
||||||
(("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/journal/2020-12-04--13-19-56Z--english_lesson.org" "1a758996-2bb0-4753-8365-34ca3ef0f940") ("../dev/her.esy.fun/src/drafts/XXXX-org-mode-intro/index.org" "21c48431-c0db-4a34-95fe-7228fea6233f") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/journal/2020/2020-09-20.org" "8a931436-5db6-4ff1-8fa8-3415c1f67c61") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/journal/2020/2020-09-26.org" "d6bfe273-22e1-40b4-92db-14b22e092498") ("../y/her.esy.fun/src/posts/0013-how-to-choose-your-tools/index.org" "c2e61938-8493-434a-9ffa-9fd4698d9863") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/inbox.org" "a4ebd43b-b589-499e-85e1-7ebea0abf3af" "797ba971-6ae3-49a1-9499-928572760d09"))
|
(("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/journal/2021-04-16--12-27-13Z--iroh_auth_presentation.org" "dab23b61-a766-4eda-a1e9-1d39258ef5c0") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/journal/2020-12-04--13-19-56Z--english_lesson.org" "1a758996-2bb0-4753-8365-34ca3ef0f940") ("../dev/her.esy.fun/src/drafts/XXXX-org-mode-intro/index.org" "21c48431-c0db-4a34-95fe-7228fea6233f") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/journal/2020/2020-09-20.org" "8a931436-5db6-4ff1-8fa8-3415c1f67c61") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/journal/2020/2020-09-26.org" "d6bfe273-22e1-40b4-92db-14b22e092498") ("../y/her.esy.fun/src/posts/0013-how-to-choose-your-tools/index.org" "c2e61938-8493-434a-9ffa-9fd4698d9863") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/inbox.org" "a4ebd43b-b589-499e-85e1-7ebea0abf3af") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/archives/TODO.archive.org" "797ba971-6ae3-49a1-9499-928572760d09" #("96343FD2-E7A9-4AAA-A40A-8D048DA340E9" 0 36 (fontified t face org-property-value org-category "inbox")) #("B72E4288-E96B-4099-8684-37DDF3395C50" 0 36 (fontified t org-category "inbox" face org-property-value))))
|
||||||
|
|
|
@ -1,121 +0,0 @@
|
||||||
#+TITLE: service-pattern
|
|
||||||
#+Author: Yann Esposito
|
|
||||||
#+Date: [2021-03-14]
|
|
||||||
|
|
||||||
- tags :: [[file:2020-06-03--19-49-30Z--programming.org][programming]] [[file:2020-05-26--06-13-41Z--functional_programming.org][functional programming]]
|
|
||||||
|
|
||||||
- source ::
|
|
||||||
|
|
||||||
The question about code structure and organization is one of the most
|
|
||||||
prolific one.
|
|
||||||
The problem are always the same.
|
|
||||||
|
|
||||||
Here I will talk about one possible solution in this huge design space.
|
|
||||||
First of all, I will focus on a functional programming pattern.
|
|
||||||
But I think the lessons could be extended to any generic programming
|
|
||||||
language.
|
|
||||||
|
|
||||||
Before explaining the pattern I would like to take the time to provide a
|
|
||||||
few distinctions between different programming language patterns.
|
|
||||||
Quite often, one fundamental question very important when choosing a
|
|
||||||
pattern for your code is about find the correct level of the pattern.
|
|
||||||
|
|
||||||
There are a tower of patterns and meta-patterns.
|
|
||||||
For example in imperative programming not using =goto= statement was
|
|
||||||
considered as a programming pattern.
|
|
||||||
Once that idea was accepted there were work done on /Object Oriented
|
|
||||||
Programming/.
|
|
||||||
And OOP was considered as a programming language pattern.
|
|
||||||
But OOP while already providing quite a constraint on your code
|
|
||||||
architecture was enough not sufficient.
|
|
||||||
OOP alone leave a lot of room in the design space.
|
|
||||||
Thus we've seen numerous "OOP Design Pattern".
|
|
||||||
That used the underlying OOP paradigm as a base and constructed
|
|
||||||
abstractions over it.
|
|
||||||
|
|
||||||
Even with all those Design Pattern it was up to the programmer to decide
|
|
||||||
which one applies or not.
|
|
||||||
Quite often there is not a single path easy to detect correct design
|
|
||||||
pattern.
|
|
||||||
Mainly the very hard part in programming is choosing the right abstraction.
|
|
||||||
|
|
||||||
There are other code structures to choose from.
|
|
||||||
In functional programming there are FRP.
|
|
||||||
Here also there are stories about how design pattern once chosen make a
|
|
||||||
natural evolution toward meta-design-patterns.
|
|
||||||
Mainly design pattern that rely on a lower level design pattern.
|
|
||||||
|
|
||||||
If you take the story behind Elm Architecture you can see it.
|
|
||||||
At first there were FRP.
|
|
||||||
Elm removed the behavior from FRP to only deal with events to simplify the
|
|
||||||
model.
|
|
||||||
But with FRP the author clearly though it was a good-enough design pattern.
|
|
||||||
But the design space was a bit too big.
|
|
||||||
So it was difficult to take the right decision.
|
|
||||||
So a natural meta-pattern appeared.
|
|
||||||
It is [[https://guide.elm-lang.org/architecture/][/Elm Architecture/]].
|
|
||||||
So while Elm imposed so structure of your program using static types to
|
|
||||||
prevent common coding mistakes and enforce a specific code structure.
|
|
||||||
Elm did not constrain the file organization, the number of buffers to
|
|
||||||
send/receive events, the way they should talk/listen between each other.
|
|
||||||
|
|
||||||
So Elm Architecture is a non enforced meta structure for your code
|
|
||||||
application.
|
|
||||||
Unlike the underlying layer of architecture.
|
|
||||||
But what Elm Architecture provide is a higher level architecture that will
|
|
||||||
help your program to "scale" and whose natural organization is easy to
|
|
||||||
understand.
|
|
||||||
|
|
||||||
So Elm Architecture is more of a proposal that will potentially have
|
|
||||||
drawback.
|
|
||||||
Typically, if you change the organization of your views, it could cost a
|
|
||||||
lot of change in your code.
|
|
||||||
But most of the time this is acceptable and preferable.
|
|
||||||
Because, the Elm Architecture is simple to understand and quite often this
|
|
||||||
is not such a big deal.
|
|
||||||
Not using the Elm Architecture paradigm put you at risk to end up in a
|
|
||||||
spaghetti code hell.
|
|
||||||
But of course there is a tension between code size/DRYness and easy to
|
|
||||||
understand code organization/architecture.
|
|
||||||
|
|
||||||
If you have a short code base, DRYness could probably be preferable.
|
|
||||||
Because a bit of disorganization and shortcuts will not be unbearable.
|
|
||||||
But as the size of your code grow, it will become more and more prevalent
|
|
||||||
that a strict code organization with perhaps more repetitions and a bit
|
|
||||||
more conventions implying more lines of code become preferable because it
|
|
||||||
minimize the risk of surprise between different part of the code.
|
|
||||||
Clearly, Elm Architecture is selling compactness of your code for an easier to
|
|
||||||
read, discover and understand overall code architecture.
|
|
||||||
|
|
||||||
So we could probably say the same for multiple proposed code architecture
|
|
||||||
mechanism in the Haskell world.
|
|
||||||
Typically we had:
|
|
||||||
|
|
||||||
- no org => spaghetti code
|
|
||||||
- big Monad => lack of composability, leak of abstraction everywhere
|
|
||||||
- Handler Pattern
|
|
||||||
- MTL
|
|
||||||
- RIO
|
|
||||||
- Free Monads (Effects)
|
|
||||||
|
|
||||||
After this first short introduction I hope it is clear that, it will be
|
|
||||||
quite impossible to discover a "best code architecture".
|
|
||||||
There are multiple code architecture and the bigger your code the more
|
|
||||||
constraint you must probably put in your code which will make a lot of code
|
|
||||||
look cumbersome from people used to smaller code size.
|
|
||||||
|
|
||||||
That being said, there are code architecture that could be probably be
|
|
||||||
considered fully superior to other ones.
|
|
||||||
Imagine a code architecture with the same properties but better in some
|
|
||||||
dimensions without worse evaluation in some dimension.
|
|
||||||
Typically, a code architecture is preferable to no code architecture as
|
|
||||||
soon as your code become big enough and you need to not work alone.
|
|
||||||
|
|
||||||
For example I would argue that the Purescript Halogen architecture is
|
|
||||||
probably strictly superior to the Elm Architecture.
|
|
||||||
Because it contains Elm Architecture but also contains a shortcut mechanism
|
|
||||||
which is entirely enforced via static types..
|
|
||||||
The "cost" of these shortcuts are quite limited because you are helped with
|
|
||||||
the types provided by the Halogen framework.
|
|
||||||
One big advantage is the ability to not pay the full price of the Elm
|
|
||||||
Architecture while moving a component.
|
|
|
@ -1,100 +0,0 @@
|
||||||
# Created 2021-04-16 Fri 14:49
|
|
||||||
#+TITLE: IROH Auth Presentation
|
|
||||||
#+DATE: [2021-04-16 Fri]
|
|
||||||
#+AUTHOR: Yann Esposito
|
|
||||||
- tags :: [[file:2021-04-16--13-35-21Z--cisco.org][Cisco]]
|
|
||||||
|
|
||||||
* IROH Auth Presentation
|
|
||||||
|
|
||||||
Yann Esposito <yaesposi@cisco.com>
|
|
||||||
|
|
||||||
* When did you interacted with IROH-Auth?
|
|
||||||
|
|
||||||
- Login in SecureX
|
|
||||||
- Login in CTR
|
|
||||||
- Login in Orbital
|
|
||||||
- Authorized the Ribbon
|
|
||||||
- Cross Launch with SSE
|
|
||||||
- Invited someone to your Org
|
|
||||||
- Changed the role of some user
|
|
||||||
- When you investigate in CTR (via CTIA's module)
|
|
||||||
- Created an OAuth2 client
|
|
||||||
|
|
||||||
* What is IROH-Auth? (overview)
|
|
||||||
|
|
||||||
This is a software subcomponent of /IROH/ taking care of:
|
|
||||||
|
|
||||||
- /Authentication/
|
|
||||||
- provide a user unique identifier
|
|
||||||
- /Authorization/
|
|
||||||
- decide what user can or cannot do
|
|
||||||
- /User Data Model/
|
|
||||||
- /Tenancy (Org) Management/
|
|
||||||
- /API Clients Management/
|
|
||||||
- /OAuth2/, /OpenID Connect/ provider (half of IROH-Auth dedicated to this)
|
|
||||||
|
|
||||||
* What is IROH-Auth? (technical)
|
|
||||||
|
|
||||||
/IROH-Auth/ is a set of /Services/ within /IROH/ some of them exposing
|
|
||||||
HTTP APIs.
|
|
||||||
|
|
||||||
- Login
|
|
||||||
- Login (core service + web API)
|
|
||||||
- Org (service)
|
|
||||||
- User (service + web API)
|
|
||||||
- Scopes (service)
|
|
||||||
- Auth Management (core service)
|
|
||||||
- Invite (core service + web API)
|
|
||||||
- Session (web API)
|
|
||||||
- Profile (web API, =/whoami=)
|
|
||||||
- SCIM Client (service)
|
|
||||||
- IdP Migrate (core service + web API) /deprecated a few months ago/
|
|
||||||
- Provision (service + web API) /used instead of IdP Migrate/
|
|
||||||
|
|
||||||
- OAuth2
|
|
||||||
- OAuth2 (core service + web API)
|
|
||||||
- OAuth2 Clients (core service + web API)
|
|
||||||
- OAuth2 Clients Presets (service)
|
|
||||||
- Grant Service (User's client authorizations)
|
|
||||||
|
|
||||||
- Admin
|
|
||||||
- Auth Management (web API)
|
|
||||||
- OAuth2 Clients Management (web API)
|
|
||||||
|
|
||||||
* History (1/?) :ATTACH:
|
|
||||||
Login using AMP SAML (generate JWT)
|
|
||||||
|
|
||||||
*SAML*
|
|
||||||
|
|
||||||
|
|
||||||
[[file:/Users/esposito/.org/.attach/da/b23b61-a766-4eda-a1e9-1d39258ef5c0/_20210416_144701IT%27s%20BAD%20IT%27s%20REALLY%20BAD.gif]]
|
|
||||||
|
|
||||||
|
|
||||||
Worked with Guillaume.
|
|
||||||
|
|
||||||
*No DB of users!*
|
|
||||||
|
|
||||||
* History (2/?)
|
|
||||||
|
|
||||||
2nd goal: Support OAuth2 (become an OAuth2 provider)
|
|
||||||
3rd goal: Support AMP and Threatgrid login (OpenID Connect)
|
|
||||||
|
|
||||||
Become both an OAuth2 client and provider.
|
|
||||||
|
|
||||||
Need Clients/Users/Orgs in DB!!!
|
|
||||||
|
|
||||||
OAuth2 RFC => OAuth2 GRANTS
|
|
||||||
|
|
||||||
- Authorization Code Grant (the classic)
|
|
||||||
- Client Grant (for scripts)
|
|
||||||
- Implicit Grant (for Single Page Applications, now deprecated)
|
|
||||||
|
|
||||||
4rd goal: Support Account Activation => SCIM Client
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
- Become an OpenID Connect provider, made before the start of SecureX.
|
|
||||||
- OpenID Connect with SSE (we are the IdP now)
|
|
||||||
|
|
||||||
* Internal User Structure
|
|
||||||
* Cisco specificity
|
|
46
journal/2021/2021-02-08.org
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
#+Title: Journal (2021-02-08 - ∆y=43.93 (16046))
|
||||||
|
#+Author: Yann Esposito
|
||||||
|
#+Date: [2021-02-08]
|
||||||
|
#+STARTUP: showeverything
|
||||||
|
#+STARTUP: inlineimages
|
||||||
|
|
||||||
|
* Résume Journée
|
||||||
|
:PROPERTIES:
|
||||||
|
:CREATED: 20210208
|
||||||
|
:END:
|
||||||
|
|
||||||
|
| sommeil | ?/5 | horrible -> comme un bébé |
|
||||||
|
| activité φ | ?/5 | au lit -> sport |
|
||||||
|
| nourriture | ?/5 | malbouffe -> saine |
|
||||||
|
| humeur | ?/5 | exécrable -> excellente |
|
||||||
|
| intérêt | ?/5 | ennuie -> exceptionnel |
|
||||||
|
|
||||||
|
- Faits positifs
|
||||||
|
- Faits marquants
|
||||||
|
- Résumé des discussions intéressantes
|
||||||
|
- Réflexions/Essais
|
||||||
|
* 2021-02-08 Monday
|
||||||
|
** 10:56
|
||||||
|
Celà fait un moment que j'ai pas écris d'entrée dans le journal.
|
||||||
|
|
||||||
|
|
||||||
|
Et bien j'ai l'impression que celà va un peu avec mon humeur évidemment.
|
||||||
|
Je veux dire qu'il me semble écrire lorsque j'en ai un peu plus besoin.
|
||||||
|
|
||||||
|
Et donc qu'est-ce qui a changé évolué ?
|
||||||
|
|
||||||
|
Depuis la dernière fois, les évenements récents qui ont occupé ma vie.
|
||||||
|
|
||||||
|
1. Achat de voiture. Nous devrions avoir nos nouvelles voiture il y a 2
|
||||||
|
semaines et nous les attendons toujours.
|
||||||
|
De problèmes un peu accumulés qui ne nous semblent pas du tout normaux.
|
||||||
|
2. Ma promotion grade 11 annoncée en fanfarre, ce qui me permet d'avoir un
|
||||||
|
salaire encore meilleur (hausse de 5.4% environ, mon brut s'élève à 91k)
|
||||||
|
3. Krystelle recommence à avoir pas mal de douleurs à son pied et son genou.
|
||||||
|
4. Bastien peut depuis hier conduire la twingo.
|
||||||
|
5. Je n'ai pas de nouvelles pour les aménagements des épreuves anticipées
|
||||||
|
au Bac d'Anna.
|
||||||
|
6. Nous essayons de jouer un peu plus à des jeux de société en famille.
|
||||||
|
7. Bastien est de moins en moins présent à la maison.
|
||||||
|
8. J'ai recommencé à me poser des questions un peu métaphysiques, enfin...
|
||||||
|
plutôt un questionnement sur ma condition humaine et personnelle.
|
41
journal/2021/2021-02-28.org
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#+Title: Journal (2021-02-28 - ∆y=43.99 (16066))
|
||||||
|
#+Author: Yann Esposito
|
||||||
|
#+Date: [2021-02-28]
|
||||||
|
#+STARTUP: showeverything
|
||||||
|
#+STARTUP: inlineimages
|
||||||
|
|
||||||
|
* Résume Journée
|
||||||
|
:PROPERTIES:
|
||||||
|
:CREATED: 20210228
|
||||||
|
:END:
|
||||||
|
|
||||||
|
| sommeil | 3/5 | horrible -> comme un bébé |
|
||||||
|
| activité φ | 1/5 | au lit -> sport |
|
||||||
|
| nourriture | 3/5 | malbouffe -> saine |
|
||||||
|
| humeur | 4/5 | exécrable -> excellente |
|
||||||
|
| intérêt | 3/5 | ennuie -> exceptionnel |
|
||||||
|
|
||||||
|
- Faits positifs
|
||||||
|
- Faits marquants
|
||||||
|
- Résumé des discussions intéressantes
|
||||||
|
- Réflexions/Essais
|
||||||
|
* 2021-02-28 Sunday
|
||||||
|
** 12:03
|
||||||
|
|
||||||
|
Premier week-end de reconfinement depuis l'an dernier.
|
||||||
|
Je suis avec Krystelle uniquement.
|
||||||
|
Bastien est parti chez Jena, et Anna est chez mes beaux parents.
|
||||||
|
|
||||||
|
Je me suis un peu reposé.
|
||||||
|
|
||||||
|
J'ai un peu travaillé samedi matin pour fixer les pb de tooling/build.
|
||||||
|
J'ai tué les toolistes en virant toute la merde.
|
||||||
|
|
||||||
|
J'ai un peu joué à factorio, je m'essaye aux train de façon un peu plus
|
||||||
|
avancée.
|
||||||
|
J'utilise deux voies et des intersection à 3 directions.
|
||||||
|
|
||||||
|
Je re-regarde la série Hemlock Grove.
|
||||||
|
Ça me permet de me détendre l'esprit de regarder des séries que j'ai déjà
|
||||||
|
vu.
|
||||||
|
Je m'étais re-re-regardé Buffy contre les vampires par exemple.
|
35
journal/2021/2021-03-01.org
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
#+Title: Journal (2021-03-01 - ∆y=43.99 (16066))
|
||||||
|
#+Author: Yann Esposito
|
||||||
|
#+Date: [2021-03-01]
|
||||||
|
#+STARTUP: showeverything
|
||||||
|
#+STARTUP: inlineimages
|
||||||
|
|
||||||
|
* Résume Journée
|
||||||
|
:PROPERTIES:
|
||||||
|
:CREATED: 20210301
|
||||||
|
:END:
|
||||||
|
|
||||||
|
| sommeil | 3/5 | horrible -> comme un bébé |
|
||||||
|
| activité φ | ?/5 | au lit -> sport |
|
||||||
|
| nourriture | ?/5 | malbouffe -> saine |
|
||||||
|
| humeur | ?/5 | exécrable -> excellente |
|
||||||
|
| intérêt | ?/5 | ennuie -> exceptionnel |
|
||||||
|
|
||||||
|
- Faits positifs
|
||||||
|
- Faits marquants
|
||||||
|
- Résumé des discussions intéressantes
|
||||||
|
- Réflexions/Essais
|
||||||
|
|
||||||
|
* 2021-03-01 Monday
|
||||||
|
** 09:01
|
||||||
|
Ce matin Bastien part à Martigues avec Jena.
|
||||||
|
Il va rester quelques jour et revenir avec Anna en conduisant la nouvelle voiture.
|
||||||
|
|
||||||
|
Krystelle travaille.
|
||||||
|
|
||||||
|
J'ai une journée de congés offerte par Cisco.
|
||||||
|
|
||||||
|
Je suis dont tout seul à pouvoir faire un peu ce que je veux.
|
||||||
|
C'est pas mal.
|
||||||
|
|
||||||
|
Je vais probablement jouer un peu, geeker, je ne sais pas trop encore.
|