Welcome to the single-page-book demo and how-to

· Double-Click on a cell (long-press on mobiles) to zoom in
· Click the topic button (icon up left) to filter by topic
· Click "Escape" key (or [show all] link) to show highlighted matches in context

Row of columns
External search links
Some world–renowned web-sites here!
@[http://www.google.com]
@[http://en.wikipedia.org]
@[https://castejondevaldejasa.blogspot.com/]
Internal search links
*regex-searchs:
  [[02 Lorem ipsum?]] [[audit?]]
  [[metric info?]]    [[schemas?]]
  [[xml?]]            [[convert address?]]

ºSafe inmutable searchs using UUID:º
  Houston...             : [[42e5f97a-2a8c-4d76-8d9e-deb4502541d0?]]
  Secrets                : [[25b87ba3-eae5-420a-b8a1-0702fe602c80?]]
  Architecture Diagram   : [[a4c55453-c75d-4faf-91aa-ae437ef80e97?]]
  Important Cell in table: [[ec73534b-e977-4316-aeff-5a86c2d764b8?]]

ºSearching for mathº
  [[Maxwell?]]        [[Fourier Transform?]]

  [[Complex Formula?]]
UUID: a4c55453-c75d-4faf-91aa-ae437ef80e97
Lovely UTF-8 Diagrams
 ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
 │                                       JSON RPC                                                                                      │
 └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
 ┌───────────────────────────────────────┐    ┌─────────────────────────────┐    ┌─────────────────────────────────────────────────────┐
 │                 ºCOREº                │    │   ºCHAIN PROCESSINGº        │    │                   ºP2Pº                             │
 │                                       │    │                             │    │                                                     │
 │  ┌──────────────────────────────────┐ │    │ ┌─────────────────────────┐ │    │ ┌─────────────────────────────────────────────────┐ │
 │  │          SYNCHRONIZER            │ │    │ │    PROTOCOL SPEC        │ │    │ │               ETH SUB─PROTOCOL                  │ │
 │  │                                  │ │    │ │┌──────────┐  ┌─────────┐│ │    │ │                               ┌───────────────┐ │ │
 │  │                   ┌───────────┐  │ │    │ ││BLOCK     │  │TX       ││ │    │ │   ┌─────────────────────────┐ │ ┌───────────┐ │ │ │
 │  │   ┌──────────┐    │   BLOCK   │  │ │    │ ││HEADER    │  │VALIDATOR││ │    │ │ ┌─┴───────────────────────┐ │ │ │SYNC WORKER│ │ │ │
 │  │   │DOWNLOADER│    │PROPAGATION│  │ │    │ ││VALIDATOR │  │         ││ │    │ │ │       ETH PEER          │ │ │ │ EXECUTOR  │ │ │ │
 │  │   └──────────┘    │  MANAGER  │  │ │    │ │└──────────┘  └─────────┘│ │    │ │ │┌──────────┐   ┌────────┐│ │ │ └───────────┘ │ │ │
 │  │                   └───────────┘  │ │    │ │┌──────────┐  ┌─────────┐│ │    │ │ ││WIRE      │   │REQUEST ││ │ │               │ │ │
 │  └──────────────────────────────────┘ │    │ ││ BLOCK    │  │BLOCK    ││ │    │ │ ││CONNECTION│   │MANAGER ││ │ │ ┌───────────┐ │ │ │
 │  ┌──────────────────────────────────┐ │    │ ││ IMPORTER │  │PROCESSOR││ │    │ │ │└──────────┘   └────────┘│ │ │ │ TX WORKER │ │ │ │
 │  │        TX POOL                   │ │    │ │└──────────┘  └─────────┘│ │    │ │ │┌──────────┐   ┌────────┐│ │ │ │ EXECUTOR  │ │ │ │
 │  │ ┌───────────┐     ┌─────────┐    │ │    │ └─────────────────────────┘ │    │ │ ││PEER      │   │ CHAIN  ││ │ │ └───────────┘ │ │ │
 │  │ │PENDING TXs│     │TX SENDER│    │ │    └─────────────────────────────┘    │ │ ││REPUTATION│   │ STATE  ││ │ │               │ │ │
 │  │ └───────────┘     └─────────┘    │ │                                       │ │ │└──────────┘   └────────┘├─┘ │ ┌───────────┐ │ │ │
 │  └──────────────────────────────────┘ │                                       │ │ └─────────────────────────┘   │ │ SCHEDULED │ │ │ │
 │                                       │                                       │ │ ┌─────────────────────────┐   │ │ EXECUTOR  │ │ │ │
 │  ┌──────────────────────────────────┐ │                                       │ │ │   ETH MESSAGES          │   │ └───────────┘ │ │ │
 │  │       MINER                      │ │                                       │ │ └─────────────────────────┘   └───────────────┘ │ │
 │  └──────────────────────────────────┘ │                                       │ └─────────────────────────────────────────────────┘ │
 └───────────────────────────────────────┘                                       │   ┌─────────────────────────────────────────────┐   │
  ┌──────────────────────────────────────────────────────────────────────────┐   │   │          WIRE P2P NETWORK                   │   │
  │                                ºSTATEº                                   │   │   └─────────────────────────────────────────────┘   │
  │                      ┌─────────┐    ┌────────────┐                       │   │   ┌─────────────────────────────────────────────┐   │
  │                      │WORLD    │    │BLOCKCHAIN  │                       │   │   │          DISCOVERY AGENT                    │   │
  │                      │STATE    │    └────────────┘                       │   │   └─────────────────────────────────────────────┘   │
  │                      │ARCHIVE  │                                         │   │                                                     │
  │                      └─────────┘                                         │   └─────────────────────────────────────────────────────┘
  │                      ┌─────────┐    ┌────────────┐                       │
  │                      │CONSENSUS│    │ SYNC STATE │                       │
  │                      └─────────┘    └────────────┘                       │
  └──────────────────────────────────────────────────────────────────────────┘
Troubleshooting Diagram
REF: @[https://learnk8s.io/]

$º$ kubectl get pods º
    └─────┬────────┘
QºQ: Is there any pending Pod?º
  └─────────┬────────────────┘
  ┌─────────┘
  ├ YES → $º$ kubectl describe º←QºQ: Is the cluster full?º
  │       $º     pod $pod_name º   └────────┬────────────┘
  │           ┌─────────────────────────────┘
  │           ├ NO  →QºQ: Are you hitting ResourceQuotaLimits?º
  │           │        └────────────────────┬────────────────┘
  │           │       ┌─────────────────────┘
  │           │       ├ NO  →QºQ: Are you mounting a PENDINGº
  │           │       │      Qº   PersistentVolumeClaim?º
  │           │       │        └───────────┬────────────────┘
  │           │       │       ┌────────────┘
  │           │       │       ├ NO  →$º$ kubectl get pods º←QºQ: Is the Pod assignedº
  │           │       │       │      $º    -o wide        º Qº   to the Node?º
  │           │       │       │                               └────┬───────────────┘
  │           │       │       │      ┌─────────────────────────────┘
  │           │       │       │      ├ YES →RºThere is an issue with the Kubeletº
  │           │       │       │      │
  │           │       │       │      └ NO  →RºThere is an issue with the Schedulerº
  │           │       │       │
  │           │       │       └ YES →BºFix the PersistentVolumeClaimº
  │           │       │
  │           │       └ YES →BºRelax Quota Limitsº
  │           │
  │           └ YES →BºProvision a bigger clusterº
  │
  └ NO  →QºQ: Are the Pods Running?º
           └──────┬───────────────┘
  ┌───────────────┘
  ├ NO  → $º$ kubectl logs $pod_name º←QºQ: Can you see the logsº
  │        ↑                           Qº   for the App?º
  │        │                             └─────────┬───────────┘
  │        │  ┌────────────────────────────────────┘
  │        │  ├ Yes →BºFix the issue in the Appº
  │        │  └ NO  →QºQ: Did the container died too Quickly?º
  │        │           └──────┬─────────────────────────────┘
  │        │      ┌───────────┘
  │        │      ├ NO  → $º$ kubectl describe º←QºQ: Is the Pod in statusº
  │        │      │       $º    pod $pod_name  º Qº   ImagePullBackOff?  º
  │        │      │                                └──┬──────────────────┘
  │        │      │  ┌────────────────────────────────┘
  │        │      │  ├ NO  →QºQ: Is the Pode Status CrashLoopBackOff?º
  │        │      │  │        └─────────┬─────────────────────────┘
  │        │      │  │ ┌────────────────┘
  │        │      │  │ ├ NO →QºQ: Is the Pod status RunContainerError?º
  │        │      │  │ │       └─────────┬───────────────────────────┘
  │        │      │  │ │ ┌───────────────┘
  │        │      │  │ │ ├ NO  →BºConsult StackOverflowº
  │        │      │  │ │ │
  │        │      │  │ │ └ YES →BºThe issue is likely to be withº
  │        │      │  │ │        Bºmounting volumesº
  │        │      │  │ │
  │        │      │  │ └ YES →QºQ: Did you inspect the logs and fixedº
  │        │      │  │        Qº   the crashes?º
  │        │      │  │          └─────────┬─────────────────────────┘
  │        │      │  │    ┌───────────────┘
  │        │      │  │    ├ NO  →BºFix the app crahsesº
  │        │      │  │    │
  │        │      │  │    └ YES →QºQ: Did you forget the 'CMD' instructionº
  │        │      │  │           Qº   in the Dockerfile?                  º
  │        │      │  │             └──────────┬──────────────────────────┘
  │        │      │  │       ┌────────────────┘
  │        │      │  │       ├ YES →BºFix the Dockerfileº
  │        │      │  │       │
  │        │      │  │       └ NO  →QºQ: Is the Pod restarting frequently?º
  │        │      │  │              Qº   Cycling between Running and      º
  │        │      │  │              Qº   CrashLoopBackoff?º
  │        │      │  │                └──────────┬────────────────────────┘
  │        │      │  │        ┌──────────────────┘
  │        │      │  │        ├ YES →BºFix the liveness probeº
  │        │      │  │        │
  │        │      │  │        └ NO  →RºUnknown Stateº
  │        │      │  │
  │        │      │  └ YES →QºQ: Is the name of the image correct?º
  │        │      │           └────┬─────────────────────────────┘
  │        │      │   ┌────────────┘
  │        │      │   ├ NO  →BºFix the image nameº
  │        │      │   │
  │        │      │   └ YES →QºQ: Is the image tag valid?º
  │        │      │          Qº   Does it exists?º
  │        │      │            └──┬──────────────────────┘
  │        │      │   ┌───────────┘
  │        │      │   ├ NO  →BºFix the tagº
  │        │      │   │
  │        │      │   └ YES →QºQ: Are you pulling images from aº
  │        │      │          Qº   private registry?º
  │        │      │            └─────────┬────────────────────┘
  │        │      │    ┌─────────────────┘
  │        │      │    ├ NO  →BºThe Issue could be with CRI|Kubeletº
  │        │      │    │
  │        │      │    └ YES →BºConfigure pulling images from aº
  │        │      │           Bºprivate registryº
  │        │      │
  │        │      └ YES → $º$ kubectl logs $pod_name --previous º
  │        │                  └────────────┬──────────────────┘
  │        └───────────────────────────────┘
  └ YES →QºQ: Are ther Pods READY?º
           └──┬──────────────────┘
  ┌───────────┘
  ├ NO  → $º$ kubectl describe º←QºQ: Is the Readiness probeº
  │       $º    pod $pod_name  º Qº   failing?º
  │                                └──┬────────────────────┘
  │           ┌───────────────────────┘
  │           ├ YES →BºFix the Readiness Probeº
  │           │
  │           └ NO  →RºUnknown Stateº
  │
  └ YES → $º$ kubectl port-forward      \ º ←QºQ: Can you access the app?º
          $º    $pod_name  8080:$pod_port º    └──────────┬─────────────┘
  ┌───────────────────────────────────────────────────────┘
  ├ NO  →QºQ: Is the port exposed by container correctº
  │      Qº   and listening on 0.0.0.0?º
  │        └────────────────────┬────────────────────┘
  │       ┌─────────────────────┘
  │       ├ NO  →BºFix the app. It should listen onº
  │       │      Bº0.0.0.0.º
  │       │      BºUpdate the containerPortº
  │       │
  │       └ YES →RºUnknown Stateº
  ↓
  YES
  ↓
Bº***************************º
Bº*POD ARE RUNNING CORRECTLY*º
Bº***************************º
   └──────────┬────────────┘
              ↓
$º$ kubectl describe   \  º ←QºQ: Can you see a listº
$º  service $SERVICE_NAME º  Qº    of endpoints?º
                               └──────┬────────────┘
  ┌───────────────────────────────────┘
  ├ NO  →QºQ: Is the Selector matching the rightº
  │      Qº   Pod label?º
  │        └──┬────────────────────────────────┘
  │     ┌─────┘
  │     ├ NO  → Fix the Service selector. It has
  │     │       to match the Pod labels
  │     │
  │     └ YES →QºQ: Does the Pod have an IP address assigned?º
  │              └──┬───────────────────────────────────────┘
  │           ┌─────┘
  │           ├ NO  → There is an issue with
  │           │       the Controller Manager
  │           │
  │           └ YES → There is an issue with the Kubelet
  │
  └ YES →$º$ kubectl port-forward    \ º←QºQ: Can you visit the app?º
         $º    service/$SERVICE_NAME \ º   └──┬────────────────────┘
         $º    8080:$SERVICE_PORT      º      │
                                              │
  ┌───────────────────────────────────────────┘
  ├ NO  →QºQ: Is the targetPort on the Service º
  │      Qº   matching the containerPort in theº
  │      Qº   Pod?º
  │        └──┬────────────────────────────────┘
  │     ┌─────┘
  │     ├ NO  →BºFix the Service targetPort andº
  │     │      Bºthe containerPodº
  │     │
  │     └ YES →BºThe issue could be with Kube Proxyº
  ↓
 YES
  ↓
Bº******************************º
Bº*SERVICE IS RUNNING CORRECTLY*º
Bº******************************º
  ↓
$º$ kubectl describe    \ º←QºQ: Can you see a list of Backends?º
$º  ingress $INGRESS_NAME º   └──┬─────────────────────────────┘
  ┌──────────────────────────────┘
  ├ NO  →QºQ: Are the serviceName and servicePortº
  │      Qº   mathcing the service?º
  │        └──┬─────────────────────────────────┘
  │       ┌───┘
  │       ├ NO  →BºFix the ingress serviceName and servicePortº
  │       │
  │       └ YES →BºThe issue is specific to the Ingress Controllerº
  │              BºConsult the docs for your Ingressº
  ↓
 YES
  ↓
Bº**********************************º
Bº*THE INGRESS IS RUNNING CORRECTLY*º
Bº**********************************º
Bº(The app should be working now!!!)º
  │
  ↓                         ┌ NO  →RºThe issue is likely to be with the   º
                            │      RºInfrastructure and how the cluster isº
QºQ:  Can you visit app º→ ─┤      Rºexposedº
Qº    from the Internet?º   │
                            │       Bº*****º
                            └ YES → Bº*END*º
                                    Bº*****º
Lovely Compatibility Matrix 
100% UTF-8 indexable text

         AAA  BBB  CCC  DDD  EEE FFF
       ┌─────────────────────────────
row01  │ ✅ │ ✅ │ ❌ │ ❌ │ ❌ │ ✅
       ├────┼────┼────┼────┼────┼────
row02  │ ✅ │ ✅ │ ✅ │ ✅ │ ❌ │ ❌
       ├────┼────┼────┼────┼────┼────
row03  │ ✅ │ ✅ │ ✅ │ ✅ │ ✅ │ ✅
       ├────┼────┼────┼────┼────┼────
row04  │ ✅ │ ✅ │ ✅ │ ✅ │ ❌ │ ❌
       ├────┼────┼────┼────┼────┼────
row05  │ ✅ │ ✅ │ ✅ │ ✅ │ ✅ │ ✅
       └────┴────┴────┴────┴────┴────
UUID: 25b87ba3-eae5-420a-b8a1-0702fe602c80
Lot ofRºsecretsº here
Click twice to see them!!!
Execute next QºUNIX scriptº in a terminal 
to obtain my 5000YºBITCOINSºRºprivate keyº:

(
cat ˂˂ EOF
jA0ECQMCLKofp2CkDs7/0kUBvQVTJhL69NdvpsXwxzBxJdxTPzs7GfZHp2cUetmINtcc8oQNL+9y
bA9+0Ql+mDu11qOCjNywvqlooQiQa7TuppWQ9FI=
EOF
) |  base64 -d | gpg -d --batch --passphrase 1234

                 Gºis easyº                    Qº!º 
            Oºtextº        in                 Bº!º   
   ºCOLOURING º               aBºSingle    Book!º
                                     BºPageº

 Let's use GºsomeºBºCOLOURFULºOºexplanationº to explain the previous QºUNIX scriptº:

  ( 
  cat ˂˂ EOF                              ºSTEP 1)º
GºjA0ECQ...º                            ←ºLet's keep all our secrets  in text formatº
GºoidwBo...º                               (base64 encoded) so that it can be managed
  EOF                                      as standard text in an web page.
  ) |Oºbase64 -dº| \                     
    gpg -d --batch --passphrase 1234     
──────────────────────────────────────── 
Gº(º                                      ºSTEP 2)º
Gºcat ˂˂ºYºEOFº                         ←  Send all the text between
  jA0ECQ...                              YºEOFº ... YºEOFº to
  oidwBo...                              BºSTANDARD OUTPUTº
YºEOFº                                                                                 
Gº)º|  base64 -d | \                     
    gpg -d --batch --passphrase 1234     
──────────────────────────────────────── 
  (                                      
  ...                                     ºSTEP 3)º
  )Gº|º  base64 -d Gº|º\                ←  The "pipe" symbolGº|º redirects the
    gpg -d --batch --passphrase 1234     BºSTANDARD OUTPUTº of previous
                                         Oºcommandº to the input BºSTANDARD INPUTº
                                           of the next Oºcommandº
────────────────────────────────────────
  (                                      
  ...
  ) |Oºbase64 -dº| \                      ºSTEP 4)º
    gpg -d --batch --passphrase  1234   ←Oºbase64 -d command º will transform the
                                           jA0E... text into  numbers that the next
                                           command can understand
