Intro#
This section is for topics that are not closely related to any other topic and do not have enough content to justify creating a new one.
Agile#
The Agile is to approach for software development that relies on the following principles: you have to give more value to
Individuals and interactions over processes and tools.
Working software over comprehensive documentation
Communicating with customers over negotiating contracts.
Responding to change over following a plan.
There two main frameworks that follows Agile principle: Scrum and Kanban.
Scrum#
In Scrum, work involves iterative improvements to the software. Each iteration takes from one to four weeks and is called a sprint. There are:
Events: periodical meetings or other organisational ceremonies that are usually tied to a particular phase of the software development.
Artifacts: the things to be done. Separated into few groups typically: backlog, to do, in process and done.
Roles:
Product owner: person responsible for communication with the customer.
Scrum master: person that checks that scrum rules are followed.
Scrum team: people who complete the tasks.
Kanban#
Kanban just takes from scrum the groups of tasks: to do, doing and done.
Markdown#
Markdown is a special text formatting language. The overview:
Headings:
# H1,## H2,### H3Emphasis:
*italic*,**bold**,~~strikethrough~~Lists:
Unordered:
- itemor* itemOrdered:
1. item
Links:
[text](https://example.com)Images:
Code:
Inline:
`code`Block:
```python print("hello") ```
Blockquotes:
> quoteTables:
| A | B | |:-|:-:| | 1 | 2 |
Horizontal line:
---or***Inline HTML:
<b>bold</b>
It’s designed to be readable as plain text and easily converted to HTML.
Tables#
Tables in markdown can be specified with the following syntax:
| Column name 1 | Column name 2 | Column name 3 |
|:--------------|--------------:|:-------------:|
| value 11 | value 12 | value 13 |
| value 21 | vlaue 22 | value 23 |
The colon (:) in the line separating the header from the content defines content’s alignment.
The example table will be rendered as follows:
Column name 1 |
Column name 2 |
Column name 3 |
|---|---|---|
value 11 |
value 12 |
value 13 |
value 21 |
vlaue 22 |
value 23 |
Links#
Any text that begins with
https://will be interpreted as a link and will be clickable.To create a hyperlink use the syntax
[represented text](<addres>).It’s not alway convenient to put the address right after text. You can define the hyperlink as
[my link][1]and specify the address later in the text as[1]: <address>. This approach is called refence-style link.
Consdier the following code:
Just address https://google.com
[Inline hyperlink](https://google.com)
[Reference-stype link][1]
[1]: https://google.com
This code would be rendered as:
Just address https://google.com
Networks#
This section considers the principles of networking.
There are a few important protocols that describe the rules of communication within the network.
There is a set of rules for transfering data in a network, typically called protocols. The following typical protocols:
HTTP (HyberText Transfer Protocol): The protocol used by applications to transfer data. Applications are responsible for preparing messages in the corresponding format and for interpreting the messages they receive.
TCP (Transmission Control Protocol): Transport layer.
IP (Internet Protocol): Network layer.
Network-specific link interface: Data link layer.
Physical network hardware: Physical layer.
HTTP#
The HyperText Transfer Protocol is a standard for data transmission on the web.
MIME stands for Multipurpose Internet Mail Expressions. They are the system of labels used to describe a multimedia content. Check the Common media types page. According to the HTTP protocol, they are served in the
Content-type:header of the message.URI stands for uniform reource indentifier. There are two types of URI:
URL: uniform resource locator. Describe the specific location of a resource on a particular server.
URN: uniform resource name. The name of the specific resouce. Have a format
urn:<Namespace>.<Entity Type>.<Id>.
Methods. The method tells the server what action to perform:
GET: Send named resource from the server to client.
PUT: Store data from client into a named server resource.
DELETE: Delete the named resource from a server.
POST: Send client data into a server gateway application.
HEAD: Send just the HTTP headers from the response for the named resource.
An HTTP message is a regular text message consisting of three blocks:
Start Line: The first line of the message is the start line, indicating what to do for a request or what happened for a response.
Header fields: Set of key/value pairs separated by a colon (:). Headers end with a blank line indicating tha body begins.
Body: Optional section containing any kind of data.
HTTP message#
HTTP message consists of 3 blocks the:
Start Line: The first line of the message is the start line, indicating what to do for a request or what happened for a response.
Header fields: Set of key/value pairs separated by a colon (:). Headers end with a blank line indicating tha body begins.
Body: Optional section containing any kind of data.
The following cell starts the process of listening for the socket related to port 9000 and redirecting all the information to the /tmp/val file.
nc -l 127.0.0.1 9000 > /tmp/val &
[1] 55660
The following cell sends an HTTP request localhost:9000 using curl. Note that a custom header and data are specified.
curl --max-time 1 -s -H "my:header" -d "some data" localhost:9000 | true
[1]+ Done nc -l 127.0.0.1 9000 > /tmp/val
Now we can observe how the http message looks in the physical level.
cat /tmp/val
POST / HTTP/1.1
Host: localhost:9000
User-Agent: curl/8.5.0
Accept: */*
my:header
Content-Length: 9
Content-Type: application/x-www-form-urlencoded
some data
As specified in curl, among the headers there is my:header and some data, which are separated from the headers by a line.
Regex#
A regular expression, or ‘regex’ for short, is a popular language used to specify patterns in text. Different tools use specific modifications of the regex syntax. The most basic and common features are considered here.
Consider the application of the Linux grep utility. With the -P flag, you can instruct grep to use a regular expression.
For example, consider the case in which you need to retrieve all lines containing the symbols ! or ?. Simply specifying them to grep would not work because it would search exactly ?! symbols together:
cat << EOF | grep "?!"
a!bcdef
test?
moprst
both?! are here
EOF
true
both?! are here
To search for lines containing at least one of the specifyed symbols, you must enter the corresponding regular expression:
cat << EOF | grep -P "[\?\!]"
a!bcdef
test?
moprst
both?! are here
EOF
true
a!bcdef
test?
both?! are here
JSON schema#
JSON schema is a declarative protocol to specify the format of the JSON documents.
For more check:
The Official website.
For implemetations of JSON schema visit tools:
The python implementation is jsonschema package.
The python package with CLI check-jsonschema.
The JSON Schema page.
The following cell specifies a schema in JSON format with the attributes “price” and “name”. The “price” attribute must be an integer value, and “name” is declared to be a string.
cat << EOF > /tmp/schema.json
{
"type" : "object",
"properties" : {
"price" : {"type" : "number"},
"name" : {"type" : "string"}
}
}
EOF
The check-jsonschema verifies that the files passed correspond to the schema specified by the --schemafile argument.
cat << EOF > /tmp/object.json
{"name": "Eggs", "price": 43.99}
EOF
check-jsonschema --schemafile /tmp/schema.json /tmp/object.json
ok -- validation done
Validation is successful. However, the attempt to pass a number as a string to the price in the following cell fails.
cat << EOF > /tmp/object.json
{"name" : "Eggs", "price" : "34.99"}
EOF
check-jsonschema --schemafile /tmp/schema.json /tmp/object.json
true
Schema validation errors were encountered.
/tmp/object.json::$.price: '34.99' is not of type 'number'
Jupyterlab#
JupyterLab is an EDA-like tool that focuses on Jupyter notebooks.
Usefull extensions are:
jupyterlab-vim vim key buindings implementation.
jupyterlab-lsp language server protocol implementation.