ASDF install usages and overview
ASDF (Another System Definition Facility) is a version manager for multiple programming languages, including Ruby, Node.js, Python, and others. It allows developers to manage multiple versions of these languages and their associated dependencies on a single machine, enabling them to switch between different versions of the same language for different projects.
ASDF is useful in configuring the development environment of a project, as it ensures that the correct versions of dependencies are installed and used. This can help to prevent compatibility issues that might arise when different versions of dependencies are used across different projects.
In addition to managing language versions, ASDF can also be used to manage package dependencies. This means that developers can use ASDF to replace many install scripts, as it can be used to install and manage packages for different languages.
Overall, ASDF is a useful tool for managing the development environment of a project, and it can help to simplify the process of managing dependencies and ensuring compatibility across different projects.
quickstart guide on how to use ASDF:
-
Install ASDF: The first step is to install ASDF on your system. You can find installation instructions for different operating systems on the official ASDF website.
-
Install plugins: Once ASDF is installed, you need to install plugins for the languages you want to manage. For example, to manage Node.js versions with ASDF, you need to install the nodejs plugin by running the command asdf plugin-add nodejs.
-
Install versions: After installing the plugin, you can use ASDF to install different versions of the language. For example, to install Node.js version 14.17.0, you can run the command asdf install nodejs 14.17.0.
-
Set global version: You can set a global version of the language by running the command asdf global nodejs 14.17.0. This will make the specified version the default for your system.
-
Set local version: You can also set a local version of the language for a specific project. Navigate to the root directory of the project and run the command asdf local nodejs 14.17.0. This will make the specified version the default for the project.
-
Install packages: You can use ASDF to install packages for the language you're managing. For example, to install the express package for Node.js, you can run the command npm install express. ASDF will ensure that the package is installed in the correct version of Node.js.
That's it! ASDF makes it easy to manage multiple versions of different languages and their dependencies, and it can help to prevent compatibility issues when working on different projects.
Suricata:
- Network intrusion detection system
- Scans network traffic for suspicious events
- Logs or drops invalid packets
Elasticsearch:
- Search engine based on the Lucene library
- Stores, indexes, correlates, and searches security events
- Used for log analysis and monitoring
Kibana:
- Data visualization and exploration tool
- Displays and navigates security event logs stored in Elasticsearch
Filebeat:
- Log data shipper for forwarding logs to Elasticsearch
- Parses Suricata's eve.json log file and sends each event to Elasticsearch for processing
Logstash:
- Data processing pipeline for ingesting, processing, and sending logs
- Collects, parses, and enriches logs before sending them to Elasticsearch
Pinecone:
- Vector database for similarity search and recommendation systems
- Used for fast similarity lookups and nearest neighbor search
- Supports high-dimensional data and real-time indexing
Haproxy:
- Load balancing and proxy server
- Distributes incoming traffic across multiple servers
- Used for scaling web applications and improving reliability
Winston:
- Logging library for Node.js
- Supports various log levels and transports (console, file, database, etc.)
- Used for logging application events and errors
PM4JS:
- Process mining toolset for analyzing event logs
- Extracts process models from event data
- Supports various process discovery and conformance checking algorithms
AdoptOpenJDK:
- Open-source implementation of the Java Development Kit (JDK)
- Used for running Java-based applications, including ProM
ProM:
- Process mining framework for analyzing event data
- Includes various plugins and algorithms for process discovery, conformance checking, and enhancement
- Can be run using a graphical user interface or command-line interface
Sure, here's a sorted list of the technologies you mentioned and their dependencies:
Infrastructure Layer
AdoptOpenJDK (dependency for ProM)
Networking Layer
Haproxy
Security Layer
Suricata
Logging Layer
Winston
Filebeat
Logstash
Data Storage Layer
Elasticsearch
Data Visualization Layer
Kibana
Process Mining Layer
PM4JS
ProM (dependency for PM4JS)
Dependencies:
ProM depends on AdoptOpenJDK to run.
Filebeat and Logstash depend on Elasticsearch to store and index the logs.
Kibana depends on Elasticsearch to display and navigate the logs.
PM4JS depends on ProM to run certain plugins and algorithms.
[Suricata] -----[eve.json]----> [Filebeat] ---[Elasticsearch] --- [Kibana]
^ |
| |
| v
[Haproxy] ------[nodejs]---> [Winston] [Elasticsearch] --- [Kibana]
| |
| v
+----[AdoptOpenJDK] -- [ProM] -- [PM4JS]
Sure, here is a list of each technology in the stack, along with its primary language and dependencies, organized by layer starting from the Linux kernel:
Kernel Layer:
Linux kernel: Written in C, depends on hardware drivers and system libraries.
System Layer:
AdoptOpenJDK: Written in Java, depends on system libraries.
Suricata: Written in C, depends on libpcap and other system libraries.
Filebeat: Written in Go, depends on system libraries.
Logstash: Written in Ruby, depends on system libraries and plugins.
Elasticsearch: Written in Java, depends on Lucene and system libraries.
Kibana: Written in JavaScript (Node.js), depends on system libraries.
Application Layer:
Haproxy: Written in C, depends on system libraries.
Winston: Written in JavaScript (Node.js), depends on system libraries and transports.
PM4JS: Written in Python and JavaScript (Node.js), depends on various libraries and tools.
Note that many of these technologies have additional dependencies beyond what is listed here
in supervized learning there is a response variable or dependent variables and we went to predict the response in terms of these predictor or indapendant variables - clasification and regression
un unsupervized learning there are no response or dependant variables. -ie clustering/ patern discovery
entropy(dt, S) {
}
out of sample S
a are in s.size
for uniqueActivity(cat)
e = -S.sum(S.)
entropy(a,b) =>
if(a<b) swap(a, b) ;
e = a/b ;