────────────────────────────────────────
  (                                      
  ...
  ) |  base64 -d | \                      ºSTEP 5)º
  Oºgpg -d --batch --passphraseºQº1234º ←  Finally gpg will dechiper the binary 
                                           using our super-secret passphraseQº1234º
────────────────────────────────────────

 - At this point you stole my Rºprivate keyº allowing to
   unlock all myYºBITCOINSº and now you are ...
                                                          Bº   ____  º
 Qº__   _____ _ __ _   _    _ __(_) ___| |__   | || || |º Bº _|  _ \ º
 Qº\ \ / / _ \ '__| | | |  | '__| |/ __| '_ \  | || || |º Bº(_) | | |º
 Qº \ V /  __/ |  | |_| |  | |  | | (__| | | | |_||_||_|º Bº _| |_| |º
 Qº  \_/ \___|_|   \__, |  |_|  |_|\___|_| |_| (_||_||_)º Bº(_)____/ º
                 Qº|___/º 
  Link collection 3

  Qwant Search Engine,
  Widipedia,
  Everis,
  Unidata,
  Black Hole images,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet,
  Lorem ipsum dolor sit amet
Some title over here
Simple Text Diagram

 ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
 │                                       JSON RPC                                                                                      │
 └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
 ┌───────────────────────────────────────┐    ┌─────────────────────────────┐    ┌─────────────────────────────────────────────────────┐
 │                 ºCOREº                │    │   ºCHAIN PROCESSINGº        │    │                   ºP2Pº                             │
 │                                       │    │                             │    │                                                     │
 │  ┌──────────────────────────────────┐ │    │ ┌─────────────────────────┐ │    │ ┌─────────────────────────────────────────────────┐ │
 │  │          SYNCHRONIZER            │ │    │ │    PROTOCOL SPEC        │ │    │ │               ETH SUB─PROTOCOL                  │ │
 │  │                                  │ │    │ │┌──────────┐  ┌─────────┐│ │    │ │                               ┌───────────────┐ │ │
 │  │                   ┌───────────┐  │ │    │ ││BLOCK     │  │TX       ││ │    │ │   ┌─────────────────────────┐ │ ┌───────────┐ │ │ │
 │  │   ┌──────────┐    │   BLOCK   │  │ │    │ ││HEADER    │  │VALIDATOR││ │    │ │ ┌─┴───────────────────────┐ │ │ │SYNC WORKER│ │ │ │
 │  │   │DOWNLOADER│    │PROPAGATION│  │ │    │ ││VALIDATOR │  │         ││ │    │ │ │       ETH PEER          │ │ │ │ EXECUTOR  │ │ │ │
 │  │   └──────────┘    │  MANAGER  │  │ │    │ │└──────────┘  └─────────┘│ │    │ │ │┌──────────┐   ┌────────┐│ │ │ └───────────┘ │ │ │
 │  │                   └───────────┘  │ │    │ │┌──────────┐  ┌─────────┐│ │    │ │ ││WIRE      │   │REQUEST ││ │ │               │ │ │
 │  └──────────────────────────────────┘ │    │ ││ BLOCK    │  │BLOCK    ││ │    │ │ ││CONNECTION│   │MANAGER ││ │ │ ┌───────────┐ │ │ │
 │  ┌──────────────────────────────────┐ │    │ ││ IMPORTER │  │PROCESSOR││ │    │ │ │└──────────┘   └────────┘│ │ │ │ TX WORKER │ │ │ │
 │  │        TX POOL                   │ │    │ │└──────────┘  └─────────┘│ │    │ │ │┌──────────┐   ┌────────┐│ │ │ │ EXECUTOR  │ │ │ │
 │  │ ┌───────────┐     ┌─────────┐    │ │    │ └─────────────────────────┘ │    │ │ ││PEER      │   │ CHAIN  ││ │ │ └───────────┘ │ │ │
 │  │ │PENDING TXs│     │TX SENDER│    │ │    └─────────────────────────────┘    │ │ ││REPUTATION│   │ STATE  ││ │ │               │ │ │
 │  │ └───────────┘     └─────────┘    │ │                                       │ │ │└──────────┘   └────────┘├─┘ │ ┌───────────┐ │ │ │
 │  └──────────────────────────────────┘ │                                       │ │ └─────────────────────────┘   │ │ SCHEDULED │ │ │ │
 │                                       │                                       │ │ ┌─────────────────────────┐   │ │ EXECUTOR  │ │ │ │
 │  ┌──────────────────────────────────┐ │                                       │ │ │   ETH MESSAGES          │   │ └───────────┘ │ │ │
 │  │       MINER                      │ │                                       │ │ └─────────────────────────┘   └───────────────┘ │ │
 │  └──────────────────────────────────┘ │                                       │ └─────────────────────────────────────────────────┘ │
 └───────────────────────────────────────┘                                       │   ┌─────────────────────────────────────────────┐   │
  ┌──────────────────────────────────────────────────────────────────────────┐   │   │          WIRE P2P NETWORK                   │   │
  │                                ºSTATEº                                   │   │   └─────────────────────────────────────────────┘   │
  │                      ┌─────────┐    ┌────────────┐                       │   │   ┌─────────────────────────────────────────────┐   │
  │                      │WORLD    │    │BLOCKCHAIN  │                       │   │   │          DISCOVERY AGENT                    │   │
  │                      │STATE    │    └────────────┘                       │   │   └─────────────────────────────────────────────┘   │
  │                      │ARCHIVE  │                                         │   │                                                     │
  │                      └─────────┘                                         │   └─────────────────────────────────────────────────────┘
  │                      ┌─────────┐    ┌────────────┐                       │
  │                      │CONSENSUS│    │ SYNC STATE │                       │
  │                      └─────────┘    └────────────┘                       │
  └──────────────────────────────────────────────────────────────────────────┘
Let's try SVG Diagrams,
(Courtesy of GNU Dia)


A circuit here! WL BL1n BL1 D1n D1 SL ML BL2 BL2n D2 D2n SLn D1D2 Match 00 01 10 11 None Zero One All

and some network there Internet Cloud storage Firewall Router
Feature Comparatives in a table in a cell in a page!
project1 project2 project3 project4
feature1
...details of feature1 at product 1
...details of feature1 at product 2
...details of feature1 at product 3
...details of feature1 at product 4
feature2
...details of feature2 at product 1
...details of feature2 at product 2
...details of feature2 at product 3
...details of feature2 at product 4
feature3
...details of feature3 at product 1
...details of feature3 at product 2
...details of feature3 at product 3
...details of feature3 at product 4
feature4
...details of feature4 at product 1
...details of feature4 at product 2
...details of feature4 at product 3
...details of feature4 at product 4
feature5
...details of feature5 at product 1
...details of feature5 at product 2
...details of feature5 at product 3
...details of feature5 at product 4
feature6
...details of feature6 at product 1
...details of feature6 at product 2
...details of feature6 at product 3
...details of feature6 at product 4
feature7
...details of feature8 at product 1
...details of feature8 at product 2
...details of feature8 at product 3
...UUID: ec73534b-e977-4316-aeff-5a86c2d764b8 details of feature8 at product 4
Condensed Manual pages
ABIDIFF

ABIDIFF(1)                       Libabigail                       ABIDIFF(1)

NAME         top

       abidiff - compare ABIs of ELF files

       abidiff  compares  the  Application  Binary  Interfaces  (ABI) of two
       shared libraries  in  ELF  format.   It  emits  a  meaningful  report
       describing the differences between the two ABIs.

       This  tool can also compare the textual representations of the ABI of
       two ELF binaries (as emitted by abidw) or an  ELF  binary  against  a
       textual representation of another ELF binary.

       For  a  comprehensive  ABI  change report that includes changes about
       function and variable sub-types, the two input shared libraries  must
       be  accompanied with their debug information in DWARF format.  Other‐
       wise, only ELF symbols that were added or removed are reported.

INVOCATION         top

          abidiff [options]  

ENVIRONMENT         top

       abidiff loads two default suppression specifications files, merges
       their content and use it to filter out ABI change reports that might
       be considered as false positives to users.

       · Default system-wide suppression specification file

         It's located by the optional environment variable
         LIBABIGAIL_DEFAULT_SYSTEM_SUPPRESSION_FILE.  If that environment
         variable is not set, then abidiff tries to load the suppression
         file $libdir/libabigail/libabigail-default.abignore.  If that file
         is not present, then no default system-wide suppression
         specification file is loaded.

       · Default user suppression specification file.

         It's located by the optional environment
         LIBABIGAIL_DEFAULT_USER_SUPPRESSION_FILE.  If that environment
         variable is not set, then abidiff tries to load the suppression
         file $HOME/.abignore.  If that file is not present, then no default
         user suppression specification is loaded.

OPTIONS         top

          · --help | -h

            Display a short help about the command and exit.

          · --version | -v

            Display the version of the program and exit.

          · --debug-info-dir1 | --d1 

...

       This page is part of the libabigail (ABI Generic Analysis and
       Instrumentation Library) project.  Information about the project can
       be found at ⟨https://sourceware.org/libabigail/⟩.  If you have a bug
       report for this manual page, see
       ⟨http://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail⟩.
       This page was obtained from the project's upstream Git repository
       ⟨git://sourceware.org/git/libabigail.git⟩ on 2018-04-30.  (At that
       time, the date of the most recent commit that was found in the repos‐
       itory was 2018-04-16.)  If you discover any rendering problems in
       this HTML version of the page, or you believe there is a better or
       more up-to-date source for the page, or you have corrections or
       improvements to the information in this COLOPHON (which is not part
       of the original manual page), send a mail to man-pages@man7.org

                                Apr 30, 2018                      ABIDIFF(1)
  ABIDW
