Category: beginner

those books take you as a beginner

Book–Console2SAAS–technical details and CD

One of the important thing about creating a book is how to have fast feedback you see it after you write some texts. I decided to go like this:

  1. Each chapter will be in his own folder  ( https://github.com/ignatandrei/console_to_saas/tree/master/Chapter01 , https://github.com/ignatandrei/console_to_saas/tree/master/Chapter02 , and so on) .
  2. The content will be in the readme.md in each chapter folder ( to have a fast feedback about how it looks)
  3. The code examples will be in the same folder as the chapters
  4. The whole book will be available for download as PDF ( also other formats)
  5. The whole book will be easy seen at Github pages ( https://ignatandrei.github.io/console_to_saas/ )

How I made this available ? As usual, GitHub actions to the rescue – and some easy javascript. First, the javascript

“use strict”;

(async () => {

console.log(`start print`);

const { badgen } = require(“badgen”);

const sloc = require(“node-sloc”);

const fs = require(“fs”);

const chapters = [

“Chapter01”,

“Chapter02”,

“Chapter03”,

“Chapter04”,

“Chapter05”,

“Chapter06”,

“Chapter07”,

];

for (var i = 0; i < chapters.length; i++) {

var item = chapters[i];

var res= await sloc({ path: `../${item}/` });

  console.log(res);

const svgString = badgen({

      label: `${item}`, // <Text>

      labelColor: “ADF”, // <Color RGB> or <Color Name> (default: ‘555’)

      status: `files:${res.sloc.files};lines:${res.sloc.loc}`, // <Text>, required

      color: “blue”, // <Color RGB> or <Color Name> (default: ‘blue’)

      style: “flat”, // ‘flat’ or ‘classic’ (default: ‘classic’)

//icon: ‘data:image/svg+xml;base64,…’, // Use icon (default: undefined)

//iconWidth: 13,    // Set this if icon is not square (default: 13)

      scale: 1, // Set badge scale (default: 1)

    });

    fs.writeFileSync(`../${item}.svg`, svgString);

}

var markdownpdf = require(“markdown-pdf”);

var mdDocs = [

“../README.md”,

“../1-break.md”,

“../Chapter01/readme.md”,

“../1-break.md”,

“../Chapter02/readme.md”,

“../1-break.md”,

“../Chapter03/readme.md”,

“../1-break.md”,

“../Chapter04/readme.md”,

“../1-break.md”,

“../Chapter05/readme.md”,

“../1-break.md”,

“../Chapter06/readme.md”,

“../1-break.md”,

“../Chapter07/readme.md”,

“../1-break.md”,

“../conclusions.md”

  ],

  bookPath = “../book-raw.pdf”;

var options = {

  remarkable: {

      html: true,

      breaks: true

  },

  runningsPath: ‘running.js’

}

function generateBook() {

return new Promise(function(resolve, reject) {

    markdownpdf(options)

      .concat.from(mdDocs)

      .to(bookPath, function () {

        console.log(“Created”, bookPath);

        resolve(bookPath);

      });

  });

}

var bookPath = await generateBook();

const PDFMerger = require(‘pdf-merger-js’);

var merger = new PDFMerger();

merger.add(“../cover.pdf”);

merger.add(“../book-raw.pdf”);

await merger.save(“../book.pdf”);

})();

As you see , I am using those JS packages

“badgen”: “3.0.1”,

“markdown-pdf”: “10.0.0”,

“pdf-merger-js”: “3.0.5”,

“node-sloc”: “0.1.12”

Forgetting number of lines and badges, I use badgen and node-sloc . For generating pdf, I use markdown-pdf and pdf-merger ( to put images)

For generating ODT, I use githb actions directly :

name: ‘CD for generate book and docs folder’

env:

ChaptersMD : Chapter01/readme.md Chapter02/readme.md  Chapter03/readme.md Chapter04/readme.md  Chapter05/readme.md Chapter06/readme.md  Chapter07/readme.md

on:

push:

paths:

    – ‘**.md’

    – ‘**.yml’

    – ‘**.txt’

    – ‘**.json’

    – ‘**.js’

jobs:

build:

runs-on: ubuntu-latest

steps:

    – uses: actions/checkout@v2

    – name: generate pdf

run: |

        chmod +x ./print/getBook.bat

        cd print       

        ./getBook.bat

        ls -lh

        cp ./book.pdf ../docs/ConsoleToSaas.pdf

        cp ./Chapter01.svg ../docs/Chapter01.svg

        cp ./Chapter02.svg ../docs/Chapter02.svg

        cp ./Chapter03.svg ../docs/Chapter03.svg

        cp ./Chapter04.svg ../docs/Chapter04.svg

        cp ./Chapter05.svg ../docs/Chapter05.svg

        cp ./Chapter06.svg ../docs/Chapter06.svg

        cp ./Chapter07.svg ../docs/Chapter07.svg

        # cp ./Chapter01.svg ../Chapter01/Chapter01.svg

        # cp ./Chapter02.svg ../Chapter02/Chapter02.svg

        # cp ./Chapter03.svg ../Chapter03/Chapter03.svg

        # cp ./Chapter04.svg ../Chapter04/Chapter04.svg

        # cp ./Chapter05.svg ../Chapter05/Chapter05.svg

    – name: upload pdf to artifacts

uses: actions/upload-artifact@v1

with:

name: ConsoleToSaas.pdf

path: ./print/book.pdf

    – name: Commit files

run: |

        git config –local user.email “action@github.com”

        git config –local user.name “GitHub Action”

        git commit -m “generate pdf” -a –allow-empty

    – name: Push changes

uses: ad-m/github-push-action@master

with:

github_token: ${{ secrets.GITHUB_TOKEN }}

convert_via_pandoc:

runs-on: ubuntu-18.04

needs: build

steps:

      – uses: actions/checkout@v2

      – run: |

          echo chapters to generate $ChaptersMD

          git pull

          mkdir output

      – name: generate odt

uses: docker://pandoc/latex:2.9

with: # needs a README in your repo root!

args: “cover.md README.md Chapter01/readme.md Chapter02/readme.md  Chapter03/readme.md Chapter04/readme.md Chapter05/readme.md Chapter06/readme.md Chapter07/readme.md conclusions.md –standalone -f gfm -t odt  –toc -o output/output.odt –metadata title=CLI/Console2SAAS”

      – name: generate epub

uses: docker://pandoc/latex:2.9

with: # needs a README in your repo root!

args: “cover.md README.md Chapter01/readme.md Chapter02/readme.md  Chapter03/readme.md Chapter04/readme.md Chapter05/readme.md Chapter06/readme.md Chapter07/readme.md conclusions.md –standalone -f gfm -t epub  –toc -o output/output.epub –metadata title=CLI/Console2SAAS”

      – name: generate docx

uses: docker://pandoc/latex:2.9

with: # needs a README in your repo root!

args: “cover.md README.md Chapter01/readme.md Chapter02/readme.md  Chapter03/readme.md Chapter04/readme.md Chapter05/readme.md Chapter06/readme.md  Chapter07/readme.md conclusions.md –standalone -f gfm -t docx  –toc -o output/output.docx –metadata title=CLI/Console2SAAS”

      – name: generate html

uses: docker://pandoc/latex:2.9

with: # needs a README in your repo root!

#args: “–standalone –output=output/README.html README.md”

args: “cover.md README.md Chapter01/readme.md Chapter02/readme.md  Chapter03/readme.md Chapter04/readme.md Chapter05/readme.md Chapter06/readme.md  Chapter07/readme.md  conclusions.md –standalone -f gfm -t html  –include-in-header=header.txt –toc -o output/output.html –metadata title=CLI/Console2SAAS”

      – uses: actions/upload-artifact@master

with:

name: output

path: output

      – run: |

          cp ./output/output.html ./docs/index.html

          cp ./output/output.epub ./docs/ConsoleToSaas.epub  

          cp ./output/output.docx ./docs/ConsoleToSaas.docx

          cp ./output/output.odt ./docs/ConsoleToSaas.odt

          rm -rf ./output

      – name: Commit files

run: |

          git config –local user.email “action@github.com”

          git config –local user.name “GitHub Action”

          git commit -m “generate html” -a –allow-empty

      – name: Push changes

uses: ad-m/github-push-action@master

with:

github_token: ${{ secrets.GITHUB_TOKEN }}

zipSources:

runs-on: ubuntu-latest

needs: [build,convert_via_pandoc]

steps:

    – uses: actions/checkout@v2

    – name: pulling latest

run: |

        echo chapters to generate $ChaptersMD

        git pull     

        rm ./docs/sources/*.zip

# – uses: montudor/action-zip@v0.1.0

#   with:

#     args: zip -qq -r ./Chapter01.zip ./docs/sources/Chapter01.zip

    – name: Zip Release Chapter01

uses: TheDoctor0/zip-release@v0.2.1

with:       

filename: ./docs/sources/Chapter01.zip

path: ./Chapter01/FastExtractDocumentMetadata

    – name: Zip Release Chapter02

uses: TheDoctor0/zip-release@v0.2.1

with:       

filename: ./docs/sources/Chapter02.zip

path: ./Chapter02/FastExtractDocumentMetadata

    – name: Zip Release Chapter03

uses: TheDoctor0/zip-release@v0.2.1

with:       

filename: ./docs/sources/Chapter03.zip

path: ./Chapter03/FastExtractDocumentMetadata

    – name: Zip Release Chapter04

uses: TheDoctor0/zip-release@v0.2.1

with:       

filename: ./docs/sources/Chapter04.zip

path: ./Chapter04/FastExtractDocumentMetadata

    – name: Zip Release Chapter05

uses: TheDoctor0/zip-release@v0.2.1

with:       

filename: ./docs/sources/Chapter05.zip

path: ./Chapter05/FastExtractDocumentMetadata

    – name: Zip Release Chapter06

uses: TheDoctor0/zip-release@v0.2.1

with:       

filename: ./docs/sources/Chapter06.zip

path: ./Chapter06/FastExtractDocumentMetadata

    – name: Zip Release Chapter07

uses: TheDoctor0/zip-release@v0.2.1

with:       

filename: ./docs/sources/Chapter07.zip

path: ./Chapter07/FastExtractDocumentMetadata

# – name: Zip Release Chapter05

#   uses: TheDoctor0/zip-release@v0.2.1

#   with:       

#     filename: ./docs/sources/Chapter05.zip       

#     path: ./Chapter05/FastExtractDocumentMetadata

    – name: Commit files

run: |

        git config –local user.email “action@github.com”

        git config –local user.name “GitHub Action”

        git add –all

        git commit -m “generate zip files” -a –allow-empty

    – name: Push changes

uses: ad-m/github-push-action@master

with:

github_token: ${{ secrets.GITHUB_TOKEN }}

#   runs-on: windows-latest  

#   # runs:

#   #   using: ‘docker’

#   #   image: ‘print/exportPDF.txt’

#   steps:

#   – uses: actions/checkout@v2

#   – name: print pdf

#     run: |

#       cd print

#       ./getBook.bat

I know that are really lot of code, but the scope was done: genreating pdf  , odt, word and epub.

Blog posts about this topic

Console2SAAS

A mini-e-book about how to transform a Console to a SAAS application
Download the book for free from https://ignatandrei.github.io/console_to_saas/consoleToSaas.pdf.html
Buy the book from Amazon , if you want to support me : https://www.amazon.com/dp/B08N56SD4D
NoBlog 
1Introduction
2Technical Details
3Console2SAAS-Chapter1
4Console2SAAS-Chapter2
5Console2SAAS-Chapter3
6Console2SAAS-Chapter4
7Console2SAAS-Chapter5
8Console2SAAS-Chapter6
9Console2SAAS-Chapter7
10Console2SAAS-PM

Book – Console 2 SAAS

I have a passion to read – also a passion to teach . And to reach others, what is best than a book ?

The idea of the book is how to pass from a Console application to a SAAS application –  with clear examples in .NET .

I have written the book with the help of Daniel Tila.

I will quote from the introduction of the book , because it is comprehensive:

<<

This book will guide you step-by-step to build a scalable product from a proof of concept to production-ready SAAS. Any development done will start from a business need: this will make things clear for the team what is the impact of the delivery.

You will see different architecture patterns for separation of concerns and why some of them fit well and some of them not. Everything will happen incrementally and the product development history will be easy to be seen by analyzing commits.

Every chapter is a progressive journey with some specific challenges that will be overcome by specific programming best practices.

This can be considered as a .NET tutorial, that demonstrates the versatility of the platform to create different types of applications (CLI, Desktop & Website).

>>

All examples in the book are in .NET Core

The book is free to download and read . What you can do:

  1. Download the book from https://ignatandrei.github.io/console_to_saas/consoleToSaas.pdf.html 
  2. Contribute to the book by modifying and submit a PR ( see https://github.com/ignatandrei/console_to_saas). We have already a contributor, Daniel Costea, http://apexcode.ro/about/
  3. Buy the book from Amazon , if you want to support me : https://www.amazon.com/dp/B08N56SD4D 

Blog posts about this topic

Console2SAAS

A mini-e-book about how to transform a Console to a SAAS application
Download the book for free from https://ignatandrei.github.io/console_to_saas/consoleToSaas.pdf.html
Buy the book from Amazon , if you want to support me : https://www.amazon.com/dp/B08N56SD4D
NoBlog 
1Introduction
2Technical Details
3Console2SAAS-Chapter1
4Console2SAAS-Chapter2
5Console2SAAS-Chapter3
6Console2SAAS-Chapter4
7Console2SAAS-Chapter5
8Console2SAAS-Chapter6
9Console2SAAS-Chapter7
10Console2SAAS-PM

Javascript patterns

In our days Javascript appears to conquer all . So I have decided to read a book about patterns in Javascript. And I definitely recommend this book: it is good written and full of practical details. It is a must read for anyone to unleash their javascript programming potential.

jQuery Learning

learning jquery

Taking into account that Microsoft Visual Studio 2010 integrates jQuery, you might want to read about it. Of course, the first link is just http://jquery.com/.

Then recommend “Learning jQuery – Better Interaction Design and Web Development with Simple JavaScript Techniques”

A quick to learn from it about jQuery, about $ (document). Ready, Ajax with jQuery and about (developing) plug-ins. My only problem is that plug-ins mentioned are just few …

Worth reading!

Learning jQuery: Better Interaction Design and Web Development with Simple JavaScript Techniques

Andrei Ignat weekly software news(mostly .NET)

* indicates required

Please select all the ways you would like to hear from me:

You can unsubscribe at any time by clicking the link in the footer of our emails. For information about our privacy practices, please visit our website.

We use Mailchimp as our marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp's privacy practices here.