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.
|