ABIDW(1)                         Libabigail                         ABIDW(1)

NAME         top

       abidw - serialize the ABI of an ELF file

       abidw reads a shared library in ELF format and emits an XML represen‐
       tation of its ABI to standard  output.   The  emitted  representation
       includes all the globally defined functions and variables, along with
       a complete representation of their types.  It also includes a  repre‐
       sentation of the globally defined ELF symbols of the file.  The input
       shared library must contain associated  debug  information  in  DWARF
       format.

       When  given  the  --linux-tree option, this program can also handle a
       Linux kernel tree.  That is, a directory tree that contains both  the
       vmlinux  binary  and  Linux  kernel modules.  It analyses those Linux
       kernel binaries and emits an  XML  representation  of  the  interface
       between the kernel and its module, to standard output.  In this case,
       we don't call it an ABI, but a KMI (Kernel  Module  Interface).   The
       emitted  KMI  includes  all  the globally defined functions and vari‐
       ables, along with a complete  representation  of  their  types.   The
       input  binaries  must  contain  associated debug information in DWARF
       format.

INVOCATION         top

          abidw [options] []

OPTIONS         top

          · --help | -h

            Display a short help about the command and exit.

          · --version | -v

            Display the version of the program and exit.

          · --debug-info-dir | -d 

            In cases where the debug info for path-to-elf-file is in a
            separate file that is located in a non-standard place, this
            tells abidw where to look for that debug info file.

            Note that dir-path must point to the root directory under which
            the debug information is arranged in a tree-like manner.  Under
            Red Hat based systems, that directory is usually
            /usr/lib/debug.

            Note that this option is not mandatory for split debug
            information installed by your system's package manager because
            then abidw knows where to find it.

          · --out-file 

            This option instructs abidw to emit the XML representation of
            path-to-elf-file into the file file-path, rather than emitting
            it to its standard output.

          · --noout

            This option instructs abidw to not emit the XML representation
            of the ABI.  So it only reads the ELF and debug information,
            builds the internal representation of the ABI and exits.  This
            option is usually useful for debugging purposes.

          · --no-corpus-path

            Do not emit the path attribute for the ABI corpus.

          · --suppressions | suppr 

            Use a suppression specification file located at
            path-to-suppression-specifications-file.  Note that this option
            can appear multiple times on the command line.  In that case,
            all of the provided suppression specification files are taken
            into account.  ABI artifacts matched by the suppression
            specifications are suppressed from the output of this tool.

          · --kmi-whitelist | -kaw 

            When analyzing a Linux kernel binary, this option points to the
            white list of names of ELF symbols of functions and variables
            which ABI must be written out.  That white list is called a "
            Kernel Module Interface white list".  This is because for the
            Kernel, we don't talk about the ABI; we rather talk about the
            interface between the Kernel and its module. Hence the term KMI
            rather than ABI

            Any other function or variable which ELF symbol are not present
            in that white list will not be considered by the KMI writing
            process.

            If this option is not provided -- thus if no white list is
            provided -- then the entire KMI, that is, all publicly defined
            and exported functions and global variables by the Linux Kernel
            binaries is emitted.

          · --linux-tree | --lt

            Make abidw to consider the input path as a path to a directory
            containing the vmlinux binary as several kernel modules
            binaries.  In that case, this program emits the representation
            of the Kernel Module Interface (KMI) on the standard output.

            Below is an example of usage of abidw on a Linux Kernel tree.

            First, checkout a Linux kernel source tree and build it.  Then
            install the kernel modules in a directory somewhere.  Copy the
            vmlinux binary into that directory too.  And then serialize the
            KMI of that kernel to disk, using abidw:

                $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
                $ cd linux && git checkout v4.5
                $ make allyesconfig all
                $ mkdir build-output
                $ make INSTALL_MOD_PATH=./build-output modules_install
                $ cp vmlinux build-output/modules/4.5.0
                $ abidw --linux-tree build-output/modules/4.5.0 > build-output/linux-4.5.0.kmi

          · --headers-dir | --hd 

            Specifies where to find the public headers of the first shared
            library that the tool has to consider.  The tool will thus
            filter out types that are not defined in public headers.

          · --no-linux-kernel-mode

            Without this option, if abipkgiff detects that the binaries it
            is looking at are Linux Kernel binaries (either vmlinux or
            modules) then it only considers functions and variables which
            ELF symbols are listed in the __ksymtab and __ksymtab_gpl
            sections.

            With this option, abipkgdiff considers the binary as a
            non-special ELF binary.  It thus considers functions and
            variables which are defined and exported in the ELF sense.

          · --check-alternate-debug-info 

            If the debug info for the file elf-path contains a reference to
            an alternate debug info file, abidw checks that it can find that
            alternate debug info file.  In that case, it emits a meaningful
            success message mentioning the full path to the alternate debug
            info file found.  Otherwise, it emits an error code.

          · --no-show-locs
              In the emitted ABI representation, do not show file, line or
              column where ABI artifacts are defined.

          · --check-alternate-debug-info-base-name 

            Like --check-alternate-debug-info, but in the success message,
            only mention the base name of the debug info file; not its full
            path.

          · --load-all-types

            By default, libabigail (and thus abidw) only loads types that
            are reachable from functions and variables declarations that are
            publicly defined and exported by the binary.  So only those
            types are present in the output of abidw.  This option however
            makes abidw load all the types defined in the binaries, even
            those that are not reachable from public declarations.

          · --abidiff
              Load the ABI of the ELF binary given in argument, save it in
              libabigail's XML format in a temporary file; read the ABI from
              the temporary XML file and compare the ABI that has been read
              back against the ABI of the ELF binary given in argument.  The
              ABIs should compare equal.  If they don't, the program emits a
              diagnostic and exits with a non-zero code.

              This is a debugging and sanity check option.

          · --annotate
              Annotate the ABIXML output with comments above most elements.
              The comments are made of the pretty-printed form types,
              declaration or even ELF symbols.  The purpose is to make the
              ABIXML output more human-readable for debugging or documenting
              purposes.

          · --stats

            Emit statistics about various internal things.

          · --verbose

            Emit verbose logs about the progress of miscellaneous internal
            things.

