Skip to content

Commit 1c6e274

Browse files
committed
Add acronyms and definitions
1 parent 02983ae commit 1c6e274

File tree

14 files changed

+190
-84
lines changed

14 files changed

+190
-84
lines changed

content/data-structures.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
+++
2+
title = "Glossary"
3+
slug = "glossary"
4+
template = "page.html"
5+
draft = true
6+
[taxonomies]
7+
tags = []
8+
+++
9+
10+
## Data structures
11+
12+
- **GIS Data structures**
13+
- Raster
14+
- made up of pixels
15+
- represented by a matrix
16+
- simple data structure
17+
- large storage requirements (all satellite imagery)
18+
19+
- Vector
20+
- Consists of individual points stored as (x, y) coordinates ←→ (x=longitude, y=latitude)
21+
- Points, lines, polygons
22+
- Usually small storage requirements
23+
24+
25+
- **O notations**
26+
Alternative Big O notations:
27+
- O(1) = O(yeah)
28+
- O(log n) = O(nice)
29+
- O(nlogn) = O(k-ish)
30+
- O(n) = O(ok)
31+
- O(n²) = O(my)
32+
- O(2ⁿ) = O(no)
33+
- O(n^n) = O(fuck)
34+
- O(n!) = O(mg!)
35+
36+
Array
37+
- Access: O(1)
38+
- search : O(n)
39+
- Insert : O(n)
40+
- Delete : O(n)
41+
42+
LinkedList
43+
- Access: O(n)
44+
- search : O(n)
45+
- Insert : O(n)
46+
- Delete : O(n)
47+
48+
## Blockchain
49+
- A distributed (same copy of the data is kept in multiple machines) data storage consisting of containers (blocks) that are connected
50+
- The order of the blocks matters. Every block read like a folder on your system (not technically a folder but easier to understand) that contains some data. Each folder knows about the folder before it building a chain
51+
- Blockchain is not limited to just transactions. It's a "Data Storage". A single block can hold any data you want (text, number, program that can be executed). In bitcoin, it's a list of transactions.
52+
- Each block is **hashed** (receives a hash value - some long text) that's generated from all the parts that make up the block using some hasing algorithm. You'll always get the same hash value for the same input, then that hash value is stored in the next block. So, whenever you change the previous block, it does not match the recalculated hash for that updated data.
53+
54+
<img src="https://snipboard.io/1rv0Bs.jpg" width="450">
55+
56+
57+
- Use cases:
58+
- Cryptocurrency - most prominent use case of the blockchain. If the data you store in a block is a list of transactions (who is sending how much to whom. Ex: the coins transferred in the trasansactions), it forms your cryptocurrency. These transactions cannot be edited without the next block recognizing it. All the cryptocurrencies (Bitcoin, Ethereum, rebel, etc) use such blockchains distributed across multiple machines called **nodes**.
59+
- Coins are transferred with Transactions
60+
- Changing them into other currencies is not possible inside the Blockchain. The value of a coin is determined by the value the participants of the blockchain network assign to it (i.e what you're willing to pay in "real" currencies)
61+
- Coins are created with **Mining** (as a reward for the effort) - Mining is how new blocks are added. You'll have open transactions, where you want to send something to someone, for that transaction to be confirmed, it needs to be added to a new block, which is added at the end of the blockchain. People who are adding this are doing the so called "Mining" - actually takes a bit longer because they need to solve complex algorithm, and they get new coins out of the system - as a reward.
62+
- A **wallet** is just a node that enables you to send/receive coins. It's a piece of data which allows you to identify yourself. You can send coins to another wallet which makes a **transaction** - when such new transaction is created, it is also broadcast into the nodes, which is distributed across the network and they will verify the transaction in the network to ensure you have enough funds, you are who you claim to be. Then, one node will eventually bundle transactions and sotre them in newly generated (mined) block and broacast new block to the network.
63+
64+
<img src="https://snipboard.io/zp6MfP.jpg" width="450">

content/database-indexing.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
+++
2+
title = "Glossary"
3+
slug = "glossary"
4+
template = "page.html"
5+
draft = true
6+
[taxonomies]
7+
tags = []
8+
+++
9+
10+
11+
- **database index** - An index is an *ordered* representation of the indexed data. Ex: A phone-book is like having an index on `LastName`. Therefore, it is quicker to find an entry when a person's `lastName` is known, but when only the `firstName` is known, finding that entry is not that quick because it does not have an ordered index of firstName and you need to scan the whole phonebook until you find the firstName.
12+
- When we're querying database, we're basically searching our data for a subset of data, and searching an ordered input is lot more efficient than searching an unordered input (think binary search - very fast as soon your input is sorted)
13+
- A db index is actually a B-TREE (Balanced Tree - not Binary) - all node has a left subtree that is smaller than the right subtree and the leaf nodes are at the same depth (hence balanced) - therefore guranteed that it takes same number of steps to find every node. Most of the time in searching is spent in leaf nodes. So, there's also doubly linked list between leaf nodes. The index only contains the values of the columns you actually put the index on.
14+
- TRADE-OFFS: Reading is **fast**, writing is slow - because every INSERT, UPDATE and DELETE you perform, you also need to insert, update and delete the index needs to be rebalanced - if you have a lot of indexes, your writes are going to be slow.
15+
- Rule of thumb - have as many indexes as necessary, few as possible
16+
<img src="https://snipboard.io/j9gN8w.jpg" width="400">

content/glossary.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
+++
2+
title = "Glossary"
3+
slug = "glossary"
4+
template = "glossary.html"
5+
draft = false
6+
[taxonomies]
7+
tags = []
8+
+++
9+
10+
### Data
11+
---
12+
13+
- **BLOB** - Binary Large OBject - collection of binary data stored as a single entity. Usually used to store images, audio, etc. Also used by some databases like PostgreSQL, MongoDB to store persitent values.
14+
15+
- **SRID** - Spatial Reference IDentifier - It defines what coordinate system you want to use. There are many SRIDs used for different geographies around the world. To perform geospatial functions on the same data, it has to be on the same SRID. A common one is SRID 4326 (maps to WGS84). You can store SRID data in different formats: WKT (commonly used), WKB, HEX
16+
- WKT (Well Known Text) is a text markup language used by Open Geo Consortium
17+
18+
- **TOML** - Tom's Obvious Minimal Language - Tom Preston Weiner's simple format for specifying software configuration. Examples: Cargo.toml (cargo -Rust), pyproject.toml (poetry - Python)
19+
20+
### Date/Time
21+
---
22+
23+
- **DST** - Daylight Savings Time - happens when a country/region decides to wind their clocks forward one hour to make most of the available sunlight.
24+
25+
- **UTC** - Universal Time Coordinated - coordinated time scale maintained universally. Also known as "Z time" or "Zulu Time". It refers to time on the zero or Greenwich meridian, which is not adjusted to reflect changes either to or from Daylight Saving Time. So, the switch to daylight saving time does not affect UTC. Prior to 1972, this time was called Greenwich Mean Time (GMT). Always use UTC to store, pass around datetime objects.
26+
27+
### Web
28+
---
29+
30+
- **SSL** - Secure Sockets Layer - Protocol for web browsers and servers that allows for the authentication, encryption and decryption of data sent over the Internet.
31+
32+
- **TLS** - Transport Layer Security - successor protocol to SSL. TLS is an improved version of SSL. It works much the same way as the SSL, using encryption to protect the transfer to data and information. SSL certficates work with both SSL and TLS protocols.
33+
34+
- **sessions** - non-permanent data to represent a user's interaction with a web application
35+
36+
- **graphQL** - a language-independent query language - meaning it can be used with any language and any database system. It exposes a single endpoint for *Queries* (does job of REST API's GET) and *Mutations* (does job of REST API's POST, PUT, PATCH, DELETE)
37+
38+
- **SSL certificate** - Server certificate that enables authentication of the server to the user, as well as enabling encryption of data transferred between the server and the user. SSL certificates are issued by Certificate Authorities like DigiCert, Letsencrypt.
39+
40+
41+
### System
42+
---
43+
44+
- **CPU Core** - Modern CPUs can be made of multiple cores to facilitate multi-tasking. Each Core is independent. Each core has a frequency specicification (in GHz) which represents how fast it rotates. Higher is better - meaning more computations can be performed in less amount of time.
45+
- In Unix-like systems, CLI command: `top` can be used to monitor CPU usage. Each core amounts to 100%. If you have 4 cores, all cores are used when CPU usage shows 400%.
46+
47+
- **compiler** - converts source code to executable
48+
49+
50+
### Python
51+
---
52+
53+
- **distutils** - standard system for packaging and distributing Python packages
54+
- **setuptools** (Python package) - built on Python's distutils to provide easier building, distribution and installation of libraries and applications
55+
- **distribution** - File representing an installable library or application. Distributions are usually archives with suffix of .whl, .tar.gz or .zip. Distributions are the target of packaging-related commands such as pip install.
56+
- **entry point** - a setuptools indirection, defined within Setuptools distribution (usually in setup.py or setup.cfg). it's usually a name that refers to a function somewhere in a package which is held by the distribution.
57+
58+
59+
60+
### Miscellaneous
61+
---
62+
63+
- **Augmented Reality** - having virtual things in real space. You can do AR stuff with Unity (Physics/game-dev), Unreal engine
64+
65+
- **SLAM** - Simultaneous Localization And Mapping (used in Reinforcement Learning/Robotics/AR)

content/glossary/_index.md

Lines changed: 0 additions & 4 deletions
This file was deleted.

content/glossary/acronyms.md

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)