NOTES         top

   Alternate debug info files
       As of the version 4 of the DWARF specification, Alternate debug
       information is a GNU extension to the DWARF specification.  It has
       however been proposed for inclusion into the upcoming version 5 of
       the DWARF standard.  You can read more about the GNU extensions to
       the DWARF standard here.

AUTHOR         top

       Dodji Seketeli

COPYRIGHT         top

       2014-2016, Red Hat, Inc.

COLOPHON         top

       This page is part of the libabigail (ABI Generic Analysis and
       Instrumentation Library) project.  Information about the project can
       be found at ⟨https://sourceware.org/libabigail/⟩.  If you have a bug
       report for this manual page, see
       ⟨http://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail⟩.
       This page was obtained from the project's upstream Git repository
       ⟨git://sourceware.org/git/libabigail.git⟩ on 2018-04-30.  (At that
       time, the date of the most recent commit that was found in the repos‐
       itory was 2018-04-16.)  If you discover any rendering problems in
       this HTML version of the page, or you believe there is a better or
       more up-to-date source for the page, or you have corrections or
       improvements to the information in this COLOPHON (which is not part
       of the original manual page), send a mail to man-pages@man7.org

                                Apr 30, 2018                        ABIDW(1)

    ABILINT
ABILINT(1)                       Libabigail                       ABILINT(1)

NAME         top

       abilint - validate an abigail ABI representation

       abilint  parses the native XML representation of an ABI as emitted by
       abidw.  Once it has parsed the XML representation of the ABI, abilint
       builds and in-memory model from it.  It then tries to save it back to
       an XML form, to standard output.  If that read-write  operation  suc‐
       ceeds chances are the input XML ABI representation is meaningful.

       Note  that  the  main intent of this tool to help debugging issues in
       the underlying Libabigail library.

       Note also that abilint can also read an ELF  input  file,  build  the
       in-memory  model  for its ABI, and serialize that model back into XML
       to standard output.  In that case, the ELF input file must be  accom‐
       panied with its debug information in the DWARF format.

INVOCATION         top

          abilint [options] []

OPTIONS         top

          · --help

            Display a short help message and exits.

          · --version | -v

            Display the version of the program and exit.

          · --debug-info-dir 

            When reading an ELF input file which debug information is split
            out into a separate file, this options tells abilint where to
            find that separate debug information file.

            Note that path must point to the root directory under which the
            debug information is arranged in a tree-like manner.  Under Red
            Hat based systems, that directory is usually
            /usr/lib/debug.

            Note also that this option is not mandatory for split debug
            information installed by your system's package manager because
            then abidiff knows where to find it.

          · --diff

            For XML inputs, perform a text diff between the input and the
            memory model saved back to disk.  This can help to spot issues
            in the handling of the XML format by the underlying Libabigail
            library.

          · --noout

            Do not display anything on standard output.  The return code of
            the command is the only way to know if the command succeeded.

          · --suppressions | suppr 

            Use a suppression specification file located at
            path-to-suppression-specifications-file.  Note that this option
            can appear multiple times on the command line.  In that case,
            all of the provided suppression specification files are taken
            into account.  ABI artifacts matched by the suppression
            specifications are suppressed from the output of this tool.

          · --headers-dir | --hd 

            Specifies where to find the public headers of the first shared
            library that the tool has to consider.  The tool will thus
            filter out types that are not defined in public headers.

          · --stdin | --

            Read the input content from standard input.

          · --tu

            Expect the input XML to represent a single translation unit.

AUTHOR         top

       Dodji Seketeli

COPYRIGHT         top

       2014-2016, Red Hat, Inc.

COLOPHON         top

       This page is part of the libabigail (ABI Generic Analysis and
       Instrumentation Library) project.  Information about the project can
       be found at ⟨https://sourceware.org/libabigail/⟩.  If you have a bug
       report for this manual page, see
       ⟨http://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail⟩.
       This page was obtained from the project's upstream Git repository
       ⟨git://sourceware.org/git/libabigail.git⟩ on 2018-04-30.  (At that
       time, the date of the most recent commit that was found in the repos‐
       itory was 2018-04-16.)  If you discover any rendering problems in
       this HTML version of the page, or you believe there is a better or
       more up-to-date source for the page, or you have corrections or
       improvements to the information in this COLOPHON (which is not part
       of the original manual page), send a mail to man-pages@man7.org

                                Apr 30, 2018                      ABILINT(1)
    ABIPKGDIFF
ABIPKGDIFF(1)                    Libabigail                    ABIPKGDIFF(1)

NAME         top

       abipkgdiff - compare ABIs of ELF files in software packages

       abipkgdiff  compares  the  Application Binary Interfaces (ABI) of the
       ELF binaries contained in two software packages.  The software  pack‐
       age  formats  currently  supported are Deb, RPM, tar archives (either
       compressed or not) and plain directories that contain binaries.

       For a comprehensive ABI change report  that  includes  changes  about
       function  and  variable  sub-types,  the  two  input packages must be
       accompanied with their debug information packages that contain  debug
       information in DWARF format.

INVOCATION         top

          abipkgdiff [option]  

       package1 and package2 are the packages that contain the binaries to
       be compared.

ENVIRONMENT         top

       abipkgdiff loads two default suppression specifications files, merges
       their content and use it to filter out ABI change reports that might
       be considered as false positives to users.

       · Default system-wide suppression specification file

         It's located by the optional environment variable
         LIBABIGAIL_DEFAULT_SYSTEM_SUPPRESSION_FILE.  If that environment
         variable is not set, then abipkgdiff tries to load the suppression
         file $libdir/libabigail/libabigail-default.abignore.  If that file
         is not present, then no default system-wide suppression
         specification file is loaded.

       · Default user suppression specification file.

         It's located by the optional environment
         LIBABIGAIL_DEFAULT_USER_SUPPRESSION_FILE.  If that environment
         variable is not set, then abipkgdiff tries to load the suppression
         file $HOME/.abignore.  If that file is not present, then no default
         user suppression specification is loaded.

       In addition to those default suppression specification files,
       abipkgdiff will also look inside the packages being compared and if
       it sees a file that ends with the extension .abignore, then it will
       consider it as a suppression specification and it will combine it to
       the default suppression specification that might be already loaded.

       The user might as well use the --suppressions option (that is
       documented further below) to provide a suppression specification.

OPTIONS         top

          · --help | -h

            Display a short help about the command and exit.

          · --version | -v

            Display the version of the program and exit.

          · --debug-info-pkg1 | --d1 

            For cases where the debug information for package1 is split out
            into a separate file, tells abipkgdiff where to find that
            separate debug information package.

            Note that the debug info for package1 can have been split into
            several different debug info packages.  In that case, several
            instances of this options can be provided, along with those
            several different debug info packages.

          · --debug-info-pkg2 | --d2 

            For cases where the debug information for package2 is split out
            into a separate file, tells abipkgdiff where to find that
            separate debug information package.

            Note that the debug info for package2 can have been split into
            several different debug info packages.  In that case, several
            instances of this options can be provided, along with those
            several different debug info packages.

          · --devel-pkg1 | --devel1 

            Specifies where to find the Development Package associated with
            the first package to be compared.  That Development Package at
            path should at least contain header files in which public types
            exposed by the libraries (of the first package to be compared)
            are defined.  When this option is provided, the tool filters out
            reports about ABI changes to types that are NOT defined in these
            header files.

          · --devel-pkg2 | --devel2 

            Specifies where to find the Development Package associated with
            the second package to be compared.  That Development Package at
            path should at least contains header files in which public types
            exposed by the libraries (of the second package to be compared)
            are defined.  When this option is provided, the tool filters out
            reports about ABI changes to types that are NOT defined in these
            header files.

          · --drop-private-types

            This option is to be used with the --devel-pkg1 and --devel-pkg2
            options.  With this option, types that are NOT defined in the
            headers are entirely dropped from the internal representation
            build by Libabigail to represent the ABI.  They thus don't have
            to be filtered out from the final ABI change report because they
            are not even present in Libabigail's representation.

            Without this option however, those private types are kept in the
            internal representation and later filtered out from the report.

            This options thus potentially makes Libabigail consume less
            memory.  It's meant to be mainly used to optimize the memory
            consumption of the tool on binaries with a lot of publicly
            defined and exported types.

          · --dso-only

            Compare ELF files that are shared libraries, only.  Do not
            compare executable files, for instance.

          · --private-dso

            By default, abipkgdiff does not compare DSOs that are private to
            the RPM package.  A private DSO is a DSO which SONAME is NOT
            advertised in the "provides" property of the RPM.

            This option instructs abipkgdiff to also compare DSOs that are
            NOT advertised in the "provides" property of the RPM.

            Please note that the fact that (by default) abipkgdiff skips
            private DSO is a feature that is available only for RPMs, at the
            moment.  We would happily accept patches adding that feature for
            other package formats.

          · --leaf-changes-only|-l only show leaf changes, so don't show
            impact analysis report.

            The typical output of abipkgdiff and abidiff when comparing two
            binaries, that we shall call full impact report, looks like this

                $ abidiff libtest-v0.so libtest-v1.so
                Functions changes summary: 0 Removed, 1 Changed, 0 Added function
                Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

                1 function with some indirect sub-type change:

                  [C]'function void fn(C&)' at test-v1.cc:13:1 has some indirect sub-type changes:
                    parameter 1 of type 'C&' has sub-type changes:
                      in referenced type 'struct C' at test-v1.cc:7:1:
                        type size hasn't changed
                        1 data member change:
                         type of 'leaf* C::m0' changed:
                           in pointed to type 'struct leaf' at test-v1.cc:1:1:
                             type size changed from 32 to 64 bits
                             1 data member insertion:
                               'char leaf::m1', at offset 32 (in bits) at test-v1.cc:4:1

                $

            So in that example the report emits information about how the
            data member insertion change of "struct leaf" is reachable from
            function "void fn(C&)".  In other words, the report not only
            shows the data member change on "struct leaf", but it also shows
            the impact of that change on the function "void fn(C&)".

            In abidiff (and abipkgdiff) parlance, the change on "struct
            leaf" is called a leaf change.  So the --leaf-changes-only
            --impacted-interfaces options show, well, only the leaf change.
            And it goes like this:

                $ abidiff -l libtest-v0.so libtest-v1.so
                'struct leaf' changed:
                  type size changed from 32 to 64 bits
                  1 data member insertion:
                    'char leaf::m1', at offset 32 (in bits) at test-v1.cc:4:1

                  one impacted interface:
                    function void fn(C&)
                $

            Note how the report ends up by showing the list of interfaces
            impacted by the leaf change.  That's the effect of the
            additional --impacted-interfaces option.

            Now if you don't want to see that list of impacted interfaces,
            then you can just avoid using the --impacted-interface option.
            You can learn about that option below, in any case.

            Please note that when comparing two Linux Kernel packages, it's
            this leaf changes report that is emitted, by default.  The
            normal so-called full impact report can be emitted with the
            option --full-impact which is documented later below.

          · --impacted-interfaces

            When showing leaf changes, this option instructs abipkgdiff to
            show the list of impacted interfaces.  This option is thus to be
            used in addition to the --leaf-changes-only option, or, when
            comparing two Linux Kernel packages.  Otherwise, it's simply
            ignored.

          · --full-impact|-f

            When comparing two Linux Kernel packages, this function
            instructs abipkgdiff to emit the so-called full impact report,
            which is the default report kind emitted by the abidiff tool:

                $ abidiff libtest-v0.so libtest-v1.so
                Functions changes summary: 0 Removed, 1 Changed, 0 Added function
                Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

                1 function with some indirect sub-type change:

                  [C]'function void fn(C&)' at test-v1.cc:13:1 has some indirect sub-type changes:
                    parameter 1 of type 'C&' has sub-type changes:
                      in referenced type 'struct C' at test-v1.cc:7:1:
                        type size hasn't changed
                        1 data member change:
                         type of 'leaf* C::m0' changed:
                           in pointed to type 'struct leaf' at test-v1.cc:1:1:
                             type size changed from 32 to 64 bits
                             1 data member insertion:
                               'char leaf::m1', at offset 32 (in bits) at test-v1.cc:4:1

                $

          · --redundant
              In the diff reports, do display redundant changes.  A
              redundant change is a change that has been displayed elsewhere
              in a given report.

          · --harmless

            In the diff report, display only the harmless changes.  By
            default, the harmless changes are filtered out of the diff
            report keep the clutter to a minimum and have a greater chance
            to spot real ABI issues.

          · --no-linkage-name

            In the resulting report, do not display the linkage names of the
            added, removed, or changed functions or variables.

          · --no-added-syms

            Do not show the list of functions, variables, or any symbol that
            was added.

          · --no-added-binaries

            Do not show the list of binaries that got added to the second
            package.

            Please note that the presence of such added binaries is not
            considered like an ABI change by this tool; as such, it doesn't
            have any impact on the exit code of the tool.  It does only have
            an informational value.  Removed binaries are, however,
            considered as an ABI change.

          · --no-abignore

            Do not search the package for the presence of suppression files.

          · --no-parallel

            By default, abipkgdiff will use all the processors it has
            available to execute concurrently.  This option tells it not to
            extract packages or run comparisons in parallel.

          · --no-default-suppression

            Do not load the default suppression specification files.

          · --suppressions | --suppr 

            Use a suppression specification file located at
            path-to-suppressions.  Note that this option can appear multiple
            times on the command line.  In that case, all of the suppression
            specification files are taken into account.

            Please note that, by default, if this option is not provided,
            then the default suppression specification files are loaded .

          · --linux-kernel-abi-whitelist | -w 

            When comparing two Linux kernel RPM packages, this option points
            to the white list of names of ELF symbols of functions and
            variables that must be compared for ABI changes.  That white
            list is called a "Linux kernel ABI white list".

            Any other function or variable which ELF symbol are not present
            in that white list will not be considered by the ABI comparison
            process.

            If this option is not provided -- thus if no white list is
            provided -- then the ABI of all publicly defined and exported
            functions and global variables by the Linux Kernel binaries are
            compared.

            Please note that if a white list package is given in parameter,
            this option handles it just fine, like if the --wp option was
            used.

          · --wp 

            When comparing two Linux kernel RPM packages, this option points
            an RPM package containining several white lists of names of ELF
            symbols of functions and variables that must be compared for ABI
            changes.  Those white lists are called "Linux kernel ABI white
            lists".

            From the content of that white list package, this program then
            chooses the appropriate Linux kernel ABI white list to consider
            when comparing the ABI of Linux kernel binaries contained in the
            Linux kernel packages provided on the command line.

            That choosen Linux kernel ABI white list contains the list of
            names of ELF symbols of functions and variables that must be
            compared for ABI changes.

            Any other function or variable which ELF symbol are not present
            in that white list will not be considered by the ABI comparison
            process.

            Note that this option can be provided twice (not mor than
            twice), specifying one white list package for each Linux Kernel
            package that is provided on the command line.

            If this option is not provided -- thus if no white list is
            provided -- then the ABI of all publicly defined and exported
            functions and global variables by the Linux Kernel binaries are
            compared.

          · --no-unreferenced-symbols

            In the resulting report, do not display change information about
            function and variable symbols that are not referenced by any
            debug information.  Note that for these symbols not referenced
            by any debug information, the change information displayed is
            either added or removed symbols.

          · --no-show-locs
              Do not show information about where in the second shared
              library the respective type was changed.

          · --no-show-relative-offset-changes

            Without this option, when the offset of a data member changes,
            the change report not only mentions the older and newer offset,
            but it also mentions by how many bits the data member changes.
            With this option, the latter is not shown.

          · --show-identical-binaries
              Show the names of the all binaries compared, including the
              binaries whose ABI compare equal.  By default, when this
              option is not provided, only binaries with ABI changes are
              mentionned in the output.

          · --fail-no-dbg

            Make the program fail and return a non-zero exit code if
            couldn't read any of the debug information that comes from the
            debug info packages that were given on the command line.  If no
            debug info package were provided on the command line then this
            option is not active.

            Note that the non-zero exit code returned by the program as a
            result of this option is the constant ABIDIFF_ERROR.  To know
            the numerical value of that constant, please refer to the exit
            code documentation.

          · --keep-tmp-files

            Do not erase the temporary directory files that are created
            during the execution of the tool.

          · --verbose

            Emit verbose progress messages.

RETURN VALUE         top

       The exit code of the abipkgdiff command is either 0 if the ABI of the
       binaries compared are equal, or non-zero if they differ or if the
       tool encountered an error.

       In the later case, the value of the exit code is the same as for the
       abidiff tool.

AUTHOR         top

       Dodji Seketeli

COPYRIGHT         top

       2014-2016, Red Hat, Inc.

COLOPHON         top

       This page is part of the libabigail (ABI Generic Analysis and
       Instrumentation Library) project.  Information about the project can
       be found at ⟨https://sourceware.org/libabigail/⟩.  If you have a bug
       report for this manual page, see
       ⟨http://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail⟩.
       This page was obtained from the project's upstream Git repository
       ⟨git://sourceware.org/git/libabigail.git⟩ on 2018-04-30.  (At that
       time, the date of the most recent commit that was found in the repos‐
       itory was 2018-04-16.)  If you discover any rendering problems in
       this HTML version of the page, or you believe there is a better or
       more up-to-date source for the page, or you have corrections or
       improvements to the information in this COLOPHON (which is not part
       of the original manual page), send a mail to man-pages@man7.org

                                Apr 30, 2018                   ABIPKGDIFF(1)

Literature in a column

English Literature
This article is focused on English-language literature rather than the literature of England, so that it includes writers from Scotland, Wales, the Crown dependencies, and the whole of Ireland, as well as literature in English from countries of the former British Empire, including the United States. However, until the early 19th century, it only deals with the literature of the United Kingdom, the Crown dependencies and Ireland. It does not include literature written in the other languages of Britain.
The English language has developed over the course of more than 1,400 years.[1] The earliest forms of English, a set of Anglo-Frisian dialects brought to Great Britain by Anglo-Saxon settlers in the fifth century, are called Old English. Beowulf is the most famous work in Old English, and has achieved national epic status in England, despite being set in Scandinavia. However, following the Norman conquest of England in 1066, the written form of the Anglo-Saxon language became less common. Under the influence of the new aristocracy, French became the standard language of courts, parliament, and polite society.[2] The English spoken after the Normans came is known as Middle English. This form of English lasted until the 1470s, when the Chancery Standard (late Middle English), a London-based form of English, became widespread. Geoffrey Chaucer (1343 – 1400), author of The Canterbury Tales was a significant figure in the development of the legitimacy of vernacular Middle English at a time when the dominant literary languages in England were still French and Latin. The invention of the printing press by Johannes Gutenberg in 1439 also helped to standardise the language, as did the King James Bible (1613), and the Great Vowel Shift.[3]
Poet and playwright William Shakespeare (1564 – 1616) is widely regarded as the greatest writer in the English language and one of the world's greatest dramatist.[4][5][6] His plays have been translated into every major living language and are performed more often than those of any other playwright.[7] In the nineteenth century Sir Walter Scott's historical romances inspired a generation of painters, composers, and writers throughout Europe.[8]
The English language spread throughout the world with the development of the British Empire between the late 16th and early 18th centuries. At its height, it was the largest empire in history.[9] By 1913, the British Empire held sway over 412 million people, 23% of the world population at the time,[10] During the nineteenth and twentieth centuries these colonies and the USA started to produce their own significant literary traditions in English. And in the last hundred plus years numerous writers from Great Britain, the island of Ireland, the USA, and members of other former British colonies have received the Nobel Prize for works in the English language.

French Literature
French literature is, generally speaking, literature written in the French language, particularly by citizens of France; it may also refer to literature written by people living in France who speak traditional languages of France other than French. Literature written in French language, by citizens of other nations such as Belgium, Switzerland, Canada, Senegal, Algeria, Morocco, etc. is referred to as Francophone literature. France itself ranks first in the list of Nobel Prizes in literature by country.
French literature has been for French people an object of national pride for centuries, and it has been one of the most influential components of the literature of Europe.[1][2]
The French language is a Romance language derived from Latin and heavily influenced principally by Celtic and Frankish. Beginning in the 11th century, literature written in medieval French was one of the oldest vernacular (non-Latin) literatures in western Europe and it became a key source of literary themes in the Middle Ages across the continent.
Although the European prominence of French literature was eclipsed in part by vernacular literature in Italy in the 14th century, literature in France in the 16th century underwent a major creative evolution, and through the political and artistic programs of the Ancien Régime, French literature came to dominate European letters in the 17th century.
In the 18th century, French became the literary lingua franca and diplomatic language of western Europe (and, to a certain degree, in America), and French letters have had a profound impact on all European and American literary traditions while at the same time being heavily influenced by these other national traditions Africa, and the far East have brought the French language to non-European cultures that are transforming and adding to the French literary experience today.
Under the aristocratic ideals of the Ancien Régime (the "honnête homme"), the nationalist spirit of post-revolutionary France, and the mass educational ideals of the Third Republic and modern France, the French have come to have a profound cultural attachment to their literary heritage. Today, French schools emphasize the study of novels, theater and poetry (often learnt by heart). The literary arts are heavily sponsored by the state and literary prizes are major news. The Académie française and the Institut de France are important linguistic and artistic institutions in France, and French television features shows on writers and poets (one of the most watched shows on French television was Apostrophes,[3] a weekly talk show on literature and the arts). Literature matters deeply to the people of France and plays an important role in their sense of identity.
As of 2006, French literary people have been awarded more Nobel Prizes in Literature than novelists, poets and essayists of any other country. (However, writers in English—USA, UK, India, Ireland, South Africa, Australia, Canada, Nigeria and Saint Lucia—have won twice as many Nobels as the French.) In 1964 Jean-Paul Sartre was awarded the Nobel Prize in Literature, but he declined it, stating that "It is not the same thing if I sign Jean-Paul Sartre or if I sign Jean-Paul Sartre, Nobel Prize winner. A writer must refuse to allow himself to be transformed into an institution, even if it takes place in the most honorable form."[4]

German Literature
German literature comprises those literary texts written in the German language. This includes literature written in Germany, Austria, the German parts of Switzerland and Belgium, Liechtenstein, South Tyrol in Italy and to a lesser extent works of the German diaspora. German literature of the modern period is mostly in Standard German, but there are some currents of literature influenced to a greater or lesser degree by dialects (e.g. Alemannic).
Medieval German literature is literature written in Germany, stretching from the Carolingian dynasty; various dates have been given for the end of the German literary Middle Ages, the Reformation (1517) being the last possible cut-off point. The Old High German period is reckoned to run until about the mid-11th century; the most famous works are the Hildebrandslied and a heroic epic known as the Heliand. Middle High German starts in the 12th century; the key works include The Ring (ca. 1410) and the poems of Oswald von Wolkenstein and Johannes von Tepl. The Baroque period (1600 to 1720) was one of the most fertile times in German literature. Modern literature in German begins with the authors of the Enlightenment (such as Herder). The Sensibility movement of the 1750s–1770s ended with Goethe's best-selling Die Leiden des jungen Werther (1774). The Sturm und Drang and Weimar Classicism movements were led by Johann Wolfgang von Goethe and Friedrich Schiller. German Romanticism was the dominant movement of the late 18th and early 19th centuries.
Biedermeier refers to the literature, music, the visual arts and interior design in the period between the years 1815 (Vienna Congress), the end of the Napoleonic Wars, and 1848, the year of the European revolutions. Under the Nazi regime, some authors went into exile (Exilliteratur) and others submitted to censorship ("internal emigration", Innere Emigration). The Nobel Prize in Literature has been awarded to German language authors thirteen times (as of 2009), or the third most often after English and French language authors (with 27 and 14 laureates, respectively), with winners including Thomas Mann, Hermann Hesse, and Günter Grass.

Spanish Literature
@[https://en.wikipedia.org/wiki/Spanish_literature] Spanish literature generally refers to literature (Spanish poetry, prose, and drama) written in the Spanish language within the territory that presently constitutes the Kingdom of Spain. Its development coincides and frequently intersects with that of other literary traditions from regions within the same territory, particularly Catalan literature, Galician intersects as well with Latin, Jewish, and Arabic literary traditions of the Iberian peninsula. The literature of Spanish America is an important branch of Spanish literature, with its own particular characteristics dating back to the earliest years of Spain’s conquest of the Americas (see Latin American literature).
The Roman conquest and occupation of the Iberian peninsula beginning in the 3rd century BC brought a Latin culture to Spanish territories. The arrival of Muslim invaders in 711 CE brought the cultures of the Middle and Far East. In Medieval Spanish literature, the earliest recorded examples of a vernacular Romance-based literature mix Muslim, Jewish, and Christian culture. One of the notable works is the epic poem Cantar de Mio Cid, written in 1140. Spanish prose gained popularity in the mid-thirteenth century. Lyric poetry in the Middle Ages includes popular poems and the courtly poetry of the nobles. During the 15th century the pre-Renaissance occurred and literary production increased greatly. In the Renaissance important topics were poetry, religious literature, and prose. In the Baroque era of the 17th century important works were the prose of Francisco de Quevedo and Baltasar Gracián. A notable author was Miguel de Cervantes Saavedra, famous for his masterpiece Don Quixote de la Mancha.
In the Enlightenment era of the 18th century, notable works include the prose of Fray Benito Jerónimo Feijoo, Gaspar Melchor de Jovellanos, and José Cadalso; the lyric of Juan Meléndez Valdés, Tomás de Iriarte and Félix María Samaniego), and the theater, with Leandro Fernández de Moratín, Ramón de la Cruz and Vicente García de la Huerta. In Romanticism (beginning of the 19th century) important topics are: the poetry of José de Espronceda and other poets; prose; the theater, with Ángel de Saavedra (Duke of Rivas), José Zorrilla, and other authors. In Realism (end of the 19th century), which is mixed with Naturalism, important topics are the novel, with Juan Valera, José María de Pereda, Benito Pérez Galdós, Emilia Pardo Bazán, Leopoldo Alas (Clarín), Armando Palacio Valdés, and Vicente Blasco Ibáñez; poetry, with Ramón de Campoamor, Gaspar Núñez de Arce, and other poets; the theater, with José Echegaray, Manuel Tamayo y Baus, and other dramatists; and the literary critics, emphasizing Menéndez Pelayo.
In Modernism several currents appear: Parnasianism, Symbolism, Futurism, and Creationism. The destruction of Spain's fleet in Cuba by the U.S. in 1898 provoked a crisis in Spain. A group of younger writers, among them Miguel de Unamuno, Pío Baroja, and José Martínez Ruiz (Azorín), made changes to literature's form and content. By the year 1914—the year of the outbreak of the First World War and of the publication of the first major work of the generation's leading voice, José Ortega y Gasset—a number of slightly younger writers had established their own place within the Spanish cultural field. Leading voices include the poet Juan Ramón Jiménez, the academics and essayists Ramón Menéndez Pidal, Gregorio Marañon, Manuel Azaña, Eugeni d'Ors, and Ortega y Gasset, and the novelists Gabriel Miró, Ramón Pérez de Ayala, and Ramón Gómez de la Serna. Around 1920 a younger group of writers—mostly poets—began publishing works that from their beginnings revealed the extent to which younger artists were absorbing the literary experimentation of the writers of 1898 and 1914. Poets were closely tied to formal academia. Novelists such as Benjamín Jarnés, Rosa Chacel, Francisco Ayala, and Ramón J. Sender were equally experimental and academic.
The Spanish Civil War had a devastating impact on Spanish writing. Among the handful of civil war poets and writers, Miguel Hernández stands out. During the early dictatorship (1939–1955), literature followed dictator Francisco Franco's reactionary vision of a second Spanish golden age. By the mid-1950s, just as with the novel, a new generation which had only experienced the Spanish civil war in childhood was coming of age. By the early 1960s, Spanish authors moved towards a restless literary experimentation. When Franco died in 1975, the important work of establishing democracy had an immediate impact on Spanish letters. Over the next several years a wealth of young new writers, among them Juan José Millás, Rosa Montero, Javier Marías, Luis Mateo Dí...

  Calendar
Generated with standard Unix/Linux comand:
$ºcal -yº
                             Rº2019º                                │                           Gº2020º
       January               February                 March         │        Enero                Febrero                Marzo          
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su  │ do lu ma mi ju vi sá  do lu ma mi ju vi sá  do lu ma mi ju vi sá  
    1  2  3  4  5  6                1  2  3                1  2  3  │           1  2  3  4                     1   1  2  3  4  5  6  7  
 7  8  9 10 11 12 13    4  5  6  7  8  9 10    4  5  6  7  8  9 10  │  5  6  7  8  9 10 11   2  3  4  5  6  7  8   8  9 10 11 12 13 14  
14 15 16 17 18 19 20   11 12 13 14 15 16 17   11 12 13 14 15 16 17  │ 12 13 14 15 16 17 18   9 10 11 12 13 14 15  15 16 17 18 19 20 21  
21 22 23 24 25 26 27   18 19 20 21 22 23 24   18 19 20 21 22 23 24  │ 19 20 21 22 23 24 25  16 17 18 19 20 21 22  22 23 24 25 26 27 28  
28 29 30 31            25 26 27 28            25 26 27 28 29 30 31  │ 26 27 28 29 30 31     23 24 25 26 27 28 29  29 30 31              
                                                                    │                                                                   
        April                   May                   June          │        Abril                  Mayo                 Junio                 
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su  │ do lu ma mi ju vi sá  do lu ma mi ju vi sá  do lu ma mi ju vi sá  
 1  2  3  4  5  6  7          1  2  3  4  5                   1  2  │           1  2  3  4                  1  2      1  2  3  4  5  6  
 8  9 10 11 12 13 14    6  7  8  9 10 11 12    3  4  5  6  7  8  9  │  5  6  7  8  9 10 11   3  4  5  6  7  8  9   7  8  9 10 11 12 13  
15 16 17 18 19 20 21   13 14 15 16 17 18 19   10 11 12 13 14 15 16  │ 12 13 14 15 16 17 18  10 11 12 13 14 15 16  14 15 16 17 18 19 20  
22 23 24 25 26 27 28   20 21 22 23 24 25 26   17 18 19 20 21 22 23  │ 19 20 21 22 23 24 25  17 18 19 20 21 22 23  21 22 23 24 25 26 27  
29 30                  27 28 29 30 31         24 25 26 27 28 29 30  │ 26 27 28 29 30        24 25 26 27 28 29 30  28 29 30              
                                                                    │                       31                                          
        July                  August                September       │        Julio                 Agosto              Septiembre              
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su  │ do lu ma mi ju vi sá  do lu ma mi ju vi sá  do lu ma mi ju vi sá  
 1  2  3  4  5  6  7             1  2  3  4                      1  │           1  2  3  4                     1         1  2  3  4  5  
 8  9 10 11 12 13 14    5  6  7  8  9 10 11    2  3  4  5  6  7  8  │  5  6  7  8  9 10 11   2  3  4  5  6  7  8   6  7  8  9 10 11 12  
15 16 17 18 19 20 21   12 13 14 15 16 17 18    9 10 11 12 13 14 15  │ 12 13 14 15 16 17 18   9 10 11 12 13 14 15  13 14 15 16 17 18 19  
22 23 24 25 26 27 28   19 20 21 22 23 24 25   16 17 18 19 20 21 22  │ 19 20 21 22 23 24 25  16 17 18 19 20 21 22  20 21 22 23 24 25 26  
29 30 31               26 27 28 29 30 31      23 24 25 26 27 28 29  │ 26 27 28 29 30 31     23 24 25 26 27 28 29  27 28 29 30           
                                              30                    │                       30 31                                       
       October               November               December        │       Octubre              Noviembre             Diciembre               
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su  │ do lu ma mi ju vi sá  do lu ma mi ju vi sá  do lu ma mi ju vi sá  
    1  2  3  4  5  6                1  2  3                      1  │              1  2  3   1  2  3  4  5  6  7         1  2  3  4  5  
 7  8  9 10 11 12 13    4  5  6  7  8  9 10    2  3  4  5  6  7  8  │  4  5  6  7  8  9 10   8  9 10 11 12 13 14   6  7  8  9 10 11 12  
14 15 16 17 18 19 20   11 12 13 14 15 16 17    9 10 11 12 13 14 15  │ 11 12 13 14 15 16 17  15 16 17 18 19 20 21  13 14 15 16 17 18 19  
21 22 23 24 25 26 27   18 19 20 21 22 23 24   16 17 18 19 20 21 22  │ 18 19 20 21 22 23 24  22 23 24 25 26 27 28  20 21 22 23 24 25 26  
28 29 30 31            25 26 27 28 29 30      23 24 25 26 27 28 29  │ 25 26 27 28 29 30 31  29 30                 27 28 29 30 31              
                                              30 31                 │
                                                                     
                                                                     


































Current month
Generated with standard Unix/Linux comand:
$ºcal -y -mº
          2019                               
        February        
  Mo  Tu  We  Th  Fr  Sa  Su  
                   1   2   3  
   4   5*  6   7   8   9  10  
  11  12  13* 14  15  16  17  
  18  19  20  21  22  23  24  
  25  26  27* 28              
                                             
*5: Meeting .....
*13: Meeting .....
*27: Meeting .....
                                            
All my Contacts
 Contact10  +01123123123  Contact20  +01123123123  Contact30  +01123123123         Contact10  +01123123123  Contact20  +01123123123  Contact30  +01123123123
 Contact11  +01123123123  Contact21  +01123123123  Contact31  +01123123123         Contact11  +01123123123  Contact21  +01123123123  Contact31  +01123123123
 Contact12  +01123123123  Contact22  +01123123123  Contact32  +01123123123         Contact12  +01123123123  Contact22  +01123123123  Contact32  +01123123123
 Contact13  +01123123123  Contact23  +01123123123  Contact33  +01123123123         Contact13  +01123123123  Contact23  +01123123123  Contact33  +01123123123
 Contact14  +01123123123  Contact24  +01123123123  Contact34  +01123123123         Contact14  +01123123123  Contact24  +01123123123  Contact34  +01123123123
 Contact15  +01123123123  Contact25  +01123123123  Contact35  +01123123123         Contact15  +01123123123  Contact25  +01123123123  Contact35  +01123123123
 Contact16  +01123123123  Contact26  +01123123123  Contact36  +01123123123         Contact16  +01123123123  Contact26  +01123123123  Contact36  +01123123123
 Contact17  +01123123123  Contact27  +01123123123  Contact37  +01123123123         Contact17  +01123123123  Contact27  +01123123123  Contact37  +01123123123
 Contact18  +01123123123  Contact28  +01123123123  Contact38  +01123123123         Contact18  +01123123123  Contact28  +01123123123  Contact38  +01123123123
 Contact19  +01123123123  Contact29  +01123123123  Contact39  +01123123123         Contact19  +01123123123  Contact29  +01123123123  Contact39  +01123123123


 Contact10  +01123123123  Contact20  +01123123123  Contact30  +01123123123         Contact10  +01123123123  Contact20  +01123123123  Contact30  +01123123123
 Contact11  +01123123123  Contact21  +01123123123  Contact31  +01123123123         Contact11  +01123123123  Contact21  +01123123123  Contact31  +01123123123
 Contact12  +01123123123  Contact22  +01123123123  Contact32  +01123123123         Contact12  +01123123123  Contact22  +01123123123  Contact32  +01123123123
 Contact13  +01123123123  Contact23  +01123123123  Contact33  +01123123123         Contact13  +01123123123  Contact23  +01123123123  Contact33  +01123123123
 Contact14  +01123123123  Contact24  +01123123123  Contact34  +01123123123         Contact14  +01123123123  Contact24  +01123123123  Contact34  +01123123123
 Contact15  +01123123123  Contact25  +01123123123  Contact35  +01123123123         Contact15  +01123123123  Contact25  +01123123123  Contact35  +01123123123
 Contact16  +01123123123  Contact26  +01123123123  Contact36  +01123123123         Contact16  +01123123123  Contact26  +01123123123  Contact36  +01123123123
 Contact17  +01123123123  Contact27  +01123123123  Contact37  +01123123123         Contact17  +01123123123  Contact27  +01123123123  Contact37  +01123123123
 Contact18  +01123123123  Contact28  +01123123123  Contact38  +01123123123         Contact18  +01123123123  Contact28  +01123123123  Contact38  +01123123123
 Contact19  +01123123123  Contact29  +01123123123  Contact39  +01123123123         Contact19  +01123123123  Contact29  +01123123123  Contact39  +01123123123
Simple Gantt Diagram
Using a text editor with column mode support like vim, UltraEdit, Eclipse, Visual Studio Code, ...
vim is ideal due to its superb macro-support.

Planning     01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 
BºTask1      oo oo oo oo oo oo oo oo oo oo oo oo oo oo oo oo oo oo oo oo oo oo ooº                    Rº│º
             Some note here                                                     │                     Rº│º Super─Cool
GºTask2                  oo oo oo oo oo oo oo oo oo ooº                         │                     Rº│º  Dead─line
                                                                                │                     Rº│º          
  GºTask2.1                       oo oo oo oo ooº                               │                     Rº│º 
                                  Just another note there                       │                     Rº│º
                                                 ┌────── bla bla blah...────────┘                     Rº│º              Bº│º
                                                 v                                                    Rº│º              Bº│º Super─Cool
QºTask3                                          xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xxº     Rº│º              Bº│º Random-line
                                                     \                                 /              Rº│º              Bº│º          
  YºTask3.1                                            oo oo oo oo oo oo oo oo oo oo ooº              Rº│º              Bº│º 
...                                                                                                   Rº│º              Bº│º
Project 01
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo 
ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis 
parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, 
pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec 
pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, 
rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede 
mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi
. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, 
consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra 
quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. 
Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur 
ullamcorper ultricies nisi. Nam eget dui.
Project 02
Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam 
semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, 
blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante 
tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam 
quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed 
fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, 
leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a 
libero. Fusce vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut
, mollis sed, nonummy id, metus. Nullam accumsan lorem in dui. Cras ultricies 
mi eu turpis hendrerit fringilla. Vestibulum ante ipsum primis in faucibus 
orci luctus et ultrices posuere cubilia Curae; In ac dui quis mi consectetuer lacinia.

Nam pretium turpis et arcu. Duis arcu tortor, suscipit eget, imperdiet nec, 
imperdiet iaculis, ipsum. Sed aliquam ultrices mauris. Integer ante arcu, 
accumsan a, consectetuer eget, posuere ut, mauris. Praesent adipiscing. 
Phasellus ullamcorper ipsum rutrum nunc. Nunc nonummy metus. Vestibulum 
volutpat pretium libero. Cras id dui. Aenean ut eros et nisl sagittis 
vestibulum. Nullam nulla eros, ultricies sit amet, nonummy id, imperdiet 
feugiat, pede. Sed lectus. Donec mollis hendrerit risus. Phasellus nec sem in 
justo pellentesque facilisis. Etiam imperdiet imperdiet orci. Nunc nec neque. 
Phasellus leo dolor, tempus non, auctor et, hendrerit quis, nisi.

Curabitur ligula sapien, tincidunt non, euismod vitae, posuere imperdiet, leo
. Maecenas malesuada. Praesent congue erat at massa. Sed cursus turpis vitae 
tortor. Donec posuere vulputate arcu. Phasellus accumsan cursus velit. 
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere 
cubilia Curae; Sed aliquam, nisi quis porttitor congue, elit erat euismod orci
, ac placerat dolor lectus quis orci. Phasellus consectetuer vestibulum elit. 
Aenean tellus metus, bibendum sed, posuere ac, mattis non, nunc. Vestibulum 
fringilla pede sit amet augue. In turpis. Pellentesque posuere. Praesent turpis.
Project 03
Aenean posuere, tortor sed cursus feugiat, nunc augue blandit nunc, eu 
sollicitudin urna dolor sagittis lacus. Donec elit libero, sodales nec, 
volutpat a, suscipit non, turpis. Nullam sagittis. Suspendisse pulvinar, 
augue ac venenatis condimentum, sem libero volutpat nibh, nec pellentesque 
velit pede quis nunc. Vestibulum ante ipsum primis in faucibus orci luctus et 
ultrices posuere cubilia Curae; Fusce id purus. Ut varius tincidunt libero. 
Phasellus dolor. Maecenas vestibulum mollis diam. Pellentesque ut neque. 
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac 
turpis egestas.

In dui magna, posuere eget, vestibulum et, tempor auctor, justo. In ac felis 
quis tortor malesuada pretium. Pellentesque auctor neque nec urna. Proin 
sapien ipsum, porta a, auctor quis, euismod ut, mi. Aenean viverra rhoncus 
pede. Pellentesque habitant morbi tristique senectus et netus et malesuada 
fames ac turpis egestas. Ut non enim eleifend felis pretium feugiat. Vivamus 
quis mi. Phasellus a est. Phasellus magna.

In hac habitasse platea dictumst. Curabitur at lacus ac velit ornare lobortis
. Curabitur a felis in nunc fringilla tristique. Morbi mattis ullamcorper 
velit. Phasellus gravida semper nisi. Nullam vel sem. Pellentesque libero 
tortor, tincidunt et, tincidunt eget, semper nec, quam. Sed hendrerit. Morbi 
ac felis. Nunc egestas, augue at pellentesque laoreet, felis eros vehicula leo
, at malesuada velit leo quis pede. Donec interdum, metus et hendrerit aliquet
, dolor diam sagittis ligula, eget egestas libero turpis vel mi. Nunc nulla. 
Fusce risus nisl, viverra et, tempor et, pretium in, sapien. Donec venenatis 
vulputate lorem.

Morbi nec metus. Phasellus blandit leo ut odio. Maecenas ullamcorper, dui et 
placerat feugiat, eros pede varius nisi, condimentum viverra felis nunc et 
lorem. Sed magna purus, fermentum eu, tincidunt eu, varius ut, felis. In 
auctor lobortis lacus. Quisque libero metus, condimentum nec, tempor a, 
commodo mollis, magna. Vestibulum ullamcorper mauris at ligula. Fusce 
fermentum. Nullam cursus lacinia erat. Praesent blandit laoreet nibh.

Fusce convallis metus id felis luctus adipiscing. Pellentesque egestas, neque 
sit amet convallis pulvinar, justo nulla eleifend augue, ac auctor orci leo 
non est. Quisque id mi. Ut tincidunt tincidunt erat. Etiam feugiat lorem non 
metus. Vestibulum dapibus nunc ac augue. Curabitur vestibulum aliquam leo. 
Praesent egestas neque eu enim. In hac habitasse platea dictumst. Fusce a quam
. Etiam ut purus mattis mauris sodales aliquam. Curabitur nisi. Quisque 
malesuada placerat nisl. Nam ipsum risus, rutrum vitae, vestibulum eu, 
molestie vel, lacus. 
Pending Tasks
 task 1: Lorem ipsum ...
 task 2: Lorem ipsum ...
 task 3: Lorem ipsum ...
 task 4: Lorem ipsum ...
 ...
UUID: 42e5f97a-2a8c-4d76-8d9e-deb4502541d0
    Houston, We have a problem:
|What fails | What to check     | Support Contact
+-----------+-------------------+----------------
|Module 1   | Check Lorem ipsum | Frank Beer +01234567890
|Module 2   | Check Lorem ipsum | Frank Beer +01234567890
|Module 3   | Check Lorem ipsum | Frank Beer +01234567890
|Module 4   | Check Lorem ipsum | Frank Beer +01234567890
|...        |                   |
mathML works too! on Firefox&Opera x = - b ± b 2 - 4 a c 2 a Fourier Transform F ( y ) = 1 2 π - y ( k = 1 n sin 2 x k ( t ) ) f ( t ) dt What about complex Formulae? C m ( t ) = e - i h E m t a ( d V d a ) m 0 E m - E 0 e i h ( E m - E 0 ) t - 1 i h ( E m - E 0 ) Yet Another Complex Formula G ( z ) = exp ( k = 1 S k z k k ) = k = 1 e S k z k k Time to integrate dx a e m x - b e m x = 1 2 m a b log a e m x - b a e - m x + b = 1 m a b tanh - 1 ( a b e m x ) Let's try with Scottish equations · E = ρ ε 0  ;  × E = - B t  ;  c 2 × B = E t + j ε 0  ;  · B = 0
Kanban Board
Testing
story_17
Lorem ipsum dolor sit amet
story_15
Lorem ipsum dolor sit amet
Done
story_33
Lorem ipsum dolor sit amet
story_34
Lorem ipsum dolor sit amet



How to create a new SPB

STEP 1

Let's copy the page-template.
It already contains the needed setup including css/js links
Copy also the css with the styles and the javascript files.

STEP 2

Start to add content inside standard html blocks
┌ <pre>
│ Aenean posuere, tortor sed cursus...
└ </pre>

STEP 3

add the attribute "zoom" to the block like:
  ┌ <pre zoom>
  │   Aenean posuere, tortor sed cursus...
  │   ...
  └ </pre>

STEP 4

- Now tag your content with all the labels you want.
- labels help to group "topics" of related content by cross-cutting concerns.
- Adding Labels will simplify the search of content and also will allow to dynamically see mind-maps of related content.
- Click on the "target" icon (top-left corner) now to see how it works in this demo
  ┌<pre zoom labels="topic1,topic2,..." >
  │  Aenean posuere, tortor sed cursus...
  └</pre>

STEP 5: Adding titles

- OK! We are nearly done.
- Text now looks small enough to put hundred of pages in a single screen.
- By double-clicking content on a cell its content zooms-in.
(Much faster than having to scroll up/down or opening 50 tabs)
- There is a problem, there is now way to see what's inside each cell without zooming-in first.
- Let's add a visible hint to fix it. Inside your zoomable content add a hint using the xsmall (or title) attribute:
  ┌  <pre zoom>
  │  <span xsmall>visible hint</span>
  │    Aenean posuere, tortor sed cursus...
  │     ...
  └  </pre>

STEP 6: Place content in shelfs

Most probably you want to order your notes grouped in horizontal or vertical shelfs.
ALl that needed to create a shelf for your "zoom"able content is to place it inside
<div group>...</div> (horizontal shelf)
or
<div groupv>...</div> (vertical shelf)

Your web-browser will take care of the rest!!

Learn more...

· Visit ˃˃ this page ˂˂ for further information about Single Page Books design.

· Visit Oficina24x7.com for some real SPBs I've been writing while working on real IT